diff --git a/build.properties.d/00_default.properties b/build.properties.d/00_default.properties
index 7b6b38a6af7ec59522e4bd07de1d8ce45330b15b..62b1b65ab7619e963093602886f17335bbd6295a 100644
--- a/build.properties.d/00_default.properties
+++ b/build.properties.d/00_default.properties
@@ -55,7 +55,7 @@ BUILD_MODULE_EXT_COSMETICS_LINKIFY=DISABLED
 BUILD_MODULE_EXT_COSMETICS_CUSTOMDATETIME=DISABLED
 BUILD_MODULE_EXT_QRCODE=ENABLED
 BUILD_MODULE_SHOW_ID_IN_LABEL=DISABLED
-BUILD_MODULE_LEGACY_QUERY_FORM=ENABLED
+BUILD_MODULE_LEGACY_QUERY_FORM=DISABLED
 
 BUILD_MODULE_USER_MANAGEMENT=ENABLED
 BUILD_MODULE_USER_MANAGEMENT_CHANGE_OWN_PASSWORD_REALM=CaosDB
@@ -212,4 +212,5 @@ MODULE_DEPENDENCIES=(
     ext_editmode_wysiwyg_text.js
     reference_resolver/caosdb_default_person.js
     ext_prop_display.js
+    query-form.bundle.js
 )
diff --git a/conf/core/json/query-form-tabs.json b/conf/core/json/query-form-tabs.json
new file mode 100644
index 0000000000000000000000000000000000000000..33b89f33f91e7a8b5863e1b7c6e81c1d5d795d1b
--- /dev/null
+++ b/conf/core/json/query-form-tabs.json
@@ -0,0 +1,12 @@
+{
+    "defaultTab": "records",
+    "prependAllTab": false,
+    "tabs": [{
+        "id": "records",
+        "label": "Records",
+        "filterDefinitions": [{
+            "property": "Name",
+            "datatype": "text"
+        }]
+    }]
+}
diff --git a/src/core/js/query-form.bundle.js b/src/core/js/query-form.bundle.js
new file mode 100644
index 0000000000000000000000000000000000000000..94f330373f746536160cd8edae3e01876475f9ce
--- /dev/null
+++ b/src/core/js/query-form.bundle.js
@@ -0,0 +1 @@
+(()=>{var __webpack_modules__={445:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(526);\n/* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(470);\n/* harmony import */ var _indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(787);\n/* harmony import */ var _indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_2__);\nfunction _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }\nfunction _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a \'" + methodName + "\' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\n\n\nfunction queryPanel(submitCallback, tabs, getSuggestionsCallback, restore, defaultTab) {\n  var element = document.createElement("DIV");\n  document.getElementById("top-navbar").querySelector(".caosdb-navbar").after(element);\n  element.classList.add("navbar-nav", "caosdb-f-query-panel");\n  var scrollHandler = function scrollHandler() {\n    (0,_indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_2__.toggleQueryPanel)(element);\n  };\n  var root = react_dom_client__WEBPACK_IMPORTED_MODULE_1__.createRoot(element);\n  root.render( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_2__.QueryPanel, {\n    scrollHandler: scrollHandler,\n    submitCallback: submitCallback,\n    tabs: tabs,\n    defaultTab: defaultTab,\n    getSuggestionsCallback: getSuggestionsCallback,\n    restore: restore\n  }));\n}\nfunction removeOldQueryPanel() {\n  document.getElementById("caosdb-navbar-query").remove();\n  document.getElementById("caosdb-query-panel").remove();\n}\nfunction resolveDefaultTab(tabs, defaultTab) {\n  var result = 0;\n  for (var i = 0; i < tabs.length; i++) {\n    if (tabs[i].id === defaultTab) {\n      result = i;\n    }\n  }\n  return result;\n}\n\n/**\n * Loads the config file and initializes the query panel.\n *\n * The config file must validate against the tabs-config.schema.json.\n */\nfunction initQueryPanel() {\n  return _initQueryPanel.apply(this, arguments);\n}\nfunction _initQueryPanel() {\n  _initQueryPanel = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var retrieveNames, autoCompletion, getSuggestionsCallback, tabs_config, defaultTab, prependAllTab, submitCallback, restore;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          if (document.getElementById("caosdb-navbar-query")) {\n            _context2.next = 3;\n            break;\n          }\n          // document not ready, retrigger when ready\n          document.addEventListener(\'DOMContentLoaded\', function () {\n            initQueryPanel();\n          }, false);\n          return _context2.abrupt("return");\n        case 3:\n          removeOldQueryPanel();\n\n          // for auto completion\n          retrieveNames = /*#__PURE__*/function () {\n            var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var response;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.t0 = $;\n                    _context.next = 3;\n                    return connection.get(transaction.generateEntitiesUri(["names"]));\n                  case 3:\n                    _context.t1 = _context.sent;\n                    response = (0, _context.t0)(_context.t1).find("Property[name],RecordType[name],Record[name]");\n                    response = response.toArray().map(function (x) {\n                      return $(x).attr("name");\n                    });\n                    return _context.abrupt("return", response);\n                  case 7:\n                  case "end":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n            return function retrieveNames() {\n              return _ref.apply(this, arguments);\n            };\n          }(); // give function -> lazy, give results -> eager initialization\n          autoCompletion = new _indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_2__.QueryForm.AutoCompletion(retrieveNames);\n          getSuggestionsCallback = function getSuggestionsCallback(isCql, value, word) {\n            return autoCompletion.getSuggestions(isCql, value, word);\n          }; // configure tabs\n          _context2.next = 9;\n          return load_config("json/query-form-tabs.json");\n        case 9:\n          tabs_config = _context2.sent;\n          defaultTab = undefined;\n          prependAllTab = true;\n          if (Array.isArray(tabs_config.tabs)) {\n            // tabs_config is object { tabs: [...], defaultTab: "...", prependAllTab: false }...\n            prependAllTab = typeof tabs_config.prependAllTab !== "undefined" ? tabs_config.prependAllTab : prependAllTab;\n            defaultTab = tabs_config.defaultTab;\n            tabs_config = tabs_config.tabs;\n          } // else { // tabs_config is an array }\n\n          if (tabs_config.map) {\n            tabs_config = tabs_config.map(function (conf) {\n              return (0,_indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_2__.createTab)(conf.id, conf.recordType, conf.label, conf.description, undefined, conf.filterDefinitions);\n            });\n            if (prependAllTab && tabs_config.length > 0) {\n              tabs_config = [(0,_indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_2__.createTab)("all", undefined, "All", "Show all matching results", (0,_indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_2__.makeQueryTemplate)())].concat(tabs_config);\n            }\n            defaultTab = resolveDefaultTab(tabs_config, defaultTab);\n          } else {\n            tabs_config = undefined;\n          }\n\n          // the submit callback is responsible for actually executing the query\n          submitCallback = function submitCallback(queryString, pageSize) {\n            var paging = pageSize < 1 ? "" : "&P=0L".concat(pageSize || 10);\n            var newHref = connection.getEntityUri([]) + "?query=".concat(encodeURIComponent(queryString)).concat(paging);\n            window.location.href = newHref;\n          };\n          restore = true;\n          queryPanel(submitCallback, tabs_config, getSuggestionsCallback, restore, defaultTab);\n        case 17:\n        case "end":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n  return _initQueryPanel.apply(this, arguments);\n}\ninitQueryPanel();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LENBQUEvQixLQUFBLE9BQUFELFNBQUE7QUFBQTtBQUVEK0IsY0FBYyxFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyLy4vc3JjL3F1ZXJ5LWZvcm0uanM/ODJkNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbS9jbGllbnRcIjtcbmltcG9ydCB7XG4gIFF1ZXJ5Rm9ybSxcbiAgUXVlcnlQYW5lbCxcbiAgdG9nZ2xlUXVlcnlQYW5lbCxcbiAgbWFrZVF1ZXJ5VGVtcGxhdGUsXG4gIGNyZWF0ZVRhYixcbn0gZnJvbSBcIkBpbmRpc2NhbGUvY2Fvc2RiLXdlYnVpLWNvcmUtY29tcG9uZW50c1wiO1xuXG5mdW5jdGlvbiBxdWVyeVBhbmVsKFxuICBzdWJtaXRDYWxsYmFjayxcbiAgdGFicyxcbiAgZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjayxcbiAgcmVzdG9yZSxcbiAgZGVmYXVsdFRhYlxuKSB7XG4gIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiRElWXCIpO1xuICBkb2N1bWVudFxuICAgIC5nZXRFbGVtZW50QnlJZChcInRvcC1uYXZiYXJcIilcbiAgICAucXVlcnlTZWxlY3RvcihcIi5jYW9zZGItbmF2YmFyXCIpXG4gICAgLmFmdGVyKGVsZW1lbnQpO1xuICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJuYXZiYXItbmF2XCIsIFwiY2Fvc2RiLWYtcXVlcnktcGFuZWxcIik7XG5cbiAgY29uc3Qgc2Nyb2xsSGFuZGxlciA9ICgpID0+IHtcbiAgICB0b2dnbGVRdWVyeVBhbmVsKGVsZW1lbnQpO1xuICB9O1xuXG4gIGNvbnN0IHJvb3QgPSBSZWFjdERPTS5jcmVhdGVSb290KGVsZW1lbnQpO1xuICByb290LnJlbmRlcihcbiAgICA8UXVlcnlQYW5lbFxuICAgICAgc2Nyb2xsSGFuZGxlcj17c2Nyb2xsSGFuZGxlcn1cbiAgICAgIHN1Ym1pdENhbGxiYWNrPXtzdWJtaXRDYWxsYmFja31cbiAgICAgIHRhYnM9e3RhYnN9XG4gICAgICBkZWZhdWx0VGFiPXtkZWZhdWx0VGFifVxuICAgICAgZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjaz17Z2V0U3VnZ2VzdGlvbnNDYWxsYmFja31cbiAgICAgIHJlc3RvcmU9e3Jlc3RvcmV9XG4gICAgLz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlT2xkUXVlcnlQYW5lbCgpIHtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjYW9zZGItbmF2YmFyLXF1ZXJ5XCIpLnJlbW92ZSgpO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNhb3NkYi1xdWVyeS1wYW5lbFwiKS5yZW1vdmUoKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURlZmF1bHRUYWIodGFicywgZGVmYXVsdFRhYikge1xuICB2YXIgcmVzdWx0ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRhYnNbaV0uaWQgPT09IGRlZmF1bHRUYWIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogTG9hZHMgdGhlIGNvbmZpZyBmaWxlIGFuZCBpbml0aWFsaXplcyB0aGUgcXVlcnkgcGFuZWwuXG4gKlxuICogVGhlIGNvbmZpZyBmaWxlIG11c3QgdmFsaWRhdGUgYWdhaW5zdCB0aGUgdGFicy1jb25maWcuc2NoZW1hLmpzb24uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluaXRRdWVyeVBhbmVsKCkge1xuICBpZighZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjYW9zZGItbmF2YmFyLXF1ZXJ5XCIpKSB7XG4gICAgLy8gZG9jdW1lbnQgbm90IHJlYWR5LCByZXRyaWdnZXIgd2hlbiByZWFkeVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpbml0UXVlcnlQYW5lbCgpO1xuICAgIH0sIGZhbHNlKTtcbiAgICByZXR1cm47XG4gIH1cblxuICByZW1vdmVPbGRRdWVyeVBhbmVsKCk7XG5cbiAgLy8gZm9yIGF1dG8gY29tcGxldGlvblxuICBjb25zdCByZXRyaWV2ZU5hbWVzID0gYXN5bmMgKCkgPT4ge1xuICAgIHZhciByZXNwb25zZSA9ICQoXG4gICAgICBhd2FpdCBjb25uZWN0aW9uLmdldCh0cmFuc2FjdGlvbi5nZW5lcmF0ZUVudGl0aWVzVXJpKFtcIm5hbWVzXCJdKSlcbiAgICApLmZpbmQoXCJQcm9wZXJ0eVtuYW1lXSxSZWNvcmRUeXBlW25hbWVdLFJlY29yZFtuYW1lXVwiKTtcblxuICAgIHJlc3BvbnNlID0gcmVzcG9uc2UudG9BcnJheSgpLm1hcCgoeCkgPT4gJCh4KS5hdHRyKFwibmFtZVwiKSk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH07XG5cbiAgLy8gZ2l2ZSBmdW5jdGlvbiAtPiBsYXp5LCBnaXZlIHJlc3VsdHMgLT4gZWFnZXIgaW5pdGlhbGl6YXRpb25cbiAgY29uc3QgYXV0b0NvbXBsZXRpb24gPSBuZXcgUXVlcnlGb3JtLkF1dG9Db21wbGV0aW9uKHJldHJpZXZlTmFtZXMpO1xuICBjb25zdCBnZXRTdWdnZXN0aW9uc0NhbGxiYWNrID0gKGlzQ3FsLCB2YWx1ZSwgd29yZCkgPT5cbiAgICBhdXRvQ29tcGxldGlvbi5nZXRTdWdnZXN0aW9ucyhpc0NxbCwgdmFsdWUsIHdvcmQpO1xuXG4gIC8vIGNvbmZpZ3VyZSB0YWJzXG4gIHZhciB0YWJzX2NvbmZpZyA9IGF3YWl0IGxvYWRfY29uZmlnKFwianNvbi9xdWVyeS1mb3JtLXRhYnMuanNvblwiKTtcbiAgdmFyIGRlZmF1bHRUYWIgPSB1bmRlZmluZWQ7XG4gIHZhciBwcmVwZW5kQWxsVGFiID0gdHJ1ZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh0YWJzX2NvbmZpZy50YWJzKSkge1xuICAgIC8vIHRhYnNfY29uZmlnIGlzIG9iamVjdCB7IHRhYnM6IFsuLi5dLCBkZWZhdWx0VGFiOiBcIi4uLlwiLCBwcmVwZW5kQWxsVGFiOiBmYWxzZSB9Li4uXG4gICAgcHJlcGVuZEFsbFRhYiA9XG4gICAgICB0eXBlb2YgdGFic19jb25maWcucHJlcGVuZEFsbFRhYiAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICA/IHRhYnNfY29uZmlnLnByZXBlbmRBbGxUYWJcbiAgICAgICAgOiBwcmVwZW5kQWxsVGFiO1xuICAgIGRlZmF1bHRUYWIgPSB0YWJzX2NvbmZpZy5kZWZhdWx0VGFiO1xuICAgIHRhYnNfY29uZmlnID0gdGFic19jb25maWcudGFicztcbiAgfSAvLyBlbHNlIHsgLy8gdGFic19jb25maWcgaXMgYW4gYXJyYXkgfVxuXG4gIGlmICh0YWJzX2NvbmZpZy5tYXApIHtcbiAgICB0YWJzX2NvbmZpZyA9IHRhYnNfY29uZmlnLm1hcCgoY29uZikgPT5cbiAgICAgIGNyZWF0ZVRhYihcbiAgICAgICAgY29uZi5pZCxcbiAgICAgICAgY29uZi5yZWNvcmRUeXBlLFxuICAgICAgICBjb25mLmxhYmVsLFxuICAgICAgICBjb25mLmRlc2NyaXB0aW9uLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGNvbmYuZmlsdGVyRGVmaW5pdGlvbnNcbiAgICAgIClcbiAgICApO1xuICAgIGlmIChwcmVwZW5kQWxsVGFiICYmIHRhYnNfY29uZmlnLmxlbmd0aCA+IDApIHtcbiAgICAgIHRhYnNfY29uZmlnID0gW1xuICAgICAgICBjcmVhdGVUYWIoXG4gICAgICAgICAgXCJhbGxcIixcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgXCJBbGxcIixcbiAgICAgICAgICBcIlNob3cgYWxsIG1hdGNoaW5nIHJlc3VsdHNcIixcbiAgICAgICAgICBtYWtlUXVlcnlUZW1wbGF0ZSgpXG4gICAgICAgICksXG4gICAgICBdLmNvbmNhdCh0YWJzX2NvbmZpZyk7XG4gICAgfVxuICAgIGRlZmF1bHRUYWIgPSByZXNvbHZlRGVmYXVsdFRhYih0YWJzX2NvbmZpZywgZGVmYXVsdFRhYik7XG4gIH0gZWxzZSB7XG4gICAgdGFic19jb25maWcgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyB0aGUgc3VibWl0IGNhbGxiYWNrIGlzIHJlc3BvbnNpYmxlIGZvciBhY3R1YWxseSBleGVjdXRpbmcgdGhlIHF1ZXJ5XG4gIGNvbnN0IHN1Ym1pdENhbGxiYWNrID0gKHF1ZXJ5U3RyaW5nLCBwYWdlU2l6ZSkgPT4ge1xuICAgIGNvbnN0IHBhZ2luZyA9IHBhZ2VTaXplIDwgMSA/IFwiXCIgOiBgJlA9MEwke3BhZ2VTaXplIHx8IDEwfWA7XG4gICAgY29uc3QgbmV3SHJlZiA9IGNvbm5lY3Rpb24uZ2V0RW50aXR5VXJpKFtdKSArIGA/cXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQocXVlcnlTdHJpbmcpfSR7cGFnaW5nfWA7XG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBuZXdIcmVmO1xuICB9O1xuICBjb25zdCByZXN0b3JlID0gdHJ1ZTtcblxuICBxdWVyeVBhbmVsKFxuICAgIHN1Ym1pdENhbGxiYWNrLFxuICAgIHRhYnNfY29uZmlnLFxuICAgIGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2ssXG4gICAgcmVzdG9yZSxcbiAgICBkZWZhdWx0VGFiXG4gICk7XG59XG5cbmluaXRRdWVyeVBhbmVsKCk7XG4iXSwibmFtZXMiOlsiX3JlZ2VuZXJhdG9yUnVudGltZSIsImV4cG9ydHMiLCJPcCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093biIsImhhc093blByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJkZXNjIiwidmFsdWUiLCIkU3ltYm9sIiwiU3ltYm9sIiwiaXRlcmF0b3JTeW1ib2wiLCJpdGVyYXRvciIsImFzeW5jSXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWdTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImVyciIsIndyYXAiLCJpbm5lckZuIiwib3V0ZXJGbiIsInNlbGYiLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiY3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJmbiIsImFyZyIsInR5cGUiLCJjYWxsIiwiQ29udGludWVTZW50aW5lbCIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJJdGVyYXRvclByb3RvdHlwZSIsImdldFByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJOYXRpdmVJdGVyYXRvclByb3RvdHlwZSIsInZhbHVlcyIsIkdwIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIm1ldGhvZCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiUHJvbWlzZUltcGwiLCJpbnZva2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVjb3JkIiwicmVzdWx0IiwiX3R5cGVvZiIsIl9fYXdhaXQiLCJ0aGVuIiwidW53cmFwcGVkIiwiZXJyb3IiLCJwcmV2aW91c1Byb21pc2UiLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsInN0YXRlIiwiRXJyb3IiLCJkb25lUmVzdWx0IiwiZGVsZWdhdGUiLCJkZWxlZ2F0ZVJlc3VsdCIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsImRvbmUiLCJtZXRob2ROYW1lIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwiaW5mbyIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsImxvY3MiLCJlbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXRlcmFibGUiLCJpdGVyYXRvck1ldGhvZCIsImlzTmFOIiwibGVuZ3RoIiwiaSIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsIml0ZXIiLCJrZXlzIiwidmFsIiwib2JqZWN0IiwicmV2ZXJzZSIsInBvcCIsInNraXBUZW1wUmVzZXQiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicm9vdFJlY29yZCIsInJ2YWwiLCJleGNlcHRpb24iLCJoYW5kbGUiLCJsb2MiLCJjYXVnaHQiLCJoYXNDYXRjaCIsImhhc0ZpbmFsbHkiLCJmaW5hbGx5RW50cnkiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsInRocm93biIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJfbmV4dCIsIl90aHJvdyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiUmVhY3QiLCJSZWFjdERPTSIsIlF1ZXJ5Rm9ybSIsIlF1ZXJ5UGFuZWwiLCJ0b2dnbGVRdWVyeVBhbmVsIiwibWFrZVF1ZXJ5VGVtcGxhdGUiLCJjcmVhdGVUYWIiLCJxdWVyeVBhbmVsIiwic3VibWl0Q2FsbGJhY2siLCJ0YWJzIiwiZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjayIsInJlc3RvcmUiLCJkZWZhdWx0VGFiIiwiZWxlbWVudCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwicXVlcnlTZWxlY3RvciIsImFmdGVyIiwiY2xhc3NMaXN0IiwiYWRkIiwic2Nyb2xsSGFuZGxlciIsInJvb3QiLCJjcmVhdGVSb290IiwicmVuZGVyIiwicmVtb3ZlT2xkUXVlcnlQYW5lbCIsInJlbW92ZSIsInJlc29sdmVEZWZhdWx0VGFiIiwiaWQiLCJpbml0UXVlcnlQYW5lbCIsIl9pbml0UXVlcnlQYW5lbCIsIl9jYWxsZWUyIiwicmV0cmlldmVOYW1lcyIsImF1dG9Db21wbGV0aW9uIiwidGFic19jb25maWciLCJwcmVwZW5kQWxsVGFiIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9yZWYiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwidDAiLCIkIiwiY29ubmVjdGlvbiIsImdldCIsInRyYW5zYWN0aW9uIiwiZ2VuZXJhdGVFbnRpdGllc1VyaSIsInQxIiwiZmluZCIsInRvQXJyYXkiLCJtYXAiLCJ4IiwiYXR0ciIsIkF1dG9Db21wbGV0aW9uIiwiaXNDcWwiLCJ3b3JkIiwiZ2V0U3VnZ2VzdGlvbnMiLCJsb2FkX2NvbmZpZyIsIkFycmF5IiwiaXNBcnJheSIsImNvbmYiLCJyZWNvcmRUeXBlIiwibGFiZWwiLCJkZXNjcmlwdGlvbiIsImZpbHRlckRlZmluaXRpb25zIiwiY29uY2F0IiwicXVlcnlTdHJpbmciLCJwYWdlU2l6ZSIsInBhZ2luZyIsIm5ld0hyZWYiLCJnZXRFbnRpdHlVcmkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///445\n')},787:(module,__unused_webpack_exports,__webpack_require__)=>{eval('/*! For license information please see caosdb-webui-core-components.js.LICENSE.txt */\n!function(e,t){ true?module.exports=t(__webpack_require__(526),function(){try{return __webpack_require__(818)}catch(e){}}()):0}(self,(function(e,t){return function(){var n={184:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function o(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var a=typeof n;if("string"===a||"number"===a)e.push(n);else if(Array.isArray(n)){if(n.length){var i=o.apply(null,n);i&&e.push(i)}}else if("object"===a){if(n.toString!==Object.prototype.toString&&!n.toString.toString().includes("[native code]")){e.push(n.toString());continue}for(var l in n)r.call(n,l)&&n[l]&&e.push(l)}}}return e.join(" ")}e.exports?(o.default=o,e.exports=o):void 0===(n=function(){return o}.apply(t,[]))||(e.exports=n)}()},550:function(e,t,n){"use strict";var r=n(537),o=n.n(r),a=n(645),i=n.n(a)()(o());i.push([e.id,".caosdb-f-query-cql-hint{border-radius:2rem;background-color:#d9d9d9;color:#262626;padding:.1rem .4rem}.caosdb-f-query-form-sug{display:none}nav .navbar-collapse{align-items:start;flex-wrap:wrap}nav .navbar-collapse form{display:flex;flex-direction:column}.caosdb-f-query-panel.condensed:focus-within,.caosdb-f-query-panel{margin-top:.5rem;width:100%;order:1}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form,.caosdb-f-query-panel .caosdb-f-query-form{order:unset;height:44px;padding-left:2rem;padding-top:.5rem;padding-right:2rem;padding-bottom:.5rem;border:1px solid #ddd;background-color:#fff;border-radius:2rem}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form:hover,.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus,.caosdb-f-query-panel .caosdb-f-query-form:hover,.caosdb-f-query-panel .caosdb-f-query-form.focus{box-shadow:0 1px 6px rgba(32,33,36,.28)}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug,.caosdb-f-query-panel .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug{margin-top:.5rem;background-color:#fff;display:inline-block;max-height:200px;position:absolute;overflow-y:auto;box-shadow:0 4px 6px rgba(32,33,36,.28);padding:0px}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li,.caosdb-f-query-panel .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li{padding-left:.5rem;padding-right:.5rem;height:24px;list-style-type:none}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li.highlight,.caosdb-f-query-panel .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li.highlight{background-color:#d9d9d9}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li:hover,.caosdb-f-query-panel .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li:hover{background-color:#d9d9d9}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.submit.open .caosdb-f-query-form-sug,.caosdb-f-query-panel .caosdb-f-query-form.focus.submit.open .caosdb-f-query-form-sug{display:none}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form button,.caosdb-f-query-panel .caosdb-f-query-form button{background-color:inherit;border:none}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form input,.caosdb-f-query-panel .caosdb-f-query-form input{border:none}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form input:focus,.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form input:focus-visible,.caosdb-f-query-panel .caosdb-f-query-form input:focus,.caosdb-f-query-panel .caosdb-f-query-form input:focus-visible{outline:none}.caosdb-f-query-panel.condensed:focus-within form,.caosdb-f-query-panel form{flex-direction:column}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab-list,.caosdb-f-query-panel .caosdb-f-query-tab-list{margin-top:.5rem;padding-left:1rem;padding-right:1rem}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab-filters,.caosdb-f-query-panel .caosdb-f-query-tab-filters{display:flex;flex-direction:row;flex-wrap:wrap}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab-filters input.form-control,.caosdb-f-query-panel .caosdb-f-query-tab-filters input.form-control{display:unset;width:unset}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab,.caosdb-f-query-panel .caosdb-f-query-tab{height:44px;margin-right:1rem;padding:6px;background-color:unset;border:none;border-bottom:.2rem solid rgba(0,0,0,0)}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab.active,.caosdb-f-query-panel .caosdb-f-query-tab.active{border-bottom:.2rem solid gray}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-filter-property-selector,.caosdb-f-query-panel .caosdb-f-query-filter-property-selector{flex-basis:100%}@media(min-width: 992px){.caosdb-f-query-panel .caosdb-f-query-tab-filters{display:grid;grid-template-columns:max-content max-content auto max-content;grid-column-gap:.5rem;padding:.2rem 0rem}.caosdb-f-query-panel .caosdb-f-query-tab-filters input.form-control{display:unset;width:unset}.caosdb-f-query-panel.condensed{margin-top:0;width:unset;order:unset}.caosdb-f-query-panel.condensed form{flex-direction:row}.caosdb-f-query-panel.condensed .caosdb-f-query-filters-toggle{display:none}.caosdb-f-query-panel.condensed .caosdb-f-query-tab-list{margin-top:0rem}.caosdb-f-query-panel.condensed .caosdb-f-query-tab{height:38px}.caosdb-f-query-panel.condensed .caosdb-f-query-tab-filters{display:none}.caosdb-f-query-panel.condensed .caosdb-f-query-form{height:38px;order:1;padding-left:1rem;padding-top:.3rem;padding-right:1rem;padding-bottom:.3rem}.caosdb-f-query-panel.condensed .caosdb-f-query-form .caosdb-f-query-form-sug{display:none}}.user-component .alert{padding-top:.375rem;padding-bottom:.375rem;font-size:1rem;margin:0}header{border-bottom:1px solid rgba(0,0,0,.15);border-radius:0}footer{color:#878787}footer .nav{border-bottom:1px solid #a0a0a0}footer .nav-link{color:#878787 !important}footer .nav-link:hover{color:#6d6d6d !important}footer .footer-body{border-top:1px solid #bababa;background-color:#d3d3d3;min-height:20rem}footer .footer-border{height:3rem;box-shadow:0px -5px 7px -5px rgba(0,0,0,.4) inset;-webkit-box-shadow:0px -5px 7px -5px rgba(0,0,0,.4) inset;-moz-box-shadow:0px -5px 6px -7px rgba(0,0,0,.4) inset}.caosdb-checkbox{cursor:pointer}.caosdb-checkbox .caosdb-checkbox-icon{font-size:1.3em}.caosdb-checkbox .caosdb-check-box-input{display:none}.caosdb-checkbox.read-only{cursor:auto}.color-light-green{color:#b4e600}.minicard{border:1px solid red;width:400px;display:flex}.minicard .minicard-title{background-color:red}","",{version:3,sources:["webpack://./src/components/QueryForm.scss","webpack://./node_modules/bootstrap/scss/mixins/_breakpoints.scss","webpack://./src/index.scss"],names:[],mappings:"AAIA,yBACE,kBAAA,CACA,wBAAA,CACA,aAAA,CACA,mBAAA,CAGF,yBACE,YAAA,CAGF,qBACE,iBAAA,CACA,cAAA,CAEA,0BACE,YAAA,CACA,qBAAA,CAIJ,mEAEE,gBAAA,CACA,UAAA,CACA,OAAA,CAEA,6GACE,WAAA,CACA,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,kBAAA,CACA,oBAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CAEA,kPAEE,uCAAA,CAKE,yLACE,gBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CACA,iBAAA,CACA,eAAA,CACA,uCAAA,CACA,WAAA,CAEA,+LACE,kBAAA,CACA,mBAAA,CACA,WAAA,CACA,oBAAA,CACA,mNACE,wBAAA,CAEF,2MACE,wBAAA,CAOJ,mMACE,YAAA,CAMR,2HACE,wBAAA,CACA,WAAA,CAGF,yHACE,WAAA,CAEA,0RAEE,YAAA,CAKN,6EACE,qBAAA,CAGF,qHACE,gBAAA,CACA,iBAAA,CACA,kBAAA,CAGF,2HACE,YAAA,CACA,kBAAA,CACA,cAAA,CAEA,iKACE,aAAA,CACA,WAAA,CAIJ,2GACE,WAAA,CACA,iBAAA,CACA,WAAA,CACA,sBAAA,CACA,WAAA,CACA,uCAAA,CACA,yHACE,8BAAA,CAIJ,qJACE,eAAA,CCpEA,yBD0EA,kDACE,YAAA,CACA,8DAAA,CACA,qBAAA,CACA,kBAAA,CAEA,qEACE,aAAA,CACA,WAAA,CAKN,gCACE,YAAA,CACA,WAAA,CACA,WAAA,CAEA,qCACE,kBAAA,CAGF,+DACE,YAAA,CAGF,yDACE,eAAA,CAGF,oDACE,WAAA,CAGF,4DACE,YAAA,CAGF,qDACE,WAAA,CACA,OAAA,CACA,iBAAA,CACA,iBAAA,CACA,kBAAA,CACA,oBAAA,CAEA,8EACE,YAAA,CAAA,CEpLR,uBACE,mBAAA,CACA,sBAAA,CACA,cAAA,CACA,QAAA,CAGF,OACE,uCAAA,CACA,eAAA,CAGF,OACE,aAAA,CAEA,YACE,+BAAA,CAEF,iBACE,wBAAA,CAEF,uBACE,wBAAA,CAEF,oBACE,4BAAA,CACA,wBA5BgB,CA6BhB,gBAAA,CAEF,sBACE,WAAA,CACA,iDAAA,CACA,yDAAA,CACA,sDAAA,CAIJ,iBASE,cAAA,CARA,uCACE,eAAA,CAGF,yCACE,YAAA,CAKF,2BACE,WAAA,CAIJ,mBACE,aAAA,CAGF,UACE,oBAAA,CACA,WAAA,CACA,YAAA,CAEA,0BACE,oBAAA",sourcesContent:[\'@import "bootstrap/scss/functions";\\n@import "bootstrap/scss/variables";\\n@import "bootstrap/scss/mixins";\\n\\n.caosdb-f-query-cql-hint {\\n  border-radius: 2rem;\\n  background-color: darken(white, 15%);\\n  color: lighten(black, 15%);\\n  padding: 0.1rem 0.4rem;\\n}\\n\\n.caosdb-f-query-form-sug {\\n  display: none;\\n}\\n\\nnav .navbar-collapse {\\n  align-items: start;\\n  flex-wrap: wrap;\\n\\n  form {\\n    display: flex;\\n    flex-direction: column;\\n  }\\n}\\n\\n.caosdb-f-query-panel.condensed:focus-within,\\n.caosdb-f-query-panel {\\n  margin-top: 0.5rem;\\n  width: 100%;\\n  order: 1;\\n\\n  .caosdb-f-query-form {\\n    order: unset;\\n    height: 44px;\\n    padding-left: 2rem;\\n    padding-top: 0.5rem;\\n    padding-right: 2rem;\\n    padding-bottom: 0.5rem;\\n    border: 1px solid #ddd;\\n    background-color: white;\\n    border-radius: 2rem;\\n\\n    &:hover,\\n    &.focus {\\n      box-shadow: 0 1px 6px rgba(32, 33, 36, 0.28);\\n    }\\n\\n    &.focus {\\n      &.open {\\n        ol.caosdb-f-query-form-sug {\\n          margin-top: 0.5rem;\\n          background-color: white;\\n          display: inline-block;\\n          max-height: 200px;\\n          position: absolute;\\n          overflow-y: auto;\\n          box-shadow: 0 4px 6px rgba(32, 33, 36, 0.28);\\n          padding: 0px;\\n\\n          li {\\n            padding-left: 0.5rem;\\n            padding-right: 0.5rem;\\n            height: 24px;\\n            list-style-type: none;\\n            &.highlight {\\n              background-color: darken(white, 15%);\\n            }\\n            &:hover {\\n              background-color: darken(white, 15%);\\n            }\\n          }\\n        }\\n      }\\n      &.submit {\\n        &.open {\\n          .caosdb-f-query-form-sug {\\n            display: none;\\n          }\\n        }\\n      }\\n    }\\n\\n    button {\\n      background-color: inherit;\\n      border: none;\\n    }\\n\\n    input {\\n      border: none;\\n\\n      &:focus,\\n      &:focus-visible {\\n        outline: none;\\n      }\\n    }\\n  }\\n\\n  form {\\n    flex-direction: column;\\n  }\\n\\n  .caosdb-f-query-tab-list {\\n    margin-top: 0.5rem;\\n    padding-left: 1rem;\\n    padding-right: 1rem;\\n  }\\n\\n  .caosdb-f-query-tab-filters {\\n    display: flex;\\n    flex-direction: row;\\n    flex-wrap: wrap;\\n\\n    input.form-control {\\n      display: unset;\\n      width: unset;\\n    }\\n  }\\n\\n  .caosdb-f-query-tab {\\n    height: 44px;\\n    margin-right: 1rem;\\n    padding: 6px;\\n    background-color: unset;\\n    border: none;\\n    border-bottom: 0.2rem solid transparent;\\n    &.active {\\n      border-bottom: 0.2rem solid gray;\\n    }\\n  }\\n\\n  .caosdb-f-query-filter-property-selector {\\n    flex-basis: 100%;\\n  }\\n}\\n\\n@include media-breakpoint-up(lg) {\\n  .caosdb-f-query-panel {\\n    .caosdb-f-query-tab-filters {\\n      display: grid;\\n      grid-template-columns: max-content max-content auto max-content;\\n      grid-column-gap: 0.5rem;\\n      padding: 0.2rem 0rem;\\n\\n      input.form-control {\\n        display: unset;\\n        width: unset;\\n      }\\n    }\\n  }\\n\\n  .caosdb-f-query-panel.condensed {\\n    margin-top: 0;\\n    width: unset;\\n    order: unset;\\n\\n    form {\\n      flex-direction: row;\\n    }\\n\\n    .caosdb-f-query-filters-toggle {\\n      display: none;\\n    }\\n\\n    .caosdb-f-query-tab-list {\\n      margin-top: 0rem;\\n    }\\n\\n    .caosdb-f-query-tab {\\n      height: 38px;\\n    }\\n\\n    .caosdb-f-query-tab-filters {\\n      display: none;\\n    }\\n\\n    .caosdb-f-query-form {\\n      height: 38px;\\n      order: 1;\\n      padding-left: 1rem;\\n      padding-top: 0.3rem;\\n      padding-right: 1rem;\\n      padding-bottom: 0.3rem;\\n\\n      .caosdb-f-query-form-sug {\\n        display: none;\\n      }\\n    }\\n  }\\n}\\n\',\'// Breakpoint viewport sizes and media queries.\\n//\\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\\n//\\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\\n//\\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\\n\\n// Name of the next breakpoint, or null for the last breakpoint.\\n//\\n//    >> breakpoint-next(sm)\\n//    md\\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n//    md\\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\\n//    md\\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\\n  $n: index($breakpoint-names, $name);\\n  @if not $n {\\n    @error "breakpoint `#{$name}` not found in `#{$breakpoints}`";\\n  }\\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\\n}\\n\\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\\n//\\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n//    576px\\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\\n  $min: map-get($breakpoints, $name);\\n  @return if($min != 0, $min, null);\\n}\\n\\n// Maximum breakpoint width.\\n// The maximum value is reduced by 0.02px to work around the limitations of\\n// `min-` and `max-` prefixes and viewports with fractional widths.\\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\\n//\\n//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n//    767.98px\\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\\n  $max: map-get($breakpoints, $name);\\n  @return if($max and $max > 0, $max - .02, null);\\n}\\n\\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\\n// Useful for making responsive utilities.\\n//\\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n//    ""  (Returns a blank string)\\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n//    "-sm"\\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\\n  @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}");\\n}\\n\\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\\n// Makes the @content apply to the given breakpoint and wider.\\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\\n  $min: breakpoint-min($name, $breakpoints);\\n  @if $min {\\n    @media (min-width: $min) {\\n      @content;\\n    }\\n  } @else {\\n    @content;\\n  }\\n}\\n\\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\\n// Makes the @content apply to the given breakpoint and narrower.\\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\\n  $max: breakpoint-max($name, $breakpoints);\\n  @if $max {\\n    @media (max-width: $max) {\\n      @content;\\n    }\\n  } @else {\\n    @content;\\n  }\\n}\\n\\n// Media that spans multiple breakpoint widths.\\n// Makes the @content apply between the min and max breakpoints\\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\\n  $min: breakpoint-min($lower, $breakpoints);\\n  $max: breakpoint-max($upper, $breakpoints);\\n\\n  @if $min != null and $max != null {\\n    @media (min-width: $min) and (max-width: $max) {\\n      @content;\\n    }\\n  } @else if $max == null {\\n    @include media-breakpoint-up($lower, $breakpoints) {\\n      @content;\\n    }\\n  } @else if $min == null {\\n    @include media-breakpoint-down($upper, $breakpoints) {\\n      @content;\\n    }\\n  }\\n}\\n\\n// Media between the breakpoint\\\'s minimum and maximum widths.\\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\\n  $min:  breakpoint-min($name, $breakpoints);\\n  $next: breakpoint-next($name, $breakpoints);\\n  $max:  breakpoint-max($next, $breakpoints);\\n\\n  @if $min != null and $max != null {\\n    @media (min-width: $min) and (max-width: $max) {\\n      @content;\\n    }\\n  } @else if $max == null {\\n    @include media-breakpoint-up($name, $breakpoints) {\\n      @content;\\n    }\\n  } @else if $min == null {\\n    @include media-breakpoint-down($next, $breakpoints) {\\n      @content;\\n    }\\n  }\\n}\\n\',\'@import "./components/QueryForm";\\n\\n$footer-body-color: lightgray;\\n\\n.user-component .alert {\\n  padding-top: 0.375rem;\\n  padding-bottom: 0.375rem;\\n  font-size: 1rem;\\n  margin: 0;\\n}\\n\\nheader {\\n  border-bottom: 1px solid rgba(0, 0, 0, 0.15);\\n  border-radius: 0;\\n}\\n\\nfooter {\\n  color: darken($footer-body-color, 30%);\\n\\n  .nav {\\n    border-bottom: 1px solid darken($footer-body-color, 20%);\\n  }\\n  .nav-link {\\n    color: darken($footer-body-color, 30%) !important;\\n  }\\n  .nav-link:hover {\\n    color: darken($footer-body-color, 40%) !important;\\n  }\\n  .footer-body {\\n    border-top: 1px solid darken($footer-body-color, 10%);\\n    background-color: $footer-body-color;\\n    min-height: 20rem;\\n  }\\n  .footer-border {\\n    height: 3rem;\\n    box-shadow: 0px -5px 7px -5px rgba(0, 0, 0, 0.4) inset;\\n    -webkit-box-shadow: 0px -5px 7px -5px rgba(0, 0, 0, 0.4) inset;\\n    -moz-box-shadow: 0px -5px 6px -7px rgba(0, 0, 0, 0.4) inset;\\n  }\\n}\\n\\n.caosdb-checkbox {\\n  .caosdb-checkbox-icon {\\n    font-size: 1.3em;\\n  }\\n\\n  .caosdb-check-box-input {\\n    display: none;\\n  }\\n\\n  cursor: pointer;\\n\\n  &.read-only {\\n    cursor: auto;\\n  }\\n}\\n\\n.color-light-green {\\n  color: #b4e600;\\n}\\n\\n.minicard {\\n  border: 1px solid red;\\n  width: 400px;\\n  display: flex;\\n\\n  .minicard-title {\\n    background-color: red;\\n  }\\n}\\n\'],sourceRoot:""}]),t.Z=i},645:function(e){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,o,a){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(r)for(var l=0;l<this.length;l++){var u=this[l][0];null!=u&&(i[u]=!0)}for(var s=0;s<e.length;s++){var c=[].concat(e[s]);r&&i[c[0]]||(void 0!==a&&(void 0===c[5]||(c[1]="@layer".concat(c[5].length>0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=a),n&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=n):c[2]=n),o&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=o):c[4]="".concat(o)),t.push(c))}},t}},537:function(e){"use strict";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),a="/*# ".concat(o," */");return[t].concat([a]).join("\\n")}return[t].join("\\n")}},143:function(e){"use strict";e.exports=function(e,t,n,r,o,a,i,l){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,o,a,i,l],c=0;(u=new Error(t.replace(/%s/g,(function(){return s[c++]})))).name="Invariant Violation"}throw u.framesToPop=1,u}}},391:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,o.default)((function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];var o=null;return t.forEach((function(e){if(null==o){var t=e.apply(void 0,n);null!=t&&(o=t)}})),o}))};var r,o=(r=n(613))&&r.__esModule?r:{default:r};e.exports=t.default},613:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(t,n,r,o,a,i){var l=o||"<<anonymous>>",u=i||r;if(null==n[r])return t?new Error("Required "+a+" `"+u+"` was not specified in `"+l+"`."):null;for(var s=arguments.length,c=Array(s>6?s-6:0),f=6;f<s;f++)c[f-6]=arguments[f];return e.apply(void 0,[n,r,l,a,u].concat(c))}var n=t.bind(null,!1);return n.isRequired=t.bind(null,!0),n},e.exports=t.default},703:function(e,t,n){"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},697:function(e,t,n){e.exports=n(703)()},414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},448:function(e,t,n){"use strict";var r=n(639),o=n(840);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,l={};function u(e,t){s(e,t),s(e+"Capture",t)}function s(e,t){for(l[e]=t,e=0;e<t.length;e++)i.add(t[e])}var c=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=Object.prototype.hasOwnProperty,d=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,p={},m={};function h(e,t,n,r,o,a,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=i}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new h(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new h(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new h(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new h(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){v[e]=new h(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new h(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new h(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new h(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new h(e,5,!1,e.toLowerCase(),null,!1,!1)}));var g=/[\\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function b(e,t,n,r){var o=v.hasOwnProperty(t)?v[t]:null;(null!==o?0!==o.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!f.call(m,e)||!f.call(p,e)&&(d.test(e)?m[e]=!0:(p[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(g,y);v[t]=new h(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(g,y);v[t]=new h(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(g,y);v[t]=new h(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new h(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new h("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new h(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,x=Symbol.for("react.element"),E=Symbol.for("react.portal"),k=Symbol.for("react.fragment"),C=Symbol.for("react.strict_mode"),S=Symbol.for("react.profiler"),A=Symbol.for("react.provider"),N=Symbol.for("react.context"),O=Symbol.for("react.forward_ref"),T=Symbol.for("react.suspense"),P=Symbol.for("react.suspense_list"),L=Symbol.for("react.memo"),_=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var j=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var R=Symbol.iterator;function D(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=R&&e[R]||e["@@iterator"])?e:null}var I,F=Object.assign;function M(e){if(void 0===I)try{throw Error()}catch(e){var t=e.stack.trim().match(/\\n( *(at )?)/);I=t&&t[1]||""}return"\\n"+I+e}var z=!1;function q(e,t){if(!e||z)return"";z=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(e){var r=e}Reflect.construct(e,[],t)}else{try{t.call()}catch(e){r=e}e.call(t.prototype)}else{try{throw Error()}catch(e){r=e}e()}}catch(t){if(t&&r&&"string"==typeof t.stack){for(var o=t.stack.split("\\n"),a=r.stack.split("\\n"),i=o.length-1,l=a.length-1;1<=i&&0<=l&&o[i]!==a[l];)l--;for(;1<=i&&0<=l;i--,l--)if(o[i]!==a[l]){if(1!==i||1!==l)do{if(i--,0>--l||o[i]!==a[l]){var u="\\n"+o[i].replace(" at new "," at ");return e.displayName&&u.includes("<anonymous>")&&(u=u.replace("<anonymous>",e.displayName)),u}}while(1<=i&&0<=l);break}}}finally{z=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?M(e):""}function $(e){switch(e.tag){case 5:return M(e.type);case 16:return M("Lazy");case 13:return M("Suspense");case 19:return M("SuspenseList");case 0:case 2:case 15:return q(e.type,!1);case 11:return q(e.type.render,!1);case 1:return q(e.type,!0);default:return""}}function B(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case k:return"Fragment";case E:return"Portal";case S:return"Profiler";case C:return"StrictMode";case T:return"Suspense";case P:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case N:return(e.displayName||"Context")+".Consumer";case A:return(e._context.displayName||"Context")+".Provider";case O:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case L:return null!==(t=e.displayName||null)?t:B(e.type)||"Memo";case _:t=e._payload,e=e._init;try{return B(e(t))}catch(e){}}return null}function U(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return B(t);case 8:return t===C?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function W(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function H(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function V(e){e._valueTracker||(e._valueTracker=function(e){var t=H(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Q(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=H(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function K(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Y(e,t){var n=t.checked;return F({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function G(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=W(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function X(e,t){null!=(t=t.checked)&&b(e,"checked",t,!1)}function J(e,t){X(e,t);var n=W(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,W(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Z(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&K(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+W(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return F({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function oe(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(a(92));if(te(n)){if(1<n.length)throw Error(a(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:W(n)}}function ae(e,t){var n=W(t.value),r=W(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ie(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function le(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function ue(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?le(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var se,ce,fe=(ce=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((se=se||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=se.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ce(e,t)}))}:ce);function de(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var pe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=["Webkit","ms","Moz","O"];function he(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||pe.hasOwnProperty(e)&&pe[e]?(""+t).trim():t+"px"}function ve(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=he(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(pe).forEach((function(e){me.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pe[t]=pe[e]}))}));var ge=F({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ye(e,t){if(t){if(ge[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(a(62))}}function be(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var we=null;function xe(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ee=null,ke=null,Ce=null;function Se(e){if(e=wo(e)){if("function"!=typeof Ee)throw Error(a(280));var t=e.stateNode;t&&(t=Eo(t),Ee(e.stateNode,e.type,t))}}function Ae(e){ke?Ce?Ce.push(e):Ce=[e]:ke=e}function Ne(){if(ke){var e=ke,t=Ce;if(Ce=ke=null,Se(e),t)for(e=0;e<t.length;e++)Se(t[e])}}function Oe(e,t){return e(t)}function Te(){}var Pe=!1;function Le(e,t,n){if(Pe)return e(t,n);Pe=!0;try{return Oe(e,t,n)}finally{Pe=!1,(null!==ke||null!==Ce)&&(Te(),Ne())}}function _e(e,t){var n=e.stateNode;if(null===n)return null;var r=Eo(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(a(231,t,typeof n));return n}var je=!1;if(c)try{var Re={};Object.defineProperty(Re,"passive",{get:function(){je=!0}}),window.addEventListener("test",Re,Re),window.removeEventListener("test",Re,Re)}catch(ce){je=!1}function De(e,t,n,r,o,a,i,l,u){var s=Array.prototype.slice.call(arguments,3);try{t.apply(n,s)}catch(e){this.onError(e)}}var Ie=!1,Fe=null,Me=!1,ze=null,qe={onError:function(e){Ie=!0,Fe=e}};function $e(e,t,n,r,o,a,i,l,u){Ie=!1,Fe=null,De.apply(qe,arguments)}function Be(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ue(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&null!==(e=e.alternate)&&(t=e.memoizedState),null!==t)return t.dehydrated}return null}function We(e){if(Be(e)!==e)throw Error(a(188))}function He(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Be(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var i=o.alternate;if(null===i){if(null!==(r=o.return)){n=r;continue}break}if(o.child===i.child){for(i=o.child;i;){if(i===n)return We(o),e;if(i===r)return We(o),t;i=i.sibling}throw Error(a(188))}if(n.return!==r.return)n=o,r=i;else{for(var l=!1,u=o.child;u;){if(u===n){l=!0,n=o,r=i;break}if(u===r){l=!0,r=o,n=i;break}u=u.sibling}if(!l){for(u=i.child;u;){if(u===n){l=!0,n=i,r=o;break}if(u===r){l=!0,r=i,n=o;break}u=u.sibling}if(!l)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e))?Ve(e):null}function Ve(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Ve(e);if(null!==t)return t;e=e.sibling}return null}var Qe=o.unstable_scheduleCallback,Ke=o.unstable_cancelCallback,Ye=o.unstable_shouldYield,Ge=o.unstable_requestPaint,Xe=o.unstable_now,Je=o.unstable_getCurrentPriorityLevel,Ze=o.unstable_ImmediatePriority,et=o.unstable_UserBlockingPriority,tt=o.unstable_NormalPriority,nt=o.unstable_LowPriority,rt=o.unstable_IdlePriority,ot=null,at=null,it=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(lt(e)/ut|0)|0},lt=Math.log,ut=Math.LN2,st=64,ct=4194304;function ft(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function dt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,o=e.suspendedLanes,a=e.pingedLanes,i=268435455&n;if(0!==i){var l=i&~o;0!==l?r=ft(l):0!=(a&=i)&&(r=ft(a))}else 0!=(i=n&~o)?r=ft(i):0!==a&&(r=ft(a));if(0===r)return 0;if(0!==t&&t!==r&&0==(t&o)&&((o=r&-r)>=(a=t&-t)||16===o&&0!=(4194240&a)))return t;if(0!=(4&r)&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)o=1<<(n=31-it(t)),r|=e[n],t&=~o;return r}function pt(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function mt(e){return 0!=(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function ht(){var e=st;return 0==(4194240&(st<<=1))&&(st=64),e}function vt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function gt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function yt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),o=1<<r;o&t|e[r]&t&&(e[r]|=t),n&=~o}}var bt=0;function wt(e){return 1<(e&=-e)?4<e?0!=(268435455&e)?16:536870912:4:1}var xt,Et,kt,Ct,St,At=!1,Nt=[],Ot=null,Tt=null,Pt=null,Lt=new Map,_t=new Map,jt=[],Rt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Dt(e,t){switch(e){case"focusin":case"focusout":Ot=null;break;case"dragenter":case"dragleave":Tt=null;break;case"mouseover":case"mouseout":Pt=null;break;case"pointerover":case"pointerout":Lt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":_t.delete(t.pointerId)}}function It(e,t,n,r,o,a){return null===e||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[o]},null!==t&&null!==(t=wo(t))&&Et(t),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==o&&-1===t.indexOf(o)&&t.push(o),e)}function Ft(e){var t=bo(e.target);if(null!==t){var n=Be(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ue(n)))return e.blockedOn=t,void St(e.priority,(function(){kt(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Mt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Yt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=wo(n))&&Et(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);we=r,n.target.dispatchEvent(r),we=null,t.shift()}return!0}function zt(e,t,n){Mt(e)&&n.delete(t)}function qt(){At=!1,null!==Ot&&Mt(Ot)&&(Ot=null),null!==Tt&&Mt(Tt)&&(Tt=null),null!==Pt&&Mt(Pt)&&(Pt=null),Lt.forEach(zt),_t.forEach(zt)}function $t(e,t){e.blockedOn===t&&(e.blockedOn=null,At||(At=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,qt)))}function Bt(e){function t(t){return $t(t,e)}if(0<Nt.length){$t(Nt[0],e);for(var n=1;n<Nt.length;n++){var r=Nt[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Ot&&$t(Ot,e),null!==Tt&&$t(Tt,e),null!==Pt&&$t(Pt,e),Lt.forEach(t),_t.forEach(t),n=0;n<jt.length;n++)(r=jt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<jt.length&&null===(n=jt[0]).blockedOn;)Ft(n),null===n.blockedOn&&jt.shift()}var Ut=w.ReactCurrentBatchConfig,Wt=!0;function Ht(e,t,n,r){var o=bt,a=Ut.transition;Ut.transition=null;try{bt=1,Qt(e,t,n,r)}finally{bt=o,Ut.transition=a}}function Vt(e,t,n,r){var o=bt,a=Ut.transition;Ut.transition=null;try{bt=4,Qt(e,t,n,r)}finally{bt=o,Ut.transition=a}}function Qt(e,t,n,r){if(Wt){var o=Yt(e,t,n,r);if(null===o)Wr(e,t,r,Kt,n),Dt(e,r);else if(function(e,t,n,r,o){switch(t){case"focusin":return Ot=It(Ot,e,t,n,r,o),!0;case"dragenter":return Tt=It(Tt,e,t,n,r,o),!0;case"mouseover":return Pt=It(Pt,e,t,n,r,o),!0;case"pointerover":var a=o.pointerId;return Lt.set(a,It(Lt.get(a)||null,e,t,n,r,o)),!0;case"gotpointercapture":return a=o.pointerId,_t.set(a,It(_t.get(a)||null,e,t,n,r,o)),!0}return!1}(o,e,t,n,r))r.stopPropagation();else if(Dt(e,r),4&t&&-1<Rt.indexOf(e)){for(;null!==o;){var a=wo(o);if(null!==a&&xt(a),null===(a=Yt(e,t,n,r))&&Wr(e,t,r,Kt,n),a===o)break;o=a}null!==o&&r.stopPropagation()}else Wr(e,t,r,null,n)}}var Kt=null;function Yt(e,t,n,r){if(Kt=null,null!==(e=bo(e=xe(r))))if(null===(t=Be(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=Ue(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Kt=e,null}function Gt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Je()){case Ze:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Xt=null,Jt=null,Zt=null;function en(){if(Zt)return Zt;var e,t,n=Jt,r=n.length,o="value"in Xt?Xt.value:Xt.textContent,a=o.length;for(e=0;e<r&&n[e]===o[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===o[a-t];t++);return Zt=o.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function on(e){function t(t,n,r,o,a){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=o,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(o):o[i]);return this.isDefaultPrevented=(null!=o.defaultPrevented?o.defaultPrevented:!1===o.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return F(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var an,ln,un,sn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},cn=on(sn),fn=F({},sn,{view:0,detail:0}),dn=on(fn),pn=F({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Sn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==un&&(un&&"mousemove"===e.type?(an=e.screenX-un.screenX,ln=e.screenY-un.screenY):ln=an=0,un=e),an)},movementY:function(e){return"movementY"in e?e.movementY:ln}}),mn=on(pn),hn=on(F({},pn,{dataTransfer:0})),vn=on(F({},fn,{relatedTarget:0})),gn=on(F({},sn,{animationName:0,elapsedTime:0,pseudoElement:0})),yn=F({},sn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),bn=on(yn),wn=on(F({},sn,{data:0})),xn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},En={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},kn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=kn[e])&&!!t[e]}function Sn(){return Cn}var An=F({},fn,{key:function(e){if(e.key){var t=xn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?En[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Sn,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Nn=on(An),On=on(F({},pn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Tn=on(F({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Sn})),Pn=on(F({},sn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Ln=F({},pn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),_n=on(Ln),jn=[9,13,27,32],Rn=c&&"CompositionEvent"in window,Dn=null;c&&"documentMode"in document&&(Dn=document.documentMode);var In=c&&"TextEvent"in window&&!Dn,Fn=c&&(!Rn||Dn&&8<Dn&&11>=Dn),Mn=String.fromCharCode(32),zn=!1;function qn(e,t){switch(e){case"keyup":return-1!==jn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $n(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Bn=!1,Un={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Wn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Un[e.type]:"textarea"===t}function Hn(e,t,n,r){Ae(r),0<(t=Vr(t,"onChange")).length&&(n=new cn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Vn=null,Qn=null;function Kn(e){Mr(e,0)}function Yn(e){if(Q(xo(e)))return e}function Gn(e,t){if("change"===e)return t}var Xn=!1;if(c){var Jn;if(c){var Zn="oninput"in document;if(!Zn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Zn="function"==typeof er.oninput}Jn=Zn}else Jn=!1;Xn=Jn&&(!document.documentMode||9<document.documentMode)}function tr(){Vn&&(Vn.detachEvent("onpropertychange",nr),Qn=Vn=null)}function nr(e){if("value"===e.propertyName&&Yn(Qn)){var t=[];Hn(t,Qn,e,xe(e)),Le(Kn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Qn=n,(Vn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function or(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Yn(Qn)}function ar(e,t){if("click"===e)return Yn(t)}function ir(e,t){if("input"===e||"change"===e)return Yn(t)}var lr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function ur(e,t){if(lr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var o=n[r];if(!f.call(t,o)||!lr(e[o],t[o]))return!1}return!0}function sr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function cr(e,t){var n,r=sr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=sr(r)}}function fr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?fr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function dr(){for(var e=window,t=K();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=K((e=t.contentWindow).document)}return t}function pr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function mr(e){var t=dr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&fr(n.ownerDocument.documentElement,n)){if(null!==r&&pr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var o=n.textContent.length,a=Math.min(r.start,o);r=void 0===r.end?a:Math.min(r.end,o),!e.extend&&a>r&&(o=r,r=a,a=o),o=cr(n,a);var i=cr(n,r);o&&i&&(1!==e.rangeCount||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(o.node,o.offset),e.removeAllRanges(),a>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var hr=c&&"documentMode"in document&&11>=document.documentMode,vr=null,gr=null,yr=null,br=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;br||null==vr||vr!==K(r)||(r="selectionStart"in(r=vr)&&pr(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},yr&&ur(yr,r)||(yr=r,0<(r=Vr(gr,"onSelect")).length&&(t=new cn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=vr)))}function xr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Er={animationend:xr("Animation","AnimationEnd"),animationiteration:xr("Animation","AnimationIteration"),animationstart:xr("Animation","AnimationStart"),transitionend:xr("Transition","TransitionEnd")},kr={},Cr={};function Sr(e){if(kr[e])return kr[e];if(!Er[e])return e;var t,n=Er[e];for(t in n)if(n.hasOwnProperty(t)&&t in Cr)return kr[e]=n[t];return e}c&&(Cr=document.createElement("div").style,"AnimationEvent"in window||(delete Er.animationend.animation,delete Er.animationiteration.animation,delete Er.animationstart.animation),"TransitionEvent"in window||delete Er.transitionend.transition);var Ar=Sr("animationend"),Nr=Sr("animationiteration"),Or=Sr("animationstart"),Tr=Sr("transitionend"),Pr=new Map,Lr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function _r(e,t){Pr.set(e,t),u(t,[e])}for(var jr=0;jr<Lr.length;jr++){var Rr=Lr[jr];_r(Rr.toLowerCase(),"on"+(Rr[0].toUpperCase()+Rr.slice(1)))}_r(Ar,"onAnimationEnd"),_r(Nr,"onAnimationIteration"),_r(Or,"onAnimationStart"),_r("dblclick","onDoubleClick"),_r("focusin","onFocus"),_r("focusout","onBlur"),_r(Tr,"onTransitionEnd"),s("onMouseEnter",["mouseout","mouseover"]),s("onMouseLeave",["mouseout","mouseover"]),s("onPointerEnter",["pointerout","pointerover"]),s("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Dr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Ir=new Set("cancel close invalid load scroll toggle".split(" ").concat(Dr));function Fr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,o,i,l,u,s){if($e.apply(this,arguments),Ie){if(!Ie)throw Error(a(198));var c=Fe;Ie=!1,Fe=null,Me||(Me=!0,ze=c)}}(r,t,void 0,e),e.currentTarget=null}function Mr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var a=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],u=l.instance,s=l.currentTarget;if(l=l.listener,u!==a&&o.isPropagationStopped())break e;Fr(o,l,s),a=u}else for(i=0;i<r.length;i++){if(u=(l=r[i]).instance,s=l.currentTarget,l=l.listener,u!==a&&o.isPropagationStopped())break e;Fr(o,l,s),a=u}}}if(Me)throw e=ze,Me=!1,ze=null,e}function zr(e,t){var n=t[vo];void 0===n&&(n=t[vo]=new Set);var r=e+"__bubble";n.has(r)||(Ur(t,e,2,!1),n.add(r))}function qr(e,t,n){var r=0;t&&(r|=4),Ur(n,e,r,t)}var $r="_reactListening"+Math.random().toString(36).slice(2);function Br(e){if(!e[$r]){e[$r]=!0,i.forEach((function(t){"selectionchange"!==t&&(Ir.has(t)||qr(t,!1,e),qr(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[$r]||(t[$r]=!0,qr("selectionchange",!1,t))}}function Ur(e,t,n,r){switch(Gt(t)){case 1:var o=Ht;break;case 4:o=Vt;break;default:o=Qt}n=o.bind(null,t,n,e),o=void 0,!je||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(o=!0),r?void 0!==o?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):void 0!==o?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function Wr(e,t,n,r,o){var a=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===o||8===l.nodeType&&l.parentNode===o)break;if(4===i)for(i=r.return;null!==i;){var u=i.tag;if((3===u||4===u)&&((u=i.stateNode.containerInfo)===o||8===u.nodeType&&u.parentNode===o))return;i=i.return}for(;null!==l;){if(null===(i=bo(l)))return;if(5===(u=i.tag)||6===u){r=a=i;continue e}l=l.parentNode}}r=r.return}Le((function(){var r=a,o=xe(n),i=[];e:{var l=Pr.get(e);if(void 0!==l){var u=cn,s=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":u=Nn;break;case"focusin":s="focus",u=vn;break;case"focusout":s="blur",u=vn;break;case"beforeblur":case"afterblur":u=vn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":u=mn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":u=hn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":u=Tn;break;case Ar:case Nr:case Or:u=gn;break;case Tr:u=Pn;break;case"scroll":u=dn;break;case"wheel":u=_n;break;case"copy":case"cut":case"paste":u=bn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":u=On}var c=0!=(4&t),f=!c&&"scroll"===e,d=c?null!==l?l+"Capture":null:l;c=[];for(var p,m=r;null!==m;){var h=(p=m).stateNode;if(5===p.tag&&null!==h&&(p=h,null!==d&&null!=(h=_e(m,d))&&c.push(Hr(m,h,p))),f)break;m=m.return}0<c.length&&(l=new u(l,s,null,n,o),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(u="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||n===we||!(s=n.relatedTarget||n.fromElement)||!bo(s)&&!s[ho])&&(u||l)&&(l=o.window===o?o:(l=o.ownerDocument)?l.defaultView||l.parentWindow:window,u?(u=r,null!==(s=(s=n.relatedTarget||n.toElement)?bo(s):null)&&(s!==(f=Be(s))||5!==s.tag&&6!==s.tag)&&(s=null)):(u=null,s=r),u!==s)){if(c=mn,h="onMouseLeave",d="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=On,h="onPointerLeave",d="onPointerEnter",m="pointer"),f=null==u?l:xo(u),p=null==s?l:xo(s),(l=new c(h,m+"leave",u,n,o)).target=f,l.relatedTarget=p,h=null,bo(o)===r&&((c=new c(d,m+"enter",s,n,o)).target=p,c.relatedTarget=f,h=c),f=h,u&&s)e:{for(d=s,m=0,p=c=u;p;p=Qr(p))m++;for(p=0,h=d;h;h=Qr(h))p++;for(;0<m-p;)c=Qr(c),m--;for(;0<p-m;)d=Qr(d),p--;for(;m--;){if(c===d||null!==d&&c===d.alternate)break e;c=Qr(c),d=Qr(d)}c=null}else c=null;null!==u&&Kr(i,l,u,c,!1),null!==s&&null!==f&&Kr(i,f,s,c,!0)}if("select"===(u=(l=r?xo(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===u&&"file"===l.type)var v=Gn;else if(Wn(l))if(Xn)v=ir;else{v=or;var g=rr}else(u=l.nodeName)&&"input"===u.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(v=ar);switch(v&&(v=v(e,r))?Hn(i,v,n,o):(g&&g(e,l,r),"focusout"===e&&(g=l._wrapperState)&&g.controlled&&"number"===l.type&&ee(l,"number",l.value)),g=r?xo(r):window,e){case"focusin":(Wn(g)||"true"===g.contentEditable)&&(vr=g,gr=r,yr=null);break;case"focusout":yr=gr=vr=null;break;case"mousedown":br=!0;break;case"contextmenu":case"mouseup":case"dragend":br=!1,wr(i,n,o);break;case"selectionchange":if(hr)break;case"keydown":case"keyup":wr(i,n,o)}var y;if(Rn)e:{switch(e){case"compositionstart":var b="onCompositionStart";break e;case"compositionend":b="onCompositionEnd";break e;case"compositionupdate":b="onCompositionUpdate";break e}b=void 0}else Bn?qn(e,n)&&(b="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(b="onCompositionStart");b&&(Fn&&"ko"!==n.locale&&(Bn||"onCompositionStart"!==b?"onCompositionEnd"===b&&Bn&&(y=en()):(Jt="value"in(Xt=o)?Xt.value:Xt.textContent,Bn=!0)),0<(g=Vr(r,b)).length&&(b=new wn(b,e,null,n,o),i.push({event:b,listeners:g}),(y||null!==(y=$n(n)))&&(b.data=y))),(y=In?function(e,t){switch(e){case"compositionend":return $n(t);case"keypress":return 32!==t.which?null:(zn=!0,Mn);case"textInput":return(e=t.data)===Mn&&zn?null:e;default:return null}}(e,n):function(e,t){if(Bn)return"compositionend"===e||!Rn&&qn(e,t)?(e=en(),Zt=Jt=Xt=null,Bn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Fn&&"ko"!==t.locale?null:t.data}}(e,n))&&0<(r=Vr(r,"onBeforeInput")).length&&(o=new wn("onBeforeInput","beforeinput",null,n,o),i.push({event:o,listeners:r}),o.data=y)}Mr(i,t)}))}function Hr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Vr(e,t){for(var n=t+"Capture",r=[];null!==e;){var o=e,a=o.stateNode;5===o.tag&&null!==a&&(o=a,null!=(a=_e(e,n))&&r.unshift(Hr(e,a,o)),null!=(a=_e(e,t))&&r.push(Hr(e,a,o))),e=e.return}return r}function Qr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Kr(e,t,n,r,o){for(var a=t._reactName,i=[];null!==n&&n!==r;){var l=n,u=l.alternate,s=l.stateNode;if(null!==u&&u===r)break;5===l.tag&&null!==s&&(l=s,o?null!=(u=_e(n,a))&&i.unshift(Hr(n,u,l)):o||null!=(u=_e(n,a))&&i.push(Hr(n,u,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var Yr=/\\r\\n?/g,Gr=/\\u0000|\\uFFFD/g;function Xr(e){return("string"==typeof e?e:""+e).replace(Yr,"\\n").replace(Gr,"")}function Jr(e,t,n){if(t=Xr(t),Xr(e)!==t&&n)throw Error(a(425))}function Zr(){}var eo=null,to=null;function no(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ro="function"==typeof setTimeout?setTimeout:void 0,oo="function"==typeof clearTimeout?clearTimeout:void 0,ao="function"==typeof Promise?Promise:void 0,io="function"==typeof queueMicrotask?queueMicrotask:void 0!==ao?function(e){return ao.resolve(null).then(e).catch(lo)}:ro;function lo(e){setTimeout((function(){throw e}))}function uo(e,t){var n=t,r=0;do{var o=n.nextSibling;if(e.removeChild(n),o&&8===o.nodeType)if("/$"===(n=o.data)){if(0===r)return e.removeChild(o),void Bt(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=o}while(n);Bt(t)}function so(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function co(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var fo=Math.random().toString(36).slice(2),po="__reactFiber$"+fo,mo="__reactProps$"+fo,ho="__reactContainer$"+fo,vo="__reactEvents$"+fo,go="__reactListeners$"+fo,yo="__reactHandles$"+fo;function bo(e){var t=e[po];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ho]||n[po]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=co(e);null!==e;){if(n=e[po])return n;e=co(e)}return t}n=(e=n).parentNode}return null}function wo(e){return!(e=e[po]||e[ho])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function xo(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function Eo(e){return e[mo]||null}var ko=[],Co=-1;function So(e){return{current:e}}function Ao(e){0>Co||(e.current=ko[Co],ko[Co]=null,Co--)}function No(e,t){Co++,ko[Co]=e.current,e.current=t}var Oo={},To=So(Oo),Po=So(!1),Lo=Oo;function _o(e,t){var n=e.type.contextTypes;if(!n)return Oo;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function jo(e){return null!=e.childContextTypes}function Ro(){Ao(Po),Ao(To)}function Do(e,t,n){if(To.current!==Oo)throw Error(a(168));No(To,t),No(Po,n)}function Io(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in t))throw Error(a(108,U(e)||"Unknown",o));return F({},n,r)}function Fo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Oo,Lo=To.current,No(To,e),No(Po,Po.current),!0}function Mo(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=Io(e,t,Lo),r.__reactInternalMemoizedMergedChildContext=e,Ao(Po),Ao(To),No(To,e)):Ao(Po),No(Po,n)}var zo=null,qo=!1,$o=!1;function Bo(e){null===zo?zo=[e]:zo.push(e)}function Uo(){if(!$o&&null!==zo){$o=!0;var e=0,t=bt;try{var n=zo;for(bt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}zo=null,qo=!1}catch(t){throw null!==zo&&(zo=zo.slice(e+1)),Qe(Ze,Uo),t}finally{bt=t,$o=!1}}return null}var Wo=[],Ho=0,Vo=null,Qo=0,Ko=[],Yo=0,Go=null,Xo=1,Jo="";function Zo(e,t){Wo[Ho++]=Qo,Wo[Ho++]=Vo,Vo=e,Qo=t}function ea(e,t,n){Ko[Yo++]=Xo,Ko[Yo++]=Jo,Ko[Yo++]=Go,Go=e;var r=Xo;e=Jo;var o=32-it(r)-1;r&=~(1<<o),n+=1;var a=32-it(t)+o;if(30<a){var i=o-o%5;a=(r&(1<<i)-1).toString(32),r>>=i,o-=i,Xo=1<<32-it(t)+o|n<<o|r,Jo=a+e}else Xo=1<<a|n<<o|r,Jo=e}function ta(e){null!==e.return&&(Zo(e,1),ea(e,1,0))}function na(e){for(;e===Vo;)Vo=Wo[--Ho],Wo[Ho]=null,Qo=Wo[--Ho],Wo[Ho]=null;for(;e===Go;)Go=Ko[--Yo],Ko[Yo]=null,Jo=Ko[--Yo],Ko[Yo]=null,Xo=Ko[--Yo],Ko[Yo]=null}var ra=null,oa=null,aa=!1,ia=null;function la(e,t){var n=_s(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function ua(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,ra=e,oa=so(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,ra=e,oa=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Go?{id:Xo,overflow:Jo}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=_s(18,null,null,0)).stateNode=t,n.return=e,e.child=n,ra=e,oa=null,!0);default:return!1}}function sa(e){return 0!=(1&e.mode)&&0==(128&e.flags)}function ca(e){if(aa){var t=oa;if(t){var n=t;if(!ua(e,t)){if(sa(e))throw Error(a(418));t=so(n.nextSibling);var r=ra;t&&ua(e,t)?la(r,n):(e.flags=-4097&e.flags|2,aa=!1,ra=e)}}else{if(sa(e))throw Error(a(418));e.flags=-4097&e.flags|2,aa=!1,ra=e}}}function fa(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;ra=e}function da(e){if(e!==ra)return!1;if(!aa)return fa(e),aa=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!no(e.type,e.memoizedProps)),t&&(t=oa)){if(sa(e))throw pa(),Error(a(418));for(;t;)la(e,t),t=so(t.nextSibling)}if(fa(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){oa=so(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}oa=null}}else oa=ra?so(e.stateNode.nextSibling):null;return!0}function pa(){for(var e=oa;e;)e=so(e.nextSibling)}function ma(){oa=ra=null,aa=!1}function ha(e){null===ia?ia=[e]:ia.push(e)}var va=w.ReactCurrentBatchConfig;function ga(e,t){if(e&&e.defaultProps){for(var n in t=F({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var ya=So(null),ba=null,wa=null,xa=null;function Ea(){xa=wa=ba=null}function ka(e){var t=ya.current;Ao(ya),e._currentValue=t}function Ca(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Sa(e,t){ba=e,xa=wa=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(wl=!0),e.firstContext=null)}function Aa(e){var t=e._currentValue;if(xa!==e)if(e={context:e,memoizedValue:t,next:null},null===wa){if(null===ba)throw Error(a(308));wa=e,ba.dependencies={lanes:0,firstContext:e}}else wa=wa.next=e;return t}var Na=null;function Oa(e){null===Na?Na=[e]:Na.push(e)}function Ta(e,t,n,r){var o=t.interleaved;return null===o?(n.next=n,Oa(t)):(n.next=o.next,o.next=n),t.interleaved=n,Pa(e,r)}function Pa(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var La=!1;function _a(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function ja(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ra(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Da(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&Tu)){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,Pa(e,n)}return null===(o=r.interleaved)?(t.next=t,Oa(r)):(t.next=o.next,o.next=t),r.interleaved=t,Pa(e,n)}function Ia(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194240&n))){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,yt(e,n)}}function Fa(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Ma(e,t,n,r){var o=e.updateQueue;La=!1;var a=o.firstBaseUpdate,i=o.lastBaseUpdate,l=o.shared.pending;if(null!==l){o.shared.pending=null;var u=l,s=u.next;u.next=null,null===i?a=s:i.next=s,i=u;var c=e.alternate;null!==c&&(l=(c=c.updateQueue).lastBaseUpdate)!==i&&(null===l?c.firstBaseUpdate=s:l.next=s,c.lastBaseUpdate=u)}if(null!==a){var f=o.baseState;for(i=0,c=s=u=null,l=a;;){var d=l.lane,p=l.eventTime;if((r&d)===d){null!==c&&(c=c.next={eventTime:p,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var m=e,h=l;switch(d=t,p=n,h.tag){case 1:if("function"==typeof(m=h.payload)){f=m.call(p,f,d);break e}f=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(d="function"==typeof(m=h.payload)?m.call(p,f,d):m))break e;f=F({},f,d);break e;case 2:La=!0}}null!==l.callback&&0!==l.lane&&(e.flags|=64,null===(d=o.effects)?o.effects=[l]:d.push(l))}else p={eventTime:p,lane:d,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===c?(s=c=p,u=f):c=c.next=p,i|=d;if(null===(l=l.next)){if(null===(l=o.shared.pending))break;l=(d=l).next,d.next=null,o.lastBaseUpdate=d,o.shared.pending=null}}if(null===c&&(u=f),o.baseState=u,o.firstBaseUpdate=s,o.lastBaseUpdate=c,null!==(t=o.shared.interleaved)){o=t;do{i|=o.lane,o=o.next}while(o!==t)}else null===a&&(o.shared.lanes=0);Fu|=i,e.lanes=i,e.memoizedState=f}}function za(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=n,"function"!=typeof o)throw Error(a(191,o));o.call(r)}}}var qa=(new r.Component).refs;function $a(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:F({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var Ba={isMounted:function(e){return!!(e=e._reactInternals)&&Be(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=ts(),o=ns(e),a=Ra(r,o);a.payload=t,null!=n&&(a.callback=n),null!==(t=Da(e,a,o))&&(rs(t,e,o,r),Ia(t,e,o))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=ts(),o=ns(e),a=Ra(r,o);a.tag=1,a.payload=t,null!=n&&(a.callback=n),null!==(t=Da(e,a,o))&&(rs(t,e,o,r),Ia(t,e,o))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ts(),r=ns(e),o=Ra(n,r);o.tag=2,null!=t&&(o.callback=t),null!==(t=Da(e,o,r))&&(rs(t,e,r,n),Ia(t,e,r))}};function Ua(e,t,n,r,o,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!(t.prototype&&t.prototype.isPureReactComponent&&ur(n,r)&&ur(o,a))}function Wa(e,t,n){var r=!1,o=Oo,a=t.contextType;return"object"==typeof a&&null!==a?a=Aa(a):(o=jo(t)?Lo:To.current,a=(r=null!=(r=t.contextTypes))?_o(e,o):Oo),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=Ba,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=a),t}function Ha(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Ba.enqueueReplaceState(t,t.state,null)}function Va(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=qa,_a(e);var a=t.contextType;"object"==typeof a&&null!==a?o.context=Aa(a):(a=jo(t)?Lo:To.current,o.context=_o(e,a)),o.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&&($a(e,t,a,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&Ba.enqueueReplaceState(o,o.state,null),Ma(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&&(e.flags|=4194308)}function Qa(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(a(309));var r=n.stateNode}if(!r)throw Error(a(147,e));var o=r,i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=o.refs;t===qa&&(t=o.refs={}),null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function Ka(e,t){throw e=Object.prototype.toString.call(t),Error(a(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Ya(e){return(0,e._init)(e._payload)}function Ga(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t){return(e=Rs(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function l(t){return e&&null===t.alternate&&(t.flags|=2),t}function u(e,t,n,r){return null===t||6!==t.tag?((t=Ms(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function s(e,t,n,r){var a=n.type;return a===k?f(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===a||"object"==typeof a&&null!==a&&a.$$typeof===_&&Ya(a)===t.type)?((r=o(t,n.props)).ref=Qa(e,t,n),r.return=e,r):((r=Ds(n.type,n.key,n.props,null,e.mode,r)).ref=Qa(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=zs(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function f(e,t,n,r,a){return null===t||7!==t.tag?((t=Is(n,e.mode,r,a)).return=e,t):((t=o(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Ms(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case x:return(n=Ds(t.type,t.key,t.props,null,e.mode,n)).ref=Qa(e,null,t),n.return=e,n;case E:return(t=zs(t,e.mode,n)).return=e,t;case _:return d(e,(0,t._init)(t._payload),n)}if(te(t)||D(t))return(t=Is(t,e.mode,n,null)).return=e,t;Ka(e,t)}return null}function p(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==o?null:u(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case x:return n.key===o?s(e,t,n,r):null;case E:return n.key===o?c(e,t,n,r):null;case _:return p(e,t,(o=n._init)(n._payload),r)}if(te(n)||D(n))return null!==o?null:f(e,t,n,r,null);Ka(e,n)}return null}function m(e,t,n,r,o){if("string"==typeof r&&""!==r||"number"==typeof r)return u(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case x:return s(t,e=e.get(null===r.key?n:r.key)||null,r,o);case E:return c(t,e=e.get(null===r.key?n:r.key)||null,r,o);case _:return m(e,t,n,(0,r._init)(r._payload),o)}if(te(r)||D(r))return f(t,e=e.get(n)||null,r,o,null);Ka(t,r)}return null}function h(o,a,l,u){for(var s=null,c=null,f=a,h=a=0,v=null;null!==f&&h<l.length;h++){f.index>h?(v=f,f=null):v=f.sibling;var g=p(o,f,l[h],u);if(null===g){null===f&&(f=v);break}e&&f&&null===g.alternate&&t(o,f),a=i(g,a,h),null===c?s=g:c.sibling=g,c=g,f=v}if(h===l.length)return n(o,f),aa&&Zo(o,h),s;if(null===f){for(;h<l.length;h++)null!==(f=d(o,l[h],u))&&(a=i(f,a,h),null===c?s=f:c.sibling=f,c=f);return aa&&Zo(o,h),s}for(f=r(o,f);h<l.length;h++)null!==(v=m(f,o,h,l[h],u))&&(e&&null!==v.alternate&&f.delete(null===v.key?h:v.key),a=i(v,a,h),null===c?s=v:c.sibling=v,c=v);return e&&f.forEach((function(e){return t(o,e)})),aa&&Zo(o,h),s}function v(o,l,u,s){var c=D(u);if("function"!=typeof c)throw Error(a(150));if(null==(u=c.call(u)))throw Error(a(151));for(var f=c=null,h=l,v=l=0,g=null,y=u.next();null!==h&&!y.done;v++,y=u.next()){h.index>v?(g=h,h=null):g=h.sibling;var b=p(o,h,y.value,s);if(null===b){null===h&&(h=g);break}e&&h&&null===b.alternate&&t(o,h),l=i(b,l,v),null===f?c=b:f.sibling=b,f=b,h=g}if(y.done)return n(o,h),aa&&Zo(o,v),c;if(null===h){for(;!y.done;v++,y=u.next())null!==(y=d(o,y.value,s))&&(l=i(y,l,v),null===f?c=y:f.sibling=y,f=y);return aa&&Zo(o,v),c}for(h=r(o,h);!y.done;v++,y=u.next())null!==(y=m(h,o,v,y.value,s))&&(e&&null!==y.alternate&&h.delete(null===y.key?v:y.key),l=i(y,l,v),null===f?c=y:f.sibling=y,f=y);return e&&h.forEach((function(e){return t(o,e)})),aa&&Zo(o,v),c}return function e(r,a,i,u){if("object"==typeof i&&null!==i&&i.type===k&&null===i.key&&(i=i.props.children),"object"==typeof i&&null!==i){switch(i.$$typeof){case x:e:{for(var s=i.key,c=a;null!==c;){if(c.key===s){if((s=i.type)===k){if(7===c.tag){n(r,c.sibling),(a=o(c,i.props.children)).return=r,r=a;break e}}else if(c.elementType===s||"object"==typeof s&&null!==s&&s.$$typeof===_&&Ya(s)===c.type){n(r,c.sibling),(a=o(c,i.props)).ref=Qa(r,c,i),a.return=r,r=a;break e}n(r,c);break}t(r,c),c=c.sibling}i.type===k?((a=Is(i.props.children,r.mode,u,i.key)).return=r,r=a):((u=Ds(i.type,i.key,i.props,null,r.mode,u)).ref=Qa(r,a,i),u.return=r,r=u)}return l(r);case E:e:{for(c=i.key;null!==a;){if(a.key===c){if(4===a.tag&&a.stateNode.containerInfo===i.containerInfo&&a.stateNode.implementation===i.implementation){n(r,a.sibling),(a=o(a,i.children||[])).return=r,r=a;break e}n(r,a);break}t(r,a),a=a.sibling}(a=zs(i,r.mode,u)).return=r,r=a}return l(r);case _:return e(r,a,(c=i._init)(i._payload),u)}if(te(i))return h(r,a,i,u);if(D(i))return v(r,a,i,u);Ka(r,i)}return"string"==typeof i&&""!==i||"number"==typeof i?(i=""+i,null!==a&&6===a.tag?(n(r,a.sibling),(a=o(a,i)).return=r,r=a):(n(r,a),(a=Ms(i,r.mode,u)).return=r,r=a),l(r)):n(r,a)}}var Xa=Ga(!0),Ja=Ga(!1),Za={},ei=So(Za),ti=So(Za),ni=So(Za);function ri(e){if(e===Za)throw Error(a(174));return e}function oi(e,t){switch(No(ni,t),No(ti,e),No(ei,Za),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:ue(null,"");break;default:t=ue(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}Ao(ei),No(ei,t)}function ai(){Ao(ei),Ao(ti),Ao(ni)}function ii(e){ri(ni.current);var t=ri(ei.current),n=ue(t,e.type);t!==n&&(No(ti,e),No(ei,n))}function li(e){ti.current===e&&(Ao(ei),Ao(ti))}var ui=So(0);function si(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ci=[];function fi(){for(var e=0;e<ci.length;e++)ci[e]._workInProgressVersionPrimary=null;ci.length=0}var di=w.ReactCurrentDispatcher,pi=w.ReactCurrentBatchConfig,mi=0,hi=null,vi=null,gi=null,yi=!1,bi=!1,wi=0,xi=0;function Ei(){throw Error(a(321))}function ki(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!lr(e[n],t[n]))return!1;return!0}function Ci(e,t,n,r,o,i){if(mi=i,hi=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,di.current=null===e||null===e.memoizedState?ll:ul,e=n(r,o),bi){i=0;do{if(bi=!1,wi=0,25<=i)throw Error(a(301));i+=1,gi=vi=null,t.updateQueue=null,di.current=sl,e=n(r,o)}while(bi)}if(di.current=il,t=null!==vi&&null!==vi.next,mi=0,gi=vi=hi=null,yi=!1,t)throw Error(a(300));return e}function Si(){var e=0!==wi;return wi=0,e}function Ai(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===gi?hi.memoizedState=gi=e:gi=gi.next=e,gi}function Ni(){if(null===vi){var e=hi.alternate;e=null!==e?e.memoizedState:null}else e=vi.next;var t=null===gi?hi.memoizedState:gi.next;if(null!==t)gi=t,vi=e;else{if(null===e)throw Error(a(310));e={memoizedState:(vi=e).memoizedState,baseState:vi.baseState,baseQueue:vi.baseQueue,queue:vi.queue,next:null},null===gi?hi.memoizedState=gi=e:gi=gi.next=e}return gi}function Oi(e,t){return"function"==typeof t?t(e):t}function Ti(e){var t=Ni(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=vi,o=r.baseQueue,i=n.pending;if(null!==i){if(null!==o){var l=o.next;o.next=i.next,i.next=l}r.baseQueue=o=i,n.pending=null}if(null!==o){i=o.next,r=r.baseState;var u=l=null,s=null,c=i;do{var f=c.lane;if((mi&f)===f)null!==s&&(s=s.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),r=c.hasEagerState?c.eagerState:e(r,c.action);else{var d={lane:f,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};null===s?(u=s=d,l=r):s=s.next=d,hi.lanes|=f,Fu|=f}c=c.next}while(null!==c&&c!==i);null===s?l=r:s.next=u,lr(r,t.memoizedState)||(wl=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=s,n.lastRenderedState=r}if(null!==(e=n.interleaved)){o=e;do{i=o.lane,hi.lanes|=i,Fu|=i,o=o.next}while(o!==e)}else null===o&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Pi(e){var t=Ni(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,i=t.memoizedState;if(null!==o){n.pending=null;var l=o=o.next;do{i=e(i,l.action),l=l.next}while(l!==o);lr(i,t.memoizedState)||(wl=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function Li(){}function _i(e,t){var n=hi,r=Ni(),o=t(),i=!lr(r.memoizedState,o);if(i&&(r.memoizedState=o,wl=!0),r=r.queue,Wi(Di.bind(null,n,r,e),[e]),r.getSnapshot!==t||i||null!==gi&&1&gi.memoizedState.tag){if(n.flags|=2048,zi(9,Ri.bind(null,n,r,o,t),void 0,null),null===Pu)throw Error(a(349));0!=(30&mi)||ji(n,t,o)}return o}function ji(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=hi.updateQueue)?(t={lastEffect:null,stores:null},hi.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Ri(e,t,n,r){t.value=n,t.getSnapshot=r,Ii(t)&&Fi(e)}function Di(e,t,n){return n((function(){Ii(t)&&Fi(e)}))}function Ii(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!lr(e,n)}catch(e){return!0}}function Fi(e){var t=Pa(e,1);null!==t&&rs(t,e,1,-1)}function Mi(e){var t=Ai();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Oi,lastRenderedState:e},t.queue=e,e=e.dispatch=nl.bind(null,hi,e),[t.memoizedState,e]}function zi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=hi.updateQueue)?(t={lastEffect:null,stores:null},hi.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function qi(){return Ni().memoizedState}function $i(e,t,n,r){var o=Ai();hi.flags|=e,o.memoizedState=zi(1|t,n,void 0,void 0===r?null:r)}function Bi(e,t,n,r){var o=Ni();r=void 0===r?null:r;var a=void 0;if(null!==vi){var i=vi.memoizedState;if(a=i.destroy,null!==r&&ki(r,i.deps))return void(o.memoizedState=zi(t,n,a,r))}hi.flags|=e,o.memoizedState=zi(1|t,n,a,r)}function Ui(e,t){return $i(8390656,8,e,t)}function Wi(e,t){return Bi(2048,8,e,t)}function Hi(e,t){return Bi(4,2,e,t)}function Vi(e,t){return Bi(4,4,e,t)}function Qi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Ki(e,t,n){return n=null!=n?n.concat([e]):null,Bi(4,4,Qi.bind(null,t,e),n)}function Yi(){}function Gi(e,t){var n=Ni();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ki(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Xi(e,t){var n=Ni();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ki(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Ji(e,t,n){return 0==(21&mi)?(e.baseState&&(e.baseState=!1,wl=!0),e.memoizedState=n):(lr(n,t)||(n=ht(),hi.lanes|=n,Fu|=n,e.baseState=!0),t)}function Zi(e,t){var n=bt;bt=0!==n&&4>n?n:4,e(!0);var r=pi.transition;pi.transition={};try{e(!1),t()}finally{bt=n,pi.transition=r}}function el(){return Ni().memoizedState}function tl(e,t,n){var r=ns(e);n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},rl(e)?ol(t,n):null!==(n=Ta(e,t,n,r))&&(rs(n,e,r,ts()),al(n,t,r))}function nl(e,t,n){var r=ns(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(rl(e))ol(t,o);else{var a=e.alternate;if(0===e.lanes&&(null===a||0===a.lanes)&&null!==(a=t.lastRenderedReducer))try{var i=t.lastRenderedState,l=a(i,n);if(o.hasEagerState=!0,o.eagerState=l,lr(l,i)){var u=t.interleaved;return null===u?(o.next=o,Oa(t)):(o.next=u.next,u.next=o),void(t.interleaved=o)}}catch(e){}null!==(n=Ta(e,t,o,r))&&(rs(n,e,r,o=ts()),al(n,t,r))}}function rl(e){var t=e.alternate;return e===hi||null!==t&&t===hi}function ol(e,t){bi=yi=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function al(e,t,n){if(0!=(4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,yt(e,n)}}var il={readContext:Aa,useCallback:Ei,useContext:Ei,useEffect:Ei,useImperativeHandle:Ei,useInsertionEffect:Ei,useLayoutEffect:Ei,useMemo:Ei,useReducer:Ei,useRef:Ei,useState:Ei,useDebugValue:Ei,useDeferredValue:Ei,useTransition:Ei,useMutableSource:Ei,useSyncExternalStore:Ei,useId:Ei,unstable_isNewReconciler:!1},ll={readContext:Aa,useCallback:function(e,t){return Ai().memoizedState=[e,void 0===t?null:t],e},useContext:Aa,useEffect:Ui,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,$i(4194308,4,Qi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return $i(4194308,4,e,t)},useInsertionEffect:function(e,t){return $i(4,2,e,t)},useMemo:function(e,t){var n=Ai();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ai();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=tl.bind(null,hi,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Ai().memoizedState=e},useState:Mi,useDebugValue:Yi,useDeferredValue:function(e){return Ai().memoizedState=e},useTransition:function(){var e=Mi(!1),t=e[0];return e=Zi.bind(null,e[1]),Ai().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=hi,o=Ai();if(aa){if(void 0===n)throw Error(a(407));n=n()}else{if(n=t(),null===Pu)throw Error(a(349));0!=(30&mi)||ji(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,Ui(Di.bind(null,r,i,e),[e]),r.flags|=2048,zi(9,Ri.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Ai(),t=Pu.identifierPrefix;if(aa){var n=Jo;t=":"+t+"R"+(n=(Xo&~(1<<32-it(Xo)-1)).toString(32)+n),0<(n=wi++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=xi++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},ul={readContext:Aa,useCallback:Gi,useContext:Aa,useEffect:Wi,useImperativeHandle:Ki,useInsertionEffect:Hi,useLayoutEffect:Vi,useMemo:Xi,useReducer:Ti,useRef:qi,useState:function(){return Ti(Oi)},useDebugValue:Yi,useDeferredValue:function(e){return Ji(Ni(),vi.memoizedState,e)},useTransition:function(){return[Ti(Oi)[0],Ni().memoizedState]},useMutableSource:Li,useSyncExternalStore:_i,useId:el,unstable_isNewReconciler:!1},sl={readContext:Aa,useCallback:Gi,useContext:Aa,useEffect:Wi,useImperativeHandle:Ki,useInsertionEffect:Hi,useLayoutEffect:Vi,useMemo:Xi,useReducer:Pi,useRef:qi,useState:function(){return Pi(Oi)},useDebugValue:Yi,useDeferredValue:function(e){var t=Ni();return null===vi?t.memoizedState=e:Ji(t,vi.memoizedState,e)},useTransition:function(){return[Pi(Oi)[0],Ni().memoizedState]},useMutableSource:Li,useSyncExternalStore:_i,useId:el,unstable_isNewReconciler:!1};function cl(e,t){try{var n="",r=t;do{n+=$(r),r=r.return}while(r);var o=n}catch(e){o="\\nError generating stack: "+e.message+"\\n"+e.stack}return{value:e,source:t,stack:o,digest:null}}function fl(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function dl(e,t){try{console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}var pl="function"==typeof WeakMap?WeakMap:Map;function ml(e,t,n){(n=Ra(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hu||(Hu=!0,Vu=r),dl(0,t)},n}function hl(e,t,n){(n=Ra(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){dl(0,t)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){dl(0,t),"function"!=typeof r&&(null===Qu?Qu=new Set([this]):Qu.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function vl(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new pl;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=As.bind(null,e,t,n),t.then(e,e))}function gl(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function yl(e,t,n,r,o){return 0==(1&e.mode)?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=Ra(-1,1)).tag=2,Da(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=o,e)}var bl=w.ReactCurrentOwner,wl=!1;function xl(e,t,n,r){t.child=null===e?Ja(t,null,n,r):Xa(t,e.child,n,r)}function El(e,t,n,r,o){n=n.render;var a=t.ref;return Sa(t,o),r=Ci(e,t,n,r,a,o),n=Si(),null===e||wl?(aa&&n&&ta(t),t.flags|=1,xl(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Hl(e,t,o))}function kl(e,t,n,r,o){if(null===e){var a=n.type;return"function"!=typeof a||js(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Ds(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,Cl(e,t,a,r,o))}if(a=e.child,0==(e.lanes&o)){var i=a.memoizedProps;if((n=null!==(n=n.compare)?n:ur)(i,r)&&e.ref===t.ref)return Hl(e,t,o)}return t.flags|=1,(e=Rs(a,r)).ref=t.ref,e.return=t,t.child=e}function Cl(e,t,n,r,o){if(null!==e){var a=e.memoizedProps;if(ur(a,r)&&e.ref===t.ref){if(wl=!1,t.pendingProps=r=a,0==(e.lanes&o))return t.lanes=e.lanes,Hl(e,t,o);0!=(131072&e.flags)&&(wl=!0)}}return Nl(e,t,n,r,o)}function Sl(e,t,n){var r=t.pendingProps,o=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(0==(1&t.mode))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},No(Ru,ju),ju|=n;else{if(0==(1073741824&n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,No(Ru,ju),ju|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==a?a.baseLanes:n,No(Ru,ju),ju|=r}else null!==a?(r=a.baseLanes|n,t.memoizedState=null):r=n,No(Ru,ju),ju|=r;return xl(e,t,o,n),t.child}function Al(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Nl(e,t,n,r,o){var a=jo(n)?Lo:To.current;return a=_o(t,a),Sa(t,o),n=Ci(e,t,n,r,a,o),r=Si(),null===e||wl?(aa&&r&&ta(t),t.flags|=1,xl(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Hl(e,t,o))}function Ol(e,t,n,r,o){if(jo(n)){var a=!0;Fo(t)}else a=!1;if(Sa(t,o),null===t.stateNode)Wl(e,t),Wa(t,n,r),Va(t,n,r,o),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var u=i.context,s=n.contextType;s="object"==typeof s&&null!==s?Aa(s):_o(t,s=jo(n)?Lo:To.current);var c=n.getDerivedStateFromProps,f="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;f||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||u!==s)&&Ha(t,i,r,s),La=!1;var d=t.memoizedState;i.state=d,Ma(t,r,i,o),u=t.memoizedState,l!==r||d!==u||Po.current||La?("function"==typeof c&&($a(t,n,c,r),u=t.memoizedState),(l=La||Ua(t,n,l,r,d,u,s))?(f||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4194308)):("function"==typeof i.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=u),i.props=r,i.state=u,i.context=s,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,ja(e,t),l=t.memoizedProps,s=t.type===t.elementType?l:ga(t.type,l),i.props=s,f=t.pendingProps,d=i.context,u="object"==typeof(u=n.contextType)&&null!==u?Aa(u):_o(t,u=jo(n)?Lo:To.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==f||d!==u)&&Ha(t,i,r,u),La=!1,d=t.memoizedState,i.state=d,Ma(t,r,i,o);var m=t.memoizedState;l!==f||d!==m||Po.current||La?("function"==typeof p&&($a(t,n,p,r),m=t.memoizedState),(s=La||Ua(t,n,s,r,d,m,u)||!1)?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,u),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,u)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=u,r=s):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),r=!1)}return Tl(e,t,n,r,a,o)}function Tl(e,t,n,r,o,a){Al(e,t);var i=0!=(128&t.flags);if(!r&&!i)return o&&Mo(t,n,!1),Hl(e,t,a);r=t.stateNode,bl.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Xa(t,e.child,null,a),t.child=Xa(t,null,l,a)):xl(e,t,l,a),t.memoizedState=r.state,o&&Mo(t,n,!0),t.child}function Pl(e){var t=e.stateNode;t.pendingContext?Do(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Do(0,t.context,!1),oi(e,t.containerInfo)}function Ll(e,t,n,r,o){return ma(),ha(o),t.flags|=256,xl(e,t,n,r),t.child}var _l,jl,Rl,Dl,Il={dehydrated:null,treeContext:null,retryLane:0};function Fl(e){return{baseLanes:e,cachePool:null,transitions:null}}function Ml(e,t,n){var r,o=t.pendingProps,i=ui.current,l=!1,u=0!=(128&t.flags);if((r=u)||(r=(null===e||null!==e.memoizedState)&&0!=(2&i)),r?(l=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(i|=1),No(ui,1&i),null===e)return ca(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(0==(1&t.mode)?t.lanes=1:"$!"===e.data?t.lanes=8:t.lanes=1073741824,null):(u=o.children,e=o.fallback,l?(o=t.mode,l=t.child,u={mode:"hidden",children:u},0==(1&o)&&null!==l?(l.childLanes=0,l.pendingProps=u):l=Fs(u,o,0,null),e=Is(e,o,n,null),l.return=t,e.return=t,l.sibling=e,t.child=l,t.child.memoizedState=Fl(n),t.memoizedState=Il,e):zl(t,u));if(null!==(i=e.memoizedState)&&null!==(r=i.dehydrated))return function(e,t,n,r,o,i,l){if(n)return 256&t.flags?(t.flags&=-257,ql(e,t,l,r=fl(Error(a(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,o=t.mode,r=Fs({mode:"visible",children:r.children},o,0,null),(i=Is(i,o,l,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,0!=(1&t.mode)&&Xa(t,e.child,null,l),t.child.memoizedState=Fl(l),t.memoizedState=Il,i);if(0==(1&t.mode))return ql(e,t,l,null);if("$!"===o.data){if(r=o.nextSibling&&o.nextSibling.dataset)var u=r.dgst;return r=u,ql(e,t,l,r=fl(i=Error(a(419)),r,void 0))}if(u=0!=(l&e.childLanes),wl||u){if(null!==(r=Pu)){switch(l&-l){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}0!==(o=0!=(o&(r.suspendedLanes|l))?0:o)&&o!==i.retryLane&&(i.retryLane=o,Pa(e,o),rs(r,e,o,-1))}return vs(),ql(e,t,l,r=fl(Error(a(421))))}return"$?"===o.data?(t.flags|=128,t.child=e.child,t=Os.bind(null,e),o._reactRetry=t,null):(e=i.treeContext,oa=so(o.nextSibling),ra=t,aa=!0,ia=null,null!==e&&(Ko[Yo++]=Xo,Ko[Yo++]=Jo,Ko[Yo++]=Go,Xo=e.id,Jo=e.overflow,Go=t),(t=zl(t,r.children)).flags|=4096,t)}(e,t,u,o,r,i,n);if(l){l=o.fallback,u=t.mode,r=(i=e.child).sibling;var s={mode:"hidden",children:o.children};return 0==(1&u)&&t.child!==i?((o=t.child).childLanes=0,o.pendingProps=s,t.deletions=null):(o=Rs(i,s)).subtreeFlags=14680064&i.subtreeFlags,null!==r?l=Rs(r,l):(l=Is(l,u,n,null)).flags|=2,l.return=t,o.return=t,o.sibling=l,t.child=o,o=l,l=t.child,u=null===(u=e.child.memoizedState)?Fl(n):{baseLanes:u.baseLanes|n,cachePool:null,transitions:u.transitions},l.memoizedState=u,l.childLanes=e.childLanes&~n,t.memoizedState=Il,o}return e=(l=e.child).sibling,o=Rs(l,{mode:"visible",children:o.children}),0==(1&t.mode)&&(o.lanes=n),o.return=t,o.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=o,t.memoizedState=null,o}function zl(e,t){return(t=Fs({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function ql(e,t,n,r){return null!==r&&ha(r),Xa(t,e.child,null,n),(e=zl(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function $l(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Ca(e.return,t,n)}function Bl(e,t,n,r,o){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=o)}function Ul(e,t,n){var r=t.pendingProps,o=r.revealOrder,a=r.tail;if(xl(e,t,r.children,n),0!=(2&(r=ui.current)))r=1&r|2,t.flags|=128;else{if(null!==e&&0!=(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&$l(e,n,t);else if(19===e.tag)$l(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(No(ui,r),0==(1&t.mode))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===si(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),Bl(t,!1,o,n,a);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===si(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}Bl(t,!0,n,null,a);break;case"together":Bl(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Wl(e,t){0==(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Hl(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Fu|=t.lanes,0==(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Rs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Rs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Vl(e,t){if(!aa)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Ql(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=14680064&o.subtreeFlags,r|=14680064&o.flags,o.return=e,o=o.sibling;else for(o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Kl(e,t,n){var r=t.pendingProps;switch(na(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Ql(t),null;case 1:case 17:return jo(t.type)&&Ro(),Ql(t),null;case 3:return r=t.stateNode,ai(),Ao(Po),Ao(To),fi(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(da(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&0==(256&t.flags)||(t.flags|=1024,null!==ia&&(ls(ia),ia=null))),jl(e,t),Ql(t),null;case 5:li(t);var o=ri(ni.current);if(n=t.type,null!==e&&null!=t.stateNode)Rl(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(a(166));return Ql(t),null}if(e=ri(ei.current),da(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[po]=t,r[mo]=i,e=0!=(1&t.mode),n){case"dialog":zr("cancel",r),zr("close",r);break;case"iframe":case"object":case"embed":zr("load",r);break;case"video":case"audio":for(o=0;o<Dr.length;o++)zr(Dr[o],r);break;case"source":zr("error",r);break;case"img":case"image":case"link":zr("error",r),zr("load",r);break;case"details":zr("toggle",r);break;case"input":G(r,i),zr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},zr("invalid",r);break;case"textarea":oe(r,i),zr("invalid",r)}for(var u in ye(n,i),o=null,i)if(i.hasOwnProperty(u)){var s=i[u];"children"===u?"string"==typeof s?r.textContent!==s&&(!0!==i.suppressHydrationWarning&&Jr(r.textContent,s,e),o=["children",s]):"number"==typeof s&&r.textContent!==""+s&&(!0!==i.suppressHydrationWarning&&Jr(r.textContent,s,e),o=["children",""+s]):l.hasOwnProperty(u)&&null!=s&&"onScroll"===u&&zr("scroll",r)}switch(n){case"input":V(r),Z(r,i,!0);break;case"textarea":V(r),ie(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(r.onclick=Zr)}r=o,t.updateQueue=r,null!==r&&(t.flags|=4)}else{u=9===o.nodeType?o:o.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=le(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=u.createElement("div")).innerHTML="<script><\\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[po]=t,e[mo]=r,_l(e,t,!1,!1),t.stateNode=e;e:{switch(u=be(n,r),n){case"dialog":zr("cancel",e),zr("close",e),o=r;break;case"iframe":case"object":case"embed":zr("load",e),o=r;break;case"video":case"audio":for(o=0;o<Dr.length;o++)zr(Dr[o],e);o=r;break;case"source":zr("error",e),o=r;break;case"img":case"image":case"link":zr("error",e),zr("load",e),o=r;break;case"details":zr("toggle",e),o=r;break;case"input":G(e,r),o=Y(e,r),zr("invalid",e);break;case"option":default:o=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=F({},r,{value:void 0}),zr("invalid",e);break;case"textarea":oe(e,r),o=re(e,r),zr("invalid",e)}for(i in ye(n,o),s=o)if(s.hasOwnProperty(i)){var c=s[i];"style"===i?ve(e,c):"dangerouslySetInnerHTML"===i?null!=(c=c?c.__html:void 0)&&fe(e,c):"children"===i?"string"==typeof c?("textarea"!==n||""!==c)&&de(e,c):"number"==typeof c&&de(e,""+c):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(l.hasOwnProperty(i)?null!=c&&"onScroll"===i&&zr("scroll",e):null!=c&&b(e,i,c,u))}switch(n){case"input":V(e),Z(e,r,!1);break;case"textarea":V(e),ie(e);break;case"option":null!=r.value&&e.setAttribute("value",""+W(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?ne(e,!!r.multiple,i,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Zr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Ql(t),null;case 6:if(e&&null!=t.stateNode)Dl(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(a(166));if(n=ri(ni.current),ri(ei.current),da(t)){if(r=t.stateNode,n=t.memoizedProps,r[po]=t,(i=r.nodeValue!==n)&&null!==(e=ra))switch(e.tag){case 3:Jr(r.nodeValue,n,0!=(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Jr(r.nodeValue,n,0!=(1&e.mode))}i&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[po]=t,t.stateNode=r}return Ql(t),null;case 13:if(Ao(ui),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(aa&&null!==oa&&0!=(1&t.mode)&&0==(128&t.flags))pa(),ma(),t.flags|=98560,i=!1;else if(i=da(t),null!==r&&null!==r.dehydrated){if(null===e){if(!i)throw Error(a(318));if(!(i=null!==(i=t.memoizedState)?i.dehydrated:null))throw Error(a(317));i[po]=t}else ma(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Ql(t),i=!1}else null!==ia&&(ls(ia),ia=null),i=!0;if(!i)return 65536&t.flags?t:null}return 0!=(128&t.flags)?(t.lanes=n,t):((r=null!==r)!=(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,0!=(1&t.mode)&&(null===e||0!=(1&ui.current)?0===Du&&(Du=3):vs())),null!==t.updateQueue&&(t.flags|=4),Ql(t),null);case 4:return ai(),jl(e,t),null===e&&Br(t.stateNode.containerInfo),Ql(t),null;case 10:return ka(t.type._context),Ql(t),null;case 19:if(Ao(ui),null===(i=t.memoizedState))return Ql(t),null;if(r=0!=(128&t.flags),null===(u=i.rendering))if(r)Vl(i,!1);else{if(0!==Du||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(u=si(e))){for(t.flags|=128,Vl(i,!1),null!==(r=u.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(i=n).flags&=14680066,null===(u=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=u.childLanes,i.lanes=u.lanes,i.child=u.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=u.memoizedProps,i.memoizedState=u.memoizedState,i.updateQueue=u.updateQueue,i.type=u.type,e=u.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return No(ui,1&ui.current|2),t.child}e=e.sibling}null!==i.tail&&Xe()>Uu&&(t.flags|=128,r=!0,Vl(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=si(u))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Vl(i,!0),null===i.tail&&"hidden"===i.tailMode&&!u.alternate&&!aa)return Ql(t),null}else 2*Xe()-i.renderingStartTime>Uu&&1073741824!==n&&(t.flags|=128,r=!0,Vl(i,!1),t.lanes=4194304);i.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=i.last)?n.sibling=u:t.child=u,i.last=u)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Xe(),t.sibling=null,n=ui.current,No(ui,r?1&n|2:1&n),t):(Ql(t),null);case 22:case 23:return ds(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&0!=(1&t.mode)?0!=(1073741824&ju)&&(Ql(t),6&t.subtreeFlags&&(t.flags|=8192)):Ql(t),null;case 24:case 25:return null}throw Error(a(156,t.tag))}function Yl(e,t){switch(na(t),t.tag){case 1:return jo(t.type)&&Ro(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return ai(),Ao(Po),Ao(To),fi(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 5:return li(t),null;case 13:if(Ao(ui),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(a(340));ma()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return Ao(ui),null;case 4:return ai(),null;case 10:return ka(t.type._context),null;case 22:case 23:return ds(),null;default:return null}}_l=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},jl=function(){},Rl=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,ri(ei.current);var a,i=null;switch(n){case"input":o=Y(e,o),r=Y(e,r),i=[];break;case"select":o=F({},o,{value:void 0}),r=F({},r,{value:void 0}),i=[];break;case"textarea":o=re(e,o),r=re(e,r),i=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Zr)}for(c in ye(n,r),n=null,o)if(!r.hasOwnProperty(c)&&o.hasOwnProperty(c)&&null!=o[c])if("style"===c){var u=o[c];for(a in u)u.hasOwnProperty(a)&&(n||(n={}),n[a]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(l.hasOwnProperty(c)?i||(i=[]):(i=i||[]).push(c,null));for(c in r){var s=r[c];if(u=null!=o?o[c]:void 0,r.hasOwnProperty(c)&&s!==u&&(null!=s||null!=u))if("style"===c)if(u){for(a in u)!u.hasOwnProperty(a)||s&&s.hasOwnProperty(a)||(n||(n={}),n[a]="");for(a in s)s.hasOwnProperty(a)&&u[a]!==s[a]&&(n||(n={}),n[a]=s[a])}else n||(i||(i=[]),i.push(c,n)),n=s;else"dangerouslySetInnerHTML"===c?(s=s?s.__html:void 0,u=u?u.__html:void 0,null!=s&&u!==s&&(i=i||[]).push(c,s)):"children"===c?"string"!=typeof s&&"number"!=typeof s||(i=i||[]).push(c,""+s):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(l.hasOwnProperty(c)?(null!=s&&"onScroll"===c&&zr("scroll",e),i||u===s||(i=[])):(i=i||[]).push(c,s))}n&&(i=i||[]).push("style",n);var c=i;(t.updateQueue=c)&&(t.flags|=4)}},Dl=function(e,t,n,r){n!==r&&(t.flags|=4)};var Gl=!1,Xl=!1,Jl="function"==typeof WeakSet?WeakSet:Set,Zl=null;function eu(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(n){Ss(e,t,n)}else n.current=null}function tu(e,t,n){try{n()}catch(n){Ss(e,t,n)}}var nu=!1;function ru(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var o=r=r.next;do{if((o.tag&e)===e){var a=o.destroy;o.destroy=void 0,void 0!==a&&tu(t,n,a)}o=o.next}while(o!==r)}}function ou(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function au(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function iu(e){var t=e.alternate;null!==t&&(e.alternate=null,iu(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&null!==(t=e.stateNode)&&(delete t[po],delete t[mo],delete t[vo],delete t[go],delete t[yo]),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function lu(e){return 5===e.tag||3===e.tag||4===e.tag}function uu(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||lu(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function su(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Zr));else if(4!==r&&null!==(e=e.child))for(su(e,t,n),e=e.sibling;null!==e;)su(e,t,n),e=e.sibling}function cu(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(cu(e,t,n),e=e.sibling;null!==e;)cu(e,t,n),e=e.sibling}var fu=null,du=!1;function pu(e,t,n){for(n=n.child;null!==n;)mu(e,t,n),n=n.sibling}function mu(e,t,n){if(at&&"function"==typeof at.onCommitFiberUnmount)try{at.onCommitFiberUnmount(ot,n)}catch(e){}switch(n.tag){case 5:Xl||eu(n,t);case 6:var r=fu,o=du;fu=null,pu(e,t,n),du=o,null!==(fu=r)&&(du?(e=fu,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):fu.removeChild(n.stateNode));break;case 18:null!==fu&&(du?(e=fu,n=n.stateNode,8===e.nodeType?uo(e.parentNode,n):1===e.nodeType&&uo(e,n),Bt(e)):uo(fu,n.stateNode));break;case 4:r=fu,o=du,fu=n.stateNode.containerInfo,du=!0,pu(e,t,n),fu=r,du=o;break;case 0:case 11:case 14:case 15:if(!Xl&&null!==(r=n.updateQueue)&&null!==(r=r.lastEffect)){o=r=r.next;do{var a=o,i=a.destroy;a=a.tag,void 0!==i&&(0!=(2&a)||0!=(4&a))&&tu(n,t,i),o=o.next}while(o!==r)}pu(e,t,n);break;case 1:if(!Xl&&(eu(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(e){Ss(n,t,e)}pu(e,t,n);break;case 21:pu(e,t,n);break;case 22:1&n.mode?(Xl=(r=Xl)||null!==n.memoizedState,pu(e,t,n),Xl=r):pu(e,t,n);break;default:pu(e,t,n)}}function hu(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Jl),t.forEach((function(t){var r=Ts.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function vu(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var o=n[r];try{var i=e,l=t,u=l;e:for(;null!==u;){switch(u.tag){case 5:fu=u.stateNode,du=!1;break e;case 3:case 4:fu=u.stateNode.containerInfo,du=!0;break e}u=u.return}if(null===fu)throw Error(a(160));mu(i,l,o),fu=null,du=!1;var s=o.alternate;null!==s&&(s.return=null),o.return=null}catch(e){Ss(o,t,e)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)gu(t,e),t=t.sibling}function gu(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(vu(t,e),yu(e),4&r){try{ru(3,e,e.return),ou(3,e)}catch(t){Ss(e,e.return,t)}try{ru(5,e,e.return)}catch(t){Ss(e,e.return,t)}}break;case 1:vu(t,e),yu(e),512&r&&null!==n&&eu(n,n.return);break;case 5:if(vu(t,e),yu(e),512&r&&null!==n&&eu(n,n.return),32&e.flags){var o=e.stateNode;try{de(o,"")}catch(t){Ss(e,e.return,t)}}if(4&r&&null!=(o=e.stateNode)){var i=e.memoizedProps,l=null!==n?n.memoizedProps:i,u=e.type,s=e.updateQueue;if(e.updateQueue=null,null!==s)try{"input"===u&&"radio"===i.type&&null!=i.name&&X(o,i),be(u,l);var c=be(u,i);for(l=0;l<s.length;l+=2){var f=s[l],d=s[l+1];"style"===f?ve(o,d):"dangerouslySetInnerHTML"===f?fe(o,d):"children"===f?de(o,d):b(o,f,d,c)}switch(u){case"input":J(o,i);break;case"textarea":ae(o,i);break;case"select":var p=o._wrapperState.wasMultiple;o._wrapperState.wasMultiple=!!i.multiple;var m=i.value;null!=m?ne(o,!!i.multiple,m,!1):p!==!!i.multiple&&(null!=i.defaultValue?ne(o,!!i.multiple,i.defaultValue,!0):ne(o,!!i.multiple,i.multiple?[]:"",!1))}o[mo]=i}catch(t){Ss(e,e.return,t)}}break;case 6:if(vu(t,e),yu(e),4&r){if(null===e.stateNode)throw Error(a(162));o=e.stateNode,i=e.memoizedProps;try{o.nodeValue=i}catch(t){Ss(e,e.return,t)}}break;case 3:if(vu(t,e),yu(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Bt(t.containerInfo)}catch(t){Ss(e,e.return,t)}break;case 4:default:vu(t,e),yu(e);break;case 13:vu(t,e),yu(e),8192&(o=e.child).flags&&(i=null!==o.memoizedState,o.stateNode.isHidden=i,!i||null!==o.alternate&&null!==o.alternate.memoizedState||(Bu=Xe())),4&r&&hu(e);break;case 22:if(f=null!==n&&null!==n.memoizedState,1&e.mode?(Xl=(c=Xl)||f,vu(t,e),Xl=c):vu(t,e),yu(e),8192&r){if(c=null!==e.memoizedState,(e.stateNode.isHidden=c)&&!f&&0!=(1&e.mode))for(Zl=e,f=e.child;null!==f;){for(d=Zl=f;null!==Zl;){switch(m=(p=Zl).child,p.tag){case 0:case 11:case 14:case 15:ru(4,p,p.return);break;case 1:eu(p,p.return);var h=p.stateNode;if("function"==typeof h.componentWillUnmount){r=p,n=p.return;try{t=r,h.props=t.memoizedProps,h.state=t.memoizedState,h.componentWillUnmount()}catch(e){Ss(r,n,e)}}break;case 5:eu(p,p.return);break;case 22:if(null!==p.memoizedState){Eu(d);continue}}null!==m?(m.return=p,Zl=m):Eu(d)}f=f.sibling}e:for(f=null,d=e;;){if(5===d.tag){if(null===f){f=d;try{o=d.stateNode,c?"function"==typeof(i=o.style).setProperty?i.setProperty("display","none","important"):i.display="none":(u=d.stateNode,l=null!=(s=d.memoizedProps.style)&&s.hasOwnProperty("display")?s.display:null,u.style.display=he("display",l))}catch(t){Ss(e,e.return,t)}}}else if(6===d.tag){if(null===f)try{d.stateNode.nodeValue=c?"":d.memoizedProps}catch(t){Ss(e,e.return,t)}}else if((22!==d.tag&&23!==d.tag||null===d.memoizedState||d===e)&&null!==d.child){d.child.return=d,d=d.child;continue}if(d===e)break e;for(;null===d.sibling;){if(null===d.return||d.return===e)break e;f===d&&(f=null),d=d.return}f===d&&(f=null),d.sibling.return=d.return,d=d.sibling}}break;case 19:vu(t,e),yu(e),4&r&&hu(e);case 21:}}function yu(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(lu(n)){var r=n;break e}n=n.return}throw Error(a(160))}switch(r.tag){case 5:var o=r.stateNode;32&r.flags&&(de(o,""),r.flags&=-33),cu(e,uu(e),o);break;case 3:case 4:var i=r.stateNode.containerInfo;su(e,uu(e),i);break;default:throw Error(a(161))}}catch(t){Ss(e,e.return,t)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function bu(e,t,n){Zl=e,wu(e,t,n)}function wu(e,t,n){for(var r=0!=(1&e.mode);null!==Zl;){var o=Zl,a=o.child;if(22===o.tag&&r){var i=null!==o.memoizedState||Gl;if(!i){var l=o.alternate,u=null!==l&&null!==l.memoizedState||Xl;l=Gl;var s=Xl;if(Gl=i,(Xl=u)&&!s)for(Zl=o;null!==Zl;)u=(i=Zl).child,22===i.tag&&null!==i.memoizedState?ku(o):null!==u?(u.return=i,Zl=u):ku(o);for(;null!==a;)Zl=a,wu(a,t,n),a=a.sibling;Zl=o,Gl=l,Xl=s}xu(e)}else 0!=(8772&o.subtreeFlags)&&null!==a?(a.return=o,Zl=a):xu(e)}}function xu(e){for(;null!==Zl;){var t=Zl;if(0!=(8772&t.flags)){var n=t.alternate;try{if(0!=(8772&t.flags))switch(t.tag){case 0:case 11:case 15:Xl||ou(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Xl)if(null===n)r.componentDidMount();else{var o=t.elementType===t.type?n.memoizedProps:ga(t.type,n.memoizedProps);r.componentDidUpdate(o,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;null!==i&&za(t,i,r);break;case 3:var l=t.updateQueue;if(null!==l){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}za(t,l,n)}break;case 5:var u=t.stateNode;if(null===n&&4&t.flags){n=u;var s=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":s.autoFocus&&n.focus();break;case"img":s.src&&(n.src=s.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var c=t.alternate;if(null!==c){var f=c.memoizedState;if(null!==f){var d=f.dehydrated;null!==d&&Bt(d)}}}break;default:throw Error(a(163))}Xl||512&t.flags&&au(t)}catch(e){Ss(t,t.return,e)}}if(t===e){Zl=null;break}if(null!==(n=t.sibling)){n.return=t.return,Zl=n;break}Zl=t.return}}function Eu(e){for(;null!==Zl;){var t=Zl;if(t===e){Zl=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Zl=n;break}Zl=t.return}}function ku(e){for(;null!==Zl;){var t=Zl;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{ou(4,t)}catch(e){Ss(t,n,e)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var o=t.return;try{r.componentDidMount()}catch(e){Ss(t,o,e)}}var a=t.return;try{au(t)}catch(e){Ss(t,a,e)}break;case 5:var i=t.return;try{au(t)}catch(e){Ss(t,i,e)}}}catch(e){Ss(t,t.return,e)}if(t===e){Zl=null;break}var l=t.sibling;if(null!==l){l.return=t.return,Zl=l;break}Zl=t.return}}var Cu,Su=Math.ceil,Au=w.ReactCurrentDispatcher,Nu=w.ReactCurrentOwner,Ou=w.ReactCurrentBatchConfig,Tu=0,Pu=null,Lu=null,_u=0,ju=0,Ru=So(0),Du=0,Iu=null,Fu=0,Mu=0,zu=0,qu=null,$u=null,Bu=0,Uu=1/0,Wu=null,Hu=!1,Vu=null,Qu=null,Ku=!1,Yu=null,Gu=0,Xu=0,Ju=null,Zu=-1,es=0;function ts(){return 0!=(6&Tu)?Xe():-1!==Zu?Zu:Zu=Xe()}function ns(e){return 0==(1&e.mode)?1:0!=(2&Tu)&&0!==_u?_u&-_u:null!==va.transition?(0===es&&(es=ht()),es):0!==(e=bt)?e:e=void 0===(e=window.event)?16:Gt(e.type)}function rs(e,t,n,r){if(50<Xu)throw Xu=0,Ju=null,Error(a(185));gt(e,n,r),0!=(2&Tu)&&e===Pu||(e===Pu&&(0==(2&Tu)&&(Mu|=n),4===Du&&us(e,_u)),os(e,r),1===n&&0===Tu&&0==(1&t.mode)&&(Uu=Xe()+500,qo&&Uo()))}function os(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,a=e.pendingLanes;0<a;){var i=31-it(a),l=1<<i,u=o[i];-1===u?0!=(l&n)&&0==(l&r)||(o[i]=pt(l,t)):u<=t&&(e.expiredLanes|=l),a&=~l}}(e,t);var r=dt(e,e===Pu?_u:0);if(0===r)null!==n&&Ke(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Ke(n),1===t)0===e.tag?function(e){qo=!0,Bo(e)}(ss.bind(null,e)):Bo(ss.bind(null,e)),io((function(){0==(6&Tu)&&Uo()})),n=null;else{switch(wt(r)){case 1:n=Ze;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=Ps(n,as.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function as(e,t){if(Zu=-1,es=0,0!=(6&Tu))throw Error(a(327));var n=e.callbackNode;if(ks()&&e.callbackNode!==n)return null;var r=dt(e,e===Pu?_u:0);if(0===r)return null;if(0!=(30&r)||0!=(r&e.expiredLanes)||t)t=gs(e,r);else{t=r;var o=Tu;Tu|=2;var i=hs();for(Pu===e&&_u===t||(Wu=null,Uu=Xe()+500,ps(e,t));;)try{bs();break}catch(t){ms(e,t)}Ea(),Au.current=i,Tu=o,null!==Lu?t=0:(Pu=null,_u=0,t=Du)}if(0!==t){if(2===t&&0!==(o=mt(e))&&(r=o,t=is(e,o)),1===t)throw n=Iu,ps(e,0),us(e,r),os(e,Xe()),n;if(6===t)us(e,r);else{if(o=e.current.alternate,0==(30&r)&&!function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var o=n[r],a=o.getSnapshot;o=o.value;try{if(!lr(a(),o))return!1}catch(e){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(o)&&(2===(t=gs(e,r))&&0!==(i=mt(e))&&(r=i,t=is(e,i)),1===t))throw n=Iu,ps(e,0),us(e,r),os(e,Xe()),n;switch(e.finishedWork=o,e.finishedLanes=r,t){case 0:case 1:throw Error(a(345));case 2:case 5:Es(e,$u,Wu);break;case 3:if(us(e,r),(130023424&r)===r&&10<(t=Bu+500-Xe())){if(0!==dt(e,0))break;if(((o=e.suspendedLanes)&r)!==r){ts(),e.pingedLanes|=e.suspendedLanes&o;break}e.timeoutHandle=ro(Es.bind(null,e,$u,Wu),t);break}Es(e,$u,Wu);break;case 4:if(us(e,r),(4194240&r)===r)break;for(t=e.eventTimes,o=-1;0<r;){var l=31-it(r);i=1<<l,(l=t[l])>o&&(o=l),r&=~i}if(r=o,10<(r=(120>(r=Xe()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Su(r/1960))-r)){e.timeoutHandle=ro(Es.bind(null,e,$u,Wu),r);break}Es(e,$u,Wu);break;default:throw Error(a(329))}}}return os(e,Xe()),e.callbackNode===n?as.bind(null,e):null}function is(e,t){var n=qu;return e.current.memoizedState.isDehydrated&&(ps(e,t).flags|=256),2!==(e=gs(e,t))&&(t=$u,$u=n,null!==t&&ls(t)),e}function ls(e){null===$u?$u=e:$u.push.apply($u,e)}function us(e,t){for(t&=~zu,t&=~Mu,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-it(t),r=1<<n;e[n]=-1,t&=~r}}function ss(e){if(0!=(6&Tu))throw Error(a(327));ks();var t=dt(e,0);if(0==(1&t))return os(e,Xe()),null;var n=gs(e,t);if(0!==e.tag&&2===n){var r=mt(e);0!==r&&(t=r,n=is(e,r))}if(1===n)throw n=Iu,ps(e,0),us(e,t),os(e,Xe()),n;if(6===n)throw Error(a(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,Es(e,$u,Wu),os(e,Xe()),null}function cs(e,t){var n=Tu;Tu|=1;try{return e(t)}finally{0===(Tu=n)&&(Uu=Xe()+500,qo&&Uo())}}function fs(e){null!==Yu&&0===Yu.tag&&0==(6&Tu)&&ks();var t=Tu;Tu|=1;var n=Ou.transition,r=bt;try{if(Ou.transition=null,bt=1,e)return e()}finally{bt=r,Ou.transition=n,0==(6&(Tu=t))&&Uo()}}function ds(){ju=Ru.current,Ao(Ru)}function ps(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,oo(n)),null!==Lu)for(n=Lu.return;null!==n;){var r=n;switch(na(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Ro();break;case 3:ai(),Ao(Po),Ao(To),fi();break;case 5:li(r);break;case 4:ai();break;case 13:case 19:Ao(ui);break;case 10:ka(r.type._context);break;case 22:case 23:ds()}n=n.return}if(Pu=e,Lu=e=Rs(e.current,null),_u=ju=t,Du=0,Iu=null,zu=Mu=Fu=0,$u=qu=null,null!==Na){for(t=0;t<Na.length;t++)if(null!==(r=(n=Na[t]).interleaved)){n.interleaved=null;var o=r.next,a=n.pending;if(null!==a){var i=a.next;a.next=o,r.next=i}n.pending=r}Na=null}return e}function ms(e,t){for(;;){var n=Lu;try{if(Ea(),di.current=il,yi){for(var r=hi.memoizedState;null!==r;){var o=r.queue;null!==o&&(o.pending=null),r=r.next}yi=!1}if(mi=0,gi=vi=hi=null,bi=!1,wi=0,Nu.current=null,null===n||null===n.return){Du=1,Iu=t,Lu=null;break}e:{var i=e,l=n.return,u=n,s=t;if(t=_u,u.flags|=32768,null!==s&&"object"==typeof s&&"function"==typeof s.then){var c=s,f=u,d=f.tag;if(0==(1&f.mode)&&(0===d||11===d||15===d)){var p=f.alternate;p?(f.updateQueue=p.updateQueue,f.memoizedState=p.memoizedState,f.lanes=p.lanes):(f.updateQueue=null,f.memoizedState=null)}var m=gl(l);if(null!==m){m.flags&=-257,yl(m,l,u,0,t),1&m.mode&&vl(i,c,t),s=c;var h=(t=m).updateQueue;if(null===h){var v=new Set;v.add(s),t.updateQueue=v}else h.add(s);break e}if(0==(1&t)){vl(i,c,t),vs();break e}s=Error(a(426))}else if(aa&&1&u.mode){var g=gl(l);if(null!==g){0==(65536&g.flags)&&(g.flags|=256),yl(g,l,u,0,t),ha(cl(s,u));break e}}i=s=cl(s,u),4!==Du&&(Du=2),null===qu?qu=[i]:qu.push(i),i=l;do{switch(i.tag){case 3:i.flags|=65536,t&=-t,i.lanes|=t,Fa(i,ml(0,s,t));break e;case 1:u=s;var y=i.type,b=i.stateNode;if(0==(128&i.flags)&&("function"==typeof y.getDerivedStateFromError||null!==b&&"function"==typeof b.componentDidCatch&&(null===Qu||!Qu.has(b)))){i.flags|=65536,t&=-t,i.lanes|=t,Fa(i,hl(i,u,t));break e}}i=i.return}while(null!==i)}xs(n)}catch(e){t=e,Lu===n&&null!==n&&(Lu=n=n.return);continue}break}}function hs(){var e=Au.current;return Au.current=il,null===e?il:e}function vs(){0!==Du&&3!==Du&&2!==Du||(Du=4),null===Pu||0==(268435455&Fu)&&0==(268435455&Mu)||us(Pu,_u)}function gs(e,t){var n=Tu;Tu|=2;var r=hs();for(Pu===e&&_u===t||(Wu=null,ps(e,t));;)try{ys();break}catch(t){ms(e,t)}if(Ea(),Tu=n,Au.current=r,null!==Lu)throw Error(a(261));return Pu=null,_u=0,Du}function ys(){for(;null!==Lu;)ws(Lu)}function bs(){for(;null!==Lu&&!Ye();)ws(Lu)}function ws(e){var t=Cu(e.alternate,e,ju);e.memoizedProps=e.pendingProps,null===t?xs(e):Lu=t,Nu.current=null}function xs(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(32768&t.flags)){if(null!==(n=Kl(n,t,ju)))return void(Lu=n)}else{if(null!==(n=Yl(n,t)))return n.flags&=32767,void(Lu=n);if(null===e)return Du=6,void(Lu=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}if(null!==(t=t.sibling))return void(Lu=t);Lu=t=e}while(null!==t);0===Du&&(Du=5)}function Es(e,t,n){var r=bt,o=Ou.transition;try{Ou.transition=null,bt=1,function(e,t,n,r){do{ks()}while(null!==Yu);if(0!=(6&Tu))throw Error(a(327));n=e.finishedWork;var o=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var o=31-it(n),a=1<<o;t[o]=0,r[o]=-1,e[o]=-1,n&=~a}}(e,i),e===Pu&&(Lu=Pu=null,_u=0),0==(2064&n.subtreeFlags)&&0==(2064&n.flags)||Ku||(Ku=!0,Ps(tt,(function(){return ks(),null}))),i=0!=(15990&n.flags),0!=(15990&n.subtreeFlags)||i){i=Ou.transition,Ou.transition=null;var l=bt;bt=1;var u=Tu;Tu|=4,Nu.current=null,function(e,t){if(eo=Wt,pr(e=dr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch(e){n=null;break e}var l=0,u=-1,s=-1,c=0,f=0,d=e,p=null;t:for(;;){for(var m;d!==n||0!==o&&3!==d.nodeType||(u=l+o),d!==i||0!==r&&3!==d.nodeType||(s=l+r),3===d.nodeType&&(l+=d.nodeValue.length),null!==(m=d.firstChild);)p=d,d=m;for(;;){if(d===e)break t;if(p===n&&++c===o&&(u=l),p===i&&++f===r&&(s=l),null!==(m=d.nextSibling))break;p=(d=p).parentNode}d=m}n=-1===u||-1===s?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(to={focusedElem:e,selectionRange:n},Wt=!1,Zl=t;null!==Zl;)if(e=(t=Zl).child,0!=(1028&t.subtreeFlags)&&null!==e)e.return=t,Zl=e;else for(;null!==Zl;){t=Zl;try{var h=t.alternate;if(0!=(1024&t.flags))switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==h){var v=h.memoizedProps,g=h.memoizedState,y=t.stateNode,b=y.getSnapshotBeforeUpdate(t.elementType===t.type?v:ga(t.type,v),g);y.__reactInternalSnapshotBeforeUpdate=b}break;case 3:var w=t.stateNode.containerInfo;1===w.nodeType?w.textContent="":9===w.nodeType&&w.documentElement&&w.removeChild(w.documentElement);break;default:throw Error(a(163))}}catch(e){Ss(t,t.return,e)}if(null!==(e=t.sibling)){e.return=t.return,Zl=e;break}Zl=t.return}h=nu,nu=!1}(e,n),gu(n,e),mr(to),Wt=!!eo,to=eo=null,e.current=n,bu(n,e,o),Ge(),Tu=u,bt=l,Ou.transition=i}else e.current=n;if(Ku&&(Ku=!1,Yu=e,Gu=o),0===(i=e.pendingLanes)&&(Qu=null),function(e){if(at&&"function"==typeof at.onCommitFiberRoot)try{at.onCommitFiberRoot(ot,e,void 0,128==(128&e.current.flags))}catch(e){}}(n.stateNode),os(e,Xe()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)r((o=t[n]).value,{componentStack:o.stack,digest:o.digest});if(Hu)throw Hu=!1,e=Vu,Vu=null,e;0!=(1&Gu)&&0!==e.tag&&ks(),0!=(1&(i=e.pendingLanes))?e===Ju?Xu++:(Xu=0,Ju=e):Xu=0,Uo()}(e,t,n,r)}finally{Ou.transition=o,bt=r}return null}function ks(){if(null!==Yu){var e=wt(Gu),t=Ou.transition,n=bt;try{if(Ou.transition=null,bt=16>e?16:e,null===Yu)var r=!1;else{if(e=Yu,Yu=null,Gu=0,0!=(6&Tu))throw Error(a(331));var o=Tu;for(Tu|=4,Zl=e.current;null!==Zl;){var i=Zl,l=i.child;if(0!=(16&Zl.flags)){var u=i.deletions;if(null!==u){for(var s=0;s<u.length;s++){var c=u[s];for(Zl=c;null!==Zl;){var f=Zl;switch(f.tag){case 0:case 11:case 15:ru(8,f,i)}var d=f.child;if(null!==d)d.return=f,Zl=d;else for(;null!==Zl;){var p=(f=Zl).sibling,m=f.return;if(iu(f),f===c){Zl=null;break}if(null!==p){p.return=m,Zl=p;break}Zl=m}}}var h=i.alternate;if(null!==h){var v=h.child;if(null!==v){h.child=null;do{var g=v.sibling;v.sibling=null,v=g}while(null!==v)}}Zl=i}}if(0!=(2064&i.subtreeFlags)&&null!==l)l.return=i,Zl=l;else e:for(;null!==Zl;){if(0!=(2048&(i=Zl).flags))switch(i.tag){case 0:case 11:case 15:ru(9,i,i.return)}var y=i.sibling;if(null!==y){y.return=i.return,Zl=y;break e}Zl=i.return}}var b=e.current;for(Zl=b;null!==Zl;){var w=(l=Zl).child;if(0!=(2064&l.subtreeFlags)&&null!==w)w.return=l,Zl=w;else e:for(l=b;null!==Zl;){if(0!=(2048&(u=Zl).flags))try{switch(u.tag){case 0:case 11:case 15:ou(9,u)}}catch(e){Ss(u,u.return,e)}if(u===l){Zl=null;break e}var x=u.sibling;if(null!==x){x.return=u.return,Zl=x;break e}Zl=u.return}}if(Tu=o,Uo(),at&&"function"==typeof at.onPostCommitFiberRoot)try{at.onPostCommitFiberRoot(ot,e)}catch(e){}r=!0}return r}finally{bt=n,Ou.transition=t}}return!1}function Cs(e,t,n){e=Da(e,t=ml(0,t=cl(n,t),1),1),t=ts(),null!==e&&(gt(e,1,t),os(e,t))}function Ss(e,t,n){if(3===e.tag)Cs(e,e,n);else for(;null!==t;){if(3===t.tag){Cs(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Qu||!Qu.has(r))){t=Da(t,e=hl(t,e=cl(n,e),1),1),e=ts(),null!==t&&(gt(t,1,e),os(t,e));break}}t=t.return}}function As(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=ts(),e.pingedLanes|=e.suspendedLanes&n,Pu===e&&(_u&n)===n&&(4===Du||3===Du&&(130023424&_u)===_u&&500>Xe()-Bu?ps(e,0):zu|=n),os(e,t)}function Ns(e,t){0===t&&(0==(1&e.mode)?t=1:(t=ct,0==(130023424&(ct<<=1))&&(ct=4194304)));var n=ts();null!==(e=Pa(e,t))&&(gt(e,t,n),os(e,n))}function Os(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Ns(e,n)}function Ts(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;null!==o&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(a(314))}null!==r&&r.delete(t),Ns(e,n)}function Ps(e,t){return Qe(e,t)}function Ls(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function _s(e,t,n,r){return new Ls(e,t,n,r)}function js(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Rs(e,t){var n=e.alternate;return null===n?((n=_s(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Ds(e,t,n,r,o,i){var l=2;if(r=e,"function"==typeof e)js(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case k:return Is(n.children,o,i,t);case C:l=8,o|=8;break;case S:return(e=_s(12,n,t,2|o)).elementType=S,e.lanes=i,e;case T:return(e=_s(13,n,t,o)).elementType=T,e.lanes=i,e;case P:return(e=_s(19,n,t,o)).elementType=P,e.lanes=i,e;case j:return Fs(n,o,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case A:l=10;break e;case N:l=9;break e;case O:l=11;break e;case L:l=14;break e;case _:l=16,r=null;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=_s(l,n,t,o)).elementType=e,t.type=r,t.lanes=i,t}function Is(e,t,n,r){return(e=_s(7,e,r,t)).lanes=n,e}function Fs(e,t,n,r){return(e=_s(22,e,r,t)).elementType=j,e.lanes=n,e.stateNode={isHidden:!1},e}function Ms(e,t,n){return(e=_s(6,e,null,t)).lanes=n,e}function zs(e,t,n){return(t=_s(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function qs(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=vt(0),this.expirationTimes=vt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=vt(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function $s(e,t,n,r,o,a,i,l,u){return e=new qs(e,t,n,l,u),1===t?(t=1,!0===a&&(t|=8)):t=0,a=_s(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},_a(a),e}function Bs(e){if(!e)return Oo;e:{if(Be(e=e._reactInternals)!==e||1!==e.tag)throw Error(a(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(jo(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(a(171))}if(1===e.tag){var n=e.type;if(jo(n))return Io(e,n,t)}return t}function Us(e,t,n,r,o,a,i,l,u){return(e=$s(n,r,!0,e,0,a,0,l,u)).context=Bs(null),n=e.current,(a=Ra(r=ts(),o=ns(n))).callback=null!=t?t:null,Da(n,a,o),e.current.lanes=o,gt(e,o,r),os(e,r),e}function Ws(e,t,n,r){var o=t.current,a=ts(),i=ns(o);return n=Bs(n),null===t.context?t.context=n:t.pendingContext=n,(t=Ra(a,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Da(o,t,i))&&(rs(e,o,i,a),Ia(e,o,i)),i}function Hs(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Vs(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Qs(e,t){Vs(e,t),(e=e.alternate)&&Vs(e,t)}Cu=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Po.current)wl=!0;else{if(0==(e.lanes&n)&&0==(128&t.flags))return wl=!1,function(e,t,n){switch(t.tag){case 3:Pl(t),ma();break;case 5:ii(t);break;case 1:jo(t.type)&&Fo(t);break;case 4:oi(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;No(ya,r._currentValue),r._currentValue=o;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(No(ui,1&ui.current),t.flags|=128,null):0!=(n&t.child.childLanes)?Ml(e,t,n):(No(ui,1&ui.current),null!==(e=Hl(e,t,n))?e.sibling:null);No(ui,1&ui.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(128&e.flags)){if(r)return Ul(e,t,n);t.flags|=128}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null,o.lastEffect=null),No(ui,ui.current),r)break;return null;case 22:case 23:return t.lanes=0,Sl(e,t,n)}return Hl(e,t,n)}(e,t,n);wl=0!=(131072&e.flags)}else wl=!1,aa&&0!=(1048576&t.flags)&&ea(t,Qo,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Wl(e,t),e=t.pendingProps;var o=_o(t,To.current);Sa(t,n),o=Ci(null,t,r,e,o,n);var i=Si();return t.flags|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,jo(r)?(i=!0,Fo(t)):i=!1,t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,_a(t),o.updater=Ba,t.stateNode=o,o._reactInternals=t,Va(t,r,e,n),t=Tl(null,t,r,!0,i,n)):(t.tag=0,aa&&i&&ta(t),xl(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Wl(e,t),e=t.pendingProps,r=(o=r._init)(r._payload),t.type=r,o=t.tag=function(e){if("function"==typeof e)return js(e)?1:0;if(null!=e){if((e=e.$$typeof)===O)return 11;if(e===L)return 14}return 2}(r),e=ga(r,e),o){case 0:t=Nl(null,t,r,e,n);break e;case 1:t=Ol(null,t,r,e,n);break e;case 11:t=El(null,t,r,e,n);break e;case 14:t=kl(null,t,r,ga(r.type,e),n);break e}throw Error(a(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,Nl(e,t,r,o=t.elementType===r?o:ga(r,o),n);case 1:return r=t.type,o=t.pendingProps,Ol(e,t,r,o=t.elementType===r?o:ga(r,o),n);case 3:e:{if(Pl(t),null===e)throw Error(a(387));r=t.pendingProps,o=(i=t.memoizedState).element,ja(e,t),Ma(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated){if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,256&t.flags){t=Ll(e,t,r,n,o=cl(Error(a(423)),t));break e}if(r!==o){t=Ll(e,t,r,n,o=cl(Error(a(424)),t));break e}for(oa=so(t.stateNode.containerInfo.firstChild),ra=t,aa=!0,ia=null,n=Ja(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(ma(),r===o){t=Hl(e,t,n);break e}xl(e,t,r,n)}t=t.child}return t;case 5:return ii(t),null===e&&ca(t),r=t.type,o=t.pendingProps,i=null!==e?e.memoizedProps:null,l=o.children,no(r,o)?l=null:null!==i&&no(r,i)&&(t.flags|=32),Al(e,t),xl(e,t,l,n),t.child;case 6:return null===e&&ca(t),null;case 13:return Ml(e,t,n);case 4:return oi(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Xa(t,null,r,n):xl(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,El(e,t,r,o=t.elementType===r?o:ga(r,o),n);case 7:return xl(e,t,t.pendingProps,n),t.child;case 8:case 12:return xl(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,l=o.value,No(ya,r._currentValue),r._currentValue=l,null!==i)if(lr(i.value,l)){if(i.children===o.children&&!Po.current){t=Hl(e,t,n);break e}}else for(null!==(i=t.child)&&(i.return=t);null!==i;){var u=i.dependencies;if(null!==u){l=i.child;for(var s=u.firstContext;null!==s;){if(s.context===r){if(1===i.tag){(s=Ra(-1,n&-n)).tag=2;var c=i.updateQueue;if(null!==c){var f=(c=c.shared).pending;null===f?s.next=s:(s.next=f.next,f.next=s),c.pending=s}}i.lanes|=n,null!==(s=i.alternate)&&(s.lanes|=n),Ca(i.return,n,t),u.lanes|=n;break}s=s.next}}else if(10===i.tag)l=i.type===t.type?null:i.child;else if(18===i.tag){if(null===(l=i.return))throw Error(a(341));l.lanes|=n,null!==(u=l.alternate)&&(u.lanes|=n),Ca(l,n,t),l=i.sibling}else l=i.child;if(null!==l)l.return=i;else for(l=i;null!==l;){if(l===t){l=null;break}if(null!==(i=l.sibling)){i.return=l.return,l=i;break}l=l.return}i=l}xl(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,Sa(t,n),r=r(o=Aa(o)),t.flags|=1,xl(e,t,r,n),t.child;case 14:return o=ga(r=t.type,t.pendingProps),kl(e,t,r,o=ga(r.type,o),n);case 15:return Cl(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:ga(r,o),Wl(e,t),t.tag=1,jo(r)?(e=!0,Fo(t)):e=!1,Sa(t,n),Wa(t,r,o),Va(t,r,o,n),Tl(null,t,r,!0,e,n);case 19:return Ul(e,t,n);case 22:return Sl(e,t,n)}throw Error(a(156,t.tag))};var Ks="function"==typeof reportError?reportError:function(e){console.error(e)};function Ys(e){this._internalRoot=e}function Gs(e){this._internalRoot=e}function Xs(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Js(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Zs(){}function ec(e,t,n,r,o){var a=n._reactRootContainer;if(a){var i=a;if("function"==typeof o){var l=o;o=function(){var e=Hs(i);l.call(e)}}Ws(t,i,e,o)}else i=function(e,t,n,r,o){if(o){if("function"==typeof r){var a=r;r=function(){var e=Hs(i);a.call(e)}}var i=Us(t,r,e,0,null,!1,0,"",Zs);return e._reactRootContainer=i,e[ho]=i.current,Br(8===e.nodeType?e.parentNode:e),fs(),i}for(;o=e.lastChild;)e.removeChild(o);if("function"==typeof r){var l=r;r=function(){var e=Hs(u);l.call(e)}}var u=$s(e,0,!1,null,0,!1,0,"",Zs);return e._reactRootContainer=u,e[ho]=u.current,Br(8===e.nodeType?e.parentNode:e),fs((function(){Ws(t,u,n,r)})),u}(n,t,e,o,r);return Hs(i)}Gs.prototype.render=Ys.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(a(409));Ws(e,t,null,null)},Gs.prototype.unmount=Ys.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;fs((function(){Ws(null,e,null,null)})),t[ho]=null}},Gs.prototype.unstable_scheduleHydration=function(e){if(e){var t=Ct();e={blockedOn:null,target:e,priority:t};for(var n=0;n<jt.length&&0!==t&&t<jt[n].priority;n++);jt.splice(n,0,e),0===n&&Ft(e)}},xt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=ft(t.pendingLanes);0!==n&&(yt(t,1|n),os(t,Xe()),0==(6&Tu)&&(Uu=Xe()+500,Uo()))}break;case 13:fs((function(){var t=Pa(e,1);if(null!==t){var n=ts();rs(t,e,1,n)}})),Qs(e,1)}},Et=function(e){if(13===e.tag){var t=Pa(e,134217728);null!==t&&rs(t,e,134217728,ts()),Qs(e,134217728)}},kt=function(e){if(13===e.tag){var t=ns(e),n=Pa(e,t);null!==n&&rs(n,e,t,ts()),Qs(e,t)}},Ct=function(){return bt},St=function(e,t){var n=bt;try{return bt=e,t()}finally{bt=n}},Ee=function(e,t,n){switch(t){case"input":if(J(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+\'][type="radio"]\'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=Eo(r);if(!o)throw Error(a(90));Q(r),J(r,o)}}}break;case"textarea":ae(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Oe=cs,Te=fs;var tc={usingClientEntryPoint:!1,Events:[wo,xo,Eo,Ae,Ne,cs]},nc={findFiberByHostInstance:bo,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"},rc={bundleType:nc.bundleType,version:nc.version,rendererPackageName:nc.rendererPackageName,rendererConfig:nc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=He(e))?null:e.stateNode},findFiberByHostInstance:nc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var oc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!oc.isDisabled&&oc.supportsFiber)try{ot=oc.inject(rc),at=oc}catch(ce){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tc,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Xs(t))throw Error(a(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:E,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Xs(e))throw Error(a(299));var n=!1,r="",o=Ks;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(o=t.onRecoverableError)),t=$s(e,1,!1,null,0,n,0,r,o),e[ho]=t.current,Br(8===e.nodeType?e.parentNode:e),new Ys(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(a(188));throw e=Object.keys(e).join(","),Error(a(268,e))}return null===(e=He(t))?null:e.stateNode},t.flushSync=function(e){return fs(e)},t.hydrate=function(e,t,n){if(!Js(t))throw Error(a(200));return ec(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Xs(e))throw Error(a(405));var r=null!=n&&n.hydratedSources||null,o=!1,i="",l=Ks;if(null!=n&&(!0===n.unstable_strictMode&&(o=!0),void 0!==n.identifierPrefix&&(i=n.identifierPrefix),void 0!==n.onRecoverableError&&(l=n.onRecoverableError)),t=Us(t,null,e,1,null!=n?n:null,o,0,i,l),e[ho]=t.current,Br(e),r)for(e=0;e<r.length;e++)o=(o=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,o]:t.mutableSourceEagerHydrationData.push(n,o);return new Gs(t)},t.render=function(e,t,n){if(!Js(t))throw Error(a(200));return ec(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Js(e))throw Error(a(40));return!!e._reactRootContainer&&(fs((function(){ec(null,null,e,!1,(function(){e._reactRootContainer=null,e[ho]=null}))})),!0)},t.unstable_batchedUpdates=cs,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Js(n))throw Error(a(200));if(null==e||void 0===e._reactInternals)throw Error(a(38));return ec(e,t,n,!1,r)},t.version="18.2.0-next-9e3b772b8-20220608"},935:function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(448)},251:function(e,t,n){"use strict";var r=n(639),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,u={key:!0,ref:!0,__self:!0,__source:!0};function s(e,t,n){var r,a={},s=null,c=null;for(r in void 0!==n&&(s=""+n),void 0!==t.key&&(s=""+t.key),void 0!==t.ref&&(c=t.ref),t)i.call(t,r)&&!u.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===a[r]&&(a[r]=t[r]);return{$$typeof:o,type:e,key:s,ref:c,props:a,_owner:l.current}}t.Fragment=a,t.jsx=s,t.jsxs=s},893:function(e,t,n){"use strict";e.exports=n(251)},53:function(e,t){"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,o=e[r];if(!(0<a(o,t)))break e;e[r]=t,e[n]=o,n=r}}function r(e){return 0===e.length?null:e[0]}function o(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length,i=o>>>1;r<i;){var l=2*(r+1)-1,u=e[l],s=l+1,c=e[s];if(0>a(u,n))s<o&&0>a(c,u)?(e[r]=c,e[s]=n,r=s):(e[r]=u,e[l]=n,r=l);else{if(!(s<o&&0>a(c,n)))break e;e[r]=c,e[s]=n,r=s}}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,u=l.now();t.unstable_now=function(){return l.now()-u}}var s=[],c=[],f=1,d=null,p=3,m=!1,h=!1,v=!1,g="function"==typeof setTimeout?setTimeout:null,y="function"==typeof clearTimeout?clearTimeout:null,b="undefined"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(c);null!==t;){if(null===t.callback)o(c);else{if(!(t.startTime<=e))break;o(c),t.sortIndex=t.expirationTime,n(s,t)}t=r(c)}}function x(e){if(v=!1,w(e),!h)if(null!==r(s))h=!0,j(E);else{var t=r(c);null!==t&&R(x,t.startTime-e)}}function E(e,n){h=!1,v&&(v=!1,y(A),A=-1),m=!0;var a=p;try{for(w(n),d=r(s);null!==d&&(!(d.expirationTime>n)||e&&!T());){var i=d.callback;if("function"==typeof i){d.callback=null,p=d.priorityLevel;var l=i(d.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?d.callback=l:d===r(s)&&o(s),w(n)}else o(s);d=r(s)}if(null!==d)var u=!0;else{var f=r(c);null!==f&&R(x,f.startTime-n),u=!1}return u}finally{d=null,p=a,m=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var k,C=!1,S=null,A=-1,N=5,O=-1;function T(){return!(t.unstable_now()-O<N)}function P(){if(null!==S){var e=t.unstable_now();O=e;var n=!0;try{n=S(!0,e)}finally{n?k():(C=!1,S=null)}}else C=!1}if("function"==typeof b)k=function(){b(P)};else if("undefined"!=typeof MessageChannel){var L=new MessageChannel,_=L.port2;L.port1.onmessage=P,k=function(){_.postMessage(null)}}else k=function(){g(P,0)};function j(e){S=e,C||(C=!0,k())}function R(e,n){A=g((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){h||m||(h=!0,j(E))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):N=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return p},t.unstable_getFirstCallbackNode=function(){return r(s)},t.unstable_next=function(e){switch(p){case 1:case 2:case 3:var t=3;break;default:t=p}var n=p;p=t;try{return e()}finally{p=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=p;p=e;try{return t()}finally{p=n}},t.unstable_scheduleCallback=function(e,o,a){var i=t.unstable_now();switch(a="object"==typeof a&&null!==a&&"number"==typeof(a=a.delay)&&0<a?i+a:i,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:f++,callback:o,priorityLevel:e,startTime:a,expirationTime:l=a+l,sortIndex:-1},a>i?(e.sortIndex=a,n(c,e),null===r(s)&&e===r(c)&&(v?(y(A),A=-1):v=!0,R(x,a-i))):(e.sortIndex=l,n(s,e),h||m||(h=!0,j(E))),e},t.unstable_shouldYield=T,t.unstable_wrapCallback=function(e){var t=p;return function(){var n=p;p=t;try{return e.apply(this,arguments)}finally{p=n}}}},840:function(e,t,n){"use strict";e.exports=n(53)},379:function(e){"use strict";var t=[];function n(e){for(var n=-1,r=0;r<t.length;r++)if(t[r].identifier===e){n=r;break}return n}function r(e,r){for(var a={},i=[],l=0;l<e.length;l++){var u=e[l],s=r.base?u[0]+r.base:u[0],c=a[s]||0,f="".concat(s," ").concat(c);a[s]=c+1;var d=n(f),p={css:u[1],media:u[2],sourceMap:u[3],supports:u[4],layer:u[5]};if(-1!==d)t[d].references++,t[d].updater(p);else{var m=o(p,r);r.byIndex=l,t.splice(l,0,{identifier:f,updater:m,references:1})}i.push(f)}return i}function o(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,o){var a=r(e=e||[],o=o||{});return function(e){e=e||[];for(var i=0;i<a.length;i++){var l=n(a[i]);t[l].references--}for(var u=r(e,o),s=0;s<a.length;s++){var c=n(a[s]);0===t[c].references&&(t[c].updater(),t.splice(c,1))}a=u}}},569:function(e){"use strict";var t={};e.exports=function(e,n){var r=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!r)throw new Error("Couldn\'t find a style target. This probably means that the value for the \'insert\' parameter is invalid.");r.appendChild(n)}},216:function(e){"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},565:function(e,t,n){"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},795:function(e){"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var r="";n.supports&&(r+="@supports (".concat(n.supports,") {")),n.media&&(r+="@media ".concat(n.media," {"));var o=void 0!==n.layer;o&&(r+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),r+=n.css,o&&(r+="}"),n.media&&(r+="}"),n.supports&&(r+="}");var a=n.sourceMap;a&&"undefined"!=typeof btoa&&(r+="\\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),t.styleTagTransform(r,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:function(e){"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},496:function(e){!function(){var t=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"],n="undefined"!=typeof window,r=n&&null!=window.mozInnerScreenX;function o(e,o,a){if(!n)throw new Error("textarea-caret-position#getCaretCoordinates should only be called in a browser");var i=a&&a.debug||!1;if(i){var l=document.querySelector("#input-textarea-caret-position-mirror-div");l&&l.parentNode.removeChild(l)}var u=document.createElement("div");u.id="input-textarea-caret-position-mirror-div",document.body.appendChild(u);var s=u.style,c=window.getComputedStyle?window.getComputedStyle(e):e.currentStyle,f="INPUT"===e.nodeName;s.whiteSpace="pre-wrap",f||(s.wordWrap="break-word"),s.position="absolute",i||(s.visibility="hidden"),t.forEach((function(e){f&&"lineHeight"===e?s.lineHeight=c.height:s[e]=c[e]})),r?e.scrollHeight>parseInt(c.height)&&(s.overflowY="scroll"):s.overflow="hidden",u.textContent=e.value.substring(0,o),f&&(u.textContent=u.textContent.replace(/\\s/g," "));var d=document.createElement("span");d.textContent=e.value.substring(o)||".",u.appendChild(d);var p={top:d.offsetTop+parseInt(c.borderTopWidth),left:d.offsetLeft+parseInt(c.borderLeftWidth),height:parseInt(c.lineHeight)};return i?d.style.backgroundColor="#aaa":document.body.removeChild(u),p}void 0!==e.exports?e.exports=o:n&&(window.getCaretCoordinates=o)}()},473:function(e){"use strict";e.exports=function(){}},189:function(e){"use strict";if(void 0===t){var n=new Error("Cannot find module \'undefined\'");throw n.code="MODULE_NOT_FOUND",n}e.exports=t},639:function(t){"use strict";t.exports=e}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={id:e,exports:{}};return n[e](a,a.exports,o),a.exports}o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,{a:t}),t},o.d=function(e,t){for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nc=void 0;var a={};return function(){"use strict";o.r(a),o.d(a,{Await:function(){return ui},Branding:function(){return zr},Card:function(){return fi},Checkbox:function(){return ci},ErrorMessage:function(){return De},Footer:function(){return ii},FooterManager:function(){return ai},Header:function(){return ti},LoadingInfo:function(){return Ie},LoginForm:function(){return Ke},Message:function(){return Re},NavigationManager:function(){return Za},QueryForm:function(){return Va},QueryPanel:function(){return Ga},ServerVersionInfo:function(){return p},TopNavigationBar:function(){return ei},UserComponent:function(){return Mr},createTab:function(){return ya},makeQueryTemplate:function(){return ha},toggleQueryPanel:function(){return Ya}});var e,t=o(639),n=o.n(t);function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function i(){i=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},l=a.iterator||"@@iterator",u=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function f(e,t,n,r){var a=t&&t.prototype instanceof m?t:m,i=Object.create(a.prototype),l=new N(r||[]);return o(i,"_invoke",{value:k(e,n,l)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=f;var p={};function m(){}function h(){}function v(){}var g={};c(g,l,(function(){return this}));var y=Object.getPrototypeOf,b=y&&y(y(O([])));b&&b!==t&&n.call(b,l)&&(g=b);var w=v.prototype=m.prototype=Object.create(g);function x(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function E(e,t){function a(o,i,l,u){var s=d(e[o],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==r(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,l,u)}),(function(e){a("throw",e,l,u)})):t.resolve(f).then((function(e){c.value=e,l(c)}),(function(e){return a("throw",e,l,u)}))}u(s.arg)}var i;o(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){a(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function k(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return{value:void 0,done:!0}}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var l=C(i,n);if(l){if(l===p)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var u=d(e,t,n);if("normal"===u.type){if(r=n.done?"completed":"suspendedYield",u.arg===p)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(r="completed",n.method="throw",n.arg=u.arg)}}}function C(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,C(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),p;var o=d(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,p;var a=o.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,p):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,p)}function S(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function A(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function N(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function O(e){if(e){var t=e[l];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:T}}function T(){return{value:void 0,done:!0}}return h.prototype=v,o(w,"constructor",{value:v,configurable:!0}),o(v,"constructor",{value:h,configurable:!0}),h.displayName=c(v,s,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===h||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,v):(e.__proto__=v,c(e,s,"GeneratorFunction")),e.prototype=Object.create(w),e},e.awrap=function(e){return{__await:e}},x(E.prototype),c(E.prototype,u,(function(){return this})),e.AsyncIterator=E,e.async=function(t,n,r,o,a){void 0===a&&(a=Promise);var i=new E(f(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},x(w),c(w,s,"Generator"),c(w,l,(function(){return this})),c(w,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=O,N.prototype={constructor:N,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(A),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(l&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(l){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,p):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),p},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),A(n),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;A(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:O(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),p}},e}function l(e,t,n,r,o,a,i){try{var l=e[a](i),u=l.value}catch(e){return void n(e)}l.done?t(u):Promise.resolve(u).then(r,o)}function u(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function i(e){l(a,r,o,i,u,"next",e)}function u(e){l(a,r,o,i,u,"throw",e)}i(void 0)}))}}function s(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,(void 0,a=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,"string");if("object"!==r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(o.key),"symbol"===r(a)?a:String(a)),o)}var a}var c=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,n,r,o,a;return t=e,n=[{key:"getSessionInfo",value:(o=u(i().mark((function e(){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sleep(3e3);case 2:throw{message:"Please log in!"};case 3:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"sleep",value:function(e){return new Promise((function(t){return setTimeout(t,e)}))}},{key:"login",value:(a=u(i().mark((function e(t){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sleep(3e3);case 2:if("error"!=t){e.next=4;break}throw{message:"Login failed! Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!"};case 4:return e.abrupt("return",{realm:"MockRealm",username:t,roles:[],expires:6e4});case 5:case"end":return e.stop()}}),e,this)}))),function(e){return a.apply(this,arguments)})},{key:"logout",value:(r=u(i().mark((function e(){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sleep(3e3);case 2:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})}],n&&s(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();try{e=o(189).InfoService}catch(t){console.log("Providing mockup implementation for InfoService"),e=c}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function d(e){return"Could not retrieve Server Version Info: "+e.message}function p(){var r,o,a=(r=(0,t.useState)(null),o=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],u=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);u=!0);}catch(e){s=!0,o=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(r,o)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}(r,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=a[0],l=a[1];return null===i&&(i=function(t){return(new e).getVersionInfo().then((function(e){return e.noBuild().toString()})).catch(d).then(t),"..."}(l)),n().createElement("div",{className:"caosdb-comp-server-version-info"},i)}var m=o(697),h=o.n(m),v=o(184),g=o.n(v);function y(){return y=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},y.apply(this,arguments)}function b(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}function w(e){return"default"+e.charAt(0).toUpperCase()+e.substr(1)}function x(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}function E(e,n,r){var o=(0,t.useRef)(void 0!==e),a=(0,t.useState)(n),i=a[0],l=a[1],u=void 0!==e,s=o.current;return o.current=u,!u&&s&&i!==n&&l(n),[u?e:i,(0,t.useCallback)((function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];r&&r.apply(void 0,[e].concat(n)),l(e)}),[r])]}function k(e,t){return Object.keys(t).reduce((function(n,r){var o,a=n,i=a[w(r)],l=a[r],u=b(a,[w(r),r].map(x)),s=t[r],c=E(l,i,e[s]),f=c[0],d=c[1];return y({},u,((o={})[r]=f,o[s]=d,o))}),e)}o(143);var C=function(e){var n=(0,t.useRef)(e);return(0,t.useEffect)((function(){n.current=e}),[e]),n};function S(e){var n=C(e);return(0,t.useCallback)((function(){return n.current&&n.current.apply(n,arguments)}),[n])}function A(){var e=(0,t.useRef)(!0),n=(0,t.useRef)((function(){return e.current}));return(0,t.useEffect)((function(){return e.current=!0,function(){e.current=!1}}),[]),n.current}function N(e){var n=(0,t.useRef)(null);return(0,t.useEffect)((function(){n.current=e})),n.current}var O=void 0!==o.g&&o.g.navigator&&"ReactNative"===o.g.navigator.product,T="undefined"!=typeof document||O?t.useLayoutEffect:t.useEffect;new WeakMap;var P=o(893);const L=["as","disabled"];function _({tagName:e,disabled:t,href:n,target:r,rel:o,role:a,onClick:i,tabIndex:l=0,type:u}){e||(e=null!=n||null!=r||null!=o?"a":"button");const s={tagName:e};if("button"===e)return[{type:u||"button",disabled:t},s];const c=r=>{(t||"a"===e&&function(e){return!e||"#"===e.trim()}(n))&&r.preventDefault(),t?r.stopPropagation():null==i||i(r)};return"a"===e&&(n||(n="#"),t&&(n=void 0)),[{role:null!=a?a:"button",disabled:void 0,tabIndex:t?void 0:l,href:n,target:"a"===e?r:void 0,"aria-disabled":t||void 0,rel:"a"===e?o:void 0,onClick:c,onKeyDown:e=>{" "===e.key&&(e.preventDefault(),c(e))}},s]}const j=t.forwardRef(((e,t)=>{let{as:n,disabled:r}=e,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,L);const[a,{tagName:i}]=_(Object.assign({tagName:n,disabled:r},o));return(0,P.jsx)(i,Object.assign({},o,a,{ref:t}))}));j.displayName="Button";var R=j;const D=["onKeyDown"],I=t.forwardRef(((e,t)=>{let{onKeyDown:n}=e,r=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,D);const[o]=_(Object.assign({tagName:"a"},r)),a=S((e=>{o.onKeyDown(e),null==n||n(e)}));return(i=r.href)&&"#"!==i.trim()&&"button"!==r.role?(0,P.jsx)("a",Object.assign({ref:t},r,{onKeyDown:n})):(0,P.jsx)("a",Object.assign({ref:t},r,o,{onKeyDown:a}));var i}));I.displayName="Anchor";var F=I;const M=t.createContext({prefixes:{},breakpoints:["xxl","xl","lg","md","sm","xs"],minBreakpoint:"xs"}),{Consumer:z,Provider:q}=M;function $(e,n){const{prefixes:r}=(0,t.useContext)(M);return e||r[n]||n}function B(e,t){return B=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},B(e,t)}var U=o(935),W=n().createContext(null),H="unmounted",V="exited",Q="entering",K="entered",Y="exiting",G=function(e){var t,r;function o(t,n){var r;r=e.call(this,t,n)||this;var o,a=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?a?(o=V,r.appearStatus=Q):o=K:o=t.unmountOnExit||t.mountOnEnter?H:V,r.state={status:o},r.nextCallback=null,r}r=e,(t=o).prototype=Object.create(r.prototype),t.prototype.constructor=t,B(t,r),o.getDerivedStateFromProps=function(e,t){return e.in&&t.status===H?{status:V}:null};var a=o.prototype;return a.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},a.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==Q&&n!==K&&(t=Q):n!==Q&&n!==K||(t=Y)}this.updateStatus(!1,t)},a.componentWillUnmount=function(){this.cancelNextCallback()},a.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!=typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},a.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===Q){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:U.findDOMNode(this);n&&function(e){e.scrollTop}(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===V&&this.setState({status:H})},a.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,o=this.props.nodeRef?[r]:[U.findDOMNode(this),r],a=o[0],i=o[1],l=this.getTimeouts(),u=r?l.appear:l.enter;e||n?(this.props.onEnter(a,i),this.safeSetState({status:Q},(function(){t.props.onEntering(a,i),t.onTransitionEnd(u,(function(){t.safeSetState({status:K},(function(){t.props.onEntered(a,i)}))}))}))):this.safeSetState({status:K},(function(){t.props.onEntered(a)}))},a.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:U.findDOMNode(this);t?(this.props.onExit(r),this.safeSetState({status:Y},(function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,(function(){e.safeSetState({status:V},(function(){e.props.onExited(r)}))}))}))):this.safeSetState({status:V},(function(){e.props.onExited(r)}))},a.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},a.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},a.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},a.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:U.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(n&&!r){if(this.props.addEndListener){var o=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],a=o[0],i=o[1];this.props.addEndListener(a,i)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},a.render=function(){var e=this.state.status;if(e===H)return null;var t=this.props,r=t.children,o=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,b(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return n().createElement(W.Provider,{value:null},"function"==typeof r?r(e,o):n().cloneElement(n().Children.only(r),o))},o}(n().Component);function X(){}G.contextType=W,G.propTypes={},G.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:X,onEntering:X,onEntered:X,onExit:X,onExiting:X,onExited:X},G.UNMOUNTED=H,G.EXITED=V,G.ENTERING=Q,G.ENTERED=K,G.EXITING=Y;var J=G;function Z(e){return e&&e.ownerDocument||document}var ee=/([A-Z])/g,te=/^ms-/;function ne(e){return function(e){return e.replace(ee,"-$1").toLowerCase()}(e).replace(te,"-ms-")}var re=/^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i,oe=function(e,t){var n="",r="";if("string"==typeof t)return e.style.getPropertyValue(ne(t))||function(e,t){return function(e){var t=Z(e);return t&&t.defaultView||window}(e).getComputedStyle(e,t)}(e).getPropertyValue(ne(t));Object.keys(t).forEach((function(o){var a=t[o];a||0===a?function(e){return!(!e||!re.test(e))}(o)?r+=o+"("+a+") ":n+=ne(o)+": "+a+";":e.style.removeProperty(ne(o))})),r&&(n+="transform: "+r+";"),e.style.cssText+=";"+n},ae=!("undefined"==typeof window||!window.document||!window.document.createElement),ie=!1,le=!1;try{var ue={get passive(){return ie=!0},get once(){return le=ie=!0}};ae&&(window.addEventListener("test",ue,ue),window.removeEventListener("test",ue,!0))}catch(e){}var se=function(e,t,n,r){if(r&&"boolean"!=typeof r&&!le){var o=r.once,a=r.capture,i=n;!le&&o&&(i=n.__once||function e(r){this.removeEventListener(t,e,a),n.call(this,r)},n.__once=i),e.addEventListener(t,i,ie?r:a)}e.addEventListener(t,n,r)},ce=function(e,t,n,r){return se(e,t,n,r),function(){!function(e,t,n,r){var o=r&&"boolean"!=typeof r?r.capture:r;e.removeEventListener(t,n,o),n.__once&&e.removeEventListener(t,n.__once,o)}(e,t,n,r)}};function fe(e,t,n,r){var o,a;null==n&&(a=-1===(o=oe(e,"transitionDuration")||"").indexOf("ms")?1e3:1,n=parseFloat(o)*a||0);var i=function(e,t,n){void 0===n&&(n=5);var r=!1,o=setTimeout((function(){r||function(e,t,n,r){if(void 0===n&&(n=!1),void 0===r&&(r=!0),e){var o=document.createEvent("HTMLEvents");o.initEvent("transitionend",n,r),e.dispatchEvent(o)}}(e,0,!0)}),t+n),a=ce(e,"transitionend",(function(){r=!0}),{once:!0});return function(){clearTimeout(o),a()}}(e,n,r),l=ce(e,"transitionend",t);return function(){i(),l()}}function de(e,t){const n=oe(e,t)||"",r=-1===n.indexOf("ms")?1e3:1;return parseFloat(n)*r}function pe(e,t){const n=de(e,"transitionDuration"),r=de(e,"transitionDelay"),o=fe(e,(n=>{n.target===e&&(o(),t(n))}),n+r)}function me(e){e.offsetHeight}var he=function(e){return e&&"function"!=typeof e?function(t){e.current=t}:e},ve=function(e,n){return(0,t.useMemo)((function(){return function(e,t){var n=he(e),r=he(t);return function(e){n&&n(e),r&&r(e)}}(e,n)}),[e,n])},ge=n().forwardRef((({onEnter:e,onEntering:r,onEntered:o,onExit:a,onExiting:i,onExited:l,addEndListener:u,children:s,childRef:c,...f},d)=>{const p=(0,t.useRef)(null),m=ve(p,c),h=e=>{var t;m((t=e)&&"setState"in t?U.findDOMNode(t):null!=t?t:null)},v=e=>t=>{e&&p.current&&e(p.current,t)},g=(0,t.useCallback)(v(e),[e]),y=(0,t.useCallback)(v(r),[r]),b=(0,t.useCallback)(v(o),[o]),w=(0,t.useCallback)(v(a),[a]),x=(0,t.useCallback)(v(i),[i]),E=(0,t.useCallback)(v(l),[l]),k=(0,t.useCallback)(v(u),[u]);return(0,P.jsx)(J,{ref:d,...f,onEnter:g,onEntered:b,onEntering:y,onExit:w,onExited:E,onExiting:x,addEndListener:k,nodeRef:p,children:"function"==typeof s?(e,t)=>s(e,{...t,ref:h}):n().cloneElement(s,{ref:h})})}));const ye={[Q]:"show",[K]:"show"},be=t.forwardRef((({className:e,children:n,transitionClasses:r={},onEnter:o,...a},i)=>{const l={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1,...a},u=(0,t.useCallback)(((e,t)=>{me(e),null==o||o(e,t)}),[o]);return(0,P.jsx)(ge,{ref:i,addEndListener:pe,...l,onEnter:u,childRef:n.ref,children:(o,a)=>t.cloneElement(n,{...a,className:g()("fade",e,n.props.className,ye[o],r[o])})})}));be.displayName="Fade";var we=be;const xe={"aria-label":h().string,onClick:h().func,variant:h().oneOf(["white"])},Ee=t.forwardRef((({className:e,variant:t,"aria-label":n="Close",...r},o)=>(0,P.jsx)("button",{ref:o,type:"button",className:g()("btn-close",t&&`btn-close-${t}`,e),"aria-label":n,...r})));Ee.displayName="CloseButton",Ee.propTypes=xe;var ke=Ee,Ce=e=>t.forwardRef(((t,n)=>(0,P.jsx)("div",{...t,ref:n,className:g()(t.className,e)}))),Se=/-(.)/g;const Ae=e=>{return e[0].toUpperCase()+(t=e,t.replace(Se,(function(e,t){return t.toUpperCase()}))).slice(1);var t};function Ne(e,{displayName:n=Ae(e),Component:r,defaultProps:o}={}){const a=t.forwardRef((({className:t,bsPrefix:n,as:a=r||"div",...i},l)=>{const u={...o,...i},s=$(n,e);return(0,P.jsx)(a,{ref:l,className:g()(t,s),...u})}));return a.displayName=n,a}const Oe=Ce("h4");Oe.displayName="DivStyledAsH4";const Te=Ne("alert-heading",{Component:Oe}),Pe=Ne("alert-link",{Component:F}),Le=t.forwardRef(((e,t)=>{const{bsPrefix:n,show:r=!0,closeLabel:o="Close alert",closeVariant:a,className:i,children:l,variant:u="primary",onClose:s,dismissible:c,transition:f=we,...d}=k(e,{show:"onClose"}),p=$(n,"alert"),m=S((e=>{s&&s(!1,e)})),h=!0===f?we:f,v=(0,P.jsxs)("div",{role:"alert",...h?void 0:d,ref:t,className:g()(i,p,u&&`${p}-${u}`,c&&`${p}-dismissible`),children:[c&&(0,P.jsx)(ke,{onClick:m,"aria-label":o,variant:a}),l]});return h?(0,P.jsx)(h,{unmountOnExit:!0,...d,ref:void 0,in:r,children:v}):r?v:null}));Le.displayName="Alert";var _e=Object.assign(Le,{Link:Pe,Heading:Te});function je(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Re=function(e){var r,o,a=e.heading,i=e.icon,l=e.type,u=e.dismissible,s=e.children,c=e.className,f="primary",d=void 0===i||i,p="bi bi-exclamation-circle",m=(r=(0,t.useState)(!0),o=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],u=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);u=!0);}catch(e){s=!0,o=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(r,o)||function(e,t){if(e){if("string"==typeof e)return je(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?je(e,t):void 0}}(r,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=m[0],v=m[1];return h?("error"===l?(f="danger",p="bi bi-exclamation-triangle-fill"):"warning"===l?(f="warning",p="bi bi-exclamation-triangle"):"success"===l&&(f="success",p="bi bi-check-circle"),i=d&&(i||n().createElement("i",{className:"".concat(p," me-2 m-0")})),n().createElement(_e,{className:c,variant:f,onClose:function(){return v(!1)},dismissible:u},a&&n().createElement(_e.Heading,null,i,a),n().createElement("div",{className:"d-flex align-items-center m-0"},!a&&i,n().createElement("div",null,s)))):n().createElement(n().Fragment,null)};Re.propTypes={heading:h().node,icon:h().node,type:h().oneOf(["error","warning","success","info"]),dismissible:h().bool,children:h().oneOfType([h().arrayOf(h().node),h().node]),className:h().string};var De=function(e){var t,r=e.heading,o=e.error;return console.warn(o),r=r||"Error",t="string"==typeof o||o instanceof String?o:o.message&&("string"==typeof o.message||o.message instanceof String)?o.message:JSON.stringify(o),n().createElement(Re,{className:"mt-3 mx-3",heading:r,type:"error",dismissible:!0},t)};De.propTypes={heading:h().node,error:h().oneOfType([h().string,h().instanceOf(Error)])};var Ie=function(e){var t=e.className,r=e.size,o=e.color,a=e.title,i="spinner-border";return t&&(i+=" "+t),"sm"===r&&(i+=" spinner-border-sm"),"primary"===o?i+=" text-primary":"secondary"===o&&(i+=" text-secondary"),n().createElement("span",{title:a,className:i,role:"status","aria-hidden":"true"})};function Fe(e){return Fe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fe(e)}function Me(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ze(){ze=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",i=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,n){return e[t]=n}}function s(e,t,n,o){var a=t&&t.prototype instanceof d?t:d,i=Object.create(a.prototype),l=new S(o||[]);return r(i,"_invoke",{value:x(e,n,l)}),i}function c(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var f={};function d(){}function p(){}function m(){}var h={};u(h,a,(function(){return this}));var v=Object.getPrototypeOf,g=v&&v(v(A([])));g&&g!==t&&n.call(g,a)&&(h=g);var y=m.prototype=d.prototype=Object.create(h);function b(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(r,a,i,l){var u=c(e[r],e,a);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==Fe(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,i,l)}),(function(e){o("throw",e,i,l)})):t.resolve(f).then((function(e){s.value=e,i(s)}),(function(e){return o("throw",e,i,l)}))}l(u.arg)}var a;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return a=a?a.then(r,r):r()}})}function x(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return{value:void 0,done:!0}}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var u=c(e,t,n);if("normal"===u.type){if(r=n.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(r="completed",n.method="throw",n.arg=u.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var o=c(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var a=o.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=m,r(y,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:p,configurable:!0}),p.displayName=u(m,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,u(e,l,"GeneratorFunction")),e.prototype=Object.create(y),e},e.awrap=function(e){return{__await:e}},b(w.prototype),u(w.prototype,i,(function(){return this})),e.AsyncIterator=w,e.async=function(t,n,r,o,a){void 0===a&&(a=Promise);var i=new w(s(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},b(y),u(y,l,"Generator"),u(y,a,(function(){return this})),u(y,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(l&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(l){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;C(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function qe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,o=function(e,t){if("object"!==Fe(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==Fe(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key),"symbol"===Fe(o)?o:String(o)),r)}var o}function $e(e,t,n,r,o,a,i){try{var l=e[a](i),u=l.value}catch(e){return void n(e)}l.done?t(u):Promise.resolve(u).then(r,o)}function Be(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function i(e){$e(a,r,o,i,l,"next",e)}function l(e){$e(a,r,o,i,l,"throw",e)}i(void 0)}))}}function Ue(){return(Ue=Be(ze().mark((function t(n,r){var o;return ze().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new e,t.next=3,o.login(n,r);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function We(e,t,n){return function(r){r.preventDefault(),e();var o=r.target.username.value,a=r.target.password.value;r.target.submit.disabled=!0;var i=function(e,t){return Ue.apply(this,arguments)}(o,a).catch((function(e){throw r.target.submit.disabled=!1,e}));t&&(i=i.then(t)),n&&i.catch(n)}}Ie.propTypes={className:h().string,size:h().oneOf(["sm"]),color:h().oneOf(["primary","secondary"]),title:h().string},Ie.defaultProps={title:"Loading..."};var He=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.cb=t,n=Number.isInteger(n)?n:1e4,this.timeout=setTimeout(this.cb,n)}var t,n;return t=e,(n=[{key:"reset",value:function(e){this.pause(),this.cb&&(e=Number.isInteger(e)?e:2e4,this.timeout=setTimeout(this.cb,e))}},{key:"pause",value:function(){this.timeout&&(clearTimeout(this.timeout),this.timeout=void 0)}},{key:"stop",value:function(){this.pause(),this.cb=void 0}}])&&qe(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),Ve=function(e){var t=e.then,r=e.onError,o=e.showMessages,a=e.showLoadingInfo,i=new He(o),l=function(){return i.pause()},u=function(){return i.reset()},s=function(){var e=Be(ze().mark((function e(t){return ze().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o(),!r){e.next=5;break}return e.next=4,r(t);case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return n().createElement("form",{className:"m-0",onSubmit:We(a,t,s)},n().createElement("div",{className:"row g-3"},n().createElement("div",{className:"col-sm-5"},n().createElement("input",{onChange:l,onBlur:u,name:"username",className:"form-control",placeholder:"Username","aria-label":"Username"})),n().createElement("div",{className:"col-sm-5"},n().createElement("input",{onChange:l,onBlur:u,name:"password",className:"form-control",type:"password",placeholder:"Password","aria-label":"Password"})),n().createElement("div",{className:"col-sm-1"},n().createElement("button",{onClick:function(){return i.stop()},className:"btn btn-secondary navbar-btn d-inline-block",name:"submit",type:"submit"},"Login"))))};Ve.propTypes={then:h().func.isRequired,onError:h().func,showMessages:h().func.isRequired,showLoadingInfo:h().func.isRequired};var Qe=function(e){var t=e.message,r=e.messageType,o=e.showInputs;return t=t?n().createElement("div",{className:"col-sm-auto"},n().createElement(Re,{type:r},t)):void 0,n().createElement("div",{className:"align-items-center row g-3"},t,n().createElement("div",{className:"col-sm-1"},n().createElement("button",{className:"btn btn-secondary navbar-btn d-inline-block",name:"show",type:"button",onClick:o},"Login")))};Qe.propTypes={message:h().node,messageType:h().oneOf(["error","warning","success","info"]),showInputs:h().func.isRequired};var Ke=function(e){var r,o,a=e.then,i=e.onError,l=e.message,u=e.messageType,s=(r=(0,t.useState)("messages"),o=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],u=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);u=!0);}catch(e){s=!0,o=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(r,o)||function(e,t){if(e){if("string"==typeof e)return Me(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Me(e,t):void 0}}(r,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=s[0],f=s[1];return"inputs"===c?n().createElement(Ve,{then:a,onError:i,showMessages:function(){return f("messages")},showLoadingInfo:function(){return f("loading")}}):"loading"===c?n().createElement(Ie,{size:"sm"}):n().createElement(Qe,{message:l,messageType:u,showInputs:function(){return f("inputs")}})};Ke.propTypes={then:h().func.isRequired,onError:h().func,message:h().node,messageType:h().oneOf(["error","warning","success","info"])};var Ye=Function.prototype.bind.call(Function.prototype.call,[].slice);function Ge(e,t){return Ye(e.querySelectorAll(t))}function Xe(){return(0,t.useReducer)((function(e){return!e}),!1)[1]}var Je=t.createContext(null),Ze=Object.prototype.hasOwnProperty;function et(e,t,n){for(n of e.keys())if(tt(n,t))return n}function tt(e,t){var n,r,o;if(e===t)return!0;if(e&&t&&(n=e.constructor)===t.constructor){if(n===Date)return e.getTime()===t.getTime();if(n===RegExp)return e.toString()===t.toString();if(n===Array){if((r=e.length)===t.length)for(;r--&&tt(e[r],t[r]););return-1===r}if(n===Set){if(e.size!==t.size)return!1;for(r of e){if((o=r)&&"object"==typeof o&&!(o=et(t,o)))return!1;if(!t.has(o))return!1}return!0}if(n===Map){if(e.size!==t.size)return!1;for(r of e){if((o=r[0])&&"object"==typeof o&&!(o=et(t,o)))return!1;if(!tt(r[1],t.get(o)))return!1}return!0}if(n===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(n===DataView){if((r=e.byteLength)===t.byteLength)for(;r--&&e.getInt8(r)===t.getInt8(r););return-1===r}if(ArrayBuffer.isView(e)){if((r=e.byteLength)===t.byteLength)for(;r--&&e[r]===t[r];);return-1===r}if(!n||"object"==typeof e){for(n in r=0,e){if(Ze.call(e,n)&&++r&&!Ze.call(t,n))return!1;if(!(n in t)||!tt(e[n],t[n]))return!1}return Object.keys(t).length===r}}return e!=e&&t!=t}function nt(e){return e.split("-")[0]}function rt(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function ot(e){return e instanceof rt(e).Element||e instanceof Element}function at(e){return e instanceof rt(e).HTMLElement||e instanceof HTMLElement}function it(e){return"undefined"!=typeof ShadowRoot&&(e instanceof rt(e).ShadowRoot||e instanceof ShadowRoot)}var lt=Math.max,ut=Math.min,st=Math.round;function ct(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function ft(){return!/^((?!chrome|android).)*safari/i.test(ct())}function dt(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=e.getBoundingClientRect(),o=1,a=1;t&&at(e)&&(o=e.offsetWidth>0&&st(r.width)/e.offsetWidth||1,a=e.offsetHeight>0&&st(r.height)/e.offsetHeight||1);var i=(ot(e)?rt(e):window).visualViewport,l=!ft()&&n,u=(r.left+(l&&i?i.offsetLeft:0))/o,s=(r.top+(l&&i?i.offsetTop:0))/a,c=r.width/o,f=r.height/a;return{width:c,height:f,top:s,right:u+c,bottom:s+f,left:u,x:u,y:s}}function pt(e){var t=dt(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function mt(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&it(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function ht(e){return e?(e.nodeName||"").toLowerCase():null}function vt(e){return rt(e).getComputedStyle(e)}function gt(e){return["table","td","th"].indexOf(ht(e))>=0}function yt(e){return((ot(e)?e.ownerDocument:e.document)||window.document).documentElement}function bt(e){return"html"===ht(e)?e:e.assignedSlot||e.parentNode||(it(e)?e.host:null)||yt(e)}function wt(e){return at(e)&&"fixed"!==vt(e).position?e.offsetParent:null}function xt(e){for(var t=rt(e),n=wt(e);n&&gt(n)&&"static"===vt(n).position;)n=wt(n);return n&&("html"===ht(n)||"body"===ht(n)&&"static"===vt(n).position)?t:n||function(e){var t=/firefox/i.test(ct());if(/Trident/i.test(ct())&&at(e)&&"fixed"===vt(e).position)return null;var n=bt(e);for(it(n)&&(n=n.host);at(n)&&["html","body"].indexOf(ht(n))<0;){var r=vt(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}function Et(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function kt(e,t,n){return lt(e,ut(t,n))}function Ct(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function St(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var At="top",Nt="bottom",Ot="right",Tt="left",Pt="auto",Lt=[At,Nt,Ot,Tt],_t="start",jt="end",Rt="viewport",Dt="popper",It=Lt.reduce((function(e,t){return e.concat([t+"-"+_t,t+"-"+jt])}),[]),Ft=[].concat(Lt,[Pt]).reduce((function(e,t){return e.concat([t,t+"-"+_t,t+"-"+jt])}),[]),Mt=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"],zt={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,a=n.elements.arrow,i=n.modifiersData.popperOffsets,l=nt(n.placement),u=Et(l),s=[Tt,Ot].indexOf(l)>=0?"height":"width";if(a&&i){var c=function(e,t){return Ct("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:St(e,Lt))}(o.padding,n),f=pt(a),d="y"===u?At:Tt,p="y"===u?Nt:Ot,m=n.rects.reference[s]+n.rects.reference[u]-i[u]-n.rects.popper[s],h=i[u]-n.rects.reference[u],v=xt(a),g=v?"y"===u?v.clientHeight||0:v.clientWidth||0:0,y=m/2-h/2,b=c[d],w=g-f[s]-c[p],x=g/2-f[s]/2+y,E=kt(b,x,w),k=u;n.modifiersData[r]=((t={})[k]=E,t.centerOffset=E-x,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&mt(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function qt(e){return e.split("-")[1]}var $t={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Bt(e){var t,n=e.popper,r=e.popperRect,o=e.placement,a=e.variation,i=e.offsets,l=e.position,u=e.gpuAcceleration,s=e.adaptive,c=e.roundOffsets,f=e.isFixed,d=i.x,p=void 0===d?0:d,m=i.y,h=void 0===m?0:m,v="function"==typeof c?c({x:p,y:h}):{x:p,y:h};p=v.x,h=v.y;var g=i.hasOwnProperty("x"),y=i.hasOwnProperty("y"),b=Tt,w=At,x=window;if(s){var E=xt(n),k="clientHeight",C="clientWidth";E===rt(n)&&"static"!==vt(E=yt(n)).position&&"absolute"===l&&(k="scrollHeight",C="scrollWidth"),(o===At||(o===Tt||o===Ot)&&a===jt)&&(w=Nt,h-=(f&&E===x&&x.visualViewport?x.visualViewport.height:E[k])-r.height,h*=u?1:-1),o!==Tt&&(o!==At&&o!==Nt||a!==jt)||(b=Ot,p-=(f&&E===x&&x.visualViewport?x.visualViewport.width:E[C])-r.width,p*=u?1:-1)}var S,A=Object.assign({position:l},s&&$t),N=!0===c?function(e,t){var n=e.x,r=e.y,o=t.devicePixelRatio||1;return{x:st(n*o)/o||0,y:st(r*o)/o||0}}({x:p,y:h},rt(n)):{x:p,y:h};return p=N.x,h=N.y,u?Object.assign({},A,((S={})[w]=y?"0":"",S[b]=g?"0":"",S.transform=(x.devicePixelRatio||1)<=1?"translate("+p+"px, "+h+"px)":"translate3d("+p+"px, "+h+"px, 0)",S)):Object.assign({},A,((t={})[w]=y?h+"px":"",t[b]=g?p+"px":"",t.transform="",t))}var Ut={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,a=n.adaptive,i=void 0===a||a,l=n.roundOffsets,u=void 0===l||l,s={placement:nt(t.placement),variation:qt(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Bt(Object.assign({},s,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:u})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Bt(Object.assign({},s,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:u})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Wt={passive:!0},Ht={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,a=void 0===o||o,i=r.resize,l=void 0===i||i,u=rt(t.elements.popper),s=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&s.forEach((function(e){e.addEventListener("scroll",n.update,Wt)})),l&&u.addEventListener("resize",n.update,Wt),function(){a&&s.forEach((function(e){e.removeEventListener("scroll",n.update,Wt)})),l&&u.removeEventListener("resize",n.update,Wt)}},data:{}},Vt={left:"right",right:"left",bottom:"top",top:"bottom"};function Qt(e){return e.replace(/left|right|bottom|top/g,(function(e){return Vt[e]}))}var Kt={start:"end",end:"start"};function Yt(e){return e.replace(/start|end/g,(function(e){return Kt[e]}))}function Gt(e){var t=rt(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Xt(e){return dt(yt(e)).left+Gt(e).scrollLeft}function Jt(e){var t=vt(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function Zt(e){return["html","body","#document"].indexOf(ht(e))>=0?e.ownerDocument.body:at(e)&&Jt(e)?e:Zt(bt(e))}function en(e,t){var n;void 0===t&&(t=[]);var r=Zt(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),a=rt(r),i=o?[a].concat(a.visualViewport||[],Jt(r)?r:[]):r,l=t.concat(i);return o?l:l.concat(en(bt(i)))}function tn(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function nn(e,t,n){return t===Rt?tn(function(e,t){var n=rt(e),r=yt(e),o=n.visualViewport,a=r.clientWidth,i=r.clientHeight,l=0,u=0;if(o){a=o.width,i=o.height;var s=ft();(s||!s&&"fixed"===t)&&(l=o.offsetLeft,u=o.offsetTop)}return{width:a,height:i,x:l+Xt(e),y:u}}(e,n)):ot(t)?function(e,t){var n=dt(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):tn(function(e){var t,n=yt(e),r=Gt(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=lt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=lt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),l=-r.scrollLeft+Xt(e),u=-r.scrollTop;return"rtl"===vt(o||n).direction&&(l+=lt(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:i,x:l,y:u}}(yt(e)))}function rn(e){var t,n=e.reference,r=e.element,o=e.placement,a=o?nt(o):null,i=o?qt(o):null,l=n.x+n.width/2-r.width/2,u=n.y+n.height/2-r.height/2;switch(a){case At:t={x:l,y:n.y-r.height};break;case Nt:t={x:l,y:n.y+n.height};break;case Ot:t={x:n.x+n.width,y:u};break;case Tt:t={x:n.x-r.width,y:u};break;default:t={x:n.x,y:n.y}}var s=a?Et(a):null;if(null!=s){var c="y"===s?"height":"width";switch(i){case _t:t[s]=t[s]-(n[c]/2-r[c]/2);break;case jt:t[s]=t[s]+(n[c]/2-r[c]/2)}}return t}function on(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=void 0===r?e.placement:r,a=n.strategy,i=void 0===a?e.strategy:a,l=n.boundary,u=void 0===l?"clippingParents":l,s=n.rootBoundary,c=void 0===s?Rt:s,f=n.elementContext,d=void 0===f?Dt:f,p=n.altBoundary,m=void 0!==p&&p,h=n.padding,v=void 0===h?0:h,g=Ct("number"!=typeof v?v:St(v,Lt)),y=d===Dt?"reference":Dt,b=e.rects.popper,w=e.elements[m?y:d],x=function(e,t,n,r){var o="clippingParents"===t?function(e){var t=en(bt(e)),n=["absolute","fixed"].indexOf(vt(e).position)>=0&&at(e)?xt(e):e;return ot(n)?t.filter((function(e){return ot(e)&&mt(e,n)&&"body"!==ht(e)})):[]}(e):[].concat(t),a=[].concat(o,[n]),i=a[0],l=a.reduce((function(t,n){var o=nn(e,n,r);return t.top=lt(o.top,t.top),t.right=ut(o.right,t.right),t.bottom=ut(o.bottom,t.bottom),t.left=lt(o.left,t.left),t}),nn(e,i,r));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}(ot(w)?w:w.contextElement||yt(e.elements.popper),u,c,i),E=dt(e.elements.reference),k=rn({reference:E,element:b,strategy:"absolute",placement:o}),C=tn(Object.assign({},b,k)),S=d===Dt?C:E,A={top:x.top-S.top+g.top,bottom:S.bottom-x.bottom+g.bottom,left:x.left-S.left+g.left,right:S.right-x.right+g.right},N=e.modifiersData.offset;if(d===Dt&&N){var O=N[o];Object.keys(A).forEach((function(e){var t=[Ot,Nt].indexOf(e)>=0?1:-1,n=[At,Nt].indexOf(e)>=0?"y":"x";A[e]+=O[n]*t}))}return A}var an={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,a=void 0===o||o,i=n.altAxis,l=void 0===i||i,u=n.fallbackPlacements,s=n.padding,c=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,m=void 0===p||p,h=n.allowedAutoPlacements,v=t.options.placement,g=nt(v),y=u||(g!==v&&m?function(e){if(nt(e)===Pt)return[];var t=Qt(e);return[Yt(e),t,Yt(t)]}(v):[Qt(v)]),b=[v].concat(y).reduce((function(e,n){return e.concat(nt(n)===Pt?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,a=n.rootBoundary,i=n.padding,l=n.flipVariations,u=n.allowedAutoPlacements,s=void 0===u?Ft:u,c=qt(r),f=c?l?It:It.filter((function(e){return qt(e)===c})):Lt,d=f.filter((function(e){return s.indexOf(e)>=0}));0===d.length&&(d=f);var p=d.reduce((function(t,n){return t[n]=on(e,{placement:n,boundary:o,rootBoundary:a,padding:i})[nt(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}(t,{placement:n,boundary:c,rootBoundary:f,padding:s,flipVariations:m,allowedAutoPlacements:h}):n)}),[]),w=t.rects.reference,x=t.rects.popper,E=new Map,k=!0,C=b[0],S=0;S<b.length;S++){var A=b[S],N=nt(A),O=qt(A)===_t,T=[At,Nt].indexOf(N)>=0,P=T?"width":"height",L=on(t,{placement:A,boundary:c,rootBoundary:f,altBoundary:d,padding:s}),_=T?O?Ot:Tt:O?Nt:At;w[P]>x[P]&&(_=Qt(_));var j=Qt(_),R=[];if(a&&R.push(L[N]<=0),l&&R.push(L[_]<=0,L[j]<=0),R.every((function(e){return e}))){C=A,k=!1;break}E.set(A,R)}if(k)for(var D=function(e){var t=b.find((function(t){var n=E.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return C=t,"break"},I=m?3:1;I>0&&"break"!==D(I);I--);t.placement!==C&&(t.modifiersData[r]._skip=!0,t.placement=C,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ln(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function un(e){return[At,Ot,Nt,Tt].some((function(t){return e[t]>=0}))}var sn={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,a=void 0===o?[0,0]:o,i=Ft.reduce((function(e,n){return e[n]=function(e,t,n){var r=nt(e),o=[Tt,At].indexOf(r)>=0?-1:1,a="function"==typeof n?n(Object.assign({},t,{placement:e})):n,i=a[0],l=a[1];return i=i||0,l=(l||0)*o,[Tt,Ot].indexOf(r)>=0?{x:l,y:i}:{x:i,y:l}}(n,t.rects,a),e}),{}),l=i[t.placement],u=l.x,s=l.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=u,t.modifiersData.popperOffsets.y+=s),t.modifiersData[r]=i}},cn={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,a=void 0===o||o,i=n.altAxis,l=void 0!==i&&i,u=n.boundary,s=n.rootBoundary,c=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,m=n.tetherOffset,h=void 0===m?0:m,v=on(t,{boundary:u,rootBoundary:s,padding:f,altBoundary:c}),g=nt(t.placement),y=qt(t.placement),b=!y,w=Et(g),x="x"===w?"y":"x",E=t.modifiersData.popperOffsets,k=t.rects.reference,C=t.rects.popper,S="function"==typeof h?h(Object.assign({},t.rects,{placement:t.placement})):h,A="number"==typeof S?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),N=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,O={x:0,y:0};if(E){if(a){var T,P="y"===w?At:Tt,L="y"===w?Nt:Ot,_="y"===w?"height":"width",j=E[w],R=j+v[P],D=j-v[L],I=p?-C[_]/2:0,F=y===_t?k[_]:C[_],M=y===_t?-C[_]:-k[_],z=t.elements.arrow,q=p&&z?pt(z):{width:0,height:0},$=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},B=$[P],U=$[L],W=kt(0,k[_],q[_]),H=b?k[_]/2-I-W-B-A.mainAxis:F-W-B-A.mainAxis,V=b?-k[_]/2+I+W+U+A.mainAxis:M+W+U+A.mainAxis,Q=t.elements.arrow&&xt(t.elements.arrow),K=Q?"y"===w?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(T=null==N?void 0:N[w])?T:0,G=j+V-Y,X=kt(p?ut(R,j+H-Y-K):R,j,p?lt(D,G):D);E[w]=X,O[w]=X-j}if(l){var J,Z="x"===w?At:Tt,ee="x"===w?Nt:Ot,te=E[x],ne="y"===x?"height":"width",re=te+v[Z],oe=te-v[ee],ae=-1!==[At,Tt].indexOf(g),ie=null!=(J=null==N?void 0:N[x])?J:0,le=ae?re:te-k[ne]-C[ne]-ie+A.altAxis,ue=ae?te+k[ne]+C[ne]-ie-A.altAxis:oe,se=p&&ae?function(e,t,n){var r=kt(e,t,n);return r>n?n:r}(le,te,ue):kt(p?le:re,te,p?ue:oe);E[x]=se,O[x]=se-te}t.modifiersData[r]=O}},requiresIfExists:["offset"]};function fn(e,t,n){void 0===n&&(n=!1);var r,o,a=at(t),i=at(t)&&function(e){var t=e.getBoundingClientRect(),n=st(t.width)/e.offsetWidth||1,r=st(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),l=yt(t),u=dt(e,i,n),s={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(a||!a&&!n)&&(("body"!==ht(t)||Jt(l))&&(s=(r=t)!==rt(r)&&at(r)?{scrollLeft:(o=r).scrollLeft,scrollTop:o.scrollTop}:Gt(r)),at(t)?((c=dt(t,!0)).x+=t.clientLeft,c.y+=t.clientTop):l&&(c.x=Xt(l))),{x:u.left+s.scrollLeft-c.x,y:u.top+s.scrollTop-c.y,width:u.width,height:u.height}}function dn(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}var pn={placement:"bottom",modifiers:[],strategy:"absolute"};function mn(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}const hn=function(e){void 0===e&&(e={});var t=e,n=t.defaultModifiers,r=void 0===n?[]:n,o=t.defaultOptions,a=void 0===o?pn:o;return function(e,t,n){void 0===n&&(n=a);var o,i,l={placement:"bottom",orderedModifiers:[],options:Object.assign({},pn,a),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},u=[],s=!1,c={state:l,setOptions:function(n){var o="function"==typeof n?n(l.options):n;f(),l.options=Object.assign({},a,l.options,o),l.scrollParents={reference:ot(e)?en(e):e.contextElement?en(e.contextElement):[],popper:en(t)};var i,s,d=function(e){var t=dn(e);return Mt.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}((i=[].concat(r,l.options.modifiers),s=i.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{}),Object.keys(s).map((function(e){return s[e]}))));return l.orderedModifiers=d.filter((function(e){return e.enabled})),l.orderedModifiers.forEach((function(e){var t=e.name,n=e.options,r=void 0===n?{}:n,o=e.effect;if("function"==typeof o){var a=o({state:l,name:t,instance:c,options:r});u.push(a||function(){})}})),c.update()},forceUpdate:function(){if(!s){var e=l.elements,t=e.reference,n=e.popper;if(mn(t,n)){l.rects={reference:fn(t,xt(n),"fixed"===l.options.strategy),popper:pt(n)},l.reset=!1,l.placement=l.options.placement,l.orderedModifiers.forEach((function(e){return l.modifiersData[e.name]=Object.assign({},e.data)}));for(var r=0;r<l.orderedModifiers.length;r++)if(!0!==l.reset){var o=l.orderedModifiers[r],a=o.fn,i=o.options,u=void 0===i?{}:i,f=o.name;"function"==typeof a&&(l=a({state:l,options:u,name:f,instance:c})||l)}else l.reset=!1,r=-1}}},update:(o=function(){return new Promise((function(e){c.forceUpdate(),e(l)}))},function(){return i||(i=new Promise((function(e){Promise.resolve().then((function(){i=void 0,e(o())}))}))),i}),destroy:function(){f(),s=!0}};if(!mn(e,t))return c;function f(){u.forEach((function(e){return e()})),u=[]}return c.setOptions(n).then((function(e){!s&&n.onFirstUpdate&&n.onFirstUpdate(e)})),c}}({defaultModifiers:[{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,a=t.modifiersData.preventOverflow,i=on(t,{elementContext:"reference"}),l=on(t,{altBoundary:!0}),u=ln(i,r),s=ln(l,o,a),c=un(u),f=un(s);t.modifiersData[n]={referenceClippingOffsets:u,popperEscapeOffsets:s,isReferenceHidden:c,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":f})}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=rn({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},Ut,Ht,sn,an,cn,zt]}),vn=["enabled","placement","strategy","modifiers"],gn={name:"applyStyles",enabled:!1,phase:"afterWrite",fn:()=>{}},yn={name:"ariaDescribedBy",enabled:!0,phase:"afterWrite",effect:({state:e})=>()=>{const{reference:t,popper:n}=e.elements;if("removeAttribute"in t){const e=(t.getAttribute("aria-describedby")||"").split(",").filter((e=>e.trim()!==n.id));e.length?t.setAttribute("aria-describedby",e.join(",")):t.removeAttribute("aria-describedby")}},fn:({state:e})=>{var t;const{popper:n,reference:r}=e.elements,o=null==(t=n.getAttribute("role"))?void 0:t.toLowerCase();if(n.id&&"tooltip"===o&&"setAttribute"in r){const e=r.getAttribute("aria-describedby");if(e&&-1!==e.split(",").indexOf(n.id))return;r.setAttribute("aria-describedby",e?`${e},${n.id}`:n.id)}}},bn=[];var wn=function(e,n,r={}){let{enabled:o=!0,placement:a="bottom",strategy:i="absolute",modifiers:l=bn}=r,u=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(r,vn);const s=(0,t.useRef)(l),c=(0,t.useRef)(),f=(0,t.useCallback)((()=>{var e;null==(e=c.current)||e.update()}),[]),d=(0,t.useCallback)((()=>{var e;null==(e=c.current)||e.forceUpdate()}),[]),[p,m]=(g=(0,t.useState)({placement:a,update:f,forceUpdate:d,attributes:{},styles:{popper:{},arrow:{}}}),y=A(),[g[0],(0,t.useCallback)((function(e){if(y())return g[1](e)}),[y,g[1]])]),h=(0,t.useMemo)((()=>({name:"updateStateModifier",enabled:!0,phase:"write",requires:["computeStyles"],fn:({state:e})=>{const t={},n={};Object.keys(e.elements).forEach((r=>{t[r]=e.styles[r],n[r]=e.attributes[r]})),m({state:e,styles:t,attributes:n,update:f,forceUpdate:d,placement:e.placement})}})),[f,d,m]),v=(0,t.useMemo)((()=>(tt(s.current,l)||(s.current=l),s.current)),[l]);var g,y;return(0,t.useEffect)((()=>{c.current&&o&&c.current.setOptions({placement:a,strategy:i,modifiers:[...v,h,gn]})}),[i,a,h,o,v]),(0,t.useEffect)((()=>{if(o&&null!=e&&null!=n)return c.current=hn(e,n,Object.assign({},u,{placement:a,strategy:i,modifiers:[...v,yn,h]})),()=>{null!=c.current&&(c.current.destroy(),c.current=void 0,m((e=>Object.assign({},e,{attributes:{},styles:{popper:{}}}))))}}),[o,e,n]),p};function xn(e,t){return e.contains?e.contains(t):e.compareDocumentPosition?e===t||!!(16&e.compareDocumentPosition(t)):void 0}var En=o(473),kn=o.n(En);const Cn=()=>{},Sn=e=>e&&("current"in e?e.current:e),An={click:"mousedown",mouseup:"mousedown",pointerup:"pointerdown"};var Nn=function(e,n=Cn,{disabled:r,clickTrigger:o="click"}={}){const a=(0,t.useRef)(!1),i=(0,t.useRef)(!1),l=(0,t.useCallback)((t=>{const n=Sn(e);var r;kn()(!!n,"ClickOutside captured a close event but does not have a ref to compare it to. useClickOutside(), should be passed a ref that resolves to a DOM node"),a.current=!n||!!((r=t).metaKey||r.altKey||r.ctrlKey||r.shiftKey)||!function(e){return 0===e.button}(t)||!!xn(n,t.target)||i.current,i.current=!1}),[e]),u=S((t=>{const n=Sn(e);n&&xn(n,t.target)&&(i.current=!0)})),s=S((e=>{a.current||n(e)}));(0,t.useEffect)((()=>{if(r||null==e)return;const t=Z(Sn(e));let n=(t.defaultView||window).event,a=null;An[o]&&(a=ce(t,An[o],u,!0));const i=ce(t,o,l,!0),c=ce(t,o,(e=>{e!==n?s(e):n=void 0}));let f=[];return"ontouchstart"in t.documentElement&&(f=[].slice.call(t.body.children).map((e=>ce(e,"mousemove",Cn)))),()=>{null==a||a(),i(),c(),f.forEach((e=>e()))}}),[e,r,o,l,u,s])};function On(e={}){return Array.isArray(e)?e:Object.keys(e).map((t=>(e[t].name=t,e[t])))}const Tn=["children"],Pn=()=>{};function Ln(e={}){const n=(0,t.useContext)(Je),[r,o]=(0,t.useState)(null),a=(0,t.useRef)(!1),{flip:i,offset:l,rootCloseEvent:u,fixed:s=!1,placement:c,popperConfig:f={},enableEventListeners:d=!0,usePopper:p=!!n}=e,m=null==(null==n?void 0:n.show)?!!e.show:n.show;m&&!a.current&&(a.current=!0);const{placement:h,setMenu:v,menuElement:g,toggleElement:y}=n||{},b=wn(y,g,function({enabled:e,enableEvents:t,placement:n,flip:r,offset:o,fixed:a,containerPadding:i,arrowElement:l,popperConfig:u={}}){var s,c,f,d,p;const m=function(e){const t={};return Array.isArray(e)?(null==e||e.forEach((e=>{t[e.name]=e})),t):e||t}(u.modifiers);return Object.assign({},u,{placement:n,enabled:e,strategy:a?"fixed":u.strategy,modifiers:On(Object.assign({},m,{eventListeners:{enabled:t,options:null==(s=m.eventListeners)?void 0:s.options},preventOverflow:Object.assign({},m.preventOverflow,{options:i?Object.assign({padding:i},null==(c=m.preventOverflow)?void 0:c.options):null==(f=m.preventOverflow)?void 0:f.options}),offset:{options:Object.assign({offset:o},null==(d=m.offset)?void 0:d.options)},arrow:Object.assign({},m.arrow,{enabled:!!l,options:Object.assign({},null==(p=m.arrow)?void 0:p.options,{element:l})}),flip:Object.assign({enabled:!!r},m.flip)}))})}({placement:c||h||"bottom-start",enabled:p,enableEvents:null==d?m:d,offset:l,flip:i,fixed:s,arrowElement:r,popperConfig:f})),w=Object.assign({ref:v||Pn,"aria-labelledby":null==y?void 0:y.id},b.attributes.popper,{style:b.styles.popper}),x={show:m,placement:h,hasShown:a.current,toggle:null==n?void 0:n.toggle,popper:p?b:null,arrowProps:p?Object.assign({ref:o},b.attributes.arrow,{style:b.styles.arrow}):{}};return Nn(g,(e=>{null==n||n.toggle(!1,e)}),{clickTrigger:u,disabled:!m}),[w,x]}function _n(e){let{children:t}=e,n=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,Tn);const[r,o]=Ln(n);return(0,P.jsx)(P.Fragment,{children:t(r,o)})}_n.displayName="DropdownMenu",_n.defaultProps={usePopper:!0};var jn=_n;const Rn={prefix:String(Math.round(1e10*Math.random())),current:0,isSSR:!1},Dn=t.createContext(Rn);let In=Boolean("undefined"!=typeof window&&window.document&&window.document.createElement),Fn=new WeakMap;const Mn=e=>{var t;return"menu"===(null==(t=e.getAttribute("role"))?void 0:t.toLowerCase())},zn=()=>{};function qn(){const e=function(e){let n=(0,t.useContext)(Dn);n!==Rn||In||console.warn("When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.");let r=function(e=!1){let n=(0,t.useContext)(Dn),r=(0,t.useRef)(null);if(null===r.current&&!e){var o,a;let e=null===(o=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)||void 0===o||null===(a=o.ReactCurrentOwner)||void 0===a?void 0:a.current;if(e){let t=Fn.get(e);null==t?Fn.set(e,{id:n.current,state:e.memoizedState}):e.memoizedState!==t.state&&(n.current=t.id,Fn.delete(e))}r.current=++n.current}return r.current}(!1);return`react-aria${n.prefix}-${r}`}(),{show:n=!1,toggle:r=zn,setToggle:o,menuElement:a}=(0,t.useContext)(Je)||{},i=(0,t.useCallback)((e=>{r(!n,e)}),[n,r]),l={id:e,ref:o||zn,onClick:i,"aria-expanded":!!n};return a&&Mn(a)&&(l["aria-haspopup"]=!0),[l,{show:n,toggle:r}]}function $n({children:e}){const[t,n]=qn();return(0,P.jsx)(P.Fragment,{children:e(t,n)})}$n.displayName="DropdownToggle";var Bn=$n;const Un=(e,t=null)=>null!=e?String(e):t||null;var Wn=t.createContext(null);const Hn=t.createContext(null);Hn.displayName="NavContext";var Vn=Hn;const Qn="data-rr-ui-";function Kn(e){return`${Qn}${e}`}const Yn=["eventKey","disabled","onClick","active","as"];function Gn({key:e,href:n,active:r,disabled:o,onClick:a}){const i=(0,t.useContext)(Wn),l=(0,t.useContext)(Vn),{activeKey:u}=l||{},s=Un(e,n),c=null==r&&null!=e?Un(u)===s:r;return[{onClick:S((e=>{o||(null==a||a(e),i&&!e.isPropagationStopped()&&i(s,e))})),"aria-disabled":o||void 0,"aria-selected":c,[Kn("dropdown-item")]:""},{isActive:c}]}const Xn=t.forwardRef(((e,t)=>{let{eventKey:n,disabled:r,onClick:o,active:a,as:i=R}=e,l=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,Yn);const[u]=Gn({key:n,href:l.href,disabled:r,onClick:o,active:a});return(0,P.jsx)(i,Object.assign({},l,{ref:t},u))}));Xn.displayName="DropdownItem";var Jn=Xn;const Zn=(0,t.createContext)(ae?window:void 0);function er(){return(0,t.useContext)(Zn)}function tr(){const e=Xe(),n=(0,t.useRef)(null),r=(0,t.useCallback)((t=>{n.current=t,e()}),[e]);return[n,r]}function nr({defaultShow:e,show:n,onSelect:r,onToggle:o,itemSelector:a=`* [${Kn("dropdown-item")}]`,focusFirstItemOnShow:i,placement:l="bottom-start",children:u}){const s=er(),[c,f]=E(n,e,o),[d,p]=tr(),m=d.current,[h,v]=tr(),g=h.current,y=N(c),b=(0,t.useRef)(null),w=(0,t.useRef)(!1),x=(0,t.useContext)(Wn),k=(0,t.useCallback)(((e,t,n=(null==t?void 0:t.type))=>{f(e,{originalEvent:t,source:n})}),[f]),C=S(((e,t)=>{null==r||r(e,t),k(!1,t,"select"),t.isPropagationStopped()||null==x||x(e,t)})),A=(0,t.useMemo)((()=>({toggle:k,placement:l,show:c,menuElement:m,toggleElement:g,setMenu:p,setToggle:v})),[k,l,c,m,g,p,v]);m&&y&&!c&&(w.current=m.contains(m.ownerDocument.activeElement));const O=S((()=>{g&&g.focus&&g.focus()})),T=S((()=>{const e=b.current;let t=i;if(null==t&&(t=!(!d.current||!Mn(d.current))&&"keyboard"),!1===t||"keyboard"===t&&!/^key.+$/.test(e))return;const n=Ge(d.current,a)[0];n&&n.focus&&n.focus()}));(0,t.useEffect)((()=>{c?T():w.current&&(w.current=!1,O())}),[c,w,O,T]),(0,t.useEffect)((()=>{b.current=null}));const L=(e,t)=>{if(!d.current)return null;const n=Ge(d.current,a);let r=n.indexOf(e)+t;return r=Math.max(0,Math.min(r,n.length)),n[r]};return function(e,n,r,o){void 0===o&&(o=!1);var a=S((e=>{var t,n;const{key:r}=e,o=e.target,a=null==(t=d.current)?void 0:t.contains(o),i=null==(n=h.current)?void 0:n.contains(o);if(/input|textarea/i.test(o.tagName)&&(" "===r||"Escape"!==r&&a||"Escape"===r&&"search"===o.type))return;if(!a&&!i)return;if(!("Tab"!==r||d.current&&c))return;b.current=e.type;const l={originalEvent:e,source:e.type};switch(r){case"ArrowUp":{const t=L(o,-1);return t&&t.focus&&t.focus(),void e.preventDefault()}case"ArrowDown":if(e.preventDefault(),c){const e=L(o,1);e&&e.focus&&e.focus()}else f(!0,l);return;case"Tab":se(o.ownerDocument,"keyup",(e=>{var t;("Tab"!==e.key||e.target)&&null!=(t=d.current)&&t.contains(e.target)||f(!1,l)}),{once:!0});break;case"Escape":"Escape"===r&&(e.preventDefault(),e.stopPropagation()),f(!1,l)}}));(0,t.useEffect)((function(){var t="function"==typeof e?e():e;return t.addEventListener(n,a,o),function(){return t.removeEventListener(n,a,o)}}),[e])}((0,t.useCallback)((()=>s.document),[s]),"keydown"),(0,P.jsx)(Wn.Provider,{value:C,children:(0,P.jsx)(Je.Provider,{value:A,children:u})})}Zn.Provider,nr.displayName="Dropdown",nr.Menu=jn,nr.Toggle=Bn,nr.Item=Jn;var rr=nr;const or=t.createContext({});or.displayName="DropdownContext";var ar=or;const ir=t.forwardRef((({bsPrefix:e,className:t,eventKey:n,disabled:r=!1,onClick:o,active:a,as:i=F,...l},u)=>{const s=$(e,"dropdown-item"),[c,f]=Gn({key:n,href:l.href,disabled:r,onClick:o,active:a});return(0,P.jsx)(i,{...l,...c,ref:u,className:g()(t,s,f.isActive&&"active",r&&"disabled")})}));ir.displayName="DropdownItem";var lr=ir;const ur=t.createContext(null);ur.displayName="InputGroupContext";var sr=ur;const cr=t.createContext(null);cr.displayName="NavbarContext";var fr=cr;function dr(e,t){return e}function pr(e,t,n){let r=e?n?"bottom-start":"bottom-end":n?"bottom-end":"bottom-start";return"up"===t?r=e?n?"top-start":"top-end":n?"top-end":"top-start":"end"===t?r=e?n?"left-end":"right-end":n?"left-start":"right-start":"start"===t?r=e?n?"right-end":"left-end":n?"right-start":"left-start":"down-centered"===t?r="bottom":"up-centered"===t&&(r="top"),r}const mr=t.forwardRef((({bsPrefix:e,className:n,align:r,rootCloseEvent:o,flip:a=!0,show:i,renderOnMount:l,as:u="div",popperConfig:s,variant:c,...f},d)=>{let p=!1;const m=(0,t.useContext)(fr),h=$(e,"dropdown-menu"),{align:v,drop:y,isRTL:b}=(0,t.useContext)(ar);r=r||v;const w=(0,t.useContext)(sr),x=[];if(r)if("object"==typeof r){const e=Object.keys(r);if(e.length){const t=e[0],n=r[t];p="start"===n,x.push(`${h}-${t}-${n}`)}}else"end"===r&&(p=!0);const E=pr(p,y,b),[k,{hasShown:C,popper:S,show:A,toggle:N}]=Ln({flip:a,rootCloseEvent:o,show:i,usePopper:!m&&0===x.length,offset:[0,2],popperConfig:s,placement:E});if(k.ref=ve(dr(d),k.ref),T((()=>{A&&(null==S||S.update())}),[A]),!C&&!l&&!w)return null;"string"!=typeof u&&(k.show=A,k.close=()=>null==N?void 0:N(!1),k.align=r);let O=f.style;return null!=S&&S.placement&&(O={...f.style,...k.style},f["x-placement"]=S.placement),(0,P.jsx)(u,{...f,...k,style:O,...(x.length||m)&&{"data-bs-popper":"static"},className:g()(n,h,A&&"show",p&&`${h}-end`,c&&`${h}-${c}`,...x)})}));mr.displayName="DropdownMenu";var hr=mr;const vr=t.forwardRef((({as:e,bsPrefix:t,variant:n="primary",size:r,active:o=!1,disabled:a=!1,className:i,...l},u)=>{const s=$(t,"btn"),[c,{tagName:f}]=_({tagName:e,disabled:a,...l}),d=f;return(0,P.jsx)(d,{...c,...l,ref:u,disabled:a,className:g()(i,s,o&&"active",n&&`${s}-${n}`,r&&`${s}-${r}`,l.href&&a&&"disabled")})}));vr.displayName="Button";var gr=vr;const yr=t.forwardRef((({bsPrefix:e,split:n,className:r,childBsPrefix:o,as:a=gr,...i},l)=>{const u=$(e,"dropdown-toggle"),s=(0,t.useContext)(Je);void 0!==o&&(i.bsPrefix=o);const[c]=qn();return c.ref=ve(c.ref,dr(l)),(0,P.jsx)(a,{className:g()(r,u,n&&`${u}-split`,(null==s?void 0:s.show)&&"show"),...c,...i})}));yr.displayName="DropdownToggle";var br=yr;const wr=Ne("dropdown-header",{defaultProps:{role:"heading"}}),xr=Ne("dropdown-divider",{Component:"hr",defaultProps:{role:"separator"}}),Er=Ne("dropdown-item-text",{Component:"span"}),kr=t.forwardRef(((e,n)=>{const{bsPrefix:r,drop:o="down",show:a,className:i,align:l="start",onSelect:u,onToggle:s,focusFirstItemOnShow:c,as:f="div",navbar:d,autoClose:p=!0,...m}=k(e,{show:"onToggle"}),h=(0,t.useContext)(sr),v=$(r,"dropdown"),y=function(){const{dir:e}=(0,t.useContext)(M);return"rtl"===e}(),b=S(((e,t)=>{var n;t.originalEvent.currentTarget!==document||"keydown"===t.source&&"Escape"!==t.originalEvent.key||(t.source="rootClose"),n=t.source,(!1===p?"click"===n:"inside"===p?"rootClose"!==n:"outside"!==p||"select"!==n)&&(null==s||s(e,t))})),w=pr("end"===l,o,y),x=(0,t.useMemo)((()=>({align:l,drop:o,isRTL:y})),[l,o,y]),E={down:v,"down-centered":`${v}-center`,up:"dropup","up-centered":"dropup-center dropup",end:"dropend",start:"dropstart"};return(0,P.jsx)(ar.Provider,{value:x,children:(0,P.jsx)(rr,{placement:w,show:a,onSelect:u,onToggle:b,focusFirstItemOnShow:c,itemSelector:`.${v}-item:not(.disabled):not(:disabled)`,children:h?m.children:(0,P.jsx)(f,{...m,ref:n,className:g()(i,a&&"show",E[o])})})})}));kr.displayName="Dropdown";var Cr=Object.assign(kr,{Toggle:br,Menu:hr,Item:lr,ItemText:Er,Divider:xr,Header:wr}),Sr=t.createContext(null);const Ar=["as","active","eventKey"];function Nr({key:e,onClick:n,active:r,id:o,role:a,disabled:i}){const l=(0,t.useContext)(Wn),u=(0,t.useContext)(Vn),s=(0,t.useContext)(Sr);let c=r;const f={role:a};if(u){a||"tablist"!==u.role||(f.role="tab");const t=u.getControllerId(null!=e?e:null),n=u.getControlledId(null!=e?e:null);f[Kn("event-key")]=e,f.id=t||o,c=null==r&&null!=e?u.activeKey===e:r,!c&&(null!=s&&s.unmountOnExit||null!=s&&s.mountOnEnter)||(f["aria-controls"]=n)}return"tab"===f.role&&(f["aria-selected"]=c,c||(f.tabIndex=-1),i&&(f.tabIndex=-1,f["aria-disabled"]=!0)),f.onClick=S((t=>{i||(null==n||n(t),null!=e&&l&&!t.isPropagationStopped()&&l(e,t))})),[f,{isActive:c}]}const Or=t.forwardRef(((e,t)=>{let{as:n=R,active:r,eventKey:o}=e,a=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,Ar);const[i,l]=Nr(Object.assign({key:Un(o,a.href),active:r},a));return i[Kn("active")]=l.isActive,(0,P.jsx)(n,Object.assign({},a,i,{ref:t}))}));Or.displayName="NavItem";var Tr=Or;const Pr=t.forwardRef((({bsPrefix:e,className:t,as:n=F,active:r,eventKey:o,disabled:a=!1,...i},l)=>{e=$(e,"nav-link");const[u,s]=Nr({key:Un(o,i.href),active:r,disabled:a,...i});return(0,P.jsx)(n,{...i,...u,ref:l,disabled:a,className:g()(t,e,a&&"disabled",s.isActive&&"active")})}));Pr.displayName="NavLink";var Lr=Pr;const _r=t.forwardRef((({id:e,title:t,children:n,bsPrefix:r,className:o,rootCloseEvent:a,menuRole:i,disabled:l,active:u,renderMenuOnMount:s,menuVariant:c,...f},d)=>{const p=$(void 0,"nav-item");return(0,P.jsxs)(Cr,{ref:d,...f,className:g()(o,p),children:[(0,P.jsx)(Cr.Toggle,{id:e,eventKey:null,active:u,disabled:l,childBsPrefix:r,as:Lr,children:t}),(0,P.jsx)(Cr.Menu,{role:i,renderOnMount:s,rootCloseEvent:a,variant:c,children:n})]})}));_r.displayName="NavDropdown";var jr=Object.assign(_r,{Item:Cr.Item,ItemText:Cr.ItemText,Divider:Cr.Divider,Header:Cr.Header});function Rr(e){return Rr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Rr(e)}function Dr(){Dr=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",i=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,n){return e[t]=n}}function s(e,t,n,o){var a=t&&t.prototype instanceof d?t:d,i=Object.create(a.prototype),l=new S(o||[]);return r(i,"_invoke",{value:x(e,n,l)}),i}function c(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var f={};function d(){}function p(){}function m(){}var h={};u(h,a,(function(){return this}));var v=Object.getPrototypeOf,g=v&&v(v(A([])));g&&g!==t&&n.call(g,a)&&(h=g);var y=m.prototype=d.prototype=Object.create(h);function b(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(r,a,i,l){var u=c(e[r],e,a);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==Rr(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,i,l)}),(function(e){o("throw",e,i,l)})):t.resolve(f).then((function(e){s.value=e,i(s)}),(function(e){return o("throw",e,i,l)}))}l(u.arg)}var a;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return a=a?a.then(r,r):r()}})}function x(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return{value:void 0,done:!0}}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var u=c(e,t,n);if("normal"===u.type){if(r=n.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(r="completed",n.method="throw",n.arg=u.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var o=c(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var a=o.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=m,r(y,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:p,configurable:!0}),p.displayName=u(m,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,u(e,l,"GeneratorFunction")),e.prototype=Object.create(y),e},e.awrap=function(e){return{__await:e}},b(w.prototype),u(w.prototype,i,(function(){return this})),e.AsyncIterator=w,e.async=function(t,n,r,o,a){void 0===a&&(a=Promise);var i=new w(s(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},b(y),u(y,l,"Generator"),u(y,a,(function(){return this})),u(y,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(l&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(l){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;C(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function Ir(e,t,n,r,o,a,i){try{var l=e[a](i),u=l.value}catch(e){return void n(e)}l.done?t(u):Promise.resolve(u).then(r,o)}function Fr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Mr(r,o){var a,i,l=(a=(0,t.useState)(null),i=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],u=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);u=!0);}catch(e){s=!0,o=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(a,i)||function(e,t){if(e){if("string"==typeof e)return Fr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Fr(e,t):void 0}}(a,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=l[0],s=l[1],c=u;if(null===u){var f,d=function(){var t,r=(t=Dr().mark((function t(){var r;return Dr().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,s(n().createElement(Ie,{size:"sm"})),r=new e,t.next=5,r.logout();case 5:o()&&f("You have been logged out.","success"),t.next=11;break;case 8:t.prev=8,t.t0=t.catch(0),f("Logout failed: "+t.t0.message,"error");case 11:case"end":return t.stop()}}),t,null,[[0,8]])})),function(){var e=this,n=arguments;return new Promise((function(r,o){var a=t.apply(e,n);function i(e){Ir(a,r,o,i,l,"next",e)}function l(e){Ir(a,r,o,i,l,"throw",e)}i(void 0)}))});return function(){return r.apply(this,arguments)}}(),p=function(e){"anonymous"===e.username?f():s(function(e,t){var r=n().createElement(n().Fragment,null,e.username," ",n().createElement("i",{className:"bi bi-person-fill"}));return n().createElement(jr,{align:"end",title:r},n().createElement(jr.Item,{as:"button",onClick:t,href:"#"},"Logout"))}(e,d))},m=function(e){f(e.message,"error")},h=function(e){r(e)&&p(e)};f=function(e,t){s(n().createElement(Ke,{message:e,messageType:t,then:h,onError:m}))},(new e).getSessionInfo().then(p).catch((function(e){return f(e.message,"info")})),c=n().createElement(Ie,{size:"sm"})}return n().createElement("div",{className:"user-component"},c)}Mr.defaultProps={onLogin:function(){return!0},onLogout:function(){return!0}};var zr={name:"CaosDB"};o(391);const qr=["as","onSelect","activeKey","role","onKeyDown"],$r=()=>{},Br=Kn("event-key"),Ur=t.forwardRef(((e,n)=>{let{as:r="div",onSelect:o,activeKey:a,role:i,onKeyDown:l}=e,u=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,qr);const s=Xe(),c=(0,t.useRef)(!1),f=(0,t.useContext)(Wn),d=(0,t.useContext)(Sr);let p,m;d&&(i=i||"tablist",a=d.activeKey,p=d.getControlledId,m=d.getControllerId);const h=(0,t.useRef)(null),v=e=>{const t=h.current;if(!t)return null;const n=Ge(t,`[${Br}]:not([aria-disabled=true])`),r=t.querySelector("[aria-selected=true]");if(!r||r!==document.activeElement)return null;const o=n.indexOf(r);if(-1===o)return null;let a=o+e;return a>=n.length&&(a=0),a<0&&(a=n.length-1),n[a]},g=(e,t)=>{null!=e&&(null==o||o(e,t),null==f||f(e,t))};(0,t.useEffect)((()=>{if(h.current&&c.current){const e=h.current.querySelector(`[${Br}][aria-selected=true]`);null==e||e.focus()}c.current=!1}));const y=ve(n,h);return(0,P.jsx)(Wn.Provider,{value:g,children:(0,P.jsx)(Vn.Provider,{value:{role:i,activeKey:Un(a),getControlledId:p||$r,getControllerId:m||$r},children:(0,P.jsx)(r,Object.assign({},u,{onKeyDown:e=>{if(null==l||l(e),!d)return;let t;switch(e.key){case"ArrowLeft":case"ArrowUp":t=v(-1);break;case"ArrowRight":case"ArrowDown":t=v(1);break;default:return}t&&(e.preventDefault(),g(t.dataset[("EventKey","rrUiEventKey")]||null,e),c.current=!0,s())},ref:y,role:i}))})})}));Ur.displayName="Nav";var Wr=Object.assign(Ur,{Item:Tr});const Hr=t.createContext(null);Hr.displayName="CardHeaderContext";var Vr=Hr,Qr=Ne("nav-item");const Kr=t.forwardRef(((e,n)=>{const{as:r="div",bsPrefix:o,variant:a,fill:i=!1,justify:l=!1,navbar:u,navbarScroll:s,className:c,activeKey:f,...d}=k(e,{activeKey:"onSelect"}),p=$(o,"nav");let m,h,v=!1;const y=(0,t.useContext)(fr),b=(0,t.useContext)(Vr);return y?(m=y.bsPrefix,v=null==u||u):b&&({cardHeaderBsPrefix:h}=b),(0,P.jsx)(Wr,{as:r,ref:n,activeKey:f,className:g()(c,{[p]:!v,[`${m}-nav`]:v,[`${m}-nav-scroll`]:v&&s,[`${h}-${a}`]:!!h,[`${p}-${a}`]:!!a,[`${p}-fill`]:i,[`${p}-justified`]:l}),...d})}));Kr.displayName="Nav";var Yr=Object.assign(Kr,{Item:Qr,Link:Lr});const Gr=t.forwardRef((({bsPrefix:e,className:t,as:n,...r},o)=>{e=$(e,"navbar-brand");const a=n||(r.href?"a":"span");return(0,P.jsx)(a,{...r,ref:o,className:g()(t,e)})}));Gr.displayName="NavbarBrand";var Xr=Gr,Jr=function(...e){return e.filter((e=>null!=e)).reduce(((e,t)=>{if("function"!=typeof t)throw new Error("Invalid Argument Type, must only provide functions, undefined, or null.");return null===e?t:function(...n){e.apply(this,n),t.apply(this,n)}}),null)};const Zr={height:["marginTop","marginBottom"],width:["marginLeft","marginRight"]};function eo(e,t){const n=t[`offset${e[0].toUpperCase()}${e.slice(1)}`],r=Zr[e];return n+parseInt(oe(t,r[0]),10)+parseInt(oe(t,r[1]),10)}const to={[V]:"collapse",[Y]:"collapsing",[Q]:"collapsing",[K]:"collapse show"};var no=n().forwardRef((({onEnter:e,onEntering:r,onEntered:o,onExit:a,onExiting:i,className:l,children:u,dimension:s="height",in:c=!1,timeout:f=300,mountOnEnter:d=!1,unmountOnExit:p=!1,appear:m=!1,getDimensionValue:h=eo,...v},y)=>{const b="function"==typeof s?s():s,w=(0,t.useMemo)((()=>Jr((e=>{e.style[b]="0"}),e)),[b,e]),x=(0,t.useMemo)((()=>Jr((e=>{const t=`scroll${b[0].toUpperCase()}${b.slice(1)}`;e.style[b]=`${e[t]}px`}),r)),[b,r]),E=(0,t.useMemo)((()=>Jr((e=>{e.style[b]=null}),o)),[b,o]),k=(0,t.useMemo)((()=>Jr((e=>{e.style[b]=`${h(b,e)}px`,me(e)}),a)),[a,h,b]),C=(0,t.useMemo)((()=>Jr((e=>{e.style[b]=null}),i)),[b,i]);return(0,P.jsx)(ge,{ref:y,addEndListener:pe,...v,"aria-expanded":v.role?c:null,onEnter:w,onEntering:x,onEntered:E,onExit:k,onExiting:C,childRef:u.ref,in:c,timeout:f,mountOnEnter:d,unmountOnExit:p,appear:m,children:(e,t)=>n().cloneElement(u,{...t,className:g()(l,u.props.className,to[e],"width"===b&&"collapse-horizontal")})})}));const ro=t.forwardRef((({children:e,bsPrefix:n,...r},o)=>{n=$(n,"navbar-collapse");const a=(0,t.useContext)(fr);return(0,P.jsx)(no,{in:!(!a||!a.expanded),...r,children:(0,P.jsx)("div",{ref:o,className:n,children:e})})}));ro.displayName="NavbarCollapse";var oo=ro;const ao=t.forwardRef((({bsPrefix:e,className:n,children:r,label:o="Toggle navigation",as:a="button",onClick:i,...l},u)=>{e=$(e,"navbar-toggler");const{onToggle:s,expanded:c}=(0,t.useContext)(fr)||{},f=S((e=>{i&&i(e),s&&s()}));return"button"===a&&(l.type="button"),(0,P.jsx)(a,{...l,ref:u,onClick:f,"aria-label":o,className:g()(n,e,!c&&"collapsed"),children:r||(0,P.jsx)("span",{className:`${e}-icon`})})}));ao.displayName="NavbarToggle";var io=ao,lo=new WeakMap,uo=function(e,t){if(e&&t){var n=lo.get(t)||new Map;lo.set(t,n);var r=n.get(e);return r||((r=t.matchMedia(e)).refCount=0,n.set(r.media,r)),r}};function so(e,n){void 0===n&&(n="undefined"==typeof window?void 0:window);var r=uo(e,n),o=(0,t.useState)((function(){return!!r&&r.matches})),a=o[0],i=o[1];return T((function(){var t=uo(e,n);if(!t)return i(!1);var r=lo.get(n),o=function(){i(t.matches)};return t.refCount++,t.addListener(o),o(),function(){t.removeListener(o),t.refCount--,t.refCount<=0&&(null==r||r.delete(t.media)),t=void 0}}),[e]),a}var co=function(e){var n=Object.keys(e);function r(e,t){return e===t?t:e?e+" and "+t:t}return function(o,a,i){var l,u;return"object"==typeof o?(l=o,i=a,a=!0):((u={})[o]=a=a||!0,l=u),so((0,t.useMemo)((function(){return Object.entries(l).reduce((function(t,o){var a,i=o[0],l=o[1];return"up"!==l&&!0!==l||(t=r(t,("number"==typeof(a=e[i])&&(a+="px"),"(min-width: "+a+")"))),"down"!==l&&!0!==l||(t=r(t,function(t){var r=function(e){return n[Math.min(n.indexOf(e)+1,n.length-1)]}(t),o=e[r];return"(max-width: "+(o="number"==typeof o?o-.2+"px":"calc("+o+" - 0.2px)")+")"}(i))),t}),"")}),[JSON.stringify(l)]),i)}}({xs:0,sm:576,md:768,lg:992,xl:1200,xxl:1400});function fo(e){void 0===e&&(e=Z());try{var t=e.activeElement;return t&&t.nodeName?t:null}catch(t){return e.body}}const po=Kn("modal-open");var mo=class{constructor({ownerDocument:e,handleContainerOverflow:t=!0,isRTL:n=!1}={}){this.handleContainerOverflow=t,this.isRTL=n,this.modals=[],this.ownerDocument=e}getScrollbarWidth(){return function(e=document){const t=e.defaultView;return Math.abs(t.innerWidth-e.documentElement.clientWidth)}(this.ownerDocument)}getElement(){return(this.ownerDocument||document).body}setModalAttributes(e){}removeModalAttributes(e){}setContainerStyle(e){const t={overflow:"hidden"},n=this.isRTL?"paddingLeft":"paddingRight",r=this.getElement();e.style={overflow:r.style.overflow,[n]:r.style[n]},e.scrollBarWidth&&(t[n]=`${parseInt(oe(r,n)||"0",10)+e.scrollBarWidth}px`),r.setAttribute(po,""),oe(r,t)}reset(){[...this.modals].forEach((e=>this.remove(e)))}removeContainerStyle(e){const t=this.getElement();t.removeAttribute(po),Object.assign(t.style,e.style)}add(e){let t=this.modals.indexOf(e);return-1!==t||(t=this.modals.length,this.modals.push(e),this.setModalAttributes(e),0!==t||(this.state={scrollBarWidth:this.getScrollbarWidth(),style:{}},this.handleContainerOverflow&&this.setContainerStyle(this.state))),t}remove(e){const t=this.modals.indexOf(e);-1!==t&&(this.modals.splice(t,1),!this.modals.length&&this.handleContainerOverflow&&this.removeContainerStyle(this.state),this.removeModalAttributes(e))}isTopModal(e){return!!this.modals.length&&this.modals[this.modals.length-1]===e}};const ho=(e,t)=>ae?null==e?(t||Z()).body:("function"==typeof e&&(e=e()),e&&"current"in e&&(e=e.current),e&&("nodeType"in e||e.getBoundingClientRect)?e:null):null;var vo=function({children:e,in:n,onExited:r,mountOnEnter:o,unmountOnExit:a}){const i=(0,t.useRef)(null),l=(0,t.useRef)(n),u=S(r);(0,t.useEffect)((()=>{n?l.current=!0:u(i.current)}),[n,u]);const s=ve(i,e.ref),c=(0,t.cloneElement)(e,{ref:s});return n?c:a||!l.current&&o?null:c};function go({children:e,in:n,onExited:r,onEntered:o,transition:a}){const[i,l]=(0,t.useState)(!n);n&&i&&l(!1);const u=function({in:e,onTransition:n}){const r=(0,t.useRef)(null),o=(0,t.useRef)(!0),a=S(n);return T((()=>{if(!r.current)return;let t=!1;return a({in:e,element:r.current,initial:o.current,isStale:()=>t}),()=>{t=!0}}),[e,a]),T((()=>(o.current=!1,()=>{o.current=!0})),[]),r}({in:!!n,onTransition:e=>{Promise.resolve(a(e)).then((()=>{e.isStale()||(e.in?null==o||o(e.element,e.initial):(l(!0),null==r||r(e.element)))}),(t=>{throw e.in||l(!0),t}))}}),s=ve(u,e.ref);return i&&!n?null:(0,t.cloneElement)(e,{ref:s})}function yo(e,t,n){return e?(0,P.jsx)(e,Object.assign({},n)):t?(0,P.jsx)(go,Object.assign({},n,{transition:t})):(0,P.jsx)(vo,Object.assign({},n))}const bo=["show","role","className","style","children","backdrop","keyboard","onBackdropClick","onEscapeKeyDown","transition","runTransition","backdropTransition","runBackdropTransition","autoFocus","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","manager","container","onShow","onHide","onExit","onExited","onExiting","onEnter","onEntering","onEntered"];let wo;const xo=(0,t.forwardRef)(((e,n)=>{let{show:r=!1,role:o="dialog",className:a,style:i,children:l,backdrop:u=!0,keyboard:s=!0,onBackdropClick:c,onEscapeKeyDown:f,transition:d,runTransition:p,backdropTransition:m,runBackdropTransition:h,autoFocus:v=!0,enforceFocus:g=!0,restoreFocus:y=!0,restoreFocusOptions:b,renderDialog:w,renderBackdrop:x=(e=>(0,P.jsx)("div",Object.assign({},e))),manager:E,container:k,onShow:C,onHide:O=(()=>{}),onExit:T,onExited:L,onExiting:_,onEnter:j,onEntering:R,onEntered:D}=e,I=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,bo);const F=function(e,n){const r=er(),[o,a]=(0,t.useState)((()=>ho(e,null==r?void 0:r.document)));if(!o){const t=ho(e);t&&a(t)}return(0,t.useEffect)((()=>{}),[n,o]),(0,t.useEffect)((()=>{const t=ho(e);t!==o&&a(t)}),[e,o]),o}(k),M=function(e){const n=er(),r=e||function(e){return wo||(wo=new mo({ownerDocument:null==e?void 0:e.document})),wo}(n),o=(0,t.useRef)({dialog:null,backdrop:null});return Object.assign(o.current,{add:()=>r.add(o.current),remove:()=>r.remove(o.current),isTopModal:()=>r.isTopModal(o.current),setDialogRef:(0,t.useCallback)((e=>{o.current.dialog=e}),[]),setBackdropRef:(0,t.useCallback)((e=>{o.current.backdrop=e}),[])})}(E),z=A(),q=N(r),[$,B]=(0,t.useState)(!r),W=(0,t.useRef)(null);(0,t.useImperativeHandle)(n,(()=>M),[M]),ae&&!q&&r&&(W.current=fo()),r&&$&&B(!1);const H=S((()=>{if(M.add(),ee.current=ce(document,"keydown",J),Z.current=ce(document,"focus",(()=>setTimeout(G)),!0),C&&C(),v){const e=fo(document);M.dialog&&e&&!xn(M.dialog,e)&&(W.current=e,M.dialog.focus())}})),V=S((()=>{var e;M.remove(),null==ee.current||ee.current(),null==Z.current||Z.current(),y&&(null==(e=W.current)||null==e.focus||e.focus(b),W.current=null)}));var Q,K,Y;(0,t.useEffect)((()=>{r&&F&&H()}),[r,F,H]),(0,t.useEffect)((()=>{$&&V()}),[$,V]),Q=()=>{V()},(K=(0,t.useRef)(Q)).current=Q,Y=K,(0,t.useEffect)((function(){return function(){return Y.current()}}),[]);const G=S((()=>{if(!g||!z()||!M.isTopModal())return;const e=fo();M.dialog&&e&&!xn(M.dialog,e)&&M.dialog.focus()})),X=S((e=>{e.target===e.currentTarget&&(null==c||c(e),!0===u&&O())})),J=S((e=>{s&&function(e){return"Escape"===e.code||27===e.keyCode}(e)&&M.isTopModal()&&(null==f||f(e),e.defaultPrevented||O())})),Z=(0,t.useRef)(),ee=(0,t.useRef)();if(!F)return null;const te=Object.assign({role:o,ref:M.setDialogRef,"aria-modal":"dialog"===o||void 0},I,{style:i,className:a,tabIndex:-1});let ne=w?w(te):(0,P.jsx)("div",Object.assign({},te,{children:t.cloneElement(l,{role:"document"})}));ne=yo(d,p,{unmountOnExit:!0,mountOnEnter:!0,appear:!0,in:!!r,onExit:T,onExiting:_,onExited:(...e)=>{B(!0),null==L||L(...e)},onEnter:j,onEntering:R,onEntered:D,children:ne});let re=null;return u&&(re=x({ref:M.setBackdropRef,onClick:X}),re=yo(m,h,{in:!!r,appear:!0,mountOnEnter:!0,unmountOnExit:!0,children:re})),(0,P.jsx)(P.Fragment,{children:U.createPortal((0,P.jsxs)(P.Fragment,{children:[re,ne]}),F)})}));xo.displayName="Modal";var Eo=Object.assign(xo,{Manager:mo}),ko=Ne("offcanvas-body");const Co={[Q]:"show",[K]:"show"},So=t.forwardRef((({bsPrefix:e,className:n,children:r,in:o=!1,mountOnEnter:a=!1,unmountOnExit:i=!1,appear:l=!1,...u},s)=>(e=$(e,"offcanvas"),(0,P.jsx)(ge,{ref:s,addEndListener:pe,in:o,mountOnEnter:a,unmountOnExit:i,appear:l,...u,childRef:r.ref,children:(o,a)=>t.cloneElement(r,{...a,className:g()(n,r.props.className,(o===Q||o===Y)&&`${e}-toggling`,Co[o])})}))));So.displayName="OffcanvasToggling";var Ao=So,No=t.createContext({onHide(){}});const Oo=t.forwardRef((({closeLabel:e="Close",closeVariant:n,closeButton:r=!1,onHide:o,children:a,...i},l)=>{const u=(0,t.useContext)(No),s=S((()=>{null==u||u.onHide(),null==o||o()}));return(0,P.jsxs)("div",{ref:l,...i,children:[a,r&&(0,P.jsx)(ke,{"aria-label":e,variant:n,onClick:s})]})}));var To=Oo;const Po=t.forwardRef((({bsPrefix:e,className:t,closeLabel:n="Close",closeButton:r=!1,...o},a)=>(e=$(e,"offcanvas-header"),(0,P.jsx)(To,{ref:a,...o,className:g()(t,e),closeLabel:n,closeButton:r}))));Po.displayName="OffcanvasHeader";var Lo=Po,_o=Ne("offcanvas-title",{Component:Ce("h5")});function jo(e,t){return e.replace(new RegExp("(^|\\\\s)"+t+"(?:\\\\s|$)","g"),"$1").replace(/\\s+/g," ").replace(/^\\s*|\\s*$/g,"")}const Ro=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Do=".sticky-top",Io=".navbar-toggler";class Fo extends mo{adjustAndStore(e,t,n){const r=t.style[e];t.dataset[e]=r,oe(t,{[e]:`${parseFloat(oe(t,e))+n}px`})}restore(e,t){const n=t.dataset[e];void 0!==n&&(delete t.dataset[e],oe(t,{[e]:n}))}setContainerStyle(e){super.setContainerStyle(e);const t=this.getElement();var n,r;if(r="modal-open",(n=t).classList?n.classList.add(r):function(e,t){return e.classList?e.classList.contains(t):-1!==(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")}(n,r)||("string"==typeof n.className?n.className=n.className+" "+r:n.setAttribute("class",(n.className&&n.className.baseVal||"")+" "+r)),!e.scrollBarWidth)return;const o=this.isRTL?"paddingLeft":"paddingRight",a=this.isRTL?"marginLeft":"marginRight";Ge(t,Ro).forEach((t=>this.adjustAndStore(o,t,e.scrollBarWidth))),Ge(t,Do).forEach((t=>this.adjustAndStore(a,t,-e.scrollBarWidth))),Ge(t,Io).forEach((t=>this.adjustAndStore(a,t,e.scrollBarWidth)))}removeContainerStyle(e){super.removeContainerStyle(e);const t=this.getElement();var n,r;r="modal-open",(n=t).classList?n.classList.remove(r):"string"==typeof n.className?n.className=jo(n.className,r):n.setAttribute("class",jo(n.className&&n.className.baseVal||"",r));const o=this.isRTL?"paddingLeft":"paddingRight",a=this.isRTL?"marginLeft":"marginRight";Ge(t,Ro).forEach((e=>this.restore(o,e))),Ge(t,Do).forEach((e=>this.restore(a,e))),Ge(t,Io).forEach((e=>this.restore(a,e)))}}let Mo;var zo=Fo;function qo(e){return(0,P.jsx)(Ao,{...e})}function $o(e){return(0,P.jsx)(we,{...e})}const Bo=t.forwardRef((({bsPrefix:e,className:n,children:r,"aria-labelledby":o,placement:a="start",responsive:i,show:l=!1,backdrop:u=!0,keyboard:s=!0,scroll:c=!1,onEscapeKeyDown:f,onShow:d,onHide:p,container:m,autoFocus:h=!0,enforceFocus:v=!0,restoreFocus:y=!0,restoreFocusOptions:b,onEntered:w,onExit:x,onExiting:E,onEnter:k,onEntering:C,onExited:A,backdropClassName:N,manager:O,renderStaticNode:T=!1,...L},_)=>{const j=(0,t.useRef)();e=$(e,"offcanvas");const{onToggle:R}=(0,t.useContext)(fr)||{},[D,I]=(0,t.useState)(!1),F=co(i||"xs","up");(0,t.useEffect)((()=>{I(i?l&&!F:l)}),[l,i,F]);const M=S((()=>{null==R||R(),null==p||p()})),z=(0,t.useMemo)((()=>({onHide:M})),[M]),q=(0,t.useCallback)((t=>(0,P.jsx)("div",{...t,className:g()(`${e}-backdrop`,N)})),[N,e]),B=t=>(0,P.jsx)("div",{...t,...L,className:g()(n,i?`${e}-${i}`:e,`${e}-${a}`),"aria-labelledby":o,children:r});return(0,P.jsxs)(P.Fragment,{children:[!D&&(i||T)&&B({}),(0,P.jsx)(No.Provider,{value:z,children:(0,P.jsx)(Eo,{show:D,ref:_,backdrop:u,container:m,keyboard:s,autoFocus:h,enforceFocus:v&&!c,restoreFocus:y,restoreFocusOptions:b,onEscapeKeyDown:f,onShow:d,onHide:M,onEnter:(e,...t)=>{e&&(e.style.visibility="visible"),null==k||k(e,...t)},onEntering:C,onEntered:w,onExit:x,onExiting:E,onExited:(e,...t)=>{e&&(e.style.visibility=""),null==A||A(...t)},manager:O||(c?(j.current||(j.current=new zo({handleContainerOverflow:!1})),j.current):(Mo||(Mo=new Fo(void 0)),Mo)),transition:qo,backdropTransition:$o,renderBackdrop:q,renderDialog:B})})]})}));Bo.displayName="Offcanvas";var Uo=Object.assign(Bo,{Body:ko,Header:Lo,Title:_o});const Wo=t.forwardRef(((e,n)=>{const r=(0,t.useContext)(fr);return(0,P.jsx)(Uo,{ref:n,show:!(null==r||!r.expanded),...e,renderStaticNode:!0})}));Wo.displayName="NavbarOffcanvas";var Ho=Wo;const Vo=Ne("navbar-text",{Component:"span"}),Qo=t.forwardRef(((e,n)=>{const{bsPrefix:r,expand:o=!0,variant:a="light",bg:i,fixed:l,sticky:u,className:s,as:c="nav",expanded:f,onToggle:d,onSelect:p,collapseOnSelect:m=!1,...h}=k(e,{expanded:"onToggle"}),v=$(r,"navbar"),y=(0,t.useCallback)(((...e)=>{null==p||p(...e),m&&f&&(null==d||d(!1))}),[p,m,f,d]);void 0===h.role&&"nav"!==c&&(h.role="navigation");let b=`${v}-expand`;"string"==typeof o&&(b=`${b}-${o}`);const w=(0,t.useMemo)((()=>({onToggle:()=>null==d?void 0:d(!f),bsPrefix:v,expanded:!!f,expand:o})),[v,f,o,d]);return(0,P.jsx)(fr.Provider,{value:w,children:(0,P.jsx)(Wn.Provider,{value:y,children:(0,P.jsx)(c,{ref:n,...h,className:g()(s,v,o&&b,a&&`${v}-${a}`,i&&`bg-${i}`,u&&`sticky-${u}`,l&&`fixed-${l}`)})})})}));Qo.displayName="Navbar";var Ko=Object.assign(Qo,{Brand:Xr,Collapse:oo,Offcanvas:Ho,Text:Vo,Toggle:io});const Yo=t.forwardRef((({bsPrefix:e,fluid:t=!1,as:n="div",className:r,...o},a)=>{const i=$(e,"container"),l="string"==typeof t?`-${t}`:"-fluid";return(0,P.jsx)(n,{ref:a,...o,className:g()(r,t?`${i}${l}`:i)})}));Yo.displayName="Container";var Go=Yo,Xo=o(496),Jo=o.n(Xo);function Zo(e){return Zo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Zo(e)}function ea(){ea=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,r,o){var a=new RegExp(e,r);return t.set(a,o||t.get(e)),ta(a,n.prototype)}function r(e,n){var r=t.get(n);return Object.keys(r).reduce((function(t,n){var o=r[n];if("number"==typeof o)t[n]=e[o];else{for(var a=0;void 0===e[o[a]]&&a+1<o.length;)a++;t[n]=e[o[a]]}return t}),Object.create(null))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ta(e,t)}(n,RegExp),n.prototype.exec=function(t){var n=e.exec.call(this,t);if(n){n.groups=r(n,this);var o=n.indices;o&&(o.groups=r(o,this))}return n},n.prototype[Symbol.replace]=function(n,o){if("string"==typeof o){var a=t.get(this);return e[Symbol.replace].call(this,n,o.replace(/\\$<([^>]+)>/g,(function(e,t){var n=a[t];return"$"+(Array.isArray(n)?n.join("$"):n)})))}if("function"==typeof o){var i=this;return e[Symbol.replace].call(this,n,(function(){var e=arguments;return"object"!=Zo(e[e.length-1])&&(e=[].slice.call(e)).push(r(e,i)),o.apply(this,e)}))}return e[Symbol.replace].call(this,n,o)},ea.apply(this,arguments)}function ta(e,t){return ta=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ta(e,t)}function na(){na=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",i=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,n){return e[t]=n}}function s(e,t,n,o){var a=t&&t.prototype instanceof d?t:d,i=Object.create(a.prototype),l=new S(o||[]);return r(i,"_invoke",{value:x(e,n,l)}),i}function c(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var f={};function d(){}function p(){}function m(){}var h={};u(h,a,(function(){return this}));var v=Object.getPrototypeOf,g=v&&v(v(A([])));g&&g!==t&&n.call(g,a)&&(h=g);var y=m.prototype=d.prototype=Object.create(h);function b(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(r,a,i,l){var u=c(e[r],e,a);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==Zo(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,i,l)}),(function(e){o("throw",e,i,l)})):t.resolve(f).then((function(e){s.value=e,i(s)}),(function(e){return o("throw",e,i,l)}))}l(u.arg)}var a;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return a=a?a.then(r,r):r()}})}function x(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return{value:void 0,done:!0}}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var u=c(e,t,n);if("normal"===u.type){if(r=n.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(r="completed",n.method="throw",n.arg=u.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var o=c(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var a=o.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=m,r(y,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:p,configurable:!0}),p.displayName=u(m,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,u(e,l,"GeneratorFunction")),e.prototype=Object.create(y),e},e.awrap=function(e){return{__await:e}},b(w.prototype),u(w.prototype,i,(function(){return this})),e.AsyncIterator=w,e.async=function(t,n,r,o,a){void 0===a&&(a=Promise);var i=new w(s(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},b(y),u(y,l,"Generator"),u(y,a,(function(){return this})),u(y,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(l&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(l){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;C(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function ra(e,t,n,r,o,a,i){try{var l=e[a](i),u=l.value}catch(e){return void n(e)}l.done?t(u):Promise.resolve(u).then(r,o)}function oa(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function i(e){ra(a,r,o,i,l,"next",e)}function l(e){ra(a,r,o,i,l,"throw",e)}i(void 0)}))}}function aa(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,o=function(e,t){if("object"!==Zo(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==Zo(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key),"symbol"===Zo(o)?o:String(o)),r)}var o}var ia=["FIND","FILE","ENTITY","SELECT","COUNT","RECORD","PROPERTY","RECORDTYPE","REFERENCES","REFERENCED BY","WHICH","WITH","CREATED BY","CREATED BY ME","CREATED AT","CREATED ON","CREATED IN","CREATED BEFORE","CREATED UNTIL","CREATED AFTER","CREATED SINCE","SOMEONE","STORED AT","HAS A PROPERTY","HAS BEEN","ANY VERSION OF","FROM","INSERTED AT","INSERTED ON","INSERTED IN","INSERTED BY","INSERTED BY ME","INSERTED BEFORE","INSERTED UNTIL","INSERTED AFTER","INSERTED SINCE","UPDATED AT","UPDATED ON","UPDATED IN","UPDATED BY","UPDATED BY ME","UPDATED BEFORE","UPDATED UNTIL","UPDATED AFTER","UPDATED SINCE","SINCE","BEFORE","ON","IN","AFTER","UNTIL","AT","BY","BY ME"];function la(e){return e.map((function(e){var t=e;return t.indexOf(" ")>-1&&(t=e.indexOf(\'"\')>-1?"\'".concat(t,"\'"):\'"\'.concat(t,\'"\')),{original:e,normalized:e.trim().toLowerCase(),escaped:t}}))}function ua(e){return e.map((function(e){return{original:e,normalized:e.trim().toLowerCase(),escaped:e}}))}var sa=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._cql_words=ua(n||ia),this._terms=t||[],this._resolved_terms=void 0}var t,n,r,o,a,i,l;return t=e,n=[{key:"getSuggestions",value:(l=oa(na().mark((function e(t,n,r){return na().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=4;break}return e.next=3,this.getCqlSuggestions(n,r);case 3:case 6:return e.abrupt("return",e.sent);case 4:return e.next=6,this.getSearchTermSuggestions(n,r);case 7:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return l.apply(this,arguments)})},{key:"_do_resolve_terms",value:(i=oa(na().mark((function e(t){var n;return na().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!=typeof t){e.next=6;break}return e.next=3,t();case 3:n=e.sent,e.next=9;break;case 6:return e.next=8,t;case 8:n=e.sent;case 9:return e.next=11,la(n);case 11:return e.abrupt("return",e.sent);case 12:case"end":return e.stop()}}),e)}))),function(e){return i.apply(this,arguments)})},{key:"_getTerms",value:(a=oa(na().mark((function e(){return na().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._resolved_terms||(this._resolved_terms=this._do_resolve_terms(this._terms)),e.next=3,this._resolved_terms;case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)}))),function(){return a.apply(this,arguments)})},{key:"getSearchTermSuggestions",value:(o=oa(na().mark((function e(t,n){var r,o;return na().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._getTerms();case 2:return r=e.sent,t===n&&(r=ua(["FIND","SELECT","COUNT"]).concat(r)),o=n.trim().toLowerCase(),e.abrupt("return",r.filter((function(e){return e.normalized.startsWith(o)})));case 6:case"end":return e.stop()}}),e,this)}))),function(e,t){return o.apply(this,arguments)})},{key:"getCqlSuggestions",value:(r=oa(na().mark((function e(t,n){var r,o;return na().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this._cql_words,o=n.trim().toLowerCase(),e.t0=r.filter((function(e){return e.normalized.startsWith(o)})),e.next=5,this.getSearchTermSuggestions(t,n);case 5:return e.t1=e.sent,e.abrupt("return",e.t0.concat.call(e.t0,e.t1));case 7:case"end":return e.stop()}}),e,this)}))),function(e,t){return r.apply(this,arguments)})}],n&&aa(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),ca=function(e){return(e=e.toUpperCase().trim()).startsWith("FIND")||e.startsWith("COUNT")||e.startsWith("SELECT")},fa=function(e){return e.toUpperCase().trim().startsWith("SELECT")},da={"=":"=",">":">","≥":">=","<":"<","≤":"<=","≠":"!=",equals:"=",in:"in","not in":"not in","after date":">","since date":">=","until date":"<=","before date":"<","on date":"on","not on date":"not on"},pa={boolean:["is true","is false"],text:["equals","not equals","contains","not contains"],integer:["=","≠","≥","≤","<",">","range"],double:["=","≠","≥","≤","<",">","range"],datetime:["=","≠","on date","in","not on date","not in","after date","before date","until date","since date"]},ma={boolean:{"is true":function(e){return"(".concat(e," = TRUE)")},"is false":function(e){return"(".concat(e," = FALSE)")}},text:{contains:function(e,t,n){return"(".concat(e,\' LIKE "*\').concat(n,\'*")\')},"not equals":function(e,t,n){return"(NOT ".concat(e,\' = "\').concat(n,\'")\')},"not contains":function(e,t,n){return"(NOT ".concat(e,\' LIKE "*\').concat(n,\'*")\')}},integer:{range:function(e,t,n,r){return"(".concat(e," > ").concat(n[0]).concat(r,") AND (").concat(e," < ").concat(n[1]).concat(r,")")}},double:{range:function(e,t,n,r){return"(".concat(e," > ").concat(n[0]).concat(r,") AND (").concat(e," < ").concat(n[1]).concat(r,")")}},_default:{_default:function(e,t,n,r){n=n||"";var o=""!==(r=r||"")?"":-1===n.indexOf(\'"\')?\'"\':"\'";if(da[t])return"(".concat(e," ").concat(da[t]," ").concat(o).concat(n).concat(r).concat(o,")");throw new Error("Could not translate ".concat(e," ").concat(t," filter"),n)}}},ha=function(e){return function(t,n){var r="FIND RECORD";e&&(r+=\' "\'.concat(e,\'"\'));var o=" WITH ";if(t&&t.length>0){var a=ga(t).map((function(e){return"A PROPERTY LIKE \'*".concat(e.replaceAll("\'","\\\\\'"),"*\'")}));a.length&&(o=" AND ",r+=" WITH "+a.join(o))}var i=n.map((function(e){return function(e,t,n,r,o){if(e&&n){if(o=o||"",ma[e]){if(ma[e][n]||null===ma[e][n])return ma[e][n](t,n,r,o);if(ma[e]._default||null===ma[e]._default)return ma[e]._default(t,n,r,o)}return ma._default[n]?ma._default[n](t,n,r,o):ma._default._default(t,n,r,o)}}(e.datatype,e.property,e.operator,e.value,e.unit)}));return i.length>0&&(r+=o+i.join(" AND ")),r}},va=ea(/"([^"]*)" |\'([^\']*)\' |([^ ]+)/g,{dq:1,sq:2,nq:3}),ga=function(e){return Array.from((e+" ").matchAll(va),(function(e){return e[1]||e[2]||e[3]})).filter((function(e){return e}))};function ya(e,t,n,r,o,a){return{id:e,recordType:t,label:n||t||e,description:r||"Show only results of type ".concat(n||t||e),makeQuery:o||ha(t),filterDefinitions:a||[]}}var ba=function(){var e=oa(na().mark((function e(t,n,r){var o;return na().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=new sa((function(){return[r+"-suggestion1",r+"-suggestion2",r+"-suggestion3",r+"-suggestion4",r+"-suggestion5",r+"-suggestion6",r+"-suggestion7",r+"-suggestion8",r+"-suggestion9",r+"-suggestion10",r+"-suggestion11",r+"-suggestion12",r+"-suggestion13",r+"-suggestion14",r+"-suggestion15"]}),ia),e.abrupt("return",o.getSuggestions(t,n,r));case 2:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}();function wa(e){return wa="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},wa(e)}function xa(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ea(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?xa(Object(n),!0).forEach((function(t){ka(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):xa(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ka(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==wa(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==wa(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===wa(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ca(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],u=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);u=!0);}catch(e){s=!0,o=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Sa(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Sa(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Sa(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Aa(){return Aa=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Aa.apply(this,arguments)}var Na,Oa=n().createContext({}),Ta=function(e){var r=e.onChange,o=e.value,a=(0,t.useCallback)((function(e){var t={target:{value:[e.target.value,o[1]]}};r(t)}),[r,o]),i=(0,t.useCallback)((function(e){var t={target:{value:[o[0],e.target.value]}};r(t)}),[r,o]);return n().createElement(n().Fragment,null,n().createElement("input",Aa({type:"number"},e,{value:e.value[0],onChange:a,max:e.value[1]})),n().createElement("span",{className:"mx-1"},"to"),n().createElement("input",Aa({type:"number"},e,{value:e.value[1],onChange:i,min:e.value[0]})),e.unitElement)},Pa=function(e){var r=e.min,o=e.max,a=e.step,i=e.value,l=e.setValue,u=e.datatype,s=e.operator,c=e.unit,f=e.inputtype,d=(0,t.useCallback)((function(e){return l(e.target.value)}),[l]);if(u&&s){var p={className:"form-control form-control-sm",onChange:d,value:i,min:r,max:o};f&&(p.type=f),a&&(p.step=a);var m=c&&n().createElement("span",{className:"ms-1",title:"The unit"},c),h={boolean:{_default:null},integer:{_default:n().createElement(n().Fragment,null,n().createElement("input",Aa({},p,{type:"number",step:"1"})),m),range:n().createElement(Ta,Aa({unitElement:m},p,{step:"1"}))},double:{_default:n().createElement(n().Fragment,null,n().createElement("input",Aa({step:"0.001"},p,{type:"number"})),m),range:n().createElement(Ta,Aa({unitElement:m,step:"0.001"},p))},_default:{_default:n().createElement("input",p)}};if(h[u]){if(h[u][s]||null===h[u][s])return h[u][s];if(h[u]._default||null===h[u]._default)return h[u]._default}return h._default[s]?h._default[s]:h._default._default}};function La(){return n().createElement("div",{className:"caosdb-f-query-cql-hint",title:"You are using the expert search mode. Enter a valid CQL Query."},"CQL")}function _a(e){var r=e.tab,o=e.setActiveTab,a=e.isActiveTab,i=(0,t.useCallback)((function(){a||o(r)}),[r,o,a]),l="caosdb-f-query-tab"+(a?" active":"");return n().createElement("button",{type:"button",title:r.description,tabIndex:a?"-1":"0",className:l,onClick:a?void 0:i},r.label)}function ja(e){var r=e.filter,o=e.filterIdx,a=e.updateFilter,i=e.restoreOperator,l=e.restoreValue,u=Ca((0,t.useState)(r.operator||pa[r.datatype][0]),2),s=u[0],c=u[1],f=Ca((0,t.useState)(r.value||""),2),d=f[0],p=f[1],m=n().createElement(Pa,{datatype:r.datatype,operator:s,setValue:p,value:d,unit:r.unit,min:r.min,max:r.max,step:r.step,inputtype:r.inputtype});return(0,t.useEffect)((function(){i&&s!==i&&c(i)}),[i,s]),(0,t.useEffect)((function(){l&&d!==l&&p(l)}),[l,d]),(0,t.useEffect)((function(){s!==r.operator&&a(o,{restoreOperator:void 0,operator:s})}),[s,r.operator,o,a]),(0,t.useEffect)((function(){d!==r.value&&a(o,{restoreValue:void 0,value:d})}),[d,r.value,o,a]),n().createElement(n().Fragment,null,n().createElement("div",null,n().createElement("select",{className:"form-select form-select-sm",value:s,onChange:function(e){return c(e.target.value)}},pa[r.datatype].map((function(e,t){return n().createElement("option",{key:t},e)})))),n().createElement("div",{className:"d-flex"},m))}function Ra(e){var t=e.selected,r=e.filterDefinitions,o=e.onChange,a=e.title;return n().createElement("select",{title:a,className:"form-select form-select-sm",value:t,onChange:o},r.map((function(e,t){return n().createElement("option",{value:e.property,style:e.style,key:t},e.label||e.property)})))}function Da(e){var r=e.filterDefinitions,o=e.addFilter,a=(0,t.useCallback)((function(e){o(e.target.value)}),[o]);return n().createElement("div",null,n().createElement(Ra,{filterDefinitions:r.concat({property:"__add_filter__",label:"Add Filter",style:{display:"none"}}),selected:"__add_filter__",title:"Add Filter",onChange:a}))}function Ia(e){var r=e.filterDefinitions,o=e.filterIdx,a=e.activeFilters,i=e.updateFilter,l=e.setProperty,u=e.removeFilter,s=a&&a[o],c=(0,t.useCallback)((function(e){l(o,e.target.value)}),[l,o]),f=(0,t.useCallback)((function(){return u(o)}),[u,o]);return n().createElement(n().Fragment,null,n().createElement("div",{className:"caosdb-f-query-filter-property-selector"},n().createElement(Ra,{filterDefinitions:r,selected:s.property,onChange:c})),n().createElement(ja,{restoreValue:s.restoreValue,restoreOperator:s.restoreOperator,updateFilter:i,filterIdx:o,filter:s}),n().createElement("div",{className:"text-end flex-grow-1"},n().createElement("button",{type:"button",className:"btn btn-sm btn-outline-secondary",onClick:f},"Remove Filter")))}function Fa(e){var r=e.filterDefinitions,o=e.activeFilters,a=e.setActiveFilters,i=(0,t.useCallback)((function(e){a(o.filter((function(t,n){return n!==e})))}),[o,a]),l=(0,t.useCallback)((function(e,t){var n=[].concat(o);n[e]=Ea(Ea({},n[e]),t),a(n)}),[o,a]),u=(0,t.useCallback)((function(e,t){var n=r.filter((function(e){return e.property===t}))[0];l(e,{restoreValue:"",restoreOperator:pa[n.datatype][0],property:t,datatype:n.datatype,unit:n.unit,min:n.min,max:n.max,filter:n})}),[l,r]),s=(0,t.useCallback)((function(e){var t=r.filter((function(t){return t.property===e}))[0];a(o.concat({property:e,datatype:t.datatype,unit:t.unit,min:t.min,max:t.max,filter:t}))}),[o,a,r]);return n().createElement(n().Fragment,null,o.map((function(e,t){return n().createElement(Ia,{key:t,filterIdx:t,filterDefinitions:r,activeFilters:o,setActiveFilters:a,updateFilter:l,setProperty:u,removeFilter:i})})),n().createElement("div",{className:"d-flex"},n().createElement(Da,{filterDefinitions:r,addFilter:s}),o.length>0&&n().createElement("button",{type:"submit",title:"Search with filters",className:"btn btn-primary btn-sm ms-auto"},"Search")))}function Ma(e){var r=e.filterDefinitions,o=e.activeFilters,a=e.setActiveFilters,i=Ca((0,t.useState)(o.length>0),2),l=i[0],u=i[1],s=l?"Cancel Advanced Filtering":"Advanced Filtering";return n().createElement(n().Fragment,null,n().createElement("button",{type:"button",onClick:function(){return u(!l)},className:"btn ms-auto caosdb-f-query-filters-toggle",title:s},l?n().createElement("i",{className:"bi bi-x"}):n().createElement("i",{className:"bi bi-filter"})),l&&n().createElement("div",{className:"caosdb-f-query-tab-filters w-100"},n().createElement(Fa,{filterDefinitions:r,activeFilters:o,setActiveFilters:a})))}function za(e){var r=e.tabs,o=e.setActiveTab,a=e.activeTab,i=e.activeFilters,l=e.setActiveFilters,u=(0,t.useMemo)((function(){return a&&a.filterDefinitions&&a.filterDefinitions.length>0}),[a]);return n().createElement("div",{className:"caosdb-f-query-tab-list d-flex flex-wrap"},r.map((function(e){return n().createElement(_a,{isActiveTab:a.id===e.id,setActiveTab:o,key:e.label,tab:e})}))," ",u&&n().createElement(Ma,Aa({},a,{activeFilters:i,setActiveFilters:l})))}function qa(e){var t=e.isSubmitted,r=e.active;return t?n().createElement(Ie,{className:"align-self-center",size:"sm"}):n().createElement("button",{"aria-label":"search",title:"Search",type:"submit",disabled:!r},n().createElement("i",{className:"bi bi-search"}))}function $a(e){var t=e.suggestion,r=e.isHighlighted,o=e.onMouseEnter;return n().createElement("li",{onMouseEnter:o,className:r?"highlight":""},t.original)}function Ba(e){var t=e.suggestions,r=e.highlightIndex,o=e.selectSuggestion;return n().createElement(n().Fragment,null,t.map((function(e,t){return n().createElement($a,{onMouseEnter:function(){return o(t)},key:t,isHighlighted:r===t,suggestion:e})})))}function Ua(e){var r=e.unselectSuggestions,o=e.selectSuggestion,a=e.highlightIndex,i=e.suggestions,l=e.getInputRef,u=e.wordPos,s=e.word,c=e.xOffset,f=(0,t.useRef)(),d=n().createElement(Ba,{selectSuggestion:o,highlightIndex:a,suggestions:i});return(0,t.useEffect)((function(){a>-1&&f.current.scroll(0,24*a-48)}),[a]),(0,t.useEffect)((function(){var e=l(),t=Jo()(e.current,u),n=e.current.getBoundingClientRect().width;if(t.left>n){var r=Jo()(e.current,u+s.length).left-t.left;f.current.style.marginLeft="".concat(n-r,"px")}else t.left>8&&(f.current.style.marginLeft="".concat(t.left-8,"px"))}),[s,l,u]),n().createElement("div",{onMouseLeave:r,style:{paddingLeft:c},className:"caosdb-f-query-form-sug-container"},n().createElement("ol",{ref:f,className:"caosdb-f-query-form-sug"},d))}function Wa(e,t){var n,r,o,a,i;switch(t.type){case"onFocus":return Ea(Ea({},e),{},{refocus:!1,focus:!0});case"onBlur":return e.onClickValue?Ea(Ea({},e),{},{value:e.onClickValue,cursorPos:e.onClickCursorPos,onClickCursorPos:void 0,onClickValue:void 0,refocus:!0,open:!1}):Ea(Ea({},e),{},{focus:!1});case"onChange":return n=t.target.selectionEnd,r=t.target.value.slice(0,n).lastIndexOf(" ")+1,i=(a=(o=t.target.value.slice(r,n)).length>2)&&t.getSuggestionsCallback?t.getSuggestionsCallback(ca(t.target.value),t.target.value,o):null,Ea(Ea({},e),{},{onClickValue:void 0,onClickCursorPos:void 0,highlightIndex:-1,cursorPos:n,cursorPosNoCompletion:n,wordPos:r,value:t.target.value,valueNoCompletion:t.target.value,refocus:!1,word:o,open:a,unresolvedSuggestions:i});case"resolveSuggestions":return Ea(Ea({},e),{},{suggestions:t.suggestions});case"onArrowDown":if(e.open&&e.suggestions&&e.highlightIndex<e.suggestions.length-1){var l=e.highlightIndex+1,u=e.valueNoCompletion.slice(0,e.wordPos)+e.suggestions[l].escaped+e.valueNoCompletion.slice(e.cursorPosNoCompletion),s=e.wordPos+e.suggestions[l].escaped.length;return Ea(Ea({},e),{},{cursorPos:s,value:u,highlightIndex:l})}break;case"unselectSuggestions":return Ea(Ea({},e),{},{onClickCursorPos:void 0,onClickValue:void 0});case"selectSuggestion":if(t.index>-1&&t.index<e.suggestions.length){var c=e.valueNoCompletion.slice(0,e.wordPos)+e.suggestions[t.index].escaped+e.valueNoCompletion.slice(e.cursorPosNoCompletion)+" ",f=e.wordPos+e.suggestions[t.index].escaped.length+1;return Ea(Ea({},e),{},{onClickValue:c,onClickCursorPos:f})}break;case"restore":return Ea(Ea({},e),{},{value:t.value});case"onArrowUp":if(e.open&&e.highlightIndex>-1){var d=e.highlightIndex-1,p=d<0?e.valueNoCompletion:e.valueNoCompletion.slice(0,e.wordPos)+e.suggestions[d].escaped+e.valueNoCompletion.slice(e.cursorPosNoCompletion),m=d<0?e.cursorPosNoCompletion:e.wordPos+e.suggestions[d].escaped.length;return Ea(Ea({},e),{},{cursorPos:m,value:p,highlightIndex:d})}}return e}function Ha(e){var r=e.setQueryString,o=e.isCql,a=e.restoreQueryString,i=(0,t.useContext)(Oa),l=i.getSuggestionsCallback,u=i.isSubmitted,s=(0,t.useRef)(),c=(0,t.useRef)(),f=Ca((0,t.useReducer)(Wa,{refocus:!1,value:"",focus:!1,open:!1,word:"",highlightIndex:-1,unresolvedSuggestions:null,suggestions:null}),2),d=f[0],p=f[1];(0,t.useEffect)((function(){r(d.value)}),[d.value,r]),(0,t.useEffect)((function(){a&&p({type:"restore",value:a})}),[a]);var m=(0,t.useCallback)((function(){p({type:"onFocus"})}),[]),h=(0,t.useCallback)((function(){p({type:"onBlur"})}),[]),v=(0,t.useCallback)((function(){p({type:"onArrowUp"})}),[]),g=(0,t.useCallback)((function(){p({type:"onArrowDown"})}),[]),y=(0,t.useCallback)((function(e){p({type:"onChange",target:e.target,getSuggestionsCallback:l})}),[l]),b=(0,t.useCallback)((function(e){return"ArrowDown"===e.key?(e.preventDefault(),g(e)):"ArrowUp"===e.key?(e.preventDefault(),v(e)):void 0}),[v,g]),w=(0,t.useCallback)((function(){p({type:"unselectSuggestions"})}),[]),x=(0,t.useCallback)((function(e){p({type:"selectSuggestion",index:e})}),[]),E="caosdb-f-query-form";d.open&&(E+=" open"),d.focus&&(E+=" focus"),(0,t.useEffect)((function(){d.unresolvedSuggestions&&d.unresolvedSuggestions.then((function(e){p({type:"resolveSuggestions",suggestions:e})}))}),[d.unresolvedSuggestions]),(0,t.useEffect)((function(){s.current.setSelectionRange(d.cursorPos,d.cursorPos)}),[d.value,d.cursorPos]);var k=(0,t.useCallback)((function(){return s}),[s]);return(0,t.useEffect)((function(){d.refocus&&s.current.focus()}),[d]),n().createElement("div",{ref:c,className:E},n().createElement("div",{className:"d-flex"},o&&n().createElement(La,null),n().createElement("input",{disabled:u,className:"flex-grow-1","aria-label":"enter search terms",name:"query",title:"Enter search terms",onFocus:m,onBlur:h,onKeyDown:b,onChange:y,value:d.value,ref:s}),n().createElement(qa,{active:d.value.length>0,isSubmitted:u})),d.open&&d.suggestions&&n().createElement(Ua,{unselectSuggestions:w,selectSuggestion:x,word:d.word,wordPos:d.wordPos,getInputRef:k,suggestions:d.suggestions,highlightIndex:d.highlightIndex,xOffset:o?44:0}))}function Va(e){var r=e.submitCallback,o=e.tabs,a=e.defaultTab,i=e.getSuggestionsCallback,l=e.restoreCallback,u=e.storeCallback,s=e.restore?l(o):{},c=s.restoreQueryString,f=s.restoreActiveFilters,d=s.restoreActiveTab,p=Ca((0,t.useState)(!1),2),m=p[0],h=p[1],v=Ca((0,t.useState)(""),2),g=v[0],y=v[1],b=Ca((0,t.useState)(d||o[a]),2),w=b[0],x=b[1],E=Ca((0,t.useState)(f||[]),2),k=E[0],C=E[1],S=(0,t.useCallback)((function(e){e.preventDefault(),h(!0),u(w,k,g);var t=o.filter((function(e){return e.id===w.id}))[0]||{},n=ca(g),a=n&&fa(g),i=n||!t.makeQuery?function(e){return e}:t.makeQuery,l=a?-1:void 0;return r(i(g,k),l)}),[o,w,k,g,r,u]),A=ca(g),N=(0,t.useMemo)((function(){return{isSubmitted:m,queryString:g,getSuggestionsCallback:i}}),[g,i,m]),O=(0,t.useCallback)((function(e){x(e),C([])}),[C,x]);return n().createElement("form",{onSubmit:S},n().createElement(Oa.Provider,{value:N},n().createElement(Ha,{restoreQueryString:c,isCql:A,setQueryString:y}),!A&&n().createElement(za,{tabs:o,activeTab:w,setActiveTab:O,activeFilters:k,setActiveFilters:C})))}Va.AutoCompletion=sa,Va.defaultProps={submitCallback:function(e,t){console.log("submit query: ",e,t),setTimeout((function(){alert(e),window.location.href=window.location.href}),1e3)},tabs:(Na=function(e){return[{property:e+"-text-property",datatype:"text"},{property:e+"-datetime-property",datatype:"datetime"},{property:e+"-integer-property",datatype:"integer"},{property:e+"-double-property",datatype:"double",min:"-50",max:"50",unit:"m"},{property:e+"-boolean-property",datatype:"boolean"},{property:\'"\'.concat(e,\'-reference-property"."sub-property"\'),label:"sub-property of ".concat(e,"-reference-property"),datatype:"text"}]},[ya("all",void 0,"All","Show all matching results",ha(""),Na("all")),ya("dataset","Dataset","Dataset",void 0,ha("Dataset"),Na("dataset")),ya("event","Event","Event",void 0,ha("Event"),Na("event")),ya("person","Person","Person",void 0,ha("Person"),Na("person"))]),defaultTab:0,getSuggestionsCallback:ba,restoreCallback:function(e){var t={restoreActiveTab:window.localStorage["query.activeTab"]&&JSON.parse(window.localStorage["query.activeTab"]),restoreActiveFilters:window.localStorage["query.activeFilters"]&&JSON.parse(window.localStorage["query.activeFilters"]),restoreQueryString:window.localStorage["query.queryString"]||""};return t.restoreActiveTab&&0===e.filter((function(e){return e.id===t.restoreActiveTab.id})).length?(window.localStorage.removeItem("query.activeTab"),window.localStorage.removeItem("query.activeFilters"),window.localStorage.removeItem("query.queryString"),{}):t},storeCallback:function(e,t,n){window.localStorage.removeItem("query.activeTab"),window.localStorage.removeItem("query.activeFilters"),window.localStorage.removeItem("query.queryString"),e&&(window.localStorage["query.activeTab"]=JSON.stringify(e)),t&&t.length>0&&(window.localStorage["query.activeFilters"]=JSON.stringify(t)),n&&n.length>0&&(window.localStorage["query.queryString"]=n)},restore:!1};var Qa=0,Ka=void 0,Ya=function(e){"number"==typeof Ka&&clearTimeout(Ka);var t=e.getBoundingClientRect(),n=t.top,r=t.bottom;Qa===r-n?Ka=setTimeout((function(){Ka=void 0,window.pageYOffset>Qa?e.classList.add("condensed"):e.classList.remove("condensed")}),200):Qa=r-n},Ga=function(e){return(0,t.useEffect)((function(){return window.addEventListener("scroll",e.scrollHandler),function(){window.removeEventListener("scroll",e.scrollHandler)}}),[e.scrollHandler]),n().createElement(Go,null,n().createElement(Va,e))};function Xa(e){return Xa="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xa(e)}function Ja(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,o=function(e,t){if("object"!==Xa(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==Xa(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key),"symbol"===Xa(o)?o:String(o)),r)}var o}Ga.propTypes={scrollHandler:h().func};var Za=new(function(){function e(t){var n=t.items,r=t.brand,o=t.user_component;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.items=n||[],this.brand=r||zr.name,this.update_listeners=[],this.user_component=o}var t,n;return t=e,(n=[{key:"registerUpdateListener",value:function(e){this.update_listeners.push(e)}},{key:"addLink",value:function(e){this.items.push(e),this.notifyUpdateListeners()}},{key:"notifyUpdateListeners",value:function(){this.update_listeners.forEach((function(e){return e()}))}}])&&Ja(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}())({items:[n().createElement(Yr.Link,{key:"0",href:"#action1"},"Home"),n().createElement(Yr.Link,{key:"1",href:"#action2"},"Link"),n().createElement(jr,{key:"2",title:"Link"},n().createElement(jr.Item,{href:"#action3"},"Action"),n().createElement(jr.Item,{href:"#action4"},"Another action"),n().createElement(jr.Divider,null),n().createElement(jr.Item,{href:"#action5"},"Something else here")),n().createElement(Yr.Link,{key:"3",href:"#",disabled:!0},"Link")],user_component:n().createElement(Mr,null)}),ei=function(){var e=(0,t.useRef)(),r=(0,t.useCallback)((function(){Ya(e.current)}),[e]);return n().createElement(Ko,{bg:"light",expand:"lg"},n().createElement(Go,{fluid:!0},n().createElement("span",{className:"d-lg-none d-inline"},Za.brand),n().createElement(Ko.Toggle,{"aria-controls":"navbarScroll"}),n().createElement(Ko.Collapse,{id:"navbarScroll"},n().createElement(Ko.Brand,{className:"d-none d-lg-inline"},Za.brand),n().createElement(Yr,{className:"me-auto my-2 my-lg-0"},Za.items.map((function(e,t){return n().createElement("span",{key:t},e)}))),n().createElement(Yr,{ref:e,className:"caosdb-f-query-panel me-lg-2 full"},n().createElement(Ga,{restore:!0,scrollHandler:r})),n().createElement(Yr,null,Za.user_component))))},ti=function(){return n().createElement("header",{className:"shadow-sm bg-light"},n().createElement(ei,null))};function ni(e){return ni="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ni(e)}function ri(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,o=function(e,t){if("object"!==ni(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==ni(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key),"symbol"===ni(o)?o:String(o)),r)}var o}function oi(e,t,n){return t&&ri(e.prototype,t),n&&ri(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var ai=new(oi((function e(t){var n=t.items,r=t.copyRight;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.items=n,this.copyRight=r})))({items:[n().createElement("a",{key:"0",className:"nav-link px-2",href:"https://www.gnu.org/licenses/agpl-3.0.en.html"},"License (AGPL-v3)"),n().createElement("a",{key:"1",className:"nav-link px-2",href:"https://gitlab.com/caosdb"},"Sources"),n().createElement("a",{key:"3",className:"nav-link px-2",href:"https://docs.indiscale.com/"},"Documentation")],copyRight:"© 2021 IndiScale GmbH"}),ii=function(){return n().createElement("footer",null,n().createElement("div",{className:"footer-border"}),n().createElement("div",{className:"footer-body"},n().createElement("div",{className:"container py-3 my-4"},n().createElement("ul",{className:"nav align-items-center justify-content-center pb-3 mb-3"},ai.items.map((function(e,t){var r=0===t?null:n().createElement("li",{className:"nav-item px-1"},"•");return n().createElement(n().Fragment,{key:t},r,n().createElement("li",{className:"nav-item"},e))}))),n().createElement("p",{className:"text-center"},ai.copyRight))))};function li(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ui(e){var r,o,a=e.loading||n().createElement(Ie,null),i=(r=(0,t.useState)(a),o=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],u=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);u=!0);}catch(e){s=!0,o=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(r,o)||function(e,t){if(e){if("string"==typeof e)return li(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?li(e,t):void 0}}(r,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=i[0],u=i[1];return(0,t.useEffect)((function(){var t=e.promise;e.then&&(t=t.then(e.then));var r=e.catch||function(e){return e=e&&e.message?e.message:e,n().createElement("span",null,"An unhandled error occured: ",e)};t.catch(r).then(u)}),[e.promise,e.then,e.catch]),l}function si(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var ci=function(e){var r,o,a=e.name,i=e.value,l=e.icons,u=e.style,s=e.color,c=e.readOnly,f=e.onChange,d=e.onBlur,p=e.setValue,m=e.title,h=(r=(0,t.useState)(i||"false"),o=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],u=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);u=!0);}catch(e){s=!0,o=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(r,o)||function(e,t){if(e){if("string"==typeof e)return si(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?si(e,t):void 0}}(r,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),v=h[0],g=h[1];u=u||"check";var y,b={x:{true:"bi bi-x-square"+(s=s||{check:{true:" text-success",false:" text-body",partial:" color-light-green"},"check-fill":{true:" text-success",false:" text-body",partial:" color-light-green"},x:{true:" text-danger",false:" text-body",partial:" text-warning"},"x-fill":{true:" text-danger",false:" text-body",partial:" text-warning"}}[u]).true,false:"bi bi-square"+s.false,partial:"bi bi-slash-square"+s.partial},"x-fill":{true:"bi bi-x-square-fill"+s.true,false:"bi bi-square"+s.false,partial:"bi bi-slash-square-fill"+s.partial},check:{true:"bi bi-check-square"+s.true,false:"bi bi-square"+s.false,partial:"bi bi-slash-square"+s.partial},"check-fill":{true:"bi bi-check-square-fill"+s.true,false:"bi bi-square"+s.false,partial:"bi bi-slash-square-fill"+s.partial}},w={partial:"false",true:"false",false:"true"},x={};c||(y=n().createElement("input",{className:"caosdb-check-box-input",onChange:f,tabIndex:"-1",type:"hidden",name:a,value:v}),x.onClick=function(){p(a,w[v]),g(w[v])},x.onKeyDown=function(e){"Space"===e.code&&(p(a,w[v]),g(w[v]),e.preventDefault())},x.tabIndex="0",x.onBlur=d);var E=(l=l||{})[v]||n().createElement("i",{className:"ms-1 caosdb-checkbox-icon "+b[u][v]}),k="caosdb-checkbox d-flex align-items-center";return c&&(k+=" read-only"),n().createElement("span",{title:m,className:k,role:"checkbox","aria-checked":v},y,n().createElement("span",x,E))};ci.propTypes={name:h().string.isRequired,value:h().oneOf(["true","false"]),icons:h().object,style:h().string,color:h().object,readOnly:h().bool,onChange:h().func,onBlur:h().func,setValue:h().func,title:h().string};var fi=function(e){var t=e.className,r=e.children;return t=t||"",n().createElement("div",{className:"card mt-3 rounded shadow ".concat(t)},r)};fi.propTypes={className:h().string,children:h().oneOfType([h().arrayOf(h().node),h().node])},fi.Body=function(e){var t=e.children;return n().createElement("div",{className:"card-body"},t)},fi.Body.propTypes={children:h().oneOfType([h().arrayOf(h().node),h().node])},fi.Footer=function(e){var t=e.children;return n().createElement("div",{className:"card-footer d-flex justify-content-between"},t)},fi.Footer.propTypes={children:h().oneOfType([h().arrayOf(h().node),h().node])},fi.Title=function(e){var t=e.children;return n().createElement("h3",{className:"card-title"},t)},fi.Title.propTypes={children:h().oneOfType([h().arrayOf(h().node),h().node])},fi.Header=function(e){var t=e.title,r=e.children;return t=t?n().createElement(fi.Title,null,t):void 0,n().createElement("div",{className:"card-header"},t,r)},fi.Header.propTypes={title:h().node,children:h().oneOfType([h().arrayOf(h().node),h().node])};var di=o(379),pi=o.n(di),mi=o(795),hi=o.n(mi),vi=o(569),gi=o.n(vi),yi=o(565),bi=o.n(yi),wi=o(216),xi=o.n(wi),Ei=o(589),ki=o.n(Ei),Ci=o(550),Si={};Si.styleTagTransform=ki(),Si.setAttributes=bi(),Si.insert=gi().bind(null,"head"),Si.domAPI=hi(),Si.insertStyleElement=xi(),pi()(Ci.Z,Si),Ci.Z&&Ci.Z.locals&&Ci.Z.locals}(),a}()}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LFVBQW9CLENBQzVCQSxJQUFBQSxRQUFrQkEsSUFBQUEsTUFDbEJBLElBQUFBLFFBSUppbkYsR0FBS3JRLE1BQVEsU0FBa0I3dEIsR0FBZSxJQUFaN2dELEVBQVE2Z0QsRUFBUjdnRCxTQUNoQyxPQUFPZ3lDLElBQUFBLGNBQUEsTUFBSUMsVUFBVSxjQUFjanlDLEVBQ3JDLEVBRUErK0UsR0FBS3JRLE1BQU1yMUIsVUFBWSxDQUNyQnI1QyxTQUFVbEksSUFBQUEsVUFBb0IsQ0FDNUJBLElBQUFBLFFBQWtCQSxJQUFBQSxNQUNsQkEsSUFBQUEsUUFJSmluRixHQUFLemUsT0FBUyxTQUFtQjdXLEdBQXNCLElBQW5CckssRUFBS3FLLEVBQUxySyxNQUFPcC9DLEVBQVF5cEQsRUFBUnpwRCxTQUV6QyxPQURBby9DLEVBQVFBLEVBQVFwTixJQUFBQSxjQUFDK3NDLEdBQUtyUSxNQUFLLEtBQUV0dkIsUUFBc0J2c0QsRUFFakRtL0MsSUFBQUEsY0FBQSxPQUFLQyxVQUFVLGVBQ1ptTixFQUNBcC9DLEVBR1AsRUFFQSsrRSxHQUFLemUsT0FBT2puQixVQUFZLENBQ3RCK0YsTUFBT3RuRCxJQUFBQSxLQUNQa0ksU0FBVWxJLElBQUFBLFVBQW9CLENBQzVCQSxJQUFBQSxRQUFrQkEsSUFBQUEsTUFDbEJBLElBQUFBLG9KQ3pEQSxHQUFVLENBQUMsRUFFZixHQUFRbXZDLGtCQUFvQixLQUM1QixHQUFRTCxjQUFnQixLQUVsQixHQUFRTixPQUFTLFVBQWMsS0FBTSxRQUUzQyxHQUFRVixPQUFTLEtBQ2pCLEdBQVFvQixtQkFBcUIsS0FFaEIsS0FBSSxLQUFTLElBS0osTUFBVyxhQUFpQiIsInNvdXJjZXMiOlsid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24/ZGRkNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcz8zOGVkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9pbmRleC5zY3NzPzRlY2QiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcz80NDI1Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzPzU2MTkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2ludmFyaWFudC9icm93c2VyLmpzPzlkOGIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMtZXh0cmEvbGliL2FsbC5qcz9lZGI2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzLWV4dHJhL2xpYi91dGlscy9jcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlci5qcz9kOGZmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcz81MWY2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzPzk3NjciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzPzA3OTIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9janMvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzPzg5MDciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9pbmRleC5qcz82ZTdlIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanM/NzFmMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanM/ZDViNSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanM/YzYwNiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2luZGV4LmpzP2Y3ZDUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzPzBmY2EiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qcz9iNzNjIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcz9lYmUzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qcz9mZjdkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzPzRlYTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanM/NGRiZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvdGV4dGFyZWEtY2FyZXQvaW5kZXguanM/Y2VkYSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvd2FybmluZy93YXJuaW5nLmpzPzM3MTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL2V4dGVybmFsIHVtZCB7XCJjb21tb25qc1wiOlwiQGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlXCIsXCJjb21tb25qczJcIjpcIkBpbmRpc2NhbGUvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZVwiLFwiYW1kXCI6XCJDYW9zREJJbmZvU2VydmljZVwiLFwicm9vdFwiOlwiQ2Fvc0RCSW5mb1NlcnZpY2VcIn0/MWY5OSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvZXh0ZXJuYWwgdW1kIHtcImNvbW1vbmpzXCI6XCJyZWFjdFwiLFwiY29tbW9uanMyXCI6XCJyZWFjdFwiLFwiYW1kXCI6XCJSZWFjdFwiLFwicm9vdFwiOlwiUmVhY3RcIn0/ZjczNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay9ib290c3RyYXA/NWNiNiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQ/MGYwNiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzPzJkMDQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svcnVudGltZS9nbG9iYWw/Njg1NCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZD9iZjNkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Pzk3NWEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svcnVudGltZS9ub25jZT9hYzk0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9JbmZvU2VydmljZS5qcz85YjNmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL1NlcnZlclZlcnNpb25JbmZvLmpzeD9kYjA0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzLmpzPzM2OWMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanM/YTE1ZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvdW5jb250cm9sbGFibGUvbGliL2VzbS91dGlscy5qcz9kOGQ2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy91bmNvbnRyb2xsYWJsZS9saWIvZXNtL2hvb2suanM/ZGI1YiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZUNvbW1pdHRlZFJlZi5qcz81YTdiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlRXZlbnRDYWxsYmFjay5qcz9jNTFjIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlTW91bnRlZC5qcz9jZmQ0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlUHJldmlvdXMuanM/ZTQ1NSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZUlzb21vcnBoaWNFZmZlY3QuanM/ZTE4ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZVJlc2l6ZU9ic2VydmVyLmpzPzlmM2YiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9CdXR0b24uanM/NzJhYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0FuY2hvci5qcz84ZWQ5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL1RoZW1lUHJvdmlkZXIuanM/YjAzYyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanM/MGExYyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vVHJhbnNpdGlvbkdyb3VwQ29udGV4dC5qcz8yZDQ2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2VzbS9UcmFuc2l0aW9uLmpzP2Q3ZjciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzTG9vc2UuanM/MDcwYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vdXRpbHMvcmVmbG93LmpzPzM3NTciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9vd25lckRvY3VtZW50LmpzPzE1NTIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9oeXBoZW5hdGUuanM/NjIzNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2h5cGhlbmF0ZVN0eWxlLmpzPzdlNTQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9pc1RyYW5zZm9ybS5qcz8yYWQ5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vY3NzLmpzP2UxOTYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9nZXRDb21wdXRlZFN0eWxlLmpzP2E0ZGEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9vd25lcldpbmRvdy5qcz81YTJmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vY2FuVXNlRE9NLmpzPzRhMDciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9hZGRFdmVudExpc3RlbmVyLmpzP2Q1MTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9saXN0ZW4uanM/ZmU5MyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL3JlbW92ZUV2ZW50TGlzdGVuZXIuanM/MDk0MyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL3RyYW5zaXRpb25FbmQuanM/ZmJkZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL3RyaWdnZXJFdmVudC5qcz80NzU0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL3RyYW5zaXRpb25FbmRMaXN0ZW5lci5qcz9kZDNmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL3RyaWdnZXJCcm93c2VyUmVmbG93LmpzPzQ1ODkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VNZXJnZWRSZWZzLmpzPzFhZTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vVHJhbnNpdGlvbldyYXBwZXIuanM/NjE0OCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9zYWZlRmluZERPTU5vZGUuanM/YmQ0YSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9GYWRlLmpzPzRhZmQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vQ2xvc2VCdXR0b24uanM/OTUwMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9kaXZXaXRoQ2xhc3NOYW1lLmpzP2Q4MWIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9jYW1lbGl6ZS5qcz9iZDdiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL2NyZWF0ZVdpdGhCc1ByZWZpeC5qcz8xMzMwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0FsZXJ0LmpzPzA2NDIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvTWVzc2FnZS5qc3g/Mjc1YiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9Mb2FkaW5nSW5mby5qc3g/MTdlOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9Mb2dpbkZvcm0uanN4P2E1ZjMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9xdWVyeVNlbGVjdG9yQWxsLmpzPzc5YTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VGb3JjZVVwZGF0ZS5qcz9jODljIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vRHJvcGRvd25Db250ZXh0LmpzPzhiZTciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RlcXVhbC9kaXN0L2luZGV4Lm1qcz8yNmJiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qcz83ZmUyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcz9lMzZjIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2luc3RhbmNlT2YuanM/ZDUyZSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21hdGguanM/N2I1MSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VzZXJBZ2VudC5qcz8xZThhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzTGF5b3V0Vmlld3BvcnQuanM/ODkyZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanM/ZTdmNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzPzhmMzIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvY29udGFpbnMuanM/MTk2OCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlTmFtZS5qcz9jMGEzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanM/YTFiZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1RhYmxlRWxlbWVudC5qcz82OWNlIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qcz8zMDBhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFBhcmVudE5vZGUuanM/MmRiMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanM/MWFkMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qcz84NGYzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvd2l0aGluLmpzPzYyOGUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanM/MWZkNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qcz9iYTY2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzPzQ2NTEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcy5qcz9kNWE4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2Fycm93LmpzPzFiYjQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRWYXJpYXRpb24uanM/YjhhMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzP2I1OWQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanM/NDhkOSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzP2FhYmUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qcz9mNWZhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbC5qcz8xZTk2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbEJhclguanM/MDc0OCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1Njcm9sbFBhcmVudC5qcz9hNjQ1Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFNjcm9sbFBhcmVudC5qcz9jMGViIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzPzliYTQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzPzEzZWUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzPzQ4MDgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzP2Q5YTIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzP2QwODYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlT2Zmc2V0cy5qcz83NjQzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanM/MTliMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9mbGlwLmpzPzA1NjciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qcz81MGFiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2hpZGUuanM/MDAwMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9vZmZzZXQuanM/MDc2ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanM/ZWU5NyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEFsdEF4aXMuanM/ZmMwMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzPzVmNDAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZVNjcm9sbC5qcz8yZmMxIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzPzVlNDIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9vcmRlck1vZGlmaWVycy5qcz80NTBjIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvY3JlYXRlUG9wcGVyLmpzPzY2ODUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9wb3BwZXIuanM/NGQ4MCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RlYm91bmNlLmpzP2M2MzMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZUJ5TmFtZS5qcz80NDk0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanM/NGQ3MCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL3VzZVBvcHBlci5qcz8wMjA3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlU2FmZVN0YXRlLmpzP2E5NTYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9jb250YWlucy5qcz8yMjNmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vdXNlQ2xpY2tPdXRzaWRlLmpzPzNhN2MiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9tZXJnZU9wdGlvbnNXaXRoUG9wcGVyQ29uZmlnLmpzPzUyNzgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9Ecm9wZG93bk1lbnUuanM/NDJhZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZUNhbGxiYWNrUmVmLmpzP2I0OGEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZWFjdC1hcmlhL3Nzci9kaXN0L2ltcG9ydC5tanM/N2Y3OCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0Ryb3Bkb3duVG9nZ2xlLmpzPzVjN2MiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9TZWxlY3RhYmxlQ29udGV4dC5qcz9kNDc5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vTmF2Q29udGV4dC5qcz8yMzIwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vRGF0YUtleS5qcz84ZjcwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vRHJvcGRvd25JdGVtLmpzPzA0OTkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS91c2VXaW5kb3cuanM/OWVmNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0Ryb3Bkb3duLmpzP2JkNjIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VFdmVudExpc3RlbmVyLmpzP2EyZTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vRHJvcGRvd25Db250ZXh0LmpzPzQ3ZDYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vRHJvcGRvd25JdGVtLmpzPzJmZTIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vSW5wdXRHcm91cENvbnRleHQuanM/YTRjNSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZiYXJDb250ZXh0LmpzPzMwNGIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vdXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nLmpzPzk1MTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vRHJvcGRvd25NZW51LmpzP2ZhOTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vQnV0dG9uLmpzP2ZkYTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vRHJvcGRvd25Ub2dnbGUuanM/YTI5ZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Ecm9wZG93bi5qcz85Yjk4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vVGFiQ29udGV4dC5qcz8yMmI3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vTmF2SXRlbS5qcz9lY2IyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdkxpbmsuanM/MWZhMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZEcm9wZG93bi5qcz9jNTExIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL1VzZXJDb21wb25lbnQuanN4P2Q2ZGIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL0JyYW5kaW5nLmpzP2E3ODMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9OYXYuanM/NTRkMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9DYXJkSGVhZGVyQ29udGV4dC5qcz9hYmUwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdkl0ZW0uanM/ZDVjNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXYuanM/ZTY3ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZiYXJCcmFuZC5qcz9iM2E4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL2NyZWF0ZUNoYWluZWRGdW5jdGlvbi5qcz80MDI4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0NvbGxhcHNlLmpzP2QyM2QiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2YmFyQ29sbGFwc2UuanM/YjZiMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZiYXJUb2dnbGUuanM/NTY0ZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZU1lZGlhUXVlcnkuanM/ZDU2ZSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZUJyZWFrcG9pbnQuanM/NTc2MiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2FjdGl2ZUVsZW1lbnQuanM/ODQ5NyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL01vZGFsTWFuYWdlci5qcz84NmI5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vZ2V0U2Nyb2xsYmFyV2lkdGguanM/YmUxMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL3VzZVdhaXRGb3JET01SZWYuanM/NWViMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL05vb3BUcmFuc2l0aW9uLmpzPzUxYWQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9JbXBlcmF0aXZlVHJhbnNpdGlvbi5qcz9jMzc0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vTW9kYWwuanM/YmJlYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZVdpbGxVbm1vdW50LmpzP2Y4YTYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VVcGRhdGVkUmVmLmpzPzNiNTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS91dGlscy5qcz80Y2IxIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL09mZmNhbnZhc0JvZHkuanM/MzY1MyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9PZmZjYW52YXNUb2dnbGluZy5qcz9hZTk1Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL01vZGFsQ29udGV4dC5qcz9hMDlkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Fic3RyYWN0TW9kYWxIZWFkZXIuanM/YWJlMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9PZmZjYW52YXNIZWFkZXIuanM/MmY2MiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9PZmZjYW52YXNUaXRsZS5qcz8xNDEzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vcmVtb3ZlQ2xhc3MuanM/YTFhMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Cb290c3RyYXBNb2RhbE1hbmFnZXIuanM/NzllNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2FkZENsYXNzLmpzPzJlMjkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9oYXNDbGFzcy5qcz80NTVlIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL09mZmNhbnZhcy5qcz9mNTI0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdmJhck9mZmNhbnZhcy5qcz80MzkzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdmJhci5qcz80MTFmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0NvbnRhaW5lci5qcz80OWQ4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL1F1ZXJ5Rm9ybS5oZWxwZXJzLmpzPzcwOGQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvUXVlcnlGb3JtLmpzeD80MDMyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL1F1ZXJ5UGFuZWwuanN4PzMwZDEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvVG9wTmF2aWdhdGlvbkJhci5qc3g/ZWUwOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9IZWFkZXIuanN4P2I1ZmIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvRm9vdGVyLmpzeD8xOGQzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL0F3YWl0LmpzeD9hNDhkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL0NoZWNrYm94LmpzeD9iYWNiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL0NhcmQuanN4PzEzNTQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2luZGV4LnNjc3M/ZWQ3NSJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSwgKGZ1bmN0aW9uIHdlYnBhY2tMb2FkT3B0aW9uYWxFeHRlcm5hbE1vZHVsZSgpIHsgdHJ5IHsgcmV0dXJuIHJlcXVpcmUoXCJAaW5kaXNjYWxlL2Nhb3NkYi13ZWJ1aS1pbmZvLXNlcnZpY2VcIik7IH0gY2F0Y2goZSkge30gfSgpKSk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXCJSZWFjdFwiLCBcIkNhb3NEQkluZm9TZXJ2aWNlXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIkNhb3NEQkNvcmVDb21wb25lbnRzXCJdID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIiksIChmdW5jdGlvbiB3ZWJwYWNrTG9hZE9wdGlvbmFsRXh0ZXJuYWxNb2R1bGUoKSB7IHRyeSB7IHJldHVybiByZXF1aXJlKFwiQGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlXCIpOyB9IGNhdGNoKGUpIHt9IH0oKSkpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIkNhb3NEQkNvcmVDb21wb25lbnRzXCJdID0gZmFjdG9yeShyb290W1wiUmVhY3RcIl0sIHJvb3RbXCJDYW9zREJJbmZvU2VydmljZVwiXSk7XG59KShzZWxmLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX182MzlfXywgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fMTg5X18pIHtcbnJldHVybiAiLCIvKiFcblx0Q29weXJpZ2h0IChjKSAyMDE4IEplZCBXYXRzb24uXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5cdGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cdHZhciBuYXRpdmVDb2RlU3RyaW5nID0gJ1tuYXRpdmUgY29kZV0nO1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAmJiAhYXJnLnRvU3RyaW5nLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuY2Fvc2RiLWYtcXVlcnktY3FsLWhpbnR7Ym9yZGVyLXJhZGl1czoycmVtO2JhY2tncm91bmQtY29sb3I6I2Q5ZDlkOTtjb2xvcjojMjYyNjI2O3BhZGRpbmc6LjFyZW0gLjRyZW19LmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3Vne2Rpc3BsYXk6bm9uZX1uYXYgLm5hdmJhci1jb2xsYXBzZXthbGlnbi1pdGVtczpzdGFydDtmbGV4LXdyYXA6d3JhcH1uYXYgLm5hdmJhci1jb2xsYXBzZSBmb3Jte2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4sLmNhb3NkYi1mLXF1ZXJ5LXBhbmVse21hcmdpbi10b3A6LjVyZW07d2lkdGg6MTAwJTtvcmRlcjoxfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybXtvcmRlcjp1bnNldDtoZWlnaHQ6NDRweDtwYWRkaW5nLWxlZnQ6MnJlbTtwYWRkaW5nLXRvcDouNXJlbTtwYWRkaW5nLXJpZ2h0OjJyZW07cGFkZGluZy1ib3R0b206LjVyZW07Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjJyZW19LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm06aG92ZXIsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtOmhvdmVyLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1c3tib3gtc2hhZG93OjAgMXB4IDZweCByZ2JhKDMyLDMzLDM2LC4yOCl9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZywuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1Z3ttYXJnaW4tdG9wOi41cmVtO2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmlubGluZS1ibG9jazttYXgtaGVpZ2h0OjIwMHB4O3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93LXk6YXV0bztib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDMyLDMzLDM2LC4yOCk7cGFkZGluZzowcHh9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyBsaSwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyBsaXtwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbTtoZWlnaHQ6MjRweDtsaXN0LXN0eWxlLXR5cGU6bm9uZX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5vcGVuIG9sLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIGxpLmhpZ2hsaWdodCwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyBsaS5oaWdobGlnaHR7YmFja2dyb3VuZC1jb2xvcjojZDlkOWQ5fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcgbGk6aG92ZXIsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcgbGk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZDlkOWQ5fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLnN1Ym1pdC5vcGVuIC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZywuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMuc3VibWl0Lm9wZW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3Vne2Rpc3BsYXk6bm9uZX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybSBidXR0b24sLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtIGJ1dHRvbntiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym9yZGVyOm5vbmV9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0gaW5wdXQsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtIGlucHV0e2JvcmRlcjpub25lfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtIGlucHV0OmZvY3VzLC5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtIGlucHV0OmZvY3VzLXZpc2libGUsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtIGlucHV0OmZvY3VzLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybSBpbnB1dDpmb2N1cy12aXNpYmxle291dGxpbmU6bm9uZX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiBmb3JtLC5jYW9zZGItZi1xdWVyeS1wYW5lbCBmb3Jte2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktdGFiLWxpc3QsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS10YWItbGlzdHttYXJnaW4tdG9wOi41cmVtO3BhZGRpbmctbGVmdDoxcmVtO3BhZGRpbmctcmlnaHQ6MXJlbX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVyc3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVycyBpbnB1dC5mb3JtLWNvbnRyb2wsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVycyBpbnB1dC5mb3JtLWNvbnRyb2x7ZGlzcGxheTp1bnNldDt3aWR0aDp1bnNldH0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktdGFiLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFie2hlaWdodDo0NHB4O21hcmdpbi1yaWdodDoxcmVtO3BhZGRpbmc6NnB4O2JhY2tncm91bmQtY29sb3I6dW5zZXQ7Ym9yZGVyOm5vbmU7Ym9yZGVyLWJvdHRvbTouMnJlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS10YWIuYWN0aXZlLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFiLmFjdGl2ZXtib3JkZXItYm90dG9tOi4ycmVtIHNvbGlkIGdyYXl9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZpbHRlci1wcm9wZXJ0eS1zZWxlY3RvciwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZpbHRlci1wcm9wZXJ0eS1zZWxlY3RvcntmbGV4LWJhc2lzOjEwMCV9QG1lZGlhKG1pbi13aWR0aDogOTkycHgpey5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptYXgtY29udGVudCBtYXgtY29udGVudCBhdXRvIG1heC1jb250ZW50O2dyaWQtY29sdW1uLWdhcDouNXJlbTtwYWRkaW5nOi4ycmVtIDByZW19LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVycyBpbnB1dC5mb3JtLWNvbnRyb2x7ZGlzcGxheTp1bnNldDt3aWR0aDp1bnNldH0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2Vke21hcmdpbi10b3A6MDt3aWR0aDp1bnNldDtvcmRlcjp1bnNldH0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIGZvcm17ZmxleC1kaXJlY3Rpb246cm93fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQgLmNhb3NkYi1mLXF1ZXJ5LWZpbHRlcnMtdG9nZ2xle2Rpc3BsYXk6bm9uZX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIC5jYW9zZGItZi1xdWVyeS10YWItbGlzdHttYXJnaW4tdG9wOjByZW19LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZCAuY2Fvc2RiLWYtcXVlcnktdGFie2hlaWdodDozOHB4fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJze2Rpc3BsYXk6bm9uZX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIC5jYW9zZGItZi1xdWVyeS1mb3Jte2hlaWdodDozOHB4O29yZGVyOjE7cGFkZGluZy1sZWZ0OjFyZW07cGFkZGluZy10b3A6LjNyZW07cGFkZGluZy1yaWdodDoxcmVtO3BhZGRpbmctYm90dG9tOi4zcmVtfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3Vne2Rpc3BsYXk6bm9uZX19LnVzZXItY29tcG9uZW50IC5hbGVydHtwYWRkaW5nLXRvcDouMzc1cmVtO3BhZGRpbmctYm90dG9tOi4zNzVyZW07Zm9udC1zaXplOjFyZW07bWFyZ2luOjB9aGVhZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjE1KTtib3JkZXItcmFkaXVzOjB9Zm9vdGVye2NvbG9yOiM4Nzg3ODd9Zm9vdGVyIC5uYXZ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2EwYTBhMH1mb290ZXIgLm5hdi1saW5re2NvbG9yOiM4Nzg3ODcgIWltcG9ydGFudH1mb290ZXIgLm5hdi1saW5rOmhvdmVye2NvbG9yOiM2ZDZkNmQgIWltcG9ydGFudH1mb290ZXIgLmZvb3Rlci1ib2R5e2JvcmRlci10b3A6MXB4IHNvbGlkICNiYWJhYmE7YmFja2dyb3VuZC1jb2xvcjojZDNkM2QzO21pbi1oZWlnaHQ6MjByZW19Zm9vdGVyIC5mb290ZXItYm9yZGVye2hlaWdodDozcmVtO2JveC1zaGFkb3c6MHB4IC01cHggN3B4IC01cHggcmdiYSgwLDAsMCwuNCkgaW5zZXQ7LXdlYmtpdC1ib3gtc2hhZG93OjBweCAtNXB4IDdweCAtNXB4IHJnYmEoMCwwLDAsLjQpIGluc2V0Oy1tb3otYm94LXNoYWRvdzowcHggLTVweCA2cHggLTdweCByZ2JhKDAsMCwwLC40KSBpbnNldH0uY2Fvc2RiLWNoZWNrYm94e2N1cnNvcjpwb2ludGVyfS5jYW9zZGItY2hlY2tib3ggLmNhb3NkYi1jaGVja2JveC1pY29ue2ZvbnQtc2l6ZToxLjNlbX0uY2Fvc2RiLWNoZWNrYm94IC5jYW9zZGItY2hlY2stYm94LWlucHV0e2Rpc3BsYXk6bm9uZX0uY2Fvc2RiLWNoZWNrYm94LnJlYWQtb25seXtjdXJzb3I6YXV0b30uY29sb3ItbGlnaHQtZ3JlZW57Y29sb3I6I2I0ZTYwMH0ubWluaWNhcmR7Ym9yZGVyOjFweCBzb2xpZCByZWQ7d2lkdGg6NDAwcHg7ZGlzcGxheTpmbGV4fS5taW5pY2FyZCAubWluaWNhcmQtdGl0bGV7YmFja2dyb3VuZC1jb2xvcjpyZWR9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3JjL2NvbXBvbmVudHMvUXVlcnlGb3JtLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JyZWFrcG9pbnRzLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9pbmRleC5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUlBLHlCQUNFLGtCQUFBLENBQ0Esd0JBQUEsQ0FDQSxhQUFBLENBQ0EsbUJBQUEsQ0FHRix5QkFDRSxZQUFBLENBR0YscUJBQ0UsaUJBQUEsQ0FDQSxjQUFBLENBRUEsMEJBQ0UsWUFBQSxDQUNBLHFCQUFBLENBSUosbUVBRUUsZ0JBQUEsQ0FDQSxVQUFBLENBQ0EsT0FBQSxDQUVBLDZHQUNFLFdBQUEsQ0FDQSxXQUFBLENBQ0EsaUJBQUEsQ0FDQSxpQkFBQSxDQUNBLGtCQUFBLENBQ0Esb0JBQUEsQ0FDQSxxQkFBQSxDQUNBLHFCQUFBLENBQ0Esa0JBQUEsQ0FFQSxrUEFFRSx1Q0FBQSxDQUtFLHlMQUNFLGdCQUFBLENBQ0EscUJBQUEsQ0FDQSxvQkFBQSxDQUNBLGdCQUFBLENBQ0EsaUJBQUEsQ0FDQSxlQUFBLENBQ0EsdUNBQUEsQ0FDQSxXQUFBLENBRUEsK0xBQ0Usa0JBQUEsQ0FDQSxtQkFBQSxDQUNBLFdBQUEsQ0FDQSxvQkFBQSxDQUNBLG1OQUNFLHdCQUFBLENBRUYsMk1BQ0Usd0JBQUEsQ0FPSixtTUFDRSxZQUFBLENBTVIsMkhBQ0Usd0JBQUEsQ0FDQSxXQUFBLENBR0YseUhBQ0UsV0FBQSxDQUVBLDBSQUVFLFlBQUEsQ0FLTiw2RUFDRSxxQkFBQSxDQUdGLHFIQUNFLGdCQUFBLENBQ0EsaUJBQUEsQ0FDQSxrQkFBQSxDQUdGLDJIQUNFLFlBQUEsQ0FDQSxrQkFBQSxDQUNBLGNBQUEsQ0FFQSxpS0FDRSxhQUFBLENBQ0EsV0FBQSxDQUlKLDJHQUNFLFdBQUEsQ0FDQSxpQkFBQSxDQUNBLFdBQUEsQ0FDQSxzQkFBQSxDQUNBLFdBQUEsQ0FDQSx1Q0FBQSxDQUNBLHlIQUNFLDhCQUFBLENBSUoscUpBQ0UsZUFBQSxDQ3BFQSx5QkQwRUEsa0RBQ0UsWUFBQSxDQUNBLDhEQUFBLENBQ0EscUJBQUEsQ0FDQSxrQkFBQSxDQUVBLHFFQUNFLGFBQUEsQ0FDQSxXQUFBLENBS04sZ0NBQ0UsWUFBQSxDQUNBLFdBQUEsQ0FDQSxXQUFBLENBRUEscUNBQ0Usa0JBQUEsQ0FHRiwrREFDRSxZQUFBLENBR0YseURBQ0UsZUFBQSxDQUdGLG9EQUNFLFdBQUEsQ0FHRiw0REFDRSxZQUFBLENBR0YscURBQ0UsV0FBQSxDQUNBLE9BQUEsQ0FDQSxpQkFBQSxDQUNBLGlCQUFBLENBQ0Esa0JBQUEsQ0FDQSxvQkFBQSxDQUVBLDhFQUNFLFlBQUEsQ0FBQSxDRXBMUix1QkFDRSxtQkFBQSxDQUNBLHNCQUFBLENBQ0EsY0FBQSxDQUNBLFFBQUEsQ0FHRixPQUNFLHVDQUFBLENBQ0EsZUFBQSxDQUdGLE9BQ0UsYUFBQSxDQUVBLFlBQ0UsK0JBQUEsQ0FFRixpQkFDRSx3QkFBQSxDQUVGLHVCQUNFLHdCQUFBLENBRUYsb0JBQ0UsNEJBQUEsQ0FDQSx3QkE1QmdCLENBNkJoQixnQkFBQSxDQUVGLHNCQUNFLFdBQUEsQ0FDQSxpREFBQSxDQUNBLHlEQUFBLENBQ0Esc0RBQUEsQ0FJSixpQkFTRSxjQUFBLENBUkEsdUNBQ0UsZUFBQSxDQUdGLHlDQUNFLFlBQUEsQ0FLRiwyQkFDRSxXQUFBLENBSUosbUJBQ0UsYUFBQSxDQUdGLFVBQ0Usb0JBQUEsQ0FDQSxXQUFBLENBQ0EsWUFBQSxDQUVBLDBCQUNFLG9CQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgXFxcImJvb3RzdHJhcC9zY3NzL2Z1bmN0aW9uc1xcXCI7XFxuQGltcG9ydCBcXFwiYm9vdHN0cmFwL3Njc3MvdmFyaWFibGVzXFxcIjtcXG5AaW1wb3J0IFxcXCJib290c3RyYXAvc2Nzcy9taXhpbnNcXFwiO1xcblxcbi5jYW9zZGItZi1xdWVyeS1jcWwtaGludCB7XFxuICBib3JkZXItcmFkaXVzOiAycmVtO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKHdoaXRlLCAxNSUpO1xcbiAgY29sb3I6IGxpZ2h0ZW4oYmxhY2ssIDE1JSk7XFxuICBwYWRkaW5nOiAwLjFyZW0gMC40cmVtO1xcbn1cXG5cXG4uY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcge1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxubmF2IC5uYXZiYXItY29sbGFwc2Uge1xcbiAgYWxpZ24taXRlbXM6IHN0YXJ0O1xcbiAgZmxleC13cmFwOiB3cmFwO1xcblxcbiAgZm9ybSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICB9XFxufVxcblxcbi5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluLFxcbi5jYW9zZGItZi1xdWVyeS1wYW5lbCB7XFxuICBtYXJnaW4tdG9wOiAwLjVyZW07XFxuICB3aWR0aDogMTAwJTtcXG4gIG9yZGVyOiAxO1xcblxcbiAgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0ge1xcbiAgICBvcmRlcjogdW5zZXQ7XFxuICAgIGhlaWdodDogNDRweDtcXG4gICAgcGFkZGluZy1sZWZ0OiAycmVtO1xcbiAgICBwYWRkaW5nLXRvcDogMC41cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgYm9yZGVyLXJhZGl1czogMnJlbTtcXG5cXG4gICAgJjpob3ZlcixcXG4gICAgJi5mb2N1cyB7XFxuICAgICAgYm94LXNoYWRvdzogMCAxcHggNnB4IHJnYmEoMzIsIDMzLCAzNiwgMC4yOCk7XFxuICAgIH1cXG5cXG4gICAgJi5mb2N1cyB7XFxuICAgICAgJi5vcGVuIHtcXG4gICAgICAgIG9sLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIHtcXG4gICAgICAgICAgbWFyZ2luLXRvcDogMC41cmVtO1xcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDtcXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA2cHggcmdiYSgzMiwgMzMsIDM2LCAwLjI4KTtcXG4gICAgICAgICAgcGFkZGluZzogMHB4O1xcblxcbiAgICAgICAgICBsaSB7XFxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XFxuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMC41cmVtO1xcbiAgICAgICAgICAgIGhlaWdodDogMjRweDtcXG4gICAgICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XFxuICAgICAgICAgICAgJi5oaWdobGlnaHQge1xcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKHdoaXRlLCAxNSUpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAmOmhvdmVyIHtcXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbih3aGl0ZSwgMTUlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgICAgJi5zdWJtaXQge1xcbiAgICAgICAgJi5vcGVuIHtcXG4gICAgICAgICAgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIHtcXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIGJ1dHRvbiB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcXG4gICAgICBib3JkZXI6IG5vbmU7XFxuICAgIH1cXG5cXG4gICAgaW5wdXQge1xcbiAgICAgIGJvcmRlcjogbm9uZTtcXG5cXG4gICAgICAmOmZvY3VzLFxcbiAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgICBvdXRsaW5lOiBub25lO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgZm9ybSB7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICB9XFxuXFxuICAuY2Fvc2RiLWYtcXVlcnktdGFiLWxpc3Qge1xcbiAgICBtYXJnaW4tdG9wOiAwLjVyZW07XFxuICAgIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMXJlbTtcXG4gIH1cXG5cXG4gIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVycyB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICAgIGZsZXgtd3JhcDogd3JhcDtcXG5cXG4gICAgaW5wdXQuZm9ybS1jb250cm9sIHtcXG4gICAgICBkaXNwbGF5OiB1bnNldDtcXG4gICAgICB3aWR0aDogdW5zZXQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5jYW9zZGItZi1xdWVyeS10YWIge1xcbiAgICBoZWlnaHQ6IDQ0cHg7XFxuICAgIG1hcmdpbi1yaWdodDogMXJlbTtcXG4gICAgcGFkZGluZzogNnB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnNldDtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICBib3JkZXItYm90dG9tOiAwLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgICYuYWN0aXZlIHtcXG4gICAgICBib3JkZXItYm90dG9tOiAwLjJyZW0gc29saWQgZ3JheTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmNhb3NkYi1mLXF1ZXJ5LWZpbHRlci1wcm9wZXJ0eS1zZWxlY3RvciB7XFxuICAgIGZsZXgtYmFzaXM6IDEwMCU7XFxuICB9XFxufVxcblxcbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcXG4gIC5jYW9zZGItZi1xdWVyeS1wYW5lbCB7XFxuICAgIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVycyB7XFxuICAgICAgZGlzcGxheTogZ3JpZDtcXG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1heC1jb250ZW50IG1heC1jb250ZW50IGF1dG8gbWF4LWNvbnRlbnQ7XFxuICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiAwLjVyZW07XFxuICAgICAgcGFkZGluZzogMC4ycmVtIDByZW07XFxuXFxuICAgICAgaW5wdXQuZm9ybS1jb250cm9sIHtcXG4gICAgICAgIGRpc3BsYXk6IHVuc2V0O1xcbiAgICAgICAgd2lkdGg6IHVuc2V0O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZCB7XFxuICAgIG1hcmdpbi10b3A6IDA7XFxuICAgIHdpZHRoOiB1bnNldDtcXG4gICAgb3JkZXI6IHVuc2V0O1xcblxcbiAgICBmb3JtIHtcXG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgICB9XFxuXFxuICAgIC5jYW9zZGItZi1xdWVyeS1maWx0ZXJzLXRvZ2dsZSB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcblxcbiAgICAuY2Fvc2RiLWYtcXVlcnktdGFiLWxpc3Qge1xcbiAgICAgIG1hcmdpbi10b3A6IDByZW07XFxuICAgIH1cXG5cXG4gICAgLmNhb3NkYi1mLXF1ZXJ5LXRhYiB7XFxuICAgICAgaGVpZ2h0OiAzOHB4O1xcbiAgICB9XFxuXFxuICAgIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVycyB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcblxcbiAgICAuY2Fvc2RiLWYtcXVlcnktZm9ybSB7XFxuICAgICAgaGVpZ2h0OiAzOHB4O1xcbiAgICAgIG9yZGVyOiAxO1xcbiAgICAgIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gICAgICBwYWRkaW5nLXRvcDogMC4zcmVtO1xcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICAgICAgcGFkZGluZy1ib3R0b206IDAuM3JlbTtcXG5cXG4gICAgICAuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxcbi8vXFxuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxcbi8vXFxuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweClcXG4vL1xcbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cXG5cXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXFxuLy9cXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20pXFxuLy8gICAgbWRcXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxcbi8vICAgIG1kXFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsIHh4bCkpXFxuLy8gICAgbWRcXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XFxuICBAaWYgbm90ICRuIHtcXG4gICAgQGVycm9yIFxcXCJicmVha3BvaW50IGAjeyRuYW1lfWAgbm90IGZvdW5kIGluIGAjeyRicmVha3BvaW50c31gXFxcIjtcXG4gIH1cXG4gIEByZXR1cm4gaWYoJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xcbn1cXG5cXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXFxuLy9cXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXFxuLy8gICAgNTc2cHhcXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XFxuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XFxufVxcblxcbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC5cXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyByZWR1Y2VkIGJ5IDAuMDJweCB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2ZcXG4vLyBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXFxuLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heFxcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxcbi8vXFxuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgobWQsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxcbi8vICAgIDc2Ny45OHB4XFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICAkbWF4OiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xcbiAgQHJldHVybiBpZigkbWF4IGFuZCAkbWF4ID4gMCwgJG1heCAtIC4wMiwgbnVsbCk7XFxufVxcblxcbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXFxuLy8gVXNlZnVsIGZvciBtYWtpbmcgcmVzcG9uc2l2ZSB1dGlsaXRpZXMuXFxuLy9cXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcXG4vLyAgICBcXFwiXFxcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXFxuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXFxuLy8gICAgXFxcIi1zbVxcXCJcXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcXFwiXFxcIiwgXFxcIi0jeyRuYW1lfVxcXCIpO1xcbn1cXG5cXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXFxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XFxuICBAaWYgJG1pbiB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH0gQGVsc2Uge1xcbiAgICBAY29udGVudDtcXG4gIH1cXG59XFxuXFxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xcbiAgQGlmICRtYXgge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIHtcXG4gICAgQGNvbnRlbnQ7XFxuICB9XFxufVxcblxcbi8vIE1lZGlhIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMuXFxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXFxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJGxvd2VyLCAkYnJlYWtwb2ludHMpO1xcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xcblxcbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XFxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXFxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJG1pbjogIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcXG4gICRtYXg6ICBicmVha3BvaW50LW1heCgkbmV4dCwgJGJyZWFrcG9pbnRzKTtcXG5cXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XFxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50cykge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XFxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmV4dCwgJGJyZWFrcG9pbnRzKSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCJAaW1wb3J0IFxcXCIuL2NvbXBvbmVudHMvUXVlcnlGb3JtXFxcIjtcXG5cXG4kZm9vdGVyLWJvZHktY29sb3I6IGxpZ2h0Z3JheTtcXG5cXG4udXNlci1jb21wb25lbnQgLmFsZXJ0IHtcXG4gIHBhZGRpbmctdG9wOiAwLjM3NXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbTtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG4gIG1hcmdpbjogMDtcXG59XFxuXFxuaGVhZGVyIHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG59XFxuXFxuZm9vdGVyIHtcXG4gIGNvbG9yOiBkYXJrZW4oJGZvb3Rlci1ib2R5LWNvbG9yLCAzMCUpO1xcblxcbiAgLm5hdiB7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBkYXJrZW4oJGZvb3Rlci1ib2R5LWNvbG9yLCAyMCUpO1xcbiAgfVxcbiAgLm5hdi1saW5rIHtcXG4gICAgY29sb3I6IGRhcmtlbigkZm9vdGVyLWJvZHktY29sb3IsIDMwJSkgIWltcG9ydGFudDtcXG4gIH1cXG4gIC5uYXYtbGluazpob3ZlciB7XFxuICAgIGNvbG9yOiBkYXJrZW4oJGZvb3Rlci1ib2R5LWNvbG9yLCA0MCUpICFpbXBvcnRhbnQ7XFxuICB9XFxuICAuZm9vdGVyLWJvZHkge1xcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgZGFya2VuKCRmb290ZXItYm9keS1jb2xvciwgMTAlKTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGZvb3Rlci1ib2R5LWNvbG9yO1xcbiAgICBtaW4taGVpZ2h0OiAyMHJlbTtcXG4gIH1cXG4gIC5mb290ZXItYm9yZGVyIHtcXG4gICAgaGVpZ2h0OiAzcmVtO1xcbiAgICBib3gtc2hhZG93OiAwcHggLTVweCA3cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuNCkgaW5zZXQ7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IC01cHggN3B4IC01cHggcmdiYSgwLCAwLCAwLCAwLjQpIGluc2V0O1xcbiAgICAtbW96LWJveC1zaGFkb3c6IDBweCAtNXB4IDZweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldDtcXG4gIH1cXG59XFxuXFxuLmNhb3NkYi1jaGVja2JveCB7XFxuICAuY2Fvc2RiLWNoZWNrYm94LWljb24ge1xcbiAgICBmb250LXNpemU6IDEuM2VtO1xcbiAgfVxcblxcbiAgLmNhb3NkYi1jaGVjay1ib3gtaW5wdXQge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcblxcbiAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgJi5yZWFkLW9ubHkge1xcbiAgICBjdXJzb3I6IGF1dG87XFxuICB9XFxufVxcblxcbi5jb2xvci1saWdodC1ncmVlbiB7XFxuICBjb2xvcjogI2I0ZTYwMDtcXG59XFxuXFxuLm1pbmljYXJkIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcXG4gIHdpZHRoOiA0MDBweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuXFxuICAubWluaWNhcmQtdGl0bGUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTtcblxuICAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuICpcbiAqIFByb3ZpZGUgc3ByaW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXG4gKiB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmVcbiAqIGV4cGVjdGluZy5cbiAqXG4gKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuICogd2lsbCByZW1haW4gdG8gZW5zdXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuICovXG5cbnZhciBpbnZhcmlhbnQgPSBmdW5jdGlvbihjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwgZikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgfVxuXG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCAnICtcbiAgICAgICAgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG4gICAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107IH0pXG4gICAgICApO1xuICAgICAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB9XG5cbiAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaW52YXJpYW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gYWxsO1xuXG52YXIgX2NyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyID0gcmVxdWlyZSgnLi91dGlscy9jcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcicpO1xuXG52YXIgX2NyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gYWxsKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgdmFsaWRhdG9ycyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHZhbGlkYXRvcnNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBmdW5jdGlvbiBhbGxQcm9wVHlwZXMoKSB7XG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICB2YXIgZXJyb3IgPSBudWxsO1xuXG4gICAgdmFsaWRhdG9ycy5mb3JFYWNoKGZ1bmN0aW9uICh2YWxpZGF0b3IpIHtcbiAgICAgIGlmIChlcnJvciAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlc3VsdCA9IHZhbGlkYXRvci5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xuICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgIGVycm9yID0gcmVzdWx0O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG5cbiAgcmV0dXJuICgwLCBfY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIyLmRlZmF1bHQpKGFsbFByb3BUeXBlcyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbi8vIE1vc3RseSB0YWtlbiBmcm9tIFJlYWN0UHJvcFR5cGVzLlxuXG5mdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSkge1xuICBmdW5jdGlvbiBjaGVja1R5cGUoaXNSZXF1aXJlZCwgcHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgdmFyIGNvbXBvbmVudE5hbWVTYWZlID0gY29tcG9uZW50TmFtZSB8fCAnPDxhbm9ueW1vdXM+Pic7XG4gICAgdmFyIHByb3BGdWxsTmFtZVNhZmUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG5cbiAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHtcbiAgICAgIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXJyb3IoJ1JlcXVpcmVkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWVTYWZlICsgJ2Agd2FzIG5vdCBzcGVjaWZpZWQgJyArICgnaW4gYCcgKyBjb21wb25lbnROYW1lU2FmZSArICdgLicpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gNiA/IF9sZW4gLSA2IDogMCksIF9rZXkgPSA2OyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSA2XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGUuYXBwbHkodW5kZWZpbmVkLCBbcHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lU2FmZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZVNhZmVdLmNvbmNhdChhcmdzKSk7XG4gIH1cblxuICB2YXIgY2hhaW5lZENoZWNrVHlwZSA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIGZhbHNlKTtcbiAgY2hhaW5lZENoZWNrVHlwZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgdHJ1ZSk7XG5cbiAgcmV0dXJuIGNoYWluZWRDaGVja1R5cGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4vKlxuIE1vZGVybml6ciAzLjAuMHByZSAoQ3VzdG9tIEJ1aWxkKSB8IE1JVFxuKi9cbid1c2Ugc3RyaWN0Jzt2YXIgYWE9cmVxdWlyZShcInJlYWN0XCIpLGNhPXJlcXVpcmUoXCJzY2hlZHVsZXJcIik7ZnVuY3Rpb24gcChhKXtmb3IodmFyIGI9XCJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD1cIithLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWIrPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2NdKTtyZXR1cm5cIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIithK1wiOyB2aXNpdCBcIitiK1wiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIn12YXIgZGE9bmV3IFNldCxlYT17fTtmdW5jdGlvbiBmYShhLGIpe2hhKGEsYik7aGEoYStcIkNhcHR1cmVcIixiKX1cbmZ1bmN0aW9uIGhhKGEsYil7ZWFbYV09Yjtmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKWRhLmFkZChiW2FdKX1cbnZhciBpYT0hKFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93fHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvdy5kb2N1bWVudHx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksamE9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxrYT0vXls6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRF1bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MF0qJC8sbGE9XG57fSxtYT17fTtmdW5jdGlvbiBvYShhKXtpZihqYS5jYWxsKG1hLGEpKXJldHVybiEwO2lmKGphLmNhbGwobGEsYSkpcmV0dXJuITE7aWYoa2EudGVzdChhKSlyZXR1cm4gbWFbYV09ITA7bGFbYV09ITA7cmV0dXJuITF9ZnVuY3Rpb24gcGEoYSxiLGMsZCl7aWYobnVsbCE9PWMmJjA9PT1jLnR5cGUpcmV0dXJuITE7c3dpdGNoKHR5cGVvZiBiKXtjYXNlIFwiZnVuY3Rpb25cIjpjYXNlIFwic3ltYm9sXCI6cmV0dXJuITA7Y2FzZSBcImJvb2xlYW5cIjppZihkKXJldHVybiExO2lmKG51bGwhPT1jKXJldHVybiFjLmFjY2VwdHNCb29sZWFuczthPWEudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpO3JldHVyblwiZGF0YS1cIiE9PWEmJlwiYXJpYS1cIiE9PWE7ZGVmYXVsdDpyZXR1cm4hMX19XG5mdW5jdGlvbiBxYShhLGIsYyxkKXtpZihudWxsPT09Ynx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBifHxwYShhLGIsYyxkKSlyZXR1cm4hMDtpZihkKXJldHVybiExO2lmKG51bGwhPT1jKXN3aXRjaChjLnR5cGUpe2Nhc2UgMzpyZXR1cm4hYjtjYXNlIDQ6cmV0dXJuITE9PT1iO2Nhc2UgNTpyZXR1cm4gaXNOYU4oYik7Y2FzZSA2OnJldHVybiBpc05hTihiKXx8MT5ifXJldHVybiExfWZ1bmN0aW9uIHYoYSxiLGMsZCxlLGYsZyl7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PWJ8fDM9PT1ifHw0PT09Yjt0aGlzLmF0dHJpYnV0ZU5hbWU9ZDt0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1lO3RoaXMubXVzdFVzZVByb3BlcnR5PWM7dGhpcy5wcm9wZXJ0eU5hbWU9YTt0aGlzLnR5cGU9Yjt0aGlzLnNhbml0aXplVVJMPWY7dGhpcy5yZW1vdmVFbXB0eVN0cmluZz1nfXZhciB6PXt9O1xuXCJjaGlsZHJlbiBkYW5nZXJvdXNseVNldElubmVySFRNTCBkZWZhdWx0VmFsdWUgZGVmYXVsdENoZWNrZWQgaW5uZXJIVE1MIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgc3R5bGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMCwhMSxhLG51bGwsITEsITEpfSk7W1tcImFjY2VwdENoYXJzZXRcIixcImFjY2VwdC1jaGFyc2V0XCJdLFtcImNsYXNzTmFtZVwiLFwiY2xhc3NcIl0sW1wiaHRtbEZvclwiLFwiZm9yXCJdLFtcImh0dHBFcXVpdlwiLFwiaHR0cC1lcXVpdlwiXV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hWzBdO3pbYl09bmV3IHYoYiwxLCExLGFbMV0sbnVsbCwhMSwhMSl9KTtbXCJjb250ZW50RWRpdGFibGVcIixcImRyYWdnYWJsZVwiLFwic3BlbGxDaGVja1wiLFwidmFsdWVcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMiwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbltcImF1dG9SZXZlcnNlXCIsXCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXCIsXCJmb2N1c2FibGVcIixcInByZXNlcnZlQWxwaGFcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMiwhMSxhLG51bGwsITEsITEpfSk7XCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDMsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG5bXCJjaGVja2VkXCIsXCJtdWx0aXBsZVwiLFwibXV0ZWRcIixcInNlbGVjdGVkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDMsITAsYSxudWxsLCExLCExKX0pO1tcImNhcHR1cmVcIixcImRvd25sb2FkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDQsITEsYSxudWxsLCExLCExKX0pO1tcImNvbHNcIixcInJvd3NcIixcInNpemVcIixcInNwYW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNiwhMSxhLG51bGwsITEsITEpfSk7W1wicm93U3BhblwiLFwic3RhcnRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTt2YXIgcmE9L1tcXC06XShbYS16XSkvZztmdW5jdGlvbiBzYShhKXtyZXR1cm4gYVsxXS50b1VwcGVyQ2FzZSgpfVxuXCJhY2NlbnQtaGVpZ2h0IGFsaWdubWVudC1iYXNlbGluZSBhcmFiaWMtZm9ybSBiYXNlbGluZS1zaGlmdCBjYXAtaGVpZ2h0IGNsaXAtcGF0aCBjbGlwLXJ1bGUgY29sb3ItaW50ZXJwb2xhdGlvbiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMgY29sb3ItcHJvZmlsZSBjb2xvci1yZW5kZXJpbmcgZG9taW5hbnQtYmFzZWxpbmUgZW5hYmxlLWJhY2tncm91bmQgZmlsbC1vcGFjaXR5IGZpbGwtcnVsZSBmbG9vZC1jb2xvciBmbG9vZC1vcGFjaXR5IGZvbnQtZmFtaWx5IGZvbnQtc2l6ZSBmb250LXNpemUtYWRqdXN0IGZvbnQtc3RyZXRjaCBmb250LXN0eWxlIGZvbnQtdmFyaWFudCBmb250LXdlaWdodCBnbHlwaC1uYW1lIGdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwgZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwgaG9yaXotYWR2LXggaG9yaXotb3JpZ2luLXggaW1hZ2UtcmVuZGVyaW5nIGxldHRlci1zcGFjaW5nIGxpZ2h0aW5nLWNvbG9yIG1hcmtlci1lbmQgbWFya2VyLW1pZCBtYXJrZXItc3RhcnQgb3ZlcmxpbmUtcG9zaXRpb24gb3ZlcmxpbmUtdGhpY2tuZXNzIHBhaW50LW9yZGVyIHBhbm9zZS0xIHBvaW50ZXItZXZlbnRzIHJlbmRlcmluZy1pbnRlbnQgc2hhcGUtcmVuZGVyaW5nIHN0b3AtY29sb3Igc3RvcC1vcGFjaXR5IHN0cmlrZXRocm91Z2gtcG9zaXRpb24gc3RyaWtldGhyb3VnaC10aGlja25lc3Mgc3Ryb2tlLWRhc2hhcnJheSBzdHJva2UtZGFzaG9mZnNldCBzdHJva2UtbGluZWNhcCBzdHJva2UtbGluZWpvaW4gc3Ryb2tlLW1pdGVybGltaXQgc3Ryb2tlLW9wYWNpdHkgc3Ryb2tlLXdpZHRoIHRleHQtYW5jaG9yIHRleHQtZGVjb3JhdGlvbiB0ZXh0LXJlbmRlcmluZyB1bmRlcmxpbmUtcG9zaXRpb24gdW5kZXJsaW5lLXRoaWNrbmVzcyB1bmljb2RlLWJpZGkgdW5pY29kZS1yYW5nZSB1bml0cy1wZXItZW0gdi1hbHBoYWJldGljIHYtaGFuZ2luZyB2LWlkZW9ncmFwaGljIHYtbWF0aGVtYXRpY2FsIHZlY3Rvci1lZmZlY3QgdmVydC1hZHYteSB2ZXJ0LW9yaWdpbi14IHZlcnQtb3JpZ2luLXkgd29yZC1zcGFjaW5nIHdyaXRpbmctbW9kZSB4bWxuczp4bGluayB4LWhlaWdodFwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShyYSxcbnNhKTt6W2JdPW5ldyB2KGIsMSwhMSxhLG51bGwsITEsITEpfSk7XCJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsITEsITEpfSk7W1wieG1sOmJhc2VcIixcInhtbDpsYW5nXCIsXCJ4bWw6c3BhY2VcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIiwhMSwhMSl9KTtbXCJ0YWJJbmRleFwiLFwiY3Jvc3NPcmlnaW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbnoueGxpbmtIcmVmPW5ldyB2KFwieGxpbmtIcmVmXCIsMSwhMSxcInhsaW5rOmhyZWZcIixcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMCwhMSk7W1wic3JjXCIsXCJocmVmXCIsXCJhY3Rpb25cIixcImZvcm1BY3Rpb25cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMCwhMCl9KTtcbmZ1bmN0aW9uIHRhKGEsYixjLGQpe3ZhciBlPXouaGFzT3duUHJvcGVydHkoYik/eltiXTpudWxsO2lmKG51bGwhPT1lPzAhPT1lLnR5cGU6ZHx8ISgyPGIubGVuZ3RoKXx8XCJvXCIhPT1iWzBdJiZcIk9cIiE9PWJbMF18fFwiblwiIT09YlsxXSYmXCJOXCIhPT1iWzFdKXFhKGIsYyxlLGQpJiYoYz1udWxsKSxkfHxudWxsPT09ZT9vYShiKSYmKG51bGw9PT1jP2EucmVtb3ZlQXR0cmlidXRlKGIpOmEuc2V0QXR0cmlidXRlKGIsXCJcIitjKSk6ZS5tdXN0VXNlUHJvcGVydHk/YVtlLnByb3BlcnR5TmFtZV09bnVsbD09PWM/Mz09PWUudHlwZT8hMTpcIlwiOmM6KGI9ZS5hdHRyaWJ1dGVOYW1lLGQ9ZS5hdHRyaWJ1dGVOYW1lc3BhY2UsbnVsbD09PWM/YS5yZW1vdmVBdHRyaWJ1dGUoYik6KGU9ZS50eXBlLGM9Mz09PWV8fDQ9PT1lJiYhMD09PWM/XCJcIjpcIlwiK2MsZD9hLnNldEF0dHJpYnV0ZU5TKGQsYixjKTphLnNldEF0dHJpYnV0ZShiLGMpKSl9XG52YXIgdWE9YWEuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQsdmE9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksd2E9U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSx5YT1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksemE9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLEFhPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSxCYT1TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIiksQ2E9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksRGE9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLEVhPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxGYT1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKSxHYT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxIYT1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTtTeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik7U3ltYm9sLmZvcihcInJlYWN0LmRlYnVnX3RyYWNlX21vZGVcIik7XG52YXIgSWE9U3ltYm9sLmZvcihcInJlYWN0Lm9mZnNjcmVlblwiKTtTeW1ib2wuZm9yKFwicmVhY3QubGVnYWN5X2hpZGRlblwiKTtTeW1ib2wuZm9yKFwicmVhY3QuY2FjaGVcIik7U3ltYm9sLmZvcihcInJlYWN0LnRyYWNpbmdfbWFya2VyXCIpO3ZhciBKYT1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gS2EoYSl7aWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPUphJiZhW0phXXx8YVtcIkBAaXRlcmF0b3JcIl07cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGE/YTpudWxsfXZhciBBPU9iamVjdC5hc3NpZ24sTGE7ZnVuY3Rpb24gTWEoYSl7aWYodm9pZCAwPT09TGEpdHJ5e3Rocm93IEVycm9yKCk7fWNhdGNoKGMpe3ZhciBiPWMuc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7TGE9YiYmYlsxXXx8XCJcIn1yZXR1cm5cIlxcblwiK0xhK2F9dmFyIE5hPSExO1xuZnVuY3Rpb24gT2EoYSxiKXtpZighYXx8TmEpcmV0dXJuXCJcIjtOYT0hMDt2YXIgYz1FcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT12b2lkIDA7dHJ5e2lmKGIpaWYoYj1mdW5jdGlvbigpe3Rocm93IEVycm9yKCk7fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYi5wcm90b3R5cGUsXCJwcm9wc1wiLHtzZXQ6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpO319KSxcIm9iamVjdFwiPT09dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuY29uc3RydWN0KXt0cnl7UmVmbGVjdC5jb25zdHJ1Y3QoYixbXSl9Y2F0Y2gobCl7dmFyIGQ9bH1SZWZsZWN0LmNvbnN0cnVjdChhLFtdLGIpfWVsc2V7dHJ5e2IuY2FsbCgpfWNhdGNoKGwpe2Q9bH1hLmNhbGwoYi5wcm90b3R5cGUpfWVsc2V7dHJ5e3Rocm93IEVycm9yKCk7fWNhdGNoKGwpe2Q9bH1hKCl9fWNhdGNoKGwpe2lmKGwmJmQmJlwic3RyaW5nXCI9PT10eXBlb2YgbC5zdGFjayl7Zm9yKHZhciBlPWwuc3RhY2suc3BsaXQoXCJcXG5cIiksXG5mPWQuc3RhY2suc3BsaXQoXCJcXG5cIiksZz1lLmxlbmd0aC0xLGg9Zi5sZW5ndGgtMTsxPD1nJiYwPD1oJiZlW2ddIT09ZltoXTspaC0tO2Zvcig7MTw9ZyYmMDw9aDtnLS0saC0tKWlmKGVbZ10hPT1mW2hdKXtpZigxIT09Z3x8MSE9PWgpe2RvIGlmKGctLSxoLS0sMD5ofHxlW2ddIT09ZltoXSl7dmFyIGs9XCJcXG5cIitlW2ddLnJlcGxhY2UoXCIgYXQgbmV3IFwiLFwiIGF0IFwiKTthLmRpc3BsYXlOYW1lJiZrLmluY2x1ZGVzKFwiPGFub255bW91cz5cIikmJihrPWsucmVwbGFjZShcIjxhbm9ueW1vdXM+XCIsYS5kaXNwbGF5TmFtZSkpO3JldHVybiBrfXdoaWxlKDE8PWcmJjA8PWgpfWJyZWFrfX19ZmluYWxseXtOYT0hMSxFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT1jfXJldHVybihhPWE/YS5kaXNwbGF5TmFtZXx8YS5uYW1lOlwiXCIpP01hKGEpOlwiXCJ9XG5mdW5jdGlvbiBQYShhKXtzd2l0Y2goYS50YWcpe2Nhc2UgNTpyZXR1cm4gTWEoYS50eXBlKTtjYXNlIDE2OnJldHVybiBNYShcIkxhenlcIik7Y2FzZSAxMzpyZXR1cm4gTWEoXCJTdXNwZW5zZVwiKTtjYXNlIDE5OnJldHVybiBNYShcIlN1c3BlbnNlTGlzdFwiKTtjYXNlIDA6Y2FzZSAyOmNhc2UgMTU6cmV0dXJuIGE9T2EoYS50eXBlLCExKSxhO2Nhc2UgMTE6cmV0dXJuIGE9T2EoYS50eXBlLnJlbmRlciwhMSksYTtjYXNlIDE6cmV0dXJuIGE9T2EoYS50eXBlLCEwKSxhO2RlZmF1bHQ6cmV0dXJuXCJcIn19XG5mdW5jdGlvbiBRYShhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKXJldHVybiBhLmRpc3BsYXlOYW1lfHxhLm5hbWV8fG51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKXJldHVybiBhO3N3aXRjaChhKXtjYXNlIHlhOnJldHVyblwiRnJhZ21lbnRcIjtjYXNlIHdhOnJldHVyblwiUG9ydGFsXCI7Y2FzZSBBYTpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSB6YTpyZXR1cm5cIlN0cmljdE1vZGVcIjtjYXNlIEVhOnJldHVyblwiU3VzcGVuc2VcIjtjYXNlIEZhOnJldHVyblwiU3VzcGVuc2VMaXN0XCJ9aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhKXN3aXRjaChhLiQkdHlwZW9mKXtjYXNlIENhOnJldHVybihhLmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuQ29uc3VtZXJcIjtjYXNlIEJhOnJldHVybihhLl9jb250ZXh0LmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuUHJvdmlkZXJcIjtjYXNlIERhOnZhciBiPWEucmVuZGVyO2E9YS5kaXNwbGF5TmFtZTthfHwoYT1iLmRpc3BsYXlOYW1lfHxcbmIubmFtZXx8XCJcIixhPVwiXCIhPT1hP1wiRm9yd2FyZFJlZihcIithK1wiKVwiOlwiRm9yd2FyZFJlZlwiKTtyZXR1cm4gYTtjYXNlIEdhOnJldHVybiBiPWEuZGlzcGxheU5hbWV8fG51bGwsbnVsbCE9PWI/YjpRYShhLnR5cGUpfHxcIk1lbW9cIjtjYXNlIEhhOmI9YS5fcGF5bG9hZDthPWEuX2luaXQ7dHJ5e3JldHVybiBRYShhKGIpKX1jYXRjaChjKXt9fXJldHVybiBudWxsfVxuZnVuY3Rpb24gUmEoYSl7dmFyIGI9YS50eXBlO3N3aXRjaChhLnRhZyl7Y2FzZSAyNDpyZXR1cm5cIkNhY2hlXCI7Y2FzZSA5OnJldHVybihiLmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuQ29uc3VtZXJcIjtjYXNlIDEwOnJldHVybihiLl9jb250ZXh0LmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuUHJvdmlkZXJcIjtjYXNlIDE4OnJldHVyblwiRGVoeWRyYXRlZEZyYWdtZW50XCI7Y2FzZSAxMTpyZXR1cm4gYT1iLnJlbmRlcixhPWEuZGlzcGxheU5hbWV8fGEubmFtZXx8XCJcIixiLmRpc3BsYXlOYW1lfHwoXCJcIiE9PWE/XCJGb3J3YXJkUmVmKFwiK2ErXCIpXCI6XCJGb3J3YXJkUmVmXCIpO2Nhc2UgNzpyZXR1cm5cIkZyYWdtZW50XCI7Y2FzZSA1OnJldHVybiBiO2Nhc2UgNDpyZXR1cm5cIlBvcnRhbFwiO2Nhc2UgMzpyZXR1cm5cIlJvb3RcIjtjYXNlIDY6cmV0dXJuXCJUZXh0XCI7Y2FzZSAxNjpyZXR1cm4gUWEoYik7Y2FzZSA4OnJldHVybiBiPT09emE/XCJTdHJpY3RNb2RlXCI6XCJNb2RlXCI7Y2FzZSAyMjpyZXR1cm5cIk9mZnNjcmVlblwiO1xuY2FzZSAxMjpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSAyMTpyZXR1cm5cIlNjb3BlXCI7Y2FzZSAxMzpyZXR1cm5cIlN1c3BlbnNlXCI7Y2FzZSAxOTpyZXR1cm5cIlN1c3BlbnNlTGlzdFwiO2Nhc2UgMjU6cmV0dXJuXCJUcmFjaW5nTWFya2VyXCI7Y2FzZSAxOmNhc2UgMDpjYXNlIDE3OmNhc2UgMjpjYXNlIDE0OmNhc2UgMTU6aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGIpcmV0dXJuIGIuZGlzcGxheU5hbWV8fGIubmFtZXx8bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGIpcmV0dXJuIGJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gU2EoYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlIFwiYm9vbGVhblwiOmNhc2UgXCJudW1iZXJcIjpjYXNlIFwic3RyaW5nXCI6Y2FzZSBcInVuZGVmaW5lZFwiOnJldHVybiBhO2Nhc2UgXCJvYmplY3RcIjpyZXR1cm4gYTtkZWZhdWx0OnJldHVyblwiXCJ9fVxuZnVuY3Rpb24gVGEoYSl7dmFyIGI9YS50eXBlO3JldHVybihhPWEubm9kZU5hbWUpJiZcImlucHV0XCI9PT1hLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1ifHxcInJhZGlvXCI9PT1iKX1cbmZ1bmN0aW9uIFVhKGEpe3ZhciBiPVRhKGEpP1wiY2hlY2tlZFwiOlwidmFsdWVcIixjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYiksZD1cIlwiK2FbYl07aWYoIWEuaGFzT3duUHJvcGVydHkoYikmJlwidW5kZWZpbmVkXCIhPT10eXBlb2YgYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGMuZ2V0JiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5zZXQpe3ZhciBlPWMuZ2V0LGY9Yy5zZXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihhKXtkPVwiXCIrYTtmLmNhbGwodGhpcyxhKX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHtlbnVtZXJhYmxlOmMuZW51bWVyYWJsZX0pO3JldHVybntnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBkfSxzZXRWYWx1ZTpmdW5jdGlvbihhKXtkPVwiXCIrYX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7YS5fdmFsdWVUcmFja2VyPVxubnVsbDtkZWxldGUgYVtiXX19fX1mdW5jdGlvbiBWYShhKXthLl92YWx1ZVRyYWNrZXJ8fChhLl92YWx1ZVRyYWNrZXI9VWEoYSkpfWZ1bmN0aW9uIFdhKGEpe2lmKCFhKXJldHVybiExO3ZhciBiPWEuX3ZhbHVlVHJhY2tlcjtpZighYilyZXR1cm4hMDt2YXIgYz1iLmdldFZhbHVlKCk7dmFyIGQ9XCJcIjthJiYoZD1UYShhKT9hLmNoZWNrZWQ/XCJ0cnVlXCI6XCJmYWxzZVwiOmEudmFsdWUpO2E9ZDtyZXR1cm4gYSE9PWM/KGIuc2V0VmFsdWUoYSksITApOiExfWZ1bmN0aW9uIFhhKGEpe2E9YXx8KFwidW5kZWZpbmVkXCIhPT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKTtpZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIGEpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBhLmFjdGl2ZUVsZW1lbnR8fGEuYm9keX1jYXRjaChiKXtyZXR1cm4gYS5ib2R5fX1cbmZ1bmN0aW9uIFlhKGEsYil7dmFyIGM9Yi5jaGVja2VkO3JldHVybiBBKHt9LGIse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOnZvaWQgMCxjaGVja2VkOm51bGwhPWM/YzphLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWR9KX1mdW5jdGlvbiBaYShhLGIpe3ZhciBjPW51bGw9PWIuZGVmYXVsdFZhbHVlP1wiXCI6Yi5kZWZhdWx0VmFsdWUsZD1udWxsIT1iLmNoZWNrZWQ/Yi5jaGVja2VkOmIuZGVmYXVsdENoZWNrZWQ7Yz1TYShudWxsIT1iLnZhbHVlP2IudmFsdWU6Yyk7YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpkLGluaXRpYWxWYWx1ZTpjLGNvbnRyb2xsZWQ6XCJjaGVja2JveFwiPT09Yi50eXBlfHxcInJhZGlvXCI9PT1iLnR5cGU/bnVsbCE9Yi5jaGVja2VkOm51bGwhPWIudmFsdWV9fWZ1bmN0aW9uIGFiKGEsYil7Yj1iLmNoZWNrZWQ7bnVsbCE9YiYmdGEoYSxcImNoZWNrZWRcIixiLCExKX1cbmZ1bmN0aW9uIGJiKGEsYil7YWIoYSxiKTt2YXIgYz1TYShiLnZhbHVlKSxkPWIudHlwZTtpZihudWxsIT1jKWlmKFwibnVtYmVyXCI9PT1kKXtpZigwPT09YyYmXCJcIj09PWEudmFsdWV8fGEudmFsdWUhPWMpYS52YWx1ZT1cIlwiK2N9ZWxzZSBhLnZhbHVlIT09XCJcIitjJiYoYS52YWx1ZT1cIlwiK2MpO2Vsc2UgaWYoXCJzdWJtaXRcIj09PWR8fFwicmVzZXRcIj09PWQpe2EucmVtb3ZlQXR0cmlidXRlKFwidmFsdWVcIik7cmV0dXJufWIuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKT9jYihhLGIudHlwZSxjKTpiLmhhc093blByb3BlcnR5KFwiZGVmYXVsdFZhbHVlXCIpJiZjYihhLGIudHlwZSxTYShiLmRlZmF1bHRWYWx1ZSkpO251bGw9PWIuY2hlY2tlZCYmbnVsbCE9Yi5kZWZhdWx0Q2hlY2tlZCYmKGEuZGVmYXVsdENoZWNrZWQ9ISFiLmRlZmF1bHRDaGVja2VkKX1cbmZ1bmN0aW9uIGRiKGEsYixjKXtpZihiLmhhc093blByb3BlcnR5KFwidmFsdWVcIil8fGIuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikpe3ZhciBkPWIudHlwZTtpZighKFwic3VibWl0XCIhPT1kJiZcInJlc2V0XCIhPT1kfHx2b2lkIDAhPT1iLnZhbHVlJiZudWxsIT09Yi52YWx1ZSkpcmV0dXJuO2I9XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlO2N8fGI9PT1hLnZhbHVlfHwoYS52YWx1ZT1iKTthLmRlZmF1bHRWYWx1ZT1ifWM9YS5uYW1lO1wiXCIhPT1jJiYoYS5uYW1lPVwiXCIpO2EuZGVmYXVsdENoZWNrZWQ9ISFhLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQ7XCJcIiE9PWMmJihhLm5hbWU9Yyl9XG5mdW5jdGlvbiBjYihhLGIsYyl7aWYoXCJudW1iZXJcIiE9PWJ8fFhhKGEub3duZXJEb2N1bWVudCkhPT1hKW51bGw9PWM/YS5kZWZhdWx0VmFsdWU9XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlOmEuZGVmYXVsdFZhbHVlIT09XCJcIitjJiYoYS5kZWZhdWx0VmFsdWU9XCJcIitjKX12YXIgZWI9QXJyYXkuaXNBcnJheTtcbmZ1bmN0aW9uIGZiKGEsYixjLGQpe2E9YS5vcHRpb25zO2lmKGIpe2I9e307Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspYltcIiRcIitjW2VdXT0hMDtmb3IoYz0wO2M8YS5sZW5ndGg7YysrKWU9Yi5oYXNPd25Qcm9wZXJ0eShcIiRcIithW2NdLnZhbHVlKSxhW2NdLnNlbGVjdGVkIT09ZSYmKGFbY10uc2VsZWN0ZWQ9ZSksZSYmZCYmKGFbY10uZGVmYXVsdFNlbGVjdGVkPSEwKX1lbHNle2M9XCJcIitTYShjKTtiPW51bGw7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKyl7aWYoYVtlXS52YWx1ZT09PWMpe2FbZV0uc2VsZWN0ZWQ9ITA7ZCYmKGFbZV0uZGVmYXVsdFNlbGVjdGVkPSEwKTtyZXR1cm59bnVsbCE9PWJ8fGFbZV0uZGlzYWJsZWR8fChiPWFbZV0pfW51bGwhPT1iJiYoYi5zZWxlY3RlZD0hMCl9fVxuZnVuY3Rpb24gZ2IoYSxiKXtpZihudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXRocm93IEVycm9yKHAoOTEpKTtyZXR1cm4gQSh7fSxiLHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjpcIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9KX1mdW5jdGlvbiBoYihhLGIpe3ZhciBjPWIudmFsdWU7aWYobnVsbD09Yyl7Yz1iLmNoaWxkcmVuO2I9Yi5kZWZhdWx0VmFsdWU7aWYobnVsbCE9Yyl7aWYobnVsbCE9Yil0aHJvdyBFcnJvcihwKDkyKSk7aWYoZWIoYykpe2lmKDE8Yy5sZW5ndGgpdGhyb3cgRXJyb3IocCg5MykpO2M9Y1swXX1iPWN9bnVsbD09YiYmKGI9XCJcIik7Yz1ifWEuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOlNhKGMpfX1cbmZ1bmN0aW9uIGliKGEsYil7dmFyIGM9U2EoYi52YWx1ZSksZD1TYShiLmRlZmF1bHRWYWx1ZSk7bnVsbCE9YyYmKGM9XCJcIitjLGMhPT1hLnZhbHVlJiYoYS52YWx1ZT1jKSxudWxsPT1iLmRlZmF1bHRWYWx1ZSYmYS5kZWZhdWx0VmFsdWUhPT1jJiYoYS5kZWZhdWx0VmFsdWU9YykpO251bGwhPWQmJihhLmRlZmF1bHRWYWx1ZT1cIlwiK2QpfWZ1bmN0aW9uIGpiKGEpe3ZhciBiPWEudGV4dENvbnRlbnQ7Yj09PWEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUmJlwiXCIhPT1iJiZudWxsIT09YiYmKGEudmFsdWU9Yil9ZnVuY3Rpb24ga2IoYSl7c3dpdGNoKGEpe2Nhc2UgXCJzdmdcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7Y2FzZSBcIm1hdGhcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIjtkZWZhdWx0OnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwifX1cbmZ1bmN0aW9uIGxiKGEsYil7cmV0dXJuIG51bGw9PWF8fFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPT09YT9rYihiKTpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI9PT1hJiZcImZvcmVpZ25PYmplY3RcIj09PWI/XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI6YX1cbnZhciBtYixuYj1mdW5jdGlvbihhKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIE1TQXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbihiLGMsZCxlKXtNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3JldHVybiBhKGIsYyxkLGUpfSl9OmF9KGZ1bmN0aW9uKGEsYil7aWYoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIT09YS5uYW1lc3BhY2VVUkl8fFwiaW5uZXJIVE1MXCJpbiBhKWEuaW5uZXJIVE1MPWI7ZWxzZXttYj1tYnx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTttYi5pbm5lckhUTUw9XCI8c3ZnPlwiK2IudmFsdWVPZigpLnRvU3RyaW5nKCkrXCI8L3N2Zz5cIjtmb3IoYj1tYi5maXJzdENoaWxkO2EuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Zvcig7Yi5maXJzdENoaWxkOylhLmFwcGVuZENoaWxkKGIuZmlyc3RDaGlsZCl9fSk7XG5mdW5jdGlvbiBvYihhLGIpe2lmKGIpe3ZhciBjPWEuZmlyc3RDaGlsZDtpZihjJiZjPT09YS5sYXN0Q2hpbGQmJjM9PT1jLm5vZGVUeXBlKXtjLm5vZGVWYWx1ZT1iO3JldHVybn19YS50ZXh0Q29udGVudD1ifVxudmFyIHBiPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxhc3BlY3RSYXRpbzohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGNvbHVtbnM6ITAsZmxleDohMCxmbGV4R3JvdzohMCxmbGV4UG9zaXRpdmU6ITAsZmxleFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEwLGdyaWRBcmVhOiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3BhbjohMCxncmlkUm93U3RhcnQ6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TcGFuOiEwLGdyaWRDb2x1bW5TdGFydDohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6ITAsXG56b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LHFiPVtcIldlYmtpdFwiLFwibXNcIixcIk1velwiLFwiT1wiXTtPYmplY3Qua2V5cyhwYikuZm9yRWFjaChmdW5jdGlvbihhKXtxYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2I9YithLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc3Vic3RyaW5nKDEpO3BiW2JdPXBiW2FdfSl9KTtmdW5jdGlvbiByYihhLGIsYyl7cmV0dXJuIG51bGw9PWJ8fFwiYm9vbGVhblwiPT09dHlwZW9mIGJ8fFwiXCI9PT1iP1wiXCI6Y3x8XCJudW1iZXJcIiE9PXR5cGVvZiBifHwwPT09Ynx8cGIuaGFzT3duUHJvcGVydHkoYSkmJnBiW2FdPyhcIlwiK2IpLnRyaW0oKTpiK1wicHhcIn1cbmZ1bmN0aW9uIHNiKGEsYil7YT1hLnN0eWxlO2Zvcih2YXIgYyBpbiBiKWlmKGIuaGFzT3duUHJvcGVydHkoYykpe3ZhciBkPTA9PT1jLmluZGV4T2YoXCItLVwiKSxlPXJiKGMsYltjXSxkKTtcImZsb2F0XCI9PT1jJiYoYz1cImNzc0Zsb2F0XCIpO2Q/YS5zZXRQcm9wZXJ0eShjLGUpOmFbY109ZX19dmFyIHRiPUEoe21lbnVpdGVtOiEwfSx7YXJlYTohMCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSk7XG5mdW5jdGlvbiB1YihhLGIpe2lmKGIpe2lmKHRiW2FdJiYobnVsbCE9Yi5jaGlsZHJlbnx8bnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IocCgxMzcsYSkpO2lmKG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpe2lmKG51bGwhPWIuY2hpbGRyZW4pdGhyb3cgRXJyb3IocCg2MCkpO2lmKFwib2JqZWN0XCIhPT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTHx8IShcIl9faHRtbFwiaW4gYi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IocCg2MSkpO31pZihudWxsIT1iLnN0eWxlJiZcIm9iamVjdFwiIT09dHlwZW9mIGIuc3R5bGUpdGhyb3cgRXJyb3IocCg2MikpO319XG5mdW5jdGlvbiB2YihhLGIpe2lmKC0xPT09YS5pbmRleE9mKFwiLVwiKSlyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGIuaXM7c3dpdGNoKGEpe2Nhc2UgXCJhbm5vdGF0aW9uLXhtbFwiOmNhc2UgXCJjb2xvci1wcm9maWxlXCI6Y2FzZSBcImZvbnQtZmFjZVwiOmNhc2UgXCJmb250LWZhY2Utc3JjXCI6Y2FzZSBcImZvbnQtZmFjZS11cmlcIjpjYXNlIFwiZm9udC1mYWNlLWZvcm1hdFwiOmNhc2UgXCJmb250LWZhY2UtbmFtZVwiOmNhc2UgXCJtaXNzaW5nLWdseXBoXCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19dmFyIHdiPW51bGw7ZnVuY3Rpb24geGIoYSl7YT1hLnRhcmdldHx8YS5zcmNFbGVtZW50fHx3aW5kb3c7YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCYmKGE9YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCk7cmV0dXJuIDM9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphfXZhciB5Yj1udWxsLHpiPW51bGwsQWI9bnVsbDtcbmZ1bmN0aW9uIEJiKGEpe2lmKGE9Q2IoYSkpe2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiB5Yil0aHJvdyBFcnJvcihwKDI4MCkpO3ZhciBiPWEuc3RhdGVOb2RlO2ImJihiPURiKGIpLHliKGEuc3RhdGVOb2RlLGEudHlwZSxiKSl9fWZ1bmN0aW9uIEViKGEpe3piP0FiP0FiLnB1c2goYSk6QWI9W2FdOnpiPWF9ZnVuY3Rpb24gRmIoKXtpZih6Yil7dmFyIGE9emIsYj1BYjtBYj16Yj1udWxsO0JiKGEpO2lmKGIpZm9yKGE9MDthPGIubGVuZ3RoO2ErKylCYihiW2FdKX19ZnVuY3Rpb24gR2IoYSxiKXtyZXR1cm4gYShiKX1mdW5jdGlvbiBIYigpe312YXIgSWI9ITE7ZnVuY3Rpb24gSmIoYSxiLGMpe2lmKEliKXJldHVybiBhKGIsYyk7SWI9ITA7dHJ5e3JldHVybiBHYihhLGIsYyl9ZmluYWxseXtpZihJYj0hMSxudWxsIT09emJ8fG51bGwhPT1BYilIYigpLEZiKCl9fVxuZnVuY3Rpb24gS2IoYSxiKXt2YXIgYz1hLnN0YXRlTm9kZTtpZihudWxsPT09YylyZXR1cm4gbnVsbDt2YXIgZD1EYihjKTtpZihudWxsPT09ZClyZXR1cm4gbnVsbDtjPWRbYl07YTpzd2l0Y2goYil7Y2FzZSBcIm9uQ2xpY2tcIjpjYXNlIFwib25DbGlja0NhcHR1cmVcIjpjYXNlIFwib25Eb3VibGVDbGlja1wiOmNhc2UgXCJvbkRvdWJsZUNsaWNrQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlRG93blwiOmNhc2UgXCJvbk1vdXNlRG93bkNhcHR1cmVcIjpjYXNlIFwib25Nb3VzZU1vdmVcIjpjYXNlIFwib25Nb3VzZU1vdmVDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VVcFwiOmNhc2UgXCJvbk1vdXNlVXBDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VFbnRlclwiOihkPSFkLmRpc2FibGVkKXx8KGE9YS50eXBlLGQ9IShcImJ1dHRvblwiPT09YXx8XCJpbnB1dFwiPT09YXx8XCJzZWxlY3RcIj09PWF8fFwidGV4dGFyZWFcIj09PWEpKTthPSFkO2JyZWFrIGE7ZGVmYXVsdDphPSExfWlmKGEpcmV0dXJuIG51bGw7aWYoYyYmXCJmdW5jdGlvblwiIT09XG50eXBlb2YgYyl0aHJvdyBFcnJvcihwKDIzMSxiLHR5cGVvZiBjKSk7cmV0dXJuIGN9dmFyIExiPSExO2lmKGlhKXRyeXt2YXIgTWI9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KE1iLFwicGFzc2l2ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtMYj0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIixNYixNYik7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsTWIsTWIpfWNhdGNoKGEpe0xiPSExfWZ1bmN0aW9uIE5iKGEsYixjLGQsZSxmLGcsaCxrKXt2YXIgbD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMyk7dHJ5e2IuYXBwbHkoYyxsKX1jYXRjaChtKXt0aGlzLm9uRXJyb3IobSl9fXZhciBPYj0hMSxQYj1udWxsLFFiPSExLFJiPW51bGwsU2I9e29uRXJyb3I6ZnVuY3Rpb24oYSl7T2I9ITA7UGI9YX19O2Z1bmN0aW9uIFRiKGEsYixjLGQsZSxmLGcsaCxrKXtPYj0hMTtQYj1udWxsO05iLmFwcGx5KFNiLGFyZ3VtZW50cyl9XG5mdW5jdGlvbiBVYihhLGIsYyxkLGUsZixnLGgsayl7VGIuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKE9iKXtpZihPYil7dmFyIGw9UGI7T2I9ITE7UGI9bnVsbH1lbHNlIHRocm93IEVycm9yKHAoMTk4KSk7UWJ8fChRYj0hMCxSYj1sKX19ZnVuY3Rpb24gVmIoYSl7dmFyIGI9YSxjPWE7aWYoYS5hbHRlcm5hdGUpZm9yKDtiLnJldHVybjspYj1iLnJldHVybjtlbHNle2E9YjtkbyBiPWEsMCE9PShiLmZsYWdzJjQwOTgpJiYoYz1iLnJldHVybiksYT1iLnJldHVybjt3aGlsZShhKX1yZXR1cm4gMz09PWIudGFnP2M6bnVsbH1mdW5jdGlvbiBXYihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1hLm1lbW9pemVkU3RhdGU7bnVsbD09PWImJihhPWEuYWx0ZXJuYXRlLG51bGwhPT1hJiYoYj1hLm1lbW9pemVkU3RhdGUpKTtpZihudWxsIT09YilyZXR1cm4gYi5kZWh5ZHJhdGVkfXJldHVybiBudWxsfWZ1bmN0aW9uIFhiKGEpe2lmKFZiKGEpIT09YSl0aHJvdyBFcnJvcihwKDE4OCkpO31cbmZ1bmN0aW9uIFliKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO2lmKCFiKXtiPVZiKGEpO2lmKG51bGw9PT1iKXRocm93IEVycm9yKHAoMTg4KSk7cmV0dXJuIGIhPT1hP251bGw6YX1mb3IodmFyIGM9YSxkPWI7Oyl7dmFyIGU9Yy5yZXR1cm47aWYobnVsbD09PWUpYnJlYWs7dmFyIGY9ZS5hbHRlcm5hdGU7aWYobnVsbD09PWYpe2Q9ZS5yZXR1cm47aWYobnVsbCE9PWQpe2M9ZDtjb250aW51ZX1icmVha31pZihlLmNoaWxkPT09Zi5jaGlsZCl7Zm9yKGY9ZS5jaGlsZDtmOyl7aWYoZj09PWMpcmV0dXJuIFhiKGUpLGE7aWYoZj09PWQpcmV0dXJuIFhiKGUpLGI7Zj1mLnNpYmxpbmd9dGhyb3cgRXJyb3IocCgxODgpKTt9aWYoYy5yZXR1cm4hPT1kLnJldHVybiljPWUsZD1mO2Vsc2V7Zm9yKHZhciBnPSExLGg9ZS5jaGlsZDtoOyl7aWYoaD09PWMpe2c9ITA7Yz1lO2Q9ZjticmVha31pZihoPT09ZCl7Zz0hMDtkPWU7Yz1mO2JyZWFrfWg9aC5zaWJsaW5nfWlmKCFnKXtmb3IoaD1mLmNoaWxkO2g7KXtpZihoPT09XG5jKXtnPSEwO2M9ZjtkPWU7YnJlYWt9aWYoaD09PWQpe2c9ITA7ZD1mO2M9ZTticmVha31oPWguc2libGluZ31pZighZyl0aHJvdyBFcnJvcihwKDE4OSkpO319aWYoYy5hbHRlcm5hdGUhPT1kKXRocm93IEVycm9yKHAoMTkwKSk7fWlmKDMhPT1jLnRhZyl0aHJvdyBFcnJvcihwKDE4OCkpO3JldHVybiBjLnN0YXRlTm9kZS5jdXJyZW50PT09Yz9hOmJ9ZnVuY3Rpb24gWmIoYSl7YT1ZYihhKTtyZXR1cm4gbnVsbCE9PWE/JGIoYSk6bnVsbH1mdW5jdGlvbiAkYihhKXtpZig1PT09YS50YWd8fDY9PT1hLnRhZylyZXR1cm4gYTtmb3IoYT1hLmNoaWxkO251bGwhPT1hOyl7dmFyIGI9JGIoYSk7aWYobnVsbCE9PWIpcmV0dXJuIGI7YT1hLnNpYmxpbmd9cmV0dXJuIG51bGx9XG52YXIgYWM9Y2EudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayxiYz1jYS51bnN0YWJsZV9jYW5jZWxDYWxsYmFjayxjYz1jYS51bnN0YWJsZV9zaG91bGRZaWVsZCxkYz1jYS51bnN0YWJsZV9yZXF1ZXN0UGFpbnQsQj1jYS51bnN0YWJsZV9ub3csZWM9Y2EudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsZmM9Y2EudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksZ2M9Y2EudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksaGM9Y2EudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksaWM9Y2EudW5zdGFibGVfTG93UHJpb3JpdHksamM9Y2EudW5zdGFibGVfSWRsZVByaW9yaXR5LGtjPW51bGwsbGM9bnVsbDtmdW5jdGlvbiBtYyhhKXtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uQ29tbWl0RmliZXJSb290KXRyeXtsYy5vbkNvbW1pdEZpYmVyUm9vdChrYyxhLHZvaWQgMCwxMjg9PT0oYS5jdXJyZW50LmZsYWdzJjEyOCkpfWNhdGNoKGIpe319XG52YXIgb2M9TWF0aC5jbHozMj9NYXRoLmNsejMyOm5jLHBjPU1hdGgubG9nLHFjPU1hdGguTE4yO2Z1bmN0aW9uIG5jKGEpe2E+Pj49MDtyZXR1cm4gMD09PWE/MzI6MzEtKHBjKGEpL3FjfDApfDB9dmFyIHJjPTY0LHNjPTQxOTQzMDQ7XG5mdW5jdGlvbiB0YyhhKXtzd2l0Y2goYSYtYSl7Y2FzZSAxOnJldHVybiAxO2Nhc2UgMjpyZXR1cm4gMjtjYXNlIDQ6cmV0dXJuIDQ7Y2FzZSA4OnJldHVybiA4O2Nhc2UgMTY6cmV0dXJuIDE2O2Nhc2UgMzI6cmV0dXJuIDMyO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIGEmNDE5NDI0MDtjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OnJldHVybiBhJjEzMDAyMzQyNDtjYXNlIDEzNDIxNzcyODpyZXR1cm4gMTM0MjE3NzI4O2Nhc2UgMjY4NDM1NDU2OnJldHVybiAyNjg0MzU0NTY7Y2FzZSA1MzY4NzA5MTI6cmV0dXJuIDUzNjg3MDkxMjtjYXNlIDEwNzM3NDE4MjQ6cmV0dXJuIDEwNzM3NDE4MjQ7XG5kZWZhdWx0OnJldHVybiBhfX1mdW5jdGlvbiB1YyhhLGIpe3ZhciBjPWEucGVuZGluZ0xhbmVzO2lmKDA9PT1jKXJldHVybiAwO3ZhciBkPTAsZT1hLnN1c3BlbmRlZExhbmVzLGY9YS5waW5nZWRMYW5lcyxnPWMmMjY4NDM1NDU1O2lmKDAhPT1nKXt2YXIgaD1nJn5lOzAhPT1oP2Q9dGMoaCk6KGYmPWcsMCE9PWYmJihkPXRjKGYpKSl9ZWxzZSBnPWMmfmUsMCE9PWc/ZD10YyhnKTowIT09ZiYmKGQ9dGMoZikpO2lmKDA9PT1kKXJldHVybiAwO2lmKDAhPT1iJiZiIT09ZCYmMD09PShiJmUpJiYoZT1kJi1kLGY9YiYtYixlPj1mfHwxNj09PWUmJjAhPT0oZiY0MTk0MjQwKSkpcmV0dXJuIGI7MCE9PShkJjQpJiYoZHw9YyYxNik7Yj1hLmVudGFuZ2xlZExhbmVzO2lmKDAhPT1iKWZvcihhPWEuZW50YW5nbGVtZW50cyxiJj1kOzA8YjspYz0zMS1vYyhiKSxlPTE8PGMsZHw9YVtjXSxiJj1+ZTtyZXR1cm4gZH1cbmZ1bmN0aW9uIHZjKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiBiKzI1MDtjYXNlIDg6Y2FzZSAxNjpjYXNlIDMyOmNhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIGIrNUUzO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6cmV0dXJuLTE7Y2FzZSAxMzQyMTc3Mjg6Y2FzZSAyNjg0MzU0NTY6Y2FzZSA1MzY4NzA5MTI6Y2FzZSAxMDczNzQxODI0OnJldHVybi0xO2RlZmF1bHQ6cmV0dXJuLTF9fVxuZnVuY3Rpb24gd2MoYSxiKXtmb3IodmFyIGM9YS5zdXNwZW5kZWRMYW5lcyxkPWEucGluZ2VkTGFuZXMsZT1hLmV4cGlyYXRpb25UaW1lcyxmPWEucGVuZGluZ0xhbmVzOzA8Zjspe3ZhciBnPTMxLW9jKGYpLGg9MTw8ZyxrPWVbZ107aWYoLTE9PT1rKXtpZigwPT09KGgmYyl8fDAhPT0oaCZkKSllW2ddPXZjKGgsYil9ZWxzZSBrPD1iJiYoYS5leHBpcmVkTGFuZXN8PWgpO2YmPX5ofX1mdW5jdGlvbiB4YyhhKXthPWEucGVuZGluZ0xhbmVzJi0xMDczNzQxODI1O3JldHVybiAwIT09YT9hOmEmMTA3Mzc0MTgyND8xMDczNzQxODI0OjB9ZnVuY3Rpb24geWMoKXt2YXIgYT1yYztyYzw8PTE7MD09PShyYyY0MTk0MjQwKSYmKHJjPTY0KTtyZXR1cm4gYX1mdW5jdGlvbiB6YyhhKXtmb3IodmFyIGI9W10sYz0wOzMxPmM7YysrKWIucHVzaChhKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEFjKGEsYixjKXthLnBlbmRpbmdMYW5lc3w9Yjs1MzY4NzA5MTIhPT1iJiYoYS5zdXNwZW5kZWRMYW5lcz0wLGEucGluZ2VkTGFuZXM9MCk7YT1hLmV2ZW50VGltZXM7Yj0zMS1vYyhiKTthW2JdPWN9ZnVuY3Rpb24gQmMoYSxiKXt2YXIgYz1hLnBlbmRpbmdMYW5lcyZ+YjthLnBlbmRpbmdMYW5lcz1iO2Euc3VzcGVuZGVkTGFuZXM9MDthLnBpbmdlZExhbmVzPTA7YS5leHBpcmVkTGFuZXMmPWI7YS5tdXRhYmxlUmVhZExhbmVzJj1iO2EuZW50YW5nbGVkTGFuZXMmPWI7Yj1hLmVudGFuZ2xlbWVudHM7dmFyIGQ9YS5ldmVudFRpbWVzO2ZvcihhPWEuZXhwaXJhdGlvblRpbWVzOzA8Yzspe3ZhciBlPTMxLW9jKGMpLGY9MTw8ZTtiW2VdPTA7ZFtlXT0tMTthW2VdPS0xO2MmPX5mfX1cbmZ1bmN0aW9uIENjKGEsYil7dmFyIGM9YS5lbnRhbmdsZWRMYW5lc3w9Yjtmb3IoYT1hLmVudGFuZ2xlbWVudHM7Yzspe3ZhciBkPTMxLW9jKGMpLGU9MTw8ZDtlJmJ8YVtkXSZiJiYoYVtkXXw9Yik7YyY9fmV9fXZhciBDPTA7ZnVuY3Rpb24gRGMoYSl7YSY9LWE7cmV0dXJuIDE8YT80PGE/MCE9PShhJjI2ODQzNTQ1NSk/MTY6NTM2ODcwOTEyOjQ6MX12YXIgRWMsRmMsR2MsSGMsSWMsSmM9ITEsS2M9W10sTGM9bnVsbCxNYz1udWxsLE5jPW51bGwsT2M9bmV3IE1hcCxQYz1uZXcgTWFwLFFjPVtdLFJjPVwibW91c2Vkb3duIG1vdXNldXAgdG91Y2hjYW5jZWwgdG91Y2hlbmQgdG91Y2hzdGFydCBhdXhjbGljayBkYmxjbGljayBwb2ludGVyY2FuY2VsIHBvaW50ZXJkb3duIHBvaW50ZXJ1cCBkcmFnZW5kIGRyYWdzdGFydCBkcm9wIGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9uc3RhcnQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBpbnB1dCB0ZXh0SW5wdXQgY29weSBjdXQgcGFzdGUgY2xpY2sgY2hhbmdlIGNvbnRleHRtZW51IHJlc2V0IHN1Ym1pdFwiLnNwbGl0KFwiIFwiKTtcbmZ1bmN0aW9uIFNjKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJmb2N1c2luXCI6Y2FzZSBcImZvY3Vzb3V0XCI6TGM9bnVsbDticmVhaztjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdsZWF2ZVwiOk1jPW51bGw7YnJlYWs7Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJtb3VzZW91dFwiOk5jPW51bGw7YnJlYWs7Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpPYy5kZWxldGUoYi5wb2ludGVySWQpO2JyZWFrO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpQYy5kZWxldGUoYi5wb2ludGVySWQpfX1cbmZ1bmN0aW9uIFRjKGEsYixjLGQsZSxmKXtpZihudWxsPT09YXx8YS5uYXRpdmVFdmVudCE9PWYpcmV0dXJuIGE9e2Jsb2NrZWRPbjpiLGRvbUV2ZW50TmFtZTpjLGV2ZW50U3lzdGVtRmxhZ3M6ZCxuYXRpdmVFdmVudDpmLHRhcmdldENvbnRhaW5lcnM6W2VdfSxudWxsIT09YiYmKGI9Q2IoYiksbnVsbCE9PWImJkZjKGIpKSxhO2EuZXZlbnRTeXN0ZW1GbGFnc3w9ZDtiPWEudGFyZ2V0Q29udGFpbmVycztudWxsIT09ZSYmLTE9PT1iLmluZGV4T2YoZSkmJmIucHVzaChlKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIFVjKGEsYixjLGQsZSl7c3dpdGNoKGIpe2Nhc2UgXCJmb2N1c2luXCI6cmV0dXJuIExjPVRjKExjLGEsYixjLGQsZSksITA7Y2FzZSBcImRyYWdlbnRlclwiOnJldHVybiBNYz1UYyhNYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJtb3VzZW92ZXJcIjpyZXR1cm4gTmM9VGMoTmMsYSxiLGMsZCxlKSwhMDtjYXNlIFwicG9pbnRlcm92ZXJcIjp2YXIgZj1lLnBvaW50ZXJJZDtPYy5zZXQoZixUYyhPYy5nZXQoZil8fG51bGwsYSxiLGMsZCxlKSk7cmV0dXJuITA7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6cmV0dXJuIGY9ZS5wb2ludGVySWQsUGMuc2V0KGYsVGMoUGMuZ2V0KGYpfHxudWxsLGEsYixjLGQsZSkpLCEwfXJldHVybiExfVxuZnVuY3Rpb24gVmMoYSl7dmFyIGI9V2MoYS50YXJnZXQpO2lmKG51bGwhPT1iKXt2YXIgYz1WYihiKTtpZihudWxsIT09YylpZihiPWMudGFnLDEzPT09Yil7aWYoYj1XYihjKSxudWxsIT09Yil7YS5ibG9ja2VkT249YjtJYyhhLnByaW9yaXR5LGZ1bmN0aW9uKCl7R2MoYyl9KTtyZXR1cm59fWVsc2UgaWYoMz09PWImJmMuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe2EuYmxvY2tlZE9uPTM9PT1jLnRhZz9jLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7cmV0dXJufX1hLmJsb2NrZWRPbj1udWxsfVxuZnVuY3Rpb24gWGMoYSl7aWYobnVsbCE9PWEuYmxvY2tlZE9uKXJldHVybiExO2Zvcih2YXIgYj1hLnRhcmdldENvbnRhaW5lcnM7MDxiLmxlbmd0aDspe3ZhciBjPVljKGEuZG9tRXZlbnROYW1lLGEuZXZlbnRTeXN0ZW1GbGFncyxiWzBdLGEubmF0aXZlRXZlbnQpO2lmKG51bGw9PT1jKXtjPWEubmF0aXZlRXZlbnQ7dmFyIGQ9bmV3IGMuY29uc3RydWN0b3IoYy50eXBlLGMpO3diPWQ7Yy50YXJnZXQuZGlzcGF0Y2hFdmVudChkKTt3Yj1udWxsfWVsc2UgcmV0dXJuIGI9Q2IoYyksbnVsbCE9PWImJkZjKGIpLGEuYmxvY2tlZE9uPWMsITE7Yi5zaGlmdCgpfXJldHVybiEwfWZ1bmN0aW9uIFpjKGEsYixjKXtYYyhhKSYmYy5kZWxldGUoYil9ZnVuY3Rpb24gJGMoKXtKYz0hMTtudWxsIT09TGMmJlhjKExjKSYmKExjPW51bGwpO251bGwhPT1NYyYmWGMoTWMpJiYoTWM9bnVsbCk7bnVsbCE9PU5jJiZYYyhOYykmJihOYz1udWxsKTtPYy5mb3JFYWNoKFpjKTtQYy5mb3JFYWNoKFpjKX1cbmZ1bmN0aW9uIGFkKGEsYil7YS5ibG9ja2VkT249PT1iJiYoYS5ibG9ja2VkT249bnVsbCxKY3x8KEpjPSEwLGNhLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2soY2EudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksJGMpKSl9XG5mdW5jdGlvbiBiZChhKXtmdW5jdGlvbiBiKGIpe3JldHVybiBhZChiLGEpfWlmKDA8S2MubGVuZ3RoKXthZChLY1swXSxhKTtmb3IodmFyIGM9MTtjPEtjLmxlbmd0aDtjKyspe3ZhciBkPUtjW2NdO2QuYmxvY2tlZE9uPT09YSYmKGQuYmxvY2tlZE9uPW51bGwpfX1udWxsIT09TGMmJmFkKExjLGEpO251bGwhPT1NYyYmYWQoTWMsYSk7bnVsbCE9PU5jJiZhZChOYyxhKTtPYy5mb3JFYWNoKGIpO1BjLmZvckVhY2goYik7Zm9yKGM9MDtjPFFjLmxlbmd0aDtjKyspZD1RY1tjXSxkLmJsb2NrZWRPbj09PWEmJihkLmJsb2NrZWRPbj1udWxsKTtmb3IoOzA8UWMubGVuZ3RoJiYoYz1RY1swXSxudWxsPT09Yy5ibG9ja2VkT24pOylWYyhjKSxudWxsPT09Yy5ibG9ja2VkT24mJlFjLnNoaWZ0KCl9dmFyIGNkPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLGRkPSEwO1xuZnVuY3Rpb24gZWQoYSxiLGMsZCl7dmFyIGU9QyxmPWNkLnRyYW5zaXRpb247Y2QudHJhbnNpdGlvbj1udWxsO3RyeXtDPTEsZmQoYSxiLGMsZCl9ZmluYWxseXtDPWUsY2QudHJhbnNpdGlvbj1mfX1mdW5jdGlvbiBnZChhLGIsYyxkKXt2YXIgZT1DLGY9Y2QudHJhbnNpdGlvbjtjZC50cmFuc2l0aW9uPW51bGw7dHJ5e0M9NCxmZChhLGIsYyxkKX1maW5hbGx5e0M9ZSxjZC50cmFuc2l0aW9uPWZ9fVxuZnVuY3Rpb24gZmQoYSxiLGMsZCl7aWYoZGQpe3ZhciBlPVljKGEsYixjLGQpO2lmKG51bGw9PT1lKWhkKGEsYixkLGlkLGMpLFNjKGEsZCk7ZWxzZSBpZihVYyhlLGEsYixjLGQpKWQuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihTYyhhLGQpLGImNCYmLTE8UmMuaW5kZXhPZihhKSl7Zm9yKDtudWxsIT09ZTspe3ZhciBmPUNiKGUpO251bGwhPT1mJiZFYyhmKTtmPVljKGEsYixjLGQpO251bGw9PT1mJiZoZChhLGIsZCxpZCxjKTtpZihmPT09ZSlicmVhaztlPWZ9bnVsbCE9PWUmJmQuc3RvcFByb3BhZ2F0aW9uKCl9ZWxzZSBoZChhLGIsZCxudWxsLGMpfX12YXIgaWQ9bnVsbDtcbmZ1bmN0aW9uIFljKGEsYixjLGQpe2lkPW51bGw7YT14YihkKTthPVdjKGEpO2lmKG51bGwhPT1hKWlmKGI9VmIoYSksbnVsbD09PWIpYT1udWxsO2Vsc2UgaWYoYz1iLnRhZywxMz09PWMpe2E9V2IoYik7aWYobnVsbCE9PWEpcmV0dXJuIGE7YT1udWxsfWVsc2UgaWYoMz09PWMpe2lmKGIuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpcmV0dXJuIDM9PT1iLnRhZz9iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7YT1udWxsfWVsc2UgYiE9PWEmJihhPW51bGwpO2lkPWE7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBqZChhKXtzd2l0Y2goYSl7Y2FzZSBcImNhbmNlbFwiOmNhc2UgXCJjbGlja1wiOmNhc2UgXCJjbG9zZVwiOmNhc2UgXCJjb250ZXh0bWVudVwiOmNhc2UgXCJjb3B5XCI6Y2FzZSBcImN1dFwiOmNhc2UgXCJhdXhjbGlja1wiOmNhc2UgXCJkYmxjbGlja1wiOmNhc2UgXCJkcmFnZW5kXCI6Y2FzZSBcImRyYWdzdGFydFwiOmNhc2UgXCJkcm9wXCI6Y2FzZSBcImZvY3VzaW5cIjpjYXNlIFwiZm9jdXNvdXRcIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwiaW52YWxpZFwiOmNhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXByZXNzXCI6Y2FzZSBcImtleXVwXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcInBhc3RlXCI6Y2FzZSBcInBhdXNlXCI6Y2FzZSBcInBsYXlcIjpjYXNlIFwicG9pbnRlcmNhbmNlbFwiOmNhc2UgXCJwb2ludGVyZG93blwiOmNhc2UgXCJwb2ludGVydXBcIjpjYXNlIFwicmF0ZWNoYW5nZVwiOmNhc2UgXCJyZXNldFwiOmNhc2UgXCJyZXNpemVcIjpjYXNlIFwic2Vla2VkXCI6Y2FzZSBcInN1Ym1pdFwiOmNhc2UgXCJ0b3VjaGNhbmNlbFwiOmNhc2UgXCJ0b3VjaGVuZFwiOmNhc2UgXCJ0b3VjaHN0YXJ0XCI6Y2FzZSBcInZvbHVtZWNoYW5nZVwiOmNhc2UgXCJjaGFuZ2VcIjpjYXNlIFwic2VsZWN0aW9uY2hhbmdlXCI6Y2FzZSBcInRleHRJbnB1dFwiOmNhc2UgXCJjb21wb3NpdGlvbnN0YXJ0XCI6Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6Y2FzZSBcImNvbXBvc2l0aW9udXBkYXRlXCI6Y2FzZSBcImJlZm9yZWJsdXJcIjpjYXNlIFwiYWZ0ZXJibHVyXCI6Y2FzZSBcImJlZm9yZWlucHV0XCI6Y2FzZSBcImJsdXJcIjpjYXNlIFwiZnVsbHNjcmVlbmNoYW5nZVwiOmNhc2UgXCJmb2N1c1wiOmNhc2UgXCJoYXNoY2hhbmdlXCI6Y2FzZSBcInBvcHN0YXRlXCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJzZWxlY3RzdGFydFwiOnJldHVybiAxO2Nhc2UgXCJkcmFnXCI6Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnZXhpdFwiOmNhc2UgXCJkcmFnbGVhdmVcIjpjYXNlIFwiZHJhZ292ZXJcIjpjYXNlIFwibW91c2Vtb3ZlXCI6Y2FzZSBcIm1vdXNlb3V0XCI6Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJwb2ludGVybW92ZVwiOmNhc2UgXCJwb2ludGVyb3V0XCI6Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInNjcm9sbFwiOmNhc2UgXCJ0b2dnbGVcIjpjYXNlIFwidG91Y2htb3ZlXCI6Y2FzZSBcIndoZWVsXCI6Y2FzZSBcIm1vdXNlZW50ZXJcIjpjYXNlIFwibW91c2VsZWF2ZVwiOmNhc2UgXCJwb2ludGVyZW50ZXJcIjpjYXNlIFwicG9pbnRlcmxlYXZlXCI6cmV0dXJuIDQ7XG5jYXNlIFwibWVzc2FnZVwiOnN3aXRjaChlYygpKXtjYXNlIGZjOnJldHVybiAxO2Nhc2UgZ2M6cmV0dXJuIDQ7Y2FzZSBoYzpjYXNlIGljOnJldHVybiAxNjtjYXNlIGpjOnJldHVybiA1MzY4NzA5MTI7ZGVmYXVsdDpyZXR1cm4gMTZ9ZGVmYXVsdDpyZXR1cm4gMTZ9fXZhciBrZD1udWxsLGxkPW51bGwsbWQ9bnVsbDtmdW5jdGlvbiBuZCgpe2lmKG1kKXJldHVybiBtZDt2YXIgYSxiPWxkLGM9Yi5sZW5ndGgsZCxlPVwidmFsdWVcImluIGtkP2tkLnZhbHVlOmtkLnRleHRDb250ZW50LGY9ZS5sZW5ndGg7Zm9yKGE9MDthPGMmJmJbYV09PT1lW2FdO2ErKyk7dmFyIGc9Yy1hO2ZvcihkPTE7ZDw9ZyYmYltjLWRdPT09ZVtmLWRdO2QrKyk7cmV0dXJuIG1kPWUuc2xpY2UoYSwxPGQ/MS1kOnZvaWQgMCl9XG5mdW5jdGlvbiBvZChhKXt2YXIgYj1hLmtleUNvZGU7XCJjaGFyQ29kZVwiaW4gYT8oYT1hLmNoYXJDb2RlLDA9PT1hJiYxMz09PWImJihhPTEzKSk6YT1iOzEwPT09YSYmKGE9MTMpO3JldHVybiAzMjw9YXx8MTM9PT1hP2E6MH1mdW5jdGlvbiBwZCgpe3JldHVybiEwfWZ1bmN0aW9uIHFkKCl7cmV0dXJuITF9XG5mdW5jdGlvbiByZChhKXtmdW5jdGlvbiBiKGIsZCxlLGYsZyl7dGhpcy5fcmVhY3ROYW1lPWI7dGhpcy5fdGFyZ2V0SW5zdD1lO3RoaXMudHlwZT1kO3RoaXMubmF0aXZlRXZlbnQ9Zjt0aGlzLnRhcmdldD1nO3RoaXMuY3VycmVudFRhcmdldD1udWxsO2Zvcih2YXIgYyBpbiBhKWEuaGFzT3duUHJvcGVydHkoYykmJihiPWFbY10sdGhpc1tjXT1iP2IoZik6ZltjXSk7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KG51bGwhPWYuZGVmYXVsdFByZXZlbnRlZD9mLmRlZmF1bHRQcmV2ZW50ZWQ6ITE9PT1mLnJldHVyblZhbHVlKT9wZDpxZDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXFkO3JldHVybiB0aGlzfUEoYi5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOlwidW5rbm93blwiIT09dHlwZW9mIGEucmV0dXJuVmFsdWUmJlxuKGEucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXBkKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5uYXRpdmVFdmVudDthJiYoYS5zdG9wUHJvcGFnYXRpb24/YS5zdG9wUHJvcGFnYXRpb24oKTpcInVua25vd25cIiE9PXR5cGVvZiBhLmNhbmNlbEJ1YmJsZSYmKGEuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXBkKX0scGVyc2lzdDpmdW5jdGlvbigpe30saXNQZXJzaXN0ZW50OnBkfSk7cmV0dXJuIGJ9XG52YXIgc2Q9e2V2ZW50UGhhc2U6MCxidWJibGVzOjAsY2FuY2VsYWJsZTowLHRpbWVTdGFtcDpmdW5jdGlvbihhKXtyZXR1cm4gYS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6MCxpc1RydXN0ZWQ6MH0sdGQ9cmQoc2QpLHVkPUEoe30sc2Qse3ZpZXc6MCxkZXRhaWw6MH0pLHZkPXJkKHVkKSx3ZCx4ZCx5ZCxBZD1BKHt9LHVkLHtzY3JlZW5YOjAsc2NyZWVuWTowLGNsaWVudFg6MCxjbGllbnRZOjAscGFnZVg6MCxwYWdlWTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxnZXRNb2RpZmllclN0YXRlOnpkLGJ1dHRvbjowLGJ1dHRvbnM6MCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiB2b2lkIDA9PT1hLnJlbGF0ZWRUYXJnZXQ/YS5mcm9tRWxlbWVudD09PWEuc3JjRWxlbWVudD9hLnRvRWxlbWVudDphLmZyb21FbGVtZW50OmEucmVsYXRlZFRhcmdldH0sbW92ZW1lbnRYOmZ1bmN0aW9uKGEpe2lmKFwibW92ZW1lbnRYXCJpblxuYSlyZXR1cm4gYS5tb3ZlbWVudFg7YSE9PXlkJiYoeWQmJlwibW91c2Vtb3ZlXCI9PT1hLnR5cGU/KHdkPWEuc2NyZWVuWC15ZC5zY3JlZW5YLHhkPWEuc2NyZWVuWS15ZC5zY3JlZW5ZKTp4ZD13ZD0wLHlkPWEpO3JldHVybiB3ZH0sbW92ZW1lbnRZOmZ1bmN0aW9uKGEpe3JldHVyblwibW92ZW1lbnRZXCJpbiBhP2EubW92ZW1lbnRZOnhkfX0pLEJkPXJkKEFkKSxDZD1BKHt9LEFkLHtkYXRhVHJhbnNmZXI6MH0pLERkPXJkKENkKSxFZD1BKHt9LHVkLHtyZWxhdGVkVGFyZ2V0OjB9KSxGZD1yZChFZCksR2Q9QSh7fSxzZCx7YW5pbWF0aW9uTmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSksSGQ9cmQoR2QpLElkPUEoe30sc2Qse2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuXCJjbGlwYm9hcmREYXRhXCJpbiBhP2EuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xpcGJvYXJkRGF0YX19KSxKZD1yZChJZCksS2Q9QSh7fSxzZCx7ZGF0YTowfSksTGQ9cmQoS2QpLE1kPXtFc2M6XCJFc2NhcGVcIixcblNwYWNlYmFyOlwiIFwiLExlZnQ6XCJBcnJvd0xlZnRcIixVcDpcIkFycm93VXBcIixSaWdodDpcIkFycm93UmlnaHRcIixEb3duOlwiQXJyb3dEb3duXCIsRGVsOlwiRGVsZXRlXCIsV2luOlwiT1NcIixNZW51OlwiQ29udGV4dE1lbnVcIixBcHBzOlwiQ29udGV4dE1lbnVcIixTY3JvbGw6XCJTY3JvbGxMb2NrXCIsTW96UHJpbnRhYmxlS2V5OlwiVW5pZGVudGlmaWVkXCJ9LE5kPXs4OlwiQmFja3NwYWNlXCIsOTpcIlRhYlwiLDEyOlwiQ2xlYXJcIiwxMzpcIkVudGVyXCIsMTY6XCJTaGlmdFwiLDE3OlwiQ29udHJvbFwiLDE4OlwiQWx0XCIsMTk6XCJQYXVzZVwiLDIwOlwiQ2Fwc0xvY2tcIiwyNzpcIkVzY2FwZVwiLDMyOlwiIFwiLDMzOlwiUGFnZVVwXCIsMzQ6XCJQYWdlRG93blwiLDM1OlwiRW5kXCIsMzY6XCJIb21lXCIsMzc6XCJBcnJvd0xlZnRcIiwzODpcIkFycm93VXBcIiwzOTpcIkFycm93UmlnaHRcIiw0MDpcIkFycm93RG93blwiLDQ1OlwiSW5zZXJ0XCIsNDY6XCJEZWxldGVcIiwxMTI6XCJGMVwiLDExMzpcIkYyXCIsMTE0OlwiRjNcIiwxMTU6XCJGNFwiLDExNjpcIkY1XCIsMTE3OlwiRjZcIiwxMTg6XCJGN1wiLFxuMTE5OlwiRjhcIiwxMjA6XCJGOVwiLDEyMTpcIkYxMFwiLDEyMjpcIkYxMVwiLDEyMzpcIkYxMlwiLDE0NDpcIk51bUxvY2tcIiwxNDU6XCJTY3JvbGxMb2NrXCIsMjI0OlwiTWV0YVwifSxPZD17QWx0OlwiYWx0S2V5XCIsQ29udHJvbDpcImN0cmxLZXlcIixNZXRhOlwibWV0YUtleVwiLFNoaWZ0Olwic2hpZnRLZXlcIn07ZnVuY3Rpb24gUGQoYSl7dmFyIGI9dGhpcy5uYXRpdmVFdmVudDtyZXR1cm4gYi5nZXRNb2RpZmllclN0YXRlP2IuZ2V0TW9kaWZpZXJTdGF0ZShhKTooYT1PZFthXSk/ISFiW2FdOiExfWZ1bmN0aW9uIHpkKCl7cmV0dXJuIFBkfVxudmFyIFFkPUEoe30sdWQse2tleTpmdW5jdGlvbihhKXtpZihhLmtleSl7dmFyIGI9TWRbYS5rZXldfHxhLmtleTtpZihcIlVuaWRlbnRpZmllZFwiIT09YilyZXR1cm4gYn1yZXR1cm5cImtleXByZXNzXCI9PT1hLnR5cGU/KGE9b2QoYSksMTM9PT1hP1wiRW50ZXJcIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKTpcImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP05kW2Eua2V5Q29kZV18fFwiVW5pZGVudGlmaWVkXCI6XCJcIn0sY29kZTowLGxvY2F0aW9uOjAsY3RybEtleTowLHNoaWZ0S2V5OjAsYWx0S2V5OjAsbWV0YUtleTowLHJlcGVhdDowLGxvY2FsZTowLGdldE1vZGlmaWVyU3RhdGU6emQsY2hhckNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09YS50eXBlP29kKGEpOjB9LGtleUNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9hLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09XG5hLnR5cGU/b2QoYSk6XCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9hLmtleUNvZGU6MH19KSxSZD1yZChRZCksU2Q9QSh7fSxBZCx7cG9pbnRlcklkOjAsd2lkdGg6MCxoZWlnaHQ6MCxwcmVzc3VyZTowLHRhbmdlbnRpYWxQcmVzc3VyZTowLHRpbHRYOjAsdGlsdFk6MCx0d2lzdDowLHBvaW50ZXJUeXBlOjAsaXNQcmltYXJ5OjB9KSxUZD1yZChTZCksVWQ9QSh7fSx1ZCx7dG91Y2hlczowLHRhcmdldFRvdWNoZXM6MCxjaGFuZ2VkVG91Y2hlczowLGFsdEtleTowLG1ldGFLZXk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxnZXRNb2RpZmllclN0YXRlOnpkfSksVmQ9cmQoVWQpLFdkPUEoe30sc2Qse3Byb3BlcnR5TmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSksWGQ9cmQoV2QpLFlkPUEoe30sQWQse2RlbHRhWDpmdW5jdGlvbihhKXtyZXR1cm5cImRlbHRhWFwiaW4gYT9hLmRlbHRhWDpcIndoZWVsRGVsdGFYXCJpbiBhPy1hLndoZWVsRGVsdGFYOjB9LFxuZGVsdGFZOmZ1bmN0aW9uKGEpe3JldHVyblwiZGVsdGFZXCJpbiBhP2EuZGVsdGFZOlwid2hlZWxEZWx0YVlcImluIGE/LWEud2hlZWxEZWx0YVk6XCJ3aGVlbERlbHRhXCJpbiBhPy1hLndoZWVsRGVsdGE6MH0sZGVsdGFaOjAsZGVsdGFNb2RlOjB9KSxaZD1yZChZZCksJGQ9WzksMTMsMjcsMzJdLGFlPWlhJiZcIkNvbXBvc2l0aW9uRXZlbnRcImluIHdpbmRvdyxiZT1udWxsO2lhJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJihiZT1kb2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciBjZT1pYSYmXCJUZXh0RXZlbnRcImluIHdpbmRvdyYmIWJlLGRlPWlhJiYoIWFlfHxiZSYmODxiZSYmMTE+PWJlKSxlZT1TdHJpbmcuZnJvbUNoYXJDb2RlKDMyKSxmZT0hMTtcbmZ1bmN0aW9uIGdlKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJrZXl1cFwiOnJldHVybi0xIT09JGQuaW5kZXhPZihiLmtleUNvZGUpO2Nhc2UgXCJrZXlkb3duXCI6cmV0dXJuIDIyOSE9PWIua2V5Q29kZTtjYXNlIFwia2V5cHJlc3NcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcImZvY3Vzb3V0XCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gaGUoYSl7YT1hLmRldGFpbDtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJlwiZGF0YVwiaW4gYT9hLmRhdGE6bnVsbH12YXIgaWU9ITE7ZnVuY3Rpb24gamUoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIGhlKGIpO2Nhc2UgXCJrZXlwcmVzc1wiOmlmKDMyIT09Yi53aGljaClyZXR1cm4gbnVsbDtmZT0hMDtyZXR1cm4gZWU7Y2FzZSBcInRleHRJbnB1dFwiOnJldHVybiBhPWIuZGF0YSxhPT09ZWUmJmZlP251bGw6YTtkZWZhdWx0OnJldHVybiBudWxsfX1cbmZ1bmN0aW9uIGtlKGEsYil7aWYoaWUpcmV0dXJuXCJjb21wb3NpdGlvbmVuZFwiPT09YXx8IWFlJiZnZShhLGIpPyhhPW5kKCksbWQ9bGQ9a2Q9bnVsbCxpZT0hMSxhKTpudWxsO3N3aXRjaChhKXtjYXNlIFwicGFzdGVcIjpyZXR1cm4gbnVsbDtjYXNlIFwia2V5cHJlc3NcIjppZighKGIuY3RybEtleXx8Yi5hbHRLZXl8fGIubWV0YUtleSl8fGIuY3RybEtleSYmYi5hbHRLZXkpe2lmKGIuY2hhciYmMTxiLmNoYXIubGVuZ3RoKXJldHVybiBiLmNoYXI7aWYoYi53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShiLndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gZGUmJlwia29cIiE9PWIubG9jYWxlP251bGw6Yi5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fVxudmFyIGxlPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLFwiZGF0ZXRpbWUtbG9jYWxcIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O2Z1bmN0aW9uIG1lKGEpe3ZhciBiPWEmJmEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT1iPyEhbGVbYS50eXBlXTpcInRleHRhcmVhXCI9PT1iPyEwOiExfWZ1bmN0aW9uIG5lKGEsYixjLGQpe0ViKGQpO2I9b2UoYixcIm9uQ2hhbmdlXCIpOzA8Yi5sZW5ndGgmJihjPW5ldyB0ZChcIm9uQ2hhbmdlXCIsXCJjaGFuZ2VcIixudWxsLGMsZCksYS5wdXNoKHtldmVudDpjLGxpc3RlbmVyczpifSkpfXZhciBwZT1udWxsLHFlPW51bGw7ZnVuY3Rpb24gcmUoYSl7c2UoYSwwKX1mdW5jdGlvbiB0ZShhKXt2YXIgYj11ZShhKTtpZihXYShiKSlyZXR1cm4gYX1cbmZ1bmN0aW9uIHZlKGEsYil7aWYoXCJjaGFuZ2VcIj09PWEpcmV0dXJuIGJ9dmFyIHdlPSExO2lmKGlhKXt2YXIgeGU7aWYoaWEpe3ZhciB5ZT1cIm9uaW5wdXRcImluIGRvY3VtZW50O2lmKCF5ZSl7dmFyIHplPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7emUuc2V0QXR0cmlidXRlKFwib25pbnB1dFwiLFwicmV0dXJuO1wiKTt5ZT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgemUub25pbnB1dH14ZT15ZX1lbHNlIHhlPSExO3dlPXhlJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OTxkb2N1bWVudC5kb2N1bWVudE1vZGUpfWZ1bmN0aW9uIEFlKCl7cGUmJihwZS5kZXRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixCZSkscWU9cGU9bnVsbCl9ZnVuY3Rpb24gQmUoYSl7aWYoXCJ2YWx1ZVwiPT09YS5wcm9wZXJ0eU5hbWUmJnRlKHFlKSl7dmFyIGI9W107bmUoYixxZSxhLHhiKGEpKTtKYihyZSxiKX19XG5mdW5jdGlvbiBDZShhLGIsYyl7XCJmb2N1c2luXCI9PT1hPyhBZSgpLHBlPWIscWU9YyxwZS5hdHRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixCZSkpOlwiZm9jdXNvdXRcIj09PWEmJkFlKCl9ZnVuY3Rpb24gRGUoYSl7aWYoXCJzZWxlY3Rpb25jaGFuZ2VcIj09PWF8fFwia2V5dXBcIj09PWF8fFwia2V5ZG93blwiPT09YSlyZXR1cm4gdGUocWUpfWZ1bmN0aW9uIEVlKGEsYil7aWYoXCJjbGlja1wiPT09YSlyZXR1cm4gdGUoYil9ZnVuY3Rpb24gRmUoYSxiKXtpZihcImlucHV0XCI9PT1hfHxcImNoYW5nZVwiPT09YSlyZXR1cm4gdGUoYil9ZnVuY3Rpb24gR2UoYSxiKXtyZXR1cm4gYT09PWImJigwIT09YXx8MS9hPT09MS9iKXx8YSE9PWEmJmIhPT1ifXZhciBIZT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgT2JqZWN0LmlzP09iamVjdC5pczpHZTtcbmZ1bmN0aW9uIEllKGEsYil7aWYoSGUoYSxiKSlyZXR1cm4hMDtpZihcIm9iamVjdFwiIT09dHlwZW9mIGF8fG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGJ8fG51bGw9PT1iKXJldHVybiExO3ZhciBjPU9iamVjdC5rZXlzKGEpLGQ9T2JqZWN0LmtleXMoYik7aWYoYy5sZW5ndGghPT1kLmxlbmd0aClyZXR1cm4hMTtmb3IoZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdO2lmKCFqYS5jYWxsKGIsZSl8fCFIZShhW2VdLGJbZV0pKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIEplKGEpe2Zvcig7YSYmYS5maXJzdENoaWxkOylhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX1cbmZ1bmN0aW9uIEtlKGEsYil7dmFyIGM9SmUoYSk7YT0wO2Zvcih2YXIgZDtjOyl7aWYoMz09PWMubm9kZVR5cGUpe2Q9YStjLnRleHRDb250ZW50Lmxlbmd0aDtpZihhPD1iJiZkPj1iKXJldHVybntub2RlOmMsb2Zmc2V0OmItYX07YT1kfWE6e2Zvcig7Yzspe2lmKGMubmV4dFNpYmxpbmcpe2M9Yy5uZXh0U2libGluZzticmVhayBhfWM9Yy5wYXJlbnROb2RlfWM9dm9pZCAwfWM9SmUoYyl9fWZ1bmN0aW9uIExlKGEsYil7cmV0dXJuIGEmJmI/YT09PWI/ITA6YSYmMz09PWEubm9kZVR5cGU/ITE6YiYmMz09PWIubm9kZVR5cGU/TGUoYSxiLnBhcmVudE5vZGUpOlwiY29udGFpbnNcImluIGE/YS5jb250YWlucyhiKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPyEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpOiExOiExfVxuZnVuY3Rpb24gTWUoKXtmb3IodmFyIGE9d2luZG93LGI9WGEoKTtiIGluc3RhbmNlb2YgYS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXt2YXIgYz1cInN0cmluZ1wiPT09dHlwZW9mIGIuY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmfWNhdGNoKGQpe2M9ITF9aWYoYylhPWIuY29udGVudFdpbmRvdztlbHNlIGJyZWFrO2I9WGEoYS5kb2N1bWVudCl9cmV0dXJuIGJ9ZnVuY3Rpb24gTmUoYSl7dmFyIGI9YSYmYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBiJiYoXCJpbnB1dFwiPT09YiYmKFwidGV4dFwiPT09YS50eXBlfHxcInNlYXJjaFwiPT09YS50eXBlfHxcInRlbFwiPT09YS50eXBlfHxcInVybFwiPT09YS50eXBlfHxcInBhc3N3b3JkXCI9PT1hLnR5cGUpfHxcInRleHRhcmVhXCI9PT1ifHxcInRydWVcIj09PWEuY29udGVudEVkaXRhYmxlKX1cbmZ1bmN0aW9uIE9lKGEpe3ZhciBiPU1lKCksYz1hLmZvY3VzZWRFbGVtLGQ9YS5zZWxlY3Rpb25SYW5nZTtpZihiIT09YyYmYyYmYy5vd25lckRvY3VtZW50JiZMZShjLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGMpKXtpZihudWxsIT09ZCYmTmUoYykpaWYoYj1kLnN0YXJ0LGE9ZC5lbmQsdm9pZCAwPT09YSYmKGE9YiksXCJzZWxlY3Rpb25TdGFydFwiaW4gYyljLnNlbGVjdGlvblN0YXJ0PWIsYy5zZWxlY3Rpb25FbmQ9TWF0aC5taW4oYSxjLnZhbHVlLmxlbmd0aCk7ZWxzZSBpZihhPShiPWMub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpJiZiLmRlZmF1bHRWaWV3fHx3aW5kb3csYS5nZXRTZWxlY3Rpb24pe2E9YS5nZXRTZWxlY3Rpb24oKTt2YXIgZT1jLnRleHRDb250ZW50Lmxlbmd0aCxmPU1hdGgubWluKGQuc3RhcnQsZSk7ZD12b2lkIDA9PT1kLmVuZD9mOk1hdGgubWluKGQuZW5kLGUpOyFhLmV4dGVuZCYmZj5kJiYoZT1kLGQ9ZixmPWUpO2U9S2UoYyxmKTt2YXIgZz1LZShjLFxuZCk7ZSYmZyYmKDEhPT1hLnJhbmdlQ291bnR8fGEuYW5jaG9yTm9kZSE9PWUubm9kZXx8YS5hbmNob3JPZmZzZXQhPT1lLm9mZnNldHx8YS5mb2N1c05vZGUhPT1nLm5vZGV8fGEuZm9jdXNPZmZzZXQhPT1nLm9mZnNldCkmJihiPWIuY3JlYXRlUmFuZ2UoKSxiLnNldFN0YXJ0KGUubm9kZSxlLm9mZnNldCksYS5yZW1vdmVBbGxSYW5nZXMoKSxmPmQ/KGEuYWRkUmFuZ2UoYiksYS5leHRlbmQoZy5ub2RlLGcub2Zmc2V0KSk6KGIuc2V0RW5kKGcubm9kZSxnLm9mZnNldCksYS5hZGRSYW5nZShiKSkpfWI9W107Zm9yKGE9YzthPWEucGFyZW50Tm9kZTspMT09PWEubm9kZVR5cGUmJmIucHVzaCh7ZWxlbWVudDphLGxlZnQ6YS5zY3JvbGxMZWZ0LHRvcDphLnNjcm9sbFRvcH0pO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBjLmZvY3VzJiZjLmZvY3VzKCk7Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKylhPWJbY10sYS5lbGVtZW50LnNjcm9sbExlZnQ9YS5sZWZ0LGEuZWxlbWVudC5zY3JvbGxUb3A9YS50b3B9fVxudmFyIFBlPWlhJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJjExPj1kb2N1bWVudC5kb2N1bWVudE1vZGUsUWU9bnVsbCxSZT1udWxsLFNlPW51bGwsVGU9ITE7XG5mdW5jdGlvbiBVZShhLGIsYyl7dmFyIGQ9Yy53aW5kb3c9PT1jP2MuZG9jdW1lbnQ6OT09PWMubm9kZVR5cGU/YzpjLm93bmVyRG9jdW1lbnQ7VGV8fG51bGw9PVFlfHxRZSE9PVhhKGQpfHwoZD1RZSxcInNlbGVjdGlvblN0YXJ0XCJpbiBkJiZOZShkKT9kPXtzdGFydDpkLnNlbGVjdGlvblN0YXJ0LGVuZDpkLnNlbGVjdGlvbkVuZH06KGQ9KGQub3duZXJEb2N1bWVudCYmZC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLGQ9e2FuY2hvck5vZGU6ZC5hbmNob3JOb2RlLGFuY2hvck9mZnNldDpkLmFuY2hvck9mZnNldCxmb2N1c05vZGU6ZC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6ZC5mb2N1c09mZnNldH0pLFNlJiZJZShTZSxkKXx8KFNlPWQsZD1vZShSZSxcIm9uU2VsZWN0XCIpLDA8ZC5sZW5ndGgmJihiPW5ldyB0ZChcIm9uU2VsZWN0XCIsXCJzZWxlY3RcIixudWxsLGIsYyksYS5wdXNoKHtldmVudDpiLGxpc3RlbmVyczpkfSksYi50YXJnZXQ9UWUpKSl9XG5mdW5jdGlvbiBWZShhLGIpe3ZhciBjPXt9O2NbYS50b0xvd2VyQ2FzZSgpXT1iLnRvTG93ZXJDYXNlKCk7Y1tcIldlYmtpdFwiK2FdPVwid2Via2l0XCIrYjtjW1wiTW96XCIrYV09XCJtb3pcIitiO3JldHVybiBjfXZhciBXZT17YW5pbWF0aW9uZW5kOlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25FbmRcIiksYW5pbWF0aW9uaXRlcmF0aW9uOlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25JdGVyYXRpb25cIiksYW5pbWF0aW9uc3RhcnQ6VmUoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvblN0YXJ0XCIpLHRyYW5zaXRpb25lbmQ6VmUoXCJUcmFuc2l0aW9uXCIsXCJUcmFuc2l0aW9uRW5kXCIpfSxYZT17fSxZZT17fTtcbmlhJiYoWWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKS5zdHlsZSxcIkFuaW1hdGlvbkV2ZW50XCJpbiB3aW5kb3d8fChkZWxldGUgV2UuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgV2UuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgV2UuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSxcIlRyYW5zaXRpb25FdmVudFwiaW4gd2luZG93fHxkZWxldGUgV2UudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKTtmdW5jdGlvbiBaZShhKXtpZihYZVthXSlyZXR1cm4gWGVbYV07aWYoIVdlW2FdKXJldHVybiBhO3ZhciBiPVdlW2FdLGM7Zm9yKGMgaW4gYilpZihiLmhhc093blByb3BlcnR5KGMpJiZjIGluIFllKXJldHVybiBYZVthXT1iW2NdO3JldHVybiBhfXZhciAkZT1aZShcImFuaW1hdGlvbmVuZFwiKSxhZj1aZShcImFuaW1hdGlvbml0ZXJhdGlvblwiKSxiZj1aZShcImFuaW1hdGlvbnN0YXJ0XCIpLGNmPVplKFwidHJhbnNpdGlvbmVuZFwiKSxkZj1uZXcgTWFwLGVmPVwiYWJvcnQgYXV4Q2xpY2sgY2FuY2VsIGNhblBsYXkgY2FuUGxheVRocm91Z2ggY2xpY2sgY2xvc2UgY29udGV4dE1lbnUgY29weSBjdXQgZHJhZyBkcmFnRW5kIGRyYWdFbnRlciBkcmFnRXhpdCBkcmFnTGVhdmUgZHJhZ092ZXIgZHJhZ1N0YXJ0IGRyb3AgZHVyYXRpb25DaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgZ290UG9pbnRlckNhcHR1cmUgaW5wdXQgaW52YWxpZCBrZXlEb3duIGtleVByZXNzIGtleVVwIGxvYWQgbG9hZGVkRGF0YSBsb2FkZWRNZXRhZGF0YSBsb2FkU3RhcnQgbG9zdFBvaW50ZXJDYXB0dXJlIG1vdXNlRG93biBtb3VzZU1vdmUgbW91c2VPdXQgbW91c2VPdmVyIG1vdXNlVXAgcGFzdGUgcGF1c2UgcGxheSBwbGF5aW5nIHBvaW50ZXJDYW5jZWwgcG9pbnRlckRvd24gcG9pbnRlck1vdmUgcG9pbnRlck91dCBwb2ludGVyT3ZlciBwb2ludGVyVXAgcHJvZ3Jlc3MgcmF0ZUNoYW5nZSByZXNldCByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdWJtaXQgc3VzcGVuZCB0aW1lVXBkYXRlIHRvdWNoQ2FuY2VsIHRvdWNoRW5kIHRvdWNoU3RhcnQgdm9sdW1lQ2hhbmdlIHNjcm9sbCB0b2dnbGUgdG91Y2hNb3ZlIHdhaXRpbmcgd2hlZWxcIi5zcGxpdChcIiBcIik7XG5mdW5jdGlvbiBmZihhLGIpe2RmLnNldChhLGIpO2ZhKGIsW2FdKX1mb3IodmFyIGdmPTA7Z2Y8ZWYubGVuZ3RoO2dmKyspe3ZhciBoZj1lZltnZl0samY9aGYudG9Mb3dlckNhc2UoKSxrZj1oZlswXS50b1VwcGVyQ2FzZSgpK2hmLnNsaWNlKDEpO2ZmKGpmLFwib25cIitrZil9ZmYoJGUsXCJvbkFuaW1hdGlvbkVuZFwiKTtmZihhZixcIm9uQW5pbWF0aW9uSXRlcmF0aW9uXCIpO2ZmKGJmLFwib25BbmltYXRpb25TdGFydFwiKTtmZihcImRibGNsaWNrXCIsXCJvbkRvdWJsZUNsaWNrXCIpO2ZmKFwiZm9jdXNpblwiLFwib25Gb2N1c1wiKTtmZihcImZvY3Vzb3V0XCIsXCJvbkJsdXJcIik7ZmYoY2YsXCJvblRyYW5zaXRpb25FbmRcIik7aGEoXCJvbk1vdXNlRW50ZXJcIixbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdKTtoYShcIm9uTW91c2VMZWF2ZVwiLFtcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl0pO2hhKFwib25Qb2ludGVyRW50ZXJcIixbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXSk7XG5oYShcIm9uUG9pbnRlckxlYXZlXCIsW1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl0pO2ZhKFwib25DaGFuZ2VcIixcImNoYW5nZSBjbGljayBmb2N1c2luIGZvY3Vzb3V0IGlucHV0IGtleWRvd24ga2V5dXAgc2VsZWN0aW9uY2hhbmdlXCIuc3BsaXQoXCIgXCIpKTtmYShcIm9uU2VsZWN0XCIsXCJmb2N1c291dCBjb250ZXh0bWVudSBkcmFnZW5kIGZvY3VzaW4ga2V5ZG93biBrZXl1cCBtb3VzZWRvd24gbW91c2V1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIikpO2ZhKFwib25CZWZvcmVJbnB1dFwiLFtcImNvbXBvc2l0aW9uZW5kXCIsXCJrZXlwcmVzc1wiLFwidGV4dElucHV0XCIsXCJwYXN0ZVwiXSk7ZmEoXCJvbkNvbXBvc2l0aW9uRW5kXCIsXCJjb21wb3NpdGlvbmVuZCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7ZmEoXCJvbkNvbXBvc2l0aW9uU3RhcnRcIixcImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO1xuZmEoXCJvbkNvbXBvc2l0aW9uVXBkYXRlXCIsXCJjb21wb3NpdGlvbnVwZGF0ZSBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7dmFyIGxmPVwiYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmdcIi5zcGxpdChcIiBcIiksbWY9bmV3IFNldChcImNhbmNlbCBjbG9zZSBpbnZhbGlkIGxvYWQgc2Nyb2xsIHRvZ2dsZVwiLnNwbGl0KFwiIFwiKS5jb25jYXQobGYpKTtcbmZ1bmN0aW9uIG5mKGEsYixjKXt2YXIgZD1hLnR5cGV8fFwidW5rbm93bi1ldmVudFwiO2EuY3VycmVudFRhcmdldD1jO1ViKGQsYix2b2lkIDAsYSk7YS5jdXJyZW50VGFyZ2V0PW51bGx9XG5mdW5jdGlvbiBzZShhLGIpe2I9MCE9PShiJjQpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLGU9ZC5ldmVudDtkPWQubGlzdGVuZXJzO2E6e3ZhciBmPXZvaWQgMDtpZihiKWZvcih2YXIgZz1kLmxlbmd0aC0xOzA8PWc7Zy0tKXt2YXIgaD1kW2ddLGs9aC5pbnN0YW5jZSxsPWguY3VycmVudFRhcmdldDtoPWgubGlzdGVuZXI7aWYoayE9PWYmJmUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBhO25mKGUsaCxsKTtmPWt9ZWxzZSBmb3IoZz0wO2c8ZC5sZW5ndGg7ZysrKXtoPWRbZ107az1oLmluc3RhbmNlO2w9aC5jdXJyZW50VGFyZ2V0O2g9aC5saXN0ZW5lcjtpZihrIT09ZiYmZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGE7bmYoZSxoLGwpO2Y9a319fWlmKFFiKXRocm93IGE9UmIsUWI9ITEsUmI9bnVsbCxhO31cbmZ1bmN0aW9uIEQoYSxiKXt2YXIgYz1iW29mXTt2b2lkIDA9PT1jJiYoYz1iW29mXT1uZXcgU2V0KTt2YXIgZD1hK1wiX19idWJibGVcIjtjLmhhcyhkKXx8KHBmKGIsYSwyLCExKSxjLmFkZChkKSl9ZnVuY3Rpb24gcWYoYSxiLGMpe3ZhciBkPTA7YiYmKGR8PTQpO3BmKGMsYSxkLGIpfXZhciByZj1cIl9yZWFjdExpc3RlbmluZ1wiK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO2Z1bmN0aW9uIHNmKGEpe2lmKCFhW3JmXSl7YVtyZl09ITA7ZGEuZm9yRWFjaChmdW5jdGlvbihiKXtcInNlbGVjdGlvbmNoYW5nZVwiIT09YiYmKG1mLmhhcyhiKXx8cWYoYiwhMSxhKSxxZihiLCEwLGEpKX0pO3ZhciBiPTk9PT1hLm5vZGVUeXBlP2E6YS5vd25lckRvY3VtZW50O251bGw9PT1ifHxiW3JmXXx8KGJbcmZdPSEwLHFmKFwic2VsZWN0aW9uY2hhbmdlXCIsITEsYikpfX1cbmZ1bmN0aW9uIHBmKGEsYixjLGQpe3N3aXRjaChqZChiKSl7Y2FzZSAxOnZhciBlPWVkO2JyZWFrO2Nhc2UgNDplPWdkO2JyZWFrO2RlZmF1bHQ6ZT1mZH1jPWUuYmluZChudWxsLGIsYyxhKTtlPXZvaWQgMDshTGJ8fFwidG91Y2hzdGFydFwiIT09YiYmXCJ0b3VjaG1vdmVcIiE9PWImJlwid2hlZWxcIiE9PWJ8fChlPSEwKTtkP3ZvaWQgMCE9PWU/YS5hZGRFdmVudExpc3RlbmVyKGIsYyx7Y2FwdHVyZTohMCxwYXNzaXZlOmV9KTphLmFkZEV2ZW50TGlzdGVuZXIoYixjLCEwKTp2b2lkIDAhPT1lP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMse3Bhc3NpdmU6ZX0pOmEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITEpfVxuZnVuY3Rpb24gaGQoYSxiLGMsZCxlKXt2YXIgZj1kO2lmKDA9PT0oYiYxKSYmMD09PShiJjIpJiZudWxsIT09ZClhOmZvcig7Oyl7aWYobnVsbD09PWQpcmV0dXJuO3ZhciBnPWQudGFnO2lmKDM9PT1nfHw0PT09Zyl7dmFyIGg9ZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztpZihoPT09ZXx8OD09PWgubm9kZVR5cGUmJmgucGFyZW50Tm9kZT09PWUpYnJlYWs7aWYoND09PWcpZm9yKGc9ZC5yZXR1cm47bnVsbCE9PWc7KXt2YXIgaz1nLnRhZztpZigzPT09a3x8ND09PWspaWYoaz1nLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGs9PT1lfHw4PT09ay5ub2RlVHlwZSYmay5wYXJlbnROb2RlPT09ZSlyZXR1cm47Zz1nLnJldHVybn1mb3IoO251bGwhPT1oOyl7Zz1XYyhoKTtpZihudWxsPT09ZylyZXR1cm47az1nLnRhZztpZig1PT09a3x8Nj09PWspe2Q9Zj1nO2NvbnRpbnVlIGF9aD1oLnBhcmVudE5vZGV9fWQ9ZC5yZXR1cm59SmIoZnVuY3Rpb24oKXt2YXIgZD1mLGU9eGIoYyksZz1bXTtcbmE6e3ZhciBoPWRmLmdldChhKTtpZih2b2lkIDAhPT1oKXt2YXIgaz10ZCxuPWE7c3dpdGNoKGEpe2Nhc2UgXCJrZXlwcmVzc1wiOmlmKDA9PT1vZChjKSlicmVhayBhO2Nhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXVwXCI6az1SZDticmVhaztjYXNlIFwiZm9jdXNpblwiOm49XCJmb2N1c1wiO2s9RmQ7YnJlYWs7Y2FzZSBcImZvY3Vzb3V0XCI6bj1cImJsdXJcIjtrPUZkO2JyZWFrO2Nhc2UgXCJiZWZvcmVibHVyXCI6Y2FzZSBcImFmdGVyYmx1clwiOms9RmQ7YnJlYWs7Y2FzZSBcImNsaWNrXCI6aWYoMj09PWMuYnV0dG9uKWJyZWFrIGE7Y2FzZSBcImF1eGNsaWNrXCI6Y2FzZSBcImRibGNsaWNrXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJtb3VzZW1vdmVcIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJtb3VzZW91dFwiOmNhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwiY29udGV4dG1lbnVcIjprPUJkO2JyZWFrO2Nhc2UgXCJkcmFnXCI6Y2FzZSBcImRyYWdlbmRcIjpjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdleGl0XCI6Y2FzZSBcImRyYWdsZWF2ZVwiOmNhc2UgXCJkcmFnb3ZlclwiOmNhc2UgXCJkcmFnc3RhcnRcIjpjYXNlIFwiZHJvcFwiOms9XG5EZDticmVhaztjYXNlIFwidG91Y2hjYW5jZWxcIjpjYXNlIFwidG91Y2hlbmRcIjpjYXNlIFwidG91Y2htb3ZlXCI6Y2FzZSBcInRvdWNoc3RhcnRcIjprPVZkO2JyZWFrO2Nhc2UgJGU6Y2FzZSBhZjpjYXNlIGJmOms9SGQ7YnJlYWs7Y2FzZSBjZjprPVhkO2JyZWFrO2Nhc2UgXCJzY3JvbGxcIjprPXZkO2JyZWFrO2Nhc2UgXCJ3aGVlbFwiOms9WmQ7YnJlYWs7Y2FzZSBcImNvcHlcIjpjYXNlIFwiY3V0XCI6Y2FzZSBcInBhc3RlXCI6az1KZDticmVhaztjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcInBvaW50ZXJjYW5jZWxcIjpjYXNlIFwicG9pbnRlcmRvd25cIjpjYXNlIFwicG9pbnRlcm1vdmVcIjpjYXNlIFwicG9pbnRlcm91dFwiOmNhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJwb2ludGVydXBcIjprPVRkfXZhciB0PTAhPT0oYiY0KSxKPSF0JiZcInNjcm9sbFwiPT09YSx4PXQ/bnVsbCE9PWg/aCtcIkNhcHR1cmVcIjpudWxsOmg7dD1bXTtmb3IodmFyIHc9ZCx1O251bGwhPT1cbnc7KXt1PXc7dmFyIEY9dS5zdGF0ZU5vZGU7NT09PXUudGFnJiZudWxsIT09RiYmKHU9RixudWxsIT09eCYmKEY9S2Iodyx4KSxudWxsIT1GJiZ0LnB1c2godGYodyxGLHUpKSkpO2lmKEopYnJlYWs7dz13LnJldHVybn0wPHQubGVuZ3RoJiYoaD1uZXcgayhoLG4sbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6aCxsaXN0ZW5lcnM6dH0pKX19aWYoMD09PShiJjcpKXthOntoPVwibW91c2VvdmVyXCI9PT1hfHxcInBvaW50ZXJvdmVyXCI9PT1hO2s9XCJtb3VzZW91dFwiPT09YXx8XCJwb2ludGVyb3V0XCI9PT1hO2lmKGgmJmMhPT13YiYmKG49Yy5yZWxhdGVkVGFyZ2V0fHxjLmZyb21FbGVtZW50KSYmKFdjKG4pfHxuW3VmXSkpYnJlYWsgYTtpZihrfHxoKXtoPWUud2luZG93PT09ZT9lOihoPWUub3duZXJEb2N1bWVudCk/aC5kZWZhdWx0Vmlld3x8aC5wYXJlbnRXaW5kb3c6d2luZG93O2lmKGspe2lmKG49Yy5yZWxhdGVkVGFyZ2V0fHxjLnRvRWxlbWVudCxrPWQsbj1uP1djKG4pOm51bGwsbnVsbCE9PVxubiYmKEo9VmIobiksbiE9PUp8fDUhPT1uLnRhZyYmNiE9PW4udGFnKSluPW51bGx9ZWxzZSBrPW51bGwsbj1kO2lmKGshPT1uKXt0PUJkO0Y9XCJvbk1vdXNlTGVhdmVcIjt4PVwib25Nb3VzZUVudGVyXCI7dz1cIm1vdXNlXCI7aWYoXCJwb2ludGVyb3V0XCI9PT1hfHxcInBvaW50ZXJvdmVyXCI9PT1hKXQ9VGQsRj1cIm9uUG9pbnRlckxlYXZlXCIseD1cIm9uUG9pbnRlckVudGVyXCIsdz1cInBvaW50ZXJcIjtKPW51bGw9PWs/aDp1ZShrKTt1PW51bGw9PW4/aDp1ZShuKTtoPW5ldyB0KEYsdytcImxlYXZlXCIsayxjLGUpO2gudGFyZ2V0PUo7aC5yZWxhdGVkVGFyZ2V0PXU7Rj1udWxsO1djKGUpPT09ZCYmKHQ9bmV3IHQoeCx3K1wiZW50ZXJcIixuLGMsZSksdC50YXJnZXQ9dSx0LnJlbGF0ZWRUYXJnZXQ9SixGPXQpO0o9RjtpZihrJiZuKWI6e3Q9azt4PW47dz0wO2Zvcih1PXQ7dTt1PXZmKHUpKXcrKzt1PTA7Zm9yKEY9eDtGO0Y9dmYoRikpdSsrO2Zvcig7MDx3LXU7KXQ9dmYodCksdy0tO2Zvcig7MDx1LXc7KXg9XG52Zih4KSx1LS07Zm9yKDt3LS07KXtpZih0PT09eHx8bnVsbCE9PXgmJnQ9PT14LmFsdGVybmF0ZSlicmVhayBiO3Q9dmYodCk7eD12Zih4KX10PW51bGx9ZWxzZSB0PW51bGw7bnVsbCE9PWsmJndmKGcsaCxrLHQsITEpO251bGwhPT1uJiZudWxsIT09SiYmd2YoZyxKLG4sdCwhMCl9fX1hOntoPWQ/dWUoZCk6d2luZG93O2s9aC5ub2RlTmFtZSYmaC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKFwic2VsZWN0XCI9PT1rfHxcImlucHV0XCI9PT1rJiZcImZpbGVcIj09PWgudHlwZSl2YXIgbmE9dmU7ZWxzZSBpZihtZShoKSlpZih3ZSluYT1GZTtlbHNle25hPURlO3ZhciB4YT1DZX1lbHNlKGs9aC5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWsudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PWgudHlwZXx8XCJyYWRpb1wiPT09aC50eXBlKSYmKG5hPUVlKTtpZihuYSYmKG5hPW5hKGEsZCkpKXtuZShnLG5hLGMsZSk7YnJlYWsgYX14YSYmeGEoYSxoLGQpO1wiZm9jdXNvdXRcIj09PWEmJih4YT1oLl93cmFwcGVyU3RhdGUpJiZcbnhhLmNvbnRyb2xsZWQmJlwibnVtYmVyXCI9PT1oLnR5cGUmJmNiKGgsXCJudW1iZXJcIixoLnZhbHVlKX14YT1kP3VlKGQpOndpbmRvdztzd2l0Y2goYSl7Y2FzZSBcImZvY3VzaW5cIjppZihtZSh4YSl8fFwidHJ1ZVwiPT09eGEuY29udGVudEVkaXRhYmxlKVFlPXhhLFJlPWQsU2U9bnVsbDticmVhaztjYXNlIFwiZm9jdXNvdXRcIjpTZT1SZT1RZT1udWxsO2JyZWFrO2Nhc2UgXCJtb3VzZWRvd25cIjpUZT0hMDticmVhaztjYXNlIFwiY29udGV4dG1lbnVcIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJkcmFnZW5kXCI6VGU9ITE7VWUoZyxjLGUpO2JyZWFrO2Nhc2UgXCJzZWxlY3Rpb25jaGFuZ2VcIjppZihQZSlicmVhaztjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXl1cFwiOlVlKGcsYyxlKX12YXIgJGE7aWYoYWUpYjp7c3dpdGNoKGEpe2Nhc2UgXCJjb21wb3NpdGlvbnN0YXJ0XCI6dmFyIGJhPVwib25Db21wb3NpdGlvblN0YXJ0XCI7YnJlYWsgYjtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpiYT1cIm9uQ29tcG9zaXRpb25FbmRcIjtcbmJyZWFrIGI7Y2FzZSBcImNvbXBvc2l0aW9udXBkYXRlXCI6YmE9XCJvbkNvbXBvc2l0aW9uVXBkYXRlXCI7YnJlYWsgYn1iYT12b2lkIDB9ZWxzZSBpZT9nZShhLGMpJiYoYmE9XCJvbkNvbXBvc2l0aW9uRW5kXCIpOlwia2V5ZG93blwiPT09YSYmMjI5PT09Yy5rZXlDb2RlJiYoYmE9XCJvbkNvbXBvc2l0aW9uU3RhcnRcIik7YmEmJihkZSYmXCJrb1wiIT09Yy5sb2NhbGUmJihpZXx8XCJvbkNvbXBvc2l0aW9uU3RhcnRcIiE9PWJhP1wib25Db21wb3NpdGlvbkVuZFwiPT09YmEmJmllJiYoJGE9bmQoKSk6KGtkPWUsbGQ9XCJ2YWx1ZVwiaW4ga2Q/a2QudmFsdWU6a2QudGV4dENvbnRlbnQsaWU9ITApKSx4YT1vZShkLGJhKSwwPHhhLmxlbmd0aCYmKGJhPW5ldyBMZChiYSxhLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmJhLGxpc3RlbmVyczp4YX0pLCRhP2JhLmRhdGE9JGE6KCRhPWhlKGMpLG51bGwhPT0kYSYmKGJhLmRhdGE9JGEpKSkpO2lmKCRhPWNlP2plKGEsYyk6a2UoYSxjKSlkPW9lKGQsXCJvbkJlZm9yZUlucHV0XCIpLFxuMDxkLmxlbmd0aCYmKGU9bmV3IExkKFwib25CZWZvcmVJbnB1dFwiLFwiYmVmb3JlaW5wdXRcIixudWxsLGMsZSksZy5wdXNoKHtldmVudDplLGxpc3RlbmVyczpkfSksZS5kYXRhPSRhKX1zZShnLGIpfSl9ZnVuY3Rpb24gdGYoYSxiLGMpe3JldHVybntpbnN0YW5jZTphLGxpc3RlbmVyOmIsY3VycmVudFRhcmdldDpjfX1mdW5jdGlvbiBvZShhLGIpe2Zvcih2YXIgYz1iK1wiQ2FwdHVyZVwiLGQ9W107bnVsbCE9PWE7KXt2YXIgZT1hLGY9ZS5zdGF0ZU5vZGU7NT09PWUudGFnJiZudWxsIT09ZiYmKGU9ZixmPUtiKGEsYyksbnVsbCE9ZiYmZC51bnNoaWZ0KHRmKGEsZixlKSksZj1LYihhLGIpLG51bGwhPWYmJmQucHVzaCh0ZihhLGYsZSkpKTthPWEucmV0dXJufXJldHVybiBkfWZ1bmN0aW9uIHZmKGEpe2lmKG51bGw9PT1hKXJldHVybiBudWxsO2RvIGE9YS5yZXR1cm47d2hpbGUoYSYmNSE9PWEudGFnKTtyZXR1cm4gYT9hOm51bGx9XG5mdW5jdGlvbiB3ZihhLGIsYyxkLGUpe2Zvcih2YXIgZj1iLl9yZWFjdE5hbWUsZz1bXTtudWxsIT09YyYmYyE9PWQ7KXt2YXIgaD1jLGs9aC5hbHRlcm5hdGUsbD1oLnN0YXRlTm9kZTtpZihudWxsIT09ayYmaz09PWQpYnJlYWs7NT09PWgudGFnJiZudWxsIT09bCYmKGg9bCxlPyhrPUtiKGMsZiksbnVsbCE9ayYmZy51bnNoaWZ0KHRmKGMsayxoKSkpOmV8fChrPUtiKGMsZiksbnVsbCE9ayYmZy5wdXNoKHRmKGMsayxoKSkpKTtjPWMucmV0dXJufTAhPT1nLmxlbmd0aCYmYS5wdXNoKHtldmVudDpiLGxpc3RlbmVyczpnfSl9dmFyIHhmPS9cXHJcXG4/L2cseWY9L1xcdTAwMDB8XFx1RkZGRC9nO2Z1bmN0aW9uIHpmKGEpe3JldHVybihcInN0cmluZ1wiPT09dHlwZW9mIGE/YTpcIlwiK2EpLnJlcGxhY2UoeGYsXCJcXG5cIikucmVwbGFjZSh5ZixcIlwiKX1mdW5jdGlvbiBBZihhLGIsYyl7Yj16ZihiKTtpZih6ZihhKSE9PWImJmMpdGhyb3cgRXJyb3IocCg0MjUpKTt9ZnVuY3Rpb24gQmYoKXt9XG52YXIgQ2Y9bnVsbCxEZj1udWxsO2Z1bmN0aW9uIEVmKGEsYil7cmV0dXJuXCJ0ZXh0YXJlYVwiPT09YXx8XCJub3NjcmlwdFwiPT09YXx8XCJzdHJpbmdcIj09PXR5cGVvZiBiLmNoaWxkcmVufHxcIm51bWJlclwiPT09dHlwZW9mIGIuY2hpbGRyZW58fFwib2JqZWN0XCI9PT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9PWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sfVxudmFyIEZmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6dm9pZCAwLEdmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMCxIZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgUHJvbWlzZT9Qcm9taXNlOnZvaWQgMCxKZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgcXVldWVNaWNyb3Rhc2s/cXVldWVNaWNyb3Rhc2s6XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBIZj9mdW5jdGlvbihhKXtyZXR1cm4gSGYucmVzb2x2ZShudWxsKS50aGVuKGEpLmNhdGNoKElmKX06RmY7ZnVuY3Rpb24gSWYoYSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGE7fSl9XG5mdW5jdGlvbiBLZihhLGIpe3ZhciBjPWIsZD0wO2Rve3ZhciBlPWMubmV4dFNpYmxpbmc7YS5yZW1vdmVDaGlsZChjKTtpZihlJiY4PT09ZS5ub2RlVHlwZSlpZihjPWUuZGF0YSxcIi8kXCI9PT1jKXtpZigwPT09ZCl7YS5yZW1vdmVDaGlsZChlKTtiZChiKTtyZXR1cm59ZC0tfWVsc2VcIiRcIiE9PWMmJlwiJD9cIiE9PWMmJlwiJCFcIiE9PWN8fGQrKztjPWV9d2hpbGUoYyk7YmQoYil9ZnVuY3Rpb24gTGYoYSl7Zm9yKDtudWxsIT1hO2E9YS5uZXh0U2libGluZyl7dmFyIGI9YS5ub2RlVHlwZTtpZigxPT09Ynx8Mz09PWIpYnJlYWs7aWYoOD09PWIpe2I9YS5kYXRhO2lmKFwiJFwiPT09Ynx8XCIkIVwiPT09Ynx8XCIkP1wiPT09YilicmVhaztpZihcIi8kXCI9PT1iKXJldHVybiBudWxsfX1yZXR1cm4gYX1cbmZ1bmN0aW9uIE1mKGEpe2E9YS5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciBiPTA7YTspe2lmKDg9PT1hLm5vZGVUeXBlKXt2YXIgYz1hLmRhdGE7aWYoXCIkXCI9PT1jfHxcIiQhXCI9PT1jfHxcIiQ/XCI9PT1jKXtpZigwPT09YilyZXR1cm4gYTtiLS19ZWxzZVwiLyRcIj09PWMmJmIrK31hPWEucHJldmlvdXNTaWJsaW5nfXJldHVybiBudWxsfXZhciBOZj1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxPZj1cIl9fcmVhY3RGaWJlciRcIitOZixQZj1cIl9fcmVhY3RQcm9wcyRcIitOZix1Zj1cIl9fcmVhY3RDb250YWluZXIkXCIrTmYsb2Y9XCJfX3JlYWN0RXZlbnRzJFwiK05mLFFmPVwiX19yZWFjdExpc3RlbmVycyRcIitOZixSZj1cIl9fcmVhY3RIYW5kbGVzJFwiK05mO1xuZnVuY3Rpb24gV2MoYSl7dmFyIGI9YVtPZl07aWYoYilyZXR1cm4gYjtmb3IodmFyIGM9YS5wYXJlbnROb2RlO2M7KXtpZihiPWNbdWZdfHxjW09mXSl7Yz1iLmFsdGVybmF0ZTtpZihudWxsIT09Yi5jaGlsZHx8bnVsbCE9PWMmJm51bGwhPT1jLmNoaWxkKWZvcihhPU1mKGEpO251bGwhPT1hOyl7aWYoYz1hW09mXSlyZXR1cm4gYzthPU1mKGEpfXJldHVybiBifWE9YztjPWEucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBDYihhKXthPWFbT2ZdfHxhW3VmXTtyZXR1cm4hYXx8NSE9PWEudGFnJiY2IT09YS50YWcmJjEzIT09YS50YWcmJjMhPT1hLnRhZz9udWxsOmF9ZnVuY3Rpb24gdWUoYSl7aWYoNT09PWEudGFnfHw2PT09YS50YWcpcmV0dXJuIGEuc3RhdGVOb2RlO3Rocm93IEVycm9yKHAoMzMpKTt9ZnVuY3Rpb24gRGIoYSl7cmV0dXJuIGFbUGZdfHxudWxsfXZhciBTZj1bXSxUZj0tMTtmdW5jdGlvbiBVZihhKXtyZXR1cm57Y3VycmVudDphfX1cbmZ1bmN0aW9uIEUoYSl7MD5UZnx8KGEuY3VycmVudD1TZltUZl0sU2ZbVGZdPW51bGwsVGYtLSl9ZnVuY3Rpb24gRyhhLGIpe1RmKys7U2ZbVGZdPWEuY3VycmVudDthLmN1cnJlbnQ9Yn12YXIgVmY9e30sSD1VZihWZiksV2Y9VWYoITEpLFhmPVZmO2Z1bmN0aW9uIFlmKGEsYil7dmFyIGM9YS50eXBlLmNvbnRleHRUeXBlcztpZighYylyZXR1cm4gVmY7dmFyIGQ9YS5zdGF0ZU5vZGU7aWYoZCYmZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PT09YilyZXR1cm4gZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dDt2YXIgZT17fSxmO2ZvcihmIGluIGMpZVtmXT1iW2ZdO2QmJihhPWEuc3RhdGVOb2RlLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1iLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9ZSk7cmV0dXJuIGV9XG5mdW5jdGlvbiBaZihhKXthPWEuY2hpbGRDb250ZXh0VHlwZXM7cmV0dXJuIG51bGwhPT1hJiZ2b2lkIDAhPT1hfWZ1bmN0aW9uICRmKCl7RShXZik7RShIKX1mdW5jdGlvbiBhZyhhLGIsYyl7aWYoSC5jdXJyZW50IT09VmYpdGhyb3cgRXJyb3IocCgxNjgpKTtHKEgsYik7RyhXZixjKX1mdW5jdGlvbiBiZyhhLGIsYyl7dmFyIGQ9YS5zdGF0ZU5vZGU7Yj1iLmNoaWxkQ29udGV4dFR5cGVzO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBkLmdldENoaWxkQ29udGV4dClyZXR1cm4gYztkPWQuZ2V0Q2hpbGRDb250ZXh0KCk7Zm9yKHZhciBlIGluIGQpaWYoIShlIGluIGIpKXRocm93IEVycm9yKHAoMTA4LFJhKGEpfHxcIlVua25vd25cIixlKSk7cmV0dXJuIEEoe30sYyxkKX1cbmZ1bmN0aW9uIGNnKGEpe2E9KGE9YS5zdGF0ZU5vZGUpJiZhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0fHxWZjtYZj1ILmN1cnJlbnQ7RyhILGEpO0coV2YsV2YuY3VycmVudCk7cmV0dXJuITB9ZnVuY3Rpb24gZGcoYSxiLGMpe3ZhciBkPWEuc3RhdGVOb2RlO2lmKCFkKXRocm93IEVycm9yKHAoMTY5KSk7Yz8oYT1iZyhhLGIsWGYpLGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ9YSxFKFdmKSxFKEgpLEcoSCxhKSk6RShXZik7RyhXZixjKX12YXIgZWc9bnVsbCxmZz0hMSxnZz0hMTtmdW5jdGlvbiBoZyhhKXtudWxsPT09ZWc/ZWc9W2FdOmVnLnB1c2goYSl9ZnVuY3Rpb24gaWcoYSl7Zmc9ITA7aGcoYSl9XG5mdW5jdGlvbiBqZygpe2lmKCFnZyYmbnVsbCE9PWVnKXtnZz0hMDt2YXIgYT0wLGI9Qzt0cnl7dmFyIGM9ZWc7Zm9yKEM9MTthPGMubGVuZ3RoO2ErKyl7dmFyIGQ9Y1thXTtkbyBkPWQoITApO3doaWxlKG51bGwhPT1kKX1lZz1udWxsO2ZnPSExfWNhdGNoKGUpe3Rocm93IG51bGwhPT1lZyYmKGVnPWVnLnNsaWNlKGErMSkpLGFjKGZjLGpnKSxlO31maW5hbGx5e0M9YixnZz0hMX19cmV0dXJuIG51bGx9dmFyIGtnPVtdLGxnPTAsbWc9bnVsbCxuZz0wLG9nPVtdLHBnPTAscWc9bnVsbCxyZz0xLHNnPVwiXCI7ZnVuY3Rpb24gdGcoYSxiKXtrZ1tsZysrXT1uZztrZ1tsZysrXT1tZzttZz1hO25nPWJ9XG5mdW5jdGlvbiB1ZyhhLGIsYyl7b2dbcGcrK109cmc7b2dbcGcrK109c2c7b2dbcGcrK109cWc7cWc9YTt2YXIgZD1yZzthPXNnO3ZhciBlPTMyLW9jKGQpLTE7ZCY9figxPDxlKTtjKz0xO3ZhciBmPTMyLW9jKGIpK2U7aWYoMzA8Zil7dmFyIGc9ZS1lJTU7Zj0oZCYoMTw8ZyktMSkudG9TdHJpbmcoMzIpO2Q+Pj1nO2UtPWc7cmc9MTw8MzItb2MoYikrZXxjPDxlfGQ7c2c9ZithfWVsc2Ugcmc9MTw8ZnxjPDxlfGQsc2c9YX1mdW5jdGlvbiB2ZyhhKXtudWxsIT09YS5yZXR1cm4mJih0ZyhhLDEpLHVnKGEsMSwwKSl9ZnVuY3Rpb24gd2coYSl7Zm9yKDthPT09bWc7KW1nPWtnWy0tbGddLGtnW2xnXT1udWxsLG5nPWtnWy0tbGddLGtnW2xnXT1udWxsO2Zvcig7YT09PXFnOylxZz1vZ1stLXBnXSxvZ1twZ109bnVsbCxzZz1vZ1stLXBnXSxvZ1twZ109bnVsbCxyZz1vZ1stLXBnXSxvZ1twZ109bnVsbH12YXIgeGc9bnVsbCx5Zz1udWxsLEk9ITEsemc9bnVsbDtcbmZ1bmN0aW9uIEFnKGEsYil7dmFyIGM9QmcoNSxudWxsLG51bGwsMCk7Yy5lbGVtZW50VHlwZT1cIkRFTEVURURcIjtjLnN0YXRlTm9kZT1iO2MucmV0dXJuPWE7Yj1hLmRlbGV0aW9ucztudWxsPT09Yj8oYS5kZWxldGlvbnM9W2NdLGEuZmxhZ3N8PTE2KTpiLnB1c2goYyl9XG5mdW5jdGlvbiBDZyhhLGIpe3N3aXRjaChhLnRhZyl7Y2FzZSA1OnZhciBjPWEudHlwZTtiPTEhPT1iLm5vZGVUeXBlfHxjLnRvTG93ZXJDYXNlKCkhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/bnVsbDpiO3JldHVybiBudWxsIT09Yj8oYS5zdGF0ZU5vZGU9Yix4Zz1hLHlnPUxmKGIuZmlyc3RDaGlsZCksITApOiExO2Nhc2UgNjpyZXR1cm4gYj1cIlwiPT09YS5wZW5kaW5nUHJvcHN8fDMhPT1iLm5vZGVUeXBlP251bGw6YixudWxsIT09Yj8oYS5zdGF0ZU5vZGU9Yix4Zz1hLHlnPW51bGwsITApOiExO2Nhc2UgMTM6cmV0dXJuIGI9OCE9PWIubm9kZVR5cGU/bnVsbDpiLG51bGwhPT1iPyhjPW51bGwhPT1xZz97aWQ6cmcsb3ZlcmZsb3c6c2d9Om51bGwsYS5tZW1vaXplZFN0YXRlPXtkZWh5ZHJhdGVkOmIsdHJlZUNvbnRleHQ6YyxyZXRyeUxhbmU6MTA3Mzc0MTgyNH0sYz1CZygxOCxudWxsLG51bGwsMCksYy5zdGF0ZU5vZGU9YixjLnJldHVybj1hLGEuY2hpbGQ9Yyx4Zz1hLHlnPVxubnVsbCwhMCk6ITE7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gRGcoYSl7cmV0dXJuIDAhPT0oYS5tb2RlJjEpJiYwPT09KGEuZmxhZ3MmMTI4KX1mdW5jdGlvbiBFZyhhKXtpZihJKXt2YXIgYj15ZztpZihiKXt2YXIgYz1iO2lmKCFDZyhhLGIpKXtpZihEZyhhKSl0aHJvdyBFcnJvcihwKDQxOCkpO2I9TGYoYy5uZXh0U2libGluZyk7dmFyIGQ9eGc7YiYmQ2coYSxiKT9BZyhkLGMpOihhLmZsYWdzPWEuZmxhZ3MmLTQwOTd8MixJPSExLHhnPWEpfX1lbHNle2lmKERnKGEpKXRocm93IEVycm9yKHAoNDE4KSk7YS5mbGFncz1hLmZsYWdzJi00MDk3fDI7ST0hMTt4Zz1hfX19ZnVuY3Rpb24gRmcoYSl7Zm9yKGE9YS5yZXR1cm47bnVsbCE9PWEmJjUhPT1hLnRhZyYmMyE9PWEudGFnJiYxMyE9PWEudGFnOylhPWEucmV0dXJuO3hnPWF9XG5mdW5jdGlvbiBHZyhhKXtpZihhIT09eGcpcmV0dXJuITE7aWYoIUkpcmV0dXJuIEZnKGEpLEk9ITAsITE7dmFyIGI7KGI9MyE9PWEudGFnKSYmIShiPTUhPT1hLnRhZykmJihiPWEudHlwZSxiPVwiaGVhZFwiIT09YiYmXCJib2R5XCIhPT1iJiYhRWYoYS50eXBlLGEubWVtb2l6ZWRQcm9wcykpO2lmKGImJihiPXlnKSl7aWYoRGcoYSkpdGhyb3cgSGcoKSxFcnJvcihwKDQxOCkpO2Zvcig7YjspQWcoYSxiKSxiPUxmKGIubmV4dFNpYmxpbmcpfUZnKGEpO2lmKDEzPT09YS50YWcpe2E9YS5tZW1vaXplZFN0YXRlO2E9bnVsbCE9PWE/YS5kZWh5ZHJhdGVkOm51bGw7aWYoIWEpdGhyb3cgRXJyb3IocCgzMTcpKTthOnthPWEubmV4dFNpYmxpbmc7Zm9yKGI9MDthOyl7aWYoOD09PWEubm9kZVR5cGUpe3ZhciBjPWEuZGF0YTtpZihcIi8kXCI9PT1jKXtpZigwPT09Yil7eWc9TGYoYS5uZXh0U2libGluZyk7YnJlYWsgYX1iLS19ZWxzZVwiJFwiIT09YyYmXCIkIVwiIT09YyYmXCIkP1wiIT09Y3x8YisrfWE9YS5uZXh0U2libGluZ315Zz1cbm51bGx9fWVsc2UgeWc9eGc/TGYoYS5zdGF0ZU5vZGUubmV4dFNpYmxpbmcpOm51bGw7cmV0dXJuITB9ZnVuY3Rpb24gSGcoKXtmb3IodmFyIGE9eWc7YTspYT1MZihhLm5leHRTaWJsaW5nKX1mdW5jdGlvbiBJZygpe3lnPXhnPW51bGw7ST0hMX1mdW5jdGlvbiBKZyhhKXtudWxsPT09emc/emc9W2FdOnpnLnB1c2goYSl9dmFyIEtnPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnO2Z1bmN0aW9uIExnKGEsYil7aWYoYSYmYS5kZWZhdWx0UHJvcHMpe2I9QSh7fSxiKTthPWEuZGVmYXVsdFByb3BzO2Zvcih2YXIgYyBpbiBhKXZvaWQgMD09PWJbY10mJihiW2NdPWFbY10pO3JldHVybiBifXJldHVybiBifXZhciBNZz1VZihudWxsKSxOZz1udWxsLE9nPW51bGwsUGc9bnVsbDtmdW5jdGlvbiBRZygpe1BnPU9nPU5nPW51bGx9ZnVuY3Rpb24gUmcoYSl7dmFyIGI9TWcuY3VycmVudDtFKE1nKTthLl9jdXJyZW50VmFsdWU9Yn1cbmZ1bmN0aW9uIFNnKGEsYixjKXtmb3IoO251bGwhPT1hOyl7dmFyIGQ9YS5hbHRlcm5hdGU7KGEuY2hpbGRMYW5lcyZiKSE9PWI/KGEuY2hpbGRMYW5lc3w9YixudWxsIT09ZCYmKGQuY2hpbGRMYW5lc3w9YikpOm51bGwhPT1kJiYoZC5jaGlsZExhbmVzJmIpIT09YiYmKGQuY2hpbGRMYW5lc3w9Yik7aWYoYT09PWMpYnJlYWs7YT1hLnJldHVybn19ZnVuY3Rpb24gVGcoYSxiKXtOZz1hO1BnPU9nPW51bGw7YT1hLmRlcGVuZGVuY2llcztudWxsIT09YSYmbnVsbCE9PWEuZmlyc3RDb250ZXh0JiYoMCE9PShhLmxhbmVzJmIpJiYoVWc9ITApLGEuZmlyc3RDb250ZXh0PW51bGwpfVxuZnVuY3Rpb24gVmcoYSl7dmFyIGI9YS5fY3VycmVudFZhbHVlO2lmKFBnIT09YSlpZihhPXtjb250ZXh0OmEsbWVtb2l6ZWRWYWx1ZTpiLG5leHQ6bnVsbH0sbnVsbD09PU9nKXtpZihudWxsPT09TmcpdGhyb3cgRXJyb3IocCgzMDgpKTtPZz1hO05nLmRlcGVuZGVuY2llcz17bGFuZXM6MCxmaXJzdENvbnRleHQ6YX19ZWxzZSBPZz1PZy5uZXh0PWE7cmV0dXJuIGJ9dmFyIFdnPW51bGw7ZnVuY3Rpb24gWGcoYSl7bnVsbD09PVdnP1dnPVthXTpXZy5wdXNoKGEpfWZ1bmN0aW9uIFlnKGEsYixjLGQpe3ZhciBlPWIuaW50ZXJsZWF2ZWQ7bnVsbD09PWU/KGMubmV4dD1jLFhnKGIpKTooYy5uZXh0PWUubmV4dCxlLm5leHQ9Yyk7Yi5pbnRlcmxlYXZlZD1jO3JldHVybiBaZyhhLGQpfVxuZnVuY3Rpb24gWmcoYSxiKXthLmxhbmVzfD1iO3ZhciBjPWEuYWx0ZXJuYXRlO251bGwhPT1jJiYoYy5sYW5lc3w9Yik7Yz1hO2ZvcihhPWEucmV0dXJuO251bGwhPT1hOylhLmNoaWxkTGFuZXN8PWIsYz1hLmFsdGVybmF0ZSxudWxsIT09YyYmKGMuY2hpbGRMYW5lc3w9YiksYz1hLGE9YS5yZXR1cm47cmV0dXJuIDM9PT1jLnRhZz9jLnN0YXRlTm9kZTpudWxsfXZhciAkZz0hMTtmdW5jdGlvbiBhaChhKXthLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6YS5tZW1vaXplZFN0YXRlLGZpcnN0QmFzZVVwZGF0ZTpudWxsLGxhc3RCYXNlVXBkYXRlOm51bGwsc2hhcmVkOntwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowfSxlZmZlY3RzOm51bGx9fVxuZnVuY3Rpb24gYmgoYSxiKXthPWEudXBkYXRlUXVldWU7Yi51cGRhdGVRdWV1ZT09PWEmJihiLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6YS5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOmEuZmlyc3RCYXNlVXBkYXRlLGxhc3RCYXNlVXBkYXRlOmEubGFzdEJhc2VVcGRhdGUsc2hhcmVkOmEuc2hhcmVkLGVmZmVjdHM6YS5lZmZlY3RzfSl9ZnVuY3Rpb24gY2goYSxiKXtyZXR1cm57ZXZlbnRUaW1lOmEsbGFuZTpiLHRhZzowLHBheWxvYWQ6bnVsbCxjYWxsYmFjazpudWxsLG5leHQ6bnVsbH19XG5mdW5jdGlvbiBkaChhLGIsYyl7dmFyIGQ9YS51cGRhdGVRdWV1ZTtpZihudWxsPT09ZClyZXR1cm4gbnVsbDtkPWQuc2hhcmVkO2lmKDAhPT0oSyYyKSl7dmFyIGU9ZC5wZW5kaW5nO251bGw9PT1lP2IubmV4dD1iOihiLm5leHQ9ZS5uZXh0LGUubmV4dD1iKTtkLnBlbmRpbmc9YjtyZXR1cm4gWmcoYSxjKX1lPWQuaW50ZXJsZWF2ZWQ7bnVsbD09PWU/KGIubmV4dD1iLFhnKGQpKTooYi5uZXh0PWUubmV4dCxlLm5leHQ9Yik7ZC5pbnRlcmxlYXZlZD1iO3JldHVybiBaZyhhLGMpfWZ1bmN0aW9uIGVoKGEsYixjKXtiPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWImJihiPWIuc2hhcmVkLDAhPT0oYyY0MTk0MjQwKSkpe3ZhciBkPWIubGFuZXM7ZCY9YS5wZW5kaW5nTGFuZXM7Y3w9ZDtiLmxhbmVzPWM7Q2MoYSxjKX19XG5mdW5jdGlvbiBmaChhLGIpe3ZhciBjPWEudXBkYXRlUXVldWUsZD1hLmFsdGVybmF0ZTtpZihudWxsIT09ZCYmKGQ9ZC51cGRhdGVRdWV1ZSxjPT09ZCkpe3ZhciBlPW51bGwsZj1udWxsO2M9Yy5maXJzdEJhc2VVcGRhdGU7aWYobnVsbCE9PWMpe2Rve3ZhciBnPXtldmVudFRpbWU6Yy5ldmVudFRpbWUsbGFuZTpjLmxhbmUsdGFnOmMudGFnLHBheWxvYWQ6Yy5wYXlsb2FkLGNhbGxiYWNrOmMuY2FsbGJhY2ssbmV4dDpudWxsfTtudWxsPT09Zj9lPWY9ZzpmPWYubmV4dD1nO2M9Yy5uZXh0fXdoaWxlKG51bGwhPT1jKTtudWxsPT09Zj9lPWY9YjpmPWYubmV4dD1ifWVsc2UgZT1mPWI7Yz17YmFzZVN0YXRlOmQuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTplLGxhc3RCYXNlVXBkYXRlOmYsc2hhcmVkOmQuc2hhcmVkLGVmZmVjdHM6ZC5lZmZlY3RzfTthLnVwZGF0ZVF1ZXVlPWM7cmV0dXJufWE9Yy5sYXN0QmFzZVVwZGF0ZTtudWxsPT09YT9jLmZpcnN0QmFzZVVwZGF0ZT1iOmEubmV4dD1cbmI7Yy5sYXN0QmFzZVVwZGF0ZT1ifVxuZnVuY3Rpb24gZ2goYSxiLGMsZCl7dmFyIGU9YS51cGRhdGVRdWV1ZTskZz0hMTt2YXIgZj1lLmZpcnN0QmFzZVVwZGF0ZSxnPWUubGFzdEJhc2VVcGRhdGUsaD1lLnNoYXJlZC5wZW5kaW5nO2lmKG51bGwhPT1oKXtlLnNoYXJlZC5wZW5kaW5nPW51bGw7dmFyIGs9aCxsPWsubmV4dDtrLm5leHQ9bnVsbDtudWxsPT09Zz9mPWw6Zy5uZXh0PWw7Zz1rO3ZhciBtPWEuYWx0ZXJuYXRlO251bGwhPT1tJiYobT1tLnVwZGF0ZVF1ZXVlLGg9bS5sYXN0QmFzZVVwZGF0ZSxoIT09ZyYmKG51bGw9PT1oP20uZmlyc3RCYXNlVXBkYXRlPWw6aC5uZXh0PWwsbS5sYXN0QmFzZVVwZGF0ZT1rKSl9aWYobnVsbCE9PWYpe3ZhciBxPWUuYmFzZVN0YXRlO2c9MDttPWw9az1udWxsO2g9Zjtkb3t2YXIgcj1oLmxhbmUseT1oLmV2ZW50VGltZTtpZigoZCZyKT09PXIpe251bGwhPT1tJiYobT1tLm5leHQ9e2V2ZW50VGltZTp5LGxhbmU6MCx0YWc6aC50YWcscGF5bG9hZDpoLnBheWxvYWQsY2FsbGJhY2s6aC5jYWxsYmFjayxcbm5leHQ6bnVsbH0pO2E6e3ZhciBuPWEsdD1oO3I9Yjt5PWM7c3dpdGNoKHQudGFnKXtjYXNlIDE6bj10LnBheWxvYWQ7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIG4pe3E9bi5jYWxsKHkscSxyKTticmVhayBhfXE9bjticmVhayBhO2Nhc2UgMzpuLmZsYWdzPW4uZmxhZ3MmLTY1NTM3fDEyODtjYXNlIDA6bj10LnBheWxvYWQ7cj1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygbj9uLmNhbGwoeSxxLHIpOm47aWYobnVsbD09PXJ8fHZvaWQgMD09PXIpYnJlYWsgYTtxPUEoe30scSxyKTticmVhayBhO2Nhc2UgMjokZz0hMH19bnVsbCE9PWguY2FsbGJhY2smJjAhPT1oLmxhbmUmJihhLmZsYWdzfD02NCxyPWUuZWZmZWN0cyxudWxsPT09cj9lLmVmZmVjdHM9W2hdOnIucHVzaChoKSl9ZWxzZSB5PXtldmVudFRpbWU6eSxsYW5lOnIsdGFnOmgudGFnLHBheWxvYWQ6aC5wYXlsb2FkLGNhbGxiYWNrOmguY2FsbGJhY2ssbmV4dDpudWxsfSxudWxsPT09bT8obD1tPXksaz1xKTptPW0ubmV4dD15LGd8PXI7XG5oPWgubmV4dDtpZihudWxsPT09aClpZihoPWUuc2hhcmVkLnBlbmRpbmcsbnVsbD09PWgpYnJlYWs7ZWxzZSByPWgsaD1yLm5leHQsci5uZXh0PW51bGwsZS5sYXN0QmFzZVVwZGF0ZT1yLGUuc2hhcmVkLnBlbmRpbmc9bnVsbH13aGlsZSgxKTtudWxsPT09bSYmKGs9cSk7ZS5iYXNlU3RhdGU9aztlLmZpcnN0QmFzZVVwZGF0ZT1sO2UubGFzdEJhc2VVcGRhdGU9bTtiPWUuc2hhcmVkLmludGVybGVhdmVkO2lmKG51bGwhPT1iKXtlPWI7ZG8gZ3w9ZS5sYW5lLGU9ZS5uZXh0O3doaWxlKGUhPT1iKX1lbHNlIG51bGw9PT1mJiYoZS5zaGFyZWQubGFuZXM9MCk7aGh8PWc7YS5sYW5lcz1nO2EubWVtb2l6ZWRTdGF0ZT1xfX1cbmZ1bmN0aW9uIGloKGEsYixjKXthPWIuZWZmZWN0cztiLmVmZmVjdHM9bnVsbDtpZihudWxsIT09YSlmb3IoYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgZD1hW2JdLGU9ZC5jYWxsYmFjaztpZihudWxsIT09ZSl7ZC5jYWxsYmFjaz1udWxsO2Q9YztpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZSl0aHJvdyBFcnJvcihwKDE5MSxlKSk7ZS5jYWxsKGQpfX19dmFyIGpoPShuZXcgYWEuQ29tcG9uZW50KS5yZWZzO2Z1bmN0aW9uIGtoKGEsYixjLGQpe2I9YS5tZW1vaXplZFN0YXRlO2M9YyhkLGIpO2M9bnVsbD09PWN8fHZvaWQgMD09PWM/YjpBKHt9LGIsYyk7YS5tZW1vaXplZFN0YXRlPWM7MD09PWEubGFuZXMmJihhLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1jKX1cbnZhciBuaD17aXNNb3VudGVkOmZ1bmN0aW9uKGEpe3JldHVybihhPWEuX3JlYWN0SW50ZXJuYWxzKT9WYihhKT09PWE6ITF9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsczt2YXIgZD1MKCksZT1saChhKSxmPWNoKGQsZSk7Zi5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihmLmNhbGxiYWNrPWMpO2I9ZGgoYSxmLGUpO251bGwhPT1iJiYobWgoYixhLGUsZCksZWgoYixhLGUpKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsczt2YXIgZD1MKCksZT1saChhKSxmPWNoKGQsZSk7Zi50YWc9MTtmLnBheWxvYWQ9Yjt2b2lkIDAhPT1jJiZudWxsIT09YyYmKGYuY2FsbGJhY2s9Yyk7Yj1kaChhLGYsZSk7bnVsbCE9PWImJihtaChiLGEsZSxkKSxlaChiLGEsZSkpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oYSxiKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBjPUwoKSxkPVxubGgoYSksZT1jaChjLGQpO2UudGFnPTI7dm9pZCAwIT09YiYmbnVsbCE9PWImJihlLmNhbGxiYWNrPWIpO2I9ZGgoYSxlLGQpO251bGwhPT1iJiYobWgoYixhLGQsYyksZWgoYixhLGQpKX19O2Z1bmN0aW9uIG9oKGEsYixjLGQsZSxmLGcpe2E9YS5zdGF0ZU5vZGU7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGEuc2hvdWxkQ29tcG9uZW50VXBkYXRlP2Euc2hvdWxkQ29tcG9uZW50VXBkYXRlKGQsZixnKTpiLnByb3RvdHlwZSYmYi5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQ/IUllKGMsZCl8fCFJZShlLGYpOiEwfVxuZnVuY3Rpb24gcGgoYSxiLGMpe3ZhciBkPSExLGU9VmY7dmFyIGY9Yi5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mP2Y9VmcoZik6KGU9WmYoYik/WGY6SC5jdXJyZW50LGQ9Yi5jb250ZXh0VHlwZXMsZj0oZD1udWxsIT09ZCYmdm9pZCAwIT09ZCk/WWYoYSxlKTpWZik7Yj1uZXcgYihjLGYpO2EubWVtb2l6ZWRTdGF0ZT1udWxsIT09Yi5zdGF0ZSYmdm9pZCAwIT09Yi5zdGF0ZT9iLnN0YXRlOm51bGw7Yi51cGRhdGVyPW5oO2Euc3RhdGVOb2RlPWI7Yi5fcmVhY3RJbnRlcm5hbHM9YTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9ZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWYpO3JldHVybiBifVxuZnVuY3Rpb24gcWgoYSxiLGMsZCl7YT1iLnN0YXRlO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmIuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGQpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMsZCk7Yi5zdGF0ZSE9PWEmJm5oLmVucXVldWVSZXBsYWNlU3RhdGUoYixiLnN0YXRlLG51bGwpfVxuZnVuY3Rpb24gcmgoYSxiLGMsZCl7dmFyIGU9YS5zdGF0ZU5vZGU7ZS5wcm9wcz1jO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2UucmVmcz1qaDthaChhKTt2YXIgZj1iLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWY/ZS5jb250ZXh0PVZnKGYpOihmPVpmKGIpP1hmOkguY3VycmVudCxlLmNvbnRleHQ9WWYoYSxmKSk7ZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGU7Zj1iLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztcImZ1bmN0aW9uXCI9PT10eXBlb2YgZiYmKGtoKGEsYixmLGMpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHN8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnR8fChiPWUuc3RhdGUsXG5cImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQmJmUuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksYiE9PWUuc3RhdGUmJm5oLmVucXVldWVSZXBsYWNlU3RhdGUoZSxlLnN0YXRlLG51bGwpLGdoKGEsYyxlLGQpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5jb21wb25lbnREaWRNb3VudCYmKGEuZmxhZ3N8PTQxOTQzMDgpfVxuZnVuY3Rpb24gc2goYSxiLGMpe2E9Yy5yZWY7aWYobnVsbCE9PWEmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhJiZcIm9iamVjdFwiIT09dHlwZW9mIGEpe2lmKGMuX293bmVyKXtjPWMuX293bmVyO2lmKGMpe2lmKDEhPT1jLnRhZyl0aHJvdyBFcnJvcihwKDMwOSkpO3ZhciBkPWMuc3RhdGVOb2RlfWlmKCFkKXRocm93IEVycm9yKHAoMTQ3LGEpKTt2YXIgZT1kLGY9XCJcIithO2lmKG51bGwhPT1iJiZudWxsIT09Yi5yZWYmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBiLnJlZiYmYi5yZWYuX3N0cmluZ1JlZj09PWYpcmV0dXJuIGIucmVmO2I9ZnVuY3Rpb24oYSl7dmFyIGI9ZS5yZWZzO2I9PT1qaCYmKGI9ZS5yZWZzPXt9KTtudWxsPT09YT9kZWxldGUgYltmXTpiW2ZdPWF9O2IuX3N0cmluZ1JlZj1mO3JldHVybiBifWlmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihwKDI4NCkpO2lmKCFjLl9vd25lcil0aHJvdyBFcnJvcihwKDI5MCxhKSk7fXJldHVybiBhfVxuZnVuY3Rpb24gdGgoYSxiKXthPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChiKTt0aHJvdyBFcnJvcihwKDMxLFwiW29iamVjdCBPYmplY3RdXCI9PT1hP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYikuam9pbihcIiwgXCIpK1wifVwiOmEpKTt9ZnVuY3Rpb24gdWgoYSl7dmFyIGI9YS5faW5pdDtyZXR1cm4gYihhLl9wYXlsb2FkKX1cbmZ1bmN0aW9uIHZoKGEpe2Z1bmN0aW9uIGIoYixjKXtpZihhKXt2YXIgZD1iLmRlbGV0aW9ucztudWxsPT09ZD8oYi5kZWxldGlvbnM9W2NdLGIuZmxhZ3N8PTE2KTpkLnB1c2goYyl9fWZ1bmN0aW9uIGMoYyxkKXtpZighYSlyZXR1cm4gbnVsbDtmb3IoO251bGwhPT1kOyliKGMsZCksZD1kLnNpYmxpbmc7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZChhLGIpe2ZvcihhPW5ldyBNYXA7bnVsbCE9PWI7KW51bGwhPT1iLmtleT9hLnNldChiLmtleSxiKTphLnNldChiLmluZGV4LGIpLGI9Yi5zaWJsaW5nO3JldHVybiBhfWZ1bmN0aW9uIGUoYSxiKXthPXdoKGEsYik7YS5pbmRleD0wO2Euc2libGluZz1udWxsO3JldHVybiBhfWZ1bmN0aW9uIGYoYixjLGQpe2IuaW5kZXg9ZDtpZighYSlyZXR1cm4gYi5mbGFnc3w9MTA0ODU3NixjO2Q9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWQpcmV0dXJuIGQ9ZC5pbmRleCxkPGM/KGIuZmxhZ3N8PTIsYyk6ZDtiLmZsYWdzfD0yO3JldHVybiBjfWZ1bmN0aW9uIGcoYil7YSYmXG5udWxsPT09Yi5hbHRlcm5hdGUmJihiLmZsYWdzfD0yKTtyZXR1cm4gYn1mdW5jdGlvbiBoKGEsYixjLGQpe2lmKG51bGw9PT1ifHw2IT09Yi50YWcpcmV0dXJuIGI9eGgoYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gayhhLGIsYyxkKXt2YXIgZj1jLnR5cGU7aWYoZj09PXlhKXJldHVybiBtKGEsYixjLnByb3BzLmNoaWxkcmVuLGQsYy5rZXkpO2lmKG51bGwhPT1iJiYoYi5lbGVtZW50VHlwZT09PWZ8fFwib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYmJmYuJCR0eXBlb2Y9PT1IYSYmdWgoZik9PT1iLnR5cGUpKXJldHVybiBkPWUoYixjLnByb3BzKSxkLnJlZj1zaChhLGIsYyksZC5yZXR1cm49YSxkO2Q9eWgoYy50eXBlLGMua2V5LGMucHJvcHMsbnVsbCxhLm1vZGUsZCk7ZC5yZWY9c2goYSxiLGMpO2QucmV0dXJuPWE7cmV0dXJuIGR9ZnVuY3Rpb24gbChhLGIsYyxkKXtpZihudWxsPT09Ynx8NCE9PWIudGFnfHxcbmIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8hPT1jLmNvbnRhaW5lckluZm98fGIuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uIT09Yy5pbXBsZW1lbnRhdGlvbilyZXR1cm4gYj16aChjLGEubW9kZSxkKSxiLnJldHVybj1hLGI7Yj1lKGIsYy5jaGlsZHJlbnx8W10pO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gbShhLGIsYyxkLGYpe2lmKG51bGw9PT1ifHw3IT09Yi50YWcpcmV0dXJuIGI9QWgoYyxhLm1vZGUsZCxmKSxiLnJldHVybj1hLGI7Yj1lKGIsYyk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBxKGEsYixjKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGImJlwiXCIhPT1ifHxcIm51bWJlclwiPT09dHlwZW9mIGIpcmV0dXJuIGI9eGgoXCJcIitiLGEubW9kZSxjKSxiLnJldHVybj1hLGI7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBiJiZudWxsIT09Yil7c3dpdGNoKGIuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGM9eWgoYi50eXBlLGIua2V5LGIucHJvcHMsbnVsbCxhLm1vZGUsYyksXG5jLnJlZj1zaChhLG51bGwsYiksYy5yZXR1cm49YSxjO2Nhc2Ugd2E6cmV0dXJuIGI9emgoYixhLm1vZGUsYyksYi5yZXR1cm49YSxiO2Nhc2UgSGE6dmFyIGQ9Yi5faW5pdDtyZXR1cm4gcShhLGQoYi5fcGF5bG9hZCksYyl9aWYoZWIoYil8fEthKGIpKXJldHVybiBiPUFoKGIsYS5tb2RlLGMsbnVsbCksYi5yZXR1cm49YSxiO3RoKGEsYil9cmV0dXJuIG51bGx9ZnVuY3Rpb24gcihhLGIsYyxkKXt2YXIgZT1udWxsIT09Yj9iLmtleTpudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYyYmXCJcIiE9PWN8fFwibnVtYmVyXCI9PT10eXBlb2YgYylyZXR1cm4gbnVsbCE9PWU/bnVsbDpoKGEsYixcIlwiK2MsZCk7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yyl7c3dpdGNoKGMuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGMua2V5PT09ZT9rKGEsYixjLGQpOm51bGw7Y2FzZSB3YTpyZXR1cm4gYy5rZXk9PT1lP2woYSxiLGMsZCk6bnVsbDtjYXNlIEhhOnJldHVybiBlPWMuX2luaXQscihhLFxuYixlKGMuX3BheWxvYWQpLGQpfWlmKGViKGMpfHxLYShjKSlyZXR1cm4gbnVsbCE9PWU/bnVsbDptKGEsYixjLGQsbnVsbCk7dGgoYSxjKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB5KGEsYixjLGQsZSl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBkJiZcIlwiIT09ZHx8XCJudW1iZXJcIj09PXR5cGVvZiBkKXJldHVybiBhPWEuZ2V0KGMpfHxudWxsLGgoYixhLFwiXCIrZCxlKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGQmJm51bGwhPT1kKXtzd2l0Y2goZC4kJHR5cGVvZil7Y2FzZSB2YTpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk/YzpkLmtleSl8fG51bGwsayhiLGEsZCxlKTtjYXNlIHdhOnJldHVybiBhPWEuZ2V0KG51bGw9PT1kLmtleT9jOmQua2V5KXx8bnVsbCxsKGIsYSxkLGUpO2Nhc2UgSGE6dmFyIGY9ZC5faW5pdDtyZXR1cm4geShhLGIsYyxmKGQuX3BheWxvYWQpLGUpfWlmKGViKGQpfHxLYShkKSlyZXR1cm4gYT1hLmdldChjKXx8bnVsbCxtKGIsYSxkLGUsbnVsbCk7dGgoYixkKX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIG4oZSxnLGgsayl7Zm9yKHZhciBsPW51bGwsbT1udWxsLHU9Zyx3PWc9MCx4PW51bGw7bnVsbCE9PXUmJnc8aC5sZW5ndGg7dysrKXt1LmluZGV4Pnc/KHg9dSx1PW51bGwpOng9dS5zaWJsaW5nO3ZhciBuPXIoZSx1LGhbd10sayk7aWYobnVsbD09PW4pe251bGw9PT11JiYodT14KTticmVha31hJiZ1JiZudWxsPT09bi5hbHRlcm5hdGUmJmIoZSx1KTtnPWYobixnLHcpO251bGw9PT1tP2w9bjptLnNpYmxpbmc9bjttPW47dT14fWlmKHc9PT1oLmxlbmd0aClyZXR1cm4gYyhlLHUpLEkmJnRnKGUsdyksbDtpZihudWxsPT09dSl7Zm9yKDt3PGgubGVuZ3RoO3crKyl1PXEoZSxoW3ddLGspLG51bGwhPT11JiYoZz1mKHUsZyx3KSxudWxsPT09bT9sPXU6bS5zaWJsaW5nPXUsbT11KTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZvcih1PWQoZSx1KTt3PGgubGVuZ3RoO3crKyl4PXkodSxlLHcsaFt3XSxrKSxudWxsIT09eCYmKGEmJm51bGwhPT14LmFsdGVybmF0ZSYmdS5kZWxldGUobnVsbD09PVxueC5rZXk/dzp4LmtleSksZz1mKHgsZyx3KSxudWxsPT09bT9sPXg6bS5zaWJsaW5nPXgsbT14KTthJiZ1LmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGIoZSxhKX0pO0kmJnRnKGUsdyk7cmV0dXJuIGx9ZnVuY3Rpb24gdChlLGcsaCxrKXt2YXIgbD1LYShoKTtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgbCl0aHJvdyBFcnJvcihwKDE1MCkpO2g9bC5jYWxsKGgpO2lmKG51bGw9PWgpdGhyb3cgRXJyb3IocCgxNTEpKTtmb3IodmFyIHU9bD1udWxsLG09Zyx3PWc9MCx4PW51bGwsbj1oLm5leHQoKTtudWxsIT09bSYmIW4uZG9uZTt3Kyssbj1oLm5leHQoKSl7bS5pbmRleD53Pyh4PW0sbT1udWxsKTp4PW0uc2libGluZzt2YXIgdD1yKGUsbSxuLnZhbHVlLGspO2lmKG51bGw9PT10KXtudWxsPT09bSYmKG09eCk7YnJlYWt9YSYmbSYmbnVsbD09PXQuYWx0ZXJuYXRlJiZiKGUsbSk7Zz1mKHQsZyx3KTtudWxsPT09dT9sPXQ6dS5zaWJsaW5nPXQ7dT10O209eH1pZihuLmRvbmUpcmV0dXJuIGMoZSxcbm0pLEkmJnRnKGUsdyksbDtpZihudWxsPT09bSl7Zm9yKDshbi5kb25lO3crKyxuPWgubmV4dCgpKW49cShlLG4udmFsdWUsayksbnVsbCE9PW4mJihnPWYobixnLHcpLG51bGw9PT11P2w9bjp1LnNpYmxpbmc9bix1PW4pO0kmJnRnKGUsdyk7cmV0dXJuIGx9Zm9yKG09ZChlLG0pOyFuLmRvbmU7dysrLG49aC5uZXh0KCkpbj15KG0sZSx3LG4udmFsdWUsayksbnVsbCE9PW4mJihhJiZudWxsIT09bi5hbHRlcm5hdGUmJm0uZGVsZXRlKG51bGw9PT1uLmtleT93Om4ua2V5KSxnPWYobixnLHcpLG51bGw9PT11P2w9bjp1LnNpYmxpbmc9bix1PW4pO2EmJm0uZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7SSYmdGcoZSx3KTtyZXR1cm4gbH1mdW5jdGlvbiBKKGEsZCxmLGgpe1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYmJmYudHlwZT09PXlhJiZudWxsPT09Zi5rZXkmJihmPWYucHJvcHMuY2hpbGRyZW4pO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYpe3N3aXRjaChmLiQkdHlwZW9mKXtjYXNlIHZhOmE6e2Zvcih2YXIgaz1cbmYua2V5LGw9ZDtudWxsIT09bDspe2lmKGwua2V5PT09ayl7az1mLnR5cGU7aWYoaz09PXlhKXtpZig3PT09bC50YWcpe2MoYSxsLnNpYmxpbmcpO2Q9ZShsLGYucHJvcHMuY2hpbGRyZW4pO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9fWVsc2UgaWYobC5lbGVtZW50VHlwZT09PWt8fFwib2JqZWN0XCI9PT10eXBlb2YgayYmbnVsbCE9PWsmJmsuJCR0eXBlb2Y9PT1IYSYmdWgoayk9PT1sLnR5cGUpe2MoYSxsLnNpYmxpbmcpO2Q9ZShsLGYucHJvcHMpO2QucmVmPXNoKGEsbCxmKTtkLnJldHVybj1hO2E9ZDticmVhayBhfWMoYSxsKTticmVha31lbHNlIGIoYSxsKTtsPWwuc2libGluZ31mLnR5cGU9PT15YT8oZD1BaChmLnByb3BzLmNoaWxkcmVuLGEubW9kZSxoLGYua2V5KSxkLnJldHVybj1hLGE9ZCk6KGg9eWgoZi50eXBlLGYua2V5LGYucHJvcHMsbnVsbCxhLm1vZGUsaCksaC5yZWY9c2goYSxkLGYpLGgucmV0dXJuPWEsYT1oKX1yZXR1cm4gZyhhKTtjYXNlIHdhOmE6e2ZvcihsPWYua2V5O251bGwhPT1cbmQ7KXtpZihkLmtleT09PWwpaWYoND09PWQudGFnJiZkLnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09Zi5jb250YWluZXJJbmZvJiZkLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PWYuaW1wbGVtZW50YXRpb24pe2MoYSxkLnNpYmxpbmcpO2Q9ZShkLGYuY2hpbGRyZW58fFtdKTtkLnJldHVybj1hO2E9ZDticmVhayBhfWVsc2V7YyhhLGQpO2JyZWFrfWVsc2UgYihhLGQpO2Q9ZC5zaWJsaW5nfWQ9emgoZixhLm1vZGUsaCk7ZC5yZXR1cm49YTthPWR9cmV0dXJuIGcoYSk7Y2FzZSBIYTpyZXR1cm4gbD1mLl9pbml0LEooYSxkLGwoZi5fcGF5bG9hZCksaCl9aWYoZWIoZikpcmV0dXJuIG4oYSxkLGYsaCk7aWYoS2EoZikpcmV0dXJuIHQoYSxkLGYsaCk7dGgoYSxmKX1yZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGYmJlwiXCIhPT1mfHxcIm51bWJlclwiPT09dHlwZW9mIGY/KGY9XCJcIitmLG51bGwhPT1kJiY2PT09ZC50YWc/KGMoYSxkLnNpYmxpbmcpLGQ9ZShkLGYpLGQucmV0dXJuPWEsYT1kKTpcbihjKGEsZCksZD14aChmLGEubW9kZSxoKSxkLnJldHVybj1hLGE9ZCksZyhhKSk6YyhhLGQpfXJldHVybiBKfXZhciBCaD12aCghMCksQ2g9dmgoITEpLERoPXt9LEVoPVVmKERoKSxGaD1VZihEaCksR2g9VWYoRGgpO2Z1bmN0aW9uIEhoKGEpe2lmKGE9PT1EaCl0aHJvdyBFcnJvcihwKDE3NCkpO3JldHVybiBhfWZ1bmN0aW9uIEloKGEsYil7RyhHaCxiKTtHKEZoLGEpO0coRWgsRGgpO2E9Yi5ub2RlVHlwZTtzd2l0Y2goYSl7Y2FzZSA5OmNhc2UgMTE6Yj0oYj1iLmRvY3VtZW50RWxlbWVudCk/Yi5uYW1lc3BhY2VVUkk6bGIobnVsbCxcIlwiKTticmVhaztkZWZhdWx0OmE9OD09PWE/Yi5wYXJlbnROb2RlOmIsYj1hLm5hbWVzcGFjZVVSSXx8bnVsbCxhPWEudGFnTmFtZSxiPWxiKGIsYSl9RShFaCk7RyhFaCxiKX1mdW5jdGlvbiBKaCgpe0UoRWgpO0UoRmgpO0UoR2gpfVxuZnVuY3Rpb24gS2goYSl7SGgoR2guY3VycmVudCk7dmFyIGI9SGgoRWguY3VycmVudCk7dmFyIGM9bGIoYixhLnR5cGUpO2IhPT1jJiYoRyhGaCxhKSxHKEVoLGMpKX1mdW5jdGlvbiBMaChhKXtGaC5jdXJyZW50PT09YSYmKEUoRWgpLEUoRmgpKX12YXIgTT1VZigwKTtcbmZ1bmN0aW9uIE1oKGEpe2Zvcih2YXIgYj1hO251bGwhPT1iOyl7aWYoMTM9PT1iLnRhZyl7dmFyIGM9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1jJiYoYz1jLmRlaHlkcmF0ZWQsbnVsbD09PWN8fFwiJD9cIj09PWMuZGF0YXx8XCIkIVwiPT09Yy5kYXRhKSlyZXR1cm4gYn1lbHNlIGlmKDE5PT09Yi50YWcmJnZvaWQgMCE9PWIubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcil7aWYoMCE9PShiLmZsYWdzJjEyOCkpcmV0dXJuIGJ9ZWxzZSBpZihudWxsIT09Yi5jaGlsZCl7Yi5jaGlsZC5yZXR1cm49YjtiPWIuY2hpbGQ7Y29udGludWV9aWYoYj09PWEpYnJlYWs7Zm9yKDtudWxsPT09Yi5zaWJsaW5nOyl7aWYobnVsbD09PWIucmV0dXJufHxiLnJldHVybj09PWEpcmV0dXJuIG51bGw7Yj1iLnJldHVybn1iLnNpYmxpbmcucmV0dXJuPWIucmV0dXJuO2I9Yi5zaWJsaW5nfXJldHVybiBudWxsfXZhciBOaD1bXTtcbmZ1bmN0aW9uIE9oKCl7Zm9yKHZhciBhPTA7YTxOaC5sZW5ndGg7YSsrKU5oW2FdLl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5PW51bGw7TmgubGVuZ3RoPTB9dmFyIFBoPXVhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsUWg9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsUmg9MCxOPW51bGwsTz1udWxsLFA9bnVsbCxTaD0hMSxUaD0hMSxVaD0wLFZoPTA7ZnVuY3Rpb24gUSgpe3Rocm93IEVycm9yKHAoMzIxKSk7fWZ1bmN0aW9uIFdoKGEsYil7aWYobnVsbD09PWIpcmV0dXJuITE7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aCYmYzxhLmxlbmd0aDtjKyspaWYoIUhlKGFbY10sYltjXSkpcmV0dXJuITE7cmV0dXJuITB9XG5mdW5jdGlvbiBYaChhLGIsYyxkLGUsZil7Umg9ZjtOPWI7Yi5tZW1vaXplZFN0YXRlPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO2IubGFuZXM9MDtQaC5jdXJyZW50PW51bGw9PT1hfHxudWxsPT09YS5tZW1vaXplZFN0YXRlP1loOlpoO2E9YyhkLGUpO2lmKFRoKXtmPTA7ZG97VGg9ITE7VWg9MDtpZigyNTw9Zil0aHJvdyBFcnJvcihwKDMwMSkpO2YrPTE7UD1PPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO1BoLmN1cnJlbnQ9JGg7YT1jKGQsZSl9d2hpbGUoVGgpfVBoLmN1cnJlbnQ9YWk7Yj1udWxsIT09TyYmbnVsbCE9PU8ubmV4dDtSaD0wO1A9Tz1OPW51bGw7U2g9ITE7aWYoYil0aHJvdyBFcnJvcihwKDMwMCkpO3JldHVybiBhfWZ1bmN0aW9uIGJpKCl7dmFyIGE9MCE9PVVoO1VoPTA7cmV0dXJuIGF9XG5mdW5jdGlvbiBjaSgpe3ZhciBhPXttZW1vaXplZFN0YXRlOm51bGwsYmFzZVN0YXRlOm51bGwsYmFzZVF1ZXVlOm51bGwscXVldWU6bnVsbCxuZXh0Om51bGx9O251bGw9PT1QP04ubWVtb2l6ZWRTdGF0ZT1QPWE6UD1QLm5leHQ9YTtyZXR1cm4gUH1mdW5jdGlvbiBkaSgpe2lmKG51bGw9PT1PKXt2YXIgYT1OLmFsdGVybmF0ZTthPW51bGwhPT1hP2EubWVtb2l6ZWRTdGF0ZTpudWxsfWVsc2UgYT1PLm5leHQ7dmFyIGI9bnVsbD09PVA/Ti5tZW1vaXplZFN0YXRlOlAubmV4dDtpZihudWxsIT09YilQPWIsTz1hO2Vsc2V7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IocCgzMTApKTtPPWE7YT17bWVtb2l6ZWRTdGF0ZTpPLm1lbW9pemVkU3RhdGUsYmFzZVN0YXRlOk8uYmFzZVN0YXRlLGJhc2VRdWV1ZTpPLmJhc2VRdWV1ZSxxdWV1ZTpPLnF1ZXVlLG5leHQ6bnVsbH07bnVsbD09PVA/Ti5tZW1vaXplZFN0YXRlPVA9YTpQPVAubmV4dD1hfXJldHVybiBQfVxuZnVuY3Rpb24gZWkoYSxiKXtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYj9iKGEpOmJ9XG5mdW5jdGlvbiBmaShhKXt2YXIgYj1kaSgpLGM9Yi5xdWV1ZTtpZihudWxsPT09Yyl0aHJvdyBFcnJvcihwKDMxMSkpO2MubGFzdFJlbmRlcmVkUmVkdWNlcj1hO3ZhciBkPU8sZT1kLmJhc2VRdWV1ZSxmPWMucGVuZGluZztpZihudWxsIT09Zil7aWYobnVsbCE9PWUpe3ZhciBnPWUubmV4dDtlLm5leHQ9Zi5uZXh0O2YubmV4dD1nfWQuYmFzZVF1ZXVlPWU9ZjtjLnBlbmRpbmc9bnVsbH1pZihudWxsIT09ZSl7Zj1lLm5leHQ7ZD1kLmJhc2VTdGF0ZTt2YXIgaD1nPW51bGwsaz1udWxsLGw9Zjtkb3t2YXIgbT1sLmxhbmU7aWYoKFJoJm0pPT09bSludWxsIT09ayYmKGs9ay5uZXh0PXtsYW5lOjAsYWN0aW9uOmwuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6bC5oYXNFYWdlclN0YXRlLGVhZ2VyU3RhdGU6bC5lYWdlclN0YXRlLG5leHQ6bnVsbH0pLGQ9bC5oYXNFYWdlclN0YXRlP2wuZWFnZXJTdGF0ZTphKGQsbC5hY3Rpb24pO2Vsc2V7dmFyIHE9e2xhbmU6bSxhY3Rpb246bC5hY3Rpb24saGFzRWFnZXJTdGF0ZTpsLmhhc0VhZ2VyU3RhdGUsXG5lYWdlclN0YXRlOmwuZWFnZXJTdGF0ZSxuZXh0Om51bGx9O251bGw9PT1rPyhoPWs9cSxnPWQpOms9ay5uZXh0PXE7Ti5sYW5lc3w9bTtoaHw9bX1sPWwubmV4dH13aGlsZShudWxsIT09bCYmbCE9PWYpO251bGw9PT1rP2c9ZDprLm5leHQ9aDtIZShkLGIubWVtb2l6ZWRTdGF0ZSl8fChVZz0hMCk7Yi5tZW1vaXplZFN0YXRlPWQ7Yi5iYXNlU3RhdGU9ZztiLmJhc2VRdWV1ZT1rO2MubGFzdFJlbmRlcmVkU3RhdGU9ZH1hPWMuaW50ZXJsZWF2ZWQ7aWYobnVsbCE9PWEpe2U9YTtkbyBmPWUubGFuZSxOLmxhbmVzfD1mLGhofD1mLGU9ZS5uZXh0O3doaWxlKGUhPT1hKX1lbHNlIG51bGw9PT1lJiYoYy5sYW5lcz0wKTtyZXR1cm5bYi5tZW1vaXplZFN0YXRlLGMuZGlzcGF0Y2hdfVxuZnVuY3Rpb24gZ2koYSl7dmFyIGI9ZGkoKSxjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IocCgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1jLmRpc3BhdGNoLGU9Yy5wZW5kaW5nLGY9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1lKXtjLnBlbmRpbmc9bnVsbDt2YXIgZz1lPWUubmV4dDtkbyBmPWEoZixnLmFjdGlvbiksZz1nLm5leHQ7d2hpbGUoZyE9PWUpO0hlKGYsYi5tZW1vaXplZFN0YXRlKXx8KFVnPSEwKTtiLm1lbW9pemVkU3RhdGU9ZjtudWxsPT09Yi5iYXNlUXVldWUmJihiLmJhc2VTdGF0ZT1mKTtjLmxhc3RSZW5kZXJlZFN0YXRlPWZ9cmV0dXJuW2YsZF19ZnVuY3Rpb24gaGkoKXt9XG5mdW5jdGlvbiBpaShhLGIpe3ZhciBjPU4sZD1kaSgpLGU9YigpLGY9IUhlKGQubWVtb2l6ZWRTdGF0ZSxlKTtmJiYoZC5tZW1vaXplZFN0YXRlPWUsVWc9ITApO2Q9ZC5xdWV1ZTtqaShraS5iaW5kKG51bGwsYyxkLGEpLFthXSk7aWYoZC5nZXRTbmFwc2hvdCE9PWJ8fGZ8fG51bGwhPT1QJiZQLm1lbW9pemVkU3RhdGUudGFnJjEpe2MuZmxhZ3N8PTIwNDg7bGkoOSxtaS5iaW5kKG51bGwsYyxkLGUsYiksdm9pZCAwLG51bGwpO2lmKG51bGw9PT1SKXRocm93IEVycm9yKHAoMzQ5KSk7MCE9PShSaCYzMCl8fG5pKGMsYixlKX1yZXR1cm4gZX1mdW5jdGlvbiBuaShhLGIsYyl7YS5mbGFnc3w9MTYzODQ7YT17Z2V0U25hcHNob3Q6Yix2YWx1ZTpjfTtiPU4udXBkYXRlUXVldWU7bnVsbD09PWI/KGI9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0sTi51cGRhdGVRdWV1ZT1iLGIuc3RvcmVzPVthXSk6KGM9Yi5zdG9yZXMsbnVsbD09PWM/Yi5zdG9yZXM9W2FdOmMucHVzaChhKSl9XG5mdW5jdGlvbiBtaShhLGIsYyxkKXtiLnZhbHVlPWM7Yi5nZXRTbmFwc2hvdD1kO29pKGIpJiZwaShhKX1mdW5jdGlvbiBraShhLGIsYyl7cmV0dXJuIGMoZnVuY3Rpb24oKXtvaShiKSYmcGkoYSl9KX1mdW5jdGlvbiBvaShhKXt2YXIgYj1hLmdldFNuYXBzaG90O2E9YS52YWx1ZTt0cnl7dmFyIGM9YigpO3JldHVybiFIZShhLGMpfWNhdGNoKGQpe3JldHVybiEwfX1mdW5jdGlvbiBwaShhKXt2YXIgYj1aZyhhLDEpO251bGwhPT1iJiZtaChiLGEsMSwtMSl9XG5mdW5jdGlvbiBxaShhKXt2YXIgYj1jaSgpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBhJiYoYT1hKCkpO2IubWVtb2l6ZWRTdGF0ZT1iLmJhc2VTdGF0ZT1hO2E9e3BlbmRpbmc6bnVsbCxpbnRlcmxlYXZlZDpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmVpLGxhc3RSZW5kZXJlZFN0YXRlOmF9O2IucXVldWU9YTthPWEuZGlzcGF0Y2g9cmkuYmluZChudWxsLE4sYSk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxhXX1cbmZ1bmN0aW9uIGxpKGEsYixjLGQpe2E9e3RhZzphLGNyZWF0ZTpiLGRlc3Ryb3k6YyxkZXBzOmQsbmV4dDpudWxsfTtiPU4udXBkYXRlUXVldWU7bnVsbD09PWI/KGI9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0sTi51cGRhdGVRdWV1ZT1iLGIubGFzdEVmZmVjdD1hLm5leHQ9YSk6KGM9Yi5sYXN0RWZmZWN0LG51bGw9PT1jP2IubGFzdEVmZmVjdD1hLm5leHQ9YTooZD1jLm5leHQsYy5uZXh0PWEsYS5uZXh0PWQsYi5sYXN0RWZmZWN0PWEpKTtyZXR1cm4gYX1mdW5jdGlvbiBzaSgpe3JldHVybiBkaSgpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gdGkoYSxiLGMsZCl7dmFyIGU9Y2koKTtOLmZsYWdzfD1hO2UubWVtb2l6ZWRTdGF0ZT1saSgxfGIsYyx2b2lkIDAsdm9pZCAwPT09ZD9udWxsOmQpfVxuZnVuY3Rpb24gdWkoYSxiLGMsZCl7dmFyIGU9ZGkoKTtkPXZvaWQgMD09PWQ/bnVsbDpkO3ZhciBmPXZvaWQgMDtpZihudWxsIT09Tyl7dmFyIGc9Ty5tZW1vaXplZFN0YXRlO2Y9Zy5kZXN0cm95O2lmKG51bGwhPT1kJiZXaChkLGcuZGVwcykpe2UubWVtb2l6ZWRTdGF0ZT1saShiLGMsZixkKTtyZXR1cm59fU4uZmxhZ3N8PWE7ZS5tZW1vaXplZFN0YXRlPWxpKDF8YixjLGYsZCl9ZnVuY3Rpb24gdmkoYSxiKXtyZXR1cm4gdGkoODM5MDY1Niw4LGEsYil9ZnVuY3Rpb24gamkoYSxiKXtyZXR1cm4gdWkoMjA0OCw4LGEsYil9ZnVuY3Rpb24gd2koYSxiKXtyZXR1cm4gdWkoNCwyLGEsYil9ZnVuY3Rpb24geGkoYSxiKXtyZXR1cm4gdWkoNCw0LGEsYil9XG5mdW5jdGlvbiB5aShhLGIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiKXJldHVybiBhPWEoKSxiKGEpLGZ1bmN0aW9uKCl7YihudWxsKX07aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpcmV0dXJuIGE9YSgpLGIuY3VycmVudD1hLGZ1bmN0aW9uKCl7Yi5jdXJyZW50PW51bGx9fWZ1bmN0aW9uIHppKGEsYixjKXtjPW51bGwhPT1jJiZ2b2lkIDAhPT1jP2MuY29uY2F0KFthXSk6bnVsbDtyZXR1cm4gdWkoNCw0LHlpLmJpbmQobnVsbCxiLGEpLGMpfWZ1bmN0aW9uIEFpKCl7fWZ1bmN0aW9uIEJpKGEsYil7dmFyIGM9ZGkoKTtiPXZvaWQgMD09PWI/bnVsbDpiO3ZhciBkPWMubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCYmbnVsbCE9PWImJldoKGIsZFsxXSkpcmV0dXJuIGRbMF07Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfVxuZnVuY3Rpb24gQ2koYSxiKXt2YXIgYz1kaSgpO2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGQ9Yy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kJiZudWxsIT09YiYmV2goYixkWzFdKSlyZXR1cm4gZFswXTthPWEoKTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9ZnVuY3Rpb24gRGkoYSxiLGMpe2lmKDA9PT0oUmgmMjEpKXJldHVybiBhLmJhc2VTdGF0ZSYmKGEuYmFzZVN0YXRlPSExLFVnPSEwKSxhLm1lbW9pemVkU3RhdGU9YztIZShjLGIpfHwoYz15YygpLE4ubGFuZXN8PWMsaGh8PWMsYS5iYXNlU3RhdGU9ITApO3JldHVybiBifWZ1bmN0aW9uIEVpKGEsYil7dmFyIGM9QztDPTAhPT1jJiY0PmM/Yzo0O2EoITApO3ZhciBkPVFoLnRyYW5zaXRpb247UWgudHJhbnNpdGlvbj17fTt0cnl7YSghMSksYigpfWZpbmFsbHl7Qz1jLFFoLnRyYW5zaXRpb249ZH19ZnVuY3Rpb24gRmkoKXtyZXR1cm4gZGkoKS5tZW1vaXplZFN0YXRlfVxuZnVuY3Rpb24gR2koYSxiLGMpe3ZhciBkPWxoKGEpO2M9e2xhbmU6ZCxhY3Rpb246YyxoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9O2lmKEhpKGEpKUlpKGIsYyk7ZWxzZSBpZihjPVlnKGEsYixjLGQpLG51bGwhPT1jKXt2YXIgZT1MKCk7bWgoYyxhLGQsZSk7SmkoYyxiLGQpfX1cbmZ1bmN0aW9uIHJpKGEsYixjKXt2YXIgZD1saChhKSxlPXtsYW5lOmQsYWN0aW9uOmMsaGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZihIaShhKSlJaShiLGUpO2Vsc2V7dmFyIGY9YS5hbHRlcm5hdGU7aWYoMD09PWEubGFuZXMmJihudWxsPT09Znx8MD09PWYubGFuZXMpJiYoZj1iLmxhc3RSZW5kZXJlZFJlZHVjZXIsbnVsbCE9PWYpKXRyeXt2YXIgZz1iLmxhc3RSZW5kZXJlZFN0YXRlLGg9ZihnLGMpO2UuaGFzRWFnZXJTdGF0ZT0hMDtlLmVhZ2VyU3RhdGU9aDtpZihIZShoLGcpKXt2YXIgaz1iLmludGVybGVhdmVkO251bGw9PT1rPyhlLm5leHQ9ZSxYZyhiKSk6KGUubmV4dD1rLm5leHQsay5uZXh0PWUpO2IuaW50ZXJsZWF2ZWQ9ZTtyZXR1cm59fWNhdGNoKGwpe31maW5hbGx5e31jPVlnKGEsYixlLGQpO251bGwhPT1jJiYoZT1MKCksbWgoYyxhLGQsZSksSmkoYyxiLGQpKX19XG5mdW5jdGlvbiBIaShhKXt2YXIgYj1hLmFsdGVybmF0ZTtyZXR1cm4gYT09PU58fG51bGwhPT1iJiZiPT09Tn1mdW5jdGlvbiBJaShhLGIpe1RoPVNoPSEwO3ZhciBjPWEucGVuZGluZztudWxsPT09Yz9iLm5leHQ9YjooYi5uZXh0PWMubmV4dCxjLm5leHQ9Yik7YS5wZW5kaW5nPWJ9ZnVuY3Rpb24gSmkoYSxiLGMpe2lmKDAhPT0oYyY0MTk0MjQwKSl7dmFyIGQ9Yi5sYW5lcztkJj1hLnBlbmRpbmdMYW5lcztjfD1kO2IubGFuZXM9YztDYyhhLGMpfX1cbnZhciBhaT17cmVhZENvbnRleHQ6VmcsdXNlQ2FsbGJhY2s6USx1c2VDb250ZXh0OlEsdXNlRWZmZWN0OlEsdXNlSW1wZXJhdGl2ZUhhbmRsZTpRLHVzZUluc2VydGlvbkVmZmVjdDpRLHVzZUxheW91dEVmZmVjdDpRLHVzZU1lbW86USx1c2VSZWR1Y2VyOlEsdXNlUmVmOlEsdXNlU3RhdGU6USx1c2VEZWJ1Z1ZhbHVlOlEsdXNlRGVmZXJyZWRWYWx1ZTpRLHVzZVRyYW5zaXRpb246USx1c2VNdXRhYmxlU291cmNlOlEsdXNlU3luY0V4dGVybmFsU3RvcmU6USx1c2VJZDpRLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sWWg9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGEsYil7Y2koKS5tZW1vaXplZFN0YXRlPVthLHZvaWQgMD09PWI/bnVsbDpiXTtyZXR1cm4gYX0sdXNlQ29udGV4dDpWZyx1c2VFZmZlY3Q6dmksdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIHRpKDQxOTQzMDgsXG40LHlpLmJpbmQobnVsbCxiLGEpLGMpfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGkoNDE5NDMwOCw0LGEsYil9LHVzZUluc2VydGlvbkVmZmVjdDpmdW5jdGlvbihhLGIpe3JldHVybiB0aSg0LDIsYSxiKX0sdXNlTWVtbzpmdW5jdGlvbihhLGIpe3ZhciBjPWNpKCk7Yj12b2lkIDA9PT1iP251bGw6YjthPWEoKTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWNpKCk7Yj12b2lkIDAhPT1jP2MoYik6YjtkLm1lbW9pemVkU3RhdGU9ZC5iYXNlU3RhdGU9YjthPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjphLGxhc3RSZW5kZXJlZFN0YXRlOmJ9O2QucXVldWU9YTthPWEuZGlzcGF0Y2g9R2kuYmluZChudWxsLE4sYSk7cmV0dXJuW2QubWVtb2l6ZWRTdGF0ZSxhXX0sdXNlUmVmOmZ1bmN0aW9uKGEpe3ZhciBiPVxuY2koKTthPXtjdXJyZW50OmF9O3JldHVybiBiLm1lbW9pemVkU3RhdGU9YX0sdXNlU3RhdGU6cWksdXNlRGVidWdWYWx1ZTpBaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiBjaSgpLm1lbW9pemVkU3RhdGU9YX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPXFpKCExKSxiPWFbMF07YT1FaS5iaW5kKG51bGwsYVsxXSk7Y2koKS5tZW1vaXplZFN0YXRlPWE7cmV0dXJuW2IsYV19LHVzZU11dGFibGVTb3VyY2U6ZnVuY3Rpb24oKXt9LHVzZVN5bmNFeHRlcm5hbFN0b3JlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1OLGU9Y2koKTtpZihJKXtpZih2b2lkIDA9PT1jKXRocm93IEVycm9yKHAoNDA3KSk7Yz1jKCl9ZWxzZXtjPWIoKTtpZihudWxsPT09Uil0aHJvdyBFcnJvcihwKDM0OSkpOzAhPT0oUmgmMzApfHxuaShkLGIsYyl9ZS5tZW1vaXplZFN0YXRlPWM7dmFyIGY9e3ZhbHVlOmMsZ2V0U25hcHNob3Q6Yn07ZS5xdWV1ZT1mO3ZpKGtpLmJpbmQobnVsbCxkLFxuZixhKSxbYV0pO2QuZmxhZ3N8PTIwNDg7bGkoOSxtaS5iaW5kKG51bGwsZCxmLGMsYiksdm9pZCAwLG51bGwpO3JldHVybiBjfSx1c2VJZDpmdW5jdGlvbigpe3ZhciBhPWNpKCksYj1SLmlkZW50aWZpZXJQcmVmaXg7aWYoSSl7dmFyIGM9c2c7dmFyIGQ9cmc7Yz0oZCZ+KDE8PDMyLW9jKGQpLTEpKS50b1N0cmluZygzMikrYztiPVwiOlwiK2IrXCJSXCIrYztjPVVoKys7MDxjJiYoYis9XCJIXCIrYy50b1N0cmluZygzMikpO2IrPVwiOlwifWVsc2UgYz1WaCsrLGI9XCI6XCIrYitcInJcIitjLnRvU3RyaW5nKDMyKStcIjpcIjtyZXR1cm4gYS5tZW1vaXplZFN0YXRlPWJ9LHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sWmg9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOkJpLHVzZUNvbnRleHQ6VmcsdXNlRWZmZWN0OmppLHVzZUltcGVyYXRpdmVIYW5kbGU6emksdXNlSW5zZXJ0aW9uRWZmZWN0OndpLHVzZUxheW91dEVmZmVjdDp4aSx1c2VNZW1vOkNpLHVzZVJlZHVjZXI6ZmksdXNlUmVmOnNpLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGZpKGVpKX0sXG51c2VEZWJ1Z1ZhbHVlOkFpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9ZGkoKTtyZXR1cm4gRGkoYixPLm1lbW9pemVkU3RhdGUsYSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1maShlaSlbMF0sYj1kaSgpLm1lbW9pemVkU3RhdGU7cmV0dXJuW2EsYl19LHVzZU11dGFibGVTb3VyY2U6aGksdXNlU3luY0V4dGVybmFsU3RvcmU6aWksdXNlSWQ6RmksdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSwkaD17cmVhZENvbnRleHQ6VmcsdXNlQ2FsbGJhY2s6QmksdXNlQ29udGV4dDpWZyx1c2VFZmZlY3Q6amksdXNlSW1wZXJhdGl2ZUhhbmRsZTp6aSx1c2VJbnNlcnRpb25FZmZlY3Q6d2ksdXNlTGF5b3V0RWZmZWN0OnhpLHVzZU1lbW86Q2ksdXNlUmVkdWNlcjpnaSx1c2VSZWY6c2ksdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZ2koZWkpfSx1c2VEZWJ1Z1ZhbHVlOkFpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9ZGkoKTtyZXR1cm4gbnVsbD09PVxuTz9iLm1lbW9pemVkU3RhdGU9YTpEaShiLE8ubWVtb2l6ZWRTdGF0ZSxhKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPWdpKGVpKVswXSxiPWRpKCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bYSxiXX0sdXNlTXV0YWJsZVNvdXJjZTpoaSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTppaSx1c2VJZDpGaSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9O2Z1bmN0aW9uIEtpKGEsYil7dHJ5e3ZhciBjPVwiXCIsZD1iO2RvIGMrPVBhKGQpLGQ9ZC5yZXR1cm47d2hpbGUoZCk7dmFyIGU9Y31jYXRjaChmKXtlPVwiXFxuRXJyb3IgZ2VuZXJhdGluZyBzdGFjazogXCIrZi5tZXNzYWdlK1wiXFxuXCIrZi5zdGFja31yZXR1cm57dmFsdWU6YSxzb3VyY2U6YixzdGFjazplLGRpZ2VzdDpudWxsfX1mdW5jdGlvbiBMaShhLGIsYyl7cmV0dXJue3ZhbHVlOmEsc291cmNlOm51bGwsc3RhY2s6bnVsbCE9Yz9jOm51bGwsZGlnZXN0Om51bGwhPWI/YjpudWxsfX1cbmZ1bmN0aW9uIE1pKGEsYil7dHJ5e2NvbnNvbGUuZXJyb3IoYi52YWx1ZSl9Y2F0Y2goYyl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGM7fSl9fXZhciBOaT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgV2Vha01hcD9XZWFrTWFwOk1hcDtmdW5jdGlvbiBPaShhLGIsYyl7Yz1jaCgtMSxjKTtjLnRhZz0zO2MucGF5bG9hZD17ZWxlbWVudDpudWxsfTt2YXIgZD1iLnZhbHVlO2MuY2FsbGJhY2s9ZnVuY3Rpb24oKXtQaXx8KFBpPSEwLFFpPWQpO01pKGEsYil9O3JldHVybiBjfVxuZnVuY3Rpb24gUmkoYSxiLGMpe2M9Y2goLTEsYyk7Yy50YWc9Mzt2YXIgZD1hLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2YXIgZT1iLnZhbHVlO2MucGF5bG9hZD1mdW5jdGlvbigpe3JldHVybiBkKGUpfTtjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7TWkoYSxiKX19dmFyIGY9YS5zdGF0ZU5vZGU7bnVsbCE9PWYmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLmNvbXBvbmVudERpZENhdGNoJiYoYy5jYWxsYmFjaz1mdW5jdGlvbigpe01pKGEsYik7XCJmdW5jdGlvblwiIT09dHlwZW9mIGQmJihudWxsPT09U2k/U2k9bmV3IFNldChbdGhpc10pOlNpLmFkZCh0aGlzKSk7dmFyIGM9Yi5zdGFjazt0aGlzLmNvbXBvbmVudERpZENhdGNoKGIudmFsdWUse2NvbXBvbmVudFN0YWNrOm51bGwhPT1jP2M6XCJcIn0pfSk7cmV0dXJuIGN9XG5mdW5jdGlvbiBUaShhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7aWYobnVsbD09PWQpe2Q9YS5waW5nQ2FjaGU9bmV3IE5pO3ZhciBlPW5ldyBTZXQ7ZC5zZXQoYixlKX1lbHNlIGU9ZC5nZXQoYiksdm9pZCAwPT09ZSYmKGU9bmV3IFNldCxkLnNldChiLGUpKTtlLmhhcyhjKXx8KGUuYWRkKGMpLGE9VWkuYmluZChudWxsLGEsYixjKSxiLnRoZW4oYSxhKSl9ZnVuY3Rpb24gVmkoYSl7ZG97dmFyIGI7aWYoYj0xMz09PWEudGFnKWI9YS5tZW1vaXplZFN0YXRlLGI9bnVsbCE9PWI/bnVsbCE9PWIuZGVoeWRyYXRlZD8hMDohMTohMDtpZihiKXJldHVybiBhO2E9YS5yZXR1cm59d2hpbGUobnVsbCE9PWEpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gV2koYSxiLGMsZCxlKXtpZigwPT09KGEubW9kZSYxKSlyZXR1cm4gYT09PWI/YS5mbGFnc3w9NjU1MzY6KGEuZmxhZ3N8PTEyOCxjLmZsYWdzfD0xMzEwNzIsYy5mbGFncyY9LTUyODA1LDE9PT1jLnRhZyYmKG51bGw9PT1jLmFsdGVybmF0ZT9jLnRhZz0xNzooYj1jaCgtMSwxKSxiLnRhZz0yLGRoKGMsYiwxKSkpLGMubGFuZXN8PTEpLGE7YS5mbGFnc3w9NjU1MzY7YS5sYW5lcz1lO3JldHVybiBhfXZhciBYaT11YS5SZWFjdEN1cnJlbnRPd25lcixVZz0hMTtmdW5jdGlvbiBZaShhLGIsYyxkKXtiLmNoaWxkPW51bGw9PT1hP0NoKGIsbnVsbCxjLGQpOkJoKGIsYS5jaGlsZCxjLGQpfVxuZnVuY3Rpb24gWmkoYSxiLGMsZCxlKXtjPWMucmVuZGVyO3ZhciBmPWIucmVmO1RnKGIsZSk7ZD1YaChhLGIsYyxkLGYsZSk7Yz1iaSgpO2lmKG51bGwhPT1hJiYhVWcpcmV0dXJuIGIudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZSxiLmZsYWdzJj0tMjA1MyxhLmxhbmVzJj1+ZSwkaShhLGIsZSk7SSYmYyYmdmcoYik7Yi5mbGFnc3w9MTtZaShhLGIsZCxlKTtyZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIGFqKGEsYixjLGQsZSl7aWYobnVsbD09PWEpe3ZhciBmPWMudHlwZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZiYmIWJqKGYpJiZ2b2lkIDA9PT1mLmRlZmF1bHRQcm9wcyYmbnVsbD09PWMuY29tcGFyZSYmdm9pZCAwPT09Yy5kZWZhdWx0UHJvcHMpcmV0dXJuIGIudGFnPTE1LGIudHlwZT1mLGNqKGEsYixmLGQsZSk7YT15aChjLnR5cGUsbnVsbCxkLGIsYi5tb2RlLGUpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1mPWEuY2hpbGQ7aWYoMD09PShhLmxhbmVzJmUpKXt2YXIgZz1mLm1lbW9pemVkUHJvcHM7Yz1jLmNvbXBhcmU7Yz1udWxsIT09Yz9jOkllO2lmKGMoZyxkKSYmYS5yZWY9PT1iLnJlZilyZXR1cm4gJGkoYSxiLGUpfWIuZmxhZ3N8PTE7YT13aChmLGQpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1cbmZ1bmN0aW9uIGNqKGEsYixjLGQsZSl7aWYobnVsbCE9PWEpe3ZhciBmPWEubWVtb2l6ZWRQcm9wcztpZihJZShmLGQpJiZhLnJlZj09PWIucmVmKWlmKFVnPSExLGIucGVuZGluZ1Byb3BzPWQ9ZiwwIT09KGEubGFuZXMmZSkpMCE9PShhLmZsYWdzJjEzMTA3MikmJihVZz0hMCk7ZWxzZSByZXR1cm4gYi5sYW5lcz1hLmxhbmVzLCRpKGEsYixlKX1yZXR1cm4gZGooYSxiLGMsZCxlKX1cbmZ1bmN0aW9uIGVqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPWQuY2hpbGRyZW4sZj1udWxsIT09YT9hLm1lbW9pemVkU3RhdGU6bnVsbDtpZihcImhpZGRlblwiPT09ZC5tb2RlKWlmKDA9PT0oYi5tb2RlJjEpKWIubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOjAsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0sRyhmaixnaiksZ2p8PWM7ZWxzZXtpZigwPT09KGMmMTA3Mzc0MTgyNCkpcmV0dXJuIGE9bnVsbCE9PWY/Zi5iYXNlTGFuZXN8YzpjLGIubGFuZXM9Yi5jaGlsZExhbmVzPTEwNzM3NDE4MjQsYi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6YSxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxiLnVwZGF0ZVF1ZXVlPW51bGwsRyhmaixnaiksZ2p8PWEsbnVsbDtiLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9O2Q9bnVsbCE9PWY/Zi5iYXNlTGFuZXM6YztHKGZqLGdqKTtnanw9ZH1lbHNlIG51bGwhPT1cbmY/KGQ9Zi5iYXNlTGFuZXN8YyxiLm1lbW9pemVkU3RhdGU9bnVsbCk6ZD1jLEcoZmosZ2opLGdqfD1kO1lpKGEsYixlLGMpO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIGhqKGEsYil7dmFyIGM9Yi5yZWY7aWYobnVsbD09PWEmJm51bGwhPT1jfHxudWxsIT09YSYmYS5yZWYhPT1jKWIuZmxhZ3N8PTUxMixiLmZsYWdzfD0yMDk3MTUyfWZ1bmN0aW9uIGRqKGEsYixjLGQsZSl7dmFyIGY9WmYoYyk/WGY6SC5jdXJyZW50O2Y9WWYoYixmKTtUZyhiLGUpO2M9WGgoYSxiLGMsZCxmLGUpO2Q9YmkoKTtpZihudWxsIT09YSYmIVVnKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5mbGFncyY9LTIwNTMsYS5sYW5lcyY9fmUsJGkoYSxiLGUpO0kmJmQmJnZnKGIpO2IuZmxhZ3N8PTE7WWkoYSxiLGMsZSk7cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBpaihhLGIsYyxkLGUpe2lmKFpmKGMpKXt2YXIgZj0hMDtjZyhiKX1lbHNlIGY9ITE7VGcoYixlKTtpZihudWxsPT09Yi5zdGF0ZU5vZGUpamooYSxiKSxwaChiLGMsZCkscmgoYixjLGQsZSksZD0hMDtlbHNlIGlmKG51bGw9PT1hKXt2YXIgZz1iLnN0YXRlTm9kZSxoPWIubWVtb2l6ZWRQcm9wcztnLnByb3BzPWg7dmFyIGs9Zy5jb250ZXh0LGw9Yy5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGwmJm51bGwhPT1sP2w9VmcobCk6KGw9WmYoYyk/WGY6SC5jdXJyZW50LGw9WWYoYixsKSk7dmFyIG09Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMscT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgbXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU7cXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fFxuKGghPT1kfHxrIT09bCkmJnFoKGIsZyxkLGwpOyRnPSExO3ZhciByPWIubWVtb2l6ZWRTdGF0ZTtnLnN0YXRlPXI7Z2goYixkLGcsZSk7az1iLm1lbW9pemVkU3RhdGU7aCE9PWR8fHIhPT1rfHxXZi5jdXJyZW50fHwkZz8oXCJmdW5jdGlvblwiPT09dHlwZW9mIG0mJihraChiLGMsbSxkKSxrPWIubWVtb2l6ZWRTdGF0ZSksKGg9JGd8fG9oKGIsYyxoLGQscixrLGwpKT8ocXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50fHwoXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50JiZnLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpKTpcbihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpLGIubWVtb2l6ZWRQcm9wcz1kLGIubWVtb2l6ZWRTdGF0ZT1rKSxnLnByb3BzPWQsZy5zdGF0ZT1rLGcuY29udGV4dD1sLGQ9aCk6KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5mbGFnc3w9NDE5NDMwOCksZD0hMSl9ZWxzZXtnPWIuc3RhdGVOb2RlO2JoKGEsYik7aD1iLm1lbW9pemVkUHJvcHM7bD1iLnR5cGU9PT1iLmVsZW1lbnRUeXBlP2g6TGcoYi50eXBlLGgpO2cucHJvcHM9bDtxPWIucGVuZGluZ1Byb3BzO3I9Zy5jb250ZXh0O2s9Yy5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGsmJm51bGwhPT1rP2s9Vmcoayk6KGs9WmYoYyk/WGY6SC5jdXJyZW50LGs9WWYoYixrKSk7dmFyIHk9Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7KG09XCJmdW5jdGlvblwiPT09dHlwZW9mIHl8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXx8XG5cImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KGghPT1xfHxyIT09aykmJnFoKGIsZyxkLGspOyRnPSExO3I9Yi5tZW1vaXplZFN0YXRlO2cuc3RhdGU9cjtnaChiLGQsZyxlKTt2YXIgbj1iLm1lbW9pemVkU3RhdGU7aCE9PXF8fHIhPT1ufHxXZi5jdXJyZW50fHwkZz8oXCJmdW5jdGlvblwiPT09dHlwZW9mIHkmJihraChiLGMseSxkKSxuPWIubWVtb2l6ZWRTdGF0ZSksKGw9JGd8fG9oKGIsYyxsLGQscixuLGspfHwhMSk/KG18fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsVXBkYXRlfHwoXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFVwZGF0ZSYmZy5jb21wb25lbnRXaWxsVXBkYXRlKGQsbixrKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmXG5nLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlKGQsbixrKSksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlJiYoYi5mbGFnc3w9NCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJihiLmZsYWdzfD0xMDI0KSk6KFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09YS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9MTAyNCksYi5tZW1vaXplZFByb3BzPWQsYi5tZW1vaXplZFN0YXRlPW4pLGcucHJvcHM9ZCxnLnN0YXRlPW4sZy5jb250ZXh0PWssZD1sKTooXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09XG5hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTEwMjQpLGQ9ITEpfXJldHVybiBraihhLGIsYyxkLGYsZSl9XG5mdW5jdGlvbiBraihhLGIsYyxkLGUsZil7aGooYSxiKTt2YXIgZz0wIT09KGIuZmxhZ3MmMTI4KTtpZighZCYmIWcpcmV0dXJuIGUmJmRnKGIsYywhMSksJGkoYSxiLGYpO2Q9Yi5zdGF0ZU5vZGU7WGkuY3VycmVudD1iO3ZhciBoPWcmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBjLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj9udWxsOmQucmVuZGVyKCk7Yi5mbGFnc3w9MTtudWxsIT09YSYmZz8oYi5jaGlsZD1CaChiLGEuY2hpbGQsbnVsbCxmKSxiLmNoaWxkPUJoKGIsbnVsbCxoLGYpKTpZaShhLGIsaCxmKTtiLm1lbW9pemVkU3RhdGU9ZC5zdGF0ZTtlJiZkZyhiLGMsITApO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIGxqKGEpe3ZhciBiPWEuc3RhdGVOb2RlO2IucGVuZGluZ0NvbnRleHQ/YWcoYSxiLnBlbmRpbmdDb250ZXh0LGIucGVuZGluZ0NvbnRleHQhPT1iLmNvbnRleHQpOmIuY29udGV4dCYmYWcoYSxiLmNvbnRleHQsITEpO0loKGEsYi5jb250YWluZXJJbmZvKX1cbmZ1bmN0aW9uIG1qKGEsYixjLGQsZSl7SWcoKTtKZyhlKTtiLmZsYWdzfD0yNTY7WWkoYSxiLGMsZCk7cmV0dXJuIGIuY2hpbGR9dmFyIG5qPXtkZWh5ZHJhdGVkOm51bGwsdHJlZUNvbnRleHQ6bnVsbCxyZXRyeUxhbmU6MH07ZnVuY3Rpb24gb2ooYSl7cmV0dXJue2Jhc2VMYW5lczphLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9fVxuZnVuY3Rpb24gcGooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9TS5jdXJyZW50LGY9ITEsZz0wIT09KGIuZmxhZ3MmMTI4KSxoOyhoPWcpfHwoaD1udWxsIT09YSYmbnVsbD09PWEubWVtb2l6ZWRTdGF0ZT8hMTowIT09KGUmMikpO2lmKGgpZj0hMCxiLmZsYWdzJj0tMTI5O2Vsc2UgaWYobnVsbD09PWF8fG51bGwhPT1hLm1lbW9pemVkU3RhdGUpZXw9MTtHKE0sZSYxKTtpZihudWxsPT09YSl7RWcoYik7YT1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJihhPWEuZGVoeWRyYXRlZCxudWxsIT09YSkpcmV0dXJuIDA9PT0oYi5tb2RlJjEpP2IubGFuZXM9MTpcIiQhXCI9PT1hLmRhdGE/Yi5sYW5lcz04OmIubGFuZXM9MTA3Mzc0MTgyNCxudWxsO2c9ZC5jaGlsZHJlbjthPWQuZmFsbGJhY2s7cmV0dXJuIGY/KGQ9Yi5tb2RlLGY9Yi5jaGlsZCxnPXttb2RlOlwiaGlkZGVuXCIsY2hpbGRyZW46Z30sMD09PShkJjEpJiZudWxsIT09Zj8oZi5jaGlsZExhbmVzPTAsZi5wZW5kaW5nUHJvcHM9XG5nKTpmPXFqKGcsZCwwLG51bGwpLGE9QWgoYSxkLGMsbnVsbCksZi5yZXR1cm49YixhLnJldHVybj1iLGYuc2libGluZz1hLGIuY2hpbGQ9ZixiLmNoaWxkLm1lbW9pemVkU3RhdGU9b2ooYyksYi5tZW1vaXplZFN0YXRlPW5qLGEpOnJqKGIsZyl9ZT1hLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWUmJihoPWUuZGVoeWRyYXRlZCxudWxsIT09aCkpcmV0dXJuIHNqKGEsYixnLGQsaCxlLGMpO2lmKGYpe2Y9ZC5mYWxsYmFjaztnPWIubW9kZTtlPWEuY2hpbGQ7aD1lLnNpYmxpbmc7dmFyIGs9e21vZGU6XCJoaWRkZW5cIixjaGlsZHJlbjpkLmNoaWxkcmVufTswPT09KGcmMSkmJmIuY2hpbGQhPT1lPyhkPWIuY2hpbGQsZC5jaGlsZExhbmVzPTAsZC5wZW5kaW5nUHJvcHM9ayxiLmRlbGV0aW9ucz1udWxsKTooZD13aChlLGspLGQuc3VidHJlZUZsYWdzPWUuc3VidHJlZUZsYWdzJjE0NjgwMDY0KTtudWxsIT09aD9mPXdoKGgsZik6KGY9QWgoZixnLGMsbnVsbCksZi5mbGFnc3w9Mik7Zi5yZXR1cm49XG5iO2QucmV0dXJuPWI7ZC5zaWJsaW5nPWY7Yi5jaGlsZD1kO2Q9ZjtmPWIuY2hpbGQ7Zz1hLmNoaWxkLm1lbW9pemVkU3RhdGU7Zz1udWxsPT09Zz9vaihjKTp7YmFzZUxhbmVzOmcuYmFzZUxhbmVzfGMsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6Zy50cmFuc2l0aW9uc307Zi5tZW1vaXplZFN0YXRlPWc7Zi5jaGlsZExhbmVzPWEuY2hpbGRMYW5lcyZ+YztiLm1lbW9pemVkU3RhdGU9bmo7cmV0dXJuIGR9Zj1hLmNoaWxkO2E9Zi5zaWJsaW5nO2Q9d2goZix7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpkLmNoaWxkcmVufSk7MD09PShiLm1vZGUmMSkmJihkLmxhbmVzPWMpO2QucmV0dXJuPWI7ZC5zaWJsaW5nPW51bGw7bnVsbCE9PWEmJihjPWIuZGVsZXRpb25zLG51bGw9PT1jPyhiLmRlbGV0aW9ucz1bYV0sYi5mbGFnc3w9MTYpOmMucHVzaChhKSk7Yi5jaGlsZD1kO2IubWVtb2l6ZWRTdGF0ZT1udWxsO3JldHVybiBkfVxuZnVuY3Rpb24gcmooYSxiKXtiPXFqKHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOmJ9LGEubW9kZSwwLG51bGwpO2IucmV0dXJuPWE7cmV0dXJuIGEuY2hpbGQ9Yn1mdW5jdGlvbiB0aihhLGIsYyxkKXtudWxsIT09ZCYmSmcoZCk7QmgoYixhLmNoaWxkLG51bGwsYyk7YT1yaihiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuKTthLmZsYWdzfD0yO2IubWVtb2l6ZWRTdGF0ZT1udWxsO3JldHVybiBhfVxuZnVuY3Rpb24gc2ooYSxiLGMsZCxlLGYsZyl7aWYoYyl7aWYoYi5mbGFncyYyNTYpcmV0dXJuIGIuZmxhZ3MmPS0yNTcsZD1MaShFcnJvcihwKDQyMikpKSx0aihhLGIsZyxkKTtpZihudWxsIT09Yi5tZW1vaXplZFN0YXRlKXJldHVybiBiLmNoaWxkPWEuY2hpbGQsYi5mbGFnc3w9MTI4LG51bGw7Zj1kLmZhbGxiYWNrO2U9Yi5tb2RlO2Q9cWooe21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn0sZSwwLG51bGwpO2Y9QWgoZixlLGcsbnVsbCk7Zi5mbGFnc3w9MjtkLnJldHVybj1iO2YucmV0dXJuPWI7ZC5zaWJsaW5nPWY7Yi5jaGlsZD1kOzAhPT0oYi5tb2RlJjEpJiZCaChiLGEuY2hpbGQsbnVsbCxnKTtiLmNoaWxkLm1lbW9pemVkU3RhdGU9b2ooZyk7Yi5tZW1vaXplZFN0YXRlPW5qO3JldHVybiBmfWlmKDA9PT0oYi5tb2RlJjEpKXJldHVybiB0aihhLGIsZyxudWxsKTtpZihcIiQhXCI9PT1lLmRhdGEpe2Q9ZS5uZXh0U2libGluZyYmZS5uZXh0U2libGluZy5kYXRhc2V0O1xuaWYoZCl2YXIgaD1kLmRnc3Q7ZD1oO2Y9RXJyb3IocCg0MTkpKTtkPUxpKGYsZCx2b2lkIDApO3JldHVybiB0aihhLGIsZyxkKX1oPTAhPT0oZyZhLmNoaWxkTGFuZXMpO2lmKFVnfHxoKXtkPVI7aWYobnVsbCE9PWQpe3N3aXRjaChnJi1nKXtjYXNlIDQ6ZT0yO2JyZWFrO2Nhc2UgMTY6ZT04O2JyZWFrO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDplPTMyO2JyZWFrO2Nhc2UgNTM2ODcwOTEyOmU9MjY4NDM1NDU2O2JyZWFrO2RlZmF1bHQ6ZT0wfWU9MCE9PShlJihkLnN1c3BlbmRlZExhbmVzfGcpKT8wOmU7XG4wIT09ZSYmZSE9PWYucmV0cnlMYW5lJiYoZi5yZXRyeUxhbmU9ZSxaZyhhLGUpLG1oKGQsYSxlLC0xKSl9dWooKTtkPUxpKEVycm9yKHAoNDIxKSkpO3JldHVybiB0aihhLGIsZyxkKX1pZihcIiQ/XCI9PT1lLmRhdGEpcmV0dXJuIGIuZmxhZ3N8PTEyOCxiLmNoaWxkPWEuY2hpbGQsYj12ai5iaW5kKG51bGwsYSksZS5fcmVhY3RSZXRyeT1iLG51bGw7YT1mLnRyZWVDb250ZXh0O3lnPUxmKGUubmV4dFNpYmxpbmcpO3hnPWI7ST0hMDt6Zz1udWxsO251bGwhPT1hJiYob2dbcGcrK109cmcsb2dbcGcrK109c2csb2dbcGcrK109cWcscmc9YS5pZCxzZz1hLm92ZXJmbG93LHFnPWIpO2I9cmooYixkLmNoaWxkcmVuKTtiLmZsYWdzfD00MDk2O3JldHVybiBifWZ1bmN0aW9uIHdqKGEsYixjKXthLmxhbmVzfD1iO3ZhciBkPWEuYWx0ZXJuYXRlO251bGwhPT1kJiYoZC5sYW5lc3w9Yik7U2coYS5yZXR1cm4sYixjKX1cbmZ1bmN0aW9uIHhqKGEsYixjLGQsZSl7dmFyIGY9YS5tZW1vaXplZFN0YXRlO251bGw9PT1mP2EubWVtb2l6ZWRTdGF0ZT17aXNCYWNrd2FyZHM6YixyZW5kZXJpbmc6bnVsbCxyZW5kZXJpbmdTdGFydFRpbWU6MCxsYXN0OmQsdGFpbDpjLHRhaWxNb2RlOmV9OihmLmlzQmFja3dhcmRzPWIsZi5yZW5kZXJpbmc9bnVsbCxmLnJlbmRlcmluZ1N0YXJ0VGltZT0wLGYubGFzdD1kLGYudGFpbD1jLGYudGFpbE1vZGU9ZSl9XG5mdW5jdGlvbiB5aihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1kLnJldmVhbE9yZGVyLGY9ZC50YWlsO1lpKGEsYixkLmNoaWxkcmVuLGMpO2Q9TS5jdXJyZW50O2lmKDAhPT0oZCYyKSlkPWQmMXwyLGIuZmxhZ3N8PTEyODtlbHNle2lmKG51bGwhPT1hJiYwIT09KGEuZmxhZ3MmMTI4KSlhOmZvcihhPWIuY2hpbGQ7bnVsbCE9PWE7KXtpZigxMz09PWEudGFnKW51bGwhPT1hLm1lbW9pemVkU3RhdGUmJndqKGEsYyxiKTtlbHNlIGlmKDE5PT09YS50YWcpd2ooYSxjLGIpO2Vsc2UgaWYobnVsbCE9PWEuY2hpbGQpe2EuY2hpbGQucmV0dXJuPWE7YT1hLmNoaWxkO2NvbnRpbnVlfWlmKGE9PT1iKWJyZWFrIGE7Zm9yKDtudWxsPT09YS5zaWJsaW5nOyl7aWYobnVsbD09PWEucmV0dXJufHxhLnJldHVybj09PWIpYnJlYWsgYTthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47YT1hLnNpYmxpbmd9ZCY9MX1HKE0sZCk7aWYoMD09PShiLm1vZGUmMSkpYi5tZW1vaXplZFN0YXRlPVxubnVsbDtlbHNlIHN3aXRjaChlKXtjYXNlIFwiZm9yd2FyZHNcIjpjPWIuY2hpbGQ7Zm9yKGU9bnVsbDtudWxsIT09YzspYT1jLmFsdGVybmF0ZSxudWxsIT09YSYmbnVsbD09PU1oKGEpJiYoZT1jKSxjPWMuc2libGluZztjPWU7bnVsbD09PWM/KGU9Yi5jaGlsZCxiLmNoaWxkPW51bGwpOihlPWMuc2libGluZyxjLnNpYmxpbmc9bnVsbCk7eGooYiwhMSxlLGMsZik7YnJlYWs7Y2FzZSBcImJhY2t3YXJkc1wiOmM9bnVsbDtlPWIuY2hpbGQ7Zm9yKGIuY2hpbGQ9bnVsbDtudWxsIT09ZTspe2E9ZS5hbHRlcm5hdGU7aWYobnVsbCE9PWEmJm51bGw9PT1NaChhKSl7Yi5jaGlsZD1lO2JyZWFrfWE9ZS5zaWJsaW5nO2Uuc2libGluZz1jO2M9ZTtlPWF9eGooYiwhMCxjLG51bGwsZik7YnJlYWs7Y2FzZSBcInRvZ2V0aGVyXCI6eGooYiwhMSxudWxsLG51bGwsdm9pZCAwKTticmVhaztkZWZhdWx0OmIubWVtb2l6ZWRTdGF0ZT1udWxsfXJldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gamooYSxiKXswPT09KGIubW9kZSYxKSYmbnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5mbGFnc3w9Mil9ZnVuY3Rpb24gJGkoYSxiLGMpe251bGwhPT1hJiYoYi5kZXBlbmRlbmNpZXM9YS5kZXBlbmRlbmNpZXMpO2hofD1iLmxhbmVzO2lmKDA9PT0oYyZiLmNoaWxkTGFuZXMpKXJldHVybiBudWxsO2lmKG51bGwhPT1hJiZiLmNoaWxkIT09YS5jaGlsZCl0aHJvdyBFcnJvcihwKDE1MykpO2lmKG51bGwhPT1iLmNoaWxkKXthPWIuY2hpbGQ7Yz13aChhLGEucGVuZGluZ1Byb3BzKTtiLmNoaWxkPWM7Zm9yKGMucmV0dXJuPWI7bnVsbCE9PWEuc2libGluZzspYT1hLnNpYmxpbmcsYz1jLnNpYmxpbmc9d2goYSxhLnBlbmRpbmdQcm9wcyksYy5yZXR1cm49YjtjLnNpYmxpbmc9bnVsbH1yZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIHpqKGEsYixjKXtzd2l0Y2goYi50YWcpe2Nhc2UgMzpsaihiKTtJZygpO2JyZWFrO2Nhc2UgNTpLaChiKTticmVhaztjYXNlIDE6WmYoYi50eXBlKSYmY2coYik7YnJlYWs7Y2FzZSA0OkloKGIsYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyk7YnJlYWs7Y2FzZSAxMDp2YXIgZD1iLnR5cGUuX2NvbnRleHQsZT1iLm1lbW9pemVkUHJvcHMudmFsdWU7RyhNZyxkLl9jdXJyZW50VmFsdWUpO2QuX2N1cnJlbnRWYWx1ZT1lO2JyZWFrO2Nhc2UgMTM6ZD1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQpe2lmKG51bGwhPT1kLmRlaHlkcmF0ZWQpcmV0dXJuIEcoTSxNLmN1cnJlbnQmMSksYi5mbGFnc3w9MTI4LG51bGw7aWYoMCE9PShjJmIuY2hpbGQuY2hpbGRMYW5lcykpcmV0dXJuIHBqKGEsYixjKTtHKE0sTS5jdXJyZW50JjEpO2E9JGkoYSxiLGMpO3JldHVybiBudWxsIT09YT9hLnNpYmxpbmc6bnVsbH1HKE0sTS5jdXJyZW50JjEpO2JyZWFrO2Nhc2UgMTk6ZD0wIT09KGMmXG5iLmNoaWxkTGFuZXMpO2lmKDAhPT0oYS5mbGFncyYxMjgpKXtpZihkKXJldHVybiB5aihhLGIsYyk7Yi5mbGFnc3w9MTI4fWU9Yi5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoZS5yZW5kZXJpbmc9bnVsbCxlLnRhaWw9bnVsbCxlLmxhc3RFZmZlY3Q9bnVsbCk7RyhNLE0uY3VycmVudCk7aWYoZClicmVhaztlbHNlIHJldHVybiBudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gYi5sYW5lcz0wLGVqKGEsYixjKX1yZXR1cm4gJGkoYSxiLGMpfXZhciBBaixCaixDaixEajtcbkFqPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWIuY2hpbGQ7bnVsbCE9PWM7KXtpZig1PT09Yy50YWd8fDY9PT1jLnRhZylhLmFwcGVuZENoaWxkKGMuc3RhdGVOb2RlKTtlbHNlIGlmKDQhPT1jLnRhZyYmbnVsbCE9PWMuY2hpbGQpe2MuY2hpbGQucmV0dXJuPWM7Yz1jLmNoaWxkO2NvbnRpbnVlfWlmKGM9PT1iKWJyZWFrO2Zvcig7bnVsbD09PWMuc2libGluZzspe2lmKG51bGw9PT1jLnJldHVybnx8Yy5yZXR1cm49PT1iKXJldHVybjtjPWMucmV0dXJufWMuc2libGluZy5yZXR1cm49Yy5yZXR1cm47Yz1jLnNpYmxpbmd9fTtCaj1mdW5jdGlvbigpe307XG5Daj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLm1lbW9pemVkUHJvcHM7aWYoZSE9PWQpe2E9Yi5zdGF0ZU5vZGU7SGgoRWguY3VycmVudCk7dmFyIGY9bnVsbDtzd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6ZT1ZYShhLGUpO2Q9WWEoYSxkKTtmPVtdO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjplPUEoe30sZSx7dmFsdWU6dm9pZCAwfSk7ZD1BKHt9LGQse3ZhbHVlOnZvaWQgMH0pO2Y9W107YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6ZT1nYihhLGUpO2Q9Z2IoYSxkKTtmPVtdO2JyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiIT09dHlwZW9mIGUub25DbGljayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGQub25DbGljayYmKGEub25jbGljaz1CZil9dWIoYyxkKTt2YXIgZztjPW51bGw7Zm9yKGwgaW4gZSlpZighZC5oYXNPd25Qcm9wZXJ0eShsKSYmZS5oYXNPd25Qcm9wZXJ0eShsKSYmbnVsbCE9ZVtsXSlpZihcInN0eWxlXCI9PT1sKXt2YXIgaD1lW2xdO2ZvcihnIGluIGgpaC5oYXNPd25Qcm9wZXJ0eShnKSYmXG4oY3x8KGM9e30pLGNbZ109XCJcIil9ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIiE9PWwmJlwiY2hpbGRyZW5cIiE9PWwmJlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1sJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09bCYmXCJhdXRvRm9jdXNcIiE9PWwmJihlYS5oYXNPd25Qcm9wZXJ0eShsKT9mfHwoZj1bXSk6KGY9Znx8W10pLnB1c2gobCxudWxsKSk7Zm9yKGwgaW4gZCl7dmFyIGs9ZFtsXTtoPW51bGwhPWU/ZVtsXTp2b2lkIDA7aWYoZC5oYXNPd25Qcm9wZXJ0eShsKSYmayE9PWgmJihudWxsIT1rfHxudWxsIT1oKSlpZihcInN0eWxlXCI9PT1sKWlmKGgpe2ZvcihnIGluIGgpIWguaGFzT3duUHJvcGVydHkoZyl8fGsmJmsuaGFzT3duUHJvcGVydHkoZyl8fChjfHwoYz17fSksY1tnXT1cIlwiKTtmb3IoZyBpbiBrKWsuaGFzT3duUHJvcGVydHkoZykmJmhbZ10hPT1rW2ddJiYoY3x8KGM9e30pLGNbZ109a1tnXSl9ZWxzZSBjfHwoZnx8KGY9W10pLGYucHVzaChsLFxuYykpLGM9aztlbHNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09bD8oaz1rP2suX19odG1sOnZvaWQgMCxoPWg/aC5fX2h0bWw6dm9pZCAwLG51bGwhPWsmJmghPT1rJiYoZj1mfHxbXSkucHVzaChsLGspKTpcImNoaWxkcmVuXCI9PT1sP1wic3RyaW5nXCIhPT10eXBlb2YgayYmXCJudW1iZXJcIiE9PXR5cGVvZiBrfHwoZj1mfHxbXSkucHVzaChsLFwiXCIrayk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWwmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1sJiYoZWEuaGFzT3duUHJvcGVydHkobCk/KG51bGwhPWsmJlwib25TY3JvbGxcIj09PWwmJkQoXCJzY3JvbGxcIixhKSxmfHxoPT09a3x8KGY9W10pKTooZj1mfHxbXSkucHVzaChsLGspKX1jJiYoZj1mfHxbXSkucHVzaChcInN0eWxlXCIsYyk7dmFyIGw9ZjtpZihiLnVwZGF0ZVF1ZXVlPWwpYi5mbGFnc3w9NH19O0RqPWZ1bmN0aW9uKGEsYixjLGQpe2MhPT1kJiYoYi5mbGFnc3w9NCl9O1xuZnVuY3Rpb24gRWooYSxiKXtpZighSSlzd2l0Y2goYS50YWlsTW9kZSl7Y2FzZSBcImhpZGRlblwiOmI9YS50YWlsO2Zvcih2YXIgYz1udWxsO251bGwhPT1iOyludWxsIT09Yi5hbHRlcm5hdGUmJihjPWIpLGI9Yi5zaWJsaW5nO251bGw9PT1jP2EudGFpbD1udWxsOmMuc2libGluZz1udWxsO2JyZWFrO2Nhc2UgXCJjb2xsYXBzZWRcIjpjPWEudGFpbDtmb3IodmFyIGQ9bnVsbDtudWxsIT09YzspbnVsbCE9PWMuYWx0ZXJuYXRlJiYoZD1jKSxjPWMuc2libGluZztudWxsPT09ZD9ifHxudWxsPT09YS50YWlsP2EudGFpbD1udWxsOmEudGFpbC5zaWJsaW5nPW51bGw6ZC5zaWJsaW5nPW51bGx9fVxuZnVuY3Rpb24gUyhhKXt2YXIgYj1udWxsIT09YS5hbHRlcm5hdGUmJmEuYWx0ZXJuYXRlLmNoaWxkPT09YS5jaGlsZCxjPTAsZD0wO2lmKGIpZm9yKHZhciBlPWEuY2hpbGQ7bnVsbCE9PWU7KWN8PWUubGFuZXN8ZS5jaGlsZExhbmVzLGR8PWUuc3VidHJlZUZsYWdzJjE0NjgwMDY0LGR8PWUuZmxhZ3MmMTQ2ODAwNjQsZS5yZXR1cm49YSxlPWUuc2libGluZztlbHNlIGZvcihlPWEuY2hpbGQ7bnVsbCE9PWU7KWN8PWUubGFuZXN8ZS5jaGlsZExhbmVzLGR8PWUuc3VidHJlZUZsYWdzLGR8PWUuZmxhZ3MsZS5yZXR1cm49YSxlPWUuc2libGluZzthLnN1YnRyZWVGbGFnc3w9ZDthLmNoaWxkTGFuZXM9YztyZXR1cm4gYn1cbmZ1bmN0aW9uIEZqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wczt3ZyhiKTtzd2l0Y2goYi50YWcpe2Nhc2UgMjpjYXNlIDE2OmNhc2UgMTU6Y2FzZSAwOmNhc2UgMTE6Y2FzZSA3OmNhc2UgODpjYXNlIDEyOmNhc2UgOTpjYXNlIDE0OnJldHVybiBTKGIpLG51bGw7Y2FzZSAxOnJldHVybiBaZihiLnR5cGUpJiYkZigpLFMoYiksbnVsbDtjYXNlIDM6ZD1iLnN0YXRlTm9kZTtKaCgpO0UoV2YpO0UoSCk7T2goKTtkLnBlbmRpbmdDb250ZXh0JiYoZC5jb250ZXh0PWQucGVuZGluZ0NvbnRleHQsZC5wZW5kaW5nQ29udGV4dD1udWxsKTtpZihudWxsPT09YXx8bnVsbD09PWEuY2hpbGQpR2coYik/Yi5mbGFnc3w9NDpudWxsPT09YXx8YS5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmMD09PShiLmZsYWdzJjI1Nil8fChiLmZsYWdzfD0xMDI0LG51bGwhPT16ZyYmKEdqKHpnKSx6Zz1udWxsKSk7QmooYSxiKTtTKGIpO3JldHVybiBudWxsO2Nhc2UgNTpMaChiKTt2YXIgZT1IaChHaC5jdXJyZW50KTtcbmM9Yi50eXBlO2lmKG51bGwhPT1hJiZudWxsIT1iLnN0YXRlTm9kZSlDaihhLGIsYyxkLGUpLGEucmVmIT09Yi5yZWYmJihiLmZsYWdzfD01MTIsYi5mbGFnc3w9MjA5NzE1Mik7ZWxzZXtpZighZCl7aWYobnVsbD09PWIuc3RhdGVOb2RlKXRocm93IEVycm9yKHAoMTY2KSk7UyhiKTtyZXR1cm4gbnVsbH1hPUhoKEVoLmN1cnJlbnQpO2lmKEdnKGIpKXtkPWIuc3RhdGVOb2RlO2M9Yi50eXBlO3ZhciBmPWIubWVtb2l6ZWRQcm9wcztkW09mXT1iO2RbUGZdPWY7YT0wIT09KGIubW9kZSYxKTtzd2l0Y2goYyl7Y2FzZSBcImRpYWxvZ1wiOkQoXCJjYW5jZWxcIixkKTtEKFwiY2xvc2VcIixkKTticmVhaztjYXNlIFwiaWZyYW1lXCI6Y2FzZSBcIm9iamVjdFwiOmNhc2UgXCJlbWJlZFwiOkQoXCJsb2FkXCIsZCk7YnJlYWs7Y2FzZSBcInZpZGVvXCI6Y2FzZSBcImF1ZGlvXCI6Zm9yKGU9MDtlPGxmLmxlbmd0aDtlKyspRChsZltlXSxkKTticmVhaztjYXNlIFwic291cmNlXCI6RChcImVycm9yXCIsZCk7YnJlYWs7Y2FzZSBcImltZ1wiOmNhc2UgXCJpbWFnZVwiOmNhc2UgXCJsaW5rXCI6RChcImVycm9yXCIsXG5kKTtEKFwibG9hZFwiLGQpO2JyZWFrO2Nhc2UgXCJkZXRhaWxzXCI6RChcInRvZ2dsZVwiLGQpO2JyZWFrO2Nhc2UgXCJpbnB1dFwiOlphKGQsZik7RChcImludmFsaWRcIixkKTticmVhaztjYXNlIFwic2VsZWN0XCI6ZC5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIWYubXVsdGlwbGV9O0QoXCJpbnZhbGlkXCIsZCk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aGIoZCxmKSxEKFwiaW52YWxpZFwiLGQpfXViKGMsZik7ZT1udWxsO2Zvcih2YXIgZyBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoZykpe3ZhciBoPWZbZ107XCJjaGlsZHJlblwiPT09Zz9cInN0cmluZ1wiPT09dHlwZW9mIGg/ZC50ZXh0Q29udGVudCE9PWgmJighMCE9PWYuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZBZihkLnRleHRDb250ZW50LGgsYSksZT1bXCJjaGlsZHJlblwiLGhdKTpcIm51bWJlclwiPT09dHlwZW9mIGgmJmQudGV4dENvbnRlbnQhPT1cIlwiK2gmJighMCE9PWYuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZBZihkLnRleHRDb250ZW50LFxuaCxhKSxlPVtcImNoaWxkcmVuXCIsXCJcIitoXSk6ZWEuaGFzT3duUHJvcGVydHkoZykmJm51bGwhPWgmJlwib25TY3JvbGxcIj09PWcmJkQoXCJzY3JvbGxcIixkKX1zd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6VmEoZCk7ZGIoZCxmLCEwKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpWYShkKTtqYihkKTticmVhaztjYXNlIFwic2VsZWN0XCI6Y2FzZSBcIm9wdGlvblwiOmJyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiPT09dHlwZW9mIGYub25DbGljayYmKGQub25jbGljaz1CZil9ZD1lO2IudXBkYXRlUXVldWU9ZDtudWxsIT09ZCYmKGIuZmxhZ3N8PTQpfWVsc2V7Zz05PT09ZS5ub2RlVHlwZT9lOmUub3duZXJEb2N1bWVudDtcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWEmJihhPWtiKGMpKTtcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWE/XCJzY3JpcHRcIj09PWM/KGE9Zy5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGEuaW5uZXJIVE1MPVwiPHNjcmlwdD5cXHgzYy9zY3JpcHQ+XCIsYT1hLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCkpOlxuXCJzdHJpbmdcIj09PXR5cGVvZiBkLmlzP2E9Zy5jcmVhdGVFbGVtZW50KGMse2lzOmQuaXN9KTooYT1nLmNyZWF0ZUVsZW1lbnQoYyksXCJzZWxlY3RcIj09PWMmJihnPWEsZC5tdWx0aXBsZT9nLm11bHRpcGxlPSEwOmQuc2l6ZSYmKGcuc2l6ZT1kLnNpemUpKSk6YT1nLmNyZWF0ZUVsZW1lbnROUyhhLGMpO2FbT2ZdPWI7YVtQZl09ZDtBaihhLGIsITEsITEpO2Iuc3RhdGVOb2RlPWE7YTp7Zz12YihjLGQpO3N3aXRjaChjKXtjYXNlIFwiZGlhbG9nXCI6RChcImNhbmNlbFwiLGEpO0QoXCJjbG9zZVwiLGEpO2U9ZDticmVhaztjYXNlIFwiaWZyYW1lXCI6Y2FzZSBcIm9iamVjdFwiOmNhc2UgXCJlbWJlZFwiOkQoXCJsb2FkXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJ2aWRlb1wiOmNhc2UgXCJhdWRpb1wiOmZvcihlPTA7ZTxsZi5sZW5ndGg7ZSsrKUQobGZbZV0sYSk7ZT1kO2JyZWFrO2Nhc2UgXCJzb3VyY2VcIjpEKFwiZXJyb3JcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImltZ1wiOmNhc2UgXCJpbWFnZVwiOmNhc2UgXCJsaW5rXCI6RChcImVycm9yXCIsXG5hKTtEKFwibG9hZFwiLGEpO2U9ZDticmVhaztjYXNlIFwiZGV0YWlsc1wiOkQoXCJ0b2dnbGVcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImlucHV0XCI6WmEoYSxkKTtlPVlhKGEsZCk7RChcImludmFsaWRcIixhKTticmVhaztjYXNlIFwib3B0aW9uXCI6ZT1kO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjphLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhZC5tdWx0aXBsZX07ZT1BKHt9LGQse3ZhbHVlOnZvaWQgMH0pO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aGIoYSxkKTtlPWdiKGEsZCk7RChcImludmFsaWRcIixhKTticmVhaztkZWZhdWx0OmU9ZH11YihjLGUpO2g9ZTtmb3IoZiBpbiBoKWlmKGguaGFzT3duUHJvcGVydHkoZikpe3ZhciBrPWhbZl07XCJzdHlsZVwiPT09Zj9zYihhLGspOlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWY/KGs9az9rLl9faHRtbDp2b2lkIDAsbnVsbCE9ayYmbmIoYSxrKSk6XCJjaGlsZHJlblwiPT09Zj9cInN0cmluZ1wiPT09dHlwZW9mIGs/KFwidGV4dGFyZWFcIiE9PVxuY3x8XCJcIiE9PWspJiZvYihhLGspOlwibnVtYmVyXCI9PT10eXBlb2YgayYmb2IoYSxcIlwiK2spOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1mJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09ZiYmXCJhdXRvRm9jdXNcIiE9PWYmJihlYS5oYXNPd25Qcm9wZXJ0eShmKT9udWxsIT1rJiZcIm9uU2Nyb2xsXCI9PT1mJiZEKFwic2Nyb2xsXCIsYSk6bnVsbCE9ayYmdGEoYSxmLGssZykpfXN3aXRjaChjKXtjYXNlIFwiaW5wdXRcIjpWYShhKTtkYihhLGQsITEpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOlZhKGEpO2piKGEpO2JyZWFrO2Nhc2UgXCJvcHRpb25cIjpudWxsIT1kLnZhbHVlJiZhLnNldEF0dHJpYnV0ZShcInZhbHVlXCIsXCJcIitTYShkLnZhbHVlKSk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmEubXVsdGlwbGU9ISFkLm11bHRpcGxlO2Y9ZC52YWx1ZTtudWxsIT1mP2ZiKGEsISFkLm11bHRpcGxlLGYsITEpOm51bGwhPWQuZGVmYXVsdFZhbHVlJiZmYihhLCEhZC5tdWx0aXBsZSxkLmRlZmF1bHRWYWx1ZSxcbiEwKTticmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLm9uQ2xpY2smJihhLm9uY2xpY2s9QmYpfXN3aXRjaChjKXtjYXNlIFwiYnV0dG9uXCI6Y2FzZSBcImlucHV0XCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJ0ZXh0YXJlYVwiOmQ9ISFkLmF1dG9Gb2N1czticmVhayBhO2Nhc2UgXCJpbWdcIjpkPSEwO2JyZWFrIGE7ZGVmYXVsdDpkPSExfX1kJiYoYi5mbGFnc3w9NCl9bnVsbCE9PWIucmVmJiYoYi5mbGFnc3w9NTEyLGIuZmxhZ3N8PTIwOTcxNTIpfVMoYik7cmV0dXJuIG51bGw7Y2FzZSA2OmlmKGEmJm51bGwhPWIuc3RhdGVOb2RlKURqKGEsYixhLm1lbW9pemVkUHJvcHMsZCk7ZWxzZXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGQmJm51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihwKDE2NikpO2M9SGgoR2guY3VycmVudCk7SGgoRWguY3VycmVudCk7aWYoR2coYikpe2Q9Yi5zdGF0ZU5vZGU7Yz1iLm1lbW9pemVkUHJvcHM7ZFtPZl09YjtpZihmPWQubm9kZVZhbHVlIT09YylpZihhPVxueGcsbnVsbCE9PWEpc3dpdGNoKGEudGFnKXtjYXNlIDM6QWYoZC5ub2RlVmFsdWUsYywwIT09KGEubW9kZSYxKSk7YnJlYWs7Y2FzZSA1OiEwIT09YS5tZW1vaXplZFByb3BzLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC5ub2RlVmFsdWUsYywwIT09KGEubW9kZSYxKSl9ZiYmKGIuZmxhZ3N8PTQpfWVsc2UgZD0oOT09PWMubm9kZVR5cGU/YzpjLm93bmVyRG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKGQpLGRbT2ZdPWIsYi5zdGF0ZU5vZGU9ZH1TKGIpO3JldHVybiBudWxsO2Nhc2UgMTM6RShNKTtkPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09YXx8bnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZS5kZWh5ZHJhdGVkKXtpZihJJiZudWxsIT09eWcmJjAhPT0oYi5tb2RlJjEpJiYwPT09KGIuZmxhZ3MmMTI4KSlIZygpLElnKCksYi5mbGFnc3w9OTg1NjAsZj0hMTtlbHNlIGlmKGY9R2coYiksbnVsbCE9PWQmJm51bGwhPT1kLmRlaHlkcmF0ZWQpe2lmKG51bGw9PT1cbmEpe2lmKCFmKXRocm93IEVycm9yKHAoMzE4KSk7Zj1iLm1lbW9pemVkU3RhdGU7Zj1udWxsIT09Zj9mLmRlaHlkcmF0ZWQ6bnVsbDtpZighZil0aHJvdyBFcnJvcihwKDMxNykpO2ZbT2ZdPWJ9ZWxzZSBJZygpLDA9PT0oYi5mbGFncyYxMjgpJiYoYi5tZW1vaXplZFN0YXRlPW51bGwpLGIuZmxhZ3N8PTQ7UyhiKTtmPSExfWVsc2UgbnVsbCE9PXpnJiYoR2ooemcpLHpnPW51bGwpLGY9ITA7aWYoIWYpcmV0dXJuIGIuZmxhZ3MmNjU1MzY/YjpudWxsfWlmKDAhPT0oYi5mbGFncyYxMjgpKXJldHVybiBiLmxhbmVzPWMsYjtkPW51bGwhPT1kO2QhPT0obnVsbCE9PWEmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUpJiZkJiYoYi5jaGlsZC5mbGFnc3w9ODE5MiwwIT09KGIubW9kZSYxKSYmKG51bGw9PT1hfHwwIT09KE0uY3VycmVudCYxKT8wPT09VCYmKFQ9Myk6dWooKSkpO251bGwhPT1iLnVwZGF0ZVF1ZXVlJiYoYi5mbGFnc3w9NCk7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDQ6cmV0dXJuIEpoKCksXG5CaihhLGIpLG51bGw9PT1hJiZzZihiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxTKGIpLG51bGw7Y2FzZSAxMDpyZXR1cm4gUmcoYi50eXBlLl9jb250ZXh0KSxTKGIpLG51bGw7Y2FzZSAxNzpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxTKGIpLG51bGw7Y2FzZSAxOTpFKE0pO2Y9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT1mKXJldHVybiBTKGIpLG51bGw7ZD0wIT09KGIuZmxhZ3MmMTI4KTtnPWYucmVuZGVyaW5nO2lmKG51bGw9PT1nKWlmKGQpRWooZiwhMSk7ZWxzZXtpZigwIT09VHx8bnVsbCE9PWEmJjAhPT0oYS5mbGFncyYxMjgpKWZvcihhPWIuY2hpbGQ7bnVsbCE9PWE7KXtnPU1oKGEpO2lmKG51bGwhPT1nKXtiLmZsYWdzfD0xMjg7RWooZiwhMSk7ZD1nLnVwZGF0ZVF1ZXVlO251bGwhPT1kJiYoYi51cGRhdGVRdWV1ZT1kLGIuZmxhZ3N8PTQpO2Iuc3VidHJlZUZsYWdzPTA7ZD1jO2ZvcihjPWIuY2hpbGQ7bnVsbCE9PWM7KWY9YyxhPWQsZi5mbGFncyY9MTQ2ODAwNjYsXG5nPWYuYWx0ZXJuYXRlLG51bGw9PT1nPyhmLmNoaWxkTGFuZXM9MCxmLmxhbmVzPWEsZi5jaGlsZD1udWxsLGYuc3VidHJlZUZsYWdzPTAsZi5tZW1vaXplZFByb3BzPW51bGwsZi5tZW1vaXplZFN0YXRlPW51bGwsZi51cGRhdGVRdWV1ZT1udWxsLGYuZGVwZW5kZW5jaWVzPW51bGwsZi5zdGF0ZU5vZGU9bnVsbCk6KGYuY2hpbGRMYW5lcz1nLmNoaWxkTGFuZXMsZi5sYW5lcz1nLmxhbmVzLGYuY2hpbGQ9Zy5jaGlsZCxmLnN1YnRyZWVGbGFncz0wLGYuZGVsZXRpb25zPW51bGwsZi5tZW1vaXplZFByb3BzPWcubWVtb2l6ZWRQcm9wcyxmLm1lbW9pemVkU3RhdGU9Zy5tZW1vaXplZFN0YXRlLGYudXBkYXRlUXVldWU9Zy51cGRhdGVRdWV1ZSxmLnR5cGU9Zy50eXBlLGE9Zy5kZXBlbmRlbmNpZXMsZi5kZXBlbmRlbmNpZXM9bnVsbD09PWE/bnVsbDp7bGFuZXM6YS5sYW5lcyxmaXJzdENvbnRleHQ6YS5maXJzdENvbnRleHR9KSxjPWMuc2libGluZztHKE0sTS5jdXJyZW50JjF8Mik7cmV0dXJuIGIuY2hpbGR9YT1cbmEuc2libGluZ31udWxsIT09Zi50YWlsJiZCKCk+SGomJihiLmZsYWdzfD0xMjgsZD0hMCxFaihmLCExKSxiLmxhbmVzPTQxOTQzMDQpfWVsc2V7aWYoIWQpaWYoYT1NaChnKSxudWxsIT09YSl7aWYoYi5mbGFnc3w9MTI4LGQ9ITAsYz1hLnVwZGF0ZVF1ZXVlLG51bGwhPT1jJiYoYi51cGRhdGVRdWV1ZT1jLGIuZmxhZ3N8PTQpLEVqKGYsITApLG51bGw9PT1mLnRhaWwmJlwiaGlkZGVuXCI9PT1mLnRhaWxNb2RlJiYhZy5hbHRlcm5hdGUmJiFJKXJldHVybiBTKGIpLG51bGx9ZWxzZSAyKkIoKS1mLnJlbmRlcmluZ1N0YXJ0VGltZT5IaiYmMTA3Mzc0MTgyNCE9PWMmJihiLmZsYWdzfD0xMjgsZD0hMCxFaihmLCExKSxiLmxhbmVzPTQxOTQzMDQpO2YuaXNCYWNrd2FyZHM/KGcuc2libGluZz1iLmNoaWxkLGIuY2hpbGQ9Zyk6KGM9Zi5sYXN0LG51bGwhPT1jP2Muc2libGluZz1nOmIuY2hpbGQ9ZyxmLmxhc3Q9Zyl9aWYobnVsbCE9PWYudGFpbClyZXR1cm4gYj1mLnRhaWwsZi5yZW5kZXJpbmc9XG5iLGYudGFpbD1iLnNpYmxpbmcsZi5yZW5kZXJpbmdTdGFydFRpbWU9QigpLGIuc2libGluZz1udWxsLGM9TS5jdXJyZW50LEcoTSxkP2MmMXwyOmMmMSksYjtTKGIpO3JldHVybiBudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gSWooKSxkPW51bGwhPT1iLm1lbW9pemVkU3RhdGUsbnVsbCE9PWEmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUhPT1kJiYoYi5mbGFnc3w9ODE5MiksZCYmMCE9PShiLm1vZGUmMSk/MCE9PShnaiYxMDczNzQxODI0KSYmKFMoYiksYi5zdWJ0cmVlRmxhZ3MmNiYmKGIuZmxhZ3N8PTgxOTIpKTpTKGIpLG51bGw7Y2FzZSAyNDpyZXR1cm4gbnVsbDtjYXNlIDI1OnJldHVybiBudWxsfXRocm93IEVycm9yKHAoMTU2LGIudGFnKSk7fVxuZnVuY3Rpb24gSmooYSxiKXt3ZyhiKTtzd2l0Y2goYi50YWcpe2Nhc2UgMTpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxhPWIuZmxhZ3MsYSY2NTUzNj8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDM6cmV0dXJuIEpoKCksRShXZiksRShIKSxPaCgpLGE9Yi5mbGFncywwIT09KGEmNjU1MzYpJiYwPT09KGEmMTI4KT8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDU6cmV0dXJuIExoKGIpLG51bGw7Y2FzZSAxMzpFKE0pO2E9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiZudWxsIT09YS5kZWh5ZHJhdGVkKXtpZihudWxsPT09Yi5hbHRlcm5hdGUpdGhyb3cgRXJyb3IocCgzNDApKTtJZygpfWE9Yi5mbGFncztyZXR1cm4gYSY2NTUzNj8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDE5OnJldHVybiBFKE0pLG51bGw7Y2FzZSA0OnJldHVybiBKaCgpLG51bGw7Y2FzZSAxMDpyZXR1cm4gUmcoYi50eXBlLl9jb250ZXh0KSxudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gSWooKSxcbm51bGw7Y2FzZSAyNDpyZXR1cm4gbnVsbDtkZWZhdWx0OnJldHVybiBudWxsfX12YXIgS2o9ITEsVT0hMSxMaj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgV2Vha1NldD9XZWFrU2V0OlNldCxWPW51bGw7ZnVuY3Rpb24gTWooYSxiKXt2YXIgYz1hLnJlZjtpZihudWxsIT09YylpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYyl0cnl7YyhudWxsKX1jYXRjaChkKXtXKGEsYixkKX1lbHNlIGMuY3VycmVudD1udWxsfWZ1bmN0aW9uIE5qKGEsYixjKXt0cnl7YygpfWNhdGNoKGQpe1coYSxiLGQpfX12YXIgT2o9ITE7XG5mdW5jdGlvbiBQaihhLGIpe0NmPWRkO2E9TWUoKTtpZihOZShhKSl7aWYoXCJzZWxlY3Rpb25TdGFydFwiaW4gYSl2YXIgYz17c3RhcnQ6YS5zZWxlY3Rpb25TdGFydCxlbmQ6YS5zZWxlY3Rpb25FbmR9O2Vsc2UgYTp7Yz0oYz1hLm93bmVyRG9jdW1lbnQpJiZjLmRlZmF1bHRWaWV3fHx3aW5kb3c7dmFyIGQ9Yy5nZXRTZWxlY3Rpb24mJmMuZ2V0U2VsZWN0aW9uKCk7aWYoZCYmMCE9PWQucmFuZ2VDb3VudCl7Yz1kLmFuY2hvck5vZGU7dmFyIGU9ZC5hbmNob3JPZmZzZXQsZj1kLmZvY3VzTm9kZTtkPWQuZm9jdXNPZmZzZXQ7dHJ5e2Mubm9kZVR5cGUsZi5ub2RlVHlwZX1jYXRjaChGKXtjPW51bGw7YnJlYWsgYX12YXIgZz0wLGg9LTEsaz0tMSxsPTAsbT0wLHE9YSxyPW51bGw7Yjpmb3IoOzspe2Zvcih2YXIgeTs7KXtxIT09Y3x8MCE9PWUmJjMhPT1xLm5vZGVUeXBlfHwoaD1nK2UpO3EhPT1mfHwwIT09ZCYmMyE9PXEubm9kZVR5cGV8fChrPWcrZCk7Mz09PXEubm9kZVR5cGUmJihnKz1cbnEubm9kZVZhbHVlLmxlbmd0aCk7aWYobnVsbD09PSh5PXEuZmlyc3RDaGlsZCkpYnJlYWs7cj1xO3E9eX1mb3IoOzspe2lmKHE9PT1hKWJyZWFrIGI7cj09PWMmJisrbD09PWUmJihoPWcpO3I9PT1mJiYrK209PT1kJiYoaz1nKTtpZihudWxsIT09KHk9cS5uZXh0U2libGluZykpYnJlYWs7cT1yO3I9cS5wYXJlbnROb2RlfXE9eX1jPS0xPT09aHx8LTE9PT1rP251bGw6e3N0YXJ0OmgsZW5kOmt9fWVsc2UgYz1udWxsfWM9Y3x8e3N0YXJ0OjAsZW5kOjB9fWVsc2UgYz1udWxsO0RmPXtmb2N1c2VkRWxlbTphLHNlbGVjdGlvblJhbmdlOmN9O2RkPSExO2ZvcihWPWI7bnVsbCE9PVY7KWlmKGI9VixhPWIuY2hpbGQsMCE9PShiLnN1YnRyZWVGbGFncyYxMDI4KSYmbnVsbCE9PWEpYS5yZXR1cm49YixWPWE7ZWxzZSBmb3IoO251bGwhPT1WOyl7Yj1WO3RyeXt2YXIgbj1iLmFsdGVybmF0ZTtpZigwIT09KGIuZmxhZ3MmMTAyNCkpc3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmJyZWFrO1xuY2FzZSAxOmlmKG51bGwhPT1uKXt2YXIgdD1uLm1lbW9pemVkUHJvcHMsSj1uLm1lbW9pemVkU3RhdGUseD1iLnN0YXRlTm9kZSx3PXguZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoYi5lbGVtZW50VHlwZT09PWIudHlwZT90OkxnKGIudHlwZSx0KSxKKTt4Ll9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlPXd9YnJlYWs7Y2FzZSAzOnZhciB1PWIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87MT09PXUubm9kZVR5cGU/dS50ZXh0Q29udGVudD1cIlwiOjk9PT11Lm5vZGVUeXBlJiZ1LmRvY3VtZW50RWxlbWVudCYmdS5yZW1vdmVDaGlsZCh1LmRvY3VtZW50RWxlbWVudCk7YnJlYWs7Y2FzZSA1OmNhc2UgNjpjYXNlIDQ6Y2FzZSAxNzpicmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMTYzKSk7fX1jYXRjaChGKXtXKGIsYi5yZXR1cm4sRil9YT1iLnNpYmxpbmc7aWYobnVsbCE9PWEpe2EucmV0dXJuPWIucmV0dXJuO1Y9YTticmVha31WPWIucmV0dXJufW49T2o7T2o9ITE7cmV0dXJuIG59XG5mdW5jdGlvbiBRaihhLGIsYyl7dmFyIGQ9Yi51cGRhdGVRdWV1ZTtkPW51bGwhPT1kP2QubGFzdEVmZmVjdDpudWxsO2lmKG51bGwhPT1kKXt2YXIgZT1kPWQubmV4dDtkb3tpZigoZS50YWcmYSk9PT1hKXt2YXIgZj1lLmRlc3Ryb3k7ZS5kZXN0cm95PXZvaWQgMDt2b2lkIDAhPT1mJiZOaihiLGMsZil9ZT1lLm5leHR9d2hpbGUoZSE9PWQpfX1mdW5jdGlvbiBSaihhLGIpe2I9Yi51cGRhdGVRdWV1ZTtiPW51bGwhPT1iP2IubGFzdEVmZmVjdDpudWxsO2lmKG51bGwhPT1iKXt2YXIgYz1iPWIubmV4dDtkb3tpZigoYy50YWcmYSk9PT1hKXt2YXIgZD1jLmNyZWF0ZTtjLmRlc3Ryb3k9ZCgpfWM9Yy5uZXh0fXdoaWxlKGMhPT1iKX19ZnVuY3Rpb24gU2ooYSl7dmFyIGI9YS5yZWY7aWYobnVsbCE9PWIpe3ZhciBjPWEuc3RhdGVOb2RlO3N3aXRjaChhLnRhZyl7Y2FzZSA1OmE9YzticmVhaztkZWZhdWx0OmE9Y31cImZ1bmN0aW9uXCI9PT10eXBlb2YgYj9iKGEpOmIuY3VycmVudD1hfX1cbmZ1bmN0aW9uIFRqKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO251bGwhPT1iJiYoYS5hbHRlcm5hdGU9bnVsbCxUaihiKSk7YS5jaGlsZD1udWxsO2EuZGVsZXRpb25zPW51bGw7YS5zaWJsaW5nPW51bGw7NT09PWEudGFnJiYoYj1hLnN0YXRlTm9kZSxudWxsIT09YiYmKGRlbGV0ZSBiW09mXSxkZWxldGUgYltQZl0sZGVsZXRlIGJbb2ZdLGRlbGV0ZSBiW1FmXSxkZWxldGUgYltSZl0pKTthLnN0YXRlTm9kZT1udWxsO2EucmV0dXJuPW51bGw7YS5kZXBlbmRlbmNpZXM9bnVsbDthLm1lbW9pemVkUHJvcHM9bnVsbDthLm1lbW9pemVkU3RhdGU9bnVsbDthLnBlbmRpbmdQcm9wcz1udWxsO2Euc3RhdGVOb2RlPW51bGw7YS51cGRhdGVRdWV1ZT1udWxsfWZ1bmN0aW9uIFVqKGEpe3JldHVybiA1PT09YS50YWd8fDM9PT1hLnRhZ3x8ND09PWEudGFnfVxuZnVuY3Rpb24gVmooYSl7YTpmb3IoOzspe2Zvcig7bnVsbD09PWEuc2libGluZzspe2lmKG51bGw9PT1hLnJldHVybnx8VWooYS5yZXR1cm4pKXJldHVybiBudWxsO2E9YS5yZXR1cm59YS5zaWJsaW5nLnJldHVybj1hLnJldHVybjtmb3IoYT1hLnNpYmxpbmc7NSE9PWEudGFnJiY2IT09YS50YWcmJjE4IT09YS50YWc7KXtpZihhLmZsYWdzJjIpY29udGludWUgYTtpZihudWxsPT09YS5jaGlsZHx8ND09PWEudGFnKWNvbnRpbnVlIGE7ZWxzZSBhLmNoaWxkLnJldHVybj1hLGE9YS5jaGlsZH1pZighKGEuZmxhZ3MmMikpcmV0dXJuIGEuc3RhdGVOb2RlfX1cbmZ1bmN0aW9uIFdqKGEsYixjKXt2YXIgZD1hLnRhZztpZig1PT09ZHx8Nj09PWQpYT1hLnN0YXRlTm9kZSxiPzg9PT1jLm5vZGVUeXBlP2MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiKTpjLmluc2VydEJlZm9yZShhLGIpOig4PT09Yy5ub2RlVHlwZT8oYj1jLnBhcmVudE5vZGUsYi5pbnNlcnRCZWZvcmUoYSxjKSk6KGI9YyxiLmFwcGVuZENoaWxkKGEpKSxjPWMuX3JlYWN0Um9vdENvbnRhaW5lcixudWxsIT09YyYmdm9pZCAwIT09Y3x8bnVsbCE9PWIub25jbGlja3x8KGIub25jbGljaz1CZikpO2Vsc2UgaWYoNCE9PWQmJihhPWEuY2hpbGQsbnVsbCE9PWEpKWZvcihXaihhLGIsYyksYT1hLnNpYmxpbmc7bnVsbCE9PWE7KVdqKGEsYixjKSxhPWEuc2libGluZ31cbmZ1bmN0aW9uIFhqKGEsYixjKXt2YXIgZD1hLnRhZztpZig1PT09ZHx8Nj09PWQpYT1hLnN0YXRlTm9kZSxiP2MuaW5zZXJ0QmVmb3JlKGEsYik6Yy5hcHBlbmRDaGlsZChhKTtlbHNlIGlmKDQhPT1kJiYoYT1hLmNoaWxkLG51bGwhPT1hKSlmb3IoWGooYSxiLGMpLGE9YS5zaWJsaW5nO251bGwhPT1hOylYaihhLGIsYyksYT1hLnNpYmxpbmd9dmFyIFg9bnVsbCxZaj0hMTtmdW5jdGlvbiBaaihhLGIsYyl7Zm9yKGM9Yy5jaGlsZDtudWxsIT09YzspYWsoYSxiLGMpLGM9Yy5zaWJsaW5nfVxuZnVuY3Rpb24gYWsoYSxiLGMpe2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Db21taXRGaWJlclVubW91bnQpdHJ5e2xjLm9uQ29tbWl0RmliZXJVbm1vdW50KGtjLGMpfWNhdGNoKGgpe31zd2l0Y2goYy50YWcpe2Nhc2UgNTpVfHxNaihjLGIpO2Nhc2UgNjp2YXIgZD1YLGU9WWo7WD1udWxsO1pqKGEsYixjKTtYPWQ7WWo9ZTtudWxsIT09WCYmKFlqPyhhPVgsYz1jLnN0YXRlTm9kZSw4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyk6YS5yZW1vdmVDaGlsZChjKSk6WC5yZW1vdmVDaGlsZChjLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgMTg6bnVsbCE9PVgmJihZaj8oYT1YLGM9Yy5zdGF0ZU5vZGUsOD09PWEubm9kZVR5cGU/S2YoYS5wYXJlbnROb2RlLGMpOjE9PT1hLm5vZGVUeXBlJiZLZihhLGMpLGJkKGEpKTpLZihYLGMuc3RhdGVOb2RlKSk7YnJlYWs7Y2FzZSA0OmQ9WDtlPVlqO1g9Yy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztZaj0hMDtcblpqKGEsYixjKTtYPWQ7WWo9ZTticmVhaztjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6aWYoIVUmJihkPWMudXBkYXRlUXVldWUsbnVsbCE9PWQmJihkPWQubGFzdEVmZmVjdCxudWxsIT09ZCkpKXtlPWQ9ZC5uZXh0O2Rve3ZhciBmPWUsZz1mLmRlc3Ryb3k7Zj1mLnRhZzt2b2lkIDAhPT1nJiYoMCE9PShmJjIpP05qKGMsYixnKTowIT09KGYmNCkmJk5qKGMsYixnKSk7ZT1lLm5leHR9d2hpbGUoZSE9PWQpfVpqKGEsYixjKTticmVhaztjYXNlIDE6aWYoIVUmJihNaihjLGIpLGQ9Yy5zdGF0ZU5vZGUsXCJmdW5jdGlvblwiPT09dHlwZW9mIGQuY29tcG9uZW50V2lsbFVubW91bnQpKXRyeXtkLnByb3BzPWMubWVtb2l6ZWRQcm9wcyxkLnN0YXRlPWMubWVtb2l6ZWRTdGF0ZSxkLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goaCl7VyhjLGIsaCl9WmooYSxiLGMpO2JyZWFrO2Nhc2UgMjE6WmooYSxiLGMpO2JyZWFrO2Nhc2UgMjI6Yy5tb2RlJjE/KFU9KGQ9VSl8fG51bGwhPT1cbmMubWVtb2l6ZWRTdGF0ZSxaaihhLGIsYyksVT1kKTpaaihhLGIsYyk7YnJlYWs7ZGVmYXVsdDpaaihhLGIsYyl9fWZ1bmN0aW9uIGJrKGEpe3ZhciBiPWEudXBkYXRlUXVldWU7aWYobnVsbCE9PWIpe2EudXBkYXRlUXVldWU9bnVsbDt2YXIgYz1hLnN0YXRlTm9kZTtudWxsPT09YyYmKGM9YS5zdGF0ZU5vZGU9bmV3IExqKTtiLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGQ9Y2suYmluZChudWxsLGEsYik7Yy5oYXMoYil8fChjLmFkZChiKSxiLnRoZW4oZCxkKSl9KX19XG5mdW5jdGlvbiBkayhhLGIpe3ZhciBjPWIuZGVsZXRpb25zO2lmKG51bGwhPT1jKWZvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdO3RyeXt2YXIgZj1hLGc9YixoPWc7YTpmb3IoO251bGwhPT1oOyl7c3dpdGNoKGgudGFnKXtjYXNlIDU6WD1oLnN0YXRlTm9kZTtZaj0hMTticmVhayBhO2Nhc2UgMzpYPWguc3RhdGVOb2RlLmNvbnRhaW5lckluZm87WWo9ITA7YnJlYWsgYTtjYXNlIDQ6WD1oLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1lqPSEwO2JyZWFrIGF9aD1oLnJldHVybn1pZihudWxsPT09WCl0aHJvdyBFcnJvcihwKDE2MCkpO2FrKGYsZyxlKTtYPW51bGw7WWo9ITE7dmFyIGs9ZS5hbHRlcm5hdGU7bnVsbCE9PWsmJihrLnJldHVybj1udWxsKTtlLnJldHVybj1udWxsfWNhdGNoKGwpe1coZSxiLGwpfX1pZihiLnN1YnRyZWVGbGFncyYxMjg1NClmb3IoYj1iLmNoaWxkO251bGwhPT1iOyllayhiLGEpLGI9Yi5zaWJsaW5nfVxuZnVuY3Rpb24gZWsoYSxiKXt2YXIgYz1hLmFsdGVybmF0ZSxkPWEuZmxhZ3M7c3dpdGNoKGEudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6ZGsoYixhKTtmayhhKTtpZihkJjQpe3RyeXtRaigzLGEsYS5yZXR1cm4pLFJqKDMsYSl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfXRyeXtRaig1LGEsYS5yZXR1cm4pfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSAxOmRrKGIsYSk7ZmsoYSk7ZCY1MTImJm51bGwhPT1jJiZNaihjLGMucmV0dXJuKTticmVhaztjYXNlIDU6ZGsoYixhKTtmayhhKTtkJjUxMiYmbnVsbCE9PWMmJk1qKGMsYy5yZXR1cm4pO2lmKGEuZmxhZ3MmMzIpe3ZhciBlPWEuc3RhdGVOb2RlO3RyeXtvYihlLFwiXCIpfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19aWYoZCY0JiYoZT1hLnN0YXRlTm9kZSxudWxsIT1lKSl7dmFyIGY9YS5tZW1vaXplZFByb3BzLGc9bnVsbCE9PWM/Yy5tZW1vaXplZFByb3BzOmYsaD1hLnR5cGUsaz1hLnVwZGF0ZVF1ZXVlO1xuYS51cGRhdGVRdWV1ZT1udWxsO2lmKG51bGwhPT1rKXRyeXtcImlucHV0XCI9PT1oJiZcInJhZGlvXCI9PT1mLnR5cGUmJm51bGwhPWYubmFtZSYmYWIoZSxmKTt2YihoLGcpO3ZhciBsPXZiKGgsZik7Zm9yKGc9MDtnPGsubGVuZ3RoO2crPTIpe3ZhciBtPWtbZ10scT1rW2crMV07XCJzdHlsZVwiPT09bT9zYihlLHEpOlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PW0/bmIoZSxxKTpcImNoaWxkcmVuXCI9PT1tP29iKGUscSk6dGEoZSxtLHEsbCl9c3dpdGNoKGgpe2Nhc2UgXCJpbnB1dFwiOmJiKGUsZik7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aWIoZSxmKTticmVhaztjYXNlIFwic2VsZWN0XCI6dmFyIHI9ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlO2UuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZT0hIWYubXVsdGlwbGU7dmFyIHk9Zi52YWx1ZTtudWxsIT15P2ZiKGUsISFmLm11bHRpcGxlLHksITEpOnIhPT0hIWYubXVsdGlwbGUmJihudWxsIT1mLmRlZmF1bHRWYWx1ZT9mYihlLCEhZi5tdWx0aXBsZSxcbmYuZGVmYXVsdFZhbHVlLCEwKTpmYihlLCEhZi5tdWx0aXBsZSxmLm11bHRpcGxlP1tdOlwiXCIsITEpKX1lW1BmXT1mfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSA2OmRrKGIsYSk7ZmsoYSk7aWYoZCY0KXtpZihudWxsPT09YS5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IocCgxNjIpKTtlPWEuc3RhdGVOb2RlO2Y9YS5tZW1vaXplZFByb3BzO3RyeXtlLm5vZGVWYWx1ZT1mfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSAzOmRrKGIsYSk7ZmsoYSk7aWYoZCY0JiZudWxsIT09YyYmYy5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl0cnl7YmQoYi5jb250YWluZXJJbmZvKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9YnJlYWs7Y2FzZSA0OmRrKGIsYSk7ZmsoYSk7YnJlYWs7Y2FzZSAxMzpkayhiLGEpO2ZrKGEpO2U9YS5jaGlsZDtlLmZsYWdzJjgxOTImJihmPW51bGwhPT1lLm1lbW9pemVkU3RhdGUsZS5zdGF0ZU5vZGUuaXNIaWRkZW49ZiwhZnx8XG5udWxsIT09ZS5hbHRlcm5hdGUmJm51bGwhPT1lLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlfHwoZ2s9QigpKSk7ZCY0JiZiayhhKTticmVhaztjYXNlIDIyOm09bnVsbCE9PWMmJm51bGwhPT1jLm1lbW9pemVkU3RhdGU7YS5tb2RlJjE/KFU9KGw9VSl8fG0sZGsoYixhKSxVPWwpOmRrKGIsYSk7ZmsoYSk7aWYoZCY4MTkyKXtsPW51bGwhPT1hLm1lbW9pemVkU3RhdGU7aWYoKGEuc3RhdGVOb2RlLmlzSGlkZGVuPWwpJiYhbSYmMCE9PShhLm1vZGUmMSkpZm9yKFY9YSxtPWEuY2hpbGQ7bnVsbCE9PW07KXtmb3IocT1WPW07bnVsbCE9PVY7KXtyPVY7eT1yLmNoaWxkO3N3aXRjaChyLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OlFqKDQscixyLnJldHVybik7YnJlYWs7Y2FzZSAxOk1qKHIsci5yZXR1cm4pO3ZhciBuPXIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBuLmNvbXBvbmVudFdpbGxVbm1vdW50KXtkPXI7Yz1yLnJldHVybjt0cnl7Yj1kLG4ucHJvcHM9XG5iLm1lbW9pemVkUHJvcHMsbi5zdGF0ZT1iLm1lbW9pemVkU3RhdGUsbi5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKHQpe1coZCxjLHQpfX1icmVhaztjYXNlIDU6TWoocixyLnJldHVybik7YnJlYWs7Y2FzZSAyMjppZihudWxsIT09ci5tZW1vaXplZFN0YXRlKXtoayhxKTtjb250aW51ZX19bnVsbCE9PXk/KHkucmV0dXJuPXIsVj15KTpoayhxKX1tPW0uc2libGluZ31hOmZvcihtPW51bGwscT1hOzspe2lmKDU9PT1xLnRhZyl7aWYobnVsbD09PW0pe209cTt0cnl7ZT1xLnN0YXRlTm9kZSxsPyhmPWUuc3R5bGUsXCJmdW5jdGlvblwiPT09dHlwZW9mIGYuc2V0UHJvcGVydHk/Zi5zZXRQcm9wZXJ0eShcImRpc3BsYXlcIixcIm5vbmVcIixcImltcG9ydGFudFwiKTpmLmRpc3BsYXk9XCJub25lXCIpOihoPXEuc3RhdGVOb2RlLGs9cS5tZW1vaXplZFByb3BzLnN0eWxlLGc9dm9pZCAwIT09ayYmbnVsbCE9PWsmJmsuaGFzT3duUHJvcGVydHkoXCJkaXNwbGF5XCIpP2suZGlzcGxheTpudWxsLGguc3R5bGUuZGlzcGxheT1cbnJiKFwiZGlzcGxheVwiLGcpKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fX1lbHNlIGlmKDY9PT1xLnRhZyl7aWYobnVsbD09PW0pdHJ5e3Euc3RhdGVOb2RlLm5vZGVWYWx1ZT1sP1wiXCI6cS5tZW1vaXplZFByb3BzfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19ZWxzZSBpZigoMjIhPT1xLnRhZyYmMjMhPT1xLnRhZ3x8bnVsbD09PXEubWVtb2l6ZWRTdGF0ZXx8cT09PWEpJiZudWxsIT09cS5jaGlsZCl7cS5jaGlsZC5yZXR1cm49cTtxPXEuY2hpbGQ7Y29udGludWV9aWYocT09PWEpYnJlYWsgYTtmb3IoO251bGw9PT1xLnNpYmxpbmc7KXtpZihudWxsPT09cS5yZXR1cm58fHEucmV0dXJuPT09YSlicmVhayBhO209PT1xJiYobT1udWxsKTtxPXEucmV0dXJufW09PT1xJiYobT1udWxsKTtxLnNpYmxpbmcucmV0dXJuPXEucmV0dXJuO3E9cS5zaWJsaW5nfX1icmVhaztjYXNlIDE5OmRrKGIsYSk7ZmsoYSk7ZCY0JiZiayhhKTticmVhaztjYXNlIDIxOmJyZWFrO2RlZmF1bHQ6ZGsoYixcbmEpLGZrKGEpfX1mdW5jdGlvbiBmayhhKXt2YXIgYj1hLmZsYWdzO2lmKGImMil7dHJ5e2E6e2Zvcih2YXIgYz1hLnJldHVybjtudWxsIT09Yzspe2lmKFVqKGMpKXt2YXIgZD1jO2JyZWFrIGF9Yz1jLnJldHVybn10aHJvdyBFcnJvcihwKDE2MCkpO31zd2l0Y2goZC50YWcpe2Nhc2UgNTp2YXIgZT1kLnN0YXRlTm9kZTtkLmZsYWdzJjMyJiYob2IoZSxcIlwiKSxkLmZsYWdzJj0tMzMpO3ZhciBmPVZqKGEpO1hqKGEsZixlKTticmVhaztjYXNlIDM6Y2FzZSA0OnZhciBnPWQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8saD1WaihhKTtXaihhLGgsZyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MSkpO319Y2F0Y2goayl7VyhhLGEucmV0dXJuLGspfWEuZmxhZ3MmPS0zfWImNDA5NiYmKGEuZmxhZ3MmPS00MDk3KX1mdW5jdGlvbiBpayhhLGIsYyl7Vj1hO2prKGEsYixjKX1cbmZ1bmN0aW9uIGprKGEsYixjKXtmb3IodmFyIGQ9MCE9PShhLm1vZGUmMSk7bnVsbCE9PVY7KXt2YXIgZT1WLGY9ZS5jaGlsZDtpZigyMj09PWUudGFnJiZkKXt2YXIgZz1udWxsIT09ZS5tZW1vaXplZFN0YXRlfHxLajtpZighZyl7dmFyIGg9ZS5hbHRlcm5hdGUsaz1udWxsIT09aCYmbnVsbCE9PWgubWVtb2l6ZWRTdGF0ZXx8VTtoPUtqO3ZhciBsPVU7S2o9ZztpZigoVT1rKSYmIWwpZm9yKFY9ZTtudWxsIT09VjspZz1WLGs9Zy5jaGlsZCwyMj09PWcudGFnJiZudWxsIT09Zy5tZW1vaXplZFN0YXRlP2trKGUpOm51bGwhPT1rPyhrLnJldHVybj1nLFY9ayk6a2soZSk7Zm9yKDtudWxsIT09ZjspVj1mLGprKGYsYixjKSxmPWYuc2libGluZztWPWU7S2o9aDtVPWx9bGsoYSxiLGMpfWVsc2UgMCE9PShlLnN1YnRyZWVGbGFncyY4NzcyKSYmbnVsbCE9PWY/KGYucmV0dXJuPWUsVj1mKTpsayhhLGIsYyl9fVxuZnVuY3Rpb24gbGsoYSl7Zm9yKDtudWxsIT09Vjspe3ZhciBiPVY7aWYoMCE9PShiLmZsYWdzJjg3NzIpKXt2YXIgYz1iLmFsdGVybmF0ZTt0cnl7aWYoMCE9PShiLmZsYWdzJjg3NzIpKXN3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpVfHxSaig1LGIpO2JyZWFrO2Nhc2UgMTp2YXIgZD1iLnN0YXRlTm9kZTtpZihiLmZsYWdzJjQmJiFVKWlmKG51bGw9PT1jKWQuY29tcG9uZW50RGlkTW91bnQoKTtlbHNle3ZhciBlPWIuZWxlbWVudFR5cGU9PT1iLnR5cGU/Yy5tZW1vaXplZFByb3BzOkxnKGIudHlwZSxjLm1lbW9pemVkUHJvcHMpO2QuY29tcG9uZW50RGlkVXBkYXRlKGUsYy5tZW1vaXplZFN0YXRlLGQuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfXZhciBmPWIudXBkYXRlUXVldWU7bnVsbCE9PWYmJmloKGIsZixkKTticmVhaztjYXNlIDM6dmFyIGc9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09Zyl7Yz1udWxsO2lmKG51bGwhPT1iLmNoaWxkKXN3aXRjaChiLmNoaWxkLnRhZyl7Y2FzZSA1OmM9XG5iLmNoaWxkLnN0YXRlTm9kZTticmVhaztjYXNlIDE6Yz1iLmNoaWxkLnN0YXRlTm9kZX1paChiLGcsYyl9YnJlYWs7Y2FzZSA1OnZhciBoPWIuc3RhdGVOb2RlO2lmKG51bGw9PT1jJiZiLmZsYWdzJjQpe2M9aDt2YXIgaz1iLm1lbW9pemVkUHJvcHM7c3dpdGNoKGIudHlwZSl7Y2FzZSBcImJ1dHRvblwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwidGV4dGFyZWFcIjprLmF1dG9Gb2N1cyYmYy5mb2N1cygpO2JyZWFrO2Nhc2UgXCJpbWdcIjprLnNyYyYmKGMuc3JjPWsuc3JjKX19YnJlYWs7Y2FzZSA2OmJyZWFrO2Nhc2UgNDpicmVhaztjYXNlIDEyOmJyZWFrO2Nhc2UgMTM6aWYobnVsbD09PWIubWVtb2l6ZWRTdGF0ZSl7dmFyIGw9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWwpe3ZhciBtPWwubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09bSl7dmFyIHE9bS5kZWh5ZHJhdGVkO251bGwhPT1xJiZiZChxKX19fWJyZWFrO2Nhc2UgMTk6Y2FzZSAxNzpjYXNlIDIxOmNhc2UgMjI6Y2FzZSAyMzpjYXNlIDI1OmJyZWFrO1xuZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MykpO31VfHxiLmZsYWdzJjUxMiYmU2ooYil9Y2F0Y2gocil7VyhiLGIucmV0dXJuLHIpfX1pZihiPT09YSl7Vj1udWxsO2JyZWFrfWM9Yi5zaWJsaW5nO2lmKG51bGwhPT1jKXtjLnJldHVybj1iLnJldHVybjtWPWM7YnJlYWt9Vj1iLnJldHVybn19ZnVuY3Rpb24gaGsoYSl7Zm9yKDtudWxsIT09Vjspe3ZhciBiPVY7aWYoYj09PWEpe1Y9bnVsbDticmVha312YXIgYz1iLnNpYmxpbmc7aWYobnVsbCE9PWMpe2MucmV0dXJuPWIucmV0dXJuO1Y9YzticmVha31WPWIucmV0dXJufX1cbmZ1bmN0aW9uIGtrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO3RyeXtzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6dmFyIGM9Yi5yZXR1cm47dHJ5e1JqKDQsYil9Y2F0Y2goayl7VyhiLGMsayl9YnJlYWs7Y2FzZSAxOnZhciBkPWIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudERpZE1vdW50KXt2YXIgZT1iLnJldHVybjt0cnl7ZC5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKGspe1coYixlLGspfX12YXIgZj1iLnJldHVybjt0cnl7U2ooYil9Y2F0Y2goayl7VyhiLGYsayl9YnJlYWs7Y2FzZSA1OnZhciBnPWIucmV0dXJuO3RyeXtTaihiKX1jYXRjaChrKXtXKGIsZyxrKX19fWNhdGNoKGspe1coYixiLnJldHVybixrKX1pZihiPT09YSl7Vj1udWxsO2JyZWFrfXZhciBoPWIuc2libGluZztpZihudWxsIT09aCl7aC5yZXR1cm49Yi5yZXR1cm47Vj1oO2JyZWFrfVY9Yi5yZXR1cm59fVxudmFyIG1rPU1hdGguY2VpbCxuaz11YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLG9rPXVhLlJlYWN0Q3VycmVudE93bmVyLHBrPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLEs9MCxSPW51bGwsWT1udWxsLFo9MCxnaj0wLGZqPVVmKDApLFQ9MCxxaz1udWxsLGhoPTAscms9MCxzaz0wLHRrPW51bGwsdWs9bnVsbCxnaz0wLEhqPUluZmluaXR5LHZrPW51bGwsUGk9ITEsUWk9bnVsbCxTaT1udWxsLHdrPSExLHhrPW51bGwseWs9MCx6az0wLEFrPW51bGwsQms9LTEsQ2s9MDtmdW5jdGlvbiBMKCl7cmV0dXJuIDAhPT0oSyY2KT9CKCk6LTEhPT1Caz9CazpCaz1CKCl9XG5mdW5jdGlvbiBsaChhKXtpZigwPT09KGEubW9kZSYxKSlyZXR1cm4gMTtpZigwIT09KEsmMikmJjAhPT1aKXJldHVybiBaJi1aO2lmKG51bGwhPT1LZy50cmFuc2l0aW9uKXJldHVybiAwPT09Q2smJihDaz15YygpKSxDazthPUM7aWYoMCE9PWEpcmV0dXJuIGE7YT13aW5kb3cuZXZlbnQ7YT12b2lkIDA9PT1hPzE2OmpkKGEudHlwZSk7cmV0dXJuIGF9ZnVuY3Rpb24gbWgoYSxiLGMsZCl7aWYoNTA8emspdGhyb3cgems9MCxBaz1udWxsLEVycm9yKHAoMTg1KSk7QWMoYSxjLGQpO2lmKDA9PT0oSyYyKXx8YSE9PVIpYT09PVImJigwPT09KEsmMikmJihya3w9YyksND09PVQmJkRrKGEsWikpLEVrKGEsZCksMT09PWMmJjA9PT1LJiYwPT09KGIubW9kZSYxKSYmKEhqPUIoKSs1MDAsZmcmJmpnKCkpfVxuZnVuY3Rpb24gRWsoYSxiKXt2YXIgYz1hLmNhbGxiYWNrTm9kZTt3YyhhLGIpO3ZhciBkPXVjKGEsYT09PVI/WjowKTtpZigwPT09ZCludWxsIT09YyYmYmMoYyksYS5jYWxsYmFja05vZGU9bnVsbCxhLmNhbGxiYWNrUHJpb3JpdHk9MDtlbHNlIGlmKGI9ZCYtZCxhLmNhbGxiYWNrUHJpb3JpdHkhPT1iKXtudWxsIT1jJiZiYyhjKTtpZigxPT09YikwPT09YS50YWc/aWcoRmsuYmluZChudWxsLGEpKTpoZyhGay5iaW5kKG51bGwsYSkpLEpmKGZ1bmN0aW9uKCl7MD09PShLJjYpJiZqZygpfSksYz1udWxsO2Vsc2V7c3dpdGNoKERjKGQpKXtjYXNlIDE6Yz1mYzticmVhaztjYXNlIDQ6Yz1nYzticmVhaztjYXNlIDE2OmM9aGM7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6Yz1qYzticmVhaztkZWZhdWx0OmM9aGN9Yz1HayhjLEhrLmJpbmQobnVsbCxhKSl9YS5jYWxsYmFja1ByaW9yaXR5PWI7YS5jYWxsYmFja05vZGU9Y319XG5mdW5jdGlvbiBIayhhLGIpe0JrPS0xO0NrPTA7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzI3KSk7dmFyIGM9YS5jYWxsYmFja05vZGU7aWYoSWsoKSYmYS5jYWxsYmFja05vZGUhPT1jKXJldHVybiBudWxsO3ZhciBkPXVjKGEsYT09PVI/WjowKTtpZigwPT09ZClyZXR1cm4gbnVsbDtpZigwIT09KGQmMzApfHwwIT09KGQmYS5leHBpcmVkTGFuZXMpfHxiKWI9SmsoYSxkKTtlbHNle2I9ZDt2YXIgZT1LO0t8PTI7dmFyIGY9S2soKTtpZihSIT09YXx8WiE9PWIpdms9bnVsbCxIaj1CKCkrNTAwLExrKGEsYik7ZG8gdHJ5e01rKCk7YnJlYWt9Y2F0Y2goaCl7TmsoYSxoKX13aGlsZSgxKTtRZygpO25rLmN1cnJlbnQ9ZjtLPWU7bnVsbCE9PVk/Yj0wOihSPW51bGwsWj0wLGI9VCl9aWYoMCE9PWIpezI9PT1iJiYoZT14YyhhKSwwIT09ZSYmKGQ9ZSxiPU9rKGEsZSkpKTtpZigxPT09Yil0aHJvdyBjPXFrLExrKGEsMCksRGsoYSxkKSxFayhhLEIoKSksYztpZig2PT09YilEayhhLGQpO1xuZWxzZXtlPWEuY3VycmVudC5hbHRlcm5hdGU7aWYoMD09PShkJjMwKSYmIVBrKGUpJiYoYj1KayhhLGQpLDI9PT1iJiYoZj14YyhhKSwwIT09ZiYmKGQ9ZixiPU9rKGEsZikpKSwxPT09YikpdGhyb3cgYz1xayxMayhhLDApLERrKGEsZCksRWsoYSxCKCkpLGM7YS5maW5pc2hlZFdvcms9ZTthLmZpbmlzaGVkTGFuZXM9ZDtzd2l0Y2goYil7Y2FzZSAwOmNhc2UgMTp0aHJvdyBFcnJvcihwKDM0NSkpO2Nhc2UgMjpRayhhLHVrLHZrKTticmVhaztjYXNlIDM6RGsoYSxkKTtpZigoZCYxMzAwMjM0MjQpPT09ZCYmKGI9Z2srNTAwLUIoKSwxMDxiKSl7aWYoMCE9PXVjKGEsMCkpYnJlYWs7ZT1hLnN1c3BlbmRlZExhbmVzO2lmKChlJmQpIT09ZCl7TCgpO2EucGluZ2VkTGFuZXN8PWEuc3VzcGVuZGVkTGFuZXMmZTticmVha31hLnRpbWVvdXRIYW5kbGU9RmYoUWsuYmluZChudWxsLGEsdWssdmspLGIpO2JyZWFrfVFrKGEsdWssdmspO2JyZWFrO2Nhc2UgNDpEayhhLGQpO2lmKChkJjQxOTQyNDApPT09XG5kKWJyZWFrO2I9YS5ldmVudFRpbWVzO2ZvcihlPS0xOzA8ZDspe3ZhciBnPTMxLW9jKGQpO2Y9MTw8ZztnPWJbZ107Zz5lJiYoZT1nKTtkJj1+Zn1kPWU7ZD1CKCktZDtkPSgxMjA+ZD8xMjA6NDgwPmQ/NDgwOjEwODA+ZD8xMDgwOjE5MjA+ZD8xOTIwOjNFMz5kPzNFMzo0MzIwPmQ/NDMyMDoxOTYwKm1rKGQvMTk2MCkpLWQ7aWYoMTA8ZCl7YS50aW1lb3V0SGFuZGxlPUZmKFFrLmJpbmQobnVsbCxhLHVrLHZrKSxkKTticmVha31RayhhLHVrLHZrKTticmVhaztjYXNlIDU6UWsoYSx1ayx2ayk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDMyOSkpO319fUVrKGEsQigpKTtyZXR1cm4gYS5jYWxsYmFja05vZGU9PT1jP0hrLmJpbmQobnVsbCxhKTpudWxsfVxuZnVuY3Rpb24gT2soYSxiKXt2YXIgYz10azthLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJihMayhhLGIpLmZsYWdzfD0yNTYpO2E9SmsoYSxiKTsyIT09YSYmKGI9dWssdWs9YyxudWxsIT09YiYmR2ooYikpO3JldHVybiBhfWZ1bmN0aW9uIEdqKGEpe251bGw9PT11az91az1hOnVrLnB1c2guYXBwbHkodWssYSl9XG5mdW5jdGlvbiBQayhhKXtmb3IodmFyIGI9YTs7KXtpZihiLmZsYWdzJjE2Mzg0KXt2YXIgYz1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1jJiYoYz1jLnN0b3JlcyxudWxsIT09YykpZm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF0sZj1lLmdldFNuYXBzaG90O2U9ZS52YWx1ZTt0cnl7aWYoIUhlKGYoKSxlKSlyZXR1cm4hMX1jYXRjaChnKXtyZXR1cm4hMX19fWM9Yi5jaGlsZDtpZihiLnN1YnRyZWVGbGFncyYxNjM4NCYmbnVsbCE9PWMpYy5yZXR1cm49YixiPWM7ZWxzZXtpZihiPT09YSlicmVhaztmb3IoO251bGw9PT1iLnNpYmxpbmc7KXtpZihudWxsPT09Yi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4hMDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9fXJldHVybiEwfVxuZnVuY3Rpb24gRGsoYSxiKXtiJj1+c2s7YiY9fnJrO2Euc3VzcGVuZGVkTGFuZXN8PWI7YS5waW5nZWRMYW5lcyY9fmI7Zm9yKGE9YS5leHBpcmF0aW9uVGltZXM7MDxiOyl7dmFyIGM9MzEtb2MoYiksZD0xPDxjO2FbY109LTE7YiY9fmR9fWZ1bmN0aW9uIEZrKGEpe2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO0lrKCk7dmFyIGI9dWMoYSwwKTtpZigwPT09KGImMSkpcmV0dXJuIEVrKGEsQigpKSxudWxsO3ZhciBjPUprKGEsYik7aWYoMCE9PWEudGFnJiYyPT09Yyl7dmFyIGQ9eGMoYSk7MCE9PWQmJihiPWQsYz1PayhhLGQpKX1pZigxPT09Yyl0aHJvdyBjPXFrLExrKGEsMCksRGsoYSxiKSxFayhhLEIoKSksYztpZig2PT09Yyl0aHJvdyBFcnJvcihwKDM0NSkpO2EuZmluaXNoZWRXb3JrPWEuY3VycmVudC5hbHRlcm5hdGU7YS5maW5pc2hlZExhbmVzPWI7UWsoYSx1ayx2ayk7RWsoYSxCKCkpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gUmsoYSxiKXt2YXIgYz1LO0t8PTE7dHJ5e3JldHVybiBhKGIpfWZpbmFsbHl7Sz1jLDA9PT1LJiYoSGo9QigpKzUwMCxmZyYmamcoKSl9fWZ1bmN0aW9uIFNrKGEpe251bGwhPT14ayYmMD09PXhrLnRhZyYmMD09PShLJjYpJiZJaygpO3ZhciBiPUs7S3w9MTt2YXIgYz1way50cmFuc2l0aW9uLGQ9Qzt0cnl7aWYocGsudHJhbnNpdGlvbj1udWxsLEM9MSxhKXJldHVybiBhKCl9ZmluYWxseXtDPWQscGsudHJhbnNpdGlvbj1jLEs9YiwwPT09KEsmNikmJmpnKCl9fWZ1bmN0aW9uIElqKCl7Z2o9ZmouY3VycmVudDtFKGZqKX1cbmZ1bmN0aW9uIExrKGEsYil7YS5maW5pc2hlZFdvcms9bnVsbDthLmZpbmlzaGVkTGFuZXM9MDt2YXIgYz1hLnRpbWVvdXRIYW5kbGU7LTEhPT1jJiYoYS50aW1lb3V0SGFuZGxlPS0xLEdmKGMpKTtpZihudWxsIT09WSlmb3IoYz1ZLnJldHVybjtudWxsIT09Yzspe3ZhciBkPWM7d2coZCk7c3dpdGNoKGQudGFnKXtjYXNlIDE6ZD1kLnR5cGUuY2hpbGRDb250ZXh0VHlwZXM7bnVsbCE9PWQmJnZvaWQgMCE9PWQmJiRmKCk7YnJlYWs7Y2FzZSAzOkpoKCk7RShXZik7RShIKTtPaCgpO2JyZWFrO2Nhc2UgNTpMaChkKTticmVhaztjYXNlIDQ6SmgoKTticmVhaztjYXNlIDEzOkUoTSk7YnJlYWs7Y2FzZSAxOTpFKE0pO2JyZWFrO2Nhc2UgMTA6UmcoZC50eXBlLl9jb250ZXh0KTticmVhaztjYXNlIDIyOmNhc2UgMjM6SWooKX1jPWMucmV0dXJufVI9YTtZPWE9d2goYS5jdXJyZW50LG51bGwpO1o9Z2o9YjtUPTA7cWs9bnVsbDtzaz1yaz1oaD0wO3VrPXRrPW51bGw7aWYobnVsbCE9PVdnKXtmb3IoYj1cbjA7YjxXZy5sZW5ndGg7YisrKWlmKGM9V2dbYl0sZD1jLmludGVybGVhdmVkLG51bGwhPT1kKXtjLmludGVybGVhdmVkPW51bGw7dmFyIGU9ZC5uZXh0LGY9Yy5wZW5kaW5nO2lmKG51bGwhPT1mKXt2YXIgZz1mLm5leHQ7Zi5uZXh0PWU7ZC5uZXh0PWd9Yy5wZW5kaW5nPWR9V2c9bnVsbH1yZXR1cm4gYX1cbmZ1bmN0aW9uIE5rKGEsYil7ZG97dmFyIGM9WTt0cnl7UWcoKTtQaC5jdXJyZW50PWFpO2lmKFNoKXtmb3IodmFyIGQ9Ti5tZW1vaXplZFN0YXRlO251bGwhPT1kOyl7dmFyIGU9ZC5xdWV1ZTtudWxsIT09ZSYmKGUucGVuZGluZz1udWxsKTtkPWQubmV4dH1TaD0hMX1SaD0wO1A9Tz1OPW51bGw7VGg9ITE7VWg9MDtvay5jdXJyZW50PW51bGw7aWYobnVsbD09PWN8fG51bGw9PT1jLnJldHVybil7VD0xO3FrPWI7WT1udWxsO2JyZWFrfWE6e3ZhciBmPWEsZz1jLnJldHVybixoPWMsaz1iO2I9WjtoLmZsYWdzfD0zMjc2ODtpZihudWxsIT09ayYmXCJvYmplY3RcIj09PXR5cGVvZiBrJiZcImZ1bmN0aW9uXCI9PT10eXBlb2Ygay50aGVuKXt2YXIgbD1rLG09aCxxPW0udGFnO2lmKDA9PT0obS5tb2RlJjEpJiYoMD09PXF8fDExPT09cXx8MTU9PT1xKSl7dmFyIHI9bS5hbHRlcm5hdGU7cj8obS51cGRhdGVRdWV1ZT1yLnVwZGF0ZVF1ZXVlLG0ubWVtb2l6ZWRTdGF0ZT1yLm1lbW9pemVkU3RhdGUsXG5tLmxhbmVzPXIubGFuZXMpOihtLnVwZGF0ZVF1ZXVlPW51bGwsbS5tZW1vaXplZFN0YXRlPW51bGwpfXZhciB5PVZpKGcpO2lmKG51bGwhPT15KXt5LmZsYWdzJj0tMjU3O1dpKHksZyxoLGYsYik7eS5tb2RlJjEmJlRpKGYsbCxiKTtiPXk7az1sO3ZhciBuPWIudXBkYXRlUXVldWU7aWYobnVsbD09PW4pe3ZhciB0PW5ldyBTZXQ7dC5hZGQoayk7Yi51cGRhdGVRdWV1ZT10fWVsc2Ugbi5hZGQoayk7YnJlYWsgYX1lbHNle2lmKDA9PT0oYiYxKSl7VGkoZixsLGIpO3VqKCk7YnJlYWsgYX1rPUVycm9yKHAoNDI2KSl9fWVsc2UgaWYoSSYmaC5tb2RlJjEpe3ZhciBKPVZpKGcpO2lmKG51bGwhPT1KKXswPT09KEouZmxhZ3MmNjU1MzYpJiYoSi5mbGFnc3w9MjU2KTtXaShKLGcsaCxmLGIpO0pnKEtpKGssaCkpO2JyZWFrIGF9fWY9az1LaShrLGgpOzQhPT1UJiYoVD0yKTtudWxsPT09dGs/dGs9W2ZdOnRrLnB1c2goZik7Zj1nO2Rve3N3aXRjaChmLnRhZyl7Y2FzZSAzOmYuZmxhZ3N8PTY1NTM2O1xuYiY9LWI7Zi5sYW5lc3w9Yjt2YXIgeD1PaShmLGssYik7ZmgoZix4KTticmVhayBhO2Nhc2UgMTpoPWs7dmFyIHc9Zi50eXBlLHU9Zi5zdGF0ZU5vZGU7aWYoMD09PShmLmZsYWdzJjEyOCkmJihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygdy5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fG51bGwhPT11JiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgdS5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1TaXx8IVNpLmhhcyh1KSkpKXtmLmZsYWdzfD02NTUzNjtiJj0tYjtmLmxhbmVzfD1iO3ZhciBGPVJpKGYsaCxiKTtmaChmLEYpO2JyZWFrIGF9fWY9Zi5yZXR1cm59d2hpbGUobnVsbCE9PWYpfVRrKGMpfWNhdGNoKG5hKXtiPW5hO1k9PT1jJiZudWxsIT09YyYmKFk9Yz1jLnJldHVybik7Y29udGludWV9YnJlYWt9d2hpbGUoMSl9ZnVuY3Rpb24gS2soKXt2YXIgYT1uay5jdXJyZW50O25rLmN1cnJlbnQ9YWk7cmV0dXJuIG51bGw9PT1hP2FpOmF9XG5mdW5jdGlvbiB1aigpe2lmKDA9PT1UfHwzPT09VHx8Mj09PVQpVD00O251bGw9PT1SfHwwPT09KGhoJjI2ODQzNTQ1NSkmJjA9PT0ocmsmMjY4NDM1NDU1KXx8RGsoUixaKX1mdW5jdGlvbiBKayhhLGIpe3ZhciBjPUs7S3w9Mjt2YXIgZD1LaygpO2lmKFIhPT1hfHxaIT09Yil2az1udWxsLExrKGEsYik7ZG8gdHJ5e1VrKCk7YnJlYWt9Y2F0Y2goZSl7TmsoYSxlKX13aGlsZSgxKTtRZygpO0s9Yztuay5jdXJyZW50PWQ7aWYobnVsbCE9PVkpdGhyb3cgRXJyb3IocCgyNjEpKTtSPW51bGw7Wj0wO3JldHVybiBUfWZ1bmN0aW9uIFVrKCl7Zm9yKDtudWxsIT09WTspVmsoWSl9ZnVuY3Rpb24gTWsoKXtmb3IoO251bGwhPT1ZJiYhY2MoKTspVmsoWSl9ZnVuY3Rpb24gVmsoYSl7dmFyIGI9V2soYS5hbHRlcm5hdGUsYSxnaik7YS5tZW1vaXplZFByb3BzPWEucGVuZGluZ1Byb3BzO251bGw9PT1iP1RrKGEpOlk9Yjtvay5jdXJyZW50PW51bGx9XG5mdW5jdGlvbiBUayhhKXt2YXIgYj1hO2Rve3ZhciBjPWIuYWx0ZXJuYXRlO2E9Yi5yZXR1cm47aWYoMD09PShiLmZsYWdzJjMyNzY4KSl7aWYoYz1GaihjLGIsZ2opLG51bGwhPT1jKXtZPWM7cmV0dXJufX1lbHNle2M9SmooYyxiKTtpZihudWxsIT09Yyl7Yy5mbGFncyY9MzI3Njc7WT1jO3JldHVybn1pZihudWxsIT09YSlhLmZsYWdzfD0zMjc2OCxhLnN1YnRyZWVGbGFncz0wLGEuZGVsZXRpb25zPW51bGw7ZWxzZXtUPTY7WT1udWxsO3JldHVybn19Yj1iLnNpYmxpbmc7aWYobnVsbCE9PWIpe1k9YjtyZXR1cm59WT1iPWF9d2hpbGUobnVsbCE9PWIpOzA9PT1UJiYoVD01KX1mdW5jdGlvbiBRayhhLGIsYyl7dmFyIGQ9QyxlPXBrLnRyYW5zaXRpb247dHJ5e3BrLnRyYW5zaXRpb249bnVsbCxDPTEsWGsoYSxiLGMsZCl9ZmluYWxseXtway50cmFuc2l0aW9uPWUsQz1kfXJldHVybiBudWxsfVxuZnVuY3Rpb24gWGsoYSxiLGMsZCl7ZG8gSWsoKTt3aGlsZShudWxsIT09eGspO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO2M9YS5maW5pc2hlZFdvcms7dmFyIGU9YS5maW5pc2hlZExhbmVzO2lmKG51bGw9PT1jKXJldHVybiBudWxsO2EuZmluaXNoZWRXb3JrPW51bGw7YS5maW5pc2hlZExhbmVzPTA7aWYoYz09PWEuY3VycmVudCl0aHJvdyBFcnJvcihwKDE3NykpO2EuY2FsbGJhY2tOb2RlPW51bGw7YS5jYWxsYmFja1ByaW9yaXR5PTA7dmFyIGY9Yy5sYW5lc3xjLmNoaWxkTGFuZXM7QmMoYSxmKTthPT09UiYmKFk9Uj1udWxsLFo9MCk7MD09PShjLnN1YnRyZWVGbGFncyYyMDY0KSYmMD09PShjLmZsYWdzJjIwNjQpfHx3a3x8KHdrPSEwLEdrKGhjLGZ1bmN0aW9uKCl7SWsoKTtyZXR1cm4gbnVsbH0pKTtmPTAhPT0oYy5mbGFncyYxNTk5MCk7aWYoMCE9PShjLnN1YnRyZWVGbGFncyYxNTk5MCl8fGYpe2Y9cGsudHJhbnNpdGlvbjtway50cmFuc2l0aW9uPW51bGw7XG52YXIgZz1DO0M9MTt2YXIgaD1LO0t8PTQ7b2suY3VycmVudD1udWxsO1BqKGEsYyk7ZWsoYyxhKTtPZShEZik7ZGQ9ISFDZjtEZj1DZj1udWxsO2EuY3VycmVudD1jO2lrKGMsYSxlKTtkYygpO0s9aDtDPWc7cGsudHJhbnNpdGlvbj1mfWVsc2UgYS5jdXJyZW50PWM7d2smJih3az0hMSx4az1hLHlrPWUpO2Y9YS5wZW5kaW5nTGFuZXM7MD09PWYmJihTaT1udWxsKTttYyhjLnN0YXRlTm9kZSxkKTtFayhhLEIoKSk7aWYobnVsbCE9PWIpZm9yKGQ9YS5vblJlY292ZXJhYmxlRXJyb3IsYz0wO2M8Yi5sZW5ndGg7YysrKWU9YltjXSxkKGUudmFsdWUse2NvbXBvbmVudFN0YWNrOmUuc3RhY2ssZGlnZXN0OmUuZGlnZXN0fSk7aWYoUGkpdGhyb3cgUGk9ITEsYT1RaSxRaT1udWxsLGE7MCE9PSh5ayYxKSYmMCE9PWEudGFnJiZJaygpO2Y9YS5wZW5kaW5nTGFuZXM7MCE9PShmJjEpP2E9PT1Baz96aysrOih6az0wLEFrPWEpOnprPTA7amcoKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIElrKCl7aWYobnVsbCE9PXhrKXt2YXIgYT1EYyh5ayksYj1way50cmFuc2l0aW9uLGM9Qzt0cnl7cGsudHJhbnNpdGlvbj1udWxsO0M9MTY+YT8xNjphO2lmKG51bGw9PT14ayl2YXIgZD0hMTtlbHNle2E9eGs7eGs9bnVsbDt5az0wO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMzMSkpO3ZhciBlPUs7S3w9NDtmb3IoVj1hLmN1cnJlbnQ7bnVsbCE9PVY7KXt2YXIgZj1WLGc9Zi5jaGlsZDtpZigwIT09KFYuZmxhZ3MmMTYpKXt2YXIgaD1mLmRlbGV0aW9ucztpZihudWxsIT09aCl7Zm9yKHZhciBrPTA7azxoLmxlbmd0aDtrKyspe3ZhciBsPWhba107Zm9yKFY9bDtudWxsIT09Vjspe3ZhciBtPVY7c3dpdGNoKG0udGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlFqKDgsbSxmKX12YXIgcT1tLmNoaWxkO2lmKG51bGwhPT1xKXEucmV0dXJuPW0sVj1xO2Vsc2UgZm9yKDtudWxsIT09Vjspe209Vjt2YXIgcj1tLnNpYmxpbmcseT1tLnJldHVybjtUaihtKTtpZihtPT09XG5sKXtWPW51bGw7YnJlYWt9aWYobnVsbCE9PXIpe3IucmV0dXJuPXk7Vj1yO2JyZWFrfVY9eX19fXZhciBuPWYuYWx0ZXJuYXRlO2lmKG51bGwhPT1uKXt2YXIgdD1uLmNoaWxkO2lmKG51bGwhPT10KXtuLmNoaWxkPW51bGw7ZG97dmFyIEo9dC5zaWJsaW5nO3Quc2libGluZz1udWxsO3Q9Sn13aGlsZShudWxsIT09dCl9fVY9Zn19aWYoMCE9PShmLnN1YnRyZWVGbGFncyYyMDY0KSYmbnVsbCE9PWcpZy5yZXR1cm49ZixWPWc7ZWxzZSBiOmZvcig7bnVsbCE9PVY7KXtmPVY7aWYoMCE9PShmLmZsYWdzJjIwNDgpKXN3aXRjaChmLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpRaig5LGYsZi5yZXR1cm4pfXZhciB4PWYuc2libGluZztpZihudWxsIT09eCl7eC5yZXR1cm49Zi5yZXR1cm47Vj14O2JyZWFrIGJ9Vj1mLnJldHVybn19dmFyIHc9YS5jdXJyZW50O2ZvcihWPXc7bnVsbCE9PVY7KXtnPVY7dmFyIHU9Zy5jaGlsZDtpZigwIT09KGcuc3VidHJlZUZsYWdzJjIwNjQpJiZudWxsIT09XG51KXUucmV0dXJuPWcsVj11O2Vsc2UgYjpmb3IoZz13O251bGwhPT1WOyl7aD1WO2lmKDAhPT0oaC5mbGFncyYyMDQ4KSl0cnl7c3dpdGNoKGgudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlJqKDksaCl9fWNhdGNoKG5hKXtXKGgsaC5yZXR1cm4sbmEpfWlmKGg9PT1nKXtWPW51bGw7YnJlYWsgYn12YXIgRj1oLnNpYmxpbmc7aWYobnVsbCE9PUYpe0YucmV0dXJuPWgucmV0dXJuO1Y9RjticmVhayBifVY9aC5yZXR1cm59fUs9ZTtqZygpO2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Qb3N0Q29tbWl0RmliZXJSb290KXRyeXtsYy5vblBvc3RDb21taXRGaWJlclJvb3Qoa2MsYSl9Y2F0Y2gobmEpe31kPSEwfXJldHVybiBkfWZpbmFsbHl7Qz1jLHBrLnRyYW5zaXRpb249Yn19cmV0dXJuITF9ZnVuY3Rpb24gWWsoYSxiLGMpe2I9S2koYyxiKTtiPU9pKGEsYiwxKTthPWRoKGEsYiwxKTtiPUwoKTtudWxsIT09YSYmKEFjKGEsMSxiKSxFayhhLGIpKX1cbmZ1bmN0aW9uIFcoYSxiLGMpe2lmKDM9PT1hLnRhZylZayhhLGEsYyk7ZWxzZSBmb3IoO251bGwhPT1iOyl7aWYoMz09PWIudGFnKXtZayhiLGEsYyk7YnJlYWt9ZWxzZSBpZigxPT09Yi50YWcpe3ZhciBkPWIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1TaXx8IVNpLmhhcyhkKSkpe2E9S2koYyxhKTthPVJpKGIsYSwxKTtiPWRoKGIsYSwxKTthPUwoKTtudWxsIT09YiYmKEFjKGIsMSxhKSxFayhiLGEpKTticmVha319Yj1iLnJldHVybn19XG5mdW5jdGlvbiBVaShhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7bnVsbCE9PWQmJmQuZGVsZXRlKGIpO2I9TCgpO2EucGluZ2VkTGFuZXN8PWEuc3VzcGVuZGVkTGFuZXMmYztSPT09YSYmKFomYyk9PT1jJiYoND09PVR8fDM9PT1UJiYoWiYxMzAwMjM0MjQpPT09WiYmNTAwPkIoKS1naz9MayhhLDApOnNrfD1jKTtFayhhLGIpfWZ1bmN0aW9uIFprKGEsYil7MD09PWImJigwPT09KGEubW9kZSYxKT9iPTE6KGI9c2Msc2M8PD0xLDA9PT0oc2MmMTMwMDIzNDI0KSYmKHNjPTQxOTQzMDQpKSk7dmFyIGM9TCgpO2E9WmcoYSxiKTtudWxsIT09YSYmKEFjKGEsYixjKSxFayhhLGMpKX1mdW5jdGlvbiB2aihhKXt2YXIgYj1hLm1lbW9pemVkU3RhdGUsYz0wO251bGwhPT1iJiYoYz1iLnJldHJ5TGFuZSk7WmsoYSxjKX1cbmZ1bmN0aW9uIGNrKGEsYil7dmFyIGM9MDtzd2l0Y2goYS50YWcpe2Nhc2UgMTM6dmFyIGQ9YS5zdGF0ZU5vZGU7dmFyIGU9YS5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoYz1lLnJldHJ5TGFuZSk7YnJlYWs7Y2FzZSAxOTpkPWEuc3RhdGVOb2RlO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgzMTQpKTt9bnVsbCE9PWQmJmQuZGVsZXRlKGIpO1prKGEsYyl9dmFyIFdrO1xuV2s9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGwhPT1hKWlmKGEubWVtb2l6ZWRQcm9wcyE9PWIucGVuZGluZ1Byb3BzfHxXZi5jdXJyZW50KVVnPSEwO2Vsc2V7aWYoMD09PShhLmxhbmVzJmMpJiYwPT09KGIuZmxhZ3MmMTI4KSlyZXR1cm4gVWc9ITEsemooYSxiLGMpO1VnPTAhPT0oYS5mbGFncyYxMzEwNzIpPyEwOiExfWVsc2UgVWc9ITEsSSYmMCE9PShiLmZsYWdzJjEwNDg1NzYpJiZ1ZyhiLG5nLGIuaW5kZXgpO2IubGFuZXM9MDtzd2l0Y2goYi50YWcpe2Nhc2UgMjp2YXIgZD1iLnR5cGU7amooYSxiKTthPWIucGVuZGluZ1Byb3BzO3ZhciBlPVlmKGIsSC5jdXJyZW50KTtUZyhiLGMpO2U9WGgobnVsbCxiLGQsYSxlLGMpO3ZhciBmPWJpKCk7Yi5mbGFnc3w9MTtcIm9iamVjdFwiPT09dHlwZW9mIGUmJm51bGwhPT1lJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5yZW5kZXImJnZvaWQgMD09PWUuJCR0eXBlb2Y/KGIudGFnPTEsYi5tZW1vaXplZFN0YXRlPW51bGwsYi51cGRhdGVRdWV1ZT1cbm51bGwsWmYoZCk/KGY9ITAsY2coYikpOmY9ITEsYi5tZW1vaXplZFN0YXRlPW51bGwhPT1lLnN0YXRlJiZ2b2lkIDAhPT1lLnN0YXRlP2Uuc3RhdGU6bnVsbCxhaChiKSxlLnVwZGF0ZXI9bmgsYi5zdGF0ZU5vZGU9ZSxlLl9yZWFjdEludGVybmFscz1iLHJoKGIsZCxhLGMpLGI9a2oobnVsbCxiLGQsITAsZixjKSk6KGIudGFnPTAsSSYmZiYmdmcoYiksWWkobnVsbCxiLGUsYyksYj1iLmNoaWxkKTtyZXR1cm4gYjtjYXNlIDE2OmQ9Yi5lbGVtZW50VHlwZTthOntqaihhLGIpO2E9Yi5wZW5kaW5nUHJvcHM7ZT1kLl9pbml0O2Q9ZShkLl9wYXlsb2FkKTtiLnR5cGU9ZDtlPWIudGFnPSRrKGQpO2E9TGcoZCxhKTtzd2l0Y2goZSl7Y2FzZSAwOmI9ZGoobnVsbCxiLGQsYSxjKTticmVhayBhO2Nhc2UgMTpiPWlqKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDExOmI9WmkobnVsbCxiLGQsYSxjKTticmVhayBhO2Nhc2UgMTQ6Yj1haihudWxsLGIsZCxMZyhkLnR5cGUsYSksYyk7YnJlYWsgYX10aHJvdyBFcnJvcihwKDMwNixcbmQsXCJcIikpO31yZXR1cm4gYjtjYXNlIDA6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksZGooYSxiLGQsZSxjKTtjYXNlIDE6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksaWooYSxiLGQsZSxjKTtjYXNlIDM6YTp7bGooYik7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IocCgzODcpKTtkPWIucGVuZGluZ1Byb3BzO2Y9Yi5tZW1vaXplZFN0YXRlO2U9Zi5lbGVtZW50O2JoKGEsYik7Z2goYixkLG51bGwsYyk7dmFyIGc9Yi5tZW1vaXplZFN0YXRlO2Q9Zy5lbGVtZW50O2lmKGYuaXNEZWh5ZHJhdGVkKWlmKGY9e2VsZW1lbnQ6ZCxpc0RlaHlkcmF0ZWQ6ITEsY2FjaGU6Zy5jYWNoZSxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOmcucGVuZGluZ1N1c3BlbnNlQm91bmRhcmllcyx0cmFuc2l0aW9uczpnLnRyYW5zaXRpb25zfSxiLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1cbmYsYi5tZW1vaXplZFN0YXRlPWYsYi5mbGFncyYyNTYpe2U9S2koRXJyb3IocCg0MjMpKSxiKTtiPW1qKGEsYixkLGMsZSk7YnJlYWsgYX1lbHNlIGlmKGQhPT1lKXtlPUtpKEVycm9yKHAoNDI0KSksYik7Yj1taihhLGIsZCxjLGUpO2JyZWFrIGF9ZWxzZSBmb3IoeWc9TGYoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mby5maXJzdENoaWxkKSx4Zz1iLEk9ITAsemc9bnVsbCxjPUNoKGIsbnVsbCxkLGMpLGIuY2hpbGQ9YztjOyljLmZsYWdzPWMuZmxhZ3MmLTN8NDA5NixjPWMuc2libGluZztlbHNle0lnKCk7aWYoZD09PWUpe2I9JGkoYSxiLGMpO2JyZWFrIGF9WWkoYSxiLGQsYyl9Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgNTpyZXR1cm4gS2goYiksbnVsbD09PWEmJkVnKGIpLGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZj1udWxsIT09YT9hLm1lbW9pemVkUHJvcHM6bnVsbCxnPWUuY2hpbGRyZW4sRWYoZCxlKT9nPW51bGw6bnVsbCE9PWYmJkVmKGQsZikmJihiLmZsYWdzfD0zMiksXG5oaihhLGIpLFlpKGEsYixnLGMpLGIuY2hpbGQ7Y2FzZSA2OnJldHVybiBudWxsPT09YSYmRWcoYiksbnVsbDtjYXNlIDEzOnJldHVybiBwaihhLGIsYyk7Y2FzZSA0OnJldHVybiBJaChiLGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLGQ9Yi5wZW5kaW5nUHJvcHMsbnVsbD09PWE/Yi5jaGlsZD1CaChiLG51bGwsZCxjKTpZaShhLGIsZCxjKSxiLmNoaWxkO2Nhc2UgMTE6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksWmkoYSxiLGQsZSxjKTtjYXNlIDc6cmV0dXJuIFlpKGEsYixiLnBlbmRpbmdQcm9wcyxjKSxiLmNoaWxkO2Nhc2UgODpyZXR1cm4gWWkoYSxiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMjpyZXR1cm4gWWkoYSxiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMDphOntkPWIudHlwZS5fY29udGV4dDtlPWIucGVuZGluZ1Byb3BzO2Y9Yi5tZW1vaXplZFByb3BzO1xuZz1lLnZhbHVlO0coTWcsZC5fY3VycmVudFZhbHVlKTtkLl9jdXJyZW50VmFsdWU9ZztpZihudWxsIT09ZilpZihIZShmLnZhbHVlLGcpKXtpZihmLmNoaWxkcmVuPT09ZS5jaGlsZHJlbiYmIVdmLmN1cnJlbnQpe2I9JGkoYSxiLGMpO2JyZWFrIGF9fWVsc2UgZm9yKGY9Yi5jaGlsZCxudWxsIT09ZiYmKGYucmV0dXJuPWIpO251bGwhPT1mOyl7dmFyIGg9Zi5kZXBlbmRlbmNpZXM7aWYobnVsbCE9PWgpe2c9Zi5jaGlsZDtmb3IodmFyIGs9aC5maXJzdENvbnRleHQ7bnVsbCE9PWs7KXtpZihrLmNvbnRleHQ9PT1kKXtpZigxPT09Zi50YWcpe2s9Y2goLTEsYyYtYyk7ay50YWc9Mjt2YXIgbD1mLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1sKXtsPWwuc2hhcmVkO3ZhciBtPWwucGVuZGluZztudWxsPT09bT9rLm5leHQ9azooay5uZXh0PW0ubmV4dCxtLm5leHQ9ayk7bC5wZW5kaW5nPWt9fWYubGFuZXN8PWM7az1mLmFsdGVybmF0ZTtudWxsIT09ayYmKGsubGFuZXN8PWMpO1NnKGYucmV0dXJuLFxuYyxiKTtoLmxhbmVzfD1jO2JyZWFrfWs9ay5uZXh0fX1lbHNlIGlmKDEwPT09Zi50YWcpZz1mLnR5cGU9PT1iLnR5cGU/bnVsbDpmLmNoaWxkO2Vsc2UgaWYoMTg9PT1mLnRhZyl7Zz1mLnJldHVybjtpZihudWxsPT09Zyl0aHJvdyBFcnJvcihwKDM0MSkpO2cubGFuZXN8PWM7aD1nLmFsdGVybmF0ZTtudWxsIT09aCYmKGgubGFuZXN8PWMpO1NnKGcsYyxiKTtnPWYuc2libGluZ31lbHNlIGc9Zi5jaGlsZDtpZihudWxsIT09ZylnLnJldHVybj1mO2Vsc2UgZm9yKGc9ZjtudWxsIT09Zzspe2lmKGc9PT1iKXtnPW51bGw7YnJlYWt9Zj1nLnNpYmxpbmc7aWYobnVsbCE9PWYpe2YucmV0dXJuPWcucmV0dXJuO2c9ZjticmVha31nPWcucmV0dXJufWY9Z31ZaShhLGIsZS5jaGlsZHJlbixjKTtiPWIuY2hpbGR9cmV0dXJuIGI7Y2FzZSA5OnJldHVybiBlPWIudHlwZSxkPWIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLFRnKGIsYyksZT1WZyhlKSxkPWQoZSksYi5mbGFnc3w9MSxZaShhLGIsZCxjKSxcbmIuY2hpbGQ7Y2FzZSAxNDpyZXR1cm4gZD1iLnR5cGUsZT1MZyhkLGIucGVuZGluZ1Byb3BzKSxlPUxnKGQudHlwZSxlKSxhaihhLGIsZCxlLGMpO2Nhc2UgMTU6cmV0dXJuIGNqKGEsYixiLnR5cGUsYi5wZW5kaW5nUHJvcHMsYyk7Y2FzZSAxNzpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6TGcoZCxlKSxqaihhLGIpLGIudGFnPTEsWmYoZCk/KGE9ITAsY2coYikpOmE9ITEsVGcoYixjKSxwaChiLGQsZSkscmgoYixkLGUsYyksa2oobnVsbCxiLGQsITAsYSxjKTtjYXNlIDE5OnJldHVybiB5aihhLGIsYyk7Y2FzZSAyMjpyZXR1cm4gZWooYSxiLGMpfXRocm93IEVycm9yKHAoMTU2LGIudGFnKSk7fTtmdW5jdGlvbiBHayhhLGIpe3JldHVybiBhYyhhLGIpfVxuZnVuY3Rpb24gYWwoYSxiLGMsZCl7dGhpcy50YWc9YTt0aGlzLmtleT1jO3RoaXMuc2libGluZz10aGlzLmNoaWxkPXRoaXMucmV0dXJuPXRoaXMuc3RhdGVOb2RlPXRoaXMudHlwZT10aGlzLmVsZW1lbnRUeXBlPW51bGw7dGhpcy5pbmRleD0wO3RoaXMucmVmPW51bGw7dGhpcy5wZW5kaW5nUHJvcHM9Yjt0aGlzLmRlcGVuZGVuY2llcz10aGlzLm1lbW9pemVkU3RhdGU9dGhpcy51cGRhdGVRdWV1ZT10aGlzLm1lbW9pemVkUHJvcHM9bnVsbDt0aGlzLm1vZGU9ZDt0aGlzLnN1YnRyZWVGbGFncz10aGlzLmZsYWdzPTA7dGhpcy5kZWxldGlvbnM9bnVsbDt0aGlzLmNoaWxkTGFuZXM9dGhpcy5sYW5lcz0wO3RoaXMuYWx0ZXJuYXRlPW51bGx9ZnVuY3Rpb24gQmcoYSxiLGMsZCl7cmV0dXJuIG5ldyBhbChhLGIsYyxkKX1mdW5jdGlvbiBiaihhKXthPWEucHJvdG90eXBlO3JldHVybiEoIWF8fCFhLmlzUmVhY3RDb21wb25lbnQpfVxuZnVuY3Rpb24gJGsoYSl7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpcmV0dXJuIGJqKGEpPzE6MDtpZih2b2lkIDAhPT1hJiZudWxsIT09YSl7YT1hLiQkdHlwZW9mO2lmKGE9PT1EYSlyZXR1cm4gMTE7aWYoYT09PUdhKXJldHVybiAxNH1yZXR1cm4gMn1cbmZ1bmN0aW9uIHdoKGEsYil7dmFyIGM9YS5hbHRlcm5hdGU7bnVsbD09PWM/KGM9QmcoYS50YWcsYixhLmtleSxhLm1vZGUpLGMuZWxlbWVudFR5cGU9YS5lbGVtZW50VHlwZSxjLnR5cGU9YS50eXBlLGMuc3RhdGVOb2RlPWEuc3RhdGVOb2RlLGMuYWx0ZXJuYXRlPWEsYS5hbHRlcm5hdGU9Yyk6KGMucGVuZGluZ1Byb3BzPWIsYy50eXBlPWEudHlwZSxjLmZsYWdzPTAsYy5zdWJ0cmVlRmxhZ3M9MCxjLmRlbGV0aW9ucz1udWxsKTtjLmZsYWdzPWEuZmxhZ3MmMTQ2ODAwNjQ7Yy5jaGlsZExhbmVzPWEuY2hpbGRMYW5lcztjLmxhbmVzPWEubGFuZXM7Yy5jaGlsZD1hLmNoaWxkO2MubWVtb2l6ZWRQcm9wcz1hLm1lbW9pemVkUHJvcHM7Yy5tZW1vaXplZFN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtjLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWU7Yj1hLmRlcGVuZGVuY2llcztjLmRlcGVuZGVuY2llcz1udWxsPT09Yj9udWxsOntsYW5lczpiLmxhbmVzLGZpcnN0Q29udGV4dDpiLmZpcnN0Q29udGV4dH07XG5jLnNpYmxpbmc9YS5zaWJsaW5nO2MuaW5kZXg9YS5pbmRleDtjLnJlZj1hLnJlZjtyZXR1cm4gY31cbmZ1bmN0aW9uIHloKGEsYixjLGQsZSxmKXt2YXIgZz0yO2Q9YTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSliaihhKSYmKGc9MSk7ZWxzZSBpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpZz01O2Vsc2UgYTpzd2l0Y2goYSl7Y2FzZSB5YTpyZXR1cm4gQWgoYy5jaGlsZHJlbixlLGYsYik7Y2FzZSB6YTpnPTg7ZXw9ODticmVhaztjYXNlIEFhOnJldHVybiBhPUJnKDEyLGMsYixlfDIpLGEuZWxlbWVudFR5cGU9QWEsYS5sYW5lcz1mLGE7Y2FzZSBFYTpyZXR1cm4gYT1CZygxMyxjLGIsZSksYS5lbGVtZW50VHlwZT1FYSxhLmxhbmVzPWYsYTtjYXNlIEZhOnJldHVybiBhPUJnKDE5LGMsYixlKSxhLmVsZW1lbnRUeXBlPUZhLGEubGFuZXM9ZixhO2Nhc2UgSWE6cmV0dXJuIHFqKGMsZSxmLGIpO2RlZmF1bHQ6aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBCYTpnPTEwO2JyZWFrIGE7Y2FzZSBDYTpnPTk7YnJlYWsgYTtjYXNlIERhOmc9MTE7XG5icmVhayBhO2Nhc2UgR2E6Zz0xNDticmVhayBhO2Nhc2UgSGE6Zz0xNjtkPW51bGw7YnJlYWsgYX10aHJvdyBFcnJvcihwKDEzMCxudWxsPT1hP2E6dHlwZW9mIGEsXCJcIikpO31iPUJnKGcsYyxiLGUpO2IuZWxlbWVudFR5cGU9YTtiLnR5cGU9ZDtiLmxhbmVzPWY7cmV0dXJuIGJ9ZnVuY3Rpb24gQWgoYSxiLGMsZCl7YT1CZyg3LGEsZCxiKTthLmxhbmVzPWM7cmV0dXJuIGF9ZnVuY3Rpb24gcWooYSxiLGMsZCl7YT1CZygyMixhLGQsYik7YS5lbGVtZW50VHlwZT1JYTthLmxhbmVzPWM7YS5zdGF0ZU5vZGU9e2lzSGlkZGVuOiExfTtyZXR1cm4gYX1mdW5jdGlvbiB4aChhLGIsYyl7YT1CZyg2LGEsbnVsbCxiKTthLmxhbmVzPWM7cmV0dXJuIGF9XG5mdW5jdGlvbiB6aChhLGIsYyl7Yj1CZyg0LG51bGwhPT1hLmNoaWxkcmVuP2EuY2hpbGRyZW46W10sYS5rZXksYik7Yi5sYW5lcz1jO2Iuc3RhdGVOb2RlPXtjb250YWluZXJJbmZvOmEuY29udGFpbmVySW5mbyxwZW5kaW5nQ2hpbGRyZW46bnVsbCxpbXBsZW1lbnRhdGlvbjphLmltcGxlbWVudGF0aW9ufTtyZXR1cm4gYn1cbmZ1bmN0aW9uIGJsKGEsYixjLGQsZSl7dGhpcy50YWc9Yjt0aGlzLmNvbnRhaW5lckluZm89YTt0aGlzLmZpbmlzaGVkV29yaz10aGlzLnBpbmdDYWNoZT10aGlzLmN1cnJlbnQ9dGhpcy5wZW5kaW5nQ2hpbGRyZW49bnVsbDt0aGlzLnRpbWVvdXRIYW5kbGU9LTE7dGhpcy5jYWxsYmFja05vZGU9dGhpcy5wZW5kaW5nQ29udGV4dD10aGlzLmNvbnRleHQ9bnVsbDt0aGlzLmNhbGxiYWNrUHJpb3JpdHk9MDt0aGlzLmV2ZW50VGltZXM9emMoMCk7dGhpcy5leHBpcmF0aW9uVGltZXM9emMoLTEpO3RoaXMuZW50YW5nbGVkTGFuZXM9dGhpcy5maW5pc2hlZExhbmVzPXRoaXMubXV0YWJsZVJlYWRMYW5lcz10aGlzLmV4cGlyZWRMYW5lcz10aGlzLnBpbmdlZExhbmVzPXRoaXMuc3VzcGVuZGVkTGFuZXM9dGhpcy5wZW5kaW5nTGFuZXM9MDt0aGlzLmVudGFuZ2xlbWVudHM9emMoMCk7dGhpcy5pZGVudGlmaWVyUHJlZml4PWQ7dGhpcy5vblJlY292ZXJhYmxlRXJyb3I9ZTt0aGlzLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9XG5udWxsfWZ1bmN0aW9uIGNsKGEsYixjLGQsZSxmLGcsaCxrKXthPW5ldyBibChhLGIsYyxoLGspOzE9PT1iPyhiPTEsITA9PT1mJiYoYnw9OCkpOmI9MDtmPUJnKDMsbnVsbCxudWxsLGIpO2EuY3VycmVudD1mO2Yuc3RhdGVOb2RlPWE7Zi5tZW1vaXplZFN0YXRlPXtlbGVtZW50OmQsaXNEZWh5ZHJhdGVkOmMsY2FjaGU6bnVsbCx0cmFuc2l0aW9uczpudWxsLHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6bnVsbH07YWgoZik7cmV0dXJuIGF9ZnVuY3Rpb24gZGwoYSxiLGMpe3ZhciBkPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjp3YSxrZXk6bnVsbD09ZD9udWxsOlwiXCIrZCxjaGlsZHJlbjphLGNvbnRhaW5lckluZm86YixpbXBsZW1lbnRhdGlvbjpjfX1cbmZ1bmN0aW9uIGVsKGEpe2lmKCFhKXJldHVybiBWZjthPWEuX3JlYWN0SW50ZXJuYWxzO2E6e2lmKFZiKGEpIT09YXx8MSE9PWEudGFnKXRocm93IEVycm9yKHAoMTcwKSk7dmFyIGI9YTtkb3tzd2l0Y2goYi50YWcpe2Nhc2UgMzpiPWIuc3RhdGVOb2RlLmNvbnRleHQ7YnJlYWsgYTtjYXNlIDE6aWYoWmYoYi50eXBlKSl7Yj1iLnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDticmVhayBhfX1iPWIucmV0dXJufXdoaWxlKG51bGwhPT1iKTt0aHJvdyBFcnJvcihwKDE3MSkpO31pZigxPT09YS50YWcpe3ZhciBjPWEudHlwZTtpZihaZihjKSlyZXR1cm4gYmcoYSxjLGIpfXJldHVybiBifVxuZnVuY3Rpb24gZmwoYSxiLGMsZCxlLGYsZyxoLGspe2E9Y2woYyxkLCEwLGEsZSxmLGcsaCxrKTthLmNvbnRleHQ9ZWwobnVsbCk7Yz1hLmN1cnJlbnQ7ZD1MKCk7ZT1saChjKTtmPWNoKGQsZSk7Zi5jYWxsYmFjaz12b2lkIDAhPT1iJiZudWxsIT09Yj9iOm51bGw7ZGgoYyxmLGUpO2EuY3VycmVudC5sYW5lcz1lO0FjKGEsZSxkKTtFayhhLGQpO3JldHVybiBhfWZ1bmN0aW9uIGdsKGEsYixjLGQpe3ZhciBlPWIuY3VycmVudCxmPUwoKSxnPWxoKGUpO2M9ZWwoYyk7bnVsbD09PWIuY29udGV4dD9iLmNvbnRleHQ9YzpiLnBlbmRpbmdDb250ZXh0PWM7Yj1jaChmLGcpO2IucGF5bG9hZD17ZWxlbWVudDphfTtkPXZvaWQgMD09PWQ/bnVsbDpkO251bGwhPT1kJiYoYi5jYWxsYmFjaz1kKTthPWRoKGUsYixnKTtudWxsIT09YSYmKG1oKGEsZSxnLGYpLGVoKGEsZSxnKSk7cmV0dXJuIGd9XG5mdW5jdGlvbiBobChhKXthPWEuY3VycmVudDtpZighYS5jaGlsZClyZXR1cm4gbnVsbDtzd2l0Y2goYS5jaGlsZC50YWcpe2Nhc2UgNTpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGU7ZGVmYXVsdDpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGV9fWZ1bmN0aW9uIGlsKGEsYil7YT1hLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJm51bGwhPT1hLmRlaHlkcmF0ZWQpe3ZhciBjPWEucmV0cnlMYW5lO2EucmV0cnlMYW5lPTAhPT1jJiZjPGI/YzpifX1mdW5jdGlvbiBqbChhLGIpe2lsKGEsYik7KGE9YS5hbHRlcm5hdGUpJiZpbChhLGIpfWZ1bmN0aW9uIGtsKCl7cmV0dXJuIG51bGx9dmFyIGxsPVwiZnVuY3Rpb25cIj09PXR5cGVvZiByZXBvcnRFcnJvcj9yZXBvcnRFcnJvcjpmdW5jdGlvbihhKXtjb25zb2xlLmVycm9yKGEpfTtmdW5jdGlvbiBtbChhKXt0aGlzLl9pbnRlcm5hbFJvb3Q9YX1cbm5sLnByb3RvdHlwZS5yZW5kZXI9bWwucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLl9pbnRlcm5hbFJvb3Q7aWYobnVsbD09PWIpdGhyb3cgRXJyb3IocCg0MDkpKTtnbChhLGIsbnVsbCxudWxsKX07bmwucHJvdG90eXBlLnVubW91bnQ9bWwucHJvdG90eXBlLnVubW91bnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9pbnRlcm5hbFJvb3Q7aWYobnVsbCE9PWEpe3RoaXMuX2ludGVybmFsUm9vdD1udWxsO3ZhciBiPWEuY29udGFpbmVySW5mbztTayhmdW5jdGlvbigpe2dsKG51bGwsYSxudWxsLG51bGwpfSk7Ylt1Zl09bnVsbH19O2Z1bmN0aW9uIG5sKGEpe3RoaXMuX2ludGVybmFsUm9vdD1hfVxubmwucHJvdG90eXBlLnVuc3RhYmxlX3NjaGVkdWxlSHlkcmF0aW9uPWZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiPUhjKCk7YT17YmxvY2tlZE9uOm51bGwsdGFyZ2V0OmEscHJpb3JpdHk6Yn07Zm9yKHZhciBjPTA7YzxRYy5sZW5ndGgmJjAhPT1iJiZiPFFjW2NdLnByaW9yaXR5O2MrKyk7UWMuc3BsaWNlKGMsMCxhKTswPT09YyYmVmMoYSl9fTtmdW5jdGlvbiBvbChhKXtyZXR1cm4hKCFhfHwxIT09YS5ub2RlVHlwZSYmOSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZSl9ZnVuY3Rpb24gcGwoYSl7cmV0dXJuISghYXx8MSE9PWEubm9kZVR5cGUmJjkhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGUmJig4IT09YS5ub2RlVHlwZXx8XCIgcmVhY3QtbW91bnQtcG9pbnQtdW5zdGFibGUgXCIhPT1hLm5vZGVWYWx1ZSkpfWZ1bmN0aW9uIHFsKCl7fVxuZnVuY3Rpb24gcmwoYSxiLGMsZCxlKXtpZihlKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGY9ZDtkPWZ1bmN0aW9uKCl7dmFyIGE9aGwoZyk7Zi5jYWxsKGEpfX12YXIgZz1mbChiLGQsYSwwLG51bGwsITEsITEsXCJcIixxbCk7YS5fcmVhY3RSb290Q29udGFpbmVyPWc7YVt1Zl09Zy5jdXJyZW50O3NmKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtTaygpO3JldHVybiBnfWZvcig7ZT1hLmxhc3RDaGlsZDspYS5yZW1vdmVDaGlsZChlKTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGg9ZDtkPWZ1bmN0aW9uKCl7dmFyIGE9aGwoayk7aC5jYWxsKGEpfX12YXIgaz1jbChhLDAsITEsbnVsbCxudWxsLCExLCExLFwiXCIscWwpO2EuX3JlYWN0Um9vdENvbnRhaW5lcj1rO2FbdWZdPWsuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7U2soZnVuY3Rpb24oKXtnbChiLGssYyxkKX0pO3JldHVybiBrfVxuZnVuY3Rpb24gc2woYSxiLGMsZCxlKXt2YXIgZj1jLl9yZWFjdFJvb3RDb250YWluZXI7aWYoZil7dmFyIGc9ZjtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZSl7dmFyIGg9ZTtlPWZ1bmN0aW9uKCl7dmFyIGE9aGwoZyk7aC5jYWxsKGEpfX1nbChiLGcsYSxlKX1lbHNlIGc9cmwoYyxiLGEsZSxkKTtyZXR1cm4gaGwoZyl9RWM9ZnVuY3Rpb24oYSl7c3dpdGNoKGEudGFnKXtjYXNlIDM6dmFyIGI9YS5zdGF0ZU5vZGU7aWYoYi5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXt2YXIgYz10YyhiLnBlbmRpbmdMYW5lcyk7MCE9PWMmJihDYyhiLGN8MSksRWsoYixCKCkpLDA9PT0oSyY2KSYmKEhqPUIoKSs1MDAsamcoKSkpfWJyZWFrO2Nhc2UgMTM6U2soZnVuY3Rpb24oKXt2YXIgYj1aZyhhLDEpO2lmKG51bGwhPT1iKXt2YXIgYz1MKCk7bWgoYixhLDEsYyl9fSksamwoYSwxKX19O1xuRmM9ZnVuY3Rpb24oYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9WmcoYSwxMzQyMTc3MjgpO2lmKG51bGwhPT1iKXt2YXIgYz1MKCk7bWgoYixhLDEzNDIxNzcyOCxjKX1qbChhLDEzNDIxNzcyOCl9fTtHYz1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1saChhKSxjPVpnKGEsYik7aWYobnVsbCE9PWMpe3ZhciBkPUwoKTttaChjLGEsYixkKX1qbChhLGIpfX07SGM9ZnVuY3Rpb24oKXtyZXR1cm4gQ307SWM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1DO3RyeXtyZXR1cm4gQz1hLGIoKX1maW5hbGx5e0M9Y319O1xueWI9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaChiKXtjYXNlIFwiaW5wdXRcIjpiYihhLGMpO2I9Yy5uYW1lO2lmKFwicmFkaW9cIj09PWMudHlwZSYmbnVsbCE9Yil7Zm9yKGM9YTtjLnBhcmVudE5vZGU7KWM9Yy5wYXJlbnROb2RlO2M9Yy5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbbmFtZT1cIitKU09OLnN0cmluZ2lmeShcIlwiK2IpKyddW3R5cGU9XCJyYWRpb1wiXScpO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspe3ZhciBkPWNbYl07aWYoZCE9PWEmJmQuZm9ybT09PWEuZm9ybSl7dmFyIGU9RGIoZCk7aWYoIWUpdGhyb3cgRXJyb3IocCg5MCkpO1dhKGQpO2JiKGQsZSl9fX1icmVhaztjYXNlIFwidGV4dGFyZWFcIjppYihhLGMpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpiPWMudmFsdWUsbnVsbCE9YiYmZmIoYSwhIWMubXVsdGlwbGUsYiwhMSl9fTtHYj1SaztIYj1TaztcbnZhciB0bD17dXNpbmdDbGllbnRFbnRyeVBvaW50OiExLEV2ZW50czpbQ2IsdWUsRGIsRWIsRmIsUmtdfSx1bD17ZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6V2MsYnVuZGxlVHlwZTowLHZlcnNpb246XCIxOC4yLjBcIixyZW5kZXJlclBhY2thZ2VOYW1lOlwicmVhY3QtZG9tXCJ9O1xudmFyIHZsPXtidW5kbGVUeXBlOnVsLmJ1bmRsZVR5cGUsdmVyc2lvbjp1bC52ZXJzaW9uLHJlbmRlcmVyUGFja2FnZU5hbWU6dWwucmVuZGVyZXJQYWNrYWdlTmFtZSxyZW5kZXJlckNvbmZpZzp1bC5yZW5kZXJlckNvbmZpZyxvdmVycmlkZUhvb2tTdGF0ZTpudWxsLG92ZXJyaWRlSG9va1N0YXRlRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlSG9va1N0YXRlUmVuYW1lUGF0aDpudWxsLG92ZXJyaWRlUHJvcHM6bnVsbCxvdmVycmlkZVByb3BzRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlUHJvcHNSZW5hbWVQYXRoOm51bGwsc2V0RXJyb3JIYW5kbGVyOm51bGwsc2V0U3VzcGVuc2VIYW5kbGVyOm51bGwsc2NoZWR1bGVVcGRhdGU6bnVsbCxjdXJyZW50RGlzcGF0Y2hlclJlZjp1YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGZpbmRIb3N0SW5zdGFuY2VCeUZpYmVyOmZ1bmN0aW9uKGEpe2E9WmIoYSk7cmV0dXJuIG51bGw9PT1hP251bGw6YS5zdGF0ZU5vZGV9LGZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOnVsLmZpbmRGaWJlckJ5SG9zdEluc3RhbmNlfHxcbmtsLGZpbmRIb3N0SW5zdGFuY2VzRm9yUmVmcmVzaDpudWxsLHNjaGVkdWxlUmVmcmVzaDpudWxsLHNjaGVkdWxlUm9vdDpudWxsLHNldFJlZnJlc2hIYW5kbGVyOm51bGwsZ2V0Q3VycmVudEZpYmVyOm51bGwscmVjb25jaWxlclZlcnNpb246XCIxOC4yLjAtbmV4dC05ZTNiNzcyYjgtMjAyMjA2MDhcIn07aWYoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pe3ZhciB3bD1fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX187aWYoIXdsLmlzRGlzYWJsZWQmJndsLnN1cHBvcnRzRmliZXIpdHJ5e2tjPXdsLmluamVjdCh2bCksbGM9d2x9Y2F0Y2goYSl7fX1leHBvcnRzLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPXRsO1xuZXhwb3J0cy5jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oYSxiKXt2YXIgYz0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZighb2woYikpdGhyb3cgRXJyb3IocCgyMDApKTtyZXR1cm4gZGwoYSxiLG51bGwsYyl9O2V4cG9ydHMuY3JlYXRlUm9vdD1mdW5jdGlvbihhLGIpe2lmKCFvbChhKSl0aHJvdyBFcnJvcihwKDI5OSkpO3ZhciBjPSExLGQ9XCJcIixlPWxsO251bGwhPT1iJiZ2b2lkIDAhPT1iJiYoITA9PT1iLnVuc3RhYmxlX3N0cmljdE1vZGUmJihjPSEwKSx2b2lkIDAhPT1iLmlkZW50aWZpZXJQcmVmaXgmJihkPWIuaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09Yi5vblJlY292ZXJhYmxlRXJyb3ImJihlPWIub25SZWNvdmVyYWJsZUVycm9yKSk7Yj1jbChhLDEsITEsbnVsbCxudWxsLGMsITEsZCxlKTthW3VmXT1iLmN1cnJlbnQ7c2YoOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmEpO3JldHVybiBuZXcgbWwoYil9O1xuZXhwb3J0cy5maW5kRE9NTm9kZT1mdW5jdGlvbihhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKDE9PT1hLm5vZGVUeXBlKXJldHVybiBhO3ZhciBiPWEuX3JlYWN0SW50ZXJuYWxzO2lmKHZvaWQgMD09PWIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLnJlbmRlcil0aHJvdyBFcnJvcihwKDE4OCkpO2E9T2JqZWN0LmtleXMoYSkuam9pbihcIixcIik7dGhyb3cgRXJyb3IocCgyNjgsYSkpO31hPVpiKGIpO2E9bnVsbD09PWE/bnVsbDphLnN0YXRlTm9kZTtyZXR1cm4gYX07ZXhwb3J0cy5mbHVzaFN5bmM9ZnVuY3Rpb24oYSl7cmV0dXJuIFNrKGEpfTtleHBvcnRzLmh5ZHJhdGU9ZnVuY3Rpb24oYSxiLGMpe2lmKCFwbChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBzbChudWxsLGEsYiwhMCxjKX07XG5leHBvcnRzLmh5ZHJhdGVSb290PWZ1bmN0aW9uKGEsYixjKXtpZighb2woYSkpdGhyb3cgRXJyb3IocCg0MDUpKTt2YXIgZD1udWxsIT1jJiZjLmh5ZHJhdGVkU291cmNlc3x8bnVsbCxlPSExLGY9XCJcIixnPWxsO251bGwhPT1jJiZ2b2lkIDAhPT1jJiYoITA9PT1jLnVuc3RhYmxlX3N0cmljdE1vZGUmJihlPSEwKSx2b2lkIDAhPT1jLmlkZW50aWZpZXJQcmVmaXgmJihmPWMuaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09Yy5vblJlY292ZXJhYmxlRXJyb3ImJihnPWMub25SZWNvdmVyYWJsZUVycm9yKSk7Yj1mbChiLG51bGwsYSwxLG51bGwhPWM/YzpudWxsLGUsITEsZixnKTthW3VmXT1iLmN1cnJlbnQ7c2YoYSk7aWYoZClmb3IoYT0wO2E8ZC5sZW5ndGg7YSsrKWM9ZFthXSxlPWMuX2dldFZlcnNpb24sZT1lKGMuX3NvdXJjZSksbnVsbD09Yi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhP2IubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT1bYyxlXTpiLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEucHVzaChjLFxuZSk7cmV0dXJuIG5ldyBubChiKX07ZXhwb3J0cy5yZW5kZXI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFwbChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBzbChudWxsLGEsYiwhMSxjKX07ZXhwb3J0cy51bm1vdW50Q29tcG9uZW50QXROb2RlPWZ1bmN0aW9uKGEpe2lmKCFwbChhKSl0aHJvdyBFcnJvcihwKDQwKSk7cmV0dXJuIGEuX3JlYWN0Um9vdENvbnRhaW5lcj8oU2soZnVuY3Rpb24oKXtzbChudWxsLG51bGwsYSwhMSxmdW5jdGlvbigpe2EuX3JlYWN0Um9vdENvbnRhaW5lcj1udWxsO2FbdWZdPW51bGx9KX0pLCEwKTohMX07ZXhwb3J0cy51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcz1SaztcbmV4cG9ydHMudW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIXBsKGMpKXRocm93IEVycm9yKHAoMjAwKSk7aWYobnVsbD09YXx8dm9pZCAwPT09YS5fcmVhY3RJbnRlcm5hbHMpdGhyb3cgRXJyb3IocCgzOCkpO3JldHVybiBzbChhLGIsYywhMSxkKX07ZXhwb3J0cy52ZXJzaW9uPVwiMTguMi4wLW5leHQtOWUzYjc3MmI4LTIwMjIwNjA4XCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGNoZWNrRENFKCkge1xuICAvKiBnbG9iYWwgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICovXG4gIGlmIChcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fID09PSAndW5kZWZpbmVkJyB8fFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UgIT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhpcyBicmFuY2ggaXMgdW5yZWFjaGFibGUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkXG4gICAgLy8gaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBjb25kaXRpb24gaXMgdHJ1ZSBvbmx5IGluIGRldmVsb3BtZW50LlxuICAgIC8vIFRoZXJlZm9yZSBpZiB0aGUgYnJhbmNoIGlzIHN0aWxsIGhlcmUsIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3YXNuJ3RcbiAgICAvLyBwcm9wZXJseSBhcHBsaWVkLlxuICAgIC8vIERvbid0IGNoYW5nZSB0aGUgbWVzc2FnZS4gUmVhY3QgRGV2VG9vbHMgcmVsaWVzIG9uIGl0LiBBbHNvIG1ha2Ugc3VyZVxuICAgIC8vIHRoaXMgbWVzc2FnZSBkb2Vzbid0IG9jY3VyIGVsc2V3aGVyZSBpbiB0aGlzIGZ1bmN0aW9uLCBvciBpdCB3aWxsIGNhdXNlXG4gICAgLy8gYSBmYWxzZSBwb3NpdGl2ZS5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ15fXicpO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGNvZGUgYWJvdmUgaGFzIGJlZW4gZGVhZCBjb2RlIGVsaW1pbmF0ZWQgKERDRSdkKS5cbiAgICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoY2hlY2tEQ0UpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBEZXZUb29scyBzaG91bGRuJ3QgY3Jhc2ggUmVhY3QsIG5vIG1hdHRlciB3aGF0LlxuICAgIC8vIFdlIHNob3VsZCBzdGlsbCByZXBvcnQgaW4gY2FzZSB3ZSBicmVhayB0aGlzIGNvZGUuXG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICB9XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIC8vIERDRSBjaGVjayBzaG91bGQgaGFwcGVuIGJlZm9yZSBSZWFjdERPTSBidW5kbGUgZXhlY3V0ZXMgc28gdGhhdFxuICAvLyBEZXZUb29scyBjYW4gcmVwb3J0IGJhZCBtaW5pZmljYXRpb24gZHVyaW5nIGluamVjdGlvbi5cbiAgY2hlY2tEQ0UoKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiBzY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO2Z1bmN0aW9uIGYoYSxiKXt2YXIgYz1hLmxlbmd0aDthLnB1c2goYik7YTpmb3IoOzA8Yzspe3ZhciBkPWMtMT4+PjEsZT1hW2RdO2lmKDA8ZyhlLGIpKWFbZF09YixhW2NdPWUsYz1kO2Vsc2UgYnJlYWsgYX19ZnVuY3Rpb24gaChhKXtyZXR1cm4gMD09PWEubGVuZ3RoP251bGw6YVswXX1mdW5jdGlvbiBrKGEpe2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgYj1hWzBdLGM9YS5wb3AoKTtpZihjIT09Yil7YVswXT1jO2E6Zm9yKHZhciBkPTAsZT1hLmxlbmd0aCx3PWU+Pj4xO2Q8dzspe3ZhciBtPTIqKGQrMSktMSxDPWFbbV0sbj1tKzEseD1hW25dO2lmKDA+ZyhDLGMpKW48ZSYmMD5nKHgsQyk/KGFbZF09eCxhW25dPWMsZD1uKTooYVtkXT1DLGFbbV09YyxkPW0pO2Vsc2UgaWYobjxlJiYwPmcoeCxjKSlhW2RdPXgsYVtuXT1jLGQ9bjtlbHNlIGJyZWFrIGF9fXJldHVybiBifVxuZnVuY3Rpb24gZyhhLGIpe3ZhciBjPWEuc29ydEluZGV4LWIuc29ydEluZGV4O3JldHVybiAwIT09Yz9jOmEuaWQtYi5pZH1pZihcIm9iamVjdFwiPT09dHlwZW9mIHBlcmZvcm1hbmNlJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgcGVyZm9ybWFuY2Uubm93KXt2YXIgbD1wZXJmb3JtYW5jZTtleHBvcnRzLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBsLm5vdygpfX1lbHNle3ZhciBwPURhdGUscT1wLm5vdygpO2V4cG9ydHMudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIHAubm93KCktcX19dmFyIHI9W10sdD1bXSx1PTEsdj1udWxsLHk9Myx6PSExLEE9ITEsQj0hMSxEPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6bnVsbCxFPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Om51bGwsRj1cInVuZGVmaW5lZFwiIT09dHlwZW9mIHNldEltbWVkaWF0ZT9zZXRJbW1lZGlhdGU6bnVsbDtcblwidW5kZWZpbmVkXCIhPT10eXBlb2YgbmF2aWdhdG9yJiZ2b2lkIDAhPT1uYXZpZ2F0b3Iuc2NoZWR1bGluZyYmdm9pZCAwIT09bmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcmJm5hdmlnYXRvci5zY2hlZHVsaW5nLmlzSW5wdXRQZW5kaW5nLmJpbmQobmF2aWdhdG9yLnNjaGVkdWxpbmcpO2Z1bmN0aW9uIEcoYSl7Zm9yKHZhciBiPWgodCk7bnVsbCE9PWI7KXtpZihudWxsPT09Yi5jYWxsYmFjaylrKHQpO2Vsc2UgaWYoYi5zdGFydFRpbWU8PWEpayh0KSxiLnNvcnRJbmRleD1iLmV4cGlyYXRpb25UaW1lLGYocixiKTtlbHNlIGJyZWFrO2I9aCh0KX19ZnVuY3Rpb24gSChhKXtCPSExO0coYSk7aWYoIUEpaWYobnVsbCE9PWgocikpQT0hMCxJKEopO2Vsc2V7dmFyIGI9aCh0KTtudWxsIT09YiYmSyhILGIuc3RhcnRUaW1lLWEpfX1cbmZ1bmN0aW9uIEooYSxiKXtBPSExO0ImJihCPSExLEUoTCksTD0tMSk7ej0hMDt2YXIgYz15O3RyeXtHKGIpO2Zvcih2PWgocik7bnVsbCE9PXYmJighKHYuZXhwaXJhdGlvblRpbWU+Yil8fGEmJiFNKCkpOyl7dmFyIGQ9di5jYWxsYmFjaztpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7di5jYWxsYmFjaz1udWxsO3k9di5wcmlvcml0eUxldmVsO3ZhciBlPWQodi5leHBpcmF0aW9uVGltZTw9Yik7Yj1leHBvcnRzLnVuc3RhYmxlX25vdygpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBlP3YuY2FsbGJhY2s9ZTp2PT09aChyKSYmayhyKTtHKGIpfWVsc2UgayhyKTt2PWgocil9aWYobnVsbCE9PXYpdmFyIHc9ITA7ZWxzZXt2YXIgbT1oKHQpO251bGwhPT1tJiZLKEgsbS5zdGFydFRpbWUtYik7dz0hMX1yZXR1cm4gd31maW5hbGx5e3Y9bnVsbCx5PWMsej0hMX19dmFyIE49ITEsTz1udWxsLEw9LTEsUD01LFE9LTE7XG5mdW5jdGlvbiBNKCl7cmV0dXJuIGV4cG9ydHMudW5zdGFibGVfbm93KCktUTxQPyExOiEwfWZ1bmN0aW9uIFIoKXtpZihudWxsIT09Tyl7dmFyIGE9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtRPWE7dmFyIGI9ITA7dHJ5e2I9TyghMCxhKX1maW5hbGx5e2I/UygpOihOPSExLE89bnVsbCl9fWVsc2UgTj0hMX12YXIgUztpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgRilTPWZ1bmN0aW9uKCl7RihSKX07ZWxzZSBpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIE1lc3NhZ2VDaGFubmVsKXt2YXIgVD1uZXcgTWVzc2FnZUNoYW5uZWwsVT1ULnBvcnQyO1QucG9ydDEub25tZXNzYWdlPVI7Uz1mdW5jdGlvbigpe1UucG9zdE1lc3NhZ2UobnVsbCl9fWVsc2UgUz1mdW5jdGlvbigpe0QoUiwwKX07ZnVuY3Rpb24gSShhKXtPPWE7Tnx8KE49ITAsUygpKX1mdW5jdGlvbiBLKGEsYil7TD1EKGZ1bmN0aW9uKCl7YShleHBvcnRzLnVuc3RhYmxlX25vdygpKX0sYil9XG5leHBvcnRzLnVuc3RhYmxlX0lkbGVQcmlvcml0eT01O2V4cG9ydHMudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHk9MTtleHBvcnRzLnVuc3RhYmxlX0xvd1ByaW9yaXR5PTQ7ZXhwb3J0cy51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eT0zO2V4cG9ydHMudW5zdGFibGVfUHJvZmlsaW5nPW51bGw7ZXhwb3J0cy51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eT0yO2V4cG9ydHMudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24oYSl7YS5jYWxsYmFjaz1udWxsfTtleHBvcnRzLnVuc3RhYmxlX2NvbnRpbnVlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7QXx8enx8KEE9ITAsSShKKSl9O1xuZXhwb3J0cy51bnN0YWJsZV9mb3JjZUZyYW1lUmF0ZT1mdW5jdGlvbihhKXswPmF8fDEyNTxhP2NvbnNvbGUuZXJyb3IoXCJmb3JjZUZyYW1lUmF0ZSB0YWtlcyBhIHBvc2l0aXZlIGludCBiZXR3ZWVuIDAgYW5kIDEyNSwgZm9yY2luZyBmcmFtZSByYXRlcyBoaWdoZXIgdGhhbiAxMjUgZnBzIGlzIG5vdCBzdXBwb3J0ZWRcIik6UD0wPGE/TWF0aC5mbG9vcigxRTMvYSk6NX07ZXhwb3J0cy51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbD1mdW5jdGlvbigpe3JldHVybiB5fTtleHBvcnRzLnVuc3RhYmxlX2dldEZpcnN0Q2FsbGJhY2tOb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIGgocil9O2V4cG9ydHMudW5zdGFibGVfbmV4dD1mdW5jdGlvbihhKXtzd2l0Y2goeSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6dmFyIGI9MzticmVhaztkZWZhdWx0OmI9eX12YXIgYz15O3k9Yjt0cnl7cmV0dXJuIGEoKX1maW5hbGx5e3k9Y319O2V4cG9ydHMudW5zdGFibGVfcGF1c2VFeGVjdXRpb249ZnVuY3Rpb24oKXt9O1xuZXhwb3J0cy51bnN0YWJsZV9yZXF1ZXN0UGFpbnQ9ZnVuY3Rpb24oKXt9O2V4cG9ydHMudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5PWZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6YnJlYWs7ZGVmYXVsdDphPTN9dmFyIGM9eTt5PWE7dHJ5e3JldHVybiBiKCl9ZmluYWxseXt5PWN9fTtcbmV4cG9ydHMudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjaz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtcIm9iamVjdFwiPT09dHlwZW9mIGMmJm51bGwhPT1jPyhjPWMuZGVsYXksYz1cIm51bWJlclwiPT09dHlwZW9mIGMmJjA8Yz9kK2M6ZCk6Yz1kO3N3aXRjaChhKXtjYXNlIDE6dmFyIGU9LTE7YnJlYWs7Y2FzZSAyOmU9MjUwO2JyZWFrO2Nhc2UgNTplPTEwNzM3NDE4MjM7YnJlYWs7Y2FzZSA0OmU9MUU0O2JyZWFrO2RlZmF1bHQ6ZT01RTN9ZT1jK2U7YT17aWQ6dSsrLGNhbGxiYWNrOmIscHJpb3JpdHlMZXZlbDphLHN0YXJ0VGltZTpjLGV4cGlyYXRpb25UaW1lOmUsc29ydEluZGV4Oi0xfTtjPmQ/KGEuc29ydEluZGV4PWMsZih0LGEpLG51bGw9PT1oKHIpJiZhPT09aCh0KSYmKEI/KEUoTCksTD0tMSk6Qj0hMCxLKEgsYy1kKSkpOihhLnNvcnRJbmRleD1lLGYocixhKSxBfHx6fHwoQT0hMCxJKEopKSk7cmV0dXJuIGF9O1xuZXhwb3J0cy51bnN0YWJsZV9zaG91bGRZaWVsZD1NO2V4cG9ydHMudW5zdGFibGVfd3JhcENhbGxiYWNrPWZ1bmN0aW9uKGEpe3ZhciBiPXk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9eTt5PWI7dHJ5e3JldHVybiBhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e3k9Y319fTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvc2NoZWR1bGVyLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHN0eWxlc0luRE9NID0gW107XG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRPTS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRPTVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4QnlJZGVudGlmaWVyID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdLFxuICAgICAgc3VwcG9ydHM6IGl0ZW1bNF0sXG4gICAgICBsYXllcjogaXRlbVs1XVxuICAgIH07XG4gICAgaWYgKGluZGV4QnlJZGVudGlmaWVyICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB1cGRhdGVyID0gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLmJ5SW5kZXggPSBpO1xuICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKGksIDAsIHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogdXBkYXRlcixcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuZnVuY3Rpb24gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgYXBpID0gb3B0aW9ucy5kb21BUEkob3B0aW9ucyk7XG4gIGFwaS51cGRhdGUob2JqKTtcbiAgdmFyIHVwZGF0ZXIgPSBmdW5jdGlvbiB1cGRhdGVyKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXAgJiYgbmV3T2JqLnN1cHBvcnRzID09PSBvYmouc3VwcG9ydHMgJiYgbmV3T2JqLmxheWVyID09PSBvYmoubGF5ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXBpLnVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVtb3ZlKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gdXBkYXRlcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuICAgICAgaWYgKHN0eWxlc0luRE9NW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRPTVtfaW5kZXhdLnVwZGF0ZXIoKTtcbiAgICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBtZW1vID0ge307XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gZ2V0VGFyZ2V0KHRhcmdldCkge1xuICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTtcblxuICAgIC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG4gICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgfVxuICByZXR1cm4gbWVtb1t0YXJnZXRdO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydEJ5U2VsZWN0b3IoaW5zZXJ0LCBzdHlsZSkge1xuICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGluc2VydCk7XG4gIGlmICghdGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgfVxuICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRCeVNlbGVjdG9yOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydFN0eWxlRWxlbWVudDsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMoc3R5bGVFbGVtZW50KSB7XG4gIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gXCJ1bmRlZmluZWRcIiA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChvYmouc3VwcG9ydHMsIFwiKSB7XCIpO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIkBsYXllclwiLmNvbmNhdChvYmoubGF5ZXIubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChvYmoubGF5ZXIpIDogXCJcIiwgXCIge1wiKTtcbiAgfVxuICBjc3MgKz0gb2JqLmNzcztcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfVxuXG4gIC8vIEZvciBvbGQgSUVcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlRWxlbWVudC5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHt9LFxuICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7fVxuICAgIH07XG4gIH1cbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGRvbUFQSTsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCkge1xuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKTtcbiAgICB9XG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHN0eWxlVGFnVHJhbnNmb3JtOyIsIi8qIGpzaGludCBicm93c2VyOiB0cnVlICovXG5cbihmdW5jdGlvbiAoKSB7XG5cbi8vIFdlJ2xsIGNvcHkgdGhlIHByb3BlcnRpZXMgYmVsb3cgaW50byB0aGUgbWlycm9yIGRpdi5cbi8vIE5vdGUgdGhhdCBzb21lIGJyb3dzZXJzLCBzdWNoIGFzIEZpcmVmb3gsIGRvIG5vdCBjb25jYXRlbmF0ZSBwcm9wZXJ0aWVzXG4vLyBpbnRvIHRoZWlyIHNob3J0aGFuZCAoZS5nLiBwYWRkaW5nLXRvcCwgcGFkZGluZy1ib3R0b20gZXRjLiAtPiBwYWRkaW5nKSxcbi8vIHNvIHdlIGhhdmUgdG8gbGlzdCBldmVyeSBzaW5nbGUgcHJvcGVydHkgZXhwbGljaXRseS5cbnZhciBwcm9wZXJ0aWVzID0gW1xuICAnZGlyZWN0aW9uJywgIC8vIFJUTCBzdXBwb3J0XG4gICdib3hTaXppbmcnLFxuICAnd2lkdGgnLCAgLy8gb24gQ2hyb21lIGFuZCBJRSwgZXhjbHVkZSB0aGUgc2Nyb2xsYmFyLCBzbyB0aGUgbWlycm9yIGRpdiB3cmFwcyBleGFjdGx5IGFzIHRoZSB0ZXh0YXJlYSBkb2VzXG4gICdoZWlnaHQnLFxuICAnb3ZlcmZsb3dYJyxcbiAgJ292ZXJmbG93WScsICAvLyBjb3B5IHRoZSBzY3JvbGxiYXIgZm9yIElFXG5cbiAgJ2JvcmRlclRvcFdpZHRoJyxcbiAgJ2JvcmRlclJpZ2h0V2lkdGgnLFxuICAnYm9yZGVyQm90dG9tV2lkdGgnLFxuICAnYm9yZGVyTGVmdFdpZHRoJyxcbiAgJ2JvcmRlclN0eWxlJyxcblxuICAncGFkZGluZ1RvcCcsXG4gICdwYWRkaW5nUmlnaHQnLFxuICAncGFkZGluZ0JvdHRvbScsXG4gICdwYWRkaW5nTGVmdCcsXG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2ZvbnRcbiAgJ2ZvbnRTdHlsZScsXG4gICdmb250VmFyaWFudCcsXG4gICdmb250V2VpZ2h0JyxcbiAgJ2ZvbnRTdHJldGNoJyxcbiAgJ2ZvbnRTaXplJyxcbiAgJ2ZvbnRTaXplQWRqdXN0JyxcbiAgJ2xpbmVIZWlnaHQnLFxuICAnZm9udEZhbWlseScsXG5cbiAgJ3RleHRBbGlnbicsXG4gICd0ZXh0VHJhbnNmb3JtJyxcbiAgJ3RleHRJbmRlbnQnLFxuICAndGV4dERlY29yYXRpb24nLCAgLy8gbWlnaHQgbm90IG1ha2UgYSBkaWZmZXJlbmNlLCBidXQgYmV0dGVyIGJlIHNhZmVcblxuICAnbGV0dGVyU3BhY2luZycsXG4gICd3b3JkU3BhY2luZycsXG5cbiAgJ3RhYlNpemUnLFxuICAnTW96VGFiU2l6ZSdcblxuXTtcblxudmFyIGlzQnJvd3NlciA9ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyk7XG52YXIgaXNGaXJlZm94ID0gKGlzQnJvd3NlciAmJiB3aW5kb3cubW96SW5uZXJTY3JlZW5YICE9IG51bGwpO1xuXG5mdW5jdGlvbiBnZXRDYXJldENvb3JkaW5hdGVzKGVsZW1lbnQsIHBvc2l0aW9uLCBvcHRpb25zKSB7XG4gIGlmICghaXNCcm93c2VyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0ZXh0YXJlYS1jYXJldC1wb3NpdGlvbiNnZXRDYXJldENvb3JkaW5hdGVzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBhIGJyb3dzZXInKTtcbiAgfVxuXG4gIHZhciBkZWJ1ZyA9IG9wdGlvbnMgJiYgb3B0aW9ucy5kZWJ1ZyB8fCBmYWxzZTtcbiAgaWYgKGRlYnVnKSB7XG4gICAgdmFyIGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2lucHV0LXRleHRhcmVhLWNhcmV0LXBvc2l0aW9uLW1pcnJvci1kaXYnKTtcbiAgICBpZiAoZWwpIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpO1xuICB9XG5cbiAgLy8gVGhlIG1pcnJvciBkaXYgd2lsbCByZXBsaWNhdGUgdGhlIHRleHRhcmVhJ3Mgc3R5bGVcbiAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBkaXYuaWQgPSAnaW5wdXQtdGV4dGFyZWEtY2FyZXQtcG9zaXRpb24tbWlycm9yLWRpdic7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTtcblxuICB2YXIgc3R5bGUgPSBkaXYuc3R5bGU7XG4gIHZhciBjb21wdXRlZCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlID8gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkgOiBlbGVtZW50LmN1cnJlbnRTdHlsZTsgIC8vIGN1cnJlbnRTdHlsZSBmb3IgSUUgPCA5XG4gIHZhciBpc0lucHV0ID0gZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0lOUFVUJztcblxuICAvLyBEZWZhdWx0IHRleHRhcmVhIHN0eWxlc1xuICBzdHlsZS53aGl0ZVNwYWNlID0gJ3ByZS13cmFwJztcbiAgaWYgKCFpc0lucHV0KVxuICAgIHN0eWxlLndvcmRXcmFwID0gJ2JyZWFrLXdvcmQnOyAgLy8gb25seSBmb3IgdGV4dGFyZWEtc1xuXG4gIC8vIFBvc2l0aW9uIG9mZi1zY3JlZW5cbiAgc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOyAgLy8gcmVxdWlyZWQgdG8gcmV0dXJuIGNvb3JkaW5hdGVzIHByb3Blcmx5XG4gIGlmICghZGVidWcpXG4gICAgc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOyAgLy8gbm90ICdkaXNwbGF5OiBub25lJyBiZWNhdXNlIHdlIHdhbnQgcmVuZGVyaW5nXG5cbiAgLy8gVHJhbnNmZXIgdGhlIGVsZW1lbnQncyBwcm9wZXJ0aWVzIHRvIHRoZSBkaXZcbiAgcHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgaWYgKGlzSW5wdXQgJiYgcHJvcCA9PT0gJ2xpbmVIZWlnaHQnKSB7XG4gICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIDxpbnB1dD5zIGJlY2F1c2UgdGV4dCBpcyByZW5kZXJlZCBjZW50ZXJlZCBhbmQgbGluZSBoZWlnaHQgbWF5IGJlICE9IGhlaWdodFxuICAgICAgc3R5bGUubGluZUhlaWdodCA9IGNvbXB1dGVkLmhlaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbcHJvcF0gPSBjb21wdXRlZFtwcm9wXTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChpc0ZpcmVmb3gpIHtcbiAgICAvLyBGaXJlZm94IGxpZXMgYWJvdXQgdGhlIG92ZXJmbG93IHByb3BlcnR5IGZvciB0ZXh0YXJlYXM6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDI3NVxuICAgIGlmIChlbGVtZW50LnNjcm9sbEhlaWdodCA+IHBhcnNlSW50KGNvbXB1dGVkLmhlaWdodCkpXG4gICAgICBzdHlsZS5vdmVyZmxvd1kgPSAnc2Nyb2xsJztcbiAgfSBlbHNlIHtcbiAgICBzdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nOyAgLy8gZm9yIENocm9tZSB0byBub3QgcmVuZGVyIGEgc2Nyb2xsYmFyOyBJRSBrZWVwcyBvdmVyZmxvd1kgPSAnc2Nyb2xsJ1xuICB9XG5cbiAgZGl2LnRleHRDb250ZW50ID0gZWxlbWVudC52YWx1ZS5zdWJzdHJpbmcoMCwgcG9zaXRpb24pO1xuICAvLyBUaGUgc2Vjb25kIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGlucHV0IHR5cGU9XCJ0ZXh0XCIgdnMgdGV4dGFyZWE6XG4gIC8vIHNwYWNlcyBuZWVkIHRvIGJlIHJlcGxhY2VkIHdpdGggbm9uLWJyZWFraW5nIHNwYWNlcyAtIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzEzNDAyMDM1LzEyNjkwMzdcbiAgaWYgKGlzSW5wdXQpXG4gICAgZGl2LnRleHRDb250ZW50ID0gZGl2LnRleHRDb250ZW50LnJlcGxhY2UoL1xccy9nLCAnXFx1MDBhMCcpO1xuXG4gIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAvLyBXcmFwcGluZyBtdXN0IGJlIHJlcGxpY2F0ZWQgKmV4YWN0bHkqLCBpbmNsdWRpbmcgd2hlbiBhIGxvbmcgd29yZCBnZXRzXG4gIC8vIG9udG8gdGhlIG5leHQgbGluZSwgd2l0aCB3aGl0ZXNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgYmVmb3JlICgjNykuXG4gIC8vIFRoZSAgKm9ubHkqIHJlbGlhYmxlIHdheSB0byBkbyB0aGF0IGlzIHRvIGNvcHkgdGhlICplbnRpcmUqIHJlc3Qgb2YgdGhlXG4gIC8vIHRleHRhcmVhJ3MgY29udGVudCBpbnRvIHRoZSA8c3Bhbj4gY3JlYXRlZCBhdCB0aGUgY2FyZXQgcG9zaXRpb24uXG4gIC8vIEZvciBpbnB1dHMsIGp1c3QgJy4nIHdvdWxkIGJlIGVub3VnaCwgYnV0IG5vIG5lZWQgdG8gYm90aGVyLlxuICBzcGFuLnRleHRDb250ZW50ID0gZWxlbWVudC52YWx1ZS5zdWJzdHJpbmcocG9zaXRpb24pIHx8ICcuJzsgIC8vIHx8IGJlY2F1c2UgYSBjb21wbGV0ZWx5IGVtcHR5IGZhdXggc3BhbiBkb2Vzbid0IHJlbmRlciBhdCBhbGxcbiAgZGl2LmFwcGVuZENoaWxkKHNwYW4pO1xuXG4gIHZhciBjb29yZGluYXRlcyA9IHtcbiAgICB0b3A6IHNwYW4ub2Zmc2V0VG9wICsgcGFyc2VJbnQoY29tcHV0ZWRbJ2JvcmRlclRvcFdpZHRoJ10pLFxuICAgIGxlZnQ6IHNwYW4ub2Zmc2V0TGVmdCArIHBhcnNlSW50KGNvbXB1dGVkWydib3JkZXJMZWZ0V2lkdGgnXSksXG4gICAgaGVpZ2h0OiBwYXJzZUludChjb21wdXRlZFsnbGluZUhlaWdodCddKVxuICB9O1xuXG4gIGlmIChkZWJ1Zykge1xuICAgIHNwYW4uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNhYWEnO1xuICB9IGVsc2Uge1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTtcbiAgfVxuXG4gIHJldHVybiBjb29yZGluYXRlcztcbn1cblxuaWYgKHR5cGVvZiBtb2R1bGUgIT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzICE9ICd1bmRlZmluZWQnKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZ2V0Q2FyZXRDb29yZGluYXRlcztcbn0gZWxzZSBpZihpc0Jyb3dzZXIpIHtcbiAgd2luZG93LmdldENhcmV0Q29vcmRpbmF0ZXMgPSBnZXRDYXJldENvb3JkaW5hdGVzO1xufVxuXG59KCkpO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogU2ltaWxhciB0byBpbnZhcmlhbnQgYnV0IG9ubHkgbG9ncyBhIHdhcm5pbmcgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0LlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBsb2cgaXNzdWVzIGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBpbiBjcml0aWNhbFxuICogcGF0aHMuIFJlbW92aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwga2VlcCB0aGVcbiAqIHNhbWUgbG9naWMgYW5kIGZvbGxvdyB0aGUgc2FtZSBjb2RlIHBhdGhzLlxuICovXG5cbnZhciBfX0RFVl9fID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJztcblxudmFyIHdhcm5pbmcgPSBmdW5jdGlvbigpIHt9O1xuXG5pZiAoX19ERVZfXykge1xuICB2YXIgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGZvcm1hdCwgYXJncykge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuID4gMSA/IGxlbiAtIDEgOiAwKTtcbiAgICBmb3IgKHZhciBrZXkgPSAxOyBrZXkgPCBsZW47IGtleSsrKSB7XG4gICAgICBhcmdzW2tleSAtIDFdID0gYXJndW1lbnRzW2tleV07XG4gICAgfVxuICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArXG4gICAgICBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgICAgfSk7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkge31cbiAgfVxuXG4gIHdhcm5pbmcgPSBmdW5jdGlvbihjb25kaXRpb24sIGZvcm1hdCwgYXJncykge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuID4gMiA/IGxlbiAtIDIgOiAwKTtcbiAgICBmb3IgKHZhciBrZXkgPSAyOyBrZXkgPCBsZW47IGtleSsrKSB7XG4gICAgICBhcmdzW2tleSAtIDJdID0gYXJndW1lbnRzW2tleV07XG4gICAgfVxuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdgd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAnICtcbiAgICAgICAgICAnbWVzc2FnZSBhcmd1bWVudCdcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICBwcmludFdhcm5pbmcuYXBwbHkobnVsbCwgW2Zvcm1hdF0uY29uY2F0KGFyZ3MpKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2FybmluZztcbiIsImlmKHR5cGVvZiBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18xODlfXyA9PT0gJ3VuZGVmaW5lZCcpIHsgdmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ3VuZGVmaW5lZCdcIik7IGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJzsgdGhyb3cgZTsgfVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzE4OV9fOyIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fNjM5X187IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGU7IH07XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5uYyA9IHVuZGVmaW5lZDsiLCJ2YXIgSW5mb1NlcnZpY2U7XG5cbmNsYXNzIE1vY2t1cEluZm9TZXJ2aWNlSW1wbCB7XG4gIGFzeW5jIGdldFNlc3Npb25JbmZvKCkge1xuICAgIGF3YWl0IHRoaXMuc2xlZXAoMzAwMCk7XG4gICAgdGhyb3cgeyBtZXNzYWdlOiBcIlBsZWFzZSBsb2cgaW4hXCIgfTtcbiAgfVxuXG4gIHNsZWVwKG1zKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG4gIH1cblxuICBhc3luYyBsb2dpbih1c2VybmFtZSkge1xuICAgIGF3YWl0IHRoaXMuc2xlZXAoMzAwMCk7XG4gICAgaWYgKHVzZXJuYW1lID09IFwiZXJyb3JcIikge1xuICAgICAgdGhyb3cgeyBtZXNzYWdlOiBcIkxvZ2luIGZhaWxlZCEgQWhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGghXCIgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlYWxtOiBcIk1vY2tSZWFsbVwiLFxuICAgICAgdXNlcm5hbWU6IHVzZXJuYW1lLFxuICAgICAgcm9sZXM6IFtdLFxuICAgICAgZXhwaXJlczogNjAwMDAsXG4gICAgfTtcbiAgfVxuICBhc3luYyBsb2dvdXQoKSB7XG4gICAgYXdhaXQgdGhpcy5zbGVlcCgzMDAwKTtcbiAgfVxufVxuXG50cnkge1xuICBJbmZvU2VydmljZSA9IHJlcXVpcmUoXCJAaW5kaXNjYWxlL2Nhb3NkYi13ZWJ1aS1pbmZvLXNlcnZpY2VcIikuSW5mb1NlcnZpY2U7XG59IGNhdGNoIChlcnJvcikge1xuICBjb25zb2xlLmxvZyhcIlByb3ZpZGluZyBtb2NrdXAgaW1wbGVtZW50YXRpb24gZm9yIEluZm9TZXJ2aWNlXCIpO1xuXG4gIEluZm9TZXJ2aWNlID0gTW9ja3VwSW5mb1NlcnZpY2VJbXBsO1xufVxuXG5leHBvcnQgeyBJbmZvU2VydmljZSB9O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBJbmZvU2VydmljZSB9IGZyb20gXCIuLi9JbmZvU2VydmljZVwiO1xuXG5mdW5jdGlvbiBoYW5kbGVFcnJvcihlcnJvcikge1xuICByZXR1cm4gXCJDb3VsZCBub3QgcmV0cmlldmUgU2VydmVyIFZlcnNpb24gSW5mbzogXCIgKyBlcnJvci5tZXNzYWdlO1xufVxuXG5mdW5jdGlvbiBnZXRTZXJ2ZXJWZXJzaW9uSW5mbyhzZXRWZXJzaW9uKSB7XG4gIGNvbnN0IHNlcnZpY2UgPSBuZXcgSW5mb1NlcnZpY2UoKTtcbiAgc2VydmljZVxuICAgIC5nZXRWZXJzaW9uSW5mbygpXG4gICAgLnRoZW4oKHNlcnZlclZlcnNpb24pID0+IHNlcnZlclZlcnNpb24ubm9CdWlsZCgpLnRvU3RyaW5nKCkpXG4gICAgLmNhdGNoKGhhbmRsZUVycm9yKVxuICAgIC50aGVuKHNldFZlcnNpb24pO1xuICByZXR1cm4gXCIuLi5cIjsgLy8gc29tZSBuaWNlciB3YWl0aW5nIGluZm8/XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZXJ2ZXJWZXJzaW9uSW5mbygpIHtcbiAgdmFyIFt2ZXJzaW9uLCBzZXRWZXJzaW9uXSA9IHVzZVN0YXRlKG51bGwpO1xuICBpZiAodmVyc2lvbiA9PT0gbnVsbCkge1xuICAgIHZlcnNpb24gPSBnZXRTZXJ2ZXJWZXJzaW9uSW5mbyhzZXRWZXJzaW9uKTtcbiAgfVxuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImNhb3NkYi1jb21wLXNlcnZlci12ZXJzaW9uLWluZm9cIj57dmVyc2lvbn08L2Rpdj47XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIGtleSwgaTtcbiAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImltcG9ydCBpbnZhcmlhbnQgZnJvbSAnaW52YXJpYW50JztcblxudmFyIG5vb3AgPSBmdW5jdGlvbiBub29wKCkge307XG5cbmZ1bmN0aW9uIHJlYWRPbmx5UHJvcFR5cGUoaGFuZGxlciwgbmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFtZSkge1xuICAgIGlmIChwcm9wc1twcm9wTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKCFwcm9wc1toYW5kbGVyXSkge1xuICAgICAgICByZXR1cm4gbmV3IEVycm9yKFwiWW91IGhhdmUgcHJvdmlkZWQgYSBgXCIgKyBwcm9wTmFtZSArIFwiYCBwcm9wIHRvIGBcIiArIG5hbWUgKyBcImAgXCIgKyAoXCJ3aXRob3V0IGFuIGBcIiArIGhhbmRsZXIgKyBcImAgaGFuZGxlciBwcm9wLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBcIikgKyAoXCJJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBcIiArIGRlZmF1bHRLZXkocHJvcE5hbWUpICsgXCJgLiBcIikgKyAoXCJPdGhlcndpc2UsIHNldCBgXCIgKyBoYW5kbGVyICsgXCJgLlwiKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5jb250cm9sbGVkUHJvcFR5cGVzKGNvbnRyb2xsZWRWYWx1ZXMsIGRpc3BsYXlOYW1lKSB7XG4gIHZhciBwcm9wVHlwZXMgPSB7fTtcbiAgT2JqZWN0LmtleXMoY29udHJvbGxlZFZhbHVlcykuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgIC8vIGFkZCBkZWZhdWx0IHByb3BUeXBlcyBmb3IgZm9sa3MgdGhhdCB1c2UgcnVudGltZSBjaGVja3NcbiAgICBwcm9wVHlwZXNbZGVmYXVsdEtleShwcm9wKV0gPSBub29wO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBoYW5kbGVyID0gY29udHJvbGxlZFZhbHVlc1twcm9wXTtcbiAgICAgICEodHlwZW9mIGhhbmRsZXIgPT09ICdzdHJpbmcnICYmIGhhbmRsZXIudHJpbSgpLmxlbmd0aCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmNvbnRyb2xsYWJsZSAtIFslc106IHRoZSBwcm9wIGAlc2AgbmVlZHMgYSB2YWxpZCBoYW5kbGVyIGtleSBuYW1lIGluIG9yZGVyIHRvIG1ha2UgaXQgdW5jb250cm9sbGFibGUnLCBkaXNwbGF5TmFtZSwgcHJvcCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgICAgcHJvcFR5cGVzW3Byb3BdID0gcmVhZE9ubHlQcm9wVHlwZShoYW5kbGVyLCBkaXNwbGF5TmFtZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHByb3BUeXBlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3AocHJvcHMsIHByb3ApIHtcbiAgcmV0dXJuIHByb3BzW3Byb3BdICE9PSB1bmRlZmluZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEtleShrZXkpIHtcbiAgcmV0dXJuICdkZWZhdWx0JyArIGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zdWJzdHIoMSk7XG59XG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbkFjY2VwdFJlZihjb21wb25lbnQpIHtcbiAgcmV0dXJuICEhY29tcG9uZW50ICYmICh0eXBlb2YgY29tcG9uZW50ICE9PSAnZnVuY3Rpb24nIHx8IGNvbXBvbmVudC5wcm90b3R5cGUgJiYgY29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KTtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuXG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleShhcmcpIHsgdmFyIGtleSA9IF90b1ByaW1pdGl2ZShhcmcsIFwic3RyaW5nXCIpOyByZXR1cm4gdHlwZW9mIGtleSA9PT0gXCJzeW1ib2xcIiA/IGtleSA6IFN0cmluZyhrZXkpOyB9XG5cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZShpbnB1dCwgaGludCkgeyBpZiAodHlwZW9mIGlucHV0ICE9PSBcIm9iamVjdFwiIHx8IGlucHV0ID09PSBudWxsKSByZXR1cm4gaW5wdXQ7IHZhciBwcmltID0gaW5wdXRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHByaW0gIT09IHVuZGVmaW5lZCkgeyB2YXIgcmVzID0gcHJpbS5jYWxsKGlucHV0LCBoaW50IHx8IFwiZGVmYXVsdFwiKTsgaWYgKHR5cGVvZiByZXMgIT09IFwib2JqZWN0XCIpIHJldHVybiByZXM7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKGhpbnQgPT09IFwic3RyaW5nXCIgPyBTdHJpbmcgOiBOdW1iZXIpKGlucHV0KTsgfVxuXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5mdW5jdGlvbiB1c2VVbmNvbnRyb2xsZWRQcm9wKHByb3BWYWx1ZSwgZGVmYXVsdFZhbHVlLCBoYW5kbGVyKSB7XG4gIHZhciB3YXNQcm9wUmVmID0gdXNlUmVmKHByb3BWYWx1ZSAhPT0gdW5kZWZpbmVkKTtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoZGVmYXVsdFZhbHVlKSxcbiAgICAgIHN0YXRlVmFsdWUgPSBfdXNlU3RhdGVbMF0sXG4gICAgICBzZXRTdGF0ZSA9IF91c2VTdGF0ZVsxXTtcblxuICB2YXIgaXNQcm9wID0gcHJvcFZhbHVlICE9PSB1bmRlZmluZWQ7XG4gIHZhciB3YXNQcm9wID0gd2FzUHJvcFJlZi5jdXJyZW50O1xuICB3YXNQcm9wUmVmLmN1cnJlbnQgPSBpc1Byb3A7XG4gIC8qKlxuICAgKiBJZiBhIHByb3Agc3dpdGNoZXMgZnJvbSBjb250cm9sbGVkIHRvIFVuY29udHJvbGxlZFxuICAgKiByZXNldCBpdHMgdmFsdWUgdG8gdGhlIGRlZmF1bHRWYWx1ZVxuICAgKi9cblxuICBpZiAoIWlzUHJvcCAmJiB3YXNQcm9wICYmIHN0YXRlVmFsdWUgIT09IGRlZmF1bHRWYWx1ZSkge1xuICAgIHNldFN0YXRlKGRlZmF1bHRWYWx1ZSk7XG4gIH1cblxuICByZXR1cm4gW2lzUHJvcCA/IHByb3BWYWx1ZSA6IHN0YXRlVmFsdWUsIHVzZUNhbGxiYWNrKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIGlmIChoYW5kbGVyKSBoYW5kbGVyLmFwcGx5KHZvaWQgMCwgW3ZhbHVlXS5jb25jYXQoYXJncykpO1xuICAgIHNldFN0YXRlKHZhbHVlKTtcbiAgfSwgW2hhbmRsZXJdKV07XG59XG5cbmV4cG9ydCB7IHVzZVVuY29udHJvbGxlZFByb3AgfTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVVuY29udHJvbGxlZChwcm9wcywgY29uZmlnKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhjb25maWcpLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBmaWVsZE5hbWUpIHtcbiAgICB2YXIgX2V4dGVuZHMyO1xuXG4gICAgdmFyIF9yZWYgPSByZXN1bHQsXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IF9yZWZbVXRpbHMuZGVmYXVsdEtleShmaWVsZE5hbWUpXSxcbiAgICAgICAgcHJvcHNWYWx1ZSA9IF9yZWZbZmllbGROYW1lXSxcbiAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIFtVdGlscy5kZWZhdWx0S2V5KGZpZWxkTmFtZSksIGZpZWxkTmFtZV0ubWFwKF90b1Byb3BlcnR5S2V5KSk7XG5cbiAgICB2YXIgaGFuZGxlck5hbWUgPSBjb25maWdbZmllbGROYW1lXTtcblxuICAgIHZhciBfdXNlVW5jb250cm9sbGVkUHJvcCA9IHVzZVVuY29udHJvbGxlZFByb3AocHJvcHNWYWx1ZSwgZGVmYXVsdFZhbHVlLCBwcm9wc1toYW5kbGVyTmFtZV0pLFxuICAgICAgICB2YWx1ZSA9IF91c2VVbmNvbnRyb2xsZWRQcm9wWzBdLFxuICAgICAgICBoYW5kbGVyID0gX3VzZVVuY29udHJvbGxlZFByb3BbMV07XG5cbiAgICByZXR1cm4gX2V4dGVuZHMoe30sIHJlc3QsIChfZXh0ZW5kczIgPSB7fSwgX2V4dGVuZHMyW2ZpZWxkTmFtZV0gPSB2YWx1ZSwgX2V4dGVuZHMyW2hhbmRsZXJOYW1lXSA9IGhhbmRsZXIsIF9leHRlbmRzMikpO1xuICB9LCBwcm9wcyk7XG59IiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIENyZWF0ZXMgYSBgUmVmYCB3aG9zZSB2YWx1ZSBpcyB1cGRhdGVkIGluIGFuIGVmZmVjdCwgZW5zdXJpbmcgdGhlIG1vc3QgcmVjZW50XG4gKiB2YWx1ZSBpcyB0aGUgb25lIHJlbmRlcmVkIHdpdGguIEdlbmVyYWxseSBvbmx5IHJlcXVpcmVkIGZvciBDb25jdXJyZW50IG1vZGUgdXNhZ2VcbiAqIHdoZXJlIHByZXZpb3VzIHdvcmsgaW4gYHJlbmRlcigpYCBtYXkgYmUgZGlzY2FyZGVkIGJlZm9yZSBiZWluZyB1c2VkLlxuICpcbiAqIFRoaXMgaXMgc2FmZSB0byBhY2Nlc3MgaW4gYW4gZXZlbnQgaGFuZGxlci5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIGBSZWZgIHZhbHVlXG4gKi9cblxuZnVuY3Rpb24gdXNlQ29tbWl0dGVkUmVmKHZhbHVlKSB7XG4gIHZhciByZWYgPSB1c2VSZWYodmFsdWUpO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH0sIFt2YWx1ZV0pO1xuICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VDb21taXR0ZWRSZWY7IiwiaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlQ29tbWl0dGVkUmVmIGZyb20gJy4vdXNlQ29tbWl0dGVkUmVmJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUV2ZW50Q2FsbGJhY2soZm4pIHtcbiAgdmFyIHJlZiA9IHVzZUNvbW1pdHRlZFJlZihmbik7XG4gIHJldHVybiB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHJlZi5jdXJyZW50ICYmIHJlZi5jdXJyZW50LmFwcGx5KHJlZiwgYXJndW1lbnRzKTtcbiAgfSwgW3JlZl0pO1xufSIsImltcG9ydCB7IHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBUcmFjayB3aGV0aGVyIGEgY29tcG9uZW50IGlzIGN1cnJlbnQgbW91bnRlZC4gR2VuZXJhbGx5IGxlc3MgcHJlZmVyYWJsZSB0aGFuXG4gKiBwcm9wZXJsbHkgY2FuY2VsaW5nIGVmZmVjdHMgc28gdGhleSBkb24ndCBydW4gYWZ0ZXIgYSBjb21wb25lbnQgaXMgdW5tb3VudGVkLFxuICogYnV0IGhlbHBmdWwgaW4gY2FzZXMgd2hlcmUgdGhhdCBpc24ndCBmZWFzaWJsZSwgc3VjaCBhcyBhIGBQcm9taXNlYCByZXNvbHV0aW9uLlxuICpcbiAqIEByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBjdXJyZW50IGlzTW91bnRlZCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlKG51bGwpXG4gKiBjb25zdCBpc01vdW50ZWQgPSB1c2VNb3VudGVkKClcbiAqXG4gKiB1c2VFZmZlY3QoKCkgPT4ge1xuICogICBmZXRjaGRhdGEoKS50aGVuKChuZXdEYXRhKSA9PiB7XG4gKiAgICAgIGlmIChpc01vdW50ZWQoKSkge1xuICogICAgICAgIHNldERhdGEobmV3RGF0YSk7XG4gKiAgICAgIH1cbiAqICAgfSlcbiAqIH0pXG4gKiBgYGBcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VNb3VudGVkKCkge1xuICB2YXIgbW91bnRlZCA9IHVzZVJlZih0cnVlKTtcbiAgdmFyIGlzTW91bnRlZCA9IHVzZVJlZihmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG1vdW50ZWQuY3VycmVudDtcbiAgfSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgbW91bnRlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgbW91bnRlZC5jdXJyZW50ID0gZmFsc2U7XG4gICAgfTtcbiAgfSwgW10pO1xuICByZXR1cm4gaXNNb3VudGVkLmN1cnJlbnQ7XG59IiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIFN0b3JlIHRoZSBsYXN0IG9mIHNvbWUgdmFsdWUuIFRyYWNrZWQgdmlhIGEgYFJlZmAgb25seSB1cGRhdGluZyBpdFxuICogYWZ0ZXIgdGhlIGNvbXBvbmVudCByZW5kZXJzLlxuICpcbiAqIEhlbHBmdWwgaWYgeW91IG5lZWQgdG8gY29tcGFyZSBhIHByb3AgdmFsdWUgdG8gaXQncyBwcmV2aW91cyB2YWx1ZSBkdXJpbmcgcmVuZGVyLlxuICpcbiAqIGBgYHRzXG4gKiBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMpIHtcbiAqICAgY29uc3QgbGFzdFByb3BzID0gdXNlUHJldmlvdXMocHJvcHMpXG4gKlxuICogICBpZiAobGFzdFByb3BzLmZvbyAhPT0gcHJvcHMuZm9vKVxuICogICAgIHJlc2V0VmFsdWVGcm9tUHJvcHMocHJvcHMuZm9vKVxuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byB0cmFja1xuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVByZXZpb3VzKHZhbHVlKSB7XG4gIHZhciByZWYgPSB1c2VSZWYobnVsbCk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZWYuY3VycmVudDtcbn0iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbnZhciBpc1JlYWN0TmF0aXZlID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgLy8gQHRzLWlnbm9yZVxuZ2xvYmFsLm5hdmlnYXRvciAmJiAvLyBAdHMtaWdub3JlXG5nbG9iYWwubmF2aWdhdG9yLnByb2R1Y3QgPT09ICdSZWFjdE5hdGl2ZSc7XG52YXIgaXNET00gPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnO1xuLyoqXG4gKiBJcyBgdXNlTGF5b3V0RWZmZWN0YCBpbiBhIERPTSBvciBSZWFjdCBOYXRpdmUgZW52aXJvbm1lbnQsIG90aGVyd2lzZSByZXNvbHZlcyB0byB1c2VFZmZlY3RcbiAqIE9ubHkgdXNlZnVsIHRvIGF2b2lkIHRoZSBjb25zb2xlIHdhcm5pbmcuXG4gKlxuICogUFJFRkVSIGB1c2VFZmZlY3RgIFVOTEVTUyBZT1UgS05PVyBXSEFUIFlPVSBBUkUgRE9JTkcuXG4gKlxuICogQGNhdGVnb3J5IGVmZmVjdHNcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBpc0RPTSB8fCBpc1JlYWN0TmF0aXZlID8gdXNlTGF5b3V0RWZmZWN0IDogdXNlRWZmZWN0OyIsImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUVmZmVjdCBmcm9tICcuL3VzZUlzb21vcnBoaWNFZmZlY3QnO1xudmFyIHRhcmdldE1hcCA9IG5ldyBXZWFrTWFwKCk7XG52YXIgcmVzaXplT2JzZXJ2ZXI7XG5cbmZ1bmN0aW9uIGdldFJlc2l6ZU9ic2VydmVyKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmV0dXJuLWFzc2lnblxuICByZXR1cm4gcmVzaXplT2JzZXJ2ZXIgPSByZXNpemVPYnNlcnZlciB8fCBuZXcgd2luZG93LlJlc2l6ZU9ic2VydmVyKGZ1bmN0aW9uIChlbnRyaWVzKSB7XG4gICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgdmFyIGhhbmRsZXIgPSB0YXJnZXRNYXAuZ2V0KGVudHJ5LnRhcmdldCk7XG4gICAgICBpZiAoaGFuZGxlcikgaGFuZGxlcihlbnRyeS5jb250ZW50UmVjdCk7XG4gICAgfSk7XG4gIH0pO1xufVxuLyoqXG4gKiBFZmZpY2llbnRseSBvYnNlcnZlIHNpemUgY2hhbmdlcyBvbiBhbiBlbGVtZW50LiBEZXBlbmRzIG9uIHRoZSBgUmVzaXplT2JzZXJ2ZXJgIGFwaSxcbiAqIGFuZCBwb2x5ZmlsbHMgYXJlIG5lZWRlZCBpbiBvbGRlciBicm93c2Vycy5cbiAqXG4gKiBgYGB0c1xuICogY29uc3QgW3JlZiwgYXR0YWNoUmVmXSA9IHVzZUNhbGxiYWNrUmVmKG51bGwpO1xuICpcbiAqIGNvbnN0IHJlY3QgPSB1c2VSZXNpemVPYnNlcnZlcihyZWYpO1xuICpcbiAqIHJldHVybiAoXG4gKiAgPGRpdiByZWY9e2F0dGFjaFJlZn0+XG4gKiAgICB7SlNPTi5zdHJpbmdpZnkocmVjdCl9XG4gKiAgPC9kaXY+XG4gKiApXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgRE9NIGVsZW1lbnQgdG8gb2JzZXJ2ZVxuICovXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlUmVzaXplT2JzZXJ2ZXIoZWxlbWVudCkge1xuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUobnVsbCksXG4gICAgICByZWN0ID0gX3VzZVN0YXRlWzBdLFxuICAgICAgc2V0UmVjdCA9IF91c2VTdGF0ZVsxXTtcblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuO1xuICAgIGdldFJlc2l6ZU9ic2VydmVyKCkub2JzZXJ2ZShlbGVtZW50KTtcbiAgICBzZXRSZWN0KGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuICAgIHRhcmdldE1hcC5zZXQoZWxlbWVudCwgZnVuY3Rpb24gKHJlY3QpIHtcbiAgICAgIHNldFJlY3QocmVjdCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRhcmdldE1hcC5kZWxldGUoZWxlbWVudCk7XG4gICAgfTtcbiAgfSwgW2VsZW1lbnRdKTtcbiAgcmV0dXJuIHJlY3Q7XG59IiwiY29uc3QgX2V4Y2x1ZGVkID0gW1wiYXNcIiwgXCJkaXNhYmxlZFwiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZnVuY3Rpb24gaXNUcml2aWFsSHJlZihocmVmKSB7XG4gIHJldHVybiAhaHJlZiB8fCBocmVmLnRyaW0oKSA9PT0gJyMnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVzZUJ1dHRvblByb3BzKHtcbiAgdGFnTmFtZSxcbiAgZGlzYWJsZWQsXG4gIGhyZWYsXG4gIHRhcmdldCxcbiAgcmVsLFxuICByb2xlLFxuICBvbkNsaWNrLFxuICB0YWJJbmRleCA9IDAsXG4gIHR5cGVcbn0pIHtcbiAgaWYgKCF0YWdOYW1lKSB7XG4gICAgaWYgKGhyZWYgIT0gbnVsbCB8fCB0YXJnZXQgIT0gbnVsbCB8fCByZWwgIT0gbnVsbCkge1xuICAgICAgdGFnTmFtZSA9ICdhJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGFnTmFtZSA9ICdidXR0b24nO1xuICAgIH1cbiAgfVxuICBjb25zdCBtZXRhID0ge1xuICAgIHRhZ05hbWVcbiAgfTtcbiAgaWYgKHRhZ05hbWUgPT09ICdidXR0b24nKSB7XG4gICAgcmV0dXJuIFt7XG4gICAgICB0eXBlOiB0eXBlIHx8ICdidXR0b24nLFxuICAgICAgZGlzYWJsZWRcbiAgICB9LCBtZXRhXTtcbiAgfVxuICBjb25zdCBoYW5kbGVDbGljayA9IGV2ZW50ID0+IHtcbiAgICBpZiAoZGlzYWJsZWQgfHwgdGFnTmFtZSA9PT0gJ2EnICYmIGlzVHJpdmlhbEhyZWYoaHJlZikpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG9uQ2xpY2sgPT0gbnVsbCA/IHZvaWQgMCA6IG9uQ2xpY2soZXZlbnQpO1xuICB9O1xuICBjb25zdCBoYW5kbGVLZXlEb3duID0gZXZlbnQgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGhhbmRsZUNsaWNrKGV2ZW50KTtcbiAgICB9XG4gIH07XG4gIGlmICh0YWdOYW1lID09PSAnYScpIHtcbiAgICAvLyBFbnN1cmUgdGhlcmUncyBhIGhyZWYgc28gRW50ZXIgY2FuIHRyaWdnZXIgYW5jaG9yIGJ1dHRvbi5cbiAgICBocmVmIHx8IChocmVmID0gJyMnKTtcbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIGhyZWYgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBbe1xuICAgIHJvbGU6IHJvbGUgIT0gbnVsbCA/IHJvbGUgOiAnYnV0dG9uJyxcbiAgICAvLyBleHBsaWNpdGx5IHVuZGVmaW5lZCBzbyB0aGF0IGl0IG92ZXJyaWRlcyB0aGUgcHJvcHMgZGlzYWJsZWQgaW4gYSBzcHJlYWRcbiAgICAvLyBlLmcuIDxUYWcgey4uLnByb3BzfSB7Li4uaG9va1Byb3BzfSAvPlxuICAgIGRpc2FibGVkOiB1bmRlZmluZWQsXG4gICAgdGFiSW5kZXg6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogdGFiSW5kZXgsXG4gICAgaHJlZixcbiAgICB0YXJnZXQ6IHRhZ05hbWUgPT09ICdhJyA/IHRhcmdldCA6IHVuZGVmaW5lZCxcbiAgICAnYXJpYS1kaXNhYmxlZCc6ICFkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGRpc2FibGVkLFxuICAgIHJlbDogdGFnTmFtZSA9PT0gJ2EnID8gcmVsIDogdW5kZWZpbmVkLFxuICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgIG9uS2V5RG93bjogaGFuZGxlS2V5RG93blxuICB9LCBtZXRhXTtcbn1cbmNvbnN0IEJ1dHRvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChfcmVmLCByZWYpID0+IHtcbiAgbGV0IHtcbiAgICAgIGFzOiBhc1Byb3AsXG4gICAgICBkaXNhYmxlZFxuICAgIH0gPSBfcmVmLFxuICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgW2J1dHRvblByb3BzLCB7XG4gICAgdGFnTmFtZTogQ29tcG9uZW50XG4gIH1dID0gdXNlQnV0dG9uUHJvcHMoT2JqZWN0LmFzc2lnbih7XG4gICAgdGFnTmFtZTogYXNQcm9wLFxuICAgIGRpc2FibGVkXG4gIH0sIHByb3BzKSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCBidXR0b25Qcm9wcywge1xuICAgIHJlZjogcmVmXG4gIH0pKTtcbn0pO1xuQnV0dG9uLmRpc3BsYXlOYW1lID0gJ0J1dHRvbic7XG5leHBvcnQgZGVmYXVsdCBCdXR0b247IiwiY29uc3QgX2V4Y2x1ZGVkID0gW1wib25LZXlEb3duXCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9hbmNob3ItaGFzLWNvbnRlbnQgKi9cblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJ0ByZXN0YXJ0L2hvb2tzJztcbmltcG9ydCB7IHVzZUJ1dHRvblByb3BzIH0gZnJvbSAnLi9CdXR0b24nO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBmdW5jdGlvbiBpc1RyaXZpYWxIcmVmKGhyZWYpIHtcbiAgcmV0dXJuICFocmVmIHx8IGhyZWYudHJpbSgpID09PSAnIyc7XG59XG4vKipcbiAqIEFuIGdlbmVyaWMgYDxhPmAgY29tcG9uZW50IHRoYXQgY292ZXJzIGEgZmV3IEExMXkgY2FzZXMsIGVuc3VyaW5nIHRoYXRcbiAqIGNhc2VzIHdoZXJlIHRoZSBgaHJlZmAgaXMgbWlzc2luZyBvciB0cml2aWFsIGxpa2UgXCIjXCIgYXJlIHRyZWF0ZWQgbGlrZSBidXR0b25zLlxuICovXG5jb25zdCBBbmNob3IgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoX3JlZiwgcmVmKSA9PiB7XG4gIGxldCB7XG4gICAgICBvbktleURvd25cbiAgICB9ID0gX3JlZixcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IFtidXR0b25Qcm9wc10gPSB1c2VCdXR0b25Qcm9wcyhPYmplY3QuYXNzaWduKHtcbiAgICB0YWdOYW1lOiAnYSdcbiAgfSwgcHJvcHMpKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soZSA9PiB7XG4gICAgYnV0dG9uUHJvcHMub25LZXlEb3duKGUpO1xuICAgIG9uS2V5RG93biA9PSBudWxsID8gdm9pZCAwIDogb25LZXlEb3duKGUpO1xuICB9KTtcbiAgaWYgKGlzVHJpdmlhbEhyZWYocHJvcHMuaHJlZikgfHwgcHJvcHMucm9sZSA9PT0gJ2J1dHRvbicpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goXCJhXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgcmVmOiByZWZcbiAgICB9LCBwcm9wcywgYnV0dG9uUHJvcHMsIHtcbiAgICAgIG9uS2V5RG93bjogaGFuZGxlS2V5RG93blxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goXCJhXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIHJlZjogcmVmXG4gIH0sIHByb3BzLCB7XG4gICAgb25LZXlEb3duOiBvbktleURvd25cbiAgfSkpO1xufSk7XG5BbmNob3IuZGlzcGxheU5hbWUgPSAnQW5jaG9yJztcbmV4cG9ydCBkZWZhdWx0IEFuY2hvcjsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0JSRUFLUE9JTlRTID0gWyd4eGwnLCAneGwnLCAnbGcnLCAnbWQnLCAnc20nLCAneHMnXTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX01JTl9CUkVBS1BPSU5UID0gJ3hzJztcbmNvbnN0IFRoZW1lQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgcHJlZml4ZXM6IHt9LFxuICBicmVha3BvaW50czogREVGQVVMVF9CUkVBS1BPSU5UUyxcbiAgbWluQnJlYWtwb2ludDogREVGQVVMVF9NSU5fQlJFQUtQT0lOVFxufSk7XG5jb25zdCB7XG4gIENvbnN1bWVyLFxuICBQcm92aWRlclxufSA9IFRoZW1lQ29udGV4dDtcbmZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIoe1xuICBwcmVmaXhlcyA9IHt9LFxuICBicmVha3BvaW50cyA9IERFRkFVTFRfQlJFQUtQT0lOVFMsXG4gIG1pbkJyZWFrcG9pbnQgPSBERUZBVUxUX01JTl9CUkVBS1BPSU5ULFxuICBkaXIsXG4gIGNoaWxkcmVuXG59KSB7XG4gIGNvbnN0IGNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBwcmVmaXhlczoge1xuICAgICAgLi4ucHJlZml4ZXNcbiAgICB9LFxuICAgIGJyZWFrcG9pbnRzLFxuICAgIG1pbkJyZWFrcG9pbnQsXG4gICAgZGlyXG4gIH0pLCBbcHJlZml4ZXMsIGJyZWFrcG9pbnRzLCBtaW5CcmVha3BvaW50LCBkaXJdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGNvbnRleHRWYWx1ZSxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlQm9vdHN0cmFwUHJlZml4KHByZWZpeCwgZGVmYXVsdFByZWZpeCkge1xuICBjb25zdCB7XG4gICAgcHJlZml4ZXNcbiAgfSA9IHVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbiAgcmV0dXJuIHByZWZpeCB8fCBwcmVmaXhlc1tkZWZhdWx0UHJlZml4XSB8fCBkZWZhdWx0UHJlZml4O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVzZUJvb3RzdHJhcEJyZWFrcG9pbnRzKCkge1xuICBjb25zdCB7XG4gICAgYnJlYWtwb2ludHNcbiAgfSA9IHVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbiAgcmV0dXJuIGJyZWFrcG9pbnRzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVzZUJvb3RzdHJhcE1pbkJyZWFrcG9pbnQoKSB7XG4gIGNvbnN0IHtcbiAgICBtaW5CcmVha3BvaW50XG4gIH0gPSB1c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIHJldHVybiBtaW5CcmVha3BvaW50O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzUlRMKCkge1xuICBjb25zdCB7XG4gICAgZGlyXG4gIH0gPSB1c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIHJldHVybiBkaXIgPT09ICdydGwnO1xufVxuZnVuY3Rpb24gY3JlYXRlQm9vdHN0cmFwQ29tcG9uZW50KENvbXBvbmVudCwgb3B0cykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKSBvcHRzID0ge1xuICAgIHByZWZpeDogb3B0c1xuICB9O1xuICBjb25zdCBpc0NsYXNzeSA9IENvbXBvbmVudC5wcm90b3R5cGUgJiYgQ29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50O1xuICAvLyBJZiBpdCdzIGEgZnVuY3Rpb25hbCBjb21wb25lbnQgbWFrZSBzdXJlIHdlIGRvbid0IGJyZWFrIGl0IHdpdGggYSByZWZcbiAgY29uc3Qge1xuICAgIHByZWZpeCxcbiAgICBmb3J3YXJkUmVmQXMgPSBpc0NsYXNzeSA/ICdyZWYnIDogJ2lubmVyUmVmJ1xuICB9ID0gb3B0cztcbiAgY29uc3QgV3JhcHBlZCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gICAgLi4ucHJvcHNcbiAgfSwgcmVmKSA9PiB7XG4gICAgcHJvcHNbZm9yd2FyZFJlZkFzXSA9IHJlZjtcbiAgICBjb25zdCBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChwcm9wcy5ic1ByZWZpeCwgcHJlZml4KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGJzUHJlZml4OiBic1ByZWZpeFxuICAgIH0pO1xuICB9KTtcbiAgV3JhcHBlZC5kaXNwbGF5TmFtZSA9IGBCb290c3RyYXAoJHtDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWV9KWA7XG4gIHJldHVybiBXcmFwcGVkO1xufVxuZXhwb3J0IHsgY3JlYXRlQm9vdHN0cmFwQ29tcG9uZW50LCBDb25zdW1lciBhcyBUaGVtZUNvbnN1bWVyIH07XG5leHBvcnQgZGVmYXVsdCBUaGVtZVByb3ZpZGVyOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gIF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICAgIG8uX19wcm90b19fID0gcDtcbiAgICByZXR1cm4gbztcbiAgfTtcbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTtcbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlZmF1bHQgUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTsiLCJpbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfaW5oZXJpdHNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNMb29zZVwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBjb25maWcgZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgdGltZW91dHNTaGFwZSB9IGZyb20gJy4vdXRpbHMvUHJvcFR5cGVzJztcbmltcG9ydCBUcmFuc2l0aW9uR3JvdXBDb250ZXh0IGZyb20gJy4vVHJhbnNpdGlvbkdyb3VwQ29udGV4dCc7XG5pbXBvcnQgeyBmb3JjZVJlZmxvdyB9IGZyb20gJy4vdXRpbHMvcmVmbG93JztcbmV4cG9ydCB2YXIgVU5NT1VOVEVEID0gJ3VubW91bnRlZCc7XG5leHBvcnQgdmFyIEVYSVRFRCA9ICdleGl0ZWQnO1xuZXhwb3J0IHZhciBFTlRFUklORyA9ICdlbnRlcmluZyc7XG5leHBvcnQgdmFyIEVOVEVSRUQgPSAnZW50ZXJlZCc7XG5leHBvcnQgdmFyIEVYSVRJTkcgPSAnZXhpdGluZyc7XG4vKipcbiAqIFRoZSBUcmFuc2l0aW9uIGNvbXBvbmVudCBsZXRzIHlvdSBkZXNjcmliZSBhIHRyYW5zaXRpb24gZnJvbSBvbmUgY29tcG9uZW50XG4gKiBzdGF0ZSB0byBhbm90aGVyIF9vdmVyIHRpbWVfIHdpdGggYSBzaW1wbGUgZGVjbGFyYXRpdmUgQVBJLiBNb3N0IGNvbW1vbmx5XG4gKiBpdCdzIHVzZWQgdG8gYW5pbWF0ZSB0aGUgbW91bnRpbmcgYW5kIHVubW91bnRpbmcgb2YgYSBjb21wb25lbnQsIGJ1dCBjYW4gYWxzb1xuICogYmUgdXNlZCB0byBkZXNjcmliZSBpbi1wbGFjZSB0cmFuc2l0aW9uIHN0YXRlcyBhcyB3ZWxsLlxuICpcbiAqIC0tLVxuICpcbiAqICoqTm90ZSoqOiBgVHJhbnNpdGlvbmAgaXMgYSBwbGF0Zm9ybS1hZ25vc3RpYyBiYXNlIGNvbXBvbmVudC4gSWYgeW91J3JlIHVzaW5nXG4gKiB0cmFuc2l0aW9ucyBpbiBDU1MsIHlvdSdsbCBwcm9iYWJseSB3YW50IHRvIHVzZVxuICogW2BDU1NUcmFuc2l0aW9uYF0oaHR0cHM6Ly9yZWFjdGNvbW11bml0eS5vcmcvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9jc3MtdHJhbnNpdGlvbilcbiAqIGluc3RlYWQuIEl0IGluaGVyaXRzIGFsbCB0aGUgZmVhdHVyZXMgb2YgYFRyYW5zaXRpb25gLCBidXQgY29udGFpbnNcbiAqIGFkZGl0aW9uYWwgZmVhdHVyZXMgbmVjZXNzYXJ5IHRvIHBsYXkgbmljZSB3aXRoIENTUyB0cmFuc2l0aW9ucyAoaGVuY2UgdGhlXG4gKiBuYW1lIG9mIHRoZSBjb21wb25lbnQpLlxuICpcbiAqIC0tLVxuICpcbiAqIEJ5IGRlZmF1bHQgdGhlIGBUcmFuc2l0aW9uYCBjb21wb25lbnQgZG9lcyBub3QgYWx0ZXIgdGhlIGJlaGF2aW9yIG9mIHRoZVxuICogY29tcG9uZW50IGl0IHJlbmRlcnMsIGl0IG9ubHkgdHJhY2tzIFwiZW50ZXJcIiBhbmQgXCJleGl0XCIgc3RhdGVzIGZvciB0aGVcbiAqIGNvbXBvbmVudHMuIEl0J3MgdXAgdG8geW91IHRvIGdpdmUgbWVhbmluZyBhbmQgZWZmZWN0IHRvIHRob3NlIHN0YXRlcy4gRm9yXG4gKiBleGFtcGxlIHdlIGNhbiBhZGQgc3R5bGVzIHRvIGEgY29tcG9uZW50IHdoZW4gaXQgZW50ZXJzIG9yIGV4aXRzOlxuICpcbiAqIGBgYGpzeFxuICogaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAnO1xuICpcbiAqIGNvbnN0IGR1cmF0aW9uID0gMzAwO1xuICpcbiAqIGNvbnN0IGRlZmF1bHRTdHlsZSA9IHtcbiAqICAgdHJhbnNpdGlvbjogYG9wYWNpdHkgJHtkdXJhdGlvbn1tcyBlYXNlLWluLW91dGAsXG4gKiAgIG9wYWNpdHk6IDAsXG4gKiB9XG4gKlxuICogY29uc3QgdHJhbnNpdGlvblN0eWxlcyA9IHtcbiAqICAgZW50ZXJpbmc6IHsgb3BhY2l0eTogMSB9LFxuICogICBlbnRlcmVkOiAgeyBvcGFjaXR5OiAxIH0sXG4gKiAgIGV4aXRpbmc6ICB7IG9wYWNpdHk6IDAgfSxcbiAqICAgZXhpdGVkOiAgeyBvcGFjaXR5OiAwIH0sXG4gKiB9O1xuICpcbiAqIGNvbnN0IEZhZGUgPSAoeyBpbjogaW5Qcm9wIH0pID0+IChcbiAqICAgPFRyYW5zaXRpb24gaW49e2luUHJvcH0gdGltZW91dD17ZHVyYXRpb259PlxuICogICAgIHtzdGF0ZSA9PiAoXG4gKiAgICAgICA8ZGl2IHN0eWxlPXt7XG4gKiAgICAgICAgIC4uLmRlZmF1bHRTdHlsZSxcbiAqICAgICAgICAgLi4udHJhbnNpdGlvblN0eWxlc1tzdGF0ZV1cbiAqICAgICAgIH19PlxuICogICAgICAgICBJJ20gYSBmYWRlIFRyYW5zaXRpb24hXG4gKiAgICAgICA8L2Rpdj5cbiAqICAgICApfVxuICogICA8L1RyYW5zaXRpb24+XG4gKiApO1xuICogYGBgXG4gKlxuICogVGhlcmUgYXJlIDQgbWFpbiBzdGF0ZXMgYSBUcmFuc2l0aW9uIGNhbiBiZSBpbjpcbiAqICAtIGAnZW50ZXJpbmcnYFxuICogIC0gYCdlbnRlcmVkJ2BcbiAqICAtIGAnZXhpdGluZydgXG4gKiAgLSBgJ2V4aXRlZCdgXG4gKlxuICogVHJhbnNpdGlvbiBzdGF0ZSBpcyB0b2dnbGVkIHZpYSB0aGUgYGluYCBwcm9wLiBXaGVuIGB0cnVlYCB0aGUgY29tcG9uZW50XG4gKiBiZWdpbnMgdGhlIFwiRW50ZXJcIiBzdGFnZS4gRHVyaW5nIHRoaXMgc3RhZ2UsIHRoZSBjb21wb25lbnQgd2lsbCBzaGlmdCBmcm9tXG4gKiBpdHMgY3VycmVudCB0cmFuc2l0aW9uIHN0YXRlLCB0byBgJ2VudGVyaW5nJ2AgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGVcbiAqIHRyYW5zaXRpb24gYW5kIHRoZW4gdG8gdGhlIGAnZW50ZXJlZCdgIHN0YWdlIG9uY2UgaXQncyBjb21wbGV0ZS4gTGV0J3MgdGFrZVxuICogdGhlIGZvbGxvd2luZyBleGFtcGxlICh3ZSdsbCB1c2UgdGhlXG4gKiBbdXNlU3RhdGVdKGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9ob29rcy1yZWZlcmVuY2UuaHRtbCN1c2VzdGF0ZSkgaG9vayk6XG4gKlxuICogYGBganN4XG4gKiBmdW5jdGlvbiBBcHAoKSB7XG4gKiAgIGNvbnN0IFtpblByb3AsIHNldEluUHJvcF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gKiAgIHJldHVybiAoXG4gKiAgICAgPGRpdj5cbiAqICAgICAgIDxUcmFuc2l0aW9uIGluPXtpblByb3B9IHRpbWVvdXQ9ezUwMH0+XG4gKiAgICAgICAgIHtzdGF0ZSA9PiAoXG4gKiAgICAgICAgICAgLy8gLi4uXG4gKiAgICAgICAgICl9XG4gKiAgICAgICA8L1RyYW5zaXRpb24+XG4gKiAgICAgICA8YnV0dG9uIG9uQ2xpY2s9eygpID0+IHNldEluUHJvcCh0cnVlKX0+XG4gKiAgICAgICAgIENsaWNrIHRvIEVudGVyXG4gKiAgICAgICA8L2J1dHRvbj5cbiAqICAgICA8L2Rpdj5cbiAqICAgKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkIHRoZSBjb21wb25lbnQgd2lsbCBzaGlmdCB0byB0aGUgYCdlbnRlcmluZydgIHN0YXRlXG4gKiBhbmQgc3RheSB0aGVyZSBmb3IgNTAwbXMgKHRoZSB2YWx1ZSBvZiBgdGltZW91dGApIGJlZm9yZSBpdCBmaW5hbGx5IHN3aXRjaGVzXG4gKiB0byBgJ2VudGVyZWQnYC5cbiAqXG4gKiBXaGVuIGBpbmAgaXMgYGZhbHNlYCB0aGUgc2FtZSB0aGluZyBoYXBwZW5zIGV4Y2VwdCB0aGUgc3RhdGUgbW92ZXMgZnJvbVxuICogYCdleGl0aW5nJ2AgdG8gYCdleGl0ZWQnYC5cbiAqL1xuXG52YXIgVHJhbnNpdGlvbiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHNMb29zZShUcmFuc2l0aW9uLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBUcmFuc2l0aW9uKHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX3RoaXMgPSBfUmVhY3QkQ29tcG9uZW50LmNhbGwodGhpcywgcHJvcHMsIGNvbnRleHQpIHx8IHRoaXM7XG4gICAgdmFyIHBhcmVudEdyb3VwID0gY29udGV4dDsgLy8gSW4gdGhlIGNvbnRleHQgb2YgYSBUcmFuc2l0aW9uR3JvdXAgYWxsIGVudGVycyBhcmUgcmVhbGx5IGFwcGVhcnNcblxuICAgIHZhciBhcHBlYXIgPSBwYXJlbnRHcm91cCAmJiAhcGFyZW50R3JvdXAuaXNNb3VudGluZyA/IHByb3BzLmVudGVyIDogcHJvcHMuYXBwZWFyO1xuICAgIHZhciBpbml0aWFsU3RhdHVzO1xuICAgIF90aGlzLmFwcGVhclN0YXR1cyA9IG51bGw7XG5cbiAgICBpZiAocHJvcHMuaW4pIHtcbiAgICAgIGlmIChhcHBlYXIpIHtcbiAgICAgICAgaW5pdGlhbFN0YXR1cyA9IEVYSVRFRDtcbiAgICAgICAgX3RoaXMuYXBwZWFyU3RhdHVzID0gRU5URVJJTkc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbml0aWFsU3RhdHVzID0gRU5URVJFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb3BzLnVubW91bnRPbkV4aXQgfHwgcHJvcHMubW91bnRPbkVudGVyKSB7XG4gICAgICAgIGluaXRpYWxTdGF0dXMgPSBVTk1PVU5URUQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbml0aWFsU3RhdHVzID0gRVhJVEVEO1xuICAgICAgfVxuICAgIH1cblxuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgc3RhdHVzOiBpbml0aWFsU3RhdHVzXG4gICAgfTtcbiAgICBfdGhpcy5uZXh0Q2FsbGJhY2sgPSBudWxsO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIFRyYW5zaXRpb24uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID0gZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKF9yZWYsIHByZXZTdGF0ZSkge1xuICAgIHZhciBuZXh0SW4gPSBfcmVmLmluO1xuXG4gICAgaWYgKG5leHRJbiAmJiBwcmV2U3RhdGUuc3RhdHVzID09PSBVTk1PVU5URUQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogRVhJVEVEXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9IC8vIGdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHByZXZQcm9wcykge1xuICAvLyAgIGxldCBuZXh0U3RhdHVzID0gbnVsbFxuICAvLyAgIGlmIChwcmV2UHJvcHMgIT09IHRoaXMucHJvcHMpIHtcbiAgLy8gICAgIGNvbnN0IHsgc3RhdHVzIH0gPSB0aGlzLnN0YXRlXG4gIC8vICAgICBpZiAodGhpcy5wcm9wcy5pbikge1xuICAvLyAgICAgICBpZiAoc3RhdHVzICE9PSBFTlRFUklORyAmJiBzdGF0dXMgIT09IEVOVEVSRUQpIHtcbiAgLy8gICAgICAgICBuZXh0U3RhdHVzID0gRU5URVJJTkdcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgaWYgKHN0YXR1cyA9PT0gRU5URVJJTkcgfHwgc3RhdHVzID09PSBFTlRFUkVEKSB7XG4gIC8vICAgICAgICAgbmV4dFN0YXR1cyA9IEVYSVRJTkdcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy8gICByZXR1cm4geyBuZXh0U3RhdHVzIH1cbiAgLy8gfVxuICA7XG5cbiAgdmFyIF9wcm90byA9IFRyYW5zaXRpb24ucHJvdG90eXBlO1xuXG4gIF9wcm90by5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMudXBkYXRlU3RhdHVzKHRydWUsIHRoaXMuYXBwZWFyU3RhdHVzKTtcbiAgfTtcblxuICBfcHJvdG8uY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgIHZhciBuZXh0U3RhdHVzID0gbnVsbDtcblxuICAgIGlmIChwcmV2UHJvcHMgIT09IHRoaXMucHJvcHMpIHtcbiAgICAgIHZhciBzdGF0dXMgPSB0aGlzLnN0YXRlLnN0YXR1cztcblxuICAgICAgaWYgKHRoaXMucHJvcHMuaW4pIHtcbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gRU5URVJJTkcgJiYgc3RhdHVzICE9PSBFTlRFUkVEKSB7XG4gICAgICAgICAgbmV4dFN0YXR1cyA9IEVOVEVSSU5HO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc3RhdHVzID09PSBFTlRFUklORyB8fCBzdGF0dXMgPT09IEVOVEVSRUQpIHtcbiAgICAgICAgICBuZXh0U3RhdHVzID0gRVhJVElORztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudXBkYXRlU3RhdHVzKGZhbHNlLCBuZXh0U3RhdHVzKTtcbiAgfTtcblxuICBfcHJvdG8uY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLmNhbmNlbE5leHRDYWxsYmFjaygpO1xuICB9O1xuXG4gIF9wcm90by5nZXRUaW1lb3V0cyA9IGZ1bmN0aW9uIGdldFRpbWVvdXRzKCkge1xuICAgIHZhciB0aW1lb3V0ID0gdGhpcy5wcm9wcy50aW1lb3V0O1xuICAgIHZhciBleGl0LCBlbnRlciwgYXBwZWFyO1xuICAgIGV4aXQgPSBlbnRlciA9IGFwcGVhciA9IHRpbWVvdXQ7XG5cbiAgICBpZiAodGltZW91dCAhPSBudWxsICYmIHR5cGVvZiB0aW1lb3V0ICE9PSAnbnVtYmVyJykge1xuICAgICAgZXhpdCA9IHRpbWVvdXQuZXhpdDtcbiAgICAgIGVudGVyID0gdGltZW91dC5lbnRlcjsgLy8gVE9ETzogcmVtb3ZlIGZhbGxiYWNrIGZvciBuZXh0IG1ham9yXG5cbiAgICAgIGFwcGVhciA9IHRpbWVvdXQuYXBwZWFyICE9PSB1bmRlZmluZWQgPyB0aW1lb3V0LmFwcGVhciA6IGVudGVyO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBleGl0OiBleGl0LFxuICAgICAgZW50ZXI6IGVudGVyLFxuICAgICAgYXBwZWFyOiBhcHBlYXJcbiAgICB9O1xuICB9O1xuXG4gIF9wcm90by51cGRhdGVTdGF0dXMgPSBmdW5jdGlvbiB1cGRhdGVTdGF0dXMobW91bnRpbmcsIG5leHRTdGF0dXMpIHtcbiAgICBpZiAobW91bnRpbmcgPT09IHZvaWQgMCkge1xuICAgICAgbW91bnRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAobmV4dFN0YXR1cyAhPT0gbnVsbCkge1xuICAgICAgLy8gbmV4dFN0YXR1cyB3aWxsIGFsd2F5cyBiZSBFTlRFUklORyBvciBFWElUSU5HLlxuICAgICAgdGhpcy5jYW5jZWxOZXh0Q2FsbGJhY2soKTtcblxuICAgICAgaWYgKG5leHRTdGF0dXMgPT09IEVOVEVSSU5HKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnVubW91bnRPbkV4aXQgfHwgdGhpcy5wcm9wcy5tb3VudE9uRW50ZXIpIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMucHJvcHMubm9kZVJlZiA/IHRoaXMucHJvcHMubm9kZVJlZi5jdXJyZW50IDogUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvcHVsbC83NDlcbiAgICAgICAgICAvLyBXaXRoIHVubW91bnRPbkV4aXQgb3IgbW91bnRPbkVudGVyLCB0aGUgZW50ZXIgYW5pbWF0aW9uIHNob3VsZCBoYXBwZW4gYXQgdGhlIHRyYW5zaXRpb24gYmV0d2VlbiBgZXhpdGVkYCBhbmQgYGVudGVyaW5nYC5cbiAgICAgICAgICAvLyBUbyBtYWtlIHRoZSBhbmltYXRpb24gaGFwcGVuLCAgd2UgaGF2ZSB0byBzZXBhcmF0ZSBlYWNoIHJlbmRlcmluZyBhbmQgYXZvaWQgYmVpbmcgcHJvY2Vzc2VkIGFzIGJhdGNoZWQuXG5cbiAgICAgICAgICBpZiAobm9kZSkgZm9yY2VSZWZsb3cobm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBlcmZvcm1FbnRlcihtb3VudGluZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBlcmZvcm1FeGl0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLnVubW91bnRPbkV4aXQgJiYgdGhpcy5zdGF0ZS5zdGF0dXMgPT09IEVYSVRFRCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHN0YXR1czogVU5NT1VOVEVEXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvLnBlcmZvcm1FbnRlciA9IGZ1bmN0aW9uIHBlcmZvcm1FbnRlcihtb3VudGluZykge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgdmFyIGVudGVyID0gdGhpcy5wcm9wcy5lbnRlcjtcbiAgICB2YXIgYXBwZWFyaW5nID0gdGhpcy5jb250ZXh0ID8gdGhpcy5jb250ZXh0LmlzTW91bnRpbmcgOiBtb3VudGluZztcblxuICAgIHZhciBfcmVmMiA9IHRoaXMucHJvcHMubm9kZVJlZiA/IFthcHBlYXJpbmddIDogW1JlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpLCBhcHBlYXJpbmddLFxuICAgICAgICBtYXliZU5vZGUgPSBfcmVmMlswXSxcbiAgICAgICAgbWF5YmVBcHBlYXJpbmcgPSBfcmVmMlsxXTtcblxuICAgIHZhciB0aW1lb3V0cyA9IHRoaXMuZ2V0VGltZW91dHMoKTtcbiAgICB2YXIgZW50ZXJUaW1lb3V0ID0gYXBwZWFyaW5nID8gdGltZW91dHMuYXBwZWFyIDogdGltZW91dHMuZW50ZXI7IC8vIG5vIGVudGVyIGFuaW1hdGlvbiBza2lwIHJpZ2h0IHRvIEVOVEVSRURcbiAgICAvLyBpZiB3ZSBhcmUgbW91bnRpbmcgYW5kIHJ1bm5pbmcgdGhpcyBpdCBtZWFucyBhcHBlYXIgX211c3RfIGJlIHNldFxuXG4gICAgaWYgKCFtb3VudGluZyAmJiAhZW50ZXIgfHwgY29uZmlnLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICAgIHN0YXR1czogRU5URVJFRFxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczIucHJvcHMub25FbnRlcmVkKG1heWJlTm9kZSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLm9uRW50ZXIobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZyk7XG4gICAgdGhpcy5zYWZlU2V0U3RhdGUoe1xuICAgICAgc3RhdHVzOiBFTlRFUklOR1xuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzMi5wcm9wcy5vbkVudGVyaW5nKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpO1xuXG4gICAgICBfdGhpczIub25UcmFuc2l0aW9uRW5kKGVudGVyVGltZW91dCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczIuc2FmZVNldFN0YXRlKHtcbiAgICAgICAgICBzdGF0dXM6IEVOVEVSRURcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzMi5wcm9wcy5vbkVudGVyZWQobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvLnBlcmZvcm1FeGl0ID0gZnVuY3Rpb24gcGVyZm9ybUV4aXQoKSB7XG4gICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICB2YXIgZXhpdCA9IHRoaXMucHJvcHMuZXhpdDtcbiAgICB2YXIgdGltZW91dHMgPSB0aGlzLmdldFRpbWVvdXRzKCk7XG4gICAgdmFyIG1heWJlTm9kZSA9IHRoaXMucHJvcHMubm9kZVJlZiA/IHVuZGVmaW5lZCA6IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpOyAvLyBubyBleGl0IGFuaW1hdGlvbiBza2lwIHJpZ2h0IHRvIEVYSVRFRFxuXG4gICAgaWYgKCFleGl0IHx8IGNvbmZpZy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zYWZlU2V0U3RhdGUoe1xuICAgICAgICBzdGF0dXM6IEVYSVRFRFxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczMucHJvcHMub25FeGl0ZWQobWF5YmVOb2RlKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJvcHMub25FeGl0KG1heWJlTm9kZSk7XG4gICAgdGhpcy5zYWZlU2V0U3RhdGUoe1xuICAgICAgc3RhdHVzOiBFWElUSU5HXG4gICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMzLnByb3BzLm9uRXhpdGluZyhtYXliZU5vZGUpO1xuXG4gICAgICBfdGhpczMub25UcmFuc2l0aW9uRW5kKHRpbWVvdXRzLmV4aXQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICAgICAgc3RhdHVzOiBFWElURURcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzMy5wcm9wcy5vbkV4aXRlZChtYXliZU5vZGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90by5jYW5jZWxOZXh0Q2FsbGJhY2sgPSBmdW5jdGlvbiBjYW5jZWxOZXh0Q2FsbGJhY2soKSB7XG4gICAgaWYgKHRoaXMubmV4dENhbGxiYWNrICE9PSBudWxsKSB7XG4gICAgICB0aGlzLm5leHRDYWxsYmFjay5jYW5jZWwoKTtcbiAgICAgIHRoaXMubmV4dENhbGxiYWNrID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvLnNhZmVTZXRTdGF0ZSA9IGZ1bmN0aW9uIHNhZmVTZXRTdGF0ZShuZXh0U3RhdGUsIGNhbGxiYWNrKSB7XG4gICAgLy8gVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgdGhlcmUgYXJlIHdlaXJkIHJhY2UgY29uZGl0aW9ucyB3aXRoXG4gICAgLy8gc2V0U3RhdGUgY2FsbGJhY2tzIGFuZCB1bm1vdW50aW5nIGluIHRlc3RpbmcsIHNvIGFsd2F5cyBtYWtlIHN1cmUgdGhhdFxuICAgIC8vIHdlIGNhbiBjYW5jZWwgYW55IHBlbmRpbmcgc2V0U3RhdGUgY2FsbGJhY2tzIGFmdGVyIHdlIHVubW91bnQuXG4gICAgY2FsbGJhY2sgPSB0aGlzLnNldE5leHRDYWxsYmFjayhjYWxsYmFjayk7XG4gICAgdGhpcy5zZXRTdGF0ZShuZXh0U3RhdGUsIGNhbGxiYWNrKTtcbiAgfTtcblxuICBfcHJvdG8uc2V0TmV4dENhbGxiYWNrID0gZnVuY3Rpb24gc2V0TmV4dENhbGxiYWNrKGNhbGxiYWNrKSB7XG4gICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICB2YXIgYWN0aXZlID0gdHJ1ZTtcblxuICAgIHRoaXMubmV4dENhbGxiYWNrID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgIGFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICBfdGhpczQubmV4dENhbGxiYWNrID0gbnVsbDtcbiAgICAgICAgY2FsbGJhY2soZXZlbnQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLm5leHRDYWxsYmFjay5jYW5jZWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBhY3RpdmUgPSBmYWxzZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMubmV4dENhbGxiYWNrO1xuICB9O1xuXG4gIF9wcm90by5vblRyYW5zaXRpb25FbmQgPSBmdW5jdGlvbiBvblRyYW5zaXRpb25FbmQodGltZW91dCwgaGFuZGxlcikge1xuICAgIHRoaXMuc2V0TmV4dENhbGxiYWNrKGhhbmRsZXIpO1xuICAgIHZhciBub2RlID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gdGhpcy5wcm9wcy5ub2RlUmVmLmN1cnJlbnQgOiBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTtcbiAgICB2YXIgZG9lc05vdEhhdmVUaW1lb3V0T3JMaXN0ZW5lciA9IHRpbWVvdXQgPT0gbnVsbCAmJiAhdGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcjtcblxuICAgIGlmICghbm9kZSB8fCBkb2VzTm90SGF2ZVRpbWVvdXRPckxpc3RlbmVyKSB7XG4gICAgICBzZXRUaW1lb3V0KHRoaXMubmV4dENhbGxiYWNrLCAwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcikge1xuICAgICAgdmFyIF9yZWYzID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gW3RoaXMubmV4dENhbGxiYWNrXSA6IFtub2RlLCB0aGlzLm5leHRDYWxsYmFja10sXG4gICAgICAgICAgbWF5YmVOb2RlID0gX3JlZjNbMF0sXG4gICAgICAgICAgbWF5YmVOZXh0Q2FsbGJhY2sgPSBfcmVmM1sxXTtcblxuICAgICAgdGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcihtYXliZU5vZGUsIG1heWJlTmV4dENhbGxiYWNrKTtcbiAgICB9XG5cbiAgICBpZiAodGltZW91dCAhPSBudWxsKSB7XG4gICAgICBzZXRUaW1lb3V0KHRoaXMubmV4dENhbGxiYWNrLCB0aW1lb3V0KTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICB2YXIgc3RhdHVzID0gdGhpcy5zdGF0ZS5zdGF0dXM7XG5cbiAgICBpZiAoc3RhdHVzID09PSBVTk1PVU5URUQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMuY2hpbGRyZW4sXG4gICAgICAgIF9pbiA9IF90aGlzJHByb3BzLmluLFxuICAgICAgICBfbW91bnRPbkVudGVyID0gX3RoaXMkcHJvcHMubW91bnRPbkVudGVyLFxuICAgICAgICBfdW5tb3VudE9uRXhpdCA9IF90aGlzJHByb3BzLnVubW91bnRPbkV4aXQsXG4gICAgICAgIF9hcHBlYXIgPSBfdGhpcyRwcm9wcy5hcHBlYXIsXG4gICAgICAgIF9lbnRlciA9IF90aGlzJHByb3BzLmVudGVyLFxuICAgICAgICBfZXhpdCA9IF90aGlzJHByb3BzLmV4aXQsXG4gICAgICAgIF90aW1lb3V0ID0gX3RoaXMkcHJvcHMudGltZW91dCxcbiAgICAgICAgX2FkZEVuZExpc3RlbmVyID0gX3RoaXMkcHJvcHMuYWRkRW5kTGlzdGVuZXIsXG4gICAgICAgIF9vbkVudGVyID0gX3RoaXMkcHJvcHMub25FbnRlcixcbiAgICAgICAgX29uRW50ZXJpbmcgPSBfdGhpcyRwcm9wcy5vbkVudGVyaW5nLFxuICAgICAgICBfb25FbnRlcmVkID0gX3RoaXMkcHJvcHMub25FbnRlcmVkLFxuICAgICAgICBfb25FeGl0ID0gX3RoaXMkcHJvcHMub25FeGl0LFxuICAgICAgICBfb25FeGl0aW5nID0gX3RoaXMkcHJvcHMub25FeGl0aW5nLFxuICAgICAgICBfb25FeGl0ZWQgPSBfdGhpcyRwcm9wcy5vbkV4aXRlZCxcbiAgICAgICAgX25vZGVSZWYgPSBfdGhpcyRwcm9wcy5ub2RlUmVmLFxuICAgICAgICBjaGlsZFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3RoaXMkcHJvcHMsIFtcImNoaWxkcmVuXCIsIFwiaW5cIiwgXCJtb3VudE9uRW50ZXJcIiwgXCJ1bm1vdW50T25FeGl0XCIsIFwiYXBwZWFyXCIsIFwiZW50ZXJcIiwgXCJleGl0XCIsIFwidGltZW91dFwiLCBcImFkZEVuZExpc3RlbmVyXCIsIFwib25FbnRlclwiLCBcIm9uRW50ZXJpbmdcIiwgXCJvbkVudGVyZWRcIiwgXCJvbkV4aXRcIiwgXCJvbkV4aXRpbmdcIiwgXCJvbkV4aXRlZFwiLCBcIm5vZGVSZWZcIl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIC8qI19fUFVSRV9fKi9cbiAgICAgIC8vIGFsbG93cyBmb3IgbmVzdGVkIFRyYW5zaXRpb25zXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb25Hcm91cENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH0sIHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJyA/IGNoaWxkcmVuKHN0YXR1cywgY2hpbGRQcm9wcykgOiBSZWFjdC5jbG9uZUVsZW1lbnQoUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbiksIGNoaWxkUHJvcHMpKVxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIFRyYW5zaXRpb247XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cblRyYW5zaXRpb24uY29udGV4dFR5cGUgPSBUcmFuc2l0aW9uR3JvdXBDb250ZXh0O1xuVHJhbnNpdGlvbi5wcm9wVHlwZXMgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB7XG4gIC8qKlxuICAgKiBBIFJlYWN0IHJlZmVyZW5jZSB0byBET00gZWxlbWVudCB0aGF0IG5lZWQgdG8gdHJhbnNpdGlvbjpcbiAgICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzUxMTI3MTMwLzQ2NzE5MzJcbiAgICpcbiAgICogICAtIFdoZW4gYG5vZGVSZWZgIHByb3AgaXMgdXNlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQgdG8gY2FsbGJhY2sgZnVuY3Rpb25zXG4gICAqICAgICAgKGUuZy4gYG9uRW50ZXJgKSBiZWNhdXNlIHVzZXIgYWxyZWFkeSBoYXMgZGlyZWN0IGFjY2VzcyB0byB0aGUgbm9kZS5cbiAgICogICAtIFdoZW4gY2hhbmdpbmcgYGtleWAgcHJvcCBvZiBgVHJhbnNpdGlvbmAgaW4gYSBgVHJhbnNpdGlvbkdyb3VwYCBhIG5ld1xuICAgKiAgICAgYG5vZGVSZWZgIG5lZWQgdG8gYmUgcHJvdmlkZWQgdG8gYFRyYW5zaXRpb25gIHdpdGggY2hhbmdlZCBga2V5YCBwcm9wXG4gICAqICAgICAoc2VlXG4gICAqICAgICBbdGVzdC9DU1NUcmFuc2l0aW9uLXRlc3QuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvYmxvYi8xMzQzNWY4OTdiM2FiNzFmNmUxOWQ3MjRmMTQ1NTk2ZjU5MTA1ODFjL3Rlc3QvQ1NTVHJhbnNpdGlvbi10ZXN0LmpzI0wzNjItTDQzNykpLlxuICAgKi9cbiAgbm9kZVJlZjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjdXJyZW50OiB0eXBlb2YgRWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcgPyBQcm9wVHlwZXMuYW55IDogZnVuY3Rpb24gKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHByb3BWYWx1ZVtrZXldO1xuICAgICAgcmV0dXJuIFByb3BUeXBlcy5pbnN0YW5jZU9mKHZhbHVlICYmICdvd25lckRvY3VtZW50JyBpbiB2YWx1ZSA/IHZhbHVlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuRWxlbWVudCA6IEVsZW1lbnQpKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpO1xuICAgIH1cbiAgfSksXG5cbiAgLyoqXG4gICAqIEEgYGZ1bmN0aW9uYCBjaGlsZCBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIGEgUmVhY3QgZWxlbWVudC4gVGhpcyBmdW5jdGlvbiBpc1xuICAgKiBjYWxsZWQgd2l0aCB0aGUgY3VycmVudCB0cmFuc2l0aW9uIHN0YXR1cyAoYCdlbnRlcmluZydgLCBgJ2VudGVyZWQnYCxcbiAgICogYCdleGl0aW5nJ2AsIGAnZXhpdGVkJ2ApLCB3aGljaCBjYW4gYmUgdXNlZCB0byBhcHBseSBjb250ZXh0XG4gICAqIHNwZWNpZmljIHByb3BzIHRvIGEgY29tcG9uZW50LlxuICAgKlxuICAgKiBgYGBqc3hcbiAgICogPFRyYW5zaXRpb24gaW49e3RoaXMuc3RhdGUuaW59IHRpbWVvdXQ9ezE1MH0+XG4gICAqICAge3N0YXRlID0+IChcbiAgICogICAgIDxNeUNvbXBvbmVudCBjbGFzc05hbWU9e2BmYWRlIGZhZGUtJHtzdGF0ZX1gfSAvPlxuICAgKiAgICl9XG4gICAqIDwvVHJhbnNpdGlvbj5cbiAgICogYGBgXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCwgUHJvcFR5cGVzLmVsZW1lbnQuaXNSZXF1aXJlZF0pLmlzUmVxdWlyZWQsXG5cbiAgLyoqXG4gICAqIFNob3cgdGhlIGNvbXBvbmVudDsgdHJpZ2dlcnMgdGhlIGVudGVyIG9yIGV4aXQgc3RhdGVzXG4gICAqL1xuICBpbjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgdGhlIGNoaWxkIGNvbXBvbmVudCBpcyBtb3VudGVkIGltbWVkaWF0ZWx5IGFsb25nIHdpdGhcbiAgICogdGhlIHBhcmVudCBgVHJhbnNpdGlvbmAgY29tcG9uZW50LiBJZiB5b3Ugd2FudCB0byBcImxhenkgbW91bnRcIiB0aGUgY29tcG9uZW50IG9uIHRoZVxuICAgKiBmaXJzdCBgaW49e3RydWV9YCB5b3UgY2FuIHNldCBgbW91bnRPbkVudGVyYC4gQWZ0ZXIgdGhlIGZpcnN0IGVudGVyIHRyYW5zaXRpb24gdGhlIGNvbXBvbmVudCB3aWxsIHN0YXlcbiAgICogbW91bnRlZCwgZXZlbiBvbiBcImV4aXRlZFwiLCB1bmxlc3MgeW91IGFsc28gc3BlY2lmeSBgdW5tb3VudE9uRXhpdGAuXG4gICAqL1xuICBtb3VudE9uRW50ZXI6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0IHRoZSBjaGlsZCBjb21wb25lbnQgc3RheXMgbW91bnRlZCBhZnRlciBpdCByZWFjaGVzIHRoZSBgJ2V4aXRlZCdgIHN0YXRlLlxuICAgKiBTZXQgYHVubW91bnRPbkV4aXRgIGlmIHlvdSdkIHByZWZlciB0byB1bm1vdW50IHRoZSBjb21wb25lbnQgYWZ0ZXIgaXQgZmluaXNoZXMgZXhpdGluZy5cbiAgICovXG4gIHVubW91bnRPbkV4aXQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0IHRoZSBjaGlsZCBjb21wb25lbnQgZG9lcyBub3QgcGVyZm9ybSB0aGUgZW50ZXIgdHJhbnNpdGlvbiB3aGVuXG4gICAqIGl0IGZpcnN0IG1vdW50cywgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgb2YgYGluYC4gSWYgeW91IHdhbnQgdGhpc1xuICAgKiBiZWhhdmlvciwgc2V0IGJvdGggYGFwcGVhcmAgYW5kIGBpbmAgdG8gYHRydWVgLlxuICAgKlxuICAgKiA+ICoqTm90ZSoqOiB0aGVyZSBhcmUgbm8gc3BlY2lhbCBhcHBlYXIgc3RhdGVzIGxpa2UgYGFwcGVhcmluZ2AvYGFwcGVhcmVkYCwgdGhpcyBwcm9wXG4gICAqID4gb25seSBhZGRzIGFuIGFkZGl0aW9uYWwgZW50ZXIgdHJhbnNpdGlvbi4gSG93ZXZlciwgaW4gdGhlXG4gICAqID4gYDxDU1NUcmFuc2l0aW9uPmAgY29tcG9uZW50IHRoYXQgZmlyc3QgZW50ZXIgdHJhbnNpdGlvbiBkb2VzIHJlc3VsdCBpblxuICAgKiA+IGFkZGl0aW9uYWwgYC5hcHBlYXItKmAgY2xhc3NlcywgdGhhdCB3YXkgeW91IGNhbiBjaG9vc2UgdG8gc3R5bGUgaXRcbiAgICogPiBkaWZmZXJlbnRseS5cbiAgICovXG4gIGFwcGVhcjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIGVudGVyIHRyYW5zaXRpb25zLlxuICAgKi9cbiAgZW50ZXI6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBleGl0IHRyYW5zaXRpb25zLlxuICAgKi9cbiAgZXhpdDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFRoZSBkdXJhdGlvbiBvZiB0aGUgdHJhbnNpdGlvbiwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBSZXF1aXJlZCB1bmxlc3MgYGFkZEVuZExpc3RlbmVyYCBpcyBwcm92aWRlZC5cbiAgICpcbiAgICogWW91IG1heSBzcGVjaWZ5IGEgc2luZ2xlIHRpbWVvdXQgZm9yIGFsbCB0cmFuc2l0aW9uczpcbiAgICpcbiAgICogYGBganN4XG4gICAqIHRpbWVvdXQ9ezUwMH1cbiAgICogYGBgXG4gICAqXG4gICAqIG9yIGluZGl2aWR1YWxseTpcbiAgICpcbiAgICogYGBganN4XG4gICAqIHRpbWVvdXQ9e3tcbiAgICogIGFwcGVhcjogNTAwLFxuICAgKiAgZW50ZXI6IDMwMCxcbiAgICogIGV4aXQ6IDUwMCxcbiAgICogfX1cbiAgICogYGBgXG4gICAqXG4gICAqIC0gYGFwcGVhcmAgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIGBlbnRlcmBcbiAgICogLSBgZW50ZXJgIGRlZmF1bHRzIHRvIGAwYFxuICAgKiAtIGBleGl0YCBkZWZhdWx0cyB0byBgMGBcbiAgICpcbiAgICogQHR5cGUge251bWJlciB8IHsgZW50ZXI/OiBudW1iZXIsIGV4aXQ/OiBudW1iZXIsIGFwcGVhcj86IG51bWJlciB9fVxuICAgKi9cbiAgdGltZW91dDogZnVuY3Rpb24gdGltZW91dChwcm9wcykge1xuICAgIHZhciBwdCA9IHRpbWVvdXRzU2hhcGU7XG4gICAgaWYgKCFwcm9wcy5hZGRFbmRMaXN0ZW5lcikgcHQgPSBwdC5pc1JlcXVpcmVkO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHB0LmFwcGx5KHZvaWQgMCwgW3Byb3BzXS5jb25jYXQoYXJncykpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBBZGQgYSBjdXN0b20gdHJhbnNpdGlvbiBlbmQgdHJpZ2dlci4gQ2FsbGVkIHdpdGggdGhlIHRyYW5zaXRpb25pbmdcbiAgICogRE9NIG5vZGUgYW5kIGEgYGRvbmVgIGNhbGxiYWNrLiBBbGxvd3MgZm9yIG1vcmUgZmluZSBncmFpbmVkIHRyYW5zaXRpb24gZW5kXG4gICAqIGxvZ2ljLiBUaW1lb3V0cyBhcmUgc3RpbGwgdXNlZCBhcyBhIGZhbGxiYWNrIGlmIHByb3ZpZGVkLlxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBgYGBqc3hcbiAgICogYWRkRW5kTGlzdGVuZXI9eyhub2RlLCBkb25lKSA9PiB7XG4gICAqICAgLy8gdXNlIHRoZSBjc3MgdHJhbnNpdGlvbmVuZCBldmVudCB0byBtYXJrIHRoZSBmaW5pc2ggb2YgYSB0cmFuc2l0aW9uXG4gICAqICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgZG9uZSwgZmFsc2UpO1xuICAgKiB9fVxuICAgKiBgYGBcbiAgICovXG4gIGFkZEVuZExpc3RlbmVyOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgYmVmb3JlIHRoZSBcImVudGVyaW5nXCIgc3RhdHVzIGlzIGFwcGxpZWQuIEFuIGV4dHJhIHBhcmFtZXRlclxuICAgKiBgaXNBcHBlYXJpbmdgIGlzIHN1cHBsaWVkIHRvIGluZGljYXRlIGlmIHRoZSBlbnRlciBzdGFnZSBpcyBvY2N1cnJpbmcgb24gdGhlIGluaXRpYWwgbW91bnRcbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQsIGlzQXBwZWFyaW5nOiBib29sKSAtPiB2b2lkXG4gICAqL1xuICBvbkVudGVyOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgYWZ0ZXIgdGhlIFwiZW50ZXJpbmdcIiBzdGF0dXMgaXMgYXBwbGllZC4gQW4gZXh0cmEgcGFyYW1ldGVyXG4gICAqIGBpc0FwcGVhcmluZ2AgaXMgc3VwcGxpZWQgdG8gaW5kaWNhdGUgaWYgdGhlIGVudGVyIHN0YWdlIGlzIG9jY3VycmluZyBvbiB0aGUgaW5pdGlhbCBtb3VudFxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCwgaXNBcHBlYXJpbmc6IGJvb2wpXG4gICAqL1xuICBvbkVudGVyaW5nOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgYWZ0ZXIgdGhlIFwiZW50ZXJlZFwiIHN0YXR1cyBpcyBhcHBsaWVkLiBBbiBleHRyYSBwYXJhbWV0ZXJcbiAgICogYGlzQXBwZWFyaW5nYCBpcyBzdXBwbGllZCB0byBpbmRpY2F0ZSBpZiB0aGUgZW50ZXIgc3RhZ2UgaXMgb2NjdXJyaW5nIG9uIHRoZSBpbml0aWFsIG1vdW50XG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50LCBpc0FwcGVhcmluZzogYm9vbCkgLT4gdm9pZFxuICAgKi9cbiAgb25FbnRlcmVkOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgYmVmb3JlIHRoZSBcImV4aXRpbmdcIiBzdGF0dXMgaXMgYXBwbGllZC5cbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQpIC0+IHZvaWRcbiAgICovXG4gIG9uRXhpdDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGFmdGVyIHRoZSBcImV4aXRpbmdcIiBzdGF0dXMgaXMgYXBwbGllZC5cbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQpIC0+IHZvaWRcbiAgICovXG4gIG9uRXhpdGluZzogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGFmdGVyIHRoZSBcImV4aXRlZFwiIHN0YXR1cyBpcyBhcHBsaWVkLlxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50KSAtPiB2b2lkXG4gICAqL1xuICBvbkV4aXRlZDogUHJvcFR5cGVzLmZ1bmNcbn0gOiB7fTsgLy8gTmFtZSB0aGUgZnVuY3Rpb24gc28gaXQgaXMgY2xlYXJlciBpbiB0aGUgZG9jdW1lbnRhdGlvblxuXG5mdW5jdGlvbiBub29wKCkge31cblxuVHJhbnNpdGlvbi5kZWZhdWx0UHJvcHMgPSB7XG4gIGluOiBmYWxzZSxcbiAgbW91bnRPbkVudGVyOiBmYWxzZSxcbiAgdW5tb3VudE9uRXhpdDogZmFsc2UsXG4gIGFwcGVhcjogZmFsc2UsXG4gIGVudGVyOiB0cnVlLFxuICBleGl0OiB0cnVlLFxuICBvbkVudGVyOiBub29wLFxuICBvbkVudGVyaW5nOiBub29wLFxuICBvbkVudGVyZWQ6IG5vb3AsXG4gIG9uRXhpdDogbm9vcCxcbiAgb25FeGl0aW5nOiBub29wLFxuICBvbkV4aXRlZDogbm9vcFxufTtcblRyYW5zaXRpb24uVU5NT1VOVEVEID0gVU5NT1VOVEVEO1xuVHJhbnNpdGlvbi5FWElURUQgPSBFWElURUQ7XG5UcmFuc2l0aW9uLkVOVEVSSU5HID0gRU5URVJJTkc7XG5UcmFuc2l0aW9uLkVOVEVSRUQgPSBFTlRFUkVEO1xuVHJhbnNpdGlvbi5FWElUSU5HID0gRVhJVElORztcbmV4cG9ydCBkZWZhdWx0IFRyYW5zaXRpb247IiwiaW1wb3J0IHNldFByb3RvdHlwZU9mIGZyb20gXCIuL3NldFByb3RvdHlwZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfaW5oZXJpdHNMb29zZShzdWJDbGFzcywgc3VwZXJDbGFzcykge1xuICBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MucHJvdG90eXBlKTtcbiAgc3ViQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gc3ViQ2xhc3M7XG4gIHNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTtcbn0iLCJleHBvcnQgdmFyIGZvcmNlUmVmbG93ID0gZnVuY3Rpb24gZm9yY2VSZWZsb3cobm9kZSkge1xuICByZXR1cm4gbm9kZS5zY3JvbGxUb3A7XG59OyIsIi8qKlxuICogUmV0dXJucyB0aGUgb3duZXIgZG9jdW1lbnQgb2YgYSBnaXZlbiBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0gbm9kZSB0aGUgZWxlbWVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvd25lckRvY3VtZW50KG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUgJiYgbm9kZS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50O1xufSIsInZhciByVXBwZXIgPSAvKFtBLVpdKS9nO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaHlwaGVuYXRlKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoclVwcGVyLCAnLSQxJykudG9Mb3dlckNhc2UoKTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2Jsb2IvMmFlYjhhMmE2YmViMDA2MTdhNDIxN2Y3ZjgyODQ5MjRmYTJhZDgxOS9zcmMvdmVuZG9yL2NvcmUvaHlwaGVuYXRlU3R5bGVOYW1lLmpzXG4gKi9cbmltcG9ydCBoeXBoZW5hdGUgZnJvbSAnLi9oeXBoZW5hdGUnO1xudmFyIG1zUGF0dGVybiA9IC9ebXMtLztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGh5cGhlbmF0ZVN0eWxlTmFtZShzdHJpbmcpIHtcbiAgcmV0dXJuIGh5cGhlbmF0ZShzdHJpbmcpLnJlcGxhY2UobXNQYXR0ZXJuLCAnLW1zLScpO1xufSIsInZhciBzdXBwb3J0ZWRUcmFuc2Zvcm1zID0gL14oKHRyYW5zbGF0ZXxyb3RhdGV8c2NhbGUpKFh8WXxafDNkKT98bWF0cml4KDNkKT98cGVyc3BlY3RpdmV8c2tldyhYfFkpPykkL2k7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RyYW5zZm9ybSh2YWx1ZSkge1xuICByZXR1cm4gISEodmFsdWUgJiYgc3VwcG9ydGVkVHJhbnNmb3Jtcy50ZXN0KHZhbHVlKSk7XG59IiwiaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSAnLi9nZXRDb21wdXRlZFN0eWxlJztcbmltcG9ydCBoeXBoZW5hdGUgZnJvbSAnLi9oeXBoZW5hdGVTdHlsZSc7XG5pbXBvcnQgaXNUcmFuc2Zvcm0gZnJvbSAnLi9pc1RyYW5zZm9ybSc7XG5cbmZ1bmN0aW9uIHN0eWxlKG5vZGUsIHByb3BlcnR5KSB7XG4gIHZhciBjc3MgPSAnJztcbiAgdmFyIHRyYW5zZm9ybXMgPSAnJztcblxuICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBub2RlLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoaHlwaGVuYXRlKHByb3BlcnR5KSkgfHwgZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5nZXRQcm9wZXJ0eVZhbHVlKGh5cGhlbmF0ZShwcm9wZXJ0eSkpO1xuICB9XG5cbiAgT2JqZWN0LmtleXMocHJvcGVydHkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciB2YWx1ZSA9IHByb3BlcnR5W2tleV07XG5cbiAgICBpZiAoIXZhbHVlICYmIHZhbHVlICE9PSAwKSB7XG4gICAgICBub2RlLnN0eWxlLnJlbW92ZVByb3BlcnR5KGh5cGhlbmF0ZShrZXkpKTtcbiAgICB9IGVsc2UgaWYgKGlzVHJhbnNmb3JtKGtleSkpIHtcbiAgICAgIHRyYW5zZm9ybXMgKz0ga2V5ICsgXCIoXCIgKyB2YWx1ZSArIFwiKSBcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgY3NzICs9IGh5cGhlbmF0ZShrZXkpICsgXCI6IFwiICsgdmFsdWUgKyBcIjtcIjtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh0cmFuc2Zvcm1zKSB7XG4gICAgY3NzICs9IFwidHJhbnNmb3JtOiBcIiArIHRyYW5zZm9ybXMgKyBcIjtcIjtcbiAgfVxuXG4gIG5vZGUuc3R5bGUuY3NzVGV4dCArPSBcIjtcIiArIGNzcztcbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGU7IiwiaW1wb3J0IG93bmVyV2luZG93IGZyb20gJy4vb3duZXJXaW5kb3cnO1xuLyoqXG4gKiBSZXR1cm5zIG9uZSBvciBhbGwgY29tcHV0ZWQgc3R5bGUgcHJvcGVydGllcyBvZiBhbiBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0gbm9kZSB0aGUgZWxlbWVudFxuICogQHBhcmFtIHBzdWVkb0VsZW1lbnQgdGhlIHN0eWxlIHByb3BlcnR5XG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShub2RlLCBwc3VlZG9FbGVtZW50KSB7XG4gIHJldHVybiBvd25lcldpbmRvdyhub2RlKS5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIHBzdWVkb0VsZW1lbnQpO1xufSIsImltcG9ydCBvd25lckRvY3VtZW50IGZyb20gJy4vb3duZXJEb2N1bWVudCc7XG4vKipcbiAqIFJldHVybnMgdGhlIG93bmVyIHdpbmRvdyBvZiBhIGdpdmVuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBub2RlIHRoZSBlbGVtZW50XG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3duZXJXaW5kb3cobm9kZSkge1xuICB2YXIgZG9jID0gb3duZXJEb2N1bWVudChub2RlKTtcbiAgcmV0dXJuIGRvYyAmJiBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xufSIsImV4cG9ydCBkZWZhdWx0ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7IiwiLyogZXNsaW50LWRpc2FibGUgbm8tcmV0dXJuLWFzc2lnbiAqL1xuaW1wb3J0IGNhblVzZURPTSBmcm9tICcuL2NhblVzZURPTSc7XG5leHBvcnQgdmFyIG9wdGlvbnNTdXBwb3J0ZWQgPSBmYWxzZTtcbmV4cG9ydCB2YXIgb25jZVN1cHBvcnRlZCA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgb3B0aW9ucyA9IHtcbiAgICBnZXQgcGFzc2l2ZSgpIHtcbiAgICAgIHJldHVybiBvcHRpb25zU3VwcG9ydGVkID0gdHJ1ZTtcbiAgICB9LFxuXG4gICAgZ2V0IG9uY2UoKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbXVsdGktYXNzaWduXG4gICAgICByZXR1cm4gb25jZVN1cHBvcnRlZCA9IG9wdGlvbnNTdXBwb3J0ZWQgPSB0cnVlO1xuICAgIH1cblxuICB9O1xuXG4gIGlmIChjYW5Vc2VET00pIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdCcsIG9wdGlvbnMsIG9wdGlvbnMpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCd0ZXN0Jywgb3B0aW9ucywgdHJ1ZSk7XG4gIH1cbn0gY2F0Y2ggKGUpIHtcbiAgLyogKi9cbn1cblxuLyoqXG4gKiBBbiBgYWRkRXZlbnRMaXN0ZW5lcmAgcG9ueWZpbGwsIHN1cHBvcnRzIHRoZSBgb25jZWAgb3B0aW9uXG4gKiBcbiAqIEBwYXJhbSBub2RlIHRoZSBlbGVtZW50XG4gKiBAcGFyYW0gZXZlbnROYW1lIHRoZSBldmVudCBuYW1lXG4gKiBAcGFyYW0gaGFuZGxlIHRoZSBoYW5kbGVyXG4gKiBAcGFyYW0gb3B0aW9ucyBldmVudCBvcHRpb25zXG4gKi9cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zICE9PSAnYm9vbGVhbicgJiYgIW9uY2VTdXBwb3J0ZWQpIHtcbiAgICB2YXIgb25jZSA9IG9wdGlvbnMub25jZSxcbiAgICAgICAgY2FwdHVyZSA9IG9wdGlvbnMuY2FwdHVyZTtcbiAgICB2YXIgd3JhcHBlZEhhbmRsZXIgPSBoYW5kbGVyO1xuXG4gICAgaWYgKCFvbmNlU3VwcG9ydGVkICYmIG9uY2UpIHtcbiAgICAgIHdyYXBwZWRIYW5kbGVyID0gaGFuZGxlci5fX29uY2UgfHwgZnVuY3Rpb24gb25jZUhhbmRsZXIoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgb25jZUhhbmRsZXIsIGNhcHR1cmUpO1xuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgZXZlbnQpO1xuICAgICAgfTtcblxuICAgICAgaGFuZGxlci5fX29uY2UgPSB3cmFwcGVkSGFuZGxlcjtcbiAgICB9XG5cbiAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB3cmFwcGVkSGFuZGxlciwgb3B0aW9uc1N1cHBvcnRlZCA/IG9wdGlvbnMgOiBjYXB0dXJlKTtcbiAgfVxuXG4gIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhZGRFdmVudExpc3RlbmVyOyIsImltcG9ydCBhZGRFdmVudExpc3RlbmVyIGZyb20gJy4vYWRkRXZlbnRMaXN0ZW5lcic7XG5pbXBvcnQgcmVtb3ZlRXZlbnRMaXN0ZW5lciBmcm9tICcuL3JlbW92ZUV2ZW50TGlzdGVuZXInO1xuXG5mdW5jdGlvbiBsaXN0ZW4obm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyLCBvcHRpb25zKSB7XG4gIGFkZEV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyLCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZW1vdmVFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlciwgb3B0aW9ucyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGxpc3RlbjsiLCIvKipcbiAqIEEgYHJlbW92ZUV2ZW50TGlzdGVuZXJgIHBvbnlmaWxsXG4gKiBcbiAqIEBwYXJhbSBub2RlIHRoZSBlbGVtZW50XG4gKiBAcGFyYW0gZXZlbnROYW1lIHRoZSBldmVudCBuYW1lXG4gKiBAcGFyYW0gaGFuZGxlIHRoZSBoYW5kbGVyXG4gKiBAcGFyYW0gb3B0aW9ucyBldmVudCBvcHRpb25zXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyLCBvcHRpb25zKSB7XG4gIHZhciBjYXB0dXJlID0gb3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucyAhPT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5jYXB0dXJlIDogb3B0aW9ucztcbiAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgaGFuZGxlciwgY2FwdHVyZSk7XG5cbiAgaWYgKGhhbmRsZXIuX19vbmNlKSB7XG4gICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgaGFuZGxlci5fX29uY2UsIGNhcHR1cmUpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlbW92ZUV2ZW50TGlzdGVuZXI7IiwiaW1wb3J0IGNzcyBmcm9tICcuL2Nzcyc7XG5pbXBvcnQgbGlzdGVuIGZyb20gJy4vbGlzdGVuJztcbmltcG9ydCB0cmlnZ2VyRXZlbnQgZnJvbSAnLi90cmlnZ2VyRXZlbnQnO1xuXG5mdW5jdGlvbiBwYXJzZUR1cmF0aW9uKG5vZGUpIHtcbiAgdmFyIHN0ciA9IGNzcyhub2RlLCAndHJhbnNpdGlvbkR1cmF0aW9uJykgfHwgJyc7XG4gIHZhciBtdWx0ID0gc3RyLmluZGV4T2YoJ21zJykgPT09IC0xID8gMTAwMCA6IDE7XG4gIHJldHVybiBwYXJzZUZsb2F0KHN0cikgKiBtdWx0O1xufVxuXG5mdW5jdGlvbiBlbXVsYXRlVHJhbnNpdGlvbkVuZChlbGVtZW50LCBkdXJhdGlvbiwgcGFkZGluZykge1xuICBpZiAocGFkZGluZyA9PT0gdm9pZCAwKSB7XG4gICAgcGFkZGluZyA9IDU7XG4gIH1cblxuICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gIHZhciBoYW5kbGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNhbGxlZCkgdHJpZ2dlckV2ZW50KGVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJywgdHJ1ZSk7XG4gIH0sIGR1cmF0aW9uICsgcGFkZGluZyk7XG4gIHZhciByZW1vdmUgPSBsaXN0ZW4oZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY2FsbGVkID0gdHJ1ZTtcbiAgfSwge1xuICAgIG9uY2U6IHRydWVcbiAgfSk7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgY2xlYXJUaW1lb3V0KGhhbmRsZSk7XG4gICAgcmVtb3ZlKCk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYW5zaXRpb25FbmQoZWxlbWVudCwgaGFuZGxlciwgZHVyYXRpb24sIHBhZGRpbmcpIHtcbiAgaWYgKGR1cmF0aW9uID09IG51bGwpIGR1cmF0aW9uID0gcGFyc2VEdXJhdGlvbihlbGVtZW50KSB8fCAwO1xuICB2YXIgcmVtb3ZlRW11bGF0ZSA9IGVtdWxhdGVUcmFuc2l0aW9uRW5kKGVsZW1lbnQsIGR1cmF0aW9uLCBwYWRkaW5nKTtcbiAgdmFyIHJlbW92ZSA9IGxpc3RlbihlbGVtZW50LCAndHJhbnNpdGlvbmVuZCcsIGhhbmRsZXIpO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJlbW92ZUVtdWxhdGUoKTtcbiAgICByZW1vdmUoKTtcbiAgfTtcbn0iLCIvKipcbiAqIFRyaWdnZXJzIGFuIGV2ZW50IG9uIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIG5vZGUgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBldmVudE5hbWUgdGhlIGV2ZW50IG5hbWUgdG8gdHJpZ2dlclxuICogQHBhcmFtIGJ1YmJsZXMgd2hldGhlciB0aGUgZXZlbnQgc2hvdWxkIGJ1YmJsZSB1cFxuICogQHBhcmFtIGNhbmNlbGFibGUgd2hldGhlciB0aGUgZXZlbnQgc2hvdWxkIGJlIGNhbmNlbGFibGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJpZ2dlckV2ZW50KG5vZGUsIGV2ZW50TmFtZSwgYnViYmxlcywgY2FuY2VsYWJsZSkge1xuICBpZiAoYnViYmxlcyA9PT0gdm9pZCAwKSB7XG4gICAgYnViYmxlcyA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKGNhbmNlbGFibGUgPT09IHZvaWQgMCkge1xuICAgIGNhbmNlbGFibGUgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG5vZGUpIHtcbiAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnSFRNTEV2ZW50cycpO1xuICAgIGV2ZW50LmluaXRFdmVudChldmVudE5hbWUsIGJ1YmJsZXMsIGNhbmNlbGFibGUpO1xuICAgIG5vZGUuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH1cbn0iLCJpbXBvcnQgY3NzIGZyb20gJ2RvbS1oZWxwZXJzL2Nzcyc7XG5pbXBvcnQgdHJhbnNpdGlvbkVuZCBmcm9tICdkb20taGVscGVycy90cmFuc2l0aW9uRW5kJztcbmZ1bmN0aW9uIHBhcnNlRHVyYXRpb24obm9kZSwgcHJvcGVydHkpIHtcbiAgY29uc3Qgc3RyID0gY3NzKG5vZGUsIHByb3BlcnR5KSB8fCAnJztcbiAgY29uc3QgbXVsdCA9IHN0ci5pbmRleE9mKCdtcycpID09PSAtMSA/IDEwMDAgOiAxO1xuICByZXR1cm4gcGFyc2VGbG9hdChzdHIpICogbXVsdDtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYW5zaXRpb25FbmRMaXN0ZW5lcihlbGVtZW50LCBoYW5kbGVyKSB7XG4gIGNvbnN0IGR1cmF0aW9uID0gcGFyc2VEdXJhdGlvbihlbGVtZW50LCAndHJhbnNpdGlvbkR1cmF0aW9uJyk7XG4gIGNvbnN0IGRlbGF5ID0gcGFyc2VEdXJhdGlvbihlbGVtZW50LCAndHJhbnNpdGlvbkRlbGF5Jyk7XG4gIGNvbnN0IHJlbW92ZSA9IHRyYW5zaXRpb25FbmQoZWxlbWVudCwgZSA9PiB7XG4gICAgaWYgKGUudGFyZ2V0ID09PSBlbGVtZW50KSB7XG4gICAgICByZW1vdmUoKTtcbiAgICAgIGhhbmRsZXIoZSk7XG4gICAgfVxuICB9LCBkdXJhdGlvbiArIGRlbGF5KTtcbn0iLCIvLyByZWFkaW5nIGEgZGltZW5zaW9uIHByb3Agd2lsbCBjYXVzZSB0aGUgYnJvd3NlciB0byByZWNhbGN1bGF0ZSxcbi8vIHdoaWNoIHdpbGwgbGV0IG91ciBhbmltYXRpb25zIHdvcmtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyaWdnZXJCcm93c2VyUmVmbG93KG5vZGUpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgbm9kZS5vZmZzZXRIZWlnaHQ7XG59IiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcblxudmFyIHRvRm5SZWYgPSBmdW5jdGlvbiB0b0ZuUmVmKHJlZikge1xuICByZXR1cm4gIXJlZiB8fCB0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nID8gcmVmIDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVJlZnMocmVmQSwgcmVmQikge1xuICB2YXIgYSA9IHRvRm5SZWYocmVmQSk7XG4gIHZhciBiID0gdG9GblJlZihyZWZCKTtcbiAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmIChhKSBhKHZhbHVlKTtcbiAgICBpZiAoYikgYih2YWx1ZSk7XG4gIH07XG59XG4vKipcbiAqIENyZWF0ZSBhbmQgcmV0dXJucyBhIHNpbmdsZSBjYWxsYmFjayByZWYgY29tcG9zZWQgZnJvbSB0d28gb3RoZXIgUmVmcy5cbiAqXG4gKiBgYGB0c3hcbiAqIGNvbnN0IEJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcbiAqICAgY29uc3QgW2VsZW1lbnQsIGF0dGFjaFJlZl0gPSB1c2VDYWxsYmFja1JlZjxIVE1MQnV0dG9uRWxlbWVudD4oKTtcbiAqICAgY29uc3QgbWVyZ2VkUmVmID0gdXNlTWVyZ2VkUmVmcyhyZWYsIGF0dGFjaFJlZik7XG4gKlxuICogICByZXR1cm4gPGJ1dHRvbiByZWY9e21lcmdlZFJlZn0gey4uLnByb3BzfS8+XG4gKiB9KVxuICogYGBgXG4gKlxuICogQHBhcmFtIHJlZkEgQSBDYWxsYmFjayBvciBtdXRhYmxlIFJlZlxuICogQHBhcmFtIHJlZkIgQSBDYWxsYmFjayBvciBtdXRhYmxlIFJlZlxuICogQGNhdGVnb3J5IHJlZnNcbiAqL1xuXG5mdW5jdGlvbiB1c2VNZXJnZWRSZWZzKHJlZkEsIHJlZkIpIHtcbiAgcmV0dXJuIHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBtZXJnZVJlZnMocmVmQSwgcmVmQik7XG4gIH0sIFtyZWZBLCByZWZCXSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZU1lcmdlZFJlZnM7IiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVHJhbnNpdGlvbiBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwL1RyYW5zaXRpb24nO1xuaW1wb3J0IHVzZU1lcmdlZFJlZnMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTWVyZ2VkUmVmcyc7XG5pbXBvcnQgc2FmZUZpbmRET01Ob2RlIGZyb20gJy4vc2FmZUZpbmRET01Ob2RlJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vLyBOb3JtYWxpemVzIFRyYW5zaXRpb24gY2FsbGJhY2tzIHdoZW4gbm9kZVJlZiBpcyB1c2VkLlxuY29uc3QgVHJhbnNpdGlvbldyYXBwZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBvbkVudGVyLFxuICBvbkVudGVyaW5nLFxuICBvbkVudGVyZWQsXG4gIG9uRXhpdCxcbiAgb25FeGl0aW5nLFxuICBvbkV4aXRlZCxcbiAgYWRkRW5kTGlzdGVuZXIsXG4gIGNoaWxkcmVuLFxuICBjaGlsZFJlZixcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBub2RlUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBtZXJnZWRSZWYgPSB1c2VNZXJnZWRSZWZzKG5vZGVSZWYsIGNoaWxkUmVmKTtcbiAgY29uc3QgYXR0YWNoUmVmID0gciA9PiB7XG4gICAgbWVyZ2VkUmVmKHNhZmVGaW5kRE9NTm9kZShyKSk7XG4gIH07XG4gIGNvbnN0IG5vcm1hbGl6ZSA9IGNhbGxiYWNrID0+IHBhcmFtID0+IHtcbiAgICBpZiAoY2FsbGJhY2sgJiYgbm9kZVJlZi5jdXJyZW50KSB7XG4gICAgICBjYWxsYmFjayhub2RlUmVmLmN1cnJlbnQsIHBhcmFtKTtcbiAgICB9XG4gIH07XG5cbiAgLyogZXNsaW50LWRpc2FibGUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzICovXG4gIGNvbnN0IGhhbmRsZUVudGVyID0gdXNlQ2FsbGJhY2sobm9ybWFsaXplKG9uRW50ZXIpLCBbb25FbnRlcl0pO1xuICBjb25zdCBoYW5kbGVFbnRlcmluZyA9IHVzZUNhbGxiYWNrKG5vcm1hbGl6ZShvbkVudGVyaW5nKSwgW29uRW50ZXJpbmddKTtcbiAgY29uc3QgaGFuZGxlRW50ZXJlZCA9IHVzZUNhbGxiYWNrKG5vcm1hbGl6ZShvbkVudGVyZWQpLCBbb25FbnRlcmVkXSk7XG4gIGNvbnN0IGhhbmRsZUV4aXQgPSB1c2VDYWxsYmFjayhub3JtYWxpemUob25FeGl0KSwgW29uRXhpdF0pO1xuICBjb25zdCBoYW5kbGVFeGl0aW5nID0gdXNlQ2FsbGJhY2sobm9ybWFsaXplKG9uRXhpdGluZyksIFtvbkV4aXRpbmddKTtcbiAgY29uc3QgaGFuZGxlRXhpdGVkID0gdXNlQ2FsbGJhY2sobm9ybWFsaXplKG9uRXhpdGVkKSwgW29uRXhpdGVkXSk7XG4gIGNvbnN0IGhhbmRsZUFkZEVuZExpc3RlbmVyID0gdXNlQ2FsbGJhY2sobm9ybWFsaXplKGFkZEVuZExpc3RlbmVyKSwgW2FkZEVuZExpc3RlbmVyXSk7XG4gIC8qIGVzbGludC1lbmFibGUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzICovXG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRyYW5zaXRpb24sIHtcbiAgICByZWY6IHJlZixcbiAgICAuLi5wcm9wcyxcbiAgICBvbkVudGVyOiBoYW5kbGVFbnRlcixcbiAgICBvbkVudGVyZWQ6IGhhbmRsZUVudGVyZWQsXG4gICAgb25FbnRlcmluZzogaGFuZGxlRW50ZXJpbmcsXG4gICAgb25FeGl0OiBoYW5kbGVFeGl0LFxuICAgIG9uRXhpdGVkOiBoYW5kbGVFeGl0ZWQsXG4gICAgb25FeGl0aW5nOiBoYW5kbGVFeGl0aW5nLFxuICAgIGFkZEVuZExpc3RlbmVyOiBoYW5kbGVBZGRFbmRMaXN0ZW5lcixcbiAgICBub2RlUmVmOiBub2RlUmVmLFxuICAgIGNoaWxkcmVuOiB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicgPyAoc3RhdHVzLCBpbm5lclByb3BzKSA9PiBjaGlsZHJlbihzdGF0dXMsIHtcbiAgICAgIC4uLmlubmVyUHJvcHMsXG4gICAgICByZWY6IGF0dGFjaFJlZlxuICAgIH0pIDogLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgcmVmOiBhdHRhY2hSZWZcbiAgICB9KVxuICB9KTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQgVHJhbnNpdGlvbldyYXBwZXI7IiwiaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzYWZlRmluZERPTU5vZGUoY29tcG9uZW50T3JFbGVtZW50KSB7XG4gIGlmIChjb21wb25lbnRPckVsZW1lbnQgJiYgJ3NldFN0YXRlJyBpbiBjb21wb25lbnRPckVsZW1lbnQpIHtcbiAgICByZXR1cm4gUmVhY3RET00uZmluZERPTU5vZGUoY29tcG9uZW50T3JFbGVtZW50KTtcbiAgfVxuICByZXR1cm4gY29tcG9uZW50T3JFbGVtZW50ICE9IG51bGwgPyBjb21wb25lbnRPckVsZW1lbnQgOiBudWxsO1xufSIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBFTlRFUkVELCBFTlRFUklORyB9IGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvVHJhbnNpdGlvbic7XG5pbXBvcnQgdHJhbnNpdGlvbkVuZExpc3RlbmVyIGZyb20gJy4vdHJhbnNpdGlvbkVuZExpc3RlbmVyJztcbmltcG9ydCB0cmlnZ2VyQnJvd3NlclJlZmxvdyBmcm9tICcuL3RyaWdnZXJCcm93c2VyUmVmbG93JztcbmltcG9ydCBUcmFuc2l0aW9uV3JhcHBlciBmcm9tICcuL1RyYW5zaXRpb25XcmFwcGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBmYWRlU3R5bGVzID0ge1xuICBbRU5URVJJTkddOiAnc2hvdycsXG4gIFtFTlRFUkVEXTogJ3Nob3cnXG59O1xuY29uc3QgRmFkZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIHRyYW5zaXRpb25DbGFzc2VzID0ge30sXG4gIG9uRW50ZXIsXG4gIC4uLnJlc3Rcbn0sIHJlZikgPT4ge1xuICBjb25zdCBwcm9wcyA9IHtcbiAgICBpbjogZmFsc2UsXG4gICAgdGltZW91dDogMzAwLFxuICAgIG1vdW50T25FbnRlcjogZmFsc2UsXG4gICAgdW5tb3VudE9uRXhpdDogZmFsc2UsXG4gICAgYXBwZWFyOiBmYWxzZSxcbiAgICAuLi5yZXN0XG4gIH07XG4gIGNvbnN0IGhhbmRsZUVudGVyID0gdXNlQ2FsbGJhY2soKG5vZGUsIGlzQXBwZWFyaW5nKSA9PiB7XG4gICAgdHJpZ2dlckJyb3dzZXJSZWZsb3cobm9kZSk7XG4gICAgb25FbnRlciA9PSBudWxsID8gdm9pZCAwIDogb25FbnRlcihub2RlLCBpc0FwcGVhcmluZyk7XG4gIH0sIFtvbkVudGVyXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uV3JhcHBlciwge1xuICAgIHJlZjogcmVmLFxuICAgIGFkZEVuZExpc3RlbmVyOiB0cmFuc2l0aW9uRW5kTGlzdGVuZXIsXG4gICAgLi4ucHJvcHMsXG4gICAgb25FbnRlcjogaGFuZGxlRW50ZXIsXG4gICAgY2hpbGRSZWY6IGNoaWxkcmVuLnJlZixcbiAgICBjaGlsZHJlbjogKHN0YXR1cywgaW5uZXJQcm9wcykgPT4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgLi4uaW5uZXJQcm9wcyxcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcygnZmFkZScsIGNsYXNzTmFtZSwgY2hpbGRyZW4ucHJvcHMuY2xhc3NOYW1lLCBmYWRlU3R5bGVzW3N0YXR1c10sIHRyYW5zaXRpb25DbGFzc2VzW3N0YXR1c10pXG4gICAgfSlcbiAgfSk7XG59KTtcbkZhZGUuZGlzcGxheU5hbWUgPSAnRmFkZSc7XG5leHBvcnQgZGVmYXVsdCBGYWRlOyIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBwcm9wVHlwZXMgPSB7XG4gIC8qKiBBbiBhY2Nlc3NpYmxlIGxhYmVsIGluZGljYXRpbmcgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGFib3V0IHRoZSBDbG9zZSBCdXR0b24uICovXG4gICdhcmlhLWxhYmVsJzogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIEEgY2FsbGJhY2sgZmlyZWQgYWZ0ZXIgdGhlIENsb3NlIEJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIFJlbmRlciBkaWZmZXJlbnQgY29sb3IgdmFyaWFudCBmb3IgdGhlIGJ1dHRvbi5cbiAgICpcbiAgICogT21pdHRpbmcgdGhpcyB3aWxsIHJlbmRlciB0aGUgZGVmYXVsdCBkYXJrIGNvbG9yLlxuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzLm9uZU9mKFsnd2hpdGUnXSlcbn07XG5jb25zdCBDbG9zZUJ1dHRvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGNsYXNzTmFtZSxcbiAgdmFyaWFudCxcbiAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwgPSAnQ2xvc2UnLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiAvKiNfX1BVUkVfXyovX2pzeChcImJ1dHRvblwiLCB7XG4gIHJlZjogcmVmLFxuICB0eXBlOiBcImJ1dHRvblwiLFxuICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoJ2J0bi1jbG9zZScsIHZhcmlhbnQgJiYgYGJ0bi1jbG9zZS0ke3ZhcmlhbnR9YCwgY2xhc3NOYW1lKSxcbiAgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCxcbiAgLi4ucHJvcHNcbn0pKTtcbkNsb3NlQnV0dG9uLmRpc3BsYXlOYW1lID0gJ0Nsb3NlQnV0dG9uJztcbkNsb3NlQnV0dG9uLnByb3BUeXBlcyA9IHByb3BUeXBlcztcbmV4cG9ydCBkZWZhdWx0IENsb3NlQnV0dG9uOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IChjbGFzc05hbWUgPT4gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHAsIHJlZikgPT4gLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwge1xuICAuLi5wLFxuICByZWY6IHJlZixcbiAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKHAuY2xhc3NOYW1lLCBjbGFzc05hbWUpXG59KSkpOyIsInZhciBySHlwaGVuID0gLy0oLikvZztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNhbWVsaXplKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2Uockh5cGhlbiwgZnVuY3Rpb24gKF8sIGNocikge1xuICAgIHJldHVybiBjaHIudG9VcHBlckNhc2UoKTtcbiAgfSk7XG59IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgY2FtZWxpemUgZnJvbSAnZG9tLWhlbHBlcnMvY2FtZWxpemUnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBwYXNjYWxDYXNlID0gc3RyID0+IHN0clswXS50b1VwcGVyQ2FzZSgpICsgY2FtZWxpemUoc3RyKS5zbGljZSgxKTtcbi8vIFRPRE86IGVtc3RyaWN0ZW4gJiBmaXggdGhlIHR5cGluZyBoZXJlISBgY3JlYXRlV2l0aEJzUHJlZml4PFRFbGVtZW50VHlwZT4uLi5gXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVXaXRoQnNQcmVmaXgocHJlZml4LCB7XG4gIGRpc3BsYXlOYW1lID0gcGFzY2FsQ2FzZShwcmVmaXgpLFxuICBDb21wb25lbnQsXG4gIGRlZmF1bHRQcm9wc1xufSA9IHt9KSB7XG4gIGNvbnN0IEJzQ29tcG9uZW50ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgICBjbGFzc05hbWUsXG4gICAgYnNQcmVmaXgsXG4gICAgYXM6IFRhZyA9IENvbXBvbmVudCB8fCAnZGl2JyxcbiAgICAuLi5wcm9wc1xuICB9LCByZWYpID0+IHtcbiAgICBjb25zdCBjb21wb25lbnRQcm9wcyA9IHtcbiAgICAgIC4uLmRlZmF1bHRQcm9wcyxcbiAgICAgIC4uLnByb3BzXG4gICAgfTtcbiAgICBjb25zdCByZXNvbHZlZFByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgcHJlZml4KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVGFnLCB7XG4gICAgICByZWY6IHJlZixcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHJlc29sdmVkUHJlZml4KSxcbiAgICAgIC4uLmNvbXBvbmVudFByb3BzXG4gICAgfSk7XG4gIH0pO1xuICBCc0NvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xuICByZXR1cm4gQnNDb21wb25lbnQ7XG59IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VVbmNvbnRyb2xsZWQgfSBmcm9tICd1bmNvbnRyb2xsYWJsZSc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCBBbmNob3IgZnJvbSAnQHJlc3RhcnQvdWkvQW5jaG9yJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgRmFkZSBmcm9tICcuL0ZhZGUnO1xuaW1wb3J0IENsb3NlQnV0dG9uIGZyb20gJy4vQ2xvc2VCdXR0b24nO1xuaW1wb3J0IGRpdldpdGhDbGFzc05hbWUgZnJvbSAnLi9kaXZXaXRoQ2xhc3NOYW1lJztcbmltcG9ydCBjcmVhdGVXaXRoQnNQcmVmaXggZnJvbSAnLi9jcmVhdGVXaXRoQnNQcmVmaXgnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IERpdlN0eWxlZEFzSDQgPSBkaXZXaXRoQ2xhc3NOYW1lKCdoNCcpO1xuRGl2U3R5bGVkQXNINC5kaXNwbGF5TmFtZSA9ICdEaXZTdHlsZWRBc0g0JztcbmNvbnN0IEFsZXJ0SGVhZGluZyA9IGNyZWF0ZVdpdGhCc1ByZWZpeCgnYWxlcnQtaGVhZGluZycsIHtcbiAgQ29tcG9uZW50OiBEaXZTdHlsZWRBc0g0XG59KTtcbmNvbnN0IEFsZXJ0TGluayA9IGNyZWF0ZVdpdGhCc1ByZWZpeCgnYWxlcnQtbGluaycsIHtcbiAgQ29tcG9uZW50OiBBbmNob3Jcbn0pO1xuY29uc3QgQWxlcnQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigodW5jb250cm9sbGVkUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7XG4gICAgYnNQcmVmaXgsXG4gICAgc2hvdyA9IHRydWUsXG4gICAgY2xvc2VMYWJlbCA9ICdDbG9zZSBhbGVydCcsXG4gICAgY2xvc2VWYXJpYW50LFxuICAgIGNsYXNzTmFtZSxcbiAgICBjaGlsZHJlbixcbiAgICB2YXJpYW50ID0gJ3ByaW1hcnknLFxuICAgIG9uQ2xvc2UsXG4gICAgZGlzbWlzc2libGUsXG4gICAgdHJhbnNpdGlvbiA9IEZhZGUsXG4gICAgLi4ucHJvcHNcbiAgfSA9IHVzZVVuY29udHJvbGxlZCh1bmNvbnRyb2xsZWRQcm9wcywge1xuICAgIHNob3c6ICdvbkNsb3NlJ1xuICB9KTtcbiAgY29uc3QgcHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnYWxlcnQnKTtcbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSB1c2VFdmVudENhbGxiYWNrKGUgPT4ge1xuICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICBvbkNsb3NlKGZhbHNlLCBlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBUcmFuc2l0aW9uID0gdHJhbnNpdGlvbiA9PT0gdHJ1ZSA/IEZhZGUgOiB0cmFuc2l0aW9uO1xuICBjb25zdCBhbGVydCA9IC8qI19fUFVSRV9fKi9fanN4cyhcImRpdlwiLCB7XG4gICAgcm9sZTogXCJhbGVydFwiLFxuICAgIC4uLighVHJhbnNpdGlvbiA/IHByb3BzIDogdW5kZWZpbmVkKSxcbiAgICByZWY6IHJlZixcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBwcmVmaXgsIHZhcmlhbnQgJiYgYCR7cHJlZml4fS0ke3ZhcmlhbnR9YCwgZGlzbWlzc2libGUgJiYgYCR7cHJlZml4fS1kaXNtaXNzaWJsZWApLFxuICAgIGNoaWxkcmVuOiBbZGlzbWlzc2libGUgJiYgLyojX19QVVJFX18qL19qc3goQ2xvc2VCdXR0b24sIHtcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsb3NlLFxuICAgICAgXCJhcmlhLWxhYmVsXCI6IGNsb3NlTGFiZWwsXG4gICAgICB2YXJpYW50OiBjbG9zZVZhcmlhbnRcbiAgICB9KSwgY2hpbGRyZW5dXG4gIH0pO1xuICBpZiAoIVRyYW5zaXRpb24pIHJldHVybiBzaG93ID8gYWxlcnQgOiBudWxsO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbiwge1xuICAgIHVubW91bnRPbkV4aXQ6IHRydWUsXG4gICAgLi4ucHJvcHMsXG4gICAgcmVmOiB1bmRlZmluZWQsXG4gICAgaW46IHNob3csXG4gICAgY2hpbGRyZW46IGFsZXJ0XG4gIH0pO1xufSk7XG5BbGVydC5kaXNwbGF5TmFtZSA9ICdBbGVydCc7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKEFsZXJ0LCB7XG4gIExpbms6IEFsZXJ0TGluayxcbiAgSGVhZGluZzogQWxlcnRIZWFkaW5nXG59KTsiLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBBbGVydCBmcm9tIFwicmVhY3QtYm9vdHN0cmFwL0FsZXJ0XCI7XG5cbmV4cG9ydCBjb25zdCBNZXNzYWdlID0gKHtcbiAgaGVhZGluZyxcbiAgaWNvbixcbiAgdHlwZSxcbiAgZGlzbWlzc2libGUsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG59KSA9PiB7XG4gIHZhciB2YXJpYW50ID0gXCJwcmltYXJ5XCI7XG4gIGNvbnN0IHNob3dJY29uID0gaWNvbiA9PT0gdW5kZWZpbmVkIHx8IGljb247XG4gIHZhciBpY29uQ2xhc3MgPSBcImJpIGJpLWV4Y2xhbWF0aW9uLWNpcmNsZVwiO1xuICB2YXIgW3Nob3csIHNldFNob3ddID0gdXNlU3RhdGUodHJ1ZSk7XG5cbiAgaWYgKCFzaG93KSB7XG4gICAgcmV0dXJuIDxSZWFjdC5GcmFnbWVudCAvPjtcbiAgfVxuXG4gIGlmICh0eXBlID09PSBcImVycm9yXCIpIHtcbiAgICB2YXJpYW50ID0gXCJkYW5nZXJcIjtcbiAgICBpY29uQ2xhc3MgPSBcImJpIGJpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlLWZpbGxcIjtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcIndhcm5pbmdcIikge1xuICAgIHZhcmlhbnQgPSBcIndhcm5pbmdcIjtcbiAgICBpY29uQ2xhc3MgPSBcImJpIGJpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJzdWNjZXNzXCIpIHtcbiAgICB2YXJpYW50ID0gXCJzdWNjZXNzXCI7XG4gICAgaWNvbkNsYXNzID0gXCJiaSBiaS1jaGVjay1jaXJjbGVcIjtcbiAgfVxuXG4gIGljb24gPSBzaG93SWNvbiAmJiAoaWNvbiB8fCA8aSBjbGFzc05hbWU9e2Ake2ljb25DbGFzc30gbWUtMiBtLTBgfT48L2k+KTtcblxuICByZXR1cm4gKFxuICAgIDxBbGVydFxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICB2YXJpYW50PXt2YXJpYW50fVxuICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvdyhmYWxzZSl9XG4gICAgICBkaXNtaXNzaWJsZT17ZGlzbWlzc2libGV9XG4gICAgPlxuICAgICAge2hlYWRpbmcgJiYgKFxuICAgICAgICA8QWxlcnQuSGVhZGluZz5cbiAgICAgICAgICB7aWNvbn1cbiAgICAgICAgICB7aGVhZGluZ31cbiAgICAgICAgPC9BbGVydC5IZWFkaW5nPlxuICAgICAgKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtLTBcIj5cbiAgICAgICAgeyFoZWFkaW5nICYmIGljb259XG4gICAgICAgIDxkaXY+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9BbGVydD5cbiAgKTtcbn07XG5cbk1lc3NhZ2UucHJvcFR5cGVzID0ge1xuICBoZWFkaW5nOiBQcm9wVHlwZXMubm9kZSxcbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIHR5cGU6IFByb3BUeXBlcy5vbmVPZihbXCJlcnJvclwiLCBcIndhcm5pbmdcIiwgXCJzdWNjZXNzXCIsIFwiaW5mb1wiXSksXG4gIGRpc21pc3NpYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSxcbiAgICBQcm9wVHlwZXMubm9kZSxcbiAgXSksXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbmV4cG9ydCBjb25zdCBFcnJvck1lc3NhZ2UgPSAoeyBoZWFkaW5nLCBlcnJvciB9KSA9PiB7XG4gIGNvbnNvbGUud2FybihlcnJvcik7XG4gIGhlYWRpbmcgPSBoZWFkaW5nIHx8IFwiRXJyb3JcIjtcblxuICB2YXIgbWVzc2FnZTtcbiAgaWYgKHR5cGVvZiBlcnJvciA9PT0gXCJzdHJpbmdcIiB8fCBlcnJvciBpbnN0YW5jZW9mIFN0cmluZykge1xuICAgIG1lc3NhZ2UgPSBlcnJvcjtcbiAgfSBlbHNlIGlmIChcbiAgICBlcnJvci5tZXNzYWdlICYmXG4gICAgKHR5cGVvZiBlcnJvci5tZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IGVycm9yLm1lc3NhZ2UgaW5zdGFuY2VvZiBTdHJpbmcpXG4gICkge1xuICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICB9IGVsc2Uge1xuICAgIG1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeShlcnJvcik7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxNZXNzYWdlIGNsYXNzTmFtZT1cIm10LTMgbXgtM1wiIGhlYWRpbmc9e2hlYWRpbmd9IHR5cGU9XCJlcnJvclwiIGRpc21pc3NpYmxlPlxuICAgICAge21lc3NhZ2V9XG4gICAgPC9NZXNzYWdlPlxuICApO1xufTtcblxuRXJyb3JNZXNzYWdlLnByb3BUeXBlcyA9IHtcbiAgaGVhZGluZzogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuaW5zdGFuY2VPZihFcnJvcildKSxcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5mbyA9ICh7IGNsYXNzTmFtZSwgc2l6ZSwgY29sb3IsIHRpdGxlIH0pID0+IHtcbiAgdmFyIGNsYXNzZXMgPSBcInNwaW5uZXItYm9yZGVyXCI7XG5cbiAgaWYgKGNsYXNzTmFtZSkge1xuICAgIGNsYXNzZXMgKz0gXCIgXCIgKyBjbGFzc05hbWU7XG4gIH1cbiAgaWYgKHNpemUgPT09IFwic21cIikge1xuICAgIGNsYXNzZXMgKz0gXCIgc3Bpbm5lci1ib3JkZXItc21cIjtcbiAgfVxuICBpZiAoY29sb3IgPT09IFwicHJpbWFyeVwiKSB7XG4gICAgY2xhc3NlcyArPSBcIiB0ZXh0LXByaW1hcnlcIjtcbiAgfSBlbHNlIGlmIChjb2xvciA9PT0gXCJzZWNvbmRhcnlcIikge1xuICAgIGNsYXNzZXMgKz0gXCIgdGV4dC1zZWNvbmRhcnlcIjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPHNwYW4gdGl0bGU9e3RpdGxlfSBjbGFzc05hbWU9e2NsYXNzZXN9IHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICApO1xufTtcblxuTG9hZGluZ0luZm8ucHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNpemU6IFByb3BUeXBlcy5vbmVPZihbXCJzbVwiXSksXG4gIGNvbG9yOiBQcm9wVHlwZXMub25lT2YoW1wicHJpbWFyeVwiLCBcInNlY29uZGFyeVwiXSksXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuTG9hZGluZ0luZm8uZGVmYXVsdFByb3BzID0ge1xuICB0aXRsZTogXCJMb2FkaW5nLi4uXCIsXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBJbmZvU2VydmljZSB9IGZyb20gXCIuLi9JbmZvU2VydmljZVwiO1xuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gXCIuL01lc3NhZ2VcIjtcbmltcG9ydCB7IExvYWRpbmdJbmZvIH0gZnJvbSBcIi4vTG9hZGluZ0luZm9cIjtcblxuYXN5bmMgZnVuY3Rpb24gX2xvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCkge1xuICBjb25zdCBzZXJ2aWNlID0gbmV3IEluZm9TZXJ2aWNlKCk7XG4gIHJldHVybiBhd2FpdCBzZXJ2aWNlLmxvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVN1Ym1pdChzaG93TG9hZGluZ0luZm8sIHRoZW4sIG9uRXJyb3IpIHtcbiAgcmV0dXJuIChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgc2hvd0xvYWRpbmdJbmZvKCk7XG4gICAgY29uc3QgdXNlcm5hbWUgPSBldmVudC50YXJnZXQudXNlcm5hbWUudmFsdWU7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBldmVudC50YXJnZXQucGFzc3dvcmQudmFsdWU7XG5cbiAgICAvLyBkZWFjdGl2ZSBsb2dpbiBmb3JtIChubyByZXRyeSB1bnRpbCB0aGUgc2VydmVyIGFuc3dlciBpcyB0aGVyZSBvciBhXG4gICAgLy8gdGltZW91dCkuXG4gICAgZXZlbnQudGFyZ2V0LnN1Ym1pdC5kaXNhYmxlZCA9IHRydWU7XG5cbiAgICB2YXIgbG9naW5fcHJvbWlzZSA9IF9sb2dpbih1c2VybmFtZSwgcGFzc3dvcmQpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIC8vIGFjdGl2ZSBsb2dpbiBhZ2FpblxuICAgICAgZXZlbnQudGFyZ2V0LnN1Ym1pdC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoZW4pIHtcbiAgICAgIGxvZ2luX3Byb21pc2UgPSBsb2dpbl9wcm9taXNlLnRoZW4odGhlbik7XG4gICAgfVxuXG4gICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgIGxvZ2luX3Byb21pc2UuY2F0Y2gob25FcnJvcik7XG4gICAgfVxuICB9O1xufVxuXG5jbGFzcyBUaW1lb3V0IHtcbiAgY29uc3RydWN0b3IoY2IsIG1zKSB7XG4gICAgdGhpcy5jYiA9IGNiO1xuICAgIG1zID0gTnVtYmVyLmlzSW50ZWdlcihtcykgPyBtcyA6IDEwMDAwO1xuICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5jYiwgbXMpO1xuICB9XG4gIHJlc2V0KG1zKSB7XG4gICAgdGhpcy5wYXVzZSgpO1xuICAgIGlmICh0aGlzLmNiKSB7XG4gICAgICBtcyA9IE51bWJlci5pc0ludGVnZXIobXMpID8gbXMgOiAyMDAwMDtcbiAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5jYiwgbXMpO1xuICAgIH1cbiAgfVxuICBwYXVzZSgpIHtcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICAgIHRoaXMudGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgc3RvcCgpIHtcbiAgICB0aGlzLnBhdXNlKCk7XG4gICAgdGhpcy5jYiA9IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5jb25zdCBMb2dpbkZvcm1JbnB1dHMgPSAoeyB0aGVuLCBvbkVycm9yLCBzaG93TWVzc2FnZXMsIHNob3dMb2FkaW5nSW5mbyB9KSA9PiB7XG4gIGNvbnN0IHRpbWVvdXQgPSBuZXcgVGltZW91dChzaG93TWVzc2FnZXMpO1xuICBjb25zdCBvbkNoYW5nZSA9ICgpID0+IHRpbWVvdXQucGF1c2UoKTtcbiAgY29uc3Qgb25CbHVyID0gKCkgPT4gdGltZW91dC5yZXNldCgpO1xuICBjb25zdCBvbkNsaWNrID0gKCkgPT4gdGltZW91dC5zdG9wKCk7XG5cbiAgY29uc3Qgd3JhcHBlZE9uRXJyb3IgPSBhc3luYyAoZXJyb3IpID0+IHtcbiAgICBzaG93TWVzc2FnZXMoKTtcbiAgICBpZiAob25FcnJvcikge1xuICAgICAgcmV0dXJuIGF3YWl0IG9uRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtXG4gICAgICBjbGFzc05hbWU9XCJtLTBcIlxuICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdChzaG93TG9hZGluZ0luZm8sIHRoZW4sIHdyYXBwZWRPbkVycm9yKX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBnLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tNVwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICBuYW1lPVwidXNlcm5hbWVcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVXNlcm5hbWVcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlVzZXJuYW1lXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tNVwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBhc3N3b3JkXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJQYXNzd29yZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTFcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zZWNvbmRhcnkgbmF2YmFyLWJ0biBkLWlubGluZS1ibG9ja1wiXG4gICAgICAgICAgICBuYW1lPVwic3VibWl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIExvZ2luXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuTG9naW5Gb3JtSW5wdXRzLnByb3BUeXBlcyA9IHtcbiAgdGhlbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIHNob3dNZXNzYWdlczogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc2hvd0xvYWRpbmdJbmZvOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuY29uc3QgTG9naW5Gb3JtTWVzc2FnZSA9ICh7IG1lc3NhZ2UsIG1lc3NhZ2VUeXBlLCBzaG93SW5wdXRzIH0pID0+IHtcbiAgbWVzc2FnZSA9IG1lc3NhZ2UgPyAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tYXV0b1wiPlxuICAgICAgPE1lc3NhZ2UgdHlwZT17bWVzc2FnZVR5cGV9PnttZXNzYWdlfTwvTWVzc2FnZT5cbiAgICA8L2Rpdj5cbiAgKSA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYWxpZ24taXRlbXMtY2VudGVyIHJvdyBnLTNcIj5cbiAgICAgIHttZXNzYWdlfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tMVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zZWNvbmRhcnkgbmF2YmFyLWJ0biBkLWlubGluZS1ibG9ja1wiXG4gICAgICAgICAgbmFtZT1cInNob3dcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9e3Nob3dJbnB1dHN9XG4gICAgICAgID5cbiAgICAgICAgICBMb2dpblxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuTG9naW5Gb3JtTWVzc2FnZS5wcm9wVHlwZXMgPSB7XG4gIG1lc3NhZ2U6IFByb3BUeXBlcy5ub2RlLFxuICBtZXNzYWdlVHlwZTogUHJvcFR5cGVzLm9uZU9mKFtcImVycm9yXCIsIFwid2FybmluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJpbmZvXCJdKSxcbiAgc2hvd0lucHV0czogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG5cbmV4cG9ydCBjb25zdCBMb2dpbkZvcm0gPSAoeyB0aGVuLCBvbkVycm9yLCBtZXNzYWdlLCBtZXNzYWdlVHlwZSB9KSA9PiB7XG4gIGNvbnN0IFtzaG93SW5wdXRzLCBzZXRTaG93SW5wdXRzXSA9IHVzZVN0YXRlKFwibWVzc2FnZXNcIik7XG5cbiAgaWYgKHNob3dJbnB1dHMgPT09IFwiaW5wdXRzXCIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPExvZ2luRm9ybUlucHV0c1xuICAgICAgICB0aGVuPXt0aGVufVxuICAgICAgICBvbkVycm9yPXtvbkVycm9yfVxuICAgICAgICBzaG93TWVzc2FnZXM9eygpID0+IHNldFNob3dJbnB1dHMoXCJtZXNzYWdlc1wiKX1cbiAgICAgICAgc2hvd0xvYWRpbmdJbmZvPXsoKSA9PiBzZXRTaG93SW5wdXRzKFwibG9hZGluZ1wiKX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfSBlbHNlIGlmIChzaG93SW5wdXRzID09PSBcImxvYWRpbmdcIikge1xuICAgIHJldHVybiA8TG9hZGluZ0luZm8gc2l6ZT1cInNtXCIgLz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxMb2dpbkZvcm1NZXNzYWdlXG4gICAgICBtZXNzYWdlPXttZXNzYWdlfVxuICAgICAgbWVzc2FnZVR5cGU9e21lc3NhZ2VUeXBlfVxuICAgICAgc2hvd0lucHV0cz17KCkgPT4gc2V0U2hvd0lucHV0cyhcImlucHV0c1wiKX1cbiAgICAvPlxuICApO1xufTtcblxuTG9naW5Gb3JtLnByb3BUeXBlcyA9IHtcbiAgdGhlbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG1lc3NhZ2U6IFByb3BUeXBlcy5ub2RlLFxuICBtZXNzYWdlVHlwZTogUHJvcFR5cGVzLm9uZU9mKFtcImVycm9yXCIsIFwid2FybmluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJpbmZvXCJdKSxcbn07XG4iLCJ2YXIgdG9BcnJheSA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmNhbGwoRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsIFtdLnNsaWNlKTtcbi8qKlxuICogUnVucyBgcXVlcnlTZWxlY3RvckFsbGAgb24gYSBnaXZlbiBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudFxuICogQHBhcmFtIHNlbGVjdG9yIHRoZSBzZWxlY3RvclxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHFzYShlbGVtZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gdG9BcnJheShlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTtcbn0iLCJpbXBvcnQgeyB1c2VSZWR1Y2VyIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB0cmlnZ2VycyBhIGNvbXBvbmVudCB1cGRhdGUuIHRoZSBob29rIGVxdWl2YWxlbnQgdG9cbiAqIGB0aGlzLmZvcmNlVXBkYXRlKClgIGluIGEgY2xhc3MgY29tcG9uZW50LiBJbiBtb3N0IGNhc2VzIHVzaW5nIGEgc3RhdGUgdmFsdWUgZGlyZWN0bHlcbiAqIGlzIHByZWZlcmFibGUgYnV0IG1heSBiZSByZXF1aXJlZCBpbiBzb21lIGFkdmFuY2VkIHVzYWdlcyBvZiByZWZzIGZvciBpbnRlcm9wIG9yXG4gKiB3aGVuIGRpcmVjdCBET00gbWFuaXB1bGF0aW9uIGlzIHJlcXVpcmVkLlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBmb3JjZVVwZGF0ZSA9IHVzZUZvcmNlVXBkYXRlKCk7XG4gKlxuICogY29uc3QgdXBkYXRlT25DbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAqICBmb3JjZVVwZGF0ZSgpXG4gKiB9LCBbZm9yY2VVcGRhdGVdKVxuICpcbiAqIHJldHVybiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXt1cGRhdGVPbkNsaWNrfT5IaSB0aGVyZTwvYnV0dG9uPlxuICogYGBgXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRm9yY2VVcGRhdGUoKSB7XG4gIC8vIFRoZSB0b2dnbGluZyBzdGF0ZSB2YWx1ZSBpcyBkZXNpZ25lZCB0byBkZWZlYXQgUmVhY3Qgb3B0aW1pemF0aW9ucyBmb3Igc2tpcHBpbmdcbiAgLy8gdXBkYXRlcyB3aGVuIHRoZXkgYXJlIHN0cmljdGluZyBlcXVhbCB0byB0aGUgbGFzdCBzdGF0ZSB2YWx1ZVxuICB2YXIgX3VzZVJlZHVjZXIgPSB1c2VSZWR1Y2VyKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgIHJldHVybiAhc3RhdGU7XG4gIH0sIGZhbHNlKSxcbiAgICAgIGRpc3BhdGNoID0gX3VzZVJlZHVjZXJbMV07XG5cbiAgcmV0dXJuIGRpc3BhdGNoO1xufSIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IERyb3Bkb3duQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25Db250ZXh0OyIsInZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiBmaW5kKGl0ZXIsIHRhciwga2V5KSB7XG5cdGZvciAoa2V5IG9mIGl0ZXIua2V5cygpKSB7XG5cdFx0aWYgKGRlcXVhbChrZXksIHRhcikpIHJldHVybiBrZXk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcXVhbChmb28sIGJhcikge1xuXHR2YXIgY3RvciwgbGVuLCB0bXA7XG5cdGlmIChmb28gPT09IGJhcikgcmV0dXJuIHRydWU7XG5cblx0aWYgKGZvbyAmJiBiYXIgJiYgKGN0b3I9Zm9vLmNvbnN0cnVjdG9yKSA9PT0gYmFyLmNvbnN0cnVjdG9yKSB7XG5cdFx0aWYgKGN0b3IgPT09IERhdGUpIHJldHVybiBmb28uZ2V0VGltZSgpID09PSBiYXIuZ2V0VGltZSgpO1xuXHRcdGlmIChjdG9yID09PSBSZWdFeHApIHJldHVybiBmb28udG9TdHJpbmcoKSA9PT0gYmFyLnRvU3RyaW5nKCk7XG5cblx0XHRpZiAoY3RvciA9PT0gQXJyYXkpIHtcblx0XHRcdGlmICgobGVuPWZvby5sZW5ndGgpID09PSBiYXIubGVuZ3RoKSB7XG5cdFx0XHRcdHdoaWxlIChsZW4tLSAmJiBkZXF1YWwoZm9vW2xlbl0sIGJhcltsZW5dKSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbGVuID09PSAtMTtcblx0XHR9XG5cblx0XHRpZiAoY3RvciA9PT0gU2V0KSB7XG5cdFx0XHRpZiAoZm9vLnNpemUgIT09IGJhci5zaXplKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGZvciAobGVuIG9mIGZvbykge1xuXHRcdFx0XHR0bXAgPSBsZW47XG5cdFx0XHRcdGlmICh0bXAgJiYgdHlwZW9mIHRtcCA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHR0bXAgPSBmaW5kKGJhciwgdG1wKTtcblx0XHRcdFx0XHRpZiAoIXRtcCkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghYmFyLmhhcyh0bXApKSByZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAoY3RvciA9PT0gTWFwKSB7XG5cdFx0XHRpZiAoZm9vLnNpemUgIT09IGJhci5zaXplKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGZvciAobGVuIG9mIGZvbykge1xuXHRcdFx0XHR0bXAgPSBsZW5bMF07XG5cdFx0XHRcdGlmICh0bXAgJiYgdHlwZW9mIHRtcCA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHR0bXAgPSBmaW5kKGJhciwgdG1wKTtcblx0XHRcdFx0XHRpZiAoIXRtcCkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghZGVxdWFsKGxlblsxXSwgYmFyLmdldCh0bXApKSkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKGN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG5cdFx0XHRmb28gPSBuZXcgVWludDhBcnJheShmb28pO1xuXHRcdFx0YmFyID0gbmV3IFVpbnQ4QXJyYXkoYmFyKTtcblx0XHR9IGVsc2UgaWYgKGN0b3IgPT09IERhdGFWaWV3KSB7XG5cdFx0XHRpZiAoKGxlbj1mb28uYnl0ZUxlbmd0aCkgPT09IGJhci5ieXRlTGVuZ3RoKSB7XG5cdFx0XHRcdHdoaWxlIChsZW4tLSAmJiBmb28uZ2V0SW50OChsZW4pID09PSBiYXIuZ2V0SW50OChsZW4pKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBsZW4gPT09IC0xO1xuXHRcdH1cblxuXHRcdGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoZm9vKSkge1xuXHRcdFx0aWYgKChsZW49Zm9vLmJ5dGVMZW5ndGgpID09PSBiYXIuYnl0ZUxlbmd0aCkge1xuXHRcdFx0XHR3aGlsZSAobGVuLS0gJiYgZm9vW2xlbl0gPT09IGJhcltsZW5dKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBsZW4gPT09IC0xO1xuXHRcdH1cblxuXHRcdGlmICghY3RvciB8fCB0eXBlb2YgZm9vID09PSAnb2JqZWN0Jykge1xuXHRcdFx0bGVuID0gMDtcblx0XHRcdGZvciAoY3RvciBpbiBmb28pIHtcblx0XHRcdFx0aWYgKGhhcy5jYWxsKGZvbywgY3RvcikgJiYgKytsZW4gJiYgIWhhcy5jYWxsKGJhciwgY3RvcikpIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWYgKCEoY3RvciBpbiBiYXIpIHx8ICFkZXF1YWwoZm9vW2N0b3JdLCBiYXJbY3Rvcl0pKSByZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gT2JqZWN0LmtleXMoYmFyKS5sZW5ndGggPT09IGxlbjtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZm9vICE9PSBmb28gJiYgYmFyICE9PSBiYXI7XG59XG4iLCJpbXBvcnQgeyBhdXRvIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBpZiAobm9kZS50b1N0cmluZygpICE9PSAnW29iamVjdCBXaW5kb3ddJykge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cgOiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCJleHBvcnQgdmFyIG1heCA9IE1hdGgubWF4O1xuZXhwb3J0IHZhciBtaW4gPSBNYXRoLm1pbjtcbmV4cG9ydCB2YXIgcm91bmQgPSBNYXRoLnJvdW5kOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVBU3RyaW5nKCkge1xuICB2YXIgdWFEYXRhID0gbmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7XG5cbiAgaWYgKHVhRGF0YSAhPSBudWxsICYmIHVhRGF0YS5icmFuZHMgJiYgQXJyYXkuaXNBcnJheSh1YURhdGEuYnJhbmRzKSkge1xuICAgIHJldHVybiB1YURhdGEuYnJhbmRzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uYnJhbmQgKyBcIi9cIiArIGl0ZW0udmVyc2lvbjtcbiAgICB9KS5qb2luKCcgJyk7XG4gIH1cblxuICByZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbn0iLCJpbXBvcnQgZ2V0VUFTdHJpbmcgZnJvbSBcIi4uL3V0aWxzL3VzZXJBZ2VudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNMYXlvdXRWaWV3cG9ydCgpIHtcbiAgcmV0dXJuICEvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xufSIsImltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgaXNMYXlvdXRWaWV3cG9ydCBmcm9tIFwiLi9pc0xheW91dFZpZXdwb3J0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3kpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IDE7XG4gIHZhciBzY2FsZVkgPSAxO1xuXG4gIGlmIChpbmNsdWRlU2NhbGUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIHNjYWxlWCA9IGVsZW1lbnQub2Zmc2V0V2lkdGggPiAwID8gcm91bmQoY2xpZW50UmVjdC53aWR0aCkgLyBlbGVtZW50Lm9mZnNldFdpZHRoIHx8IDEgOiAxO1xuICAgIHNjYWxlWSA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ID4gMCA/IHJvdW5kKGNsaWVudFJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDEgOiAxO1xuICB9XG5cbiAgdmFyIF9yZWYgPSBpc0VsZW1lbnQoZWxlbWVudCkgPyBnZXRXaW5kb3coZWxlbWVudCkgOiB3aW5kb3csXG4gICAgICB2aXN1YWxWaWV3cG9ydCA9IF9yZWYudmlzdWFsVmlld3BvcnQ7XG5cbiAgdmFyIGFkZFZpc3VhbE9mZnNldHMgPSAhaXNMYXlvdXRWaWV3cG9ydCgpICYmIGlzRml4ZWRTdHJhdGVneTtcbiAgdmFyIHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0IDogMCkpIC8gc2NhbGVYO1xuICB2YXIgeSA9IChjbGllbnRSZWN0LnRvcCArIChhZGRWaXN1YWxPZmZzZXRzICYmIHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wIDogMCkpIC8gc2NhbGVZO1xuICB2YXIgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGVYO1xuICB2YXIgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZVk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICByaWdodDogeCArIHdpZHRoLFxuICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICBsZWZ0OiB4LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250YWlucyhwYXJlbnQsIGNoaWxkKSB7XG4gIHZhciByb290Tm9kZSA9IGNoaWxkLmdldFJvb3ROb2RlICYmIGNoaWxkLmdldFJvb3ROb2RlKCk7IC8vIEZpcnN0LCBhdHRlbXB0IHdpdGggZmFzdGVyIG5hdGl2ZSBtZXRob2RcblxuICBpZiAocGFyZW50LmNvbnRhaW5zKGNoaWxkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIHRoZW4gZmFsbGJhY2sgdG8gY3VzdG9tIGltcGxlbWVudGF0aW9uIHdpdGggU2hhZG93IERPTSBzdXBwb3J0XG4gIGVsc2UgaWYgKHJvb3ROb2RlICYmIGlzU2hhZG93Um9vdChyb290Tm9kZSkpIHtcbiAgICAgIHZhciBuZXh0ID0gY2hpbGQ7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG5leHQgJiYgcGFyZW50LmlzU2FtZU5vZGUobmV4dCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IG5lZWQgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzLi4uXG5cblxuICAgICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICAgIH0gd2hpbGUgKG5leHQpO1xuICAgIH0gLy8gR2l2ZSB1cCwgdGhlIHJlc3VsdCBpcyBmYWxzZVxuXG5cbiAgcmV0dXJuIGZhbHNlO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5kZXhPZihnZXROb2RlTmFtZShlbGVtZW50KSkgPj0gMDtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkge1xuICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gIHJldHVybiAoKGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQub3duZXJEb2N1bWVudCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICBlbGVtZW50LmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgaXNUYWJsZUVsZW1lbnQgZnJvbSBcIi4vaXNUYWJsZUVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBnZXRVQVN0cmluZyBmcm9tIFwiLi4vdXRpbHMvdXNlckFnZW50LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy84MzdcbiAgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xufSAvLyBgLm9mZnNldFBhcmVudGAgcmVwb3J0cyBgbnVsbGAgZm9yIGZpeGVkIGVsZW1lbnRzLCB3aGlsZSBhYnNvbHV0ZSBlbGVtZW50c1xuLy8gcmV0dXJuIHRoZSBjb250YWluaW5nIGJsb2NrXG5cblxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgdmFyIGlzRmlyZWZveCA9IC9maXJlZm94L2kudGVzdChnZXRVQVN0cmluZygpKTtcbiAgdmFyIGlzSUUgPSAvVHJpZGVudC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG5cbiAgaWYgKGlzSUUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEluIElFIDksIDEwIGFuZCAxMSBmaXhlZCBlbGVtZW50cyBjb250YWluaW5nIGJsb2NrIGlzIGFsd2F5cyBlc3RhYmxpc2hlZCBieSB0aGUgdmlld3BvcnRcbiAgICB2YXIgZWxlbWVudENzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG5cbiAgICBpZiAoZWxlbWVudENzcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcblxuICBpZiAoaXNTaGFkb3dSb290KGN1cnJlbnROb2RlKSkge1xuICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUuaG9zdDtcbiAgfVxuXG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiBbJ2h0bWwnLCAnYm9keSddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoY3VycmVudE5vZGUpKSA8IDApIHtcbiAgICB2YXIgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7IC8vIFRoaXMgaXMgbm9uLWV4aGF1c3RpdmUgYnV0IGNvdmVycyB0aGUgbW9zdCBjb21tb24gQ1NTIHByb3BlcnRpZXMgdGhhdFxuICAgIC8vIGNyZWF0ZSBhIGNvbnRhaW5pbmcgYmxvY2suXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcblxuICAgIGlmIChjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgY3NzLmNvbnRhaW4gPT09ICdwYWludCcgfHwgWyd0cmFuc2Zvcm0nLCAncGVyc3BlY3RpdmUnXS5pbmRleE9mKGNzcy53aWxsQ2hhbmdlKSAhPT0gLTEgfHwgaXNGaXJlZm94ICYmIGNzcy53aWxsQ2hhbmdlID09PSAnZmlsdGVyJyB8fCBpc0ZpcmVmb3ggJiYgY3NzLmZpbHRlciAmJiBjc3MuZmlsdGVyICE9PSAnbm9uZScpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufSAvLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpO1xuXG4gIHdoaWxlIChvZmZzZXRQYXJlbnQgJiYgaXNUYWJsZUVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQpO1xuICB9XG5cbiAgaWYgKG9mZnNldFBhcmVudCAmJiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2h0bWwnIHx8IGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdib2R5JyAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW5kb3c7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpID49IDAgPyAneCcgOiAneSc7XG59IiwiaW1wb3J0IHsgbWF4IGFzIG1hdGhNYXgsIG1pbiBhcyBtYXRoTWluIH0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpIHtcbiAgcmV0dXJuIG1hdGhNYXgobWluLCBtYXRoTWluKHZhbHVlLCBtYXgpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW5NYXhDbGFtcChtaW4sIHZhbHVlLCBtYXgpIHtcbiAgdmFyIHYgPSB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KTtcbiAgcmV0dXJuIHYgPiBtYXggPyBtYXggOiB2O1xufSIsImltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4vZ2V0RnJlc2hTaWRlT2JqZWN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZVBhZGRpbmdPYmplY3QocGFkZGluZ09iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZ2V0RnJlc2hTaWRlT2JqZWN0KCksIHBhZGRpbmdPYmplY3QpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEZyZXNoU2lkZU9iamVjdCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDBcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufSIsImV4cG9ydCB2YXIgdG9wID0gJ3RvcCc7XG5leHBvcnQgdmFyIGJvdHRvbSA9ICdib3R0b20nO1xuZXhwb3J0IHZhciByaWdodCA9ICdyaWdodCc7XG5leHBvcnQgdmFyIGxlZnQgPSAnbGVmdCc7XG5leHBvcnQgdmFyIGF1dG8gPSAnYXV0byc7XG5leHBvcnQgdmFyIGJhc2VQbGFjZW1lbnRzID0gW3RvcCwgYm90dG9tLCByaWdodCwgbGVmdF07XG5leHBvcnQgdmFyIHN0YXJ0ID0gJ3N0YXJ0JztcbmV4cG9ydCB2YXIgZW5kID0gJ2VuZCc7XG5leHBvcnQgdmFyIGNsaXBwaW5nUGFyZW50cyA9ICdjbGlwcGluZ1BhcmVudHMnO1xuZXhwb3J0IHZhciB2aWV3cG9ydCA9ICd2aWV3cG9ydCc7XG5leHBvcnQgdmFyIHBvcHBlciA9ICdwb3BwZXInO1xuZXhwb3J0IHZhciByZWZlcmVuY2UgPSAncmVmZXJlbmNlJztcbmV4cG9ydCB2YXIgdmFyaWF0aW9uUGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9iYXNlUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pO1xuZXhwb3J0IHZhciBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL1tdLmNvbmNhdChiYXNlUGxhY2VtZW50cywgW2F1dG9dKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQsIHBsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7IC8vIG1vZGlmaWVycyB0aGF0IG5lZWQgdG8gcmVhZCB0aGUgRE9NXG5cbmV4cG9ydCB2YXIgYmVmb3JlUmVhZCA9ICdiZWZvcmVSZWFkJztcbmV4cG9ydCB2YXIgcmVhZCA9ICdyZWFkJztcbmV4cG9ydCB2YXIgYWZ0ZXJSZWFkID0gJ2FmdGVyUmVhZCc7IC8vIHB1cmUtbG9naWMgbW9kaWZpZXJzXG5cbmV4cG9ydCB2YXIgYmVmb3JlTWFpbiA9ICdiZWZvcmVNYWluJztcbmV4cG9ydCB2YXIgbWFpbiA9ICdtYWluJztcbmV4cG9ydCB2YXIgYWZ0ZXJNYWluID0gJ2FmdGVyTWFpbic7IC8vIG1vZGlmaWVyIHdpdGggdGhlIHB1cnBvc2UgdG8gd3JpdGUgdG8gdGhlIERPTSAob3Igd3JpdGUgaW50byBhIGZyYW1ld29yayBzdGF0ZSlcblxuZXhwb3J0IHZhciBiZWZvcmVXcml0ZSA9ICdiZWZvcmVXcml0ZSc7XG5leHBvcnQgdmFyIHdyaXRlID0gJ3dyaXRlJztcbmV4cG9ydCB2YXIgYWZ0ZXJXcml0ZSA9ICdhZnRlcldyaXRlJztcbmV4cG9ydCB2YXIgbW9kaWZpZXJQaGFzZXMgPSBbYmVmb3JlUmVhZCwgcmVhZCwgYWZ0ZXJSZWFkLCBiZWZvcmVNYWluLCBtYWluLCBhZnRlck1haW4sIGJlZm9yZVdyaXRlLCB3cml0ZSwgYWZ0ZXJXcml0ZV07IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCIuLi9kb20tdXRpbHMvY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgd2l0aGluIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi4vdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzXCI7XG5pbXBvcnQgZXhwYW5kVG9IYXNoTWFwIGZyb20gXCIuLi91dGlscy9leHBhbmRUb0hhc2hNYXAuanNcIjtcbmltcG9ydCB7IGxlZnQsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdG9wLCBib3R0b20gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgdG9QYWRkaW5nT2JqZWN0ID0gZnVuY3Rpb24gdG9QYWRkaW5nT2JqZWN0KHBhZGRpbmcsIHN0YXRlKSB7XG4gIHBhZGRpbmcgPSB0eXBlb2YgcGFkZGluZyA9PT0gJ2Z1bmN0aW9uJyA/IHBhZGRpbmcoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiBwYWRkaW5nO1xuICByZXR1cm4gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbn07XG5cbmZ1bmN0aW9uIGFycm93KF9yZWYpIHtcbiAgdmFyIF9zdGF0ZSRtb2RpZmllcnNEYXRhJDtcblxuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHM7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KTtcbiAgdmFyIGlzVmVydGljYWwgPSBbbGVmdCwgcmlnaHRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMDtcbiAgdmFyIGxlbiA9IGlzVmVydGljYWwgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgaWYgKCFhcnJvd0VsZW1lbnQgfHwgIXBvcHBlck9mZnNldHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgcGFkZGluZ09iamVjdCA9IHRvUGFkZGluZ09iamVjdChvcHRpb25zLnBhZGRpbmcsIHN0YXRlKTtcbiAgdmFyIGFycm93UmVjdCA9IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KTtcbiAgdmFyIG1pblByb3AgPSBheGlzID09PSAneScgPyB0b3AgOiBsZWZ0O1xuICB2YXIgbWF4UHJvcCA9IGF4aXMgPT09ICd5JyA/IGJvdHRvbSA6IHJpZ2h0O1xuICB2YXIgZW5kRGlmZiA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtsZW5dICsgc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gcG9wcGVyT2Zmc2V0c1theGlzXSAtIHN0YXRlLnJlY3RzLnBvcHBlcltsZW5dO1xuICB2YXIgc3RhcnREaWZmID0gcG9wcGVyT2Zmc2V0c1theGlzXSAtIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgdmFyIGFycm93T2Zmc2V0UGFyZW50ID0gZ2V0T2Zmc2V0UGFyZW50KGFycm93RWxlbWVudCk7XG4gIHZhciBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBheGlzID09PSAneScgPyBhcnJvd09mZnNldFBhcmVudC5jbGllbnRIZWlnaHQgfHwgMCA6IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFdpZHRoIHx8IDAgOiAwO1xuICB2YXIgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7IC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgcG9wcGVyIGlmIHRoZSBjZW50ZXIgcG9pbnQgaXNcbiAgLy8gb3V0c2lkZSBvZiB0aGUgcG9wcGVyIGJvdW5kc1xuXG4gIHZhciBtaW4gPSBwYWRkaW5nT2JqZWN0W21pblByb3BdO1xuICB2YXIgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93UmVjdFtsZW5dIC0gcGFkZGluZ09iamVjdFttYXhQcm9wXTtcbiAgdmFyIGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dSZWN0W2xlbl0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gIHZhciBvZmZzZXQgPSB3aXRoaW4obWluLCBjZW50ZXIsIG1heCk7IC8vIFByZXZlbnRzIGJyZWFraW5nIHN5bnRheCBoaWdobGlnaHRpbmcuLi5cblxuICB2YXIgYXhpc1Byb3AgPSBheGlzO1xuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gKF9zdGF0ZSRtb2RpZmllcnNEYXRhJCA9IHt9LCBfc3RhdGUkbW9kaWZpZXJzRGF0YSRbYXhpc1Byb3BdID0gb2Zmc2V0LCBfc3RhdGUkbW9kaWZpZXJzRGF0YSQuY2VudGVyT2Zmc2V0ID0gb2Zmc2V0IC0gY2VudGVyLCBfc3RhdGUkbW9kaWZpZXJzRGF0YSQpO1xufVxuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGVsZW1lbnQgPSBvcHRpb25zLmVsZW1lbnQsXG4gICAgICBhcnJvd0VsZW1lbnQgPSBfb3B0aW9ucyRlbGVtZW50ID09PSB2b2lkIDAgPyAnW2RhdGEtcG9wcGVyLWFycm93XScgOiBfb3B0aW9ucyRlbGVtZW50O1xuXG4gIGlmIChhcnJvd0VsZW1lbnQgPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfSAvLyBDU1Mgc2VsZWN0b3JcblxuXG4gIGlmICh0eXBlb2YgYXJyb3dFbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLnBvcHBlci5xdWVyeVNlbGVjdG9yKGFycm93RWxlbWVudCk7XG5cbiAgICBpZiAoIWFycm93RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoYXJyb3dFbGVtZW50KSkge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhcnJvd1wiIGVsZW1lbnQgbXVzdCBiZSBhbiBIVE1MRWxlbWVudCAobm90IGFuIFNWR0VsZW1lbnQpLicsICdUbyB1c2UgYW4gU1ZHIGFycm93LCB3cmFwIGl0IGluIGFuIEhUTUxFbGVtZW50IHRoYXQgd2lsbCBiZSB1c2VkIGFzJywgJ3RoZSBhcnJvdy4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIGlmICghY29udGFpbnMoc3RhdGUuZWxlbWVudHMucG9wcGVyLCBhcnJvd0VsZW1lbnQpKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhcnJvd1wiIG1vZGlmaWVyXFwncyBgZWxlbWVudGAgbXVzdCBiZSBhIGNoaWxkIG9mIHRoZSBwb3BwZXInLCAnZWxlbWVudC4nXS5qb2luKCcgJykpO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRlLmVsZW1lbnRzLmFycm93ID0gYXJyb3dFbGVtZW50O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXJyb3cnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogYXJyb3csXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydwb3BwZXJPZmZzZXRzJ10sXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsncHJldmVudE92ZXJmbG93J11cbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59IiwiaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tLCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB1bnNldFNpZGVzID0ge1xuICB0b3A6ICdhdXRvJyxcbiAgcmlnaHQ6ICdhdXRvJyxcbiAgYm90dG9tOiAnYXV0bycsXG4gIGxlZnQ6ICdhdXRvJ1xufTsgLy8gUm91bmQgdGhlIG9mZnNldHMgdG8gdGhlIG5lYXJlc3Qgc3VpdGFibGUgc3VicGl4ZWwgYmFzZWQgb24gdGhlIERQUi5cbi8vIFpvb21pbmcgY2FuIGNoYW5nZSB0aGUgRFBSLCBidXQgaXQgc2VlbXMgdG8gcmVwb3J0IGEgdmFsdWUgdGhhdCB3aWxsXG4vLyBjbGVhbmx5IGRpdmlkZSB0aGUgdmFsdWVzIGludG8gdGhlIGFwcHJvcHJpYXRlIHN1YnBpeGVscy5cblxuZnVuY3Rpb24gcm91bmRPZmZzZXRzQnlEUFIoX3JlZiwgd2luKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgIHdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0sIGdldFdpbmRvdyhwb3BwZXIpKSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjQueDtcbiAgeSA9IF9yZWY0Lnk7XG5cbiAgaWYgKGdwdUFjY2VsZXJhdGlvbikge1xuICAgIHZhciBfT2JqZWN0JGFzc2lnbjtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbiA9IHt9LCBfT2JqZWN0JGFzc2lnbltzaWRlWV0gPSBoYXNZID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduW3NpZGVYXSA9IGhhc1ggPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ24udHJhbnNmb3JtID0gKHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDEpIDw9IDEgPyBcInRyYW5zbGF0ZShcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4KVwiIDogXCJ0cmFuc2xhdGUzZChcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4LCAwKVwiLCBfT2JqZWN0JGFzc2lnbikpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduMiA9IHt9LCBfT2JqZWN0JGFzc2lnbjJbc2lkZVldID0gaGFzWSA/IHkgKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yW3NpZGVYXSA9IGhhc1ggPyB4ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMi50cmFuc2Zvcm0gPSAnJywgX09iamVjdCRhc3NpZ24yKSk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTdHlsZXMoX3JlZjUpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjUuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjUub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9IG9wdGlvbnMuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZ3B1QWNjZWxlcmF0LFxuICAgICAgX29wdGlvbnMkYWRhcHRpdmUgPSBvcHRpb25zLmFkYXB0aXZlLFxuICAgICAgYWRhcHRpdmUgPSBfb3B0aW9ucyRhZGFwdGl2ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGFkYXB0aXZlLFxuICAgICAgX29wdGlvbnMkcm91bmRPZmZzZXRzID0gb3B0aW9ucy5yb3VuZE9mZnNldHMsXG4gICAgICByb3VuZE9mZnNldHMgPSBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyb3VuZE9mZnNldHM7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIHZhciB0cmFuc2l0aW9uUHJvcGVydHkgPSBnZXRDb21wdXRlZFN0eWxlKHN0YXRlLmVsZW1lbnRzLnBvcHBlcikudHJhbnNpdGlvblByb3BlcnR5IHx8ICcnO1xuXG4gICAgaWYgKGFkYXB0aXZlICYmIFsndHJhbnNmb3JtJywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLnNvbWUoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gdHJhbnNpdGlvblByb3BlcnR5LmluZGV4T2YocHJvcGVydHkpID49IDA7XG4gICAgfSkpIHtcbiAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogRGV0ZWN0ZWQgQ1NTIHRyYW5zaXRpb25zIG9uIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nJywgJ0NTUyBwcm9wZXJ0aWVzOiBcInRyYW5zZm9ybVwiLCBcInRvcFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwibGVmdFwiLicsICdcXG5cXG4nLCAnRGlzYWJsZSB0aGUgXCJjb21wdXRlU3R5bGVzXCIgbW9kaWZpZXJcXCdzIGBhZGFwdGl2ZWAgb3B0aW9uIHRvIGFsbG93JywgJ2ZvciBzbW9vdGggdHJhbnNpdGlvbnMsIG9yIHJlbW92ZSB0aGVzZSBwcm9wZXJ0aWVzIGZyb20gdGhlIENTUycsICd0cmFuc2l0aW9uIGRlY2xhcmF0aW9uIG9uIHRoZSBwb3BwZXIgZWxlbWVudCBpZiBvbmx5IHRyYW5zaXRpb25pbmcnLCAnb3BhY2l0eSBvciBiYWNrZ3JvdW5kLWNvbG9yIGZvciBleGFtcGxlLicsICdcXG5cXG4nLCAnV2UgcmVjb21tZW5kIHVzaW5nIHRoZSBwb3BwZXIgZWxlbWVudCBhcyBhIHdyYXBwZXIgYXJvdW5kIGFuIGlubmVyJywgJ2VsZW1lbnQgdGhhdCBjYW4gaGF2ZSBhbnkgQ1NTIHByb3BlcnR5IHRyYW5zaXRpb25lZCBmb3IgYW5pbWF0aW9ucy4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb21tb25TdHlsZXMgPSB7XG4gICAgcGxhY2VtZW50OiBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCksXG4gICAgdmFyaWF0aW9uOiBnZXRWYXJpYXRpb24oc3RhdGUucGxhY2VtZW50KSxcbiAgICBwb3BwZXI6IHN0YXRlLmVsZW1lbnRzLnBvcHBlcixcbiAgICBwb3BwZXJSZWN0OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgZ3B1QWNjZWxlcmF0aW9uOiBncHVBY2NlbGVyYXRpb24sXG4gICAgaXNGaXhlZDogc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJ1xuICB9O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMucG9wcGVyLCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyxcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgYWRhcHRpdmU6IGFkYXB0aXZlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3cgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5hcnJvdyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5hcnJvdywgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93LFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBhZGFwdGl2ZTogZmFsc2UsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgJ2RhdGEtcG9wcGVyLXBsYWNlbWVudCc6IHN0YXRlLnBsYWNlbWVudFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2NvbXB1dGVTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ2JlZm9yZVdyaXRlJyxcbiAgZm46IGNvbXB1dGVTdHlsZXMsXG4gIGRhdGE6IHt9XG59OyIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgcGFzc2l2ZSA9IHtcbiAgcGFzc2l2ZTogdHJ1ZVxufTtcblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIGluc3RhbmNlID0gX3JlZi5pbnN0YW5jZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRzY3JvbGwgPSBvcHRpb25zLnNjcm9sbCxcbiAgICAgIHNjcm9sbCA9IF9vcHRpb25zJHNjcm9sbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHNjcm9sbCxcbiAgICAgIF9vcHRpb25zJHJlc2l6ZSA9IG9wdGlvbnMucmVzaXplLFxuICAgICAgcmVzaXplID0gX29wdGlvbnMkcmVzaXplID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcmVzaXplO1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KHN0YXRlLmVsZW1lbnRzLnBvcHBlcik7XG4gIHZhciBzY3JvbGxQYXJlbnRzID0gW10uY29uY2F0KHN0YXRlLnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLCBzdGF0ZS5zY3JvbGxQYXJlbnRzLnBvcHBlcik7XG5cbiAgaWYgKHNjcm9sbCkge1xuICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICBzY3JvbGxQYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChyZXNpemUpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNjcm9sbCkge1xuICAgICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgICAgc2Nyb2xsUGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzaXplKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdldmVudExpc3RlbmVycycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogZnVuY3Rpb24gZm4oKSB7fSxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIGRhdGE6IHt9XG59OyIsInZhciBoYXNoID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsInZhciBoYXNoID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsKG5vZGUpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhub2RlKTtcbiAgdmFyIHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG4gIHZhciBzY3JvbGxUb3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCkge1xuICAvLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4gIC8vIGluY29ycmVjdCBmb3IgUlRMLlxuICAvLyBQb3BwZXIgMSBpcyBicm9rZW4gaW4gdGhpcyBjYXNlIGFuZCBuZXZlciBoYWQgYSBidWcgcmVwb3J0IHNvIGxldCdzIGFzc3VtZVxuICAvLyBpdCdzIG5vdCBhbiBpc3N1ZS4gSSBkb24ndCB0aGluayBhbnlvbmUgZXZlciBzcGVjaWZpZXMgd2lkdGggb24gPGh0bWw+XG4gIC8vIGFueXdheS5cbiAgLy8gQnJvd3NlcnMgd2hlcmUgdGhlIGxlZnQgc2Nyb2xsYmFyIGRvZXNuJ3QgY2F1c2UgYW4gaXNzdWUgcmVwb3J0IGAwYCBmb3JcbiAgLy8gdGhpcyAoZS5nLiBFZGdlIDIwMTksIElFMTEsIFNhZmFyaSlcbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbn0iLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICBpZiAoWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5kZXhPZihnZXROb2RlTmFtZShub2RlKSkgPj0gMCkge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBpZiAoaXNIVE1MRWxlbWVudChub2RlKSAmJiBpc1Njcm9sbFBhcmVudChub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKG5vZGUpKTtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZWN0LCB7XG4gICAgbGVmdDogcmVjdC54LFxuICAgIHRvcDogcmVjdC55LFxuICAgIHJpZ2h0OiByZWN0LnggKyByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogcmVjdC55ICsgcmVjdC5oZWlnaHRcbiAgfSk7XG59IiwiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgZmFsc2UsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIHJldHVybiBjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkpIDogaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSA/IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgZmlyc3RDbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGlzTGF5b3V0Vmlld3BvcnQgZnJvbSBcIi4vaXNMYXlvdXRWaWV3cG9ydC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIHZhciB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgdmFyIHggPSAwO1xuICB2YXIgeSA9IDA7XG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgdmFyIGxheW91dFZpZXdwb3J0ID0gaXNMYXlvdXRWaWV3cG9ydCgpO1xuXG4gICAgaWYgKGxheW91dFZpZXdwb3J0IHx8ICFsYXlvdXRWaWV3cG9ydCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHggKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpLFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCB7IG1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGVcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHdpblNjcm9sbCA9IGdldFdpbmRvd1Njcm9sbChlbGVtZW50KTtcbiAgdmFyIGJvZHkgPSAoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHk7XG4gIHZhciB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5zY3JvbGxXaWR0aCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCk7XG4gIHZhciBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5ID8gYm9keS5zY3JvbGxIZWlnaHQgOiAwLCBib2R5ID8gYm9keS5jbGllbnRIZWlnaHQgOiAwKTtcbiAgdmFyIHggPSAtd2luU2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICB2YXIgeSA9IC13aW5TY3JvbGwuc2Nyb2xsVG9wO1xuXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkgfHwgaHRtbCkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCkgLSB3aWR0aDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsImltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJHN0cmF0ZWd5ID0gX29wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBzdHJhdGVneSA9IF9vcHRpb25zJHN0cmF0ZWd5ID09PSB2b2lkIDAgPyBzdGF0ZS5zdHJhdGVneSA6IF9vcHRpb25zJHN0cmF0ZWd5LFxuICAgICAgX29wdGlvbnMkYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMkYm91bmRhcnkgPT09IHZvaWQgMCA/IGNsaXBwaW5nUGFyZW50cyA6IF9vcHRpb25zJGJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyB2aWV3cG9ydCA6IF9vcHRpb25zJHJvb3RCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGVsZW1lbnRDb250ZSA9IF9vcHRpb25zLmVsZW1lbnRDb250ZXh0LFxuICAgICAgZWxlbWVudENvbnRleHQgPSBfb3B0aW9ucyRlbGVtZW50Q29udGUgPT09IHZvaWQgMCA/IHBvcHBlciA6IF9vcHRpb25zJGVsZW1lbnRDb250ZSxcbiAgICAgIF9vcHRpb25zJGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IF9vcHRpb25zJGFsdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMkcGFkZGluZyA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHBhZGRpbmc7XG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbiAgdmFyIGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcmVmZXJlbmNlIDogcG9wcGVyO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIHZhciBjbGlwcGluZ0NsaWVudFJlY3QgPSBnZXRDbGlwcGluZ1JlY3QoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgZ2V0RG9jdW1lbnRFbGVtZW50KHN0YXRlLmVsZW1lbnRzLnBvcHBlciksIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07IiwiaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHZhcmlhdGlvblBsYWNlbWVudHMsIGJhc2VQbGFjZW1lbnRzLCBwbGFjZW1lbnRzIGFzIGFsbFBsYWNlbWVudHMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcHV0ZUF1dG9QbGFjZW1lbnQoc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9ucyA9IF9vcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgX29wdGlvbnMkYWxsb3dlZEF1dG9QID0gX29wdGlvbnMuYWxsb3dlZEF1dG9QbGFjZW1lbnRzLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzID0gX29wdGlvbnMkYWxsb3dlZEF1dG9QID09PSB2b2lkIDAgPyBhbGxQbGFjZW1lbnRzIDogX29wdGlvbnMkYWxsb3dlZEF1dG9QO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCk7XG4gIHZhciBwbGFjZW1lbnRzID0gdmFyaWF0aW9uID8gZmxpcFZhcmlhdGlvbnMgPyB2YXJpYXRpb25QbGFjZW1lbnRzIDogdmFyaWF0aW9uUGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gdmFyaWF0aW9uO1xuICB9KSA6IGJhc2VQbGFjZW1lbnRzO1xuICB2YXIgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFsbG93ZWRBdXRvUGxhY2VtZW50cy5pbmRleE9mKHBsYWNlbWVudCkgPj0gMDtcbiAgfSk7XG5cbiAgaWYgKGFsbG93ZWRQbGFjZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cztcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFRoZSBgYWxsb3dlZEF1dG9QbGFjZW1lbnRzYCBvcHRpb24gZGlkIG5vdCBhbGxvdyBhbnknLCAncGxhY2VtZW50cy4gRW5zdXJlIHRoZSBgcGxhY2VtZW50YCBvcHRpb24gbWF0Y2hlcyB0aGUgdmFyaWF0aW9uJywgJ29mIHRoZSBhbGxvd2VkIHBsYWNlbWVudHMuJywgJ0ZvciBleGFtcGxlLCBcImF1dG9cIiBjYW5ub3QgYmUgdXNlZCB0byBhbGxvdyBcImJvdHRvbS1zdGFydFwiLicsICdVc2UgXCJhdXRvLXN0YXJ0XCIgaW5zdGVhZC4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS10eXBlXTogRmxvdyBzZWVtcyB0byBoYXZlIHByb2JsZW1zIHdpdGggdHdvIGFycmF5IHVuaW9ucy4uLlxuXG5cbiAgdmFyIG92ZXJmbG93cyA9IGFsbG93ZWRQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pW2dldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KV07XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICByZXR1cm4gT2JqZWN0LmtleXMob3ZlcmZsb3dzKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIG92ZXJmbG93c1thXSAtIG92ZXJmbG93c1tiXTtcbiAgfSk7XG59IiwiaW1wb3J0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKSB7XG4gIGlmIChwcmV2ZW50ZWRPZmZzZXRzID09PSB2b2lkIDApIHtcbiAgICBwcmV2ZW50ZWRPZmZzZXRzID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0IC0gcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGggKyBwcmV2ZW50ZWRPZmZzZXRzLngsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCArIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aCAtIHByZXZlbnRlZE9mZnNldHMueFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIFt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnRdLnNvbWUoZnVuY3Rpb24gKHNpZGUpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dbc2lkZV0gPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhpZGUoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgcHJldmVudGVkT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93O1xuICB2YXIgcmVmZXJlbmNlT3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICB9KTtcbiAgdmFyIHBvcHBlckFsdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICB9KTtcbiAgdmFyIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHJlZmVyZW5jZU92ZXJmbG93LCByZWZlcmVuY2VSZWN0KTtcbiAgdmFyIHBvcHBlckVzY2FwZU9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhwb3BwZXJBbHRPdmVyZmxvdywgcG9wcGVyUmVjdCwgcHJldmVudGVkT2Zmc2V0cyk7XG4gIHZhciBpc1JlZmVyZW5jZUhpZGRlbiA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMpO1xuICB2YXIgaGFzUG9wcGVyRXNjYXBlZCA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChwb3BwZXJFc2NhcGVPZmZzZXRzKTtcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IHtcbiAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyxcbiAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBwb3BwZXJFc2NhcGVPZmZzZXRzLFxuICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICBoYXNQb3BwZXJFc2NhcGVkOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH07XG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcmVmZXJlbmNlLWhpZGRlbic6IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgICdkYXRhLXBvcHBlci1lc2NhcGVkJzogaGFzUG9wcGVyRXNjYXBlZFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2hpZGUnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddLFxuICBmbjogaGlkZVxufTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgc3RhcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRBbHRBeGlzIGZyb20gXCIuLi91dGlscy9nZXRBbHRBeGlzLmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4sIHdpdGhpbk1heENsYW1wIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4uL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuaW1wb3J0IHsgbWluIGFzIG1hdGhNaW4sIG1heCBhcyBtYXRoTWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBvZmZzZXQgKyBvdmVyZmxvd1ttYWluU2lkZV07XG4gICAgdmFyIG1heCA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKG1pbiwgdGV0aGVyTWluKSA6IG1pbiwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KG1heCwgdGV0aGVyTWF4KSA6IG1heCk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgIHBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRBbHRBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQsIGlzRml4ZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0SFRNTEVsZW1lbnRTY3JvbGwgZnJvbSBcIi4vZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVTY3JvbGwobm9kZSkge1xuICBpZiAobm9kZSA9PT0gZ2V0V2luZG93KG5vZGUpIHx8ICFpc0hUTUxFbGVtZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIGdldFdpbmRvd1Njcm9sbChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRTY3JvbGwobm9kZSk7XG4gIH1cbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIVE1MRWxlbWVudFNjcm9sbChlbGVtZW50KSB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5ODc1MjU1XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59IiwiaW1wb3J0IGdldENvbXBvc2l0ZVJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgb3JkZXJNb2RpZmllcnMgZnJvbSBcIi4vdXRpbHMvb3JkZXJNb2RpZmllcnMuanNcIjtcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiLi91dGlscy9kZWJvdW5jZS5qc1wiO1xuaW1wb3J0IHZhbGlkYXRlTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgdW5pcXVlQnkgZnJvbSBcIi4vdXRpbHMvdW5pcXVlQnkuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBtZXJnZUJ5TmFtZSBmcm9tIFwiLi91dGlscy9tZXJnZUJ5TmFtZS5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuL2VudW1zLmpzXCI7XG52YXIgSU5WQUxJRF9FTEVNRU5UX0VSUk9SID0gJ1BvcHBlcjogSW52YWxpZCByZWZlcmVuY2Ugb3IgcG9wcGVyIGFyZ3VtZW50IHByb3ZpZGVkLiBUaGV5IG11c3QgYmUgZWl0aGVyIGEgRE9NIGVsZW1lbnQgb3IgdmlydHVhbCBlbGVtZW50Lic7XG52YXIgSU5GSU5JVEVfTE9PUF9FUlJPUiA9ICdQb3BwZXI6IEFuIGluZmluaXRlIGxvb3AgaW4gdGhlIG1vZGlmaWVycyBjeWNsZSBoYXMgYmVlbiBkZXRlY3RlZCEgVGhlIGN5Y2xlIGhhcyBiZWVuIGludGVycnVwdGVkIHRvIHByZXZlbnQgYSBicm93c2VyIGNyYXNoLic7XG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICBtb2RpZmllcnM6IFtdLFxuICBzdHJhdGVneTogJ2Fic29sdXRlJ1xufTtcblxuZnVuY3Rpb24gYXJlVmFsaWRFbGVtZW50cygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiAhYXJncy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuICEoZWxlbWVudCAmJiB0eXBlb2YgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPT09ICdmdW5jdGlvbicpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHBlckdlbmVyYXRvcihnZW5lcmF0b3JPcHRpb25zKSB7XG4gIGlmIChnZW5lcmF0b3JPcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBnZW5lcmF0b3JPcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX2dlbmVyYXRvck9wdGlvbnMgPSBnZW5lcmF0b3JPcHRpb25zLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE1vZGlmaWVycyxcbiAgICAgIGRlZmF1bHRNb2RpZmllcnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPT09IHZvaWQgMCA/IFtdIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRPcHRpb25zLFxuICAgICAgZGVmYXVsdE9wdGlvbnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID09PSB2b2lkIDAgPyBERUZBVUxUX09QVElPTlMgOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyO1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlUG9wcGVyKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgIH1cblxuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICBvcmRlcmVkTW9kaWZpZXJzOiBbXSxcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgZGVmYXVsdE9wdGlvbnMpLFxuICAgICAgbW9kaWZpZXJzRGF0YToge30sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2U6IHJlZmVyZW5jZSxcbiAgICAgICAgcG9wcGVyOiBwb3BwZXJcbiAgICAgIH0sXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIHN0eWxlczoge31cbiAgICB9O1xuICAgIHZhciBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgdmFyIGlzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgdmFyIGluc3RhbmNlID0ge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24gc2V0T3B0aW9ucyhzZXRPcHRpb25zQWN0aW9uKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIHNldE9wdGlvbnNBY3Rpb24gPT09ICdmdW5jdGlvbicgPyBzZXRPcHRpb25zQWN0aW9uKHN0YXRlLm9wdGlvbnMpIDogc2V0T3B0aW9uc0FjdGlvbjtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBzdGF0ZS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIHN0YXRlLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogaXNFbGVtZW50KHJlZmVyZW5jZSkgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UpIDogcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSA6IFtdLFxuICAgICAgICAgIHBvcHBlcjogbGlzdFNjcm9sbFBhcmVudHMocG9wcGVyKVxuICAgICAgICB9OyAvLyBPcmRlcnMgdGhlIG1vZGlmaWVycyBiYXNlZCBvbiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGBwaGFzZWBcbiAgICAgICAgLy8gcHJvcGVydGllc1xuXG4gICAgICAgIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJNb2RpZmllcnMobWVyZ2VCeU5hbWUoW10uY29uY2F0KGRlZmF1bHRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSkpOyAvLyBTdHJpcCBvdXQgZGlzYWJsZWQgbW9kaWZpZXJzXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgcmV0dXJuIG0uZW5hYmxlZDtcbiAgICAgICAgfSk7IC8vIFZhbGlkYXRlIHRoZSBwcm92aWRlZCBtb2RpZmllcnMgc28gdGhhdCB0aGUgY29uc3VtZXIgd2lsbCBnZXQgd2FybmVkXG4gICAgICAgIC8vIGlmIG9uZSBvZiB0aGUgbW9kaWZpZXJzIGlzIGludmFsaWQgZm9yIGFueSByZWFzb25cblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgdmFyIG1vZGlmaWVycyA9IHVuaXF1ZUJ5KFtdLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycyksIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycyk7XG5cbiAgICAgICAgICBpZiAoZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5vcHRpb25zLnBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICAgICAgICAgIHZhciBmbGlwTW9kaWZpZXIgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09ICdmbGlwJztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWZsaXBNb2RpZmllcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImF1dG9cIiBwbGFjZW1lbnRzIHJlcXVpcmUgdGhlIFwiZmxpcFwiIG1vZGlmaWVyIGJlJywgJ3ByZXNlbnQgYW5kIGVuYWJsZWQgdG8gd29yay4nXS5qb2luKCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocG9wcGVyKSxcbiAgICAgICAgICAgICAgbWFyZ2luVG9wID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luVG9wLFxuICAgICAgICAgICAgICBtYXJnaW5SaWdodCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblJpZ2h0LFxuICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20gPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgIG1hcmdpbkxlZnQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5MZWZ0OyAvLyBXZSBubyBsb25nZXIgdGFrZSBpbnRvIGFjY291bnQgYG1hcmdpbnNgIG9uIHRoZSBwb3BwZXIsIGFuZCBpdCBjYW5cbiAgICAgICAgICAvLyBjYXVzZSBidWdzIHdpdGggcG9zaXRpb25pbmcsIHNvIHdlJ2xsIHdhcm4gdGhlIGNvbnN1bWVyXG5cblxuICAgICAgICAgIGlmIChbbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0XS5zb21lKGZ1bmN0aW9uIChtYXJnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG1hcmdpbik7XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogQ1NTIFwibWFyZ2luXCIgc3R5bGVzIGNhbm5vdCBiZSB1c2VkIHRvIGFwcGx5IHBhZGRpbmcnLCAnYmV0d2VlbiB0aGUgcG9wcGVyIGFuZCBpdHMgcmVmZXJlbmNlIGVsZW1lbnQgb3IgYm91bmRhcnkuJywgJ1RvIHJlcGxpY2F0ZSBtYXJnaW4sIHVzZSB0aGUgYG9mZnNldGAgbW9kaWZpZXIsIGFzIHdlbGwgYXMnLCAndGhlIGBwYWRkaW5nYCBvcHRpb24gaW4gdGhlIGBwcmV2ZW50T3ZlcmZsb3dgIGFuZCBgZmxpcGAnLCAnbW9kaWZpZXJzLiddLmpvaW4oJyAnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcnVuTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS51cGRhdGUoKTtcbiAgICAgIH0sXG4gICAgICAvLyBTeW5jIHVwZGF0ZSDigJMgaXQgd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgbm90IG5lY2Vzc2FyeS4gVGhpc1xuICAgICAgLy8gaXMgdXNlZnVsIGZvciBsb3cgZnJlcXVlbmN5IHVwZGF0ZXMgd2hlcmUgc3luYyBiZWhhdmlvciBzaW1wbGlmaWVzIHRoZVxuICAgICAgLy8gbG9naWMuXG4gICAgICAvLyBGb3IgaGlnaCBmcmVxdWVuY3kgdXBkYXRlcyAoZS5nLiBgcmVzaXplYCBhbmQgYHNjcm9sbGAgZXZlbnRzKSwgYWx3YXlzXG4gICAgICAvLyBwcmVmZXIgdGhlIGFzeW5jIFBvcHBlciN1cGRhdGUgbWV0aG9kXG4gICAgICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gZm9yY2VVcGRhdGUoKSB7XG4gICAgICAgIGlmIChpc0Rlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfc3RhdGUkZWxlbWVudHMgPSBzdGF0ZS5lbGVtZW50cyxcbiAgICAgICAgICAgIHJlZmVyZW5jZSA9IF9zdGF0ZSRlbGVtZW50cy5yZWZlcmVuY2UsXG4gICAgICAgICAgICBwb3BwZXIgPSBfc3RhdGUkZWxlbWVudHMucG9wcGVyOyAvLyBEb24ndCBwcm9jZWVkIGlmIGByZWZlcmVuY2VgIG9yIGBwb3BwZXJgIGFyZSBub3QgdmFsaWQgZWxlbWVudHNcbiAgICAgICAgLy8gYW55bW9yZVxuXG4gICAgICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKElOVkFMSURfRUxFTUVOVF9FUlJPUik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFN0b3JlIHRoZSByZWZlcmVuY2UgYW5kIHBvcHBlciByZWN0cyB0byBiZSByZWFkIGJ5IG1vZGlmaWVyc1xuXG5cbiAgICAgICAgc3RhdGUucmVjdHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBnZXRDb21wb3NpdGVSZWN0KHJlZmVyZW5jZSwgZ2V0T2Zmc2V0UGFyZW50KHBvcHBlciksIHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCcpLFxuICAgICAgICAgIHBvcHBlcjogZ2V0TGF5b3V0UmVjdChwb3BwZXIpXG4gICAgICAgIH07IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZS4gVGhlXG4gICAgICAgIC8vIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciB0aGlzIGlzIHRoZSBgZmxpcGAgbW9kaWZpZXIgY2hhbmdpbmcgdGhlXG4gICAgICAgIC8vIHBsYWNlbWVudCwgd2hpY2ggdGhlbiBuZWVkcyB0byByZS1ydW4gYWxsIHRoZSBtb2RpZmllcnMsIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIGxvZ2ljIHdhcyBwcmV2aW91c2x5IHJhbiBmb3IgdGhlIHByZXZpb3VzIHBsYWNlbWVudCBhbmQgaXMgdGhlcmVmb3JlXG4gICAgICAgIC8vIHN0YWxlL2luY29ycmVjdFxuXG4gICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50OyAvLyBPbiBlYWNoIHVwZGF0ZSBjeWNsZSwgdGhlIGBtb2RpZmllcnNEYXRhYCBwcm9wZXJ0eSBmb3IgZWFjaCBtb2RpZmllclxuICAgICAgICAvLyBpcyBmaWxsZWQgd2l0aCB0aGUgaW5pdGlhbCBkYXRhIHNwZWNpZmllZCBieSB0aGUgbW9kaWZpZXIuIFRoaXMgbWVhbnNcbiAgICAgICAgLy8gaXQgZG9lc24ndCBwZXJzaXN0IGFuZCBpcyBmcmVzaCBvbiBlYWNoIHVwZGF0ZS5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHBlcnNpc3RlbnQgZGF0YSwgdXNlIGAke25hbWV9I3BlcnNpc3RlbnRgXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZS5tb2RpZmllcnNEYXRhW21vZGlmaWVyLm5hbWVdID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXIuZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19kZWJ1Z19sb29wc19fID0gMDtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBfX2RlYnVnX2xvb3BzX18gKz0gMTtcblxuICAgICAgICAgICAgaWYgKF9fZGVidWdfbG9vcHNfXyA+IDEwMCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKElORklOSVRFX0xPT1BfRVJST1IpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RhdGUucmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZSA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnNbaW5kZXhdLFxuICAgICAgICAgICAgICBmbiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5mbixcbiAgICAgICAgICAgICAgX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5vcHRpb25zLFxuICAgICAgICAgICAgICBfb3B0aW9ucyA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPT09IHZvaWQgMCA/IHt9IDogX3N0YXRlJG9yZGVyZWRNb2RpZmllMixcbiAgICAgICAgICAgICAgbmFtZSA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5uYW1lO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3RhdGUgPSBmbih7XG4gICAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgICAgb3B0aW9uczogX29wdGlvbnMsXG4gICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICAgICAgfSkgfHwgc3RhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gQXN5bmMgYW5kIG9wdGltaXN0aWNhbGx5IG9wdGltaXplZCB1cGRhdGUg4oCTIGl0IHdpbGwgbm90IGJlIGV4ZWN1dGVkIGlmXG4gICAgICAvLyBub3QgbmVjZXNzYXJ5IChkZWJvdW5jZWQgdG8gcnVuIGF0IG1vc3Qgb25jZS1wZXItdGljaylcbiAgICAgIHVwZGF0ZTogZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICBpbnN0YW5jZS5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIHJlc29sdmUoc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBpc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgaW5zdGFuY2Uuc2V0T3B0aW9ucyhvcHRpb25zKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgaWYgKCFpc0Rlc3Ryb3llZCAmJiBvcHRpb25zLm9uRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gdXBkYXRlIGN5Y2xlIHJ1bnMuIFRoZXkgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdXBkYXRlXG4gICAgLy8gY3ljbGUuIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSBtb2RpZmllciBhZGRzIHNvbWUgcGVyc2lzdGVudCBkYXRhIHRoYXRcbiAgICAvLyBvdGhlciBtb2RpZmllcnMgbmVlZCB0byB1c2UsIGJ1dCB0aGUgbW9kaWZpZXIgaXMgcnVuIGFmdGVyIHRoZSBkZXBlbmRlbnRcbiAgICAvLyBvbmUuXG5cbiAgICBmdW5jdGlvbiBydW5Nb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZjMubmFtZSxcbiAgICAgICAgICAgIF9yZWYzJG9wdGlvbnMgPSBfcmVmMy5vcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9ucyA9IF9yZWYzJG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogX3JlZjMkb3B0aW9ucyxcbiAgICAgICAgICAgIGVmZmVjdCA9IF9yZWYzLmVmZmVjdDtcblxuICAgICAgICBpZiAodHlwZW9mIGVmZmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHZhciBjbGVhbnVwRm4gPSBlZmZlY3Qoe1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHZhciBub29wRm4gPSBmdW5jdGlvbiBub29wRm4oKSB7fTtcblxuICAgICAgICAgIGVmZmVjdENsZWFudXBGbnMucHVzaChjbGVhbnVwRm4gfHwgbm9vcEZuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMuZm9yRWFjaChmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICB9KTtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5leHBvcnQgdmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCBhcnJvdyBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2Fycm93JztcbmltcG9ydCBjb21wdXRlU3R5bGVzIGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcyc7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9ldmVudExpc3RlbmVycyc7XG5pbXBvcnQgZmxpcCBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2ZsaXAnO1xuaW1wb3J0IGhpZGUgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9oaWRlJztcbmltcG9ydCBvZmZzZXQgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9vZmZzZXQnO1xuaW1wb3J0IHBvcHBlck9mZnNldHMgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzJztcbmltcG9ydCBwcmV2ZW50T3ZlcmZsb3cgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cnO1xuaW1wb3J0IHsgcGxhY2VtZW50cyB9IGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcyc7XG5pbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IgfSBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvcG9wcGVyLWJhc2UnO1xuXG4vLyBGb3IgdGhlIGNvbW1vbiBKUyBidWlsZCB3ZSB3aWxsIHR1cm4gdGhpcyBmaWxlIGludG8gYSBidW5kbGUgd2l0aCBubyBpbXBvcnRzLlxuLy8gVGhpcyBpcyBiL2MgdGhlIFBvcHBlciBsaWIgaXMgYWxsIGVzbSBmaWxlcywgYW5kIHdvdWxkIGJyZWFrIGluIGEgY29tbW9uIGpzIG9ubHkgZW52aXJvbm1lbnRcbmV4cG9ydCBjb25zdCBjcmVhdGVQb3BwZXIgPSBwb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBbaGlkZSwgcG9wcGVyT2Zmc2V0cywgY29tcHV0ZVN0eWxlcywgZXZlbnRMaXN0ZW5lcnMsIG9mZnNldCwgZmxpcCwgcHJldmVudE92ZXJmbG93LCBhcnJvd11cbn0pO1xuZXhwb3J0IHsgcGxhY2VtZW50cyB9OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlYm91bmNlKGZuKSB7XG4gIHZhciBwZW5kaW5nO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcGVuZGluZykge1xuICAgICAgcGVuZGluZyA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHBlbmRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgcmVzb2x2ZShmbigpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGVuZGluZztcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZUJ5TmFtZShtb2RpZmllcnMpIHtcbiAgdmFyIG1lcmdlZCA9IG1vZGlmaWVycy5yZWR1Y2UoZnVuY3Rpb24gKG1lcmdlZCwgY3VycmVudCkge1xuICAgIHZhciBleGlzdGluZyA9IG1lcmdlZFtjdXJyZW50Lm5hbWVdO1xuICAgIG1lcmdlZFtjdXJyZW50Lm5hbWVdID0gZXhpc3RpbmcgPyBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZywgY3VycmVudCwge1xuICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3Rpbmcub3B0aW9ucywgY3VycmVudC5vcHRpb25zKSxcbiAgICAgIGRhdGE6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLmRhdGEsIGN1cnJlbnQuZGF0YSlcbiAgICB9KSA6IGN1cnJlbnQ7XG4gICAgcmV0dXJuIG1lcmdlZDtcbiAgfSwge30pOyAvLyBJRTExIGRvZXMgbm90IHN1cHBvcnQgT2JqZWN0LnZhbHVlc1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhtZXJnZWQpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIG1lcmdlZFtrZXldO1xuICB9KTtcbn0iLCJpbXBvcnQgY29tcHV0ZU9mZnNldHMgZnJvbSBcIi4uL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzXCI7XG5cbmZ1bmN0aW9uIHBvcHBlck9mZnNldHMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgLy8gT2Zmc2V0cyBhcmUgdGhlIGFjdHVhbCBwb3NpdGlvbiB0aGUgcG9wcGVyIG5lZWRzIHRvIGhhdmUgdG8gYmVcbiAgLy8gcHJvcGVybHkgcG9zaXRpb25lZCBuZWFyIGl0cyByZWZlcmVuY2UgZWxlbWVudFxuICAvLyBUaGlzIGlzIHRoZSBtb3N0IGJhc2ljIHBsYWNlbWVudCwgYW5kIHdpbGwgYmUgYWRqdXN0ZWQgYnlcbiAgLy8gdGhlIG1vZGlmaWVycyBpbiB0aGUgbmV4dCBzdGVwXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiBzdGF0ZS5yZWN0cy5yZWZlcmVuY2UsXG4gICAgZWxlbWVudDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIHN0cmF0ZWd5OiAnYWJzb2x1dGUnLFxuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncG9wcGVyT2Zmc2V0cycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAncmVhZCcsXG4gIGZuOiBwb3BwZXJPZmZzZXRzLFxuICBkYXRhOiB7fVxufTsiLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJlbmFibGVkXCIsIFwicGxhY2VtZW50XCIsIFwic3RyYXRlZ3lcIiwgXCJtb2RpZmllcnNcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZGVxdWFsIH0gZnJvbSAnZGVxdWFsJztcbmltcG9ydCB1c2VTYWZlU3RhdGUgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlU2FmZVN0YXRlJztcbmltcG9ydCB7IGNyZWF0ZVBvcHBlciB9IGZyb20gJy4vcG9wcGVyJztcbmNvbnN0IGRpc2FibGVkQXBwbHlTdHlsZXNNb2RpZmllciA9IHtcbiAgbmFtZTogJ2FwcGx5U3R5bGVzJyxcbiAgZW5hYmxlZDogZmFsc2UsXG4gIHBoYXNlOiAnYWZ0ZXJXcml0ZScsXG4gIGZuOiAoKSA9PiB1bmRlZmluZWRcbn07XG5cbi8vIHVudGlsIGRvY2pzIHN1cHBvcnRzIHR5cGUgZXhwb3J0cy4uLlxuXG5jb25zdCBhcmlhRGVzY3JpYmVkQnlNb2RpZmllciA9IHtcbiAgbmFtZTogJ2FyaWFEZXNjcmliZWRCeScsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnYWZ0ZXJXcml0ZScsXG4gIGVmZmVjdDogKHtcbiAgICBzdGF0ZVxuICB9KSA9PiAoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgcmVmZXJlbmNlLFxuICAgICAgcG9wcGVyXG4gICAgfSA9IHN0YXRlLmVsZW1lbnRzO1xuICAgIGlmICgncmVtb3ZlQXR0cmlidXRlJyBpbiByZWZlcmVuY2UpIHtcbiAgICAgIGNvbnN0IGlkcyA9IChyZWZlcmVuY2UuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JykgfHwgJycpLnNwbGl0KCcsJykuZmlsdGVyKGlkID0+IGlkLnRyaW0oKSAhPT0gcG9wcGVyLmlkKTtcbiAgICAgIGlmICghaWRzLmxlbmd0aCkgcmVmZXJlbmNlLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpO2Vsc2UgcmVmZXJlbmNlLnNldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScsIGlkcy5qb2luKCcsJykpO1xuICAgIH1cbiAgfSxcbiAgZm46ICh7XG4gICAgc3RhdGVcbiAgfSkgPT4ge1xuICAgIHZhciBfcG9wcGVyJGdldEF0dHJpYnV0ZTtcbiAgICBjb25zdCB7XG4gICAgICBwb3BwZXIsXG4gICAgICByZWZlcmVuY2VcbiAgICB9ID0gc3RhdGUuZWxlbWVudHM7XG4gICAgY29uc3Qgcm9sZSA9IChfcG9wcGVyJGdldEF0dHJpYnV0ZSA9IHBvcHBlci5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wb3BwZXIkZ2V0QXR0cmlidXRlLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHBvcHBlci5pZCAmJiByb2xlID09PSAndG9vbHRpcCcgJiYgJ3NldEF0dHJpYnV0ZScgaW4gcmVmZXJlbmNlKSB7XG4gICAgICBjb25zdCBpZHMgPSByZWZlcmVuY2UuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5Jyk7XG4gICAgICBpZiAoaWRzICYmIGlkcy5zcGxpdCgnLCcpLmluZGV4T2YocG9wcGVyLmlkKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVmZXJlbmNlLnNldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScsIGlkcyA/IGAke2lkc30sJHtwb3BwZXIuaWR9YCA6IHBvcHBlci5pZCk7XG4gICAgfVxuICB9XG59O1xuY29uc3QgRU1QVFlfTU9ESUZJRVJTID0gW107XG4vKipcbiAqIFBvc2l0aW9uIGFuIGVsZW1lbnQgcmVsYXRpdmUgc29tZSByZWZlcmVuY2UgZWxlbWVudCB1c2luZyBQb3BwZXIuanNcbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlRWxlbWVudFxuICogQHBhcmFtIHBvcHBlckVsZW1lbnRcbiAqIEBwYXJhbSB7b2JqZWN0fSAgICAgIG9wdGlvbnNcbiAqIEBwYXJhbSB7b2JqZWN0PX0gICAgIG9wdGlvbnMubW9kaWZpZXJzIFBvcHBlci5qcyBtb2RpZmllcnNcbiAqIEBwYXJhbSB7Ym9vbGVhbj19ICAgIG9wdGlvbnMuZW5hYmxlZCB0b2dnbGUgdGhlIHBvcHBlciBmdW5jdGlvbmFsaXR5IG9uL29mZlxuICogQHBhcmFtIHtzdHJpbmc9fSAgICAgb3B0aW9ucy5wbGFjZW1lbnQgVGhlIHBvcHBlciBlbGVtZW50IHBsYWNlbWVudCByZWxhdGl2ZSB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnRcbiAqIEBwYXJhbSB7c3RyaW5nPX0gICAgIG9wdGlvbnMuc3RyYXRlZ3kgdGhlIHBvc2l0aW9uaW5nIHN0cmF0ZWd5XG4gKiBAcGFyYW0ge2Z1bmN0aW9uPX0gICBvcHRpb25zLm9uQ3JlYXRlIGNhbGxlZCB3aGVuIHRoZSBwb3BwZXIgaXMgY3JlYXRlZFxuICogQHBhcmFtIHtmdW5jdGlvbj19ICAgb3B0aW9ucy5vblVwZGF0ZSBjYWxsZWQgd2hlbiB0aGUgcG9wcGVyIGlzIHVwZGF0ZWRcbiAqXG4gKiBAcmV0dXJucyB7VXNlUG9wcGVyU3RhdGV9IFRoZSBwb3BwZXIgc3RhdGVcbiAqL1xuZnVuY3Rpb24gdXNlUG9wcGVyKHJlZmVyZW5jZUVsZW1lbnQsIHBvcHBlckVsZW1lbnQsIF9yZWYgPSB7fSkge1xuICBsZXQge1xuICAgICAgZW5hYmxlZCA9IHRydWUsXG4gICAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICAgIG1vZGlmaWVycyA9IEVNUFRZX01PRElGSUVSU1xuICAgIH0gPSBfcmVmLFxuICAgIGNvbmZpZyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IHByZXZNb2RpZmllcnMgPSB1c2VSZWYobW9kaWZpZXJzKTtcbiAgY29uc3QgcG9wcGVySW5zdGFuY2VSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgdXBkYXRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHZhciBfcG9wcGVySW5zdGFuY2VSZWYkY3U7XG4gICAgKF9wb3BwZXJJbnN0YW5jZVJlZiRjdSA9IHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfcG9wcGVySW5zdGFuY2VSZWYkY3UudXBkYXRlKCk7XG4gIH0sIFtdKTtcbiAgY29uc3QgZm9yY2VVcGRhdGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdmFyIF9wb3BwZXJJbnN0YW5jZVJlZiRjdTI7XG4gICAgKF9wb3BwZXJJbnN0YW5jZVJlZiRjdTIgPSBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50KSA9PSBudWxsID8gdm9pZCAwIDogX3BvcHBlckluc3RhbmNlUmVmJGN1Mi5mb3JjZVVwZGF0ZSgpO1xuICB9LCBbXSk7XG4gIGNvbnN0IFtwb3BwZXJTdGF0ZSwgc2V0U3RhdGVdID0gdXNlU2FmZVN0YXRlKHVzZVN0YXRlKHtcbiAgICBwbGFjZW1lbnQsXG4gICAgdXBkYXRlLFxuICAgIGZvcmNlVXBkYXRlLFxuICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgIHN0eWxlczoge1xuICAgICAgcG9wcGVyOiB7fSxcbiAgICAgIGFycm93OiB7fVxuICAgIH1cbiAgfSkpO1xuICBjb25zdCB1cGRhdGVNb2RpZmllciA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBuYW1lOiAndXBkYXRlU3RhdGVNb2RpZmllcicsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBwaGFzZTogJ3dyaXRlJyxcbiAgICByZXF1aXJlczogWydjb21wdXRlU3R5bGVzJ10sXG4gICAgZm46ICh7XG4gICAgICBzdGF0ZVxuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IHN0eWxlcyA9IHt9O1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoc3RhdGUuZWxlbWVudHMpLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIHN0eWxlc1tlbGVtZW50XSA9IHN0YXRlLnN0eWxlc1tlbGVtZW50XTtcbiAgICAgICAgYXR0cmlidXRlc1tlbGVtZW50XSA9IHN0YXRlLmF0dHJpYnV0ZXNbZWxlbWVudF07XG4gICAgICB9KTtcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIHN0eWxlcyxcbiAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgdXBkYXRlLFxuICAgICAgICBmb3JjZVVwZGF0ZSxcbiAgICAgICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfSksIFt1cGRhdGUsIGZvcmNlVXBkYXRlLCBzZXRTdGF0ZV0pO1xuICBjb25zdCBuZXh0TW9kaWZpZXJzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFkZXF1YWwocHJldk1vZGlmaWVycy5jdXJyZW50LCBtb2RpZmllcnMpKSB7XG4gICAgICBwcmV2TW9kaWZpZXJzLmN1cnJlbnQgPSBtb2RpZmllcnM7XG4gICAgfVxuICAgIHJldHVybiBwcmV2TW9kaWZpZXJzLmN1cnJlbnQ7XG4gIH0sIFttb2RpZmllcnNdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQgfHwgIWVuYWJsZWQpIHJldHVybjtcbiAgICBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50LnNldE9wdGlvbnMoe1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtb2RpZmllcnM6IFsuLi5uZXh0TW9kaWZpZXJzLCB1cGRhdGVNb2RpZmllciwgZGlzYWJsZWRBcHBseVN0eWxlc01vZGlmaWVyXVxuICAgIH0pO1xuICB9LCBbc3RyYXRlZ3ksIHBsYWNlbWVudCwgdXBkYXRlTW9kaWZpZXIsIGVuYWJsZWQsIG5leHRNb2RpZmllcnNdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQgfHwgcmVmZXJlbmNlRWxlbWVudCA9PSBudWxsIHx8IHBvcHBlckVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcG9wcGVySW5zdGFuY2VSZWYuY3VycmVudCA9IGNyZWF0ZVBvcHBlcihyZWZlcmVuY2VFbGVtZW50LCBwb3BwZXJFbGVtZW50LCBPYmplY3QuYXNzaWduKHt9LCBjb25maWcsIHtcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbW9kaWZpZXJzOiBbLi4ubmV4dE1vZGlmaWVycywgYXJpYURlc2NyaWJlZEJ5TW9kaWZpZXIsIHVwZGF0ZU1vZGlmaWVyXVxuICAgIH0pKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50LmRlc3Ryb3koKTtcbiAgICAgICAgcG9wcGVySW5zdGFuY2VSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgc2V0U3RhdGUocyA9PiBPYmplY3QuYXNzaWduKHt9LCBzLCB7XG4gICAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICAgICAgc3R5bGVzOiB7XG4gICAgICAgICAgICBwb3BwZXI6IHt9XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfTtcbiAgICAvLyBUaGlzIGlzIG9ubHkgcnVuIG9uY2UgdG8gX2NyZWF0ZV8gdGhlIHBvcHBlclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2VuYWJsZWQsIHJlZmVyZW5jZUVsZW1lbnQsIHBvcHBlckVsZW1lbnRdKTtcbiAgcmV0dXJuIHBvcHBlclN0YXRlO1xufVxuZXhwb3J0IGRlZmF1bHQgdXNlUG9wcGVyOyIsImltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1vdW50ZWQgZnJvbSAnLi91c2VNb3VudGVkJztcblxuZnVuY3Rpb24gdXNlU2FmZVN0YXRlKHN0YXRlKSB7XG4gIHZhciBpc01vdW50ZWQgPSB1c2VNb3VudGVkKCk7XG4gIHJldHVybiBbc3RhdGVbMF0sIHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChuZXh0U3RhdGUpIHtcbiAgICBpZiAoIWlzTW91bnRlZCgpKSByZXR1cm47XG4gICAgcmV0dXJuIHN0YXRlWzFdKG5leHRTdGF0ZSk7XG4gIH0sIFtpc01vdW50ZWQsIHN0YXRlWzFdXSldO1xufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VTYWZlU3RhdGU7IiwiLyogZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSwgbm8tY29uZC1hc3NpZ24gKi9cblxuLyoqXG4gKiBDaGVja3MgaWYgYW4gZWxlbWVudCBjb250YWlucyBhbm90aGVyIGdpdmVuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBjb250ZXh0IHRoZSBjb250ZXh0IGVsZW1lbnRcbiAqIEBwYXJhbSBub2RlIHRoZSBlbGVtZW50IHRvIGNoZWNrXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRhaW5zKGNvbnRleHQsIG5vZGUpIHtcbiAgLy8gSFRNTCBET00gYW5kIFNWRyBET00gbWF5IGhhdmUgZGlmZmVyZW50IHN1cHBvcnQgbGV2ZWxzLFxuICAvLyBzbyB3ZSBuZWVkIHRvIGNoZWNrIG9uIGNvbnRleHQgaW5zdGVhZCBvZiBhIGRvY3VtZW50IHJvb3QgZWxlbWVudC5cbiAgaWYgKGNvbnRleHQuY29udGFpbnMpIHJldHVybiBjb250ZXh0LmNvbnRhaW5zKG5vZGUpO1xuICBpZiAoY29udGV4dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikgcmV0dXJuIGNvbnRleHQgPT09IG5vZGUgfHwgISEoY29udGV4dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihub2RlKSAmIDE2KTtcbn0iLCJpbXBvcnQgY29udGFpbnMgZnJvbSAnZG9tLWhlbHBlcnMvY29udGFpbnMnO1xuaW1wb3J0IGxpc3RlbiBmcm9tICdkb20taGVscGVycy9saXN0ZW4nO1xuaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnZG9tLWhlbHBlcnMvb3duZXJEb2N1bWVudCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB3YXJuaW5nIGZyb20gJ3dhcm5pbmcnO1xuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuZnVuY3Rpb24gaXNMZWZ0Q2xpY2tFdmVudChldmVudCkge1xuICByZXR1cm4gZXZlbnQuYnV0dG9uID09PSAwO1xufVxuZnVuY3Rpb24gaXNNb2RpZmllZEV2ZW50KGV2ZW50KSB7XG4gIHJldHVybiAhIShldmVudC5tZXRhS2V5IHx8IGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LnNoaWZ0S2V5KTtcbn1cbmV4cG9ydCBjb25zdCBnZXRSZWZUYXJnZXQgPSByZWYgPT4gcmVmICYmICgnY3VycmVudCcgaW4gcmVmID8gcmVmLmN1cnJlbnQgOiByZWYpO1xuY29uc3QgSW5pdGlhbFRyaWdnZXJFdmVudHMgPSB7XG4gIGNsaWNrOiAnbW91c2Vkb3duJyxcbiAgbW91c2V1cDogJ21vdXNlZG93bicsXG4gIHBvaW50ZXJ1cDogJ3BvaW50ZXJkb3duJ1xufTtcblxuLyoqXG4gKiBUaGUgYHVzZUNsaWNrT3V0c2lkZWAgaG9vayByZWdpc3RlcnMgeW91ciBjYWxsYmFjayBvbiB0aGUgZG9jdW1lbnQgdGhhdCBmaXJlc1xuICogd2hlbiBhIHBvaW50ZXIgZXZlbnQgaXMgcmVnaXN0ZXJlZCBvdXRzaWRlIG9mIHRoZSBwcm92aWRlZCByZWYgb3IgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0ge1JlZjxIVE1MRWxlbWVudD58IEhUTUxFbGVtZW50fSByZWYgIFRoZSBlbGVtZW50IGJvdW5kYXJ5XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbkNsaWNrT3V0c2lkZVxuICogQHBhcmFtIHtvYmplY3Q9fSAgb3B0aW9uc1xuICogQHBhcmFtIHtib29sZWFuPX0gb3B0aW9ucy5kaXNhYmxlZFxuICogQHBhcmFtIHtzdHJpbmc9fSAgb3B0aW9ucy5jbGlja1RyaWdnZXIgVGhlIERPTSBldmVudCBuYW1lIChjbGljaywgbW91c2Vkb3duLCBldGMpIHRvIGF0dGFjaCBsaXN0ZW5lcnMgb25cbiAqL1xuZnVuY3Rpb24gdXNlQ2xpY2tPdXRzaWRlKHJlZiwgb25DbGlja091dHNpZGUgPSBub29wLCB7XG4gIGRpc2FibGVkLFxuICBjbGlja1RyaWdnZXIgPSAnY2xpY2snXG59ID0ge30pIHtcbiAgY29uc3QgcHJldmVudE1vdXNlQ2xpY2tPdXRzaWRlUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3Qgd2FpdGluZ0ZvclRyaWdnZXIgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBoYW5kbGVNb3VzZUNhcHR1cmUgPSB1c2VDYWxsYmFjayhlID0+IHtcbiAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZ2V0UmVmVGFyZ2V0KHJlZik7XG4gICAgd2FybmluZyghIWN1cnJlbnRUYXJnZXQsICdDbGlja091dHNpZGUgY2FwdHVyZWQgYSBjbG9zZSBldmVudCBidXQgZG9lcyBub3QgaGF2ZSBhIHJlZiB0byBjb21wYXJlIGl0IHRvLiAnICsgJ3VzZUNsaWNrT3V0c2lkZSgpLCBzaG91bGQgYmUgcGFzc2VkIGEgcmVmIHRoYXQgcmVzb2x2ZXMgdG8gYSBET00gbm9kZScpO1xuICAgIHByZXZlbnRNb3VzZUNsaWNrT3V0c2lkZVJlZi5jdXJyZW50ID0gIWN1cnJlbnRUYXJnZXQgfHwgaXNNb2RpZmllZEV2ZW50KGUpIHx8ICFpc0xlZnRDbGlja0V2ZW50KGUpIHx8ICEhY29udGFpbnMoY3VycmVudFRhcmdldCwgZS50YXJnZXQpIHx8IHdhaXRpbmdGb3JUcmlnZ2VyLmN1cnJlbnQ7XG4gICAgd2FpdGluZ0ZvclRyaWdnZXIuY3VycmVudCA9IGZhbHNlO1xuICB9LCBbcmVmXSk7XG4gIGNvbnN0IGhhbmRsZUluaXRpYWxNb3VzZSA9IHVzZUV2ZW50Q2FsbGJhY2soZSA9PiB7XG4gICAgY29uc3QgY3VycmVudFRhcmdldCA9IGdldFJlZlRhcmdldChyZWYpO1xuICAgIGlmIChjdXJyZW50VGFyZ2V0ICYmIGNvbnRhaW5zKGN1cnJlbnRUYXJnZXQsIGUudGFyZ2V0KSkge1xuICAgICAgd2FpdGluZ0ZvclRyaWdnZXIuY3VycmVudCA9IHRydWU7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlTW91c2UgPSB1c2VFdmVudENhbGxiYWNrKGUgPT4ge1xuICAgIGlmICghcHJldmVudE1vdXNlQ2xpY2tPdXRzaWRlUmVmLmN1cnJlbnQpIHtcbiAgICAgIG9uQ2xpY2tPdXRzaWRlKGUpO1xuICAgIH1cbiAgfSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkIHx8IHJlZiA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGRvYyA9IG93bmVyRG9jdW1lbnQoZ2V0UmVmVGFyZ2V0KHJlZikpO1xuXG4gICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgZXZlbnQgdG8gYXZvaWQgdHJpZ2dlcmluZyBoYW5kbGVycyBpbW1lZGlhdGVseVxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMjAwNzRcbiAgICBsZXQgY3VycmVudEV2ZW50ID0gKGRvYy5kZWZhdWx0VmlldyB8fCB3aW5kb3cpLmV2ZW50O1xuICAgIGxldCByZW1vdmVJbml0aWFsVHJpZ2dlckxpc3RlbmVyID0gbnVsbDtcbiAgICBpZiAoSW5pdGlhbFRyaWdnZXJFdmVudHNbY2xpY2tUcmlnZ2VyXSkge1xuICAgICAgcmVtb3ZlSW5pdGlhbFRyaWdnZXJMaXN0ZW5lciA9IGxpc3Rlbihkb2MsIEluaXRpYWxUcmlnZ2VyRXZlbnRzW2NsaWNrVHJpZ2dlcl0sIGhhbmRsZUluaXRpYWxNb3VzZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gVXNlIGNhcHR1cmUgZm9yIHRoaXMgbGlzdGVuZXIgc28gaXQgZmlyZXMgYmVmb3JlIFJlYWN0J3MgbGlzdGVuZXIsIHRvXG4gICAgLy8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzIGluIHRoZSBjb250YWlucygpIGNoZWNrIGJlbG93IGlmIHRoZSB0YXJnZXQgRE9NXG4gICAgLy8gZWxlbWVudCBpcyByZW1vdmVkIGluIHRoZSBSZWFjdCBtb3VzZSBjYWxsYmFjay5cbiAgICBjb25zdCByZW1vdmVNb3VzZUNhcHR1cmVMaXN0ZW5lciA9IGxpc3Rlbihkb2MsIGNsaWNrVHJpZ2dlciwgaGFuZGxlTW91c2VDYXB0dXJlLCB0cnVlKTtcbiAgICBjb25zdCByZW1vdmVNb3VzZUxpc3RlbmVyID0gbGlzdGVuKGRvYywgY2xpY2tUcmlnZ2VyLCBlID0+IHtcbiAgICAgIC8vIHNraXAgaWYgdGhpcyBldmVudCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHJ1bm5pbmcgd2hlbiB3ZSBhZGRlZCB0aGUgaGFuZGxlcnNcbiAgICAgIGlmIChlID09PSBjdXJyZW50RXZlbnQpIHtcbiAgICAgICAgY3VycmVudEV2ZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBoYW5kbGVNb3VzZShlKTtcbiAgICB9KTtcbiAgICBsZXQgbW9iaWxlU2FmYXJpSGFja0xpc3RlbmVycyA9IFtdO1xuICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2MuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBtb2JpbGVTYWZhcmlIYWNrTGlzdGVuZXJzID0gW10uc2xpY2UuY2FsbChkb2MuYm9keS5jaGlsZHJlbikubWFwKGVsID0+IGxpc3RlbihlbCwgJ21vdXNlbW92ZScsIG5vb3ApKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHJlbW92ZUluaXRpYWxUcmlnZ2VyTGlzdGVuZXIgPT0gbnVsbCA/IHZvaWQgMCA6IHJlbW92ZUluaXRpYWxUcmlnZ2VyTGlzdGVuZXIoKTtcbiAgICAgIHJlbW92ZU1vdXNlQ2FwdHVyZUxpc3RlbmVyKCk7XG4gICAgICByZW1vdmVNb3VzZUxpc3RlbmVyKCk7XG4gICAgICBtb2JpbGVTYWZhcmlIYWNrTGlzdGVuZXJzLmZvckVhY2gocmVtb3ZlID0+IHJlbW92ZSgpKTtcbiAgICB9O1xuICB9LCBbcmVmLCBkaXNhYmxlZCwgY2xpY2tUcmlnZ2VyLCBoYW5kbGVNb3VzZUNhcHR1cmUsIGhhbmRsZUluaXRpYWxNb3VzZSwgaGFuZGxlTW91c2VdKTtcbn1cbmV4cG9ydCBkZWZhdWx0IHVzZUNsaWNrT3V0c2lkZTsiLCJleHBvcnQgZnVuY3Rpb24gdG9Nb2RpZmllck1hcChtb2RpZmllcnMpIHtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGlmICghQXJyYXkuaXNBcnJheShtb2RpZmllcnMpKSB7XG4gICAgcmV0dXJuIG1vZGlmaWVycyB8fCByZXN1bHQ7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gIG1vZGlmaWVycyA9PSBudWxsID8gdm9pZCAwIDogbW9kaWZpZXJzLmZvckVhY2gobSA9PiB7XG4gICAgcmVzdWx0W20ubmFtZV0gPSBtO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0b01vZGlmaWVyQXJyYXkobWFwID0ge30pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobWFwKSkgcmV0dXJuIG1hcDtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1hcCkubWFwKGsgPT4ge1xuICAgIG1hcFtrXS5uYW1lID0gaztcbiAgICByZXR1cm4gbWFwW2tdO1xuICB9KTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlT3B0aW9uc1dpdGhQb3BwZXJDb25maWcoe1xuICBlbmFibGVkLFxuICBlbmFibGVFdmVudHMsXG4gIHBsYWNlbWVudCxcbiAgZmxpcCxcbiAgb2Zmc2V0LFxuICBmaXhlZCxcbiAgY29udGFpbmVyUGFkZGluZyxcbiAgYXJyb3dFbGVtZW50LFxuICBwb3BwZXJDb25maWcgPSB7fVxufSkge1xuICB2YXIgX21vZGlmaWVycyRldmVudExpc3RlLCBfbW9kaWZpZXJzJHByZXZlbnRPdmUsIF9tb2RpZmllcnMkcHJldmVudE92ZTIsIF9tb2RpZmllcnMkb2Zmc2V0LCBfbW9kaWZpZXJzJGFycm93O1xuICBjb25zdCBtb2RpZmllcnMgPSB0b01vZGlmaWVyTWFwKHBvcHBlckNvbmZpZy5tb2RpZmllcnMpO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcG9wcGVyQ29uZmlnLCB7XG4gICAgcGxhY2VtZW50LFxuICAgIGVuYWJsZWQsXG4gICAgc3RyYXRlZ3k6IGZpeGVkID8gJ2ZpeGVkJyA6IHBvcHBlckNvbmZpZy5zdHJhdGVneSxcbiAgICBtb2RpZmllcnM6IHRvTW9kaWZpZXJBcnJheShPYmplY3QuYXNzaWduKHt9LCBtb2RpZmllcnMsIHtcbiAgICAgIGV2ZW50TGlzdGVuZXJzOiB7XG4gICAgICAgIGVuYWJsZWQ6IGVuYWJsZUV2ZW50cyxcbiAgICAgICAgb3B0aW9uczogKF9tb2RpZmllcnMkZXZlbnRMaXN0ZSA9IG1vZGlmaWVycy5ldmVudExpc3RlbmVycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9tb2RpZmllcnMkZXZlbnRMaXN0ZS5vcHRpb25zXG4gICAgICB9LFxuICAgICAgcHJldmVudE92ZXJmbG93OiBPYmplY3QuYXNzaWduKHt9LCBtb2RpZmllcnMucHJldmVudE92ZXJmbG93LCB7XG4gICAgICAgIG9wdGlvbnM6IGNvbnRhaW5lclBhZGRpbmcgPyBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICBwYWRkaW5nOiBjb250YWluZXJQYWRkaW5nXG4gICAgICAgIH0sIChfbW9kaWZpZXJzJHByZXZlbnRPdmUgPSBtb2RpZmllcnMucHJldmVudE92ZXJmbG93KSA9PSBudWxsID8gdm9pZCAwIDogX21vZGlmaWVycyRwcmV2ZW50T3ZlLm9wdGlvbnMpIDogKF9tb2RpZmllcnMkcHJldmVudE92ZTIgPSBtb2RpZmllcnMucHJldmVudE92ZXJmbG93KSA9PSBudWxsID8gdm9pZCAwIDogX21vZGlmaWVycyRwcmV2ZW50T3ZlMi5vcHRpb25zXG4gICAgICB9KSxcbiAgICAgIG9mZnNldDoge1xuICAgICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICBvZmZzZXRcbiAgICAgICAgfSwgKF9tb2RpZmllcnMkb2Zmc2V0ID0gbW9kaWZpZXJzLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9tb2RpZmllcnMkb2Zmc2V0Lm9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgYXJyb3c6IE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVycy5hcnJvdywge1xuICAgICAgICBlbmFibGVkOiAhIWFycm93RWxlbWVudCxcbiAgICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgKF9tb2RpZmllcnMkYXJyb3cgPSBtb2RpZmllcnMuYXJyb3cpID09IG51bGwgPyB2b2lkIDAgOiBfbW9kaWZpZXJzJGFycm93Lm9wdGlvbnMsIHtcbiAgICAgICAgICBlbGVtZW50OiBhcnJvd0VsZW1lbnRcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuICAgICAgZmxpcDogT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIGVuYWJsZWQ6ICEhZmxpcFxuICAgICAgfSwgbW9kaWZpZXJzLmZsaXApXG4gICAgfSkpXG4gIH0pO1xufSIsImNvbnN0IF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNhbGxiYWNrUmVmIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUNhbGxiYWNrUmVmJztcbmltcG9ydCBEcm9wZG93bkNvbnRleHQgZnJvbSAnLi9Ecm9wZG93bkNvbnRleHQnO1xuaW1wb3J0IHVzZVBvcHBlciBmcm9tICcuL3VzZVBvcHBlcic7XG5pbXBvcnQgdXNlQ2xpY2tPdXRzaWRlIGZyb20gJy4vdXNlQ2xpY2tPdXRzaWRlJztcbmltcG9ydCBtZXJnZU9wdGlvbnNXaXRoUG9wcGVyQ29uZmlnIGZyb20gJy4vbWVyZ2VPcHRpb25zV2l0aFBvcHBlckNvbmZpZyc7XG5pbXBvcnQgeyBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbi8qKlxuICogQG1lbWJlck9mIERyb3Bkb3duXG4gKiBAcGFyYW0ge29iamVjdH0gIG9wdGlvbnNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5mbGlwIEF1dG9tYXRpY2FsbHkgYWRqdXN0IHRoZSBtZW51IGBkcm9wYCBwb3NpdGlvbiBiYXNlZCBvbiB2aWV3cG9ydCBlZGdlIGRldGVjdGlvblxuICogQHBhcmFtIHtbbnVtYmVyLCBudW1iZXJdfSBvcHRpb25zLm9mZnNldCBEZWZpbmUgYW4gb2Zmc2V0IGRpc3RhbmNlIGJldHdlZW4gdGhlIE1lbnUgYW5kIHRoZSBUb2dnbGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5zaG93IERpc3BsYXkgdGhlIG1lbnUgbWFudWFsbHksIGlnbm9yZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBgRHJvcGRvd25gXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMudXNlUG9wcGVyIG9wdCBpbi9vdXQgb2YgdXNpbmcgUG9wcGVySlMgdG8gcG9zaXRpb24gbWVudXMuIFdoZW4gZGlzYWJsZWQgeW91IG11c3QgcG9zaXRpb24gaXQgeW91cnNlbGYuXG4gKiBAcGFyYW0ge3N0cmluZ30gIG9wdGlvbnMucm9vdENsb3NlRXZlbnQgVGhlIHBvaW50ZXIgZXZlbnQgdG8gbGlzdGVuIGZvciB3aGVuIGRldGVybWluaW5nIFwiY2xpY2tzIG91dHNpZGVcIiB0aGUgbWVudSBmb3IgdHJpZ2dlcmluZyBhIGNsb3NlLlxuICogQHBhcmFtIHtvYmplY3R9ICBvcHRpb25zLnBvcHBlckNvbmZpZyBPcHRpb25zIHBhc3NlZCB0byB0aGUgW2B1c2VQb3BwZXJgXSgvYXBpL3VzZVBvcHBlcikgaG9vay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURyb3Bkb3duTWVudShvcHRpb25zID0ge30pIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KTtcbiAgY29uc3QgW2Fycm93RWxlbWVudCwgYXR0YWNoQXJyb3dSZWZdID0gdXNlQ2FsbGJhY2tSZWYoKTtcbiAgY29uc3QgaGFzU2hvd25SZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCB7XG4gICAgZmxpcCxcbiAgICBvZmZzZXQsXG4gICAgcm9vdENsb3NlRXZlbnQsXG4gICAgZml4ZWQgPSBmYWxzZSxcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudE92ZXJyaWRlLFxuICAgIHBvcHBlckNvbmZpZyA9IHt9LFxuICAgIGVuYWJsZUV2ZW50TGlzdGVuZXJzID0gdHJ1ZSxcbiAgICB1c2VQb3BwZXI6IHNob3VsZFVzZVBvcHBlciA9ICEhY29udGV4dFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc2hvdyA9IChjb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBjb250ZXh0LnNob3cpID09IG51bGwgPyAhIW9wdGlvbnMuc2hvdyA6IGNvbnRleHQuc2hvdztcbiAgaWYgKHNob3cgJiYgIWhhc1Nob3duUmVmLmN1cnJlbnQpIHtcbiAgICBoYXNTaG93blJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBoYW5kbGVDbG9zZSA9IGUgPT4ge1xuICAgIGNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRleHQudG9nZ2xlKGZhbHNlLCBlKTtcbiAgfTtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBzZXRNZW51LFxuICAgIG1lbnVFbGVtZW50LFxuICAgIHRvZ2dsZUVsZW1lbnRcbiAgfSA9IGNvbnRleHQgfHwge307XG4gIGNvbnN0IHBvcHBlciA9IHVzZVBvcHBlcih0b2dnbGVFbGVtZW50LCBtZW51RWxlbWVudCwgbWVyZ2VPcHRpb25zV2l0aFBvcHBlckNvbmZpZyh7XG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRPdmVycmlkZSB8fCBwbGFjZW1lbnQgfHwgJ2JvdHRvbS1zdGFydCcsXG4gICAgZW5hYmxlZDogc2hvdWxkVXNlUG9wcGVyLFxuICAgIGVuYWJsZUV2ZW50czogZW5hYmxlRXZlbnRMaXN0ZW5lcnMgPT0gbnVsbCA/IHNob3cgOiBlbmFibGVFdmVudExpc3RlbmVycyxcbiAgICBvZmZzZXQsXG4gICAgZmxpcCxcbiAgICBmaXhlZCxcbiAgICBhcnJvd0VsZW1lbnQsXG4gICAgcG9wcGVyQ29uZmlnXG4gIH0pKTtcbiAgY29uc3QgbWVudVByb3BzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgcmVmOiBzZXRNZW51IHx8IG5vb3AsXG4gICAgJ2FyaWEtbGFiZWxsZWRieSc6IHRvZ2dsZUVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHRvZ2dsZUVsZW1lbnQuaWRcbiAgfSwgcG9wcGVyLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgc3R5bGU6IHBvcHBlci5zdHlsZXMucG9wcGVyXG4gIH0pO1xuICBjb25zdCBtZXRhZGF0YSA9IHtcbiAgICBzaG93LFxuICAgIHBsYWNlbWVudCxcbiAgICBoYXNTaG93bjogaGFzU2hvd25SZWYuY3VycmVudCxcbiAgICB0b2dnbGU6IGNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRleHQudG9nZ2xlLFxuICAgIHBvcHBlcjogc2hvdWxkVXNlUG9wcGVyID8gcG9wcGVyIDogbnVsbCxcbiAgICBhcnJvd1Byb3BzOiBzaG91bGRVc2VQb3BwZXIgPyBPYmplY3QuYXNzaWduKHtcbiAgICAgIHJlZjogYXR0YWNoQXJyb3dSZWZcbiAgICB9LCBwb3BwZXIuYXR0cmlidXRlcy5hcnJvdywge1xuICAgICAgc3R5bGU6IHBvcHBlci5zdHlsZXMuYXJyb3dcbiAgICB9KSA6IHt9XG4gIH07XG4gIHVzZUNsaWNrT3V0c2lkZShtZW51RWxlbWVudCwgaGFuZGxlQ2xvc2UsIHtcbiAgICBjbGlja1RyaWdnZXI6IHJvb3RDbG9zZUV2ZW50LFxuICAgIGRpc2FibGVkOiAhc2hvd1xuICB9KTtcbiAgcmV0dXJuIFttZW51UHJvcHMsIG1ldGFkYXRhXTtcbn1cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgdXNlUG9wcGVyOiB0cnVlXG59O1xuLyoqXG4gKiBBbHNvIGV4cG9ydGVkIGFzIGA8RHJvcGRvd24uTWVudT5gIGZyb20gYERyb3Bkb3duYC5cbiAqXG4gKiBAZGlzcGxheU5hbWUgRHJvcGRvd25NZW51XG4gKiBAbWVtYmVyT2YgRHJvcGRvd25cbiAqL1xuZnVuY3Rpb24gRHJvcGRvd25NZW51KF9yZWYpIHtcbiAgbGV0IHtcbiAgICAgIGNoaWxkcmVuXG4gICAgfSA9IF9yZWYsXG4gICAgb3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IFtwcm9wcywgbWV0YV0gPSB1c2VEcm9wZG93bk1lbnUob3B0aW9ucyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4ocHJvcHMsIG1ldGEpXG4gIH0pO1xufVxuRHJvcGRvd25NZW51LmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duTWVudSc7XG5Ecm9wZG93bk1lbnUuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG4vKiogQGNvbXBvbmVudCAqL1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25NZW51OyIsImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBBIGNvbnZlbmllbmNlIGhvb2sgYXJvdW5kIGB1c2VTdGF0ZWAgZGVzaWduZWQgdG8gYmUgcGFpcmVkIHdpdGhcbiAqIHRoZSBjb21wb25lbnQgW2NhbGxiYWNrIHJlZl0oaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlZnMtYW5kLXRoZS1kb20uaHRtbCNjYWxsYmFjay1yZWZzKSBhcGkuXG4gKiBDYWxsYmFjayByZWZzIGFyZSB1c2VmdWwgb3ZlciBgdXNlUmVmKClgIHdoZW4geW91IG5lZWQgdG8gcmVzcG9uZCB0byB0aGUgcmVmIGJlaW5nIHNldFxuICogaW5zdGVhZCBvZiBsYXppbHkgYWNjZXNzaW5nIGl0IGluIGFuIGVmZmVjdC5cbiAqXG4gKiBgYGB0c1xuICogY29uc3QgW2VsZW1lbnQsIGF0dGFjaFJlZl0gPSB1c2VDYWxsYmFja1JlZjxIVE1MRGl2RWxlbWVudD4oKVxuICpcbiAqIHVzZUVmZmVjdCgoKSA9PiB7XG4gKiAgIGlmICghZWxlbWVudCkgcmV0dXJuXG4gKlxuICogICBjb25zdCBjYWxlbmRhciA9IG5ldyBGdWxsQ2FsZW5kYXIuQ2FsZW5kYXIoZWxlbWVudClcbiAqXG4gKiAgIHJldHVybiAoKSA9PiB7XG4gKiAgICAgY2FsZW5kYXIuZGVzdHJveSgpXG4gKiAgIH1cbiAqIH0sIFtlbGVtZW50XSlcbiAqXG4gKiByZXR1cm4gPGRpdiByZWY9e2F0dGFjaFJlZn0gLz5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSByZWZzXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ2FsbGJhY2tSZWYoKSB7XG4gIHJldHVybiB1c2VTdGF0ZShudWxsKTtcbn0iLCJpbXBvcnQgJDg5eUUyJHJlYWN0LCB7dXNlQ29udGV4dCBhcyAkODl5RTIkdXNlQ29udGV4dCwgdXNlU3RhdGUgYXMgJDg5eUUyJHVzZVN0YXRlLCB1c2VNZW1vIGFzICQ4OXlFMiR1c2VNZW1vLCB1c2VMYXlvdXRFZmZlY3QgYXMgJDg5eUUyJHVzZUxheW91dEVmZmVjdCwgdXNlUmVmIGFzICQ4OXlFMiR1c2VSZWZ9IGZyb20gXCJyZWFjdFwiO1xuXG4vKlxuICogQ29weXJpZ2h0IDIwMjAgQWRvYmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weVxuICogb2YgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlclxuICogdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TXG4gKiBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2VcbiAqIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi8gLypcbiAqIENvcHlyaWdodCAyMDIwIEFkb2JlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHlcbiAqIG9mIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OU1xuICogT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlXG4gKiBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovIC8vIFdlIG11c3QgYXZvaWQgYSBjaXJjdWxhciBkZXBlbmRlbmN5IHdpdGggQHJlYWN0LWFyaWEvdXRpbHMsIGFuZCB0aGlzIHVzZUxheW91dEVmZmVjdCBpc1xuLy8gZ3VhcmRlZCBieSBhIGNoZWNrIHRoYXQgaXQgb25seSBydW5zIG9uIHRoZSBjbGllbnQgc2lkZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBydWxlc2Rpci91c2VMYXlvdXRFZmZlY3RSdWxlXG5cbi8vIERlZmF1bHQgY29udGV4dCB2YWx1ZSB0byB1c2UgaW4gY2FzZSB0aGVyZSBpcyBubyBTU1JQcm92aWRlci4gVGhpcyBpcyBmaW5lIGZvclxuLy8gY2xpZW50LW9ubHkgYXBwcy4gSW4gb3JkZXIgdG8gc3VwcG9ydCBtdWx0aXBsZSBjb3BpZXMgb2YgUmVhY3QgQXJpYSBwb3RlbnRpYWxseVxuLy8gYmVpbmcgb24gdGhlIHBhZ2UgYXQgb25jZSwgdGhlIHByZWZpeCBpcyBzZXQgdG8gYSByYW5kb20gbnVtYmVyLiBTU1JQcm92aWRlclxuLy8gd2lsbCByZXNldCB0aGlzIHRvIHplcm8gZm9yIGNvbnNpc3RlbmN5IGJldHdlZW4gc2VydmVyIGFuZCBjbGllbnQsIHNvIGluIHRoZVxuLy8gU1NSIGNhc2UgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IEFyaWEgaXMgbm90IHN1cHBvcnRlZC5cbmNvbnN0ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRkZWZhdWx0Q29udGV4dCA9IHtcbiAgICBwcmVmaXg6IFN0cmluZyhNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwMDAwMCkpLFxuICAgIGN1cnJlbnQ6IDAsXG4gICAgaXNTU1I6IGZhbHNlXG59O1xuY29uc3QgJDcwNGNmMWQzYjY4NGNjNWMkdmFyJFNTUkNvbnRleHQgPSAvKiNfX1BVUkVfXyovICgwLCAkODl5RTIkcmVhY3QpLmNyZWF0ZUNvbnRleHQoJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGRlZmF1bHRDb250ZXh0KTtcbmZ1bmN0aW9uICQ3MDRjZjFkM2I2ODRjYzVjJGV4cG9ydCQ5ZjhhYzk2YWY0YjFiMmFlKHByb3BzKSB7XG4gICAgbGV0IGN1ciA9ICgwLCAkODl5RTIkdXNlQ29udGV4dCkoJDcwNGNmMWQzYjY4NGNjNWMkdmFyJFNTUkNvbnRleHQpO1xuICAgIGxldCBjb3VudGVyID0gJDcwNGNmMWQzYjY4NGNjNWMkdmFyJHVzZUNvdW50ZXIoY3VyID09PSAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkZGVmYXVsdENvbnRleHQpO1xuICAgIGxldCBbaXNTU1IsIHNldElzU1NSXSA9ICgwLCAkODl5RTIkdXNlU3RhdGUpKHRydWUpO1xuICAgIGxldCB2YWx1ZSA9ICgwLCAkODl5RTIkdXNlTWVtbykoKCk9Pih7XG4gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBmaXJzdCBTU1JQcm92aWRlciwgc3RhcnQgd2l0aCBhbiBlbXB0eSBzdHJpbmcgcHJlZml4LCBvdGhlcndpc2VcbiAgICAgICAgICAgIC8vIGFwcGVuZCBhbmQgaW5jcmVtZW50IHRoZSBjb3VudGVyLlxuICAgICAgICAgICAgcHJlZml4OiBjdXIgPT09ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRkZWZhdWx0Q29udGV4dCA/IFwiXCIgOiBgJHtjdXIucHJlZml4fS0ke2NvdW50ZXJ9YCxcbiAgICAgICAgICAgIGN1cnJlbnQ6IDAsXG4gICAgICAgICAgICBpc1NTUjogaXNTU1JcbiAgICAgICAgfSksIFtcbiAgICAgICAgY3VyLFxuICAgICAgICBjb3VudGVyLFxuICAgICAgICBpc1NTUlxuICAgIF0pO1xuICAgIC8vIElmIG9uIHRoZSBjbGllbnQsIGFuZCB0aGUgY29tcG9uZW50IHdhcyBpbml0aWFsbHkgc2VydmVyIHJlbmRlcmVkLFxuICAgIC8vIHRoZW4gc2NoZWR1bGUgYSBsYXlvdXQgZWZmZWN0IHRvIHVwZGF0ZSB0aGUgY29tcG9uZW50IGFmdGVyIGh5ZHJhdGlvbi5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikgLy8gVGhpcyBpZiBzdGF0ZW1lbnQgdGVjaG5pY2FsbHkgYnJlYWtzIHRoZSBydWxlcyBvZiBob29rcywgYnV0IGlzIHNhZmVcbiAgICAvLyBiZWNhdXNlIHRoZSBjb25kaXRpb24gbmV2ZXIgY2hhbmdlcyBhZnRlciBtb3VudGluZy5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAoMCwgJDg5eUUyJHVzZUxheW91dEVmZmVjdCkoKCk9PntcbiAgICAgICAgc2V0SXNTU1IoZmFsc2UpO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgJDg5eUUyJHJlYWN0KS5jcmVhdGVFbGVtZW50KCQ3MDRjZjFkM2I2ODRjYzVjJHZhciRTU1JDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0sIHByb3BzLmNoaWxkcmVuKTtcbn1cbmxldCAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkY2FuVXNlRE9NID0gQm9vbGVhbih0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5sZXQgJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNvbXBvbmVudElkcyA9IG5ldyBXZWFrTWFwKCk7XG5mdW5jdGlvbiAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkdXNlQ291bnRlcihpc0Rpc2FibGVkID0gZmFsc2UpIHtcbiAgICBsZXQgY3R4ID0gKDAsICQ4OXlFMiR1c2VDb250ZXh0KSgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCk7XG4gICAgbGV0IHJlZiA9ICgwLCAkODl5RTIkdXNlUmVmKShudWxsKTtcbiAgICBpZiAocmVmLmN1cnJlbnQgPT09IG51bGwgJiYgIWlzRGlzYWJsZWQpIHtcbiAgICAgICAgdmFyIF9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCwgX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX1JlYWN0Q3VycmVudE93bmVyO1xuICAgICAgICAvLyBJbiBzdHJpY3QgbW9kZSwgUmVhY3QgcmVuZGVycyBjb21wb25lbnRzIHR3aWNlLCBhbmQgdGhlIHJlZiB3aWxsIGJlIHJlc2V0IHRvIG51bGwgb24gdGhlIHNlY29uZCByZW5kZXIuXG4gICAgICAgIC8vIFRoaXMgbWVhbnMgb3VyIGlkIGNvdW50ZXIgd2lsbCBiZSBpbmNyZW1lbnRlZCB0d2ljZSBpbnN0ZWFkIG9mIG9uY2UuIFRoaXMgaXMgYSBwcm9ibGVtIGJlY2F1c2Ugb24gdGhlXG4gICAgICAgIC8vIHNlcnZlciwgY29tcG9uZW50cyBhcmUgb25seSByZW5kZXJlZCBvbmNlIGFuZCBzbyBpZHMgZ2VuZXJhdGVkIG9uIHRoZSBzZXJ2ZXIgd29uJ3QgbWF0Y2ggdGhlIGNsaWVudC5cbiAgICAgICAgLy8gSW4gUmVhY3QgMTgsIHVzZUlkIHdhcyBpbnRyb2R1Y2VkIHRvIHNvbHZlIHRoaXMsIGJ1dCBpdCBpcyBub3QgYXZhaWxhYmxlIGluIG9sZGVyIHZlcnNpb25zLiBTbyB0byBzb2x2ZSB0aGlzXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gdXNlIHNvbWUgUmVhY3QgaW50ZXJuYWxzIHRvIGFjY2VzcyB0aGUgdW5kZXJseWluZyBGaWJlciBpbnN0YW5jZSwgd2hpY2ggaXMgc3RhYmxlIGJldHdlZW4gcmVuZGVycy5cbiAgICAgICAgLy8gVGhpcyBpcyBleHBvc2VkIGFzIFJlYWN0Q3VycmVudE93bmVyIGluIGRldmVsb3BtZW50LCB3aGljaCBpcyBhbGwgd2UgbmVlZCBzaW5jZSBTdHJpY3RNb2RlIG9ubHkgcnVucyBpbiBkZXZlbG9wbWVudC5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgd2Ugb25seSBpbmNyZW1lbnQgdGhlIGdsb2JhbCBjb3VudGVyIG9uY2UsIHdlIHN0b3JlIHRoZSBzdGFydGluZyBpZCBmb3IgdGhpcyBjb21wb25lbnQgaW5cbiAgICAgICAgLy8gYSB3ZWFrIG1hcCBhc3NvY2lhdGVkIHdpdGggdGhlIEZpYmVyLiBPbiB0aGUgc2Vjb25kIHJlbmRlciwgd2UgcmVzZXQgdGhlIGdsb2JhbCBjb3VudGVyIHRvIHRoaXMgdmFsdWUuXG4gICAgICAgIC8vIFNpbmNlIFJlYWN0IHJ1bnMgdGhlIHNlY29uZCByZW5kZXIgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZpcnN0LCB0aGlzIGlzIHNhZmUuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgbGV0IGN1cnJlbnRPd25lciA9IChfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQgPSAoMCwgJDg5eUUyJHJlYWN0KS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCkgPT09IG51bGwgfHwgX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX1JlYWN0Q3VycmVudE93bmVyID0gX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyKSA9PT0gbnVsbCB8fCBfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfUmVhY3RDdXJyZW50T3duZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9SZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuICAgICAgICBpZiAoY3VycmVudE93bmVyKSB7XG4gICAgICAgICAgICBsZXQgcHJldkNvbXBvbmVudFZhbHVlID0gJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNvbXBvbmVudElkcy5nZXQoY3VycmVudE93bmVyKTtcbiAgICAgICAgICAgIGlmIChwcmV2Q29tcG9uZW50VmFsdWUgPT0gbnVsbCkgLy8gT24gdGhlIGZpcnN0IHJlbmRlciwgYW5kIGZpcnN0IGNhbGwgdG8gdXNlSWQsIHN0b3JlIHRoZSBpZCBhbmQgc3RhdGUgaW4gb3VyIHdlYWsgbWFwLlxuICAgICAgICAgICAgJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNvbXBvbmVudElkcy5zZXQoY3VycmVudE93bmVyLCB7XG4gICAgICAgICAgICAgICAgaWQ6IGN0eC5jdXJyZW50LFxuICAgICAgICAgICAgICAgIHN0YXRlOiBjdXJyZW50T3duZXIubWVtb2l6ZWRTdGF0ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50T3duZXIubWVtb2l6ZWRTdGF0ZSAhPT0gcHJldkNvbXBvbmVudFZhbHVlLnN0YXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gT24gdGhlIHNlY29uZCByZW5kZXIsIHRoZSBtZW1vaXplZFN0YXRlIGdldHMgcmVzZXQgYnkgUmVhY3QuXG4gICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIGNvdW50ZXIsIGFuZCByZW1vdmUgZnJvbSB0aGUgd2VhayBtYXAgc28gd2UgZG9uJ3RcbiAgICAgICAgICAgICAgICAvLyBkbyB0aGlzIGZvciBzdWJzZXF1ZW50IHVzZUlkIGNhbGxzLlxuICAgICAgICAgICAgICAgIGN0eC5jdXJyZW50ID0gcHJldkNvbXBvbmVudFZhbHVlLmlkO1xuICAgICAgICAgICAgICAgICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRjb21wb25lbnRJZHMuZGVsZXRlKGN1cnJlbnRPd25lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVmLmN1cnJlbnQgPSArK2N0eC5jdXJyZW50O1xuICAgIH1cbiAgICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59XG5mdW5jdGlvbiAkNzA0Y2YxZDNiNjg0Y2M1YyRleHBvcnQkNjE5NTAwOTU5ZmM0OGIyNihkZWZhdWx0SWQpIHtcbiAgICBsZXQgY3R4ID0gKDAsICQ4OXlFMiR1c2VDb250ZXh0KSgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCk7XG4gICAgLy8gSWYgd2UgYXJlIHJlbmRlcmluZyBpbiBhIG5vbi1ET00gZW52aXJvbm1lbnQsIGFuZCB0aGVyZSdzIG5vIFNTUlByb3ZpZGVyLFxuICAgIC8vIHByb3ZpZGUgYSB3YXJuaW5nIHRvIGhpbnQgdG8gdGhlIGRldmVsb3BlciB0byBhZGQgb25lLlxuICAgIGlmIChjdHggPT09ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRkZWZhdWx0Q29udGV4dCAmJiAhJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNhblVzZURPTSkgY29uc29sZS53YXJuKFwiV2hlbiBzZXJ2ZXIgcmVuZGVyaW5nLCB5b3UgbXVzdCB3cmFwIHlvdXIgYXBwbGljYXRpb24gaW4gYW4gPFNTUlByb3ZpZGVyPiB0byBlbnN1cmUgY29uc2lzdGVudCBpZHMgYXJlIGdlbmVyYXRlZCBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cIik7XG4gICAgbGV0IGNvdW50ZXIgPSAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkdXNlQ291bnRlcighIWRlZmF1bHRJZCk7XG4gICAgcmV0dXJuIGRlZmF1bHRJZCB8fCBgcmVhY3QtYXJpYSR7Y3R4LnByZWZpeH0tJHtjb3VudGVyfWA7XG59XG5mdW5jdGlvbiAkNzA0Y2YxZDNiNjg0Y2M1YyRleHBvcnQkNTM1YmQ2Y2E3ZjkwYTI3MygpIHtcbiAgICBsZXQgY3VyID0gKDAsICQ4OXlFMiR1c2VDb250ZXh0KSgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCk7XG4gICAgcmV0dXJuIGN1ci5pc1NTUjtcbn1cblxuXG5cblxuZXhwb3J0IHskNzA0Y2YxZDNiNjg0Y2M1YyRleHBvcnQkOWY4YWM5NmFmNGIxYjJhZSBhcyBTU1JQcm92aWRlciwgJDcwNGNmMWQzYjY4NGNjNWMkZXhwb3J0JDYxOTUwMDk1OWZjNDhiMjYgYXMgdXNlU1NSU2FmZUlkLCAkNzA0Y2YxZDNiNjg0Y2M1YyRleHBvcnQkNTM1YmQ2Y2E3ZjkwYTI3MyBhcyB1c2VJc1NTUn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tb2R1bGUuanMubWFwXG4iLCJpbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVNTUlNhZmVJZCB9IGZyb20gJy4vc3NyJztcbmltcG9ydCBEcm9wZG93bkNvbnRleHQgZnJvbSAnLi9Ecm9wZG93bkNvbnRleHQnO1xuaW1wb3J0IHsgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGNvbnN0IGlzUm9sZU1lbnUgPSBlbCA9PiB7XG4gIHZhciBfZWwkZ2V0QXR0cmlidXRlO1xuICByZXR1cm4gKChfZWwkZ2V0QXR0cmlidXRlID0gZWwuZ2V0QXR0cmlidXRlKCdyb2xlJykpID09IG51bGwgPyB2b2lkIDAgOiBfZWwkZ2V0QXR0cmlidXRlLnRvTG93ZXJDYXNlKCkpID09PSAnbWVudSc7XG59O1xuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG4vKipcbiAqIFdpcmVzIHVwIERyb3Bkb3duIHRvZ2dsZSBmdW5jdGlvbmFsaXR5LCByZXR1cm5pbmcgYSBzZXQgYSBwcm9wcyB0byBhdHRhY2hcbiAqIHRvIHRoZSBlbGVtZW50IHRoYXQgZnVuY3Rpb25zIGFzIHRoZSBkcm9wZG93biB0b2dnbGUgKGdlbmVyYWxseSBhIGJ1dHRvbikuXG4gKlxuICogQG1lbWJlck9mIERyb3Bkb3duXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VEcm9wZG93blRvZ2dsZSgpIHtcbiAgY29uc3QgaWQgPSB1c2VTU1JTYWZlSWQoKTtcbiAgY29uc3Qge1xuICAgIHNob3cgPSBmYWxzZSxcbiAgICB0b2dnbGUgPSBub29wLFxuICAgIHNldFRvZ2dsZSxcbiAgICBtZW51RWxlbWVudFxuICB9ID0gdXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpIHx8IHt9O1xuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUNhbGxiYWNrKGUgPT4ge1xuICAgIHRvZ2dsZSghc2hvdywgZSk7XG4gIH0sIFtzaG93LCB0b2dnbGVdKTtcbiAgY29uc3QgcHJvcHMgPSB7XG4gICAgaWQsXG4gICAgcmVmOiBzZXRUb2dnbGUgfHwgbm9vcCxcbiAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAnYXJpYS1leHBhbmRlZCc6ICEhc2hvd1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgbWF5YmUgYmV0dGVyIGRvd24gaW4gYW4gZWZmZWN0LCBidXRcbiAgLy8gdGhlIGNvbXBvbmVudCBpcyBnb2luZyB0byB1cGRhdGUgYW55d2F5IHdoZW4gdGhlIG1lbnUgZWxlbWVudFxuICAvLyBpcyBzZXQgc28gbWlnaHQgcmV0dXJuIG5ldyBwcm9wcy5cbiAgaWYgKG1lbnVFbGVtZW50ICYmIGlzUm9sZU1lbnUobWVudUVsZW1lbnQpKSB7XG4gICAgcHJvcHNbJ2FyaWEtaGFzcG9wdXAnXSA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIFtwcm9wcywge1xuICAgIHNob3csXG4gICAgdG9nZ2xlXG4gIH1dO1xufVxuLyoqXG4gKiBBbHNvIGV4cG9ydGVkIGFzIGA8RHJvcGRvd24uVG9nZ2xlPmAgZnJvbSBgRHJvcGRvd25gLlxuICpcbiAqIEBkaXNwbGF5TmFtZSBEcm9wZG93blRvZ2dsZVxuICogQG1lbWJlck9mIERyb3Bkb3duXG4gKi9cbmZ1bmN0aW9uIERyb3Bkb3duVG9nZ2xlKHtcbiAgY2hpbGRyZW5cbn0pIHtcbiAgY29uc3QgW3Byb3BzLCBtZXRhXSA9IHVzZURyb3Bkb3duVG9nZ2xlKCk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4ocHJvcHMsIG1ldGEpXG4gIH0pO1xufVxuRHJvcGRvd25Ub2dnbGUuZGlzcGxheU5hbWUgPSAnRHJvcGRvd25Ub2dnbGUnO1xuXG4vKiogQGNvbXBvbmVudCAqL1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25Ub2dnbGU7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgU2VsZWN0YWJsZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmV4cG9ydCBjb25zdCBtYWtlRXZlbnRLZXkgPSAoZXZlbnRLZXksIGhyZWYgPSBudWxsKSA9PiB7XG4gIGlmIChldmVudEtleSAhPSBudWxsKSByZXR1cm4gU3RyaW5nKGV2ZW50S2V5KTtcbiAgcmV0dXJuIGhyZWYgfHwgbnVsbDtcbn07XG5leHBvcnQgZGVmYXVsdCBTZWxlY3RhYmxlQ29udGV4dDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBOYXZDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5OYXZDb250ZXh0LmRpc3BsYXlOYW1lID0gJ05hdkNvbnRleHQnO1xuZXhwb3J0IGRlZmF1bHQgTmF2Q29udGV4dDsiLCJleHBvcnQgY29uc3QgQVRUUklCVVRFX1BSRUZJWCA9IGBkYXRhLXJyLXVpLWA7XG5leHBvcnQgY29uc3QgUFJPUEVSVFlfUFJFRklYID0gYHJyVWlgO1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFBdHRyKHByb3BlcnR5KSB7XG4gIHJldHVybiBgJHtBVFRSSUJVVEVfUFJFRklYfSR7cHJvcGVydHl9YDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkYXRhUHJvcChwcm9wZXJ0eSkge1xuICByZXR1cm4gYCR7UFJPUEVSVFlfUFJFRklYfSR7cHJvcGVydHl9YDtcbn0iLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJldmVudEtleVwiLCBcImRpc2FibGVkXCIsIFwib25DbGlja1wiLCBcImFjdGl2ZVwiLCBcImFzXCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IFNlbGVjdGFibGVDb250ZXh0LCB7IG1ha2VFdmVudEtleSB9IGZyb20gJy4vU2VsZWN0YWJsZUNvbnRleHQnO1xuaW1wb3J0IE5hdkNvbnRleHQgZnJvbSAnLi9OYXZDb250ZXh0JztcbmltcG9ydCBCdXR0b24gZnJvbSAnLi9CdXR0b24nO1xuaW1wb3J0IHsgZGF0YUF0dHIgfSBmcm9tICcuL0RhdGFLZXknO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8qKlxuICogQ3JlYXRlIGEgZHJvcGRvd24gaXRlbS4gUmV0dXJucyBhIHNldCBvZiBwcm9wcyBmb3IgdGhlIGRyb3Bkb3duIGl0ZW0gY29tcG9uZW50XG4gKiBpbmNsdWRpbmcgYW4gYG9uQ2xpY2tgIGhhbmRsZXIgdGhhdCBwcmV2ZW50cyBzZWxlY3Rpb24gd2hlbiB0aGUgaXRlbSBpcyBkaXNhYmxlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRHJvcGRvd25JdGVtKHtcbiAga2V5LFxuICBocmVmLFxuICBhY3RpdmUsXG4gIGRpc2FibGVkLFxuICBvbkNsaWNrXG59KSB7XG4gIGNvbnN0IG9uU2VsZWN0Q3R4ID0gdXNlQ29udGV4dChTZWxlY3RhYmxlQ29udGV4dCk7XG4gIGNvbnN0IG5hdkNvbnRleHQgPSB1c2VDb250ZXh0KE5hdkNvbnRleHQpO1xuICBjb25zdCB7XG4gICAgYWN0aXZlS2V5XG4gIH0gPSBuYXZDb250ZXh0IHx8IHt9O1xuICBjb25zdCBldmVudEtleSA9IG1ha2VFdmVudEtleShrZXksIGhyZWYpO1xuICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZSA9PSBudWxsICYmIGtleSAhPSBudWxsID8gbWFrZUV2ZW50S2V5KGFjdGl2ZUtleSkgPT09IGV2ZW50S2V5IDogYWN0aXZlO1xuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soZXZlbnQgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuO1xuICAgIG9uQ2xpY2sgPT0gbnVsbCA/IHZvaWQgMCA6IG9uQ2xpY2soZXZlbnQpO1xuICAgIGlmIChvblNlbGVjdEN0eCAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkge1xuICAgICAgb25TZWxlY3RDdHgoZXZlbnRLZXksIGV2ZW50KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gW3tcbiAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAnYXJpYS1kaXNhYmxlZCc6IGRpc2FibGVkIHx8IHVuZGVmaW5lZCxcbiAgICAnYXJpYS1zZWxlY3RlZCc6IGlzQWN0aXZlLFxuICAgIFtkYXRhQXR0cignZHJvcGRvd24taXRlbScpXTogJydcbiAgfSwge1xuICAgIGlzQWN0aXZlXG4gIH1dO1xufVxuY29uc3QgRHJvcGRvd25JdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKF9yZWYsIHJlZikgPT4ge1xuICBsZXQge1xuICAgICAgZXZlbnRLZXksXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBhY3RpdmUsXG4gICAgICBhczogQ29tcG9uZW50ID0gQnV0dG9uXG4gICAgfSA9IF9yZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBbZHJvcGRvd25JdGVtUHJvcHNdID0gdXNlRHJvcGRvd25JdGVtKHtcbiAgICBrZXk6IGV2ZW50S2V5LFxuICAgIGhyZWY6IHByb3BzLmhyZWYsXG4gICAgZGlzYWJsZWQsXG4gICAgb25DbGljayxcbiAgICBhY3RpdmVcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgcmVmOiByZWZcbiAgfSwgZHJvcGRvd25JdGVtUHJvcHMpKTtcbn0pO1xuRHJvcGRvd25JdGVtLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duSXRlbSc7XG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bkl0ZW07IiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjYW5Vc2VET00gZnJvbSAnZG9tLWhlbHBlcnMvY2FuVXNlRE9NJztcbmNvbnN0IENvbnRleHQgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29udGV4dChjYW5Vc2VET00gPyB3aW5kb3cgOiB1bmRlZmluZWQpO1xuZXhwb3J0IGNvbnN0IFdpbmRvd1Byb3ZpZGVyID0gQ29udGV4dC5Qcm92aWRlcjtcblxuLyoqXG4gKiBUaGUgZG9jdW1lbnQgXCJ3aW5kb3dcIiBwbGFjZWQgaW4gUmVhY3QgY29udGV4dC4gSGVscGZ1bCBmb3IgZGV0ZXJtaW5pbmdcbiAqIFNTUiBjb250ZXh0LCBvciB3aGVuIHJlbmRlcmluZyBpbnRvIGFuIGlmcmFtZS5cbiAqXG4gKiBAcmV0dXJucyB0aGUgY3VycmVudCB3aW5kb3dcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlV2luZG93KCkge1xuICByZXR1cm4gdXNlQ29udGV4dChDb250ZXh0KTtcbn0iLCJpbXBvcnQgcXNhIGZyb20gJ2RvbS1oZWxwZXJzL3F1ZXJ5U2VsZWN0b3JBbGwnO1xuaW1wb3J0IGFkZEV2ZW50TGlzdGVuZXIgZnJvbSAnZG9tLWhlbHBlcnMvYWRkRXZlbnRMaXN0ZW5lcic7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VVbmNvbnRyb2xsZWRQcm9wIH0gZnJvbSAndW5jb250cm9sbGFibGUnO1xuaW1wb3J0IHVzZVByZXZpb3VzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZVByZXZpb3VzJztcbmltcG9ydCB1c2VGb3JjZVVwZGF0ZSBmcm9tICdAcmVzdGFydC9ob29rcy91c2VGb3JjZVVwZGF0ZSc7XG5pbXBvcnQgdXNlRXZlbnRMaXN0ZW5lciBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudExpc3RlbmVyJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IERyb3Bkb3duQ29udGV4dCBmcm9tICcuL0Ryb3Bkb3duQ29udGV4dCc7XG5pbXBvcnQgRHJvcGRvd25NZW51IGZyb20gJy4vRHJvcGRvd25NZW51JztcbmltcG9ydCBEcm9wZG93blRvZ2dsZSwgeyBpc1JvbGVNZW51IH0gZnJvbSAnLi9Ecm9wZG93blRvZ2dsZSc7XG5pbXBvcnQgRHJvcGRvd25JdGVtIGZyb20gJy4vRHJvcGRvd25JdGVtJztcbmltcG9ydCBTZWxlY3RhYmxlQ29udGV4dCBmcm9tICcuL1NlbGVjdGFibGVDb250ZXh0JztcbmltcG9ydCB7IGRhdGFBdHRyIH0gZnJvbSAnLi9EYXRhS2V5JztcbmltcG9ydCB1c2VXaW5kb3cgZnJvbSAnLi91c2VXaW5kb3cnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmZ1bmN0aW9uIHVzZVJlZldpdGhVcGRhdGUoKSB7XG4gIGNvbnN0IGZvcmNlVXBkYXRlID0gdXNlRm9yY2VVcGRhdGUoKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBhdHRhY2hSZWYgPSB1c2VDYWxsYmFjayhlbGVtZW50ID0+IHtcbiAgICByZWYuY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgLy8gZW5zdXJlIHRoYXQgYSBtZW51IHNldCB0cmlnZ2VycyBhbiB1cGRhdGUgZm9yIGNvbnN1bWVyc1xuICAgIGZvcmNlVXBkYXRlKCk7XG4gIH0sIFtmb3JjZVVwZGF0ZV0pO1xuICByZXR1cm4gW3JlZiwgYXR0YWNoUmVmXTtcbn1cblxuLyoqXG4gKiBAZGlzcGxheU5hbWUgRHJvcGRvd25cbiAqIEBwdWJsaWNcbiAqL1xuZnVuY3Rpb24gRHJvcGRvd24oe1xuICBkZWZhdWx0U2hvdyxcbiAgc2hvdzogcmF3U2hvdyxcbiAgb25TZWxlY3QsXG4gIG9uVG9nZ2xlOiByYXdPblRvZ2dsZSxcbiAgaXRlbVNlbGVjdG9yID0gYCogWyR7ZGF0YUF0dHIoJ2Ryb3Bkb3duLWl0ZW0nKX1dYCxcbiAgZm9jdXNGaXJzdEl0ZW1PblNob3csXG4gIHBsYWNlbWVudCA9ICdib3R0b20tc3RhcnQnLFxuICBjaGlsZHJlblxufSkge1xuICBjb25zdCB3aW5kb3cgPSB1c2VXaW5kb3coKTtcbiAgY29uc3QgW3Nob3csIG9uVG9nZ2xlXSA9IHVzZVVuY29udHJvbGxlZFByb3AocmF3U2hvdywgZGVmYXVsdFNob3csIHJhd09uVG9nZ2xlKTtcblxuICAvLyBXZSB1c2Ugbm9ybWFsIHJlZnMgaW5zdGVhZCBvZiB1c2VDYWxsYmFja1JlZiBpbiBvcmRlciB0byBwb3B1bGF0ZSB0aGVcbiAgLy8gdGhlIHZhbHVlIGFzIHF1aWNrbHkgYXMgcG9zc2libGUsIG90aGVyd2lzZSB0aGUgZWZmZWN0IHRvIGZvY3VzIHRoZSBlbGVtZW50XG4gIC8vIG1heSBydW4gYmVmb3JlIHRoZSBzdGF0ZSB2YWx1ZSBpcyBzZXRcbiAgY29uc3QgW21lbnVSZWYsIHNldE1lbnVdID0gdXNlUmVmV2l0aFVwZGF0ZSgpO1xuICBjb25zdCBtZW51RWxlbWVudCA9IG1lbnVSZWYuY3VycmVudDtcbiAgY29uc3QgW3RvZ2dsZVJlZiwgc2V0VG9nZ2xlXSA9IHVzZVJlZldpdGhVcGRhdGUoKTtcbiAgY29uc3QgdG9nZ2xlRWxlbWVudCA9IHRvZ2dsZVJlZi5jdXJyZW50O1xuICBjb25zdCBsYXN0U2hvdyA9IHVzZVByZXZpb3VzKHNob3cpO1xuICBjb25zdCBsYXN0U291cmNlRXZlbnQgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGZvY3VzSW5Ecm9wZG93biA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IG9uU2VsZWN0Q3R4ID0gdXNlQ29udGV4dChTZWxlY3RhYmxlQ29udGV4dCk7XG4gIGNvbnN0IHRvZ2dsZSA9IHVzZUNhbGxiYWNrKChuZXh0U2hvdywgZXZlbnQsIHNvdXJjZSA9IGV2ZW50ID09IG51bGwgPyB2b2lkIDAgOiBldmVudC50eXBlKSA9PiB7XG4gICAgb25Ub2dnbGUobmV4dFNob3csIHtcbiAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgc291cmNlXG4gICAgfSk7XG4gIH0sIFtvblRvZ2dsZV0pO1xuICBjb25zdCBoYW5kbGVTZWxlY3QgPSB1c2VFdmVudENhbGxiYWNrKChrZXksIGV2ZW50KSA9PiB7XG4gICAgb25TZWxlY3QgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU2VsZWN0KGtleSwgZXZlbnQpO1xuICAgIHRvZ2dsZShmYWxzZSwgZXZlbnQsICdzZWxlY3QnKTtcbiAgICBpZiAoIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgIG9uU2VsZWN0Q3R4ID09IG51bGwgPyB2b2lkIDAgOiBvblNlbGVjdEN0eChrZXksIGV2ZW50KTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBjb250ZXh0ID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIHRvZ2dsZSxcbiAgICBwbGFjZW1lbnQsXG4gICAgc2hvdyxcbiAgICBtZW51RWxlbWVudCxcbiAgICB0b2dnbGVFbGVtZW50LFxuICAgIHNldE1lbnUsXG4gICAgc2V0VG9nZ2xlXG4gIH0pLCBbdG9nZ2xlLCBwbGFjZW1lbnQsIHNob3csIG1lbnVFbGVtZW50LCB0b2dnbGVFbGVtZW50LCBzZXRNZW51LCBzZXRUb2dnbGVdKTtcbiAgaWYgKG1lbnVFbGVtZW50ICYmIGxhc3RTaG93ICYmICFzaG93KSB7XG4gICAgZm9jdXNJbkRyb3Bkb3duLmN1cnJlbnQgPSBtZW51RWxlbWVudC5jb250YWlucyhtZW51RWxlbWVudC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuICB9XG4gIGNvbnN0IGZvY3VzVG9nZ2xlID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHRvZ2dsZUVsZW1lbnQgJiYgdG9nZ2xlRWxlbWVudC5mb2N1cykge1xuICAgICAgdG9nZ2xlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IG1heWJlRm9jdXNGaXJzdCA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSBsYXN0U291cmNlRXZlbnQuY3VycmVudDtcbiAgICBsZXQgZm9jdXNUeXBlID0gZm9jdXNGaXJzdEl0ZW1PblNob3c7XG4gICAgaWYgKGZvY3VzVHlwZSA9PSBudWxsKSB7XG4gICAgICBmb2N1c1R5cGUgPSBtZW51UmVmLmN1cnJlbnQgJiYgaXNSb2xlTWVudShtZW51UmVmLmN1cnJlbnQpID8gJ2tleWJvYXJkJyA6IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZm9jdXNUeXBlID09PSBmYWxzZSB8fCBmb2N1c1R5cGUgPT09ICdrZXlib2FyZCcgJiYgIS9ea2V5LiskLy50ZXN0KHR5cGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpcnN0ID0gcXNhKG1lbnVSZWYuY3VycmVudCwgaXRlbVNlbGVjdG9yKVswXTtcbiAgICBpZiAoZmlyc3QgJiYgZmlyc3QuZm9jdXMpIGZpcnN0LmZvY3VzKCk7XG4gIH0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG93KSBtYXliZUZvY3VzRmlyc3QoKTtlbHNlIGlmIChmb2N1c0luRHJvcGRvd24uY3VycmVudCkge1xuICAgICAgZm9jdXNJbkRyb3Bkb3duLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIGZvY3VzVG9nZ2xlKCk7XG4gICAgfVxuICAgIC8vIG9ubHkgYHNob3dgIHNob3VsZCBiZSBjaGFuZ2luZ1xuICB9LCBbc2hvdywgZm9jdXNJbkRyb3Bkb3duLCBmb2N1c1RvZ2dsZSwgbWF5YmVGb2N1c0ZpcnN0XSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGFzdFNvdXJjZUV2ZW50LmN1cnJlbnQgPSBudWxsO1xuICB9KTtcbiAgY29uc3QgZ2V0TmV4dEZvY3VzZWRDaGlsZCA9IChjdXJyZW50LCBvZmZzZXQpID0+IHtcbiAgICBpZiAoIW1lbnVSZWYuY3VycmVudCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgaXRlbXMgPSBxc2EobWVudVJlZi5jdXJyZW50LCBpdGVtU2VsZWN0b3IpO1xuICAgIGxldCBpbmRleCA9IGl0ZW1zLmluZGV4T2YoY3VycmVudCkgKyBvZmZzZXQ7XG4gICAgaW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihpbmRleCwgaXRlbXMubGVuZ3RoKSk7XG4gICAgcmV0dXJuIGl0ZW1zW2luZGV4XTtcbiAgfTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih1c2VDYWxsYmFjaygoKSA9PiB3aW5kb3cuZG9jdW1lbnQsIFt3aW5kb3ddKSwgJ2tleWRvd24nLCBldmVudCA9PiB7XG4gICAgdmFyIF9tZW51UmVmJGN1cnJlbnQsIF90b2dnbGVSZWYkY3VycmVudDtcbiAgICBjb25zdCB7XG4gICAgICBrZXlcbiAgICB9ID0gZXZlbnQ7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IGZyb21NZW51ID0gKF9tZW51UmVmJGN1cnJlbnQgPSBtZW51UmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWVudVJlZiRjdXJyZW50LmNvbnRhaW5zKHRhcmdldCk7XG4gICAgY29uc3QgZnJvbVRvZ2dsZSA9IChfdG9nZ2xlUmVmJGN1cnJlbnQgPSB0b2dnbGVSZWYuY3VycmVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF90b2dnbGVSZWYkY3VycmVudC5jb250YWlucyh0YXJnZXQpO1xuXG4gICAgLy8gU2Vjb25kIG9ubHkgdG8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvOGNmYmY2OTMzYjhhMDE0NmFjM2ZiYzM2OWYxOWU1MjBiZDFlYmRhYy9qcy9zcmMvZHJvcGRvd24uanMjTDQwMFxuICAgIC8vIGluIGluc2NydXRhYmlsaXR5XG4gICAgY29uc3QgaXNJbnB1dCA9IC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QodGFyZ2V0LnRhZ05hbWUpO1xuICAgIGlmIChpc0lucHV0ICYmIChrZXkgPT09ICcgJyB8fCBrZXkgIT09ICdFc2NhcGUnICYmIGZyb21NZW51IHx8IGtleSA9PT0gJ0VzY2FwZScgJiYgdGFyZ2V0LnR5cGUgPT09ICdzZWFyY2gnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWZyb21NZW51ICYmICFmcm9tVG9nZ2xlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChrZXkgPT09ICdUYWInICYmICghbWVudVJlZi5jdXJyZW50IHx8ICFzaG93KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsYXN0U291cmNlRXZlbnQuY3VycmVudCA9IGV2ZW50LnR5cGU7XG4gICAgY29uc3QgbWV0YSA9IHtcbiAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgc291cmNlOiBldmVudC50eXBlXG4gICAgfTtcbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gZ2V0TmV4dEZvY3VzZWRDaGlsZCh0YXJnZXQsIC0xKTtcbiAgICAgICAgICBpZiAobmV4dCAmJiBuZXh0LmZvY3VzKSBuZXh0LmZvY3VzKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghc2hvdykge1xuICAgICAgICAgIG9uVG9nZ2xlKHRydWUsIG1ldGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5leHQgPSBnZXROZXh0Rm9jdXNlZENoaWxkKHRhcmdldCwgMSk7XG4gICAgICAgICAgaWYgKG5leHQgJiYgbmV4dC5mb2N1cykgbmV4dC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgIC8vIG9uIGtleWRvd24gdGhlIHRhcmdldCBpcyB0aGUgZWxlbWVudCBiZWluZyB0YWJiZWQgRlJPTSwgd2UgbmVlZCB0aGF0XG4gICAgICAgIC8vIHRvIGtub3cgaWYgdGhpcyBldmVudCBpcyByZWxldmFudCB0byB0aGlzIGRyb3Bkb3duIChlLmcuIGluIHRoaXMgbWVudSkuXG4gICAgICAgIC8vIE9uIGBrZXl1cGAgdGhlIHRhcmdldCBpcyB0aGUgZWxlbWVudCBiZWluZyB0YWdnZWQgVE8gd2hpY2ggd2UgdXNlIHRvIGNoZWNrXG4gICAgICAgIC8vIGlmIGZvY3VzIGhhcyBsZWZ0IHRoZSBtZW51XG4gICAgICAgIGFkZEV2ZW50TGlzdGVuZXIodGFyZ2V0Lm93bmVyRG9jdW1lbnQsICdrZXl1cCcsIGUgPT4ge1xuICAgICAgICAgIHZhciBfbWVudVJlZiRjdXJyZW50MjtcbiAgICAgICAgICBpZiAoZS5rZXkgPT09ICdUYWInICYmICFlLnRhcmdldCB8fCAhKChfbWVudVJlZiRjdXJyZW50MiA9IG1lbnVSZWYuY3VycmVudCkgIT0gbnVsbCAmJiBfbWVudVJlZiRjdXJyZW50Mi5jb250YWlucyhlLnRhcmdldCkpKSB7XG4gICAgICAgICAgICBvblRvZ2dsZShmYWxzZSwgbWV0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICBpZiAoa2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgb25Ub2dnbGUoZmFsc2UsIG1ldGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFNlbGVjdGFibGVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGhhbmRsZVNlbGVjdCxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goRHJvcGRvd25Db250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZTogY29udGV4dCxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pXG4gIH0pO1xufVxuRHJvcGRvd24uZGlzcGxheU5hbWUgPSAnRHJvcGRvd24nO1xuRHJvcGRvd24uTWVudSA9IERyb3Bkb3duTWVudTtcbkRyb3Bkb3duLlRvZ2dsZSA9IERyb3Bkb3duVG9nZ2xlO1xuRHJvcGRvd24uSXRlbSA9IERyb3Bkb3duSXRlbTtcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duOyIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJy4vdXNlRXZlbnRDYWxsYmFjayc7XG5cbi8qKlxuICogQXR0YWNoZXMgYW4gZXZlbnQgaGFuZGxlciBvdXRzaWRlIGRpcmVjdGx5IHRvIHNwZWNpZmllZCBET00gZWxlbWVudFxuICogYnlwYXNzaW5nIHRoZSByZWFjdCBzeW50aGV0aWMgZXZlbnQgc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IFRoZSB0YXJnZXQgdG8gbGlzdGVuIGZvciBldmVudHMgb25cbiAqIEBwYXJhbSBldmVudCBUaGUgRE9NIGV2ZW50IG5hbWVcbiAqIEBwYXJhbSBoYW5kbGVyIEFuIGV2ZW50IGhhbmRsZXJcbiAqIEBwYXJhbSBjYXB0dXJlIFdoZXRoZXIgb3Igbm90IHRvIGxpc3RlbiBkdXJpbmcgdGhlIGNhcHR1cmUgZXZlbnQgcGhhc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRXZlbnRMaXN0ZW5lcihldmVudFRhcmdldCwgZXZlbnQsIGxpc3RlbmVyLCBjYXB0dXJlKSB7XG4gIGlmIChjYXB0dXJlID09PSB2b2lkIDApIHtcbiAgICBjYXB0dXJlID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaGFuZGxlciA9IHVzZUV2ZW50Q2FsbGJhY2sobGlzdGVuZXIpO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHZhciB0YXJnZXQgPSB0eXBlb2YgZXZlbnRUYXJnZXQgPT09ICdmdW5jdGlvbicgPyBldmVudFRhcmdldCgpIDogZXZlbnRUYXJnZXQ7XG4gICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUpO1xuICAgIH07XG4gIH0sIFtldmVudFRhcmdldF0pO1xufSIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IERyb3Bkb3duQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbkRyb3Bkb3duQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bkNvbnRleHQnO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25Db250ZXh0OyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRHJvcGRvd25JdGVtIH0gZnJvbSAnQHJlc3RhcnQvdWkvRHJvcGRvd25JdGVtJztcbmltcG9ydCBBbmNob3IgZnJvbSAnQHJlc3RhcnQvdWkvQW5jaG9yJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgRHJvcGRvd25JdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgZXZlbnRLZXksXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIG9uQ2xpY2ssXG4gIGFjdGl2ZSxcbiAgYXM6IENvbXBvbmVudCA9IEFuY2hvcixcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdkcm9wZG93bi1pdGVtJyk7XG4gIGNvbnN0IFtkcm9wZG93bkl0ZW1Qcm9wcywgbWV0YV0gPSB1c2VEcm9wZG93bkl0ZW0oe1xuICAgIGtleTogZXZlbnRLZXksXG4gICAgaHJlZjogcHJvcHMuaHJlZixcbiAgICBkaXNhYmxlZCxcbiAgICBvbkNsaWNrLFxuICAgIGFjdGl2ZVxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIC4uLnByb3BzLFxuICAgIC4uLmRyb3Bkb3duSXRlbVByb3BzLFxuICAgIHJlZjogcmVmLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHByZWZpeCwgbWV0YS5pc0FjdGl2ZSAmJiAnYWN0aXZlJywgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJylcbiAgfSk7XG59KTtcbkRyb3Bkb3duSXRlbS5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bkl0ZW0nO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25JdGVtOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IGNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmNvbnRleHQuZGlzcGxheU5hbWUgPSAnSW5wdXRHcm91cENvbnRleHQnO1xuZXhwb3J0IGRlZmF1bHQgY29udGV4dDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbi8vIFRPRE86IGNoZWNrXG5cbmNvbnN0IGNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmNvbnRleHQuZGlzcGxheU5hbWUgPSAnTmF2YmFyQ29udGV4dCc7XG5leHBvcnQgZGVmYXVsdCBjb250ZXh0OyIsImltcG9ydCBpbnZhcmlhbnQgZnJvbSAnaW52YXJpYW50JztcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1lcmdlZFJlZnMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTWVyZ2VkUmVmcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VXcmFwcGVkUmVmV2l0aFdhcm5pbmcocmVmLCBjb21wb25lbnROYW1lKSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgaWYgKCEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkgcmV0dXJuIHJlZjtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgY29uc3Qgd2FybmluZ1JlZiA9IHVzZUNhbGxiYWNrKHJlZlZhbHVlID0+IHtcbiAgICAhKHJlZlZhbHVlID09IG51bGwgfHwgIXJlZlZhbHVlLmlzUmVhY3RDb21wb25lbnQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBgJHtjb21wb25lbnROYW1lfSBpbmplY3RlZCBhIHJlZiB0byBhIHByb3ZpZGVkIFxcYGFzXFxgIGNvbXBvbmVudCB0aGF0IHJlc29sdmVkIHRvIGEgY29tcG9uZW50IGluc3RhbmNlIGluc3RlYWQgb2YgYSBET00gZWxlbWVudC4gYCArICdVc2UgYFJlYWN0LmZvcndhcmRSZWZgIHRvIHByb3ZpZGUgdGhlIGluamVjdGVkIHJlZiB0byB0aGUgY2xhc3MgY29tcG9uZW50IGFzIGEgcHJvcCBpbiBvcmRlciB0byBwYXNzIGl0IGRpcmVjdGx5IHRvIGEgRE9NIGVsZW1lbnQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIH0sIFtjb21wb25lbnROYW1lXSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICByZXR1cm4gdXNlTWVyZ2VkUmVmcyh3YXJuaW5nUmVmLCByZWYpO1xufSIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZURyb3Bkb3duTWVudSB9IGZyb20gJ0ByZXN0YXJ0L3VpL0Ryb3Bkb3duTWVudSc7XG5pbXBvcnQgdXNlSXNvbW9ycGhpY0VmZmVjdCBmcm9tICdAcmVzdGFydC9ob29rcy91c2VJc29tb3JwaGljRWZmZWN0JztcbmltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAnd2FybmluZyc7XG5pbXBvcnQgRHJvcGRvd25Db250ZXh0IGZyb20gJy4vRHJvcGRvd25Db250ZXh0JztcbmltcG9ydCBJbnB1dEdyb3VwQ29udGV4dCBmcm9tICcuL0lucHV0R3JvdXBDb250ZXh0JztcbmltcG9ydCBOYXZiYXJDb250ZXh0IGZyb20gJy4vTmF2YmFyQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHVzZVdyYXBwZWRSZWZXaXRoV2FybmluZyBmcm9tICcuL3VzZVdyYXBwZWRSZWZXaXRoV2FybmluZyc7XG5pbXBvcnQgeyBhbGlnblByb3BUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGZ1bmN0aW9uIGdldERyb3Bkb3duTWVudVBsYWNlbWVudChhbGlnbkVuZCwgZHJvcERpcmVjdGlvbiwgaXNSVEwpIHtcbiAgY29uc3QgdG9wU3RhcnQgPSBpc1JUTCA/ICd0b3AtZW5kJyA6ICd0b3Atc3RhcnQnO1xuICBjb25zdCB0b3BFbmQgPSBpc1JUTCA/ICd0b3Atc3RhcnQnIDogJ3RvcC1lbmQnO1xuICBjb25zdCBib3R0b21TdGFydCA9IGlzUlRMID8gJ2JvdHRvbS1lbmQnIDogJ2JvdHRvbS1zdGFydCc7XG4gIGNvbnN0IGJvdHRvbUVuZCA9IGlzUlRMID8gJ2JvdHRvbS1zdGFydCcgOiAnYm90dG9tLWVuZCc7XG4gIGNvbnN0IGxlZnRTdGFydCA9IGlzUlRMID8gJ3JpZ2h0LXN0YXJ0JyA6ICdsZWZ0LXN0YXJ0JztcbiAgY29uc3QgbGVmdEVuZCA9IGlzUlRMID8gJ3JpZ2h0LWVuZCcgOiAnbGVmdC1lbmQnO1xuICBjb25zdCByaWdodFN0YXJ0ID0gaXNSVEwgPyAnbGVmdC1zdGFydCcgOiAncmlnaHQtc3RhcnQnO1xuICBjb25zdCByaWdodEVuZCA9IGlzUlRMID8gJ2xlZnQtZW5kJyA6ICdyaWdodC1lbmQnO1xuICBsZXQgcGxhY2VtZW50ID0gYWxpZ25FbmQgPyBib3R0b21FbmQgOiBib3R0b21TdGFydDtcbiAgaWYgKGRyb3BEaXJlY3Rpb24gPT09ICd1cCcpIHBsYWNlbWVudCA9IGFsaWduRW5kID8gdG9wRW5kIDogdG9wU3RhcnQ7ZWxzZSBpZiAoZHJvcERpcmVjdGlvbiA9PT0gJ2VuZCcpIHBsYWNlbWVudCA9IGFsaWduRW5kID8gcmlnaHRFbmQgOiByaWdodFN0YXJ0O2Vsc2UgaWYgKGRyb3BEaXJlY3Rpb24gPT09ICdzdGFydCcpIHBsYWNlbWVudCA9IGFsaWduRW5kID8gbGVmdEVuZCA6IGxlZnRTdGFydDtlbHNlIGlmIChkcm9wRGlyZWN0aW9uID09PSAnZG93bi1jZW50ZXJlZCcpIHBsYWNlbWVudCA9ICdib3R0b20nO2Vsc2UgaWYgKGRyb3BEaXJlY3Rpb24gPT09ICd1cC1jZW50ZXJlZCcpIHBsYWNlbWVudCA9ICd0b3AnO1xuICByZXR1cm4gcGxhY2VtZW50O1xufVxuY29uc3QgRHJvcGRvd25NZW51ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgYWxpZ24sXG4gIHJvb3RDbG9zZUV2ZW50LFxuICBmbGlwID0gdHJ1ZSxcbiAgc2hvdzogc2hvd1Byb3BzLFxuICByZW5kZXJPbk1vdW50LFxuICAvLyBOZWVkIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBcImFzXCIgZHVyaW5nIHByb3AgZGVzdHJ1Y3R1cmluZyB0byBiZSBjb21wYXRpYmxlIHdpdGggc3R5bGVkLWNvbXBvbmVudHMgZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3QtYm9vdHN0cmFwL2lzc3Vlcy8zNTk1XG4gIGFzOiBDb21wb25lbnQgPSAnZGl2JyxcbiAgcG9wcGVyQ29uZmlnLFxuICB2YXJpYW50LFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGxldCBhbGlnbkVuZCA9IGZhbHNlO1xuICBjb25zdCBpc05hdmJhciA9IHVzZUNvbnRleHQoTmF2YmFyQ29udGV4dCk7XG4gIGNvbnN0IHByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ2Ryb3Bkb3duLW1lbnUnKTtcbiAgY29uc3Qge1xuICAgIGFsaWduOiBjb250ZXh0QWxpZ24sXG4gICAgZHJvcCxcbiAgICBpc1JUTFxuICB9ID0gdXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpO1xuICBhbGlnbiA9IGFsaWduIHx8IGNvbnRleHRBbGlnbjtcbiAgY29uc3QgaXNJbnB1dEdyb3VwID0gdXNlQ29udGV4dChJbnB1dEdyb3VwQ29udGV4dCk7XG4gIGNvbnN0IGFsaWduQ2xhc3NlcyA9IFtdO1xuICBpZiAoYWxpZ24pIHtcbiAgICBpZiAodHlwZW9mIGFsaWduID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGFsaWduKTtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoa2V5cy5sZW5ndGggPT09IDEsICdUaGVyZSBzaG91bGQgb25seSBiZSAxIGJyZWFrcG9pbnQgd2hlbiBwYXNzaW5nIGFuIG9iamVjdCB0byBgYWxpZ25gJykgOiB2b2lkIDA7XG4gICAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYnJrUG9pbnQgPSBrZXlzWzBdO1xuICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBhbGlnblticmtQb2ludF07XG5cbiAgICAgICAgLy8gLmRyb3Bkb3duLW1lbnUtZW5kIGlzIHJlcXVpcmVkIGZvciByZXNwb25zaXZlbHkgYWxpZ25pbmdcbiAgICAgICAgLy8gbGVmdCBpbiBhZGRpdGlvbiB0byBhbGlnbiBsZWZ0IGNsYXNzZXMuXG4gICAgICAgIGFsaWduRW5kID0gZGlyZWN0aW9uID09PSAnc3RhcnQnO1xuICAgICAgICBhbGlnbkNsYXNzZXMucHVzaChgJHtwcmVmaXh9LSR7YnJrUG9pbnR9LSR7ZGlyZWN0aW9ufWApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYWxpZ24gPT09ICdlbmQnKSB7XG4gICAgICBhbGlnbkVuZCA9IHRydWU7XG4gICAgfVxuICB9XG4gIGNvbnN0IHBsYWNlbWVudCA9IGdldERyb3Bkb3duTWVudVBsYWNlbWVudChhbGlnbkVuZCwgZHJvcCwgaXNSVEwpO1xuICBjb25zdCBbbWVudVByb3BzLCB7XG4gICAgaGFzU2hvd24sXG4gICAgcG9wcGVyLFxuICAgIHNob3csXG4gICAgdG9nZ2xlXG4gIH1dID0gdXNlRHJvcGRvd25NZW51KHtcbiAgICBmbGlwLFxuICAgIHJvb3RDbG9zZUV2ZW50LFxuICAgIHNob3c6IHNob3dQcm9wcyxcbiAgICB1c2VQb3BwZXI6ICFpc05hdmJhciAmJiBhbGlnbkNsYXNzZXMubGVuZ3RoID09PSAwLFxuICAgIG9mZnNldDogWzAsIDJdLFxuICAgIHBvcHBlckNvbmZpZyxcbiAgICBwbGFjZW1lbnRcbiAgfSk7XG4gIG1lbnVQcm9wcy5yZWYgPSB1c2VNZXJnZWRSZWZzKHVzZVdyYXBwZWRSZWZXaXRoV2FybmluZyhyZWYsICdEcm9wZG93bk1lbnUnKSwgbWVudVByb3BzLnJlZik7XG4gIHVzZUlzb21vcnBoaWNFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFBvcHBlcidzIGluaXRpYWwgcG9zaXRpb24gZm9yIHRoZSBtZW51IGlzIGluY29ycmVjdCB3aGVuXG4gICAgLy8gcmVuZGVyT25Nb3VudD10cnVlLiBOZWVkIHRvIGNhbGwgdXBkYXRlKCkgdG8gY29ycmVjdCBpdC5cbiAgICBpZiAoc2hvdykgcG9wcGVyID09IG51bGwgPyB2b2lkIDAgOiBwb3BwZXIudXBkYXRlKCk7XG4gIH0sIFtzaG93XSk7XG4gIGlmICghaGFzU2hvd24gJiYgIXJlbmRlck9uTW91bnQgJiYgIWlzSW5wdXRHcm91cCkgcmV0dXJuIG51bGw7XG5cbiAgLy8gRm9yIGN1c3RvbSBjb21wb25lbnRzIHByb3ZpZGUgYWRkaXRpb25hbCwgbm9uLURPTSwgcHJvcHM7XG4gIGlmICh0eXBlb2YgQ29tcG9uZW50ICE9PSAnc3RyaW5nJykge1xuICAgIG1lbnVQcm9wcy5zaG93ID0gc2hvdztcbiAgICBtZW51UHJvcHMuY2xvc2UgPSAoKSA9PiB0b2dnbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHRvZ2dsZShmYWxzZSk7XG4gICAgbWVudVByb3BzLmFsaWduID0gYWxpZ247XG4gIH1cbiAgbGV0IHN0eWxlID0gcHJvcHMuc3R5bGU7XG4gIGlmIChwb3BwZXIgIT0gbnVsbCAmJiBwb3BwZXIucGxhY2VtZW50KSB7XG4gICAgLy8gd2UgZG9uJ3QgbmVlZCB0aGUgZGVmYXVsdCBwb3BwZXIgc3R5bGUsXG4gICAgLy8gbWVudXMgYXJlIGRpc3BsYXk6IG5vbmUgd2hlbiBub3Qgc2hvd24uXG4gICAgc3R5bGUgPSB7XG4gICAgICAuLi5wcm9wcy5zdHlsZSxcbiAgICAgIC4uLm1lbnVQcm9wcy5zdHlsZVxuICAgIH07XG4gICAgcHJvcHNbJ3gtcGxhY2VtZW50J10gPSBwb3BwZXIucGxhY2VtZW50O1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAuLi5wcm9wcyxcbiAgICAuLi5tZW51UHJvcHMsXG4gICAgc3R5bGU6IHN0eWxlXG4gICAgLy8gQm9vdHN0cmFwIGNzcyByZXF1aXJlcyB0aGlzIGRhdGEgYXR0cmliIHRvIHN0eWxlIHJlc3BvbnNpdmUgbWVudXMuXG4gICAgLFxuICAgIC4uLigoYWxpZ25DbGFzc2VzLmxlbmd0aCB8fCBpc05hdmJhcikgJiYge1xuICAgICAgJ2RhdGEtYnMtcG9wcGVyJzogJ3N0YXRpYydcbiAgICB9KSxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBwcmVmaXgsIHNob3cgJiYgJ3Nob3cnLCBhbGlnbkVuZCAmJiBgJHtwcmVmaXh9LWVuZGAsIHZhcmlhbnQgJiYgYCR7cHJlZml4fS0ke3ZhcmlhbnR9YCwgLi4uYWxpZ25DbGFzc2VzKVxuICB9KTtcbn0pO1xuRHJvcGRvd25NZW51LmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duTWVudSc7XG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bk1lbnU7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VCdXR0b25Qcm9wcyB9IGZyb20gJ0ByZXN0YXJ0L3VpL0J1dHRvbic7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IEJ1dHRvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGFzLFxuICBic1ByZWZpeCxcbiAgdmFyaWFudCA9ICdwcmltYXJ5JyxcbiAgc2l6ZSxcbiAgYWN0aXZlID0gZmFsc2UsXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdidG4nKTtcbiAgY29uc3QgW2J1dHRvblByb3BzLCB7XG4gICAgdGFnTmFtZVxuICB9XSA9IHVzZUJ1dHRvblByb3BzKHtcbiAgICB0YWdOYW1lOiBhcyxcbiAgICBkaXNhYmxlZCxcbiAgICAuLi5wcm9wc1xuICB9KTtcbiAgY29uc3QgQ29tcG9uZW50ID0gdGFnTmFtZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIC4uLmJ1dHRvblByb3BzLFxuICAgIC4uLnByb3BzLFxuICAgIHJlZjogcmVmLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBwcmVmaXgsIGFjdGl2ZSAmJiAnYWN0aXZlJywgdmFyaWFudCAmJiBgJHtwcmVmaXh9LSR7dmFyaWFudH1gLCBzaXplICYmIGAke3ByZWZpeH0tJHtzaXplfWAsIHByb3BzLmhyZWYgJiYgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJylcbiAgfSk7XG59KTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9ICdCdXR0b24nO1xuZXhwb3J0IGRlZmF1bHQgQnV0dG9uOyIsImltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuaW1wb3J0IERyb3Bkb3duQ29udGV4dCBmcm9tICdAcmVzdGFydC91aS9Ecm9wZG93bkNvbnRleHQnO1xuaW1wb3J0IHsgdXNlRHJvcGRvd25Ub2dnbGUgfSBmcm9tICdAcmVzdGFydC91aS9Ecm9wZG93blRvZ2dsZSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgdXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nIGZyb20gJy4vdXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBEcm9wZG93blRvZ2dsZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBzcGxpdCxcbiAgY2xhc3NOYW1lLFxuICBjaGlsZEJzUHJlZml4LFxuICAvLyBOZWVkIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBcImFzXCIgZHVyaW5nIHByb3AgZGVzdHJ1Y3R1cmluZyB0byBiZSBjb21wYXRpYmxlIHdpdGggc3R5bGVkLWNvbXBvbmVudHMgZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3QtYm9vdHN0cmFwL2lzc3Vlcy8zNTk1XG4gIGFzOiBDb21wb25lbnQgPSBCdXR0b24sXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgcHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnZHJvcGRvd24tdG9nZ2xlJyk7XG4gIGNvbnN0IGRyb3Bkb3duQ29udGV4dCA9IHVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KTtcbiAgaWYgKGNoaWxkQnNQcmVmaXggIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3BzLmJzUHJlZml4ID0gY2hpbGRCc1ByZWZpeDtcbiAgfVxuICBjb25zdCBbdG9nZ2xlUHJvcHNdID0gdXNlRHJvcGRvd25Ub2dnbGUoKTtcbiAgdG9nZ2xlUHJvcHMucmVmID0gdXNlTWVyZ2VkUmVmcyh0b2dnbGVQcm9wcy5yZWYsIHVzZVdyYXBwZWRSZWZXaXRoV2FybmluZyhyZWYsICdEcm9wZG93blRvZ2dsZScpKTtcblxuICAvLyBUaGlzIGludGVudGlvbmFsbHkgZm9yd2FyZHMgc2l6ZSBhbmQgdmFyaWFudCAoaWYgc2V0KSB0byB0aGVcbiAgLy8gdW5kZXJseWluZyBjb21wb25lbnQsIHRvIGFsbG93IGl0IHRvIHJlbmRlciBzaXplIGFuZCBzdHlsZSB2YXJpYW50cy5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHByZWZpeCwgc3BsaXQgJiYgYCR7cHJlZml4fS1zcGxpdGAsIChkcm9wZG93bkNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGRyb3Bkb3duQ29udGV4dC5zaG93KSAmJiAnc2hvdycpLFxuICAgIC4uLnRvZ2dsZVByb3BzLFxuICAgIC4uLnByb3BzXG4gIH0pO1xufSk7XG5Ecm9wZG93blRvZ2dsZS5kaXNwbGF5TmFtZSA9ICdEcm9wZG93blRvZ2dsZSc7XG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blRvZ2dsZTsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmFzZURyb3Bkb3duIGZyb20gJ0ByZXN0YXJ0L3VpL0Ryb3Bkb3duJztcbmltcG9ydCB7IHVzZVVuY29udHJvbGxlZCB9IGZyb20gJ3VuY29udHJvbGxhYmxlJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IERyb3Bkb3duQ29udGV4dCBmcm9tICcuL0Ryb3Bkb3duQ29udGV4dCc7XG5pbXBvcnQgRHJvcGRvd25JdGVtIGZyb20gJy4vRHJvcGRvd25JdGVtJztcbmltcG9ydCBEcm9wZG93bk1lbnUsIHsgZ2V0RHJvcGRvd25NZW51UGxhY2VtZW50IH0gZnJvbSAnLi9Ecm9wZG93bk1lbnUnO1xuaW1wb3J0IERyb3Bkb3duVG9nZ2xlIGZyb20gJy4vRHJvcGRvd25Ub2dnbGUnO1xuaW1wb3J0IElucHV0R3JvdXBDb250ZXh0IGZyb20gJy4vSW5wdXRHcm91cENvbnRleHQnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4LCB1c2VJc1JUTCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgY3JlYXRlV2l0aEJzUHJlZml4IGZyb20gJy4vY3JlYXRlV2l0aEJzUHJlZml4JztcbmltcG9ydCB7IGFsaWduUHJvcFR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBEcm9wZG93bkhlYWRlciA9IGNyZWF0ZVdpdGhCc1ByZWZpeCgnZHJvcGRvd24taGVhZGVyJywge1xuICBkZWZhdWx0UHJvcHM6IHtcbiAgICByb2xlOiAnaGVhZGluZydcbiAgfVxufSk7XG5jb25zdCBEcm9wZG93bkRpdmlkZXIgPSBjcmVhdGVXaXRoQnNQcmVmaXgoJ2Ryb3Bkb3duLWRpdmlkZXInLCB7XG4gIENvbXBvbmVudDogJ2hyJyxcbiAgZGVmYXVsdFByb3BzOiB7XG4gICAgcm9sZTogJ3NlcGFyYXRvcidcbiAgfVxufSk7XG5jb25zdCBEcm9wZG93bkl0ZW1UZXh0ID0gY3JlYXRlV2l0aEJzUHJlZml4KCdkcm9wZG93bi1pdGVtLXRleHQnLCB7XG4gIENvbXBvbmVudDogJ3NwYW4nXG59KTtcbmNvbnN0IERyb3Bkb3duID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHBQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBic1ByZWZpeCxcbiAgICBkcm9wID0gJ2Rvd24nLFxuICAgIHNob3csXG4gICAgY2xhc3NOYW1lLFxuICAgIGFsaWduID0gJ3N0YXJ0JyxcbiAgICBvblNlbGVjdCxcbiAgICBvblRvZ2dsZSxcbiAgICBmb2N1c0ZpcnN0SXRlbU9uU2hvdyxcbiAgICAvLyBOZWVkIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBcImFzXCIgZHVyaW5nIHByb3AgZGVzdHJ1Y3R1cmluZyB0byBiZSBjb21wYXRpYmxlIHdpdGggc3R5bGVkLWNvbXBvbmVudHMgZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3QtYm9vdHN0cmFwL2lzc3Vlcy8zNTk1XG4gICAgYXM6IENvbXBvbmVudCA9ICdkaXYnLFxuICAgIG5hdmJhcjogXzQsXG4gICAgYXV0b0Nsb3NlID0gdHJ1ZSxcbiAgICAuLi5wcm9wc1xuICB9ID0gdXNlVW5jb250cm9sbGVkKHBQcm9wcywge1xuICAgIHNob3c6ICdvblRvZ2dsZSdcbiAgfSk7XG4gIGNvbnN0IGlzSW5wdXRHcm91cCA9IHVzZUNvbnRleHQoSW5wdXRHcm91cENvbnRleHQpO1xuICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdkcm9wZG93bicpO1xuICBjb25zdCBpc1JUTCA9IHVzZUlzUlRMKCk7XG4gIGNvbnN0IGlzQ2xvc2luZ1Blcm1pdHRlZCA9IHNvdXJjZSA9PiB7XG4gICAgLy8gYXV0b0Nsb3NlPWZhbHNlIG9ubHkgcGVybWl0cyBjbG9zZSBvbiBidXR0b24gY2xpY2tcbiAgICBpZiAoYXV0b0Nsb3NlID09PSBmYWxzZSkgcmV0dXJuIHNvdXJjZSA9PT0gJ2NsaWNrJztcblxuICAgIC8vIGF1dG9DbG9zZT1pbnNpZGUgZG9lc24ndCBwZXJtaXQgY2xvc2Ugb24gcm9vdENsb3NlXG4gICAgaWYgKGF1dG9DbG9zZSA9PT0gJ2luc2lkZScpIHJldHVybiBzb3VyY2UgIT09ICdyb290Q2xvc2UnO1xuXG4gICAgLy8gYXV0b0Nsb3NlPW91dHNpZGUgZG9lc24ndCBwZXJtaXQgY2xvc2Ugb24gc2VsZWN0XG4gICAgaWYgKGF1dG9DbG9zZSA9PT0gJ291dHNpZGUnKSByZXR1cm4gc291cmNlICE9PSAnc2VsZWN0JztcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlVG9nZ2xlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dFNob3csIG1ldGEpID0+IHtcbiAgICBpZiAobWV0YS5vcmlnaW5hbEV2ZW50LmN1cnJlbnRUYXJnZXQgPT09IGRvY3VtZW50ICYmIChtZXRhLnNvdXJjZSAhPT0gJ2tleWRvd24nIHx8IG1ldGEub3JpZ2luYWxFdmVudC5rZXkgPT09ICdFc2NhcGUnKSkgbWV0YS5zb3VyY2UgPSAncm9vdENsb3NlJztcbiAgICBpZiAoaXNDbG9zaW5nUGVybWl0dGVkKG1ldGEuc291cmNlKSkgb25Ub2dnbGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uVG9nZ2xlKG5leHRTaG93LCBtZXRhKTtcbiAgfSk7XG4gIGNvbnN0IGFsaWduRW5kID0gYWxpZ24gPT09ICdlbmQnO1xuICBjb25zdCBwbGFjZW1lbnQgPSBnZXREcm9wZG93bk1lbnVQbGFjZW1lbnQoYWxpZ25FbmQsIGRyb3AsIGlzUlRMKTtcbiAgY29uc3QgY29udGV4dFZhbHVlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIGFsaWduLFxuICAgIGRyb3AsXG4gICAgaXNSVExcbiAgfSksIFthbGlnbiwgZHJvcCwgaXNSVExdKTtcbiAgY29uc3QgZGlyZWN0aW9uQ2xhc3NlcyA9IHtcbiAgICBkb3duOiBwcmVmaXgsXG4gICAgJ2Rvd24tY2VudGVyZWQnOiBgJHtwcmVmaXh9LWNlbnRlcmAsXG4gICAgdXA6ICdkcm9wdXAnLFxuICAgICd1cC1jZW50ZXJlZCc6ICdkcm9wdXAtY2VudGVyIGRyb3B1cCcsXG4gICAgZW5kOiAnZHJvcGVuZCcsXG4gICAgc3RhcnQ6ICdkcm9wc3RhcnQnXG4gIH07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChEcm9wZG93bkNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dFZhbHVlLFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChCYXNlRHJvcGRvd24sIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgc2hvdzogc2hvdyxcbiAgICAgIG9uU2VsZWN0OiBvblNlbGVjdCxcbiAgICAgIG9uVG9nZ2xlOiBoYW5kbGVUb2dnbGUsXG4gICAgICBmb2N1c0ZpcnN0SXRlbU9uU2hvdzogZm9jdXNGaXJzdEl0ZW1PblNob3csXG4gICAgICBpdGVtU2VsZWN0b3I6IGAuJHtwcmVmaXh9LWl0ZW06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZClgLFxuICAgICAgY2hpbGRyZW46IGlzSW5wdXRHcm91cCA/IHByb3BzLmNoaWxkcmVuIDogLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICByZWY6IHJlZixcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgc2hvdyAmJiAnc2hvdycsIGRpcmVjdGlvbkNsYXNzZXNbZHJvcF0pXG4gICAgICB9KVxuICAgIH0pXG4gIH0pO1xufSk7XG5Ecm9wZG93bi5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bic7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKERyb3Bkb3duLCB7XG4gIFRvZ2dsZTogRHJvcGRvd25Ub2dnbGUsXG4gIE1lbnU6IERyb3Bkb3duTWVudSxcbiAgSXRlbTogRHJvcGRvd25JdGVtLFxuICBJdGVtVGV4dDogRHJvcGRvd25JdGVtVGV4dCxcbiAgRGl2aWRlcjogRHJvcGRvd25EaXZpZGVyLFxuICBIZWFkZXI6IERyb3Bkb3duSGVhZGVyXG59KTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBUYWJDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5leHBvcnQgZGVmYXVsdCBUYWJDb250ZXh0OyIsImNvbnN0IF9leGNsdWRlZCA9IFtcImFzXCIsIFwiYWN0aXZlXCIsIFwiZXZlbnRLZXlcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgTmF2Q29udGV4dCBmcm9tICcuL05hdkNvbnRleHQnO1xuaW1wb3J0IFNlbGVjdGFibGVDb250ZXh0LCB7IG1ha2VFdmVudEtleSB9IGZyb20gJy4vU2VsZWN0YWJsZUNvbnRleHQnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBkYXRhQXR0ciB9IGZyb20gJy4vRGF0YUtleSc7XG5pbXBvcnQgVGFiQ29udGV4dCBmcm9tICcuL1RhYkNvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VOYXZJdGVtKHtcbiAga2V5LFxuICBvbkNsaWNrLFxuICBhY3RpdmUsXG4gIGlkLFxuICByb2xlLFxuICBkaXNhYmxlZFxufSkge1xuICBjb25zdCBwYXJlbnRPblNlbGVjdCA9IHVzZUNvbnRleHQoU2VsZWN0YWJsZUNvbnRleHQpO1xuICBjb25zdCBuYXZDb250ZXh0ID0gdXNlQ29udGV4dChOYXZDb250ZXh0KTtcbiAgY29uc3QgdGFiQ29udGV4dCA9IHVzZUNvbnRleHQoVGFiQ29udGV4dCk7XG4gIGxldCBpc0FjdGl2ZSA9IGFjdGl2ZTtcbiAgY29uc3QgcHJvcHMgPSB7XG4gICAgcm9sZVxuICB9O1xuICBpZiAobmF2Q29udGV4dCkge1xuICAgIGlmICghcm9sZSAmJiBuYXZDb250ZXh0LnJvbGUgPT09ICd0YWJsaXN0JykgcHJvcHMucm9sZSA9ICd0YWInO1xuICAgIGNvbnN0IGNvbnRleHRDb250cm9sbGVySWQgPSBuYXZDb250ZXh0LmdldENvbnRyb2xsZXJJZChrZXkgIT0gbnVsbCA/IGtleSA6IG51bGwpO1xuICAgIGNvbnN0IGNvbnRleHRDb250cm9sbGVkSWQgPSBuYXZDb250ZXh0LmdldENvbnRyb2xsZWRJZChrZXkgIT0gbnVsbCA/IGtleSA6IG51bGwpO1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHByb3BzW2RhdGFBdHRyKCdldmVudC1rZXknKV0gPSBrZXk7XG4gICAgcHJvcHMuaWQgPSBjb250ZXh0Q29udHJvbGxlcklkIHx8IGlkO1xuICAgIGlzQWN0aXZlID0gYWN0aXZlID09IG51bGwgJiYga2V5ICE9IG51bGwgPyBuYXZDb250ZXh0LmFjdGl2ZUtleSA9PT0ga2V5IDogYWN0aXZlO1xuXG4gICAgLyoqXG4gICAgICogU2ltcGxpZmllZCBzY2VuYXJpbyBmb3IgYG1vdW50T25FbnRlcmAuXG4gICAgICpcbiAgICAgKiBXaGlsZSBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGtlZXAgJ2FyaWEtY29udHJvbHMnIGZvciB0YWJzIHRoYXQgaGF2ZSBiZWVuIG1vdW50ZWQgYXQgbGVhc3RcbiAgICAgKiBvbmNlLCBpdCB3b3VsZCBhbHNvIGNvbXBsaWNhdGUgdGhlIGNvZGUgcXVpdGUgYSBiaXQsIGZvciB2ZXJ5IGxpdHRsZSBnYWluLlxuICAgICAqIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gaXMgcHJvYmFibHkgZ29vZCBlbm91Z2guXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdC1yZXN0YXJ0L3VpL3B1bGwvNDAjaXNzdWVjb21tZW50LTEwMDk5NzE1NjFcbiAgICAgKi9cbiAgICBpZiAoaXNBY3RpdmUgfHwgISh0YWJDb250ZXh0ICE9IG51bGwgJiYgdGFiQ29udGV4dC51bm1vdW50T25FeGl0KSAmJiAhKHRhYkNvbnRleHQgIT0gbnVsbCAmJiB0YWJDb250ZXh0Lm1vdW50T25FbnRlcikpIHByb3BzWydhcmlhLWNvbnRyb2xzJ10gPSBjb250ZXh0Q29udHJvbGxlZElkO1xuICB9XG4gIGlmIChwcm9wcy5yb2xlID09PSAndGFiJykge1xuICAgIHByb3BzWydhcmlhLXNlbGVjdGVkJ10gPSBpc0FjdGl2ZTtcbiAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICBwcm9wcy50YWJJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIHByb3BzLnRhYkluZGV4ID0gLTE7XG4gICAgICBwcm9wc1snYXJpYS1kaXNhYmxlZCddID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcHJvcHMub25DbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soZSA9PiB7XG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm47XG4gICAgb25DbGljayA9PSBudWxsID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICBpZiAoa2V5ID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHBhcmVudE9uU2VsZWN0ICYmICFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgIHBhcmVudE9uU2VsZWN0KGtleSwgZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIFtwcm9wcywge1xuICAgIGlzQWN0aXZlXG4gIH1dO1xufVxuY29uc3QgTmF2SXRlbSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChfcmVmLCByZWYpID0+IHtcbiAgbGV0IHtcbiAgICAgIGFzOiBDb21wb25lbnQgPSBCdXR0b24sXG4gICAgICBhY3RpdmUsXG4gICAgICBldmVudEtleVxuICAgIH0gPSBfcmVmLFxuICAgIG9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBbcHJvcHMsIG1ldGFdID0gdXNlTmF2SXRlbShPYmplY3QuYXNzaWduKHtcbiAgICBrZXk6IG1ha2VFdmVudEtleShldmVudEtleSwgb3B0aW9ucy5ocmVmKSxcbiAgICBhY3RpdmVcbiAgfSwgb3B0aW9ucykpO1xuXG4gIC8vIEB0cy1pZ25vcmVcbiAgcHJvcHNbZGF0YUF0dHIoJ2FjdGl2ZScpXSA9IG1ldGEuaXNBY3RpdmU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMsIHByb3BzLCB7XG4gICAgcmVmOiByZWZcbiAgfSkpO1xufSk7XG5OYXZJdGVtLmRpc3BsYXlOYW1lID0gJ05hdkl0ZW0nO1xuZXhwb3J0IGRlZmF1bHQgTmF2SXRlbTsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBBbmNob3IgZnJvbSAnQHJlc3RhcnQvdWkvQW5jaG9yJztcbmltcG9ydCB7IHVzZU5hdkl0ZW0gfSBmcm9tICdAcmVzdGFydC91aS9OYXZJdGVtJztcbmltcG9ydCB7IG1ha2VFdmVudEtleSB9IGZyb20gJ0ByZXN0YXJ0L3VpL1NlbGVjdGFibGVDb250ZXh0JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgTmF2TGluayA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIGFzOiBDb21wb25lbnQgPSBBbmNob3IsXG4gIGFjdGl2ZSxcbiAgZXZlbnRLZXksXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICduYXYtbGluaycpO1xuICBjb25zdCBbbmF2SXRlbVByb3BzLCBtZXRhXSA9IHVzZU5hdkl0ZW0oe1xuICAgIGtleTogbWFrZUV2ZW50S2V5KGV2ZW50S2V5LCBwcm9wcy5ocmVmKSxcbiAgICBhY3RpdmUsXG4gICAgZGlzYWJsZWQsXG4gICAgLi4ucHJvcHNcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAuLi5wcm9wcyxcbiAgICAuLi5uYXZJdGVtUHJvcHMsXG4gICAgcmVmOiByZWYsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIGJzUHJlZml4LCBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLCBtZXRhLmlzQWN0aXZlICYmICdhY3RpdmUnKVxuICB9KTtcbn0pO1xuTmF2TGluay5kaXNwbGF5TmFtZSA9ICdOYXZMaW5rJztcbmV4cG9ydCBkZWZhdWx0IE5hdkxpbms7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IERyb3Bkb3duIGZyb20gJy4vRHJvcGRvd24nO1xuaW1wb3J0IE5hdkxpbmsgZnJvbSAnLi9OYXZMaW5rJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBOYXZEcm9wZG93biA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGlkLFxuICB0aXRsZSxcbiAgY2hpbGRyZW4sXG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIHJvb3RDbG9zZUV2ZW50LFxuICBtZW51Um9sZSxcbiAgZGlzYWJsZWQsXG4gIGFjdGl2ZSxcbiAgcmVuZGVyTWVudU9uTW91bnQsXG4gIG1lbnVWYXJpYW50LFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIC8qIE5hdkl0ZW0gaGFzIG5vIGFkZGl0aW9uYWwgbG9naWMsIGl0J3MgcHVyZWx5IHByZXNlbnRhdGlvbmFsLiBDYW4gc2V0IG5hdiBpdGVtIGNsYXNzIGhlcmUgdG8gc3VwcG9ydCBcImFzXCIgKi9cbiAgY29uc3QgbmF2SXRlbVByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeCh1bmRlZmluZWQsICduYXYtaXRlbScpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKERyb3Bkb3duLCB7XG4gICAgcmVmOiByZWYsXG4gICAgLi4ucHJvcHMsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgbmF2SXRlbVByZWZpeCksXG4gICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeChEcm9wZG93bi5Ub2dnbGUsIHtcbiAgICAgIGlkOiBpZCxcbiAgICAgIGV2ZW50S2V5OiBudWxsLFxuICAgICAgYWN0aXZlOiBhY3RpdmUsXG4gICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICBjaGlsZEJzUHJlZml4OiBic1ByZWZpeCxcbiAgICAgIGFzOiBOYXZMaW5rLFxuICAgICAgY2hpbGRyZW46IHRpdGxlXG4gICAgfSksIC8qI19fUFVSRV9fKi9fanN4KERyb3Bkb3duLk1lbnUsIHtcbiAgICAgIHJvbGU6IG1lbnVSb2xlLFxuICAgICAgcmVuZGVyT25Nb3VudDogcmVuZGVyTWVudU9uTW91bnQsXG4gICAgICByb290Q2xvc2VFdmVudDogcm9vdENsb3NlRXZlbnQsXG4gICAgICB2YXJpYW50OiBtZW51VmFyaWFudCxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pXVxuICB9KTtcbn0pO1xuTmF2RHJvcGRvd24uZGlzcGxheU5hbWUgPSAnTmF2RHJvcGRvd24nO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihOYXZEcm9wZG93biwge1xuICBJdGVtOiBEcm9wZG93bi5JdGVtLFxuICBJdGVtVGV4dDogRHJvcGRvd24uSXRlbVRleHQsXG4gIERpdmlkZXI6IERyb3Bkb3duLkRpdmlkZXIsXG4gIEhlYWRlcjogRHJvcGRvd24uSGVhZGVyXG59KTsiLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEluZm9TZXJ2aWNlIH0gZnJvbSBcIi4uL0luZm9TZXJ2aWNlXCI7XG5pbXBvcnQgeyBMb2dpbkZvcm0gfSBmcm9tIFwiLi9Mb2dpbkZvcm1cIjtcbmltcG9ydCB7IExvYWRpbmdJbmZvIH0gZnJvbSBcIi4vTG9hZGluZ0luZm9cIjtcbmltcG9ydCB7IE5hdkRyb3Bkb3duIH0gZnJvbSBcInJlYWN0LWJvb3RzdHJhcFwiO1xuXG5mdW5jdGlvbiBfVXNlckNvbXBvbmVudChzZXNzaW9uX2luZm8sIGxvZ291dF9jYWxsYmFjaykge1xuICBjb25zdCB0aXRsZSA9IChcbiAgICA8PlxuICAgICAge3Nlc3Npb25faW5mby51c2VybmFtZX0gPGkgY2xhc3NOYW1lPVwiYmkgYmktcGVyc29uLWZpbGxcIiAvPlxuICAgIDwvPlxuICApO1xuICByZXR1cm4gKFxuICAgIDxOYXZEcm9wZG93biBhbGlnbj1cImVuZFwiIHRpdGxlPXt0aXRsZX0+XG4gICAgICA8TmF2RHJvcGRvd24uSXRlbSBhcz1cImJ1dHRvblwiIG9uQ2xpY2s9e2xvZ291dF9jYWxsYmFja30gaHJlZj1cIiNcIj5cbiAgICAgICAgTG9nb3V0XG4gICAgICA8L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgPC9OYXZEcm9wZG93bj5cbiAgKTtcbn1cblxuLyoqXG4gKiBAZnVuY3Rpb24gb25Mb2dvdXRDYWxsYmFja1xuICpcbiAqIFRvIGJlIHVzZWQgYXMgYSBjYWxsYmFjayBmdW5jdGlvbiBhZnRlciBhIHN1Y2Nlc3NmdWwgbG9nb3V0LlxuICpcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuLyoqXG4gKiBAZnVuY3Rpb24gb25Mb2dpbkNhbGxiYWNrXG4gKlxuICogVG8gYmUgdXNlZCBhcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIGFmdGVyIGEgc3VjY2Vzc2Z1bCBsb2dpbi5cbiAqXG4gKiBAcGFyYW0ge0BpbmRpc2NhbGUvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZS5TZXNzaW9uSW5mb30gc2Vzc2lvbkluZm8gYWJvdXRcbiAqICAgdGhlIGN1cnJlbnQgdXNlci5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuLyoqXG4gKiBUaGUgVXNlckNvbXBvbmVudCBzaG93cyB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlciBvciBhXG4gKiBMb2dpbkZvcm0uXG4gKlxuICogQHBhcmFtIHtvbkxvZ2luQ2FsbGJhY2t9IG9uTG9naW4gQ2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZVxuICogICBjYWxsZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvZ2luLiBXaGVuIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUsIHRoZVxuICogICBVc2VyQ29tcG9uZW50IHByb2NlZWRzIGFzIHVzdWFsIGFuZCByZS1yZW5kZXJzIHRoZSBjb21wb25lbnQuXG4gKiBAcGFyYW0ge29uTG9nb3V0Q2FsbGJhY2t9IG9uTG9nb3V0IENhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmVcbiAqICAgY2FsbGVkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBsb2dvdXQuIFdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlXG4gKiAgIFVzZXJDb21wb25lbnQgcHJvY2VlZHMgYXMgdXN1YWwgYW5kIHJlLXJlbmRlcnMgdGhlIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVzZXJDb21wb25lbnQob25Mb2dpbiwgb25Mb2dvdXQpIHtcbiAgY29uc3QgW2NvbXBvbmVudCwgc2V0Q29tcG9uZW50XSA9IHVzZVN0YXRlKG51bGwpO1xuXG4gIHZhciBzaG93X2NvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgaWYgKGNvbXBvbmVudCA9PT0gbnVsbCkge1xuICAgIHZhciBzaG93X2xvZ2luX2Zvcm07XG5cbiAgICBjb25zdCBsb2dvdXRfY2FsbGJhY2sgPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBzZXRDb21wb25lbnQoPExvYWRpbmdJbmZvIHNpemU9XCJzbVwiIC8+KTtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IG5ldyBJbmZvU2VydmljZSgpO1xuICAgICAgICBhd2FpdCBzZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICBpZiAob25Mb2dvdXQoKSkge1xuICAgICAgICAgIHNob3dfbG9naW5fZm9ybShcIllvdSBoYXZlIGJlZW4gbG9nZ2VkIG91dC5cIiwgXCJzdWNjZXNzXCIpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHNob3dfbG9naW5fZm9ybShcIkxvZ291dCBmYWlsZWQ6IFwiICsgZS5tZXNzYWdlLCBcImVycm9yXCIpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBzaG93X3Nlc3Npb25faW5mbyA9IChzZXNzaW9uX2luZm8pID0+IHtcbiAgICAgIC8vIFRPRE8gaXNfYW5vbnltb3VzIG1lbWJlcj9cbiAgICAgIGlmIChzZXNzaW9uX2luZm8udXNlcm5hbWUgPT09IFwiYW5vbnltb3VzXCIpIHtcbiAgICAgICAgc2hvd19sb2dpbl9mb3JtKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRDb21wb25lbnQoX1VzZXJDb21wb25lbnQoc2Vzc2lvbl9pbmZvLCBsb2dvdXRfY2FsbGJhY2spKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgbG9naW5fZmFpbCA9IChlcnJvcikgPT4ge1xuICAgICAgc2hvd19sb2dpbl9mb3JtKGVycm9yLm1lc3NhZ2UsIFwiZXJyb3JcIik7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvZ2luX3N1Y2Nlc3MgPSAoc2Vzc2lvbl9pbmZvKSA9PiB7XG4gICAgICBpZiAob25Mb2dpbihzZXNzaW9uX2luZm8pKSB7XG4gICAgICAgIHNob3dfc2Vzc2lvbl9pbmZvKHNlc3Npb25faW5mbyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHNob3dfbG9naW5fZm9ybSA9IChtZXNzYWdlLCBtZXNzYWdlVHlwZSkgPT4ge1xuICAgICAgdmFyIGxvZ2luX2Zvcm0gPSAoXG4gICAgICAgIDxMb2dpbkZvcm1cbiAgICAgICAgICBtZXNzYWdlPXttZXNzYWdlfVxuICAgICAgICAgIG1lc3NhZ2VUeXBlPXttZXNzYWdlVHlwZX1cbiAgICAgICAgICB0aGVuPXtsb2dpbl9zdWNjZXNzfVxuICAgICAgICAgIG9uRXJyb3I9e2xvZ2luX2ZhaWx9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgICAgc2V0Q29tcG9uZW50KGxvZ2luX2Zvcm0pO1xuICAgIH07XG5cbiAgICBjb25zdCBzZXJ2aWNlID0gbmV3IEluZm9TZXJ2aWNlKCk7XG4gICAgc2VydmljZVxuICAgICAgLmdldFNlc3Npb25JbmZvKClcbiAgICAgIC50aGVuKHNob3dfc2Vzc2lvbl9pbmZvKVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4gc2hvd19sb2dpbl9mb3JtKGVycm9yLm1lc3NhZ2UsIFwiaW5mb1wiKSk7XG4gICAgc2hvd19jb21wb25lbnQgPSA8TG9hZGluZ0luZm8gc2l6ZT1cInNtXCIgLz47XG4gIH1cblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJ1c2VyLWNvbXBvbmVudFwiPntzaG93X2NvbXBvbmVudH08L2Rpdj47XG59XG5cblVzZXJDb21wb25lbnQuZGVmYXVsdFByb3BzID0ge1xuICBvbkxvZ2luOiAoKSA9PiB0cnVlLFxuICBvbkxvZ291dDogKCkgPT4gdHJ1ZSxcbn07XG4iLCJjb25zdCBCcmFuZGluZyA9IHtcbiAgbmFtZTogXCJDYW9zREJcIixcbn07XG5cbmV4cG9ydCB7IEJyYW5kaW5nIH07XG4iLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJhc1wiLCBcIm9uU2VsZWN0XCIsIFwiYWN0aXZlS2V5XCIsIFwicm9sZVwiLCBcIm9uS2V5RG93blwiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmltcG9ydCBxc2EgZnJvbSAnZG9tLWhlbHBlcnMvcXVlcnlTZWxlY3RvckFsbCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VGb3JjZVVwZGF0ZSBmcm9tICdAcmVzdGFydC9ob29rcy91c2VGb3JjZVVwZGF0ZSc7XG5pbXBvcnQgdXNlTWVyZ2VkUmVmcyBmcm9tICdAcmVzdGFydC9ob29rcy91c2VNZXJnZWRSZWZzJztcbmltcG9ydCBOYXZDb250ZXh0IGZyb20gJy4vTmF2Q29udGV4dCc7XG5pbXBvcnQgU2VsZWN0YWJsZUNvbnRleHQsIHsgbWFrZUV2ZW50S2V5IH0gZnJvbSAnLi9TZWxlY3RhYmxlQ29udGV4dCc7XG5pbXBvcnQgVGFiQ29udGV4dCBmcm9tICcuL1RhYkNvbnRleHQnO1xuaW1wb3J0IHsgZGF0YUF0dHIsIGRhdGFQcm9wIH0gZnJvbSAnLi9EYXRhS2V5JztcbmltcG9ydCBOYXZJdGVtIGZyb20gJy4vTmF2SXRlbSc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuY29uc3QgRVZFTlRfS0VZX0FUVFIgPSBkYXRhQXR0cignZXZlbnQta2V5Jyk7XG5jb25zdCBOYXYgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoX3JlZiwgcmVmKSA9PiB7XG4gIGxldCB7XG4gICAgICAvLyBOZWVkIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBcImFzXCIgZHVyaW5nIHByb3AgZGVzdHJ1Y3R1cmluZyB0byBiZSBjb21wYXRpYmxlIHdpdGggc3R5bGVkLWNvbXBvbmVudHMgZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3QtYm9vdHN0cmFwL2lzc3Vlcy8zNTk1XG4gICAgICBhczogQ29tcG9uZW50ID0gJ2RpdicsXG4gICAgICBvblNlbGVjdCxcbiAgICAgIGFjdGl2ZUtleSxcbiAgICAgIHJvbGUsXG4gICAgICBvbktleURvd25cbiAgICB9ID0gX3JlZixcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIC8vIEEgcmVmIGFuZCBmb3JjZVVwZGF0ZSBmb3IgcmVmb2N1cywgYi9jIHdlIG9ubHkgd2FudCB0byB0cmlnZ2VyIHdoZW4gbmVlZGVkXG4gIC8vIGFuZCBkb24ndCB3YW50IHRvIHJlc2V0IHRoZSBzZXQgaW4gdGhlIGVmZmVjdFxuICBjb25zdCBmb3JjZVVwZGF0ZSA9IHVzZUZvcmNlVXBkYXRlKCk7XG4gIGNvbnN0IG5lZWRzUmVmb2N1c1JlZiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHBhcmVudE9uU2VsZWN0ID0gdXNlQ29udGV4dChTZWxlY3RhYmxlQ29udGV4dCk7XG4gIGNvbnN0IHRhYkNvbnRleHQgPSB1c2VDb250ZXh0KFRhYkNvbnRleHQpO1xuICBsZXQgZ2V0Q29udHJvbGxlZElkLCBnZXRDb250cm9sbGVySWQ7XG4gIGlmICh0YWJDb250ZXh0KSB7XG4gICAgcm9sZSA9IHJvbGUgfHwgJ3RhYmxpc3QnO1xuICAgIGFjdGl2ZUtleSA9IHRhYkNvbnRleHQuYWN0aXZlS2V5O1xuICAgIC8vIFRPRE86IGRvIHdlIG5lZWQgdG8gZHVwbGljYXRlIHRoZXNlP1xuICAgIGdldENvbnRyb2xsZWRJZCA9IHRhYkNvbnRleHQuZ2V0Q29udHJvbGxlZElkO1xuICAgIGdldENvbnRyb2xsZXJJZCA9IHRhYkNvbnRleHQuZ2V0Q29udHJvbGxlcklkO1xuICB9XG4gIGNvbnN0IGxpc3ROb2RlID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBnZXROZXh0QWN0aXZlVGFiID0gb2Zmc2V0ID0+IHtcbiAgICBjb25zdCBjdXJyZW50TGlzdE5vZGUgPSBsaXN0Tm9kZS5jdXJyZW50O1xuICAgIGlmICghY3VycmVudExpc3ROb2RlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBpdGVtcyA9IHFzYShjdXJyZW50TGlzdE5vZGUsIGBbJHtFVkVOVF9LRVlfQVRUUn1dOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSlgKTtcbiAgICBjb25zdCBhY3RpdmVDaGlsZCA9IGN1cnJlbnRMaXN0Tm9kZS5xdWVyeVNlbGVjdG9yKCdbYXJpYS1zZWxlY3RlZD10cnVlXScpO1xuICAgIGlmICghYWN0aXZlQ2hpbGQgfHwgYWN0aXZlQ2hpbGQgIT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGluZGV4ID0gaXRlbXMuaW5kZXhPZihhY3RpdmVDaGlsZCk7XG4gICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIG51bGw7XG4gICAgbGV0IG5leHRJbmRleCA9IGluZGV4ICsgb2Zmc2V0O1xuICAgIGlmIChuZXh0SW5kZXggPj0gaXRlbXMubGVuZ3RoKSBuZXh0SW5kZXggPSAwO1xuICAgIGlmIChuZXh0SW5kZXggPCAwKSBuZXh0SW5kZXggPSBpdGVtcy5sZW5ndGggLSAxO1xuICAgIHJldHVybiBpdGVtc1tuZXh0SW5kZXhdO1xuICB9O1xuICBjb25zdCBoYW5kbGVTZWxlY3QgPSAoa2V5LCBldmVudCkgPT4ge1xuICAgIGlmIChrZXkgPT0gbnVsbCkgcmV0dXJuO1xuICAgIG9uU2VsZWN0ID09IG51bGwgPyB2b2lkIDAgOiBvblNlbGVjdChrZXksIGV2ZW50KTtcbiAgICBwYXJlbnRPblNlbGVjdCA9PSBudWxsID8gdm9pZCAwIDogcGFyZW50T25TZWxlY3Qoa2V5LCBldmVudCk7XG4gIH07XG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSBldmVudCA9PiB7XG4gICAgb25LZXlEb3duID09IG51bGwgPyB2b2lkIDAgOiBvbktleURvd24oZXZlbnQpO1xuICAgIGlmICghdGFiQ29udGV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbmV4dEFjdGl2ZUNoaWxkO1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIG5leHRBY3RpdmVDaGlsZCA9IGdldE5leHRBY3RpdmVUYWIoLTEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgbmV4dEFjdGl2ZUNoaWxkID0gZ2V0TmV4dEFjdGl2ZVRhYigxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghbmV4dEFjdGl2ZUNoaWxkKSByZXR1cm47XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBoYW5kbGVTZWxlY3QobmV4dEFjdGl2ZUNoaWxkLmRhdGFzZXRbZGF0YVByb3AoJ0V2ZW50S2V5JyldIHx8IG51bGwsIGV2ZW50KTtcbiAgICBuZWVkc1JlZm9jdXNSZWYuY3VycmVudCA9IHRydWU7XG4gICAgZm9yY2VVcGRhdGUoKTtcbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGlzdE5vZGUuY3VycmVudCAmJiBuZWVkc1JlZm9jdXNSZWYuY3VycmVudCkge1xuICAgICAgY29uc3QgYWN0aXZlQ2hpbGQgPSBsaXN0Tm9kZS5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoYFske0VWRU5UX0tFWV9BVFRSfV1bYXJpYS1zZWxlY3RlZD10cnVlXWApO1xuICAgICAgYWN0aXZlQ2hpbGQgPT0gbnVsbCA/IHZvaWQgMCA6IGFjdGl2ZUNoaWxkLmZvY3VzKCk7XG4gICAgfVxuICAgIG5lZWRzUmVmb2N1c1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gIH0pO1xuICBjb25zdCBtZXJnZWRSZWYgPSB1c2VNZXJnZWRSZWZzKHJlZiwgbGlzdE5vZGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goU2VsZWN0YWJsZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogaGFuZGxlU2VsZWN0LFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChOYXZDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZToge1xuICAgICAgICByb2xlLFxuICAgICAgICAvLyB1c2VkIGJ5IE5hdkxpbmsgdG8gZGV0ZXJtaW5lIGl0J3Mgcm9sZVxuICAgICAgICBhY3RpdmVLZXk6IG1ha2VFdmVudEtleShhY3RpdmVLZXkpLFxuICAgICAgICBnZXRDb250cm9sbGVkSWQ6IGdldENvbnRyb2xsZWRJZCB8fCBub29wLFxuICAgICAgICBnZXRDb250cm9sbGVySWQ6IGdldENvbnRyb2xsZXJJZCB8fCBub29wXG4gICAgICB9LFxuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgICByZWY6IG1lcmdlZFJlZixcbiAgICAgICAgcm9sZTogcm9sZVxuICAgICAgfSkpXG4gICAgfSlcbiAgfSk7XG59KTtcbk5hdi5kaXNwbGF5TmFtZSA9ICdOYXYnO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihOYXYsIHtcbiAgSXRlbTogTmF2SXRlbVxufSk7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgY29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuY29udGV4dC5kaXNwbGF5TmFtZSA9ICdDYXJkSGVhZGVyQ29udGV4dCc7XG5leHBvcnQgZGVmYXVsdCBjb250ZXh0OyIsImltcG9ydCBjcmVhdGVXaXRoQnNQcmVmaXggZnJvbSAnLi9jcmVhdGVXaXRoQnNQcmVmaXgnO1xuZXhwb3J0IGRlZmF1bHQgY3JlYXRlV2l0aEJzUHJlZml4KCduYXYtaXRlbScpOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IGFsbCBmcm9tICdwcm9wLXR5cGVzLWV4dHJhL2xpYi9hbGwnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVVuY29udHJvbGxlZCB9IGZyb20gJ3VuY29udHJvbGxhYmxlJztcbmltcG9ydCBCYXNlTmF2IGZyb20gJ0ByZXN0YXJ0L3VpL05hdic7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IE5hdmJhckNvbnRleHQgZnJvbSAnLi9OYXZiYXJDb250ZXh0JztcbmltcG9ydCBDYXJkSGVhZGVyQ29udGV4dCBmcm9tICcuL0NhcmRIZWFkZXJDb250ZXh0JztcbmltcG9ydCBOYXZJdGVtIGZyb20gJy4vTmF2SXRlbSc7XG5pbXBvcnQgTmF2TGluayBmcm9tICcuL05hdkxpbmsnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE5hdiA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh1bmNvbnRyb2xsZWRQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhcyA9ICdkaXYnLFxuICAgIGJzUHJlZml4OiBpbml0aWFsQnNQcmVmaXgsXG4gICAgdmFyaWFudCxcbiAgICBmaWxsID0gZmFsc2UsXG4gICAganVzdGlmeSA9IGZhbHNlLFxuICAgIG5hdmJhcixcbiAgICBuYXZiYXJTY3JvbGwsXG4gICAgY2xhc3NOYW1lLFxuICAgIGFjdGl2ZUtleSxcbiAgICAuLi5wcm9wc1xuICB9ID0gdXNlVW5jb250cm9sbGVkKHVuY29udHJvbGxlZFByb3BzLCB7XG4gICAgYWN0aXZlS2V5OiAnb25TZWxlY3QnXG4gIH0pO1xuICBjb25zdCBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChpbml0aWFsQnNQcmVmaXgsICduYXYnKTtcbiAgbGV0IG5hdmJhckJzUHJlZml4O1xuICBsZXQgY2FyZEhlYWRlckJzUHJlZml4O1xuICBsZXQgaXNOYXZiYXIgPSBmYWxzZTtcbiAgY29uc3QgbmF2YmFyQ29udGV4dCA9IHVzZUNvbnRleHQoTmF2YmFyQ29udGV4dCk7XG4gIGNvbnN0IGNhcmRIZWFkZXJDb250ZXh0ID0gdXNlQ29udGV4dChDYXJkSGVhZGVyQ29udGV4dCk7XG4gIGlmIChuYXZiYXJDb250ZXh0KSB7XG4gICAgbmF2YmFyQnNQcmVmaXggPSBuYXZiYXJDb250ZXh0LmJzUHJlZml4O1xuICAgIGlzTmF2YmFyID0gbmF2YmFyID09IG51bGwgPyB0cnVlIDogbmF2YmFyO1xuICB9IGVsc2UgaWYgKGNhcmRIZWFkZXJDb250ZXh0KSB7XG4gICAgKHtcbiAgICAgIGNhcmRIZWFkZXJCc1ByZWZpeFxuICAgIH0gPSBjYXJkSGVhZGVyQ29udGV4dCk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEJhc2VOYXYsIHtcbiAgICBhczogYXMsXG4gICAgcmVmOiByZWYsXG4gICAgYWN0aXZlS2V5OiBhY3RpdmVLZXksXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwge1xuICAgICAgW2JzUHJlZml4XTogIWlzTmF2YmFyLFxuICAgICAgW2Ake25hdmJhckJzUHJlZml4fS1uYXZgXTogaXNOYXZiYXIsXG4gICAgICBbYCR7bmF2YmFyQnNQcmVmaXh9LW5hdi1zY3JvbGxgXTogaXNOYXZiYXIgJiYgbmF2YmFyU2Nyb2xsLFxuICAgICAgW2Ake2NhcmRIZWFkZXJCc1ByZWZpeH0tJHt2YXJpYW50fWBdOiAhIWNhcmRIZWFkZXJCc1ByZWZpeCxcbiAgICAgIFtgJHtic1ByZWZpeH0tJHt2YXJpYW50fWBdOiAhIXZhcmlhbnQsXG4gICAgICBbYCR7YnNQcmVmaXh9LWZpbGxgXTogZmlsbCxcbiAgICAgIFtgJHtic1ByZWZpeH0tanVzdGlmaWVkYF06IGp1c3RpZnlcbiAgICB9KSxcbiAgICAuLi5wcm9wc1xuICB9KTtcbn0pO1xuTmF2LmRpc3BsYXlOYW1lID0gJ05hdic7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKE5hdiwge1xuICBJdGVtOiBOYXZJdGVtLFxuICBMaW5rOiBOYXZMaW5rXG59KTsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgTmF2YmFyQnJhbmQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBic1ByZWZpeCxcbiAgY2xhc3NOYW1lLFxuICBhcyxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ25hdmJhci1icmFuZCcpO1xuICBjb25zdCBDb21wb25lbnQgPSBhcyB8fCAocHJvcHMuaHJlZiA/ICdhJyA6ICdzcGFuJyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAuLi5wcm9wcyxcbiAgICByZWY6IHJlZixcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBic1ByZWZpeClcbiAgfSk7XG59KTtcbk5hdmJhckJyYW5kLmRpc3BsYXlOYW1lID0gJ05hdmJhckJyYW5kJztcbmV4cG9ydCBkZWZhdWx0IE5hdmJhckJyYW5kOyIsIi8qKlxuICogU2FmZSBjaGFpbmVkIGZ1bmN0aW9uXG4gKlxuICogV2lsbCBvbmx5IGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBpZiBuZWVkZWQsXG4gKiBvdGhlcndpc2Ugd2lsbCBwYXNzIGJhY2sgZXhpc3RpbmcgZnVuY3Rpb25zIG9yIG51bGwuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gZnVuY3Rpb25zIHRvIGNoYWluXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb258bnVsbH1cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKC4uLmZ1bmNzKSB7XG4gIHJldHVybiBmdW5jcy5maWx0ZXIoZiA9PiBmICE9IG51bGwpLnJlZHVjZSgoYWNjLCBmKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBmICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQXJndW1lbnQgVHlwZSwgbXVzdCBvbmx5IHByb3ZpZGUgZnVuY3Rpb25zLCB1bmRlZmluZWQsIG9yIG51bGwuJyk7XG4gICAgfVxuICAgIGlmIChhY2MgPT09IG51bGwpIHJldHVybiBmO1xuICAgIHJldHVybiBmdW5jdGlvbiBjaGFpbmVkRnVuY3Rpb24oLi4uYXJncykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgYWNjLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9LCBudWxsKTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUNoYWluZWRGdW5jdGlvbjsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBjc3MgZnJvbSAnZG9tLWhlbHBlcnMvY3NzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRU5URVJFRCwgRU5URVJJTkcsIEVYSVRFRCwgRVhJVElORyB9IGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvVHJhbnNpdGlvbic7XG5pbXBvcnQgdHJhbnNpdGlvbkVuZExpc3RlbmVyIGZyb20gJy4vdHJhbnNpdGlvbkVuZExpc3RlbmVyJztcbmltcG9ydCBjcmVhdGVDaGFpbmVkRnVuY3Rpb24gZnJvbSAnLi9jcmVhdGVDaGFpbmVkRnVuY3Rpb24nO1xuaW1wb3J0IHRyaWdnZXJCcm93c2VyUmVmbG93IGZyb20gJy4vdHJpZ2dlckJyb3dzZXJSZWZsb3cnO1xuaW1wb3J0IFRyYW5zaXRpb25XcmFwcGVyIGZyb20gJy4vVHJhbnNpdGlvbldyYXBwZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE1BUkdJTlMgPSB7XG4gIGhlaWdodDogWydtYXJnaW5Ub3AnLCAnbWFyZ2luQm90dG9tJ10sXG4gIHdpZHRoOiBbJ21hcmdpbkxlZnQnLCAnbWFyZ2luUmlnaHQnXVxufTtcbmZ1bmN0aW9uIGdldERlZmF1bHREaW1lbnNpb25WYWx1ZShkaW1lbnNpb24sIGVsZW0pIHtcbiAgY29uc3Qgb2Zmc2V0ID0gYG9mZnNldCR7ZGltZW5zaW9uWzBdLnRvVXBwZXJDYXNlKCl9JHtkaW1lbnNpb24uc2xpY2UoMSl9YDtcbiAgY29uc3QgdmFsdWUgPSBlbGVtW29mZnNldF07XG4gIGNvbnN0IG1hcmdpbnMgPSBNQVJHSU5TW2RpbWVuc2lvbl07XG4gIHJldHVybiB2YWx1ZSArXG4gIC8vIEB0cy1pZ25vcmVcbiAgcGFyc2VJbnQoY3NzKGVsZW0sIG1hcmdpbnNbMF0pLCAxMCkgK1xuICAvLyBAdHMtaWdub3JlXG4gIHBhcnNlSW50KGNzcyhlbGVtLCBtYXJnaW5zWzFdKSwgMTApO1xufVxuY29uc3QgY29sbGFwc2VTdHlsZXMgPSB7XG4gIFtFWElURURdOiAnY29sbGFwc2UnLFxuICBbRVhJVElOR106ICdjb2xsYXBzaW5nJyxcbiAgW0VOVEVSSU5HXTogJ2NvbGxhcHNpbmcnLFxuICBbRU5URVJFRF06ICdjb2xsYXBzZSBzaG93J1xufTtcbmNvbnN0IENvbGxhcHNlID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgb25FbnRlcixcbiAgb25FbnRlcmluZyxcbiAgb25FbnRlcmVkLFxuICBvbkV4aXQsXG4gIG9uRXhpdGluZyxcbiAgY2xhc3NOYW1lLFxuICBjaGlsZHJlbixcbiAgZGltZW5zaW9uID0gJ2hlaWdodCcsXG4gIGluOiBpblByb3AgPSBmYWxzZSxcbiAgdGltZW91dCA9IDMwMCxcbiAgbW91bnRPbkVudGVyID0gZmFsc2UsXG4gIHVubW91bnRPbkV4aXQgPSBmYWxzZSxcbiAgYXBwZWFyID0gZmFsc2UsXG4gIGdldERpbWVuc2lvblZhbHVlID0gZ2V0RGVmYXVsdERpbWVuc2lvblZhbHVlLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIC8qIENvbXB1dGUgZGltZW5zaW9uICovXG4gIGNvbnN0IGNvbXB1dGVkRGltZW5zaW9uID0gdHlwZW9mIGRpbWVuc2lvbiA9PT0gJ2Z1bmN0aW9uJyA/IGRpbWVuc2lvbigpIDogZGltZW5zaW9uO1xuXG4gIC8qIC0tIEV4cGFuZGluZyAtLSAqL1xuICBjb25zdCBoYW5kbGVFbnRlciA9IHVzZU1lbW8oKCkgPT4gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKGVsZW0gPT4ge1xuICAgIGVsZW0uc3R5bGVbY29tcHV0ZWREaW1lbnNpb25dID0gJzAnO1xuICB9LCBvbkVudGVyKSwgW2NvbXB1dGVkRGltZW5zaW9uLCBvbkVudGVyXSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyaW5nID0gdXNlTWVtbygoKSA9PiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24oZWxlbSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsID0gYHNjcm9sbCR7Y29tcHV0ZWREaW1lbnNpb25bMF0udG9VcHBlckNhc2UoKX0ke2NvbXB1dGVkRGltZW5zaW9uLnNsaWNlKDEpfWA7XG4gICAgZWxlbS5zdHlsZVtjb21wdXRlZERpbWVuc2lvbl0gPSBgJHtlbGVtW3Njcm9sbF19cHhgO1xuICB9LCBvbkVudGVyaW5nKSwgW2NvbXB1dGVkRGltZW5zaW9uLCBvbkVudGVyaW5nXSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyZWQgPSB1c2VNZW1vKCgpID0+IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihlbGVtID0+IHtcbiAgICBlbGVtLnN0eWxlW2NvbXB1dGVkRGltZW5zaW9uXSA9IG51bGw7XG4gIH0sIG9uRW50ZXJlZCksIFtjb21wdXRlZERpbWVuc2lvbiwgb25FbnRlcmVkXSk7XG5cbiAgLyogLS0gQ29sbGFwc2luZyAtLSAqL1xuICBjb25zdCBoYW5kbGVFeGl0ID0gdXNlTWVtbygoKSA9PiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24oZWxlbSA9PiB7XG4gICAgZWxlbS5zdHlsZVtjb21wdXRlZERpbWVuc2lvbl0gPSBgJHtnZXREaW1lbnNpb25WYWx1ZShjb21wdXRlZERpbWVuc2lvbiwgZWxlbSl9cHhgO1xuICAgIHRyaWdnZXJCcm93c2VyUmVmbG93KGVsZW0pO1xuICB9LCBvbkV4aXQpLCBbb25FeGl0LCBnZXREaW1lbnNpb25WYWx1ZSwgY29tcHV0ZWREaW1lbnNpb25dKTtcbiAgY29uc3QgaGFuZGxlRXhpdGluZyA9IHVzZU1lbW8oKCkgPT4gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKGVsZW0gPT4ge1xuICAgIGVsZW0uc3R5bGVbY29tcHV0ZWREaW1lbnNpb25dID0gbnVsbDtcbiAgfSwgb25FeGl0aW5nKSwgW2NvbXB1dGVkRGltZW5zaW9uLCBvbkV4aXRpbmddKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRyYW5zaXRpb25XcmFwcGVyLCB7XG4gICAgcmVmOiByZWYsXG4gICAgYWRkRW5kTGlzdGVuZXI6IHRyYW5zaXRpb25FbmRMaXN0ZW5lcixcbiAgICAuLi5wcm9wcyxcbiAgICBcImFyaWEtZXhwYW5kZWRcIjogcHJvcHMucm9sZSA/IGluUHJvcCA6IG51bGwsXG4gICAgb25FbnRlcjogaGFuZGxlRW50ZXIsXG4gICAgb25FbnRlcmluZzogaGFuZGxlRW50ZXJpbmcsXG4gICAgb25FbnRlcmVkOiBoYW5kbGVFbnRlcmVkLFxuICAgIG9uRXhpdDogaGFuZGxlRXhpdCxcbiAgICBvbkV4aXRpbmc6IGhhbmRsZUV4aXRpbmcsXG4gICAgY2hpbGRSZWY6IGNoaWxkcmVuLnJlZixcbiAgICBpbjogaW5Qcm9wLFxuICAgIHRpbWVvdXQ6IHRpbWVvdXQsXG4gICAgbW91bnRPbkVudGVyOiBtb3VudE9uRW50ZXIsXG4gICAgdW5tb3VudE9uRXhpdDogdW5tb3VudE9uRXhpdCxcbiAgICBhcHBlYXI6IGFwcGVhcixcbiAgICBjaGlsZHJlbjogKHN0YXRlLCBpbm5lclByb3BzKSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAuLi5pbm5lclByb3BzLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgY2hpbGRyZW4ucHJvcHMuY2xhc3NOYW1lLCBjb2xsYXBzZVN0eWxlc1tzdGF0ZV0sIGNvbXB1dGVkRGltZW5zaW9uID09PSAnd2lkdGgnICYmICdjb2xsYXBzZS1ob3Jpem9udGFsJylcbiAgICB9KVxuICB9KTtcbn0pO1xuXG4vLyBAdHMtaWdub3JlXG5cbmV4cG9ydCBkZWZhdWx0IENvbGxhcHNlOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ29sbGFwc2UgZnJvbSAnLi9Db2xsYXBzZSc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IE5hdmJhckNvbnRleHQgZnJvbSAnLi9OYXZiYXJDb250ZXh0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBOYXZiYXJDb2xsYXBzZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGNoaWxkcmVuLFxuICBic1ByZWZpeCxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ25hdmJhci1jb2xsYXBzZScpO1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChOYXZiYXJDb250ZXh0KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbGxhcHNlLCB7XG4gICAgaW46ICEhKGNvbnRleHQgJiYgY29udGV4dC5leHBhbmRlZCksXG4gICAgLi4ucHJvcHMsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIHtcbiAgICAgIHJlZjogcmVmLFxuICAgICAgY2xhc3NOYW1lOiBic1ByZWZpeCxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pXG4gIH0pO1xufSk7XG5OYXZiYXJDb2xsYXBzZS5kaXNwbGF5TmFtZSA9ICdOYXZiYXJDb2xsYXBzZSc7XG5leHBvcnQgZGVmYXVsdCBOYXZiYXJDb2xsYXBzZTsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgTmF2YmFyQ29udGV4dCBmcm9tICcuL05hdmJhckNvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE5hdmJhclRvZ2dsZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICBsYWJlbCA9ICdUb2dnbGUgbmF2aWdhdGlvbicsXG4gIC8vIE5lZWQgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IFwiYXNcIiBkdXJpbmcgcHJvcCBkZXN0cnVjdHVyaW5nIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBzdHlsZWQtY29tcG9uZW50cyBnaXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1ib290c3RyYXAvaXNzdWVzLzM1OTVcbiAgYXM6IENvbXBvbmVudCA9ICdidXR0b24nLFxuICBvbkNsaWNrLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnbmF2YmFyLXRvZ2dsZXInKTtcbiAgY29uc3Qge1xuICAgIG9uVG9nZ2xlLFxuICAgIGV4cGFuZGVkXG4gIH0gPSB1c2VDb250ZXh0KE5hdmJhckNvbnRleHQpIHx8IHt9O1xuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soZSA9PiB7XG4gICAgaWYgKG9uQ2xpY2spIG9uQ2xpY2soZSk7XG4gICAgaWYgKG9uVG9nZ2xlKSBvblRvZ2dsZSgpO1xuICB9KTtcbiAgaWYgKENvbXBvbmVudCA9PT0gJ2J1dHRvbicpIHtcbiAgICBwcm9wcy50eXBlID0gJ2J1dHRvbic7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIC4uLnByb3BzLFxuICAgIHJlZjogcmVmLFxuICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgIFwiYXJpYS1sYWJlbFwiOiBsYWJlbCxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBic1ByZWZpeCwgIWV4cGFuZGVkICYmICdjb2xsYXBzZWQnKSxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4gfHwgLyojX19QVVJFX18qL19qc3goXCJzcGFuXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogYCR7YnNQcmVmaXh9LWljb25gXG4gICAgfSlcbiAgfSk7XG59KTtcbk5hdmJhclRvZ2dsZS5kaXNwbGF5TmFtZSA9ICdOYXZiYXJUb2dnbGUnO1xuZXhwb3J0IGRlZmF1bHQgTmF2YmFyVG9nZ2xlOyIsImltcG9ydCB1c2VFZmZlY3QgZnJvbSAnLi91c2VJc29tb3JwaGljRWZmZWN0JztcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xudmFyIG1hdGNoZXJzQnlXaW5kb3cgPSBuZXcgV2Vha01hcCgpO1xuXG52YXIgZ2V0TWF0Y2hlciA9IGZ1bmN0aW9uIGdldE1hdGNoZXIocXVlcnksIHRhcmdldFdpbmRvdykge1xuICBpZiAoIXF1ZXJ5IHx8ICF0YXJnZXRXaW5kb3cpIHJldHVybiB1bmRlZmluZWQ7XG4gIHZhciBtYXRjaGVycyA9IG1hdGNoZXJzQnlXaW5kb3cuZ2V0KHRhcmdldFdpbmRvdykgfHwgbmV3IE1hcCgpO1xuICBtYXRjaGVyc0J5V2luZG93LnNldCh0YXJnZXRXaW5kb3csIG1hdGNoZXJzKTtcbiAgdmFyIG1xbCA9IG1hdGNoZXJzLmdldChxdWVyeSk7XG5cbiAgaWYgKCFtcWwpIHtcbiAgICBtcWwgPSB0YXJnZXRXaW5kb3cubWF0Y2hNZWRpYShxdWVyeSk7XG4gICAgbXFsLnJlZkNvdW50ID0gMDtcbiAgICBtYXRjaGVycy5zZXQobXFsLm1lZGlhLCBtcWwpO1xuICB9XG5cbiAgcmV0dXJuIG1xbDtcbn07XG4vKipcbiAqIE1hdGNoIGEgbWVkaWEgcXVlcnkgYW5kIGdldCB1cGRhdGVzIGFzIHRoZSBtYXRjaCBjaGFuZ2VzLiBUaGUgbWVkaWEgc3RyaW5nIGlzXG4gKiBwYXNzZWQgZGlyZWN0bHkgdG8gYHdpbmRvdy5tYXRjaE1lZGlhYCBhbmQgcnVuIGFzIGEgTGF5b3V0IEVmZmVjdCwgc28gaW5pdGlhbFxuICogbWF0Y2hlcyBhcmUgcmV0dXJuZWQgYmVmb3JlIHRoZSBicm93c2VyIGhhcyBhIGNoYW5jZSB0byBwYWludC5cbiAqXG4gKiBgYGB0c3hcbiAqIGZ1bmN0aW9uIFBhZ2UoKSB7XG4gKiAgIGNvbnN0IGlzV2lkZSA9IHVzZU1lZGlhUXVlcnkoJ21pbi13aWR0aDogMTAwMHB4JylcbiAqXG4gKiAgIHJldHVybiBpc1dpZGUgPyBcInZlcnkgd2lkZVwiIDogJ25vdCBzbyB3aWRlJ1xuICogfVxuICogYGBgXG4gKlxuICogTWVkaWEgcXVlcnkgbGlzdHMgYXJlIGFsc28gcmV1c2VkIGdsb2JhbGx5LCBob29rIGNhbGxzIGZvciB0aGUgc2FtZSBxdWVyeVxuICogd2lsbCBvbmx5IGNyZWF0ZSBhIG1hdGNoZXIgb25jZSB1bmRlciB0aGUgaG9vZC5cbiAqXG4gKiBAcGFyYW0gcXVlcnkgQSBtZWRpYSBxdWVyeVxuICogQHBhcmFtIHRhcmdldFdpbmRvdyBUaGUgd2luZG93IHRvIG1hdGNoIGFnYWluc3QsIHVzZXMgdGhlIGdsb2JhbGx5IGF2YWlsYWJsZSBvbmUgYXMgYSBkZWZhdWx0LlxuICovXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeSwgdGFyZ2V0V2luZG93KSB7XG4gIGlmICh0YXJnZXRXaW5kb3cgPT09IHZvaWQgMCkge1xuICAgIHRhcmdldFdpbmRvdyA9IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogd2luZG93O1xuICB9XG5cbiAgdmFyIG1xbCA9IGdldE1hdGNoZXIocXVlcnksIHRhcmdldFdpbmRvdyk7XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbXFsID8gbXFsLm1hdGNoZXMgOiBmYWxzZTtcbiAgfSksXG4gICAgICBtYXRjaGVzID0gX3VzZVN0YXRlWzBdLFxuICAgICAgc2V0TWF0Y2hlcyA9IF91c2VTdGF0ZVsxXTtcblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHZhciBtcWwgPSBnZXRNYXRjaGVyKHF1ZXJ5LCB0YXJnZXRXaW5kb3cpO1xuXG4gICAgaWYgKCFtcWwpIHtcbiAgICAgIHJldHVybiBzZXRNYXRjaGVzKGZhbHNlKTtcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2hlcnMgPSBtYXRjaGVyc0J5V2luZG93LmdldCh0YXJnZXRXaW5kb3cpO1xuXG4gICAgdmFyIGhhbmRsZUNoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZSgpIHtcbiAgICAgIHNldE1hdGNoZXMobXFsLm1hdGNoZXMpO1xuICAgIH07XG5cbiAgICBtcWwucmVmQ291bnQrKztcbiAgICBtcWwuYWRkTGlzdGVuZXIoaGFuZGxlQ2hhbmdlKTtcbiAgICBoYW5kbGVDaGFuZ2UoKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgbXFsLnJlbW92ZUxpc3RlbmVyKGhhbmRsZUNoYW5nZSk7XG4gICAgICBtcWwucmVmQ291bnQtLTtcblxuICAgICAgaWYgKG1xbC5yZWZDb3VudCA8PSAwKSB7XG4gICAgICAgIG1hdGNoZXJzID09IG51bGwgPyB2b2lkIDAgOiBtYXRjaGVycy5kZWxldGUobXFsLm1lZGlhKTtcbiAgICAgIH1cblxuICAgICAgbXFsID0gdW5kZWZpbmVkO1xuICAgIH07XG4gIH0sIFtxdWVyeV0pO1xuICByZXR1cm4gbWF0Y2hlcztcbn0iLCJpbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tICcuL3VzZU1lZGlhUXVlcnknO1xuaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcblxuLyoqXG4gKiBDcmVhdGUgYSByZXNwb25zaXZlIGhvb2sgd2UgYSBzZXQgb2YgYnJlYWtwb2ludCBuYW1lcyBhbmQgd2lkdGhzLlxuICogWW91IGNhbiB1c2UgYW55IHZhbGlkIGNzcyB1bml0cyBhcyB3ZWxsIGFzIGEgbnVtYmVycyAoZm9yIHBpeGVscykuXG4gKlxuICogKipOT1RFOioqIFRoZSBvYmplY3Qga2V5IG9yZGVyIGlzIGltcG9ydGFudCEgaXQncyBhc3N1bWVkIHRvIGJlIGluIG9yZGVyIGZyb20gc21hbGxlc3QgdG8gbGFyZ2VzdFxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCB1c2VCcmVha3BvaW50ID0gY3JlYXRlQnJlYWtwb2ludEhvb2soe1xuICogIHhzOiAwLFxuICogIHNtOiA1NzYsXG4gKiAgbWQ6IDc2OCxcbiAqICBsZzogOTkyLFxuICogIHhsOiAxMjAwLFxuICogfSlcbiAqIGBgYFxuICpcbiAqICoqV2F0Y2ggb3V0ISoqIHVzaW5nIHN0cmluZyB2YWx1ZXMgd2lsbCBzb21ldGltZXMgY29uc3RydWN0IG1lZGlhIHF1ZXJpZXMgdXNpbmcgY3NzIGBjYWxjKClgIHdoaWNoXG4gKiBpcyBOT1Qgc3VwcG9ydGVkIGluIG1lZGlhIHF1ZXJpZXMgYnkgYWxsIGJyb3dzZXJzIGF0IHRoZSBtb21lbnQuIHVzZSBudW1iZXJzIGZvclxuICogdGhlIHdpZGVzdCByYW5nZSBvZiBicm93c2VyIHN1cHBvcnQuXG4gKlxuICogQHBhcmFtIGJyZWFrcG9pbnRWYWx1ZXMgQSBvYmplY3QgaGFzaCBvZiBuYW1lcyB0byBicmVha3BvaW50IGRpbWVuc2lvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJyZWFrcG9pbnRIb29rKGJyZWFrcG9pbnRWYWx1ZXMpIHtcbiAgdmFyIG5hbWVzID0gT2JqZWN0LmtleXMoYnJlYWtwb2ludFZhbHVlcyk7XG5cbiAgZnVuY3Rpb24gYW5kKHF1ZXJ5LCBuZXh0KSB7XG4gICAgaWYgKHF1ZXJ5ID09PSBuZXh0KSB7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnkgPyBxdWVyeSArIFwiIGFuZCBcIiArIG5leHQgOiBuZXh0O1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TmV4dChicmVha3BvaW50KSB7XG4gICAgcmV0dXJuIG5hbWVzW01hdGgubWluKG5hbWVzLmluZGV4T2YoYnJlYWtwb2ludCkgKyAxLCBuYW1lcy5sZW5ndGggLSAxKV07XG4gIH1cblxuICBmdW5jdGlvbiBnZXRNYXhRdWVyeShicmVha3BvaW50KSB7XG4gICAgdmFyIG5leHQgPSBnZXROZXh0KGJyZWFrcG9pbnQpO1xuICAgIHZhciB2YWx1ZSA9IGJyZWFrcG9pbnRWYWx1ZXNbbmV4dF07XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHZhbHVlID0gdmFsdWUgLSAwLjIgKyBcInB4XCI7ZWxzZSB2YWx1ZSA9IFwiY2FsYyhcIiArIHZhbHVlICsgXCIgLSAwLjJweClcIjtcbiAgICByZXR1cm4gXCIobWF4LXdpZHRoOiBcIiArIHZhbHVlICsgXCIpXCI7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRNaW5RdWVyeShicmVha3BvaW50KSB7XG4gICAgdmFyIHZhbHVlID0gYnJlYWtwb2ludFZhbHVlc1ticmVha3BvaW50XTtcblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlICsgXCJweFwiO1xuICAgIH1cblxuICAgIHJldHVybiBcIihtaW4td2lkdGg6IFwiICsgdmFsdWUgKyBcIilcIjtcbiAgfVxuICAvKipcbiAgICogTWF0Y2ggYSBzZXQgb2YgYnJlYWtwb2ludHNcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGNvbnN0IE1pZFNpemVPbmx5ID0gKCkgPT4ge1xuICAgKiAgIGNvbnN0IGlzTWlkID0gdXNlQnJlYWtwb2ludCh7IGxnOiAnZG93bicsIHNtOiAndXAnIH0pO1xuICAgKlxuICAgKiAgIGlmIChpc01pZCkgcmV0dXJuIDxkaXY+T24gYSBSZWFzb25hYmxlIHNpemVkIFNjcmVlbiE8L2Rpdj5cbiAgICogICByZXR1cm4gbnVsbDtcbiAgICogfVxuICAgKiBgYGBcbiAgICogQHBhcmFtIGJyZWFrcG9pbnRNYXAgQW4gb2JqZWN0IG1hcCBvZiBicmVha3BvaW50cyBhbmQgZGlyZWN0aW9ucywgcXVlcmllcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgXCJhbmRcIiB0byBqb2luXG4gICAqIGJyZWFrcG9pbnRzIHRvZ2V0aGVyXG4gICAqIEBwYXJhbSB3aW5kb3cgT3B0aW9uYWxseSBzcGVjaWZ5IHRoZSB0YXJnZXQgd2luZG93IHRvIG1hdGNoIGFnYWluc3QgKHVzZWZ1bCB3aGVuIHJlbmRlcmluZyBpbnRvIGlmcmFtZXMpXG4gICAqL1xuXG5cbiAgZnVuY3Rpb24gdXNlQnJlYWtwb2ludChicmVha3BvaW50T3JNYXAsIGRpcmVjdGlvbiwgd2luZG93KSB7XG4gICAgdmFyIGJyZWFrcG9pbnRNYXA7XG5cbiAgICBpZiAodHlwZW9mIGJyZWFrcG9pbnRPck1hcCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGJyZWFrcG9pbnRNYXAgPSBicmVha3BvaW50T3JNYXA7XG4gICAgICB3aW5kb3cgPSBkaXJlY3Rpb247XG4gICAgICBkaXJlY3Rpb24gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgX2JyZWFrcG9pbnRNYXA7XG5cbiAgICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCB0cnVlO1xuICAgICAgYnJlYWtwb2ludE1hcCA9IChfYnJlYWtwb2ludE1hcCA9IHt9LCBfYnJlYWtwb2ludE1hcFticmVha3BvaW50T3JNYXBdID0gZGlyZWN0aW9uLCBfYnJlYWtwb2ludE1hcCk7XG4gICAgfVxuXG4gICAgdmFyIHF1ZXJ5ID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoYnJlYWtwb2ludE1hcCkucmVkdWNlKGZ1bmN0aW9uIChxdWVyeSwgX3JlZikge1xuICAgICAgICB2YXIga2V5ID0gX3JlZlswXSxcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9IF9yZWZbMV07XG5cbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJyB8fCBkaXJlY3Rpb24gPT09IHRydWUpIHtcbiAgICAgICAgICBxdWVyeSA9IGFuZChxdWVyeSwgZ2V0TWluUXVlcnkoa2V5KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnZG93bicgfHwgZGlyZWN0aW9uID09PSB0cnVlKSB7XG4gICAgICAgICAgcXVlcnkgPSBhbmQocXVlcnksIGdldE1heFF1ZXJ5KGtleSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgICAgfSwgJycpO1xuICAgIH0sIFtKU09OLnN0cmluZ2lmeShicmVha3BvaW50TWFwKV0pO1xuICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KHF1ZXJ5LCB3aW5kb3cpO1xuICB9XG5cbiAgcmV0dXJuIHVzZUJyZWFrcG9pbnQ7XG59XG52YXIgdXNlQnJlYWtwb2ludCA9IGNyZWF0ZUJyZWFrcG9pbnRIb29rKHtcbiAgeHM6IDAsXG4gIHNtOiA1NzYsXG4gIG1kOiA3NjgsXG4gIGxnOiA5OTIsXG4gIHhsOiAxMjAwLFxuICB4eGw6IDE0MDBcbn0pO1xuZXhwb3J0IGRlZmF1bHQgdXNlQnJlYWtwb2ludDsiLCJpbXBvcnQgb3duZXJEb2N1bWVudCBmcm9tICcuL293bmVyRG9jdW1lbnQnO1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBhY3RpdmVseSBmb2N1c2VkIGVsZW1lbnQgc2FmZWx5LlxuICpcbiAqIEBwYXJhbSBkb2MgdGhlIGRvY3VtZW50IHRvIGNoZWNrXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWN0aXZlRWxlbWVudChkb2MpIHtcbiAgaWYgKGRvYyA9PT0gdm9pZCAwKSB7XG4gICAgZG9jID0gb3duZXJEb2N1bWVudCgpO1xuICB9XG5cbiAgLy8gU3VwcG9ydDogSUUgOSBvbmx5XG4gIC8vIElFOSB0aHJvd3MgYW4gXCJVbnNwZWNpZmllZCBlcnJvclwiIGFjY2Vzc2luZyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGZyb20gYW4gPGlmcmFtZT5cbiAgdHJ5IHtcbiAgICB2YXIgYWN0aXZlID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IC8vIElFMTEgcmV0dXJucyBhIHNlZW1pbmdseSBlbXB0eSBvYmplY3QgaW4gc29tZSBjYXNlcyB3aGVuIGFjY2Vzc2luZ1xuICAgIC8vIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgZnJvbSBhbiA8aWZyYW1lPlxuXG4gICAgaWYgKCFhY3RpdmUgfHwgIWFjdGl2ZS5ub2RlTmFtZSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGFjdGl2ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8qIGllIHRocm93cyBpZiBubyBhY3RpdmUgZWxlbWVudCAqL1xuICAgIHJldHVybiBkb2MuYm9keTtcbiAgfVxufSIsImltcG9ydCBjc3MgZnJvbSAnZG9tLWhlbHBlcnMvY3NzJztcbmltcG9ydCB7IGRhdGFBdHRyIH0gZnJvbSAnLi9EYXRhS2V5JztcbmltcG9ydCBnZXRCb2R5U2Nyb2xsYmFyV2lkdGggZnJvbSAnLi9nZXRTY3JvbGxiYXJXaWR0aCc7XG5leHBvcnQgY29uc3QgT1BFTl9EQVRBX0FUVFJJQlVURSA9IGRhdGFBdHRyKCdtb2RhbC1vcGVuJyk7XG5cbi8qKlxuICogTWFuYWdlcyBhIHN0YWNrIG9mIE1vZGFscyBhcyB3ZWxsIGFzIGVuc3VyaW5nXG4gKiBib2R5IHNjcm9sbGluZyBpcyBpcyBkaXNhYmxlZCBhbmQgcGFkZGluZyBhY2NvdW50ZWQgZm9yXG4gKi9cbmNsYXNzIE1vZGFsTWFuYWdlciB7XG4gIGNvbnN0cnVjdG9yKHtcbiAgICBvd25lckRvY3VtZW50LFxuICAgIGhhbmRsZUNvbnRhaW5lck92ZXJmbG93ID0gdHJ1ZSxcbiAgICBpc1JUTCA9IGZhbHNlXG4gIH0gPSB7fSkge1xuICAgIHRoaXMuaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3cgPSBoYW5kbGVDb250YWluZXJPdmVyZmxvdztcbiAgICB0aGlzLmlzUlRMID0gaXNSVEw7XG4gICAgdGhpcy5tb2RhbHMgPSBbXTtcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lckRvY3VtZW50O1xuICB9XG4gIGdldFNjcm9sbGJhcldpZHRoKCkge1xuICAgIHJldHVybiBnZXRCb2R5U2Nyb2xsYmFyV2lkdGgodGhpcy5vd25lckRvY3VtZW50KTtcbiAgfVxuICBnZXRFbGVtZW50KCkge1xuICAgIHJldHVybiAodGhpcy5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50KS5ib2R5O1xuICB9XG4gIHNldE1vZGFsQXR0cmlidXRlcyhfbW9kYWwpIHtcbiAgICAvLyBGb3Igb3ZlcnJpZGluZ1xuICB9XG4gIHJlbW92ZU1vZGFsQXR0cmlidXRlcyhfbW9kYWwpIHtcbiAgICAvLyBGb3Igb3ZlcnJpZGluZ1xuICB9XG4gIHNldENvbnRhaW5lclN0eWxlKGNvbnRhaW5lclN0YXRlKSB7XG4gICAgY29uc3Qgc3R5bGUgPSB7XG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgICB9O1xuXG4gICAgLy8gd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgYWN0dWFsIGBzdHlsZWAgaGVyZVxuICAgIC8vIGJlY2F1c2Ugd2Ugd2lsbCBvdmVycmlkZSBpdFxuICAgIGNvbnN0IHBhZGRpbmdQcm9wID0gdGhpcy5pc1JUTCA/ICdwYWRkaW5nTGVmdCcgOiAncGFkZGluZ1JpZ2h0JztcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmdldEVsZW1lbnQoKTtcbiAgICBjb250YWluZXJTdGF0ZS5zdHlsZSA9IHtcbiAgICAgIG92ZXJmbG93OiBjb250YWluZXIuc3R5bGUub3ZlcmZsb3csXG4gICAgICBbcGFkZGluZ1Byb3BdOiBjb250YWluZXIuc3R5bGVbcGFkZGluZ1Byb3BdXG4gICAgfTtcbiAgICBpZiAoY29udGFpbmVyU3RhdGUuc2Nyb2xsQmFyV2lkdGgpIHtcbiAgICAgIC8vIHVzZSBjb21wdXRlZCBzdHlsZSwgaGVyZSB0byBnZXQgdGhlIHJlYWwgcGFkZGluZ1xuICAgICAgLy8gdG8gYWRkIG91ciBzY3JvbGxiYXIgd2lkdGhcbiAgICAgIHN0eWxlW3BhZGRpbmdQcm9wXSA9IGAke3BhcnNlSW50KGNzcyhjb250YWluZXIsIHBhZGRpbmdQcm9wKSB8fCAnMCcsIDEwKSArIGNvbnRhaW5lclN0YXRlLnNjcm9sbEJhcldpZHRofXB4YDtcbiAgICB9XG4gICAgY29udGFpbmVyLnNldEF0dHJpYnV0ZShPUEVOX0RBVEFfQVRUUklCVVRFLCAnJyk7XG4gICAgY3NzKGNvbnRhaW5lciwgc3R5bGUpO1xuICB9XG4gIHJlc2V0KCkge1xuICAgIFsuLi50aGlzLm1vZGFsc10uZm9yRWFjaChtID0+IHRoaXMucmVtb3ZlKG0pKTtcbiAgfVxuICByZW1vdmVDb250YWluZXJTdHlsZShjb250YWluZXJTdGF0ZSkge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0RWxlbWVudCgpO1xuICAgIGNvbnRhaW5lci5yZW1vdmVBdHRyaWJ1dGUoT1BFTl9EQVRBX0FUVFJJQlVURSk7XG4gICAgT2JqZWN0LmFzc2lnbihjb250YWluZXIuc3R5bGUsIGNvbnRhaW5lclN0YXRlLnN0eWxlKTtcbiAgfVxuICBhZGQobW9kYWwpIHtcbiAgICBsZXQgbW9kYWxJZHggPSB0aGlzLm1vZGFscy5pbmRleE9mKG1vZGFsKTtcbiAgICBpZiAobW9kYWxJZHggIT09IC0xKSB7XG4gICAgICByZXR1cm4gbW9kYWxJZHg7XG4gICAgfVxuICAgIG1vZGFsSWR4ID0gdGhpcy5tb2RhbHMubGVuZ3RoO1xuICAgIHRoaXMubW9kYWxzLnB1c2gobW9kYWwpO1xuICAgIHRoaXMuc2V0TW9kYWxBdHRyaWJ1dGVzKG1vZGFsKTtcbiAgICBpZiAobW9kYWxJZHggIT09IDApIHtcbiAgICAgIHJldHVybiBtb2RhbElkeDtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHNjcm9sbEJhcldpZHRoOiB0aGlzLmdldFNjcm9sbGJhcldpZHRoKCksXG4gICAgICBzdHlsZToge31cbiAgICB9O1xuICAgIGlmICh0aGlzLmhhbmRsZUNvbnRhaW5lck92ZXJmbG93KSB7XG4gICAgICB0aGlzLnNldENvbnRhaW5lclN0eWxlKHRoaXMuc3RhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gbW9kYWxJZHg7XG4gIH1cbiAgcmVtb3ZlKG1vZGFsKSB7XG4gICAgY29uc3QgbW9kYWxJZHggPSB0aGlzLm1vZGFscy5pbmRleE9mKG1vZGFsKTtcbiAgICBpZiAobW9kYWxJZHggPT09IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubW9kYWxzLnNwbGljZShtb2RhbElkeCwgMSk7XG5cbiAgICAvLyBpZiB0aGF0IHdhcyB0aGUgbGFzdCBtb2RhbCBpbiBhIGNvbnRhaW5lcixcbiAgICAvLyBjbGVhbiB1cCB0aGUgY29udGFpbmVyXG4gICAgaWYgKCF0aGlzLm1vZGFscy5sZW5ndGggJiYgdGhpcy5oYW5kbGVDb250YWluZXJPdmVyZmxvdykge1xuICAgICAgdGhpcy5yZW1vdmVDb250YWluZXJTdHlsZSh0aGlzLnN0YXRlKTtcbiAgICB9XG4gICAgdGhpcy5yZW1vdmVNb2RhbEF0dHJpYnV0ZXMobW9kYWwpO1xuICB9XG4gIGlzVG9wTW9kYWwobW9kYWwpIHtcbiAgICByZXR1cm4gISF0aGlzLm1vZGFscy5sZW5ndGggJiYgdGhpcy5tb2RhbHNbdGhpcy5tb2RhbHMubGVuZ3RoIC0gMV0gPT09IG1vZGFsO1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCBNb2RhbE1hbmFnZXI7IiwiLyoqXG4gKiBHZXQgdGhlIHdpZHRoIG9mIHRoZSB2ZXJ0aWNhbCB3aW5kb3cgc2Nyb2xsYmFyIGlmIGl0J3MgdmlzaWJsZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCb2R5U2Nyb2xsYmFyV2lkdGgob3duZXJEb2N1bWVudCA9IGRvY3VtZW50KSB7XG4gIGNvbnN0IHdpbmRvdyA9IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gIHJldHVybiBNYXRoLmFicyh3aW5kb3cuaW5uZXJXaWR0aCAtIG93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKTtcbn0iLCJpbXBvcnQgb3duZXJEb2N1bWVudCBmcm9tICdkb20taGVscGVycy9vd25lckRvY3VtZW50JztcbmltcG9ydCBjYW5Vc2VET00gZnJvbSAnZG9tLWhlbHBlcnMvY2FuVXNlRE9NJztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlV2luZG93IGZyb20gJy4vdXNlV2luZG93JztcbmV4cG9ydCBjb25zdCByZXNvbHZlQ29udGFpbmVyUmVmID0gKHJlZiwgZG9jdW1lbnQpID0+IHtcbiAgaWYgKCFjYW5Vc2VET00pIHJldHVybiBudWxsO1xuICBpZiAocmVmID09IG51bGwpIHJldHVybiAoZG9jdW1lbnQgfHwgb3duZXJEb2N1bWVudCgpKS5ib2R5O1xuICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykgcmVmID0gcmVmKCk7XG4gIGlmIChyZWYgJiYgJ2N1cnJlbnQnIGluIHJlZikgcmVmID0gcmVmLmN1cnJlbnQ7XG4gIGlmIChyZWYgJiYgKCdub2RlVHlwZScgaW4gcmVmIHx8IHJlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QpKSByZXR1cm4gcmVmO1xuICByZXR1cm4gbnVsbDtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VXYWl0Rm9yRE9NUmVmKHJlZiwgb25SZXNvbHZlZCkge1xuICBjb25zdCB3aW5kb3cgPSB1c2VXaW5kb3coKTtcbiAgY29uc3QgW3Jlc29sdmVkUmVmLCBzZXRSZWZdID0gdXNlU3RhdGUoKCkgPT4gcmVzb2x2ZUNvbnRhaW5lclJlZihyZWYsIHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmRvY3VtZW50KSk7XG4gIGlmICghcmVzb2x2ZWRSZWYpIHtcbiAgICBjb25zdCBlYXJseVJlZiA9IHJlc29sdmVDb250YWluZXJSZWYocmVmKTtcbiAgICBpZiAoZWFybHlSZWYpIHNldFJlZihlYXJseVJlZik7XG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob25SZXNvbHZlZCAmJiByZXNvbHZlZFJlZikge1xuICAgICAgb25SZXNvbHZlZChyZXNvbHZlZFJlZik7XG4gICAgfVxuICB9LCBbb25SZXNvbHZlZCwgcmVzb2x2ZWRSZWZdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXh0UmVmID0gcmVzb2x2ZUNvbnRhaW5lclJlZihyZWYpO1xuICAgIGlmIChuZXh0UmVmICE9PSByZXNvbHZlZFJlZikge1xuICAgICAgc2V0UmVmKG5leHRSZWYpO1xuICAgIH1cbiAgfSwgW3JlZiwgcmVzb2x2ZWRSZWZdKTtcbiAgcmV0dXJuIHJlc29sdmVkUmVmO1xufSIsImltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHVzZU1lcmdlZFJlZnMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTWVyZ2VkUmVmcyc7XG5pbXBvcnQgeyBjbG9uZUVsZW1lbnQsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuZnVuY3Rpb24gTm9vcFRyYW5zaXRpb24oe1xuICBjaGlsZHJlbixcbiAgaW46IGluUHJvcCxcbiAgb25FeGl0ZWQsXG4gIG1vdW50T25FbnRlcixcbiAgdW5tb3VudE9uRXhpdFxufSkge1xuICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhc0VudGVyZWRSZWYgPSB1c2VSZWYoaW5Qcm9wKTtcbiAgY29uc3QgaGFuZGxlRXhpdGVkID0gdXNlRXZlbnRDYWxsYmFjayhvbkV4aXRlZCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluUHJvcCkgaGFzRW50ZXJlZFJlZi5jdXJyZW50ID0gdHJ1ZTtlbHNlIHtcbiAgICAgIGhhbmRsZUV4aXRlZChyZWYuY3VycmVudCk7XG4gICAgfVxuICB9LCBbaW5Qcm9wLCBoYW5kbGVFeGl0ZWRdKTtcbiAgY29uc3QgY29tYmluZWRSZWYgPSB1c2VNZXJnZWRSZWZzKHJlZiwgY2hpbGRyZW4ucmVmKTtcbiAgY29uc3QgY2hpbGQgPSAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgcmVmOiBjb21iaW5lZFJlZlxuICB9KTtcbiAgaWYgKGluUHJvcCkgcmV0dXJuIGNoaWxkO1xuICBpZiAodW5tb3VudE9uRXhpdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICghaGFzRW50ZXJlZFJlZi5jdXJyZW50ICYmIG1vdW50T25FbnRlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBjaGlsZDtcbn1cbmV4cG9ydCBkZWZhdWx0IE5vb3BUcmFuc2l0aW9uOyIsImltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgdXNlSXNvbW9ycGhpY0VmZmVjdCBmcm9tICdAcmVzdGFydC9ob29rcy91c2VJc29tb3JwaGljRWZmZWN0JztcbmltcG9ydCBSZWFjdCwgeyB1c2VSZWYsIGNsb25lRWxlbWVudCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTm9vcFRyYW5zaXRpb24gZnJvbSAnLi9Ob29wVHJhbnNpdGlvbic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVRyYW5zaXRpb24oe1xuICBpbjogaW5Qcm9wLFxuICBvblRyYW5zaXRpb25cbn0pIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBpc0luaXRpYWxSZWYgPSB1c2VSZWYodHJ1ZSk7XG4gIGNvbnN0IGhhbmRsZVRyYW5zaXRpb24gPSB1c2VFdmVudENhbGxiYWNrKG9uVHJhbnNpdGlvbik7XG4gIHVzZUlzb21vcnBoaWNFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGxldCBzdGFsZSA9IGZhbHNlO1xuICAgIGhhbmRsZVRyYW5zaXRpb24oe1xuICAgICAgaW46IGluUHJvcCxcbiAgICAgIGVsZW1lbnQ6IHJlZi5jdXJyZW50LFxuICAgICAgaW5pdGlhbDogaXNJbml0aWFsUmVmLmN1cnJlbnQsXG4gICAgICBpc1N0YWxlOiAoKSA9PiBzdGFsZVxuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzdGFsZSA9IHRydWU7XG4gICAgfTtcbiAgfSwgW2luUHJvcCwgaGFuZGxlVHJhbnNpdGlvbl0pO1xuICB1c2VJc29tb3JwaGljRWZmZWN0KCgpID0+IHtcbiAgICBpc0luaXRpYWxSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIC8vIHRoaXMgaXMgZm9yIHN0cmljdCBtb2RlXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlzSW5pdGlhbFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHJldHVybiByZWY7XG59XG4vKipcbiAqIEFkYXB0cyBhbiBpbXBlcmF0aXZlIHRyYW5zaXRpb24gZnVuY3Rpb24gdG8gYSBzdWJzZXQgb2YgdGhlIFJURyBgPFRyYW5zaXRpb24+YCBjb21wb25lbnQgQVBJLlxuICpcbiAqIEltcGVyYXRpdmVUcmFuc2l0aW9uIGRvZXMgbm90IHN1cHBvcnQgbW91bnRpbmcgb3B0aW9ucyBvciBgYXBwZWFyYCBhdCB0aGUgbW9tZW50LCBtZWFuaW5nXG4gKiB0aGF0IGl0IGFsd2F5cyBhY3RzIGxpa2U6IGBtb3VudE9uRW50ZXI9e3RydWV9IHVubW91bnRPbkV4aXQ9e3RydWV9IGFwcGVhcj17dHJ1ZX1gXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEltcGVyYXRpdmVUcmFuc2l0aW9uKHtcbiAgY2hpbGRyZW4sXG4gIGluOiBpblByb3AsXG4gIG9uRXhpdGVkLFxuICBvbkVudGVyZWQsXG4gIHRyYW5zaXRpb25cbn0pIHtcbiAgY29uc3QgW2V4aXRlZCwgc2V0RXhpdGVkXSA9IHVzZVN0YXRlKCFpblByb3ApO1xuXG4gIC8vIFRPRE86IEkgdGhpbmsgdGhpcyBuZWVkcyB0byBiZSBpbiBhbiBlZmZlY3RcbiAgaWYgKGluUHJvcCAmJiBleGl0ZWQpIHtcbiAgICBzZXRFeGl0ZWQoZmFsc2UpO1xuICB9XG4gIGNvbnN0IHJlZiA9IHVzZVRyYW5zaXRpb24oe1xuICAgIGluOiAhIWluUHJvcCxcbiAgICBvblRyYW5zaXRpb246IG9wdGlvbnMgPT4ge1xuICAgICAgY29uc3Qgb25GaW5pc2ggPSAoKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zLmlzU3RhbGUoKSkgcmV0dXJuO1xuICAgICAgICBpZiAob3B0aW9ucy5pbikge1xuICAgICAgICAgIG9uRW50ZXJlZCA9PSBudWxsID8gdm9pZCAwIDogb25FbnRlcmVkKG9wdGlvbnMuZWxlbWVudCwgb3B0aW9ucy5pbml0aWFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRFeGl0ZWQodHJ1ZSk7XG4gICAgICAgICAgb25FeGl0ZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRXhpdGVkKG9wdGlvbnMuZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBQcm9taXNlLnJlc29sdmUodHJhbnNpdGlvbihvcHRpb25zKSkudGhlbihvbkZpbmlzaCwgZXJyb3IgPT4ge1xuICAgICAgICBpZiAoIW9wdGlvbnMuaW4pIHNldEV4aXRlZCh0cnVlKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBjb21iaW5lZFJlZiA9IHVzZU1lcmdlZFJlZnMocmVmLCBjaGlsZHJlbi5yZWYpO1xuICByZXR1cm4gZXhpdGVkICYmICFpblByb3AgPyBudWxsIDogLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgIHJlZjogY29tYmluZWRSZWZcbiAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyVHJhbnNpdGlvbihDb21wb25lbnQsIHJ1blRyYW5zaXRpb24sIHByb3BzKSB7XG4gIGlmIChDb21wb25lbnQpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcykpO1xuICB9XG4gIGlmIChydW5UcmFuc2l0aW9uKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEltcGVyYXRpdmVUcmFuc2l0aW9uLCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgdHJhbnNpdGlvbjogcnVuVHJhbnNpdGlvblxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goTm9vcFRyYW5zaXRpb24sIE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSk7XG59IiwiY29uc3QgX2V4Y2x1ZGVkID0gW1wic2hvd1wiLCBcInJvbGVcIiwgXCJjbGFzc05hbWVcIiwgXCJzdHlsZVwiLCBcImNoaWxkcmVuXCIsIFwiYmFja2Ryb3BcIiwgXCJrZXlib2FyZFwiLCBcIm9uQmFja2Ryb3BDbGlja1wiLCBcIm9uRXNjYXBlS2V5RG93blwiLCBcInRyYW5zaXRpb25cIiwgXCJydW5UcmFuc2l0aW9uXCIsIFwiYmFja2Ryb3BUcmFuc2l0aW9uXCIsIFwicnVuQmFja2Ryb3BUcmFuc2l0aW9uXCIsIFwiYXV0b0ZvY3VzXCIsIFwiZW5mb3JjZUZvY3VzXCIsIFwicmVzdG9yZUZvY3VzXCIsIFwicmVzdG9yZUZvY3VzT3B0aW9uc1wiLCBcInJlbmRlckRpYWxvZ1wiLCBcInJlbmRlckJhY2tkcm9wXCIsIFwibWFuYWdlclwiLCBcImNvbnRhaW5lclwiLCBcIm9uU2hvd1wiLCBcIm9uSGlkZVwiLCBcIm9uRXhpdFwiLCBcIm9uRXhpdGVkXCIsIFwib25FeGl0aW5nXCIsIFwib25FbnRlclwiLCBcIm9uRW50ZXJpbmdcIiwgXCJvbkVudGVyZWRcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmUsIHJlYWN0L3Byb3AtdHlwZXMgKi9cblxuaW1wb3J0IGFjdGl2ZUVsZW1lbnQgZnJvbSAnZG9tLWhlbHBlcnMvYWN0aXZlRWxlbWVudCc7XG5pbXBvcnQgY29udGFpbnMgZnJvbSAnZG9tLWhlbHBlcnMvY29udGFpbnMnO1xuaW1wb3J0IGNhblVzZURPTSBmcm9tICdkb20taGVscGVycy9jYW5Vc2VET00nO1xuaW1wb3J0IGxpc3RlbiBmcm9tICdkb20taGVscGVycy9saXN0ZW4nO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlQ2FsbGJhY2ssIHVzZUltcGVyYXRpdmVIYW5kbGUsIGZvcndhcmRSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHVzZU1vdW50ZWQgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTW91bnRlZCc7XG5pbXBvcnQgdXNlV2lsbFVubW91bnQgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlV2lsbFVubW91bnQnO1xuaW1wb3J0IHVzZVByZXZpb3VzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZVByZXZpb3VzJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IE1vZGFsTWFuYWdlciBmcm9tICcuL01vZGFsTWFuYWdlcic7XG5pbXBvcnQgdXNlV2FpdEZvckRPTVJlZiBmcm9tICcuL3VzZVdhaXRGb3JET01SZWYnO1xuaW1wb3J0IHVzZVdpbmRvdyBmcm9tICcuL3VzZVdpbmRvdyc7XG5pbXBvcnQgeyByZW5kZXJUcmFuc2l0aW9uIH0gZnJvbSAnLi9JbXBlcmF0aXZlVHJhbnNpdGlvbic7XG5pbXBvcnQgeyBpc0VzY0tleSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xubGV0IG1hbmFnZXI7XG5mdW5jdGlvbiBnZXRNYW5hZ2VyKHdpbmRvdykge1xuICBpZiAoIW1hbmFnZXIpIG1hbmFnZXIgPSBuZXcgTW9kYWxNYW5hZ2VyKHtcbiAgICBvd25lckRvY3VtZW50OiB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5kb2N1bWVudFxuICB9KTtcbiAgcmV0dXJuIG1hbmFnZXI7XG59XG5mdW5jdGlvbiB1c2VNb2RhbE1hbmFnZXIocHJvdmlkZWQpIHtcbiAgY29uc3Qgd2luZG93ID0gdXNlV2luZG93KCk7XG4gIGNvbnN0IG1vZGFsTWFuYWdlciA9IHByb3ZpZGVkIHx8IGdldE1hbmFnZXIod2luZG93KTtcbiAgY29uc3QgbW9kYWwgPSB1c2VSZWYoe1xuICAgIGRpYWxvZzogbnVsbCxcbiAgICBiYWNrZHJvcDogbnVsbFxuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24obW9kYWwuY3VycmVudCwge1xuICAgIGFkZDogKCkgPT4gbW9kYWxNYW5hZ2VyLmFkZChtb2RhbC5jdXJyZW50KSxcbiAgICByZW1vdmU6ICgpID0+IG1vZGFsTWFuYWdlci5yZW1vdmUobW9kYWwuY3VycmVudCksXG4gICAgaXNUb3BNb2RhbDogKCkgPT4gbW9kYWxNYW5hZ2VyLmlzVG9wTW9kYWwobW9kYWwuY3VycmVudCksXG4gICAgc2V0RGlhbG9nUmVmOiB1c2VDYWxsYmFjayhyZWYgPT4ge1xuICAgICAgbW9kYWwuY3VycmVudC5kaWFsb2cgPSByZWY7XG4gICAgfSwgW10pLFxuICAgIHNldEJhY2tkcm9wUmVmOiB1c2VDYWxsYmFjayhyZWYgPT4ge1xuICAgICAgbW9kYWwuY3VycmVudC5iYWNrZHJvcCA9IHJlZjtcbiAgICB9LCBbXSlcbiAgfSk7XG59XG5jb25zdCBNb2RhbCA9IC8qI19fUFVSRV9fKi9mb3J3YXJkUmVmKChfcmVmLCByZWYpID0+IHtcbiAgbGV0IHtcbiAgICAgIHNob3cgPSBmYWxzZSxcbiAgICAgIHJvbGUgPSAnZGlhbG9nJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIHN0eWxlLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBiYWNrZHJvcCA9IHRydWUsXG4gICAgICBrZXlib2FyZCA9IHRydWUsXG4gICAgICBvbkJhY2tkcm9wQ2xpY2ssXG4gICAgICBvbkVzY2FwZUtleURvd24sXG4gICAgICB0cmFuc2l0aW9uLFxuICAgICAgcnVuVHJhbnNpdGlvbixcbiAgICAgIGJhY2tkcm9wVHJhbnNpdGlvbixcbiAgICAgIHJ1bkJhY2tkcm9wVHJhbnNpdGlvbixcbiAgICAgIGF1dG9Gb2N1cyA9IHRydWUsXG4gICAgICBlbmZvcmNlRm9jdXMgPSB0cnVlLFxuICAgICAgcmVzdG9yZUZvY3VzID0gdHJ1ZSxcbiAgICAgIHJlc3RvcmVGb2N1c09wdGlvbnMsXG4gICAgICByZW5kZXJEaWFsb2csXG4gICAgICByZW5kZXJCYWNrZHJvcCA9IHByb3BzID0+IC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSksXG4gICAgICBtYW5hZ2VyOiBwcm92aWRlZE1hbmFnZXIsXG4gICAgICBjb250YWluZXI6IGNvbnRhaW5lclJlZixcbiAgICAgIG9uU2hvdyxcbiAgICAgIG9uSGlkZSA9ICgpID0+IHt9LFxuICAgICAgb25FeGl0LFxuICAgICAgb25FeGl0ZWQsXG4gICAgICBvbkV4aXRpbmcsXG4gICAgICBvbkVudGVyLFxuICAgICAgb25FbnRlcmluZyxcbiAgICAgIG9uRW50ZXJlZFxuICAgIH0gPSBfcmVmLFxuICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBjb250YWluZXIgPSB1c2VXYWl0Rm9yRE9NUmVmKGNvbnRhaW5lclJlZik7XG4gIGNvbnN0IG1vZGFsID0gdXNlTW9kYWxNYW5hZ2VyKHByb3ZpZGVkTWFuYWdlcik7XG4gIGNvbnN0IGlzTW91bnRlZCA9IHVzZU1vdW50ZWQoKTtcbiAgY29uc3QgcHJldlNob3cgPSB1c2VQcmV2aW91cyhzaG93KTtcbiAgY29uc3QgW2V4aXRlZCwgc2V0RXhpdGVkXSA9IHVzZVN0YXRlKCFzaG93KTtcbiAgY29uc3QgbGFzdEZvY3VzUmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gbW9kYWwsIFttb2RhbF0pO1xuICBpZiAoY2FuVXNlRE9NICYmICFwcmV2U2hvdyAmJiBzaG93KSB7XG4gICAgbGFzdEZvY3VzUmVmLmN1cnJlbnQgPSBhY3RpdmVFbGVtZW50KCk7XG4gIH1cblxuICAvLyBUT0RPOiBJIHRoaW5rIHRoaXMgbmVlZHMgdG8gYmUgaW4gYW4gZWZmZWN0XG4gIGlmIChzaG93ICYmIGV4aXRlZCkge1xuICAgIHNldEV4aXRlZChmYWxzZSk7XG4gIH1cbiAgY29uc3QgaGFuZGxlU2hvdyA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIG1vZGFsLmFkZCgpO1xuICAgIHJlbW92ZUtleWRvd25MaXN0ZW5lclJlZi5jdXJyZW50ID0gbGlzdGVuKGRvY3VtZW50LCAna2V5ZG93bicsIGhhbmRsZURvY3VtZW50S2V5RG93bik7XG4gICAgcmVtb3ZlRm9jdXNMaXN0ZW5lclJlZi5jdXJyZW50ID0gbGlzdGVuKGRvY3VtZW50LCAnZm9jdXMnLFxuICAgIC8vIHRoZSB0aW1lb3V0IGlzIG5lY2Vzc2FyeSBiL2MgdGhpcyB3aWxsIHJ1biBiZWZvcmUgdGhlIG5ldyBtb2RhbCBpcyBtb3VudGVkXG4gICAgLy8gYW5kIHNvIHN0ZWFscyBmb2N1cyBmcm9tIGl0XG4gICAgKCkgPT4gc2V0VGltZW91dChoYW5kbGVFbmZvcmNlRm9jdXMpLCB0cnVlKTtcbiAgICBpZiAob25TaG93KSB7XG4gICAgICBvblNob3coKTtcbiAgICB9XG5cbiAgICAvLyBhdXRvZm9jdXMgYWZ0ZXIgb25TaG93IHRvIG5vdCB0cmlnZ2VyIGEgZm9jdXMgZXZlbnQgZm9yIHByZXZpb3VzXG4gICAgLy8gbW9kYWxzIGJlZm9yZSB0aGlzIG9uZSBpcyBzaG93bi5cbiAgICBpZiAoYXV0b0ZvY3VzKSB7XG4gICAgICBjb25zdCBjdXJyZW50QWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQoZG9jdW1lbnQpO1xuICAgICAgaWYgKG1vZGFsLmRpYWxvZyAmJiBjdXJyZW50QWN0aXZlRWxlbWVudCAmJiAhY29udGFpbnMobW9kYWwuZGlhbG9nLCBjdXJyZW50QWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgbGFzdEZvY3VzUmVmLmN1cnJlbnQgPSBjdXJyZW50QWN0aXZlRWxlbWVudDtcbiAgICAgICAgbW9kYWwuZGlhbG9nLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlSGlkZSA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIG1vZGFsLnJlbW92ZSgpO1xuICAgIHJlbW92ZUtleWRvd25MaXN0ZW5lclJlZi5jdXJyZW50ID09IG51bGwgPyB2b2lkIDAgOiByZW1vdmVLZXlkb3duTGlzdGVuZXJSZWYuY3VycmVudCgpO1xuICAgIHJlbW92ZUZvY3VzTGlzdGVuZXJSZWYuY3VycmVudCA9PSBudWxsID8gdm9pZCAwIDogcmVtb3ZlRm9jdXNMaXN0ZW5lclJlZi5jdXJyZW50KCk7XG4gICAgaWYgKHJlc3RvcmVGb2N1cykge1xuICAgICAgdmFyIF9sYXN0Rm9jdXNSZWYkY3VycmVudDtcbiAgICAgIC8vIFN1cHBvcnQ6IDw9SUUxMSBkb2Vzbid0IHN1cHBvcnQgYGZvY3VzKClgIG9uIHN2ZyBlbGVtZW50cyAoUkI6ICM5MTcpXG4gICAgICAoX2xhc3RGb2N1c1JlZiRjdXJyZW50ID0gbGFzdEZvY3VzUmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbGFzdEZvY3VzUmVmJGN1cnJlbnQuZm9jdXMgPT0gbnVsbCA/IHZvaWQgMCA6IF9sYXN0Rm9jdXNSZWYkY3VycmVudC5mb2N1cyhyZXN0b3JlRm9jdXNPcHRpb25zKTtcbiAgICAgIGxhc3RGb2N1c1JlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIFRPRE86IHRyeSBhbmQgY29tYmluZSB0aGVzZSBlZmZlY3RzOiBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LW92ZXJsYXlzL3B1bGwvNzk0I2Rpc2N1c3Npb25fcjQwOTk1NDEyMFxuXG4gIC8vIFNob3cgbG9naWMgd2hlbjpcbiAgLy8gIC0gc2hvdyBpcyBgdHJ1ZWAgX2FuZF8gYGNvbnRhaW5lcmAgaGFzIHJlc29sdmVkXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93IHx8ICFjb250YWluZXIpIHJldHVybjtcbiAgICBoYW5kbGVTaG93KCk7XG4gIH0sIFtzaG93LCBjb250YWluZXIsIC8qIHNob3VsZCBuZXZlciBjaGFuZ2U6ICovaGFuZGxlU2hvd10pO1xuXG4gIC8vIEhpZGUgY2xlYW51cCBsb2dpYyB3aGVuOlxuICAvLyAgLSBgZXhpdGVkYCBzd2l0Y2hlcyB0byB0cnVlXG4gIC8vICAtIGNvbXBvbmVudCB1bm1vdW50cztcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWV4aXRlZCkgcmV0dXJuO1xuICAgIGhhbmRsZUhpZGUoKTtcbiAgfSwgW2V4aXRlZCwgaGFuZGxlSGlkZV0pO1xuICB1c2VXaWxsVW5tb3VudCgoKSA9PiB7XG4gICAgaGFuZGxlSGlkZSgpO1xuICB9KTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGNvbnN0IGhhbmRsZUVuZm9yY2VGb2N1cyA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghZW5mb3JjZUZvY3VzIHx8ICFpc01vdW50ZWQoKSB8fCAhbW9kYWwuaXNUb3BNb2RhbCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVFbGVtZW50ID0gYWN0aXZlRWxlbWVudCgpO1xuICAgIGlmIChtb2RhbC5kaWFsb2cgJiYgY3VycmVudEFjdGl2ZUVsZW1lbnQgJiYgIWNvbnRhaW5zKG1vZGFsLmRpYWxvZywgY3VycmVudEFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICBtb2RhbC5kaWFsb2cuZm9jdXMoKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBpZiAoZS50YXJnZXQgIT09IGUuY3VycmVudFRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBvbkJhY2tkcm9wQ2xpY2sgPT0gbnVsbCA/IHZvaWQgMCA6IG9uQmFja2Ryb3BDbGljayhlKTtcbiAgICBpZiAoYmFja2Ryb3AgPT09IHRydWUpIHtcbiAgICAgIG9uSGlkZSgpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhbmRsZURvY3VtZW50S2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soZSA9PiB7XG4gICAgaWYgKGtleWJvYXJkICYmIGlzRXNjS2V5KGUpICYmIG1vZGFsLmlzVG9wTW9kYWwoKSkge1xuICAgICAgb25Fc2NhcGVLZXlEb3duID09IG51bGwgPyB2b2lkIDAgOiBvbkVzY2FwZUtleURvd24oZSk7XG4gICAgICBpZiAoIWUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICBvbkhpZGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCByZW1vdmVGb2N1c0xpc3RlbmVyUmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IHJlbW92ZUtleWRvd25MaXN0ZW5lclJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBoYW5kbGVIaWRkZW4gPSAoLi4uYXJncykgPT4ge1xuICAgIHNldEV4aXRlZCh0cnVlKTtcbiAgICBvbkV4aXRlZCA9PSBudWxsID8gdm9pZCAwIDogb25FeGl0ZWQoLi4uYXJncyk7XG4gIH07XG4gIGlmICghY29udGFpbmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgZGlhbG9nUHJvcHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICByb2xlLFxuICAgIHJlZjogbW9kYWwuc2V0RGlhbG9nUmVmLFxuICAgIC8vIGFwcGFyZW50bHkgb25seSB3b3JrcyBvbiB0aGUgZGlhbG9nIHJvbGUgZWxlbWVudFxuICAgICdhcmlhLW1vZGFsJzogcm9sZSA9PT0gJ2RpYWxvZycgPyB0cnVlIDogdW5kZWZpbmVkXG4gIH0sIHJlc3QsIHtcbiAgICBzdHlsZSxcbiAgICBjbGFzc05hbWUsXG4gICAgdGFiSW5kZXg6IC0xXG4gIH0pO1xuICBsZXQgZGlhbG9nID0gcmVuZGVyRGlhbG9nID8gcmVuZGVyRGlhbG9nKGRpYWxvZ1Byb3BzKSA6IC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIGRpYWxvZ1Byb3BzLCB7XG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgIHJvbGU6ICdkb2N1bWVudCdcbiAgICB9KVxuICB9KSk7XG4gIGRpYWxvZyA9IHJlbmRlclRyYW5zaXRpb24odHJhbnNpdGlvbiwgcnVuVHJhbnNpdGlvbiwge1xuICAgIHVubW91bnRPbkV4aXQ6IHRydWUsXG4gICAgbW91bnRPbkVudGVyOiB0cnVlLFxuICAgIGFwcGVhcjogdHJ1ZSxcbiAgICBpbjogISFzaG93LFxuICAgIG9uRXhpdCxcbiAgICBvbkV4aXRpbmcsXG4gICAgb25FeGl0ZWQ6IGhhbmRsZUhpZGRlbixcbiAgICBvbkVudGVyLFxuICAgIG9uRW50ZXJpbmcsXG4gICAgb25FbnRlcmVkLFxuICAgIGNoaWxkcmVuOiBkaWFsb2dcbiAgfSk7XG4gIGxldCBiYWNrZHJvcEVsZW1lbnQgPSBudWxsO1xuICBpZiAoYmFja2Ryb3ApIHtcbiAgICBiYWNrZHJvcEVsZW1lbnQgPSByZW5kZXJCYWNrZHJvcCh7XG4gICAgICByZWY6IG1vZGFsLnNldEJhY2tkcm9wUmVmLFxuICAgICAgb25DbGljazogaGFuZGxlQmFja2Ryb3BDbGlja1xuICAgIH0pO1xuICAgIGJhY2tkcm9wRWxlbWVudCA9IHJlbmRlclRyYW5zaXRpb24oYmFja2Ryb3BUcmFuc2l0aW9uLCBydW5CYWNrZHJvcFRyYW5zaXRpb24sIHtcbiAgICAgIGluOiAhIXNob3csXG4gICAgICBhcHBlYXI6IHRydWUsXG4gICAgICBtb3VudE9uRW50ZXI6IHRydWUsXG4gICAgICB1bm1vdW50T25FeGl0OiB0cnVlLFxuICAgICAgY2hpbGRyZW46IGJhY2tkcm9wRWxlbWVudFxuICAgIH0pO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL1JlYWN0RE9NLmNyZWF0ZVBvcnRhbCggLyojX19QVVJFX18qL19qc3hzKF9GcmFnbWVudCwge1xuICAgICAgY2hpbGRyZW46IFtiYWNrZHJvcEVsZW1lbnQsIGRpYWxvZ11cbiAgICB9KSwgY29udGFpbmVyKVxuICB9KTtcbn0pO1xuTW9kYWwuZGlzcGxheU5hbWUgPSAnTW9kYWwnO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihNb2RhbCwge1xuICBNYW5hZ2VyOiBNb2RhbE1hbmFnZXJcbn0pOyIsImltcG9ydCB1c2VVcGRhdGVkUmVmIGZyb20gJy4vdXNlVXBkYXRlZFJlZic7XG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEF0dGFjaCBhIGNhbGxiYWNrIHRoYXQgZmlyZXMgd2hlbiBhIGNvbXBvbmVudCB1bm1vdW50c1xuICpcbiAqIEBwYXJhbSBmbiBIYW5kbGVyIHRvIHJ1biB3aGVuIHRoZSBjb21wb25lbnQgdW5tb3VudHNcbiAqIEBjYXRlZ29yeSBlZmZlY3RzXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlV2lsbFVubW91bnQoZm4pIHtcbiAgdmFyIG9uVW5tb3VudCA9IHVzZVVwZGF0ZWRSZWYoZm4pO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gb25Vbm1vdW50LmN1cnJlbnQoKTtcbiAgICB9O1xuICB9LCBbXSk7XG59IiwiaW1wb3J0IHsgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBSZXR1cm5zIGEgcmVmIHRoYXQgaXMgaW1tZWRpYXRlbHkgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdmFsdWVcbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIFJlZiB2YWx1ZVxuICogQGNhdGVnb3J5IHJlZnNcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VVcGRhdGVkUmVmKHZhbHVlKSB7XG4gIHZhciB2YWx1ZVJlZiA9IHVzZVJlZih2YWx1ZSk7XG4gIHZhbHVlUmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlUmVmO1xufSIsIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9wcmVmZXItZGVmYXVsdC1leHBvcnQgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VzY0tleShlKSB7XG4gIHJldHVybiBlLmNvZGUgPT09ICdFc2NhcGUnIHx8IGUua2V5Q29kZSA9PT0gMjc7XG59IiwiaW1wb3J0IGNyZWF0ZVdpdGhCc1ByZWZpeCBmcm9tICcuL2NyZWF0ZVdpdGhCc1ByZWZpeCc7XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVXaXRoQnNQcmVmaXgoJ29mZmNhbnZhcy1ib2R5Jyk7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBFTlRFUkVELCBFTlRFUklORywgRVhJVElORyB9IGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvVHJhbnNpdGlvbic7XG5pbXBvcnQgdHJhbnNpdGlvbkVuZExpc3RlbmVyIGZyb20gJy4vdHJhbnNpdGlvbkVuZExpc3RlbmVyJztcbmltcG9ydCBUcmFuc2l0aW9uV3JhcHBlciBmcm9tICcuL1RyYW5zaXRpb25XcmFwcGVyJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdHJhbnNpdGlvblN0eWxlcyA9IHtcbiAgW0VOVEVSSU5HXTogJ3Nob3cnLFxuICBbRU5URVJFRF06ICdzaG93J1xufTtcbmNvbnN0IE9mZmNhbnZhc1RvZ2dsaW5nID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIGluOiBpblByb3AgPSBmYWxzZSxcbiAgbW91bnRPbkVudGVyID0gZmFsc2UsXG4gIHVubW91bnRPbkV4aXQgPSBmYWxzZSxcbiAgYXBwZWFyID0gZmFsc2UsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdvZmZjYW52YXMnKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRyYW5zaXRpb25XcmFwcGVyLCB7XG4gICAgcmVmOiByZWYsXG4gICAgYWRkRW5kTGlzdGVuZXI6IHRyYW5zaXRpb25FbmRMaXN0ZW5lcixcbiAgICBpbjogaW5Qcm9wLFxuICAgIG1vdW50T25FbnRlcjogbW91bnRPbkVudGVyLFxuICAgIHVubW91bnRPbkV4aXQ6IHVubW91bnRPbkV4aXQsXG4gICAgYXBwZWFyOiBhcHBlYXIsXG4gICAgLi4ucHJvcHMsXG4gICAgY2hpbGRSZWY6IGNoaWxkcmVuLnJlZixcbiAgICBjaGlsZHJlbjogKHN0YXR1cywgaW5uZXJQcm9wcykgPT4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgLi4uaW5uZXJQcm9wcyxcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIGNoaWxkcmVuLnByb3BzLmNsYXNzTmFtZSwgKHN0YXR1cyA9PT0gRU5URVJJTkcgfHwgc3RhdHVzID09PSBFWElUSU5HKSAmJiBgJHtic1ByZWZpeH0tdG9nZ2xpbmdgLCB0cmFuc2l0aW9uU3R5bGVzW3N0YXR1c10pXG4gICAgfSlcbiAgfSk7XG59KTtcbk9mZmNhbnZhc1RvZ2dsaW5nLmRpc3BsYXlOYW1lID0gJ09mZmNhbnZhc1RvZ2dsaW5nJztcbmV4cG9ydCBkZWZhdWx0IE9mZmNhbnZhc1RvZ2dsaW5nOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IE1vZGFsQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvbkhpZGUoKSB7fVxufSk7XG5leHBvcnQgZGVmYXVsdCBNb2RhbENvbnRleHQ7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IENsb3NlQnV0dG9uIGZyb20gJy4vQ2xvc2VCdXR0b24nO1xuaW1wb3J0IE1vZGFsQ29udGV4dCBmcm9tICcuL01vZGFsQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgQWJzdHJhY3RNb2RhbEhlYWRlciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGNsb3NlTGFiZWwgPSAnQ2xvc2UnLFxuICBjbG9zZVZhcmlhbnQsXG4gIGNsb3NlQnV0dG9uID0gZmFsc2UsXG4gIG9uSGlkZSxcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTW9kYWxDb250ZXh0KTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICBjb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBjb250ZXh0Lm9uSGlkZSgpO1xuICAgIG9uSGlkZSA9PSBudWxsID8gdm9pZCAwIDogb25IaWRlKCk7XG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKFwiZGl2XCIsIHtcbiAgICByZWY6IHJlZixcbiAgICAuLi5wcm9wcyxcbiAgICBjaGlsZHJlbjogW2NoaWxkcmVuLCBjbG9zZUJ1dHRvbiAmJiAvKiNfX1BVUkVfXyovX2pzeChDbG9zZUJ1dHRvbiwge1xuICAgICAgXCJhcmlhLWxhYmVsXCI6IGNsb3NlTGFiZWwsXG4gICAgICB2YXJpYW50OiBjbG9zZVZhcmlhbnQsXG4gICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgIH0pXVxuICB9KTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQgQWJzdHJhY3RNb2RhbEhlYWRlcjsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgQWJzdHJhY3RNb2RhbEhlYWRlciBmcm9tICcuL0Fic3RyYWN0TW9kYWxIZWFkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE9mZmNhbnZhc0hlYWRlciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIGNsb3NlTGFiZWwgPSAnQ2xvc2UnLFxuICBjbG9zZUJ1dHRvbiA9IGZhbHNlLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnb2ZmY2FudmFzLWhlYWRlcicpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQWJzdHJhY3RNb2RhbEhlYWRlciwge1xuICAgIHJlZjogcmVmLFxuICAgIC4uLnByb3BzLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIGJzUHJlZml4KSxcbiAgICBjbG9zZUxhYmVsOiBjbG9zZUxhYmVsLFxuICAgIGNsb3NlQnV0dG9uOiBjbG9zZUJ1dHRvblxuICB9KTtcbn0pO1xuT2ZmY2FudmFzSGVhZGVyLmRpc3BsYXlOYW1lID0gJ09mZmNhbnZhc0hlYWRlcic7XG5leHBvcnQgZGVmYXVsdCBPZmZjYW52YXNIZWFkZXI7IiwiaW1wb3J0IGNyZWF0ZVdpdGhCc1ByZWZpeCBmcm9tICcuL2NyZWF0ZVdpdGhCc1ByZWZpeCc7XG5pbXBvcnQgZGl2V2l0aENsYXNzTmFtZSBmcm9tICcuL2RpdldpdGhDbGFzc05hbWUnO1xuY29uc3QgRGl2U3R5bGVkQXNINSA9IGRpdldpdGhDbGFzc05hbWUoJ2g1Jyk7XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVXaXRoQnNQcmVmaXgoJ29mZmNhbnZhcy10aXRsZScsIHtcbiAgQ29tcG9uZW50OiBEaXZTdHlsZWRBc0g1XG59KTsiLCJmdW5jdGlvbiByZXBsYWNlQ2xhc3NOYW1lKG9yaWdDbGFzcywgY2xhc3NUb1JlbW92ZSkge1xuICByZXR1cm4gb3JpZ0NsYXNzLnJlcGxhY2UobmV3IFJlZ0V4cChcIihefFxcXFxzKVwiICsgY2xhc3NUb1JlbW92ZSArIFwiKD86XFxcXHN8JClcIiwgJ2cnKSwgJyQxJykucmVwbGFjZSgvXFxzKy9nLCAnICcpLnJlcGxhY2UoL15cXHMqfFxccyokL2csICcnKTtcbn1cbi8qKlxuICogUmVtb3ZlcyBhIENTUyBjbGFzcyBmcm9tIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBjbGFzc05hbWUgdGhlIENTUyBjbGFzcyBuYW1lXG4gKi9cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZW1vdmVDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpIHtcbiAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0KSB7XG4gICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQuY2xhc3NOYW1lID09PSAnc3RyaW5nJykge1xuICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gcmVwbGFjZUNsYXNzTmFtZShlbGVtZW50LmNsYXNzTmFtZSwgY2xhc3NOYW1lKTtcbiAgfSBlbHNlIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCByZXBsYWNlQ2xhc3NOYW1lKGVsZW1lbnQuY2xhc3NOYW1lICYmIGVsZW1lbnQuY2xhc3NOYW1lLmJhc2VWYWwgfHwgJycsIGNsYXNzTmFtZSkpO1xuICB9XG59IiwiaW1wb3J0IGFkZENsYXNzIGZyb20gJ2RvbS1oZWxwZXJzL2FkZENsYXNzJztcbmltcG9ydCBjc3MgZnJvbSAnZG9tLWhlbHBlcnMvY3NzJztcbmltcG9ydCBxc2EgZnJvbSAnZG9tLWhlbHBlcnMvcXVlcnlTZWxlY3RvckFsbCc7XG5pbXBvcnQgcmVtb3ZlQ2xhc3MgZnJvbSAnZG9tLWhlbHBlcnMvcmVtb3ZlQ2xhc3MnO1xuaW1wb3J0IE1vZGFsTWFuYWdlciBmcm9tICdAcmVzdGFydC91aS9Nb2RhbE1hbmFnZXInO1xuY29uc3QgU2VsZWN0b3IgPSB7XG4gIEZJWEVEX0NPTlRFTlQ6ICcuZml4ZWQtdG9wLCAuZml4ZWQtYm90dG9tLCAuaXMtZml4ZWQsIC5zdGlja3ktdG9wJyxcbiAgU1RJQ0tZX0NPTlRFTlQ6ICcuc3RpY2t5LXRvcCcsXG4gIE5BVkJBUl9UT0dHTEVSOiAnLm5hdmJhci10b2dnbGVyJ1xufTtcbmNsYXNzIEJvb3RzdHJhcE1vZGFsTWFuYWdlciBleHRlbmRzIE1vZGFsTWFuYWdlciB7XG4gIGFkanVzdEFuZFN0b3JlKHByb3AsIGVsZW1lbnQsIGFkanVzdCkge1xuICAgIGNvbnN0IGFjdHVhbCA9IGVsZW1lbnQuc3R5bGVbcHJvcF07XG4gICAgLy8gVE9ETzogRE9NU3RyaW5nTWFwIGFuZCBDU1NTdHlsZURlY2xhcmF0aW9uIGFyZW4ndCBzdHJpY3RseSBjb21wYXRpYmxlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGVsZW1lbnQuZGF0YXNldFtwcm9wXSA9IGFjdHVhbDtcbiAgICBjc3MoZWxlbWVudCwge1xuICAgICAgW3Byb3BdOiBgJHtwYXJzZUZsb2F0KGNzcyhlbGVtZW50LCBwcm9wKSkgKyBhZGp1c3R9cHhgXG4gICAgfSk7XG4gIH1cbiAgcmVzdG9yZShwcm9wLCBlbGVtZW50KSB7XG4gICAgY29uc3QgdmFsdWUgPSBlbGVtZW50LmRhdGFzZXRbcHJvcF07XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlbGV0ZSBlbGVtZW50LmRhdGFzZXRbcHJvcF07XG4gICAgICBjc3MoZWxlbWVudCwge1xuICAgICAgICBbcHJvcF06IHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgc2V0Q29udGFpbmVyU3R5bGUoY29udGFpbmVyU3RhdGUpIHtcbiAgICBzdXBlci5zZXRDb250YWluZXJTdHlsZShjb250YWluZXJTdGF0ZSk7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5nZXRFbGVtZW50KCk7XG4gICAgYWRkQ2xhc3MoY29udGFpbmVyLCAnbW9kYWwtb3BlbicpO1xuICAgIGlmICghY29udGFpbmVyU3RhdGUuc2Nyb2xsQmFyV2lkdGgpIHJldHVybjtcbiAgICBjb25zdCBwYWRkaW5nUHJvcCA9IHRoaXMuaXNSVEwgPyAncGFkZGluZ0xlZnQnIDogJ3BhZGRpbmdSaWdodCc7XG4gICAgY29uc3QgbWFyZ2luUHJvcCA9IHRoaXMuaXNSVEwgPyAnbWFyZ2luTGVmdCcgOiAnbWFyZ2luUmlnaHQnO1xuICAgIHFzYShjb250YWluZXIsIFNlbGVjdG9yLkZJWEVEX0NPTlRFTlQpLmZvckVhY2goZWwgPT4gdGhpcy5hZGp1c3RBbmRTdG9yZShwYWRkaW5nUHJvcCwgZWwsIGNvbnRhaW5lclN0YXRlLnNjcm9sbEJhcldpZHRoKSk7XG4gICAgcXNhKGNvbnRhaW5lciwgU2VsZWN0b3IuU1RJQ0tZX0NPTlRFTlQpLmZvckVhY2goZWwgPT4gdGhpcy5hZGp1c3RBbmRTdG9yZShtYXJnaW5Qcm9wLCBlbCwgLWNvbnRhaW5lclN0YXRlLnNjcm9sbEJhcldpZHRoKSk7XG4gICAgcXNhKGNvbnRhaW5lciwgU2VsZWN0b3IuTkFWQkFSX1RPR0dMRVIpLmZvckVhY2goZWwgPT4gdGhpcy5hZGp1c3RBbmRTdG9yZShtYXJnaW5Qcm9wLCBlbCwgY29udGFpbmVyU3RhdGUuc2Nyb2xsQmFyV2lkdGgpKTtcbiAgfVxuICByZW1vdmVDb250YWluZXJTdHlsZShjb250YWluZXJTdGF0ZSkge1xuICAgIHN1cGVyLnJlbW92ZUNvbnRhaW5lclN0eWxlKGNvbnRhaW5lclN0YXRlKTtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmdldEVsZW1lbnQoKTtcbiAgICByZW1vdmVDbGFzcyhjb250YWluZXIsICdtb2RhbC1vcGVuJyk7XG4gICAgY29uc3QgcGFkZGluZ1Byb3AgPSB0aGlzLmlzUlRMID8gJ3BhZGRpbmdMZWZ0JyA6ICdwYWRkaW5nUmlnaHQnO1xuICAgIGNvbnN0IG1hcmdpblByb3AgPSB0aGlzLmlzUlRMID8gJ21hcmdpbkxlZnQnIDogJ21hcmdpblJpZ2h0JztcbiAgICBxc2EoY29udGFpbmVyLCBTZWxlY3Rvci5GSVhFRF9DT05URU5UKS5mb3JFYWNoKGVsID0+IHRoaXMucmVzdG9yZShwYWRkaW5nUHJvcCwgZWwpKTtcbiAgICBxc2EoY29udGFpbmVyLCBTZWxlY3Rvci5TVElDS1lfQ09OVEVOVCkuZm9yRWFjaChlbCA9PiB0aGlzLnJlc3RvcmUobWFyZ2luUHJvcCwgZWwpKTtcbiAgICBxc2EoY29udGFpbmVyLCBTZWxlY3Rvci5OQVZCQVJfVE9HR0xFUikuZm9yRWFjaChlbCA9PiB0aGlzLnJlc3RvcmUobWFyZ2luUHJvcCwgZWwpKTtcbiAgfVxufVxubGV0IHNoYXJlZE1hbmFnZXI7XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hhcmVkTWFuYWdlcihvcHRpb25zKSB7XG4gIGlmICghc2hhcmVkTWFuYWdlcikgc2hhcmVkTWFuYWdlciA9IG5ldyBCb290c3RyYXBNb2RhbE1hbmFnZXIob3B0aW9ucyk7XG4gIHJldHVybiBzaGFyZWRNYW5hZ2VyO1xufVxuZXhwb3J0IGRlZmF1bHQgQm9vdHN0cmFwTW9kYWxNYW5hZ2VyOyIsImltcG9ydCBoYXNDbGFzcyBmcm9tICcuL2hhc0NsYXNzJztcbi8qKlxuICogQWRkcyBhIENTUyBjbGFzcyB0byBhIGdpdmVuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBlbGVtZW50IHRoZSBlbGVtZW50XG4gKiBAcGFyYW0gY2xhc3NOYW1lIHRoZSBDU1MgY2xhc3MgbmFtZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZENsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkge1xuICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO2Vsc2UgaWYgKCFoYXNDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpKSBpZiAodHlwZW9mIGVsZW1lbnQuY2xhc3NOYW1lID09PSAnc3RyaW5nJykgZWxlbWVudC5jbGFzc05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZSArIFwiIFwiICsgY2xhc3NOYW1lO2Vsc2UgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgKGVsZW1lbnQuY2xhc3NOYW1lICYmIGVsZW1lbnQuY2xhc3NOYW1lLmJhc2VWYWwgfHwgJycpICsgXCIgXCIgKyBjbGFzc05hbWUpO1xufSIsIi8qKlxuICogQ2hlY2tzIGlmIGEgZ2l2ZW4gZWxlbWVudCBoYXMgYSBDU1MgY2xhc3MuXG4gKiBcbiAqIEBwYXJhbSBlbGVtZW50IHRoZSBlbGVtZW50XG4gKiBAcGFyYW0gY2xhc3NOYW1lIHRoZSBDU1MgY2xhc3MgbmFtZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoYXNDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpIHtcbiAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0KSByZXR1cm4gISFjbGFzc05hbWUgJiYgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTtcbiAgcmV0dXJuIChcIiBcIiArIChlbGVtZW50LmNsYXNzTmFtZS5iYXNlVmFsIHx8IGVsZW1lbnQuY2xhc3NOYW1lKSArIFwiIFwiKS5pbmRleE9mKFwiIFwiICsgY2xhc3NOYW1lICsgXCIgXCIpICE9PSAtMTtcbn0iLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB1c2VCcmVha3BvaW50IGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUJyZWFrcG9pbnQnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEJhc2VNb2RhbCBmcm9tICdAcmVzdGFydC91aS9Nb2RhbCc7XG5pbXBvcnQgRmFkZSBmcm9tICcuL0ZhZGUnO1xuaW1wb3J0IE9mZmNhbnZhc0JvZHkgZnJvbSAnLi9PZmZjYW52YXNCb2R5JztcbmltcG9ydCBPZmZjYW52YXNUb2dnbGluZyBmcm9tICcuL09mZmNhbnZhc1RvZ2dsaW5nJztcbmltcG9ydCBNb2RhbENvbnRleHQgZnJvbSAnLi9Nb2RhbENvbnRleHQnO1xuaW1wb3J0IE5hdmJhckNvbnRleHQgZnJvbSAnLi9OYXZiYXJDb250ZXh0JztcbmltcG9ydCBPZmZjYW52YXNIZWFkZXIgZnJvbSAnLi9PZmZjYW52YXNIZWFkZXInO1xuaW1wb3J0IE9mZmNhbnZhc1RpdGxlIGZyb20gJy4vT2ZmY2FudmFzVGl0bGUnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBCb290c3RyYXBNb2RhbE1hbmFnZXIsIHsgZ2V0U2hhcmVkTWFuYWdlciB9IGZyb20gJy4vQm9vdHN0cmFwTW9kYWxNYW5hZ2VyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmZ1bmN0aW9uIERpYWxvZ1RyYW5zaXRpb24ocHJvcHMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KE9mZmNhbnZhc1RvZ2dsaW5nLCB7XG4gICAgLi4ucHJvcHNcbiAgfSk7XG59XG5mdW5jdGlvbiBCYWNrZHJvcFRyYW5zaXRpb24ocHJvcHMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEZhZGUsIHtcbiAgICAuLi5wcm9wc1xuICB9KTtcbn1cbmNvbnN0IE9mZmNhbnZhcyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICAnYXJpYS1sYWJlbGxlZGJ5JzogYXJpYUxhYmVsbGVkYnksXG4gIHBsYWNlbWVudCA9ICdzdGFydCcsXG4gIHJlc3BvbnNpdmUsXG4gIC8qIEJhc2VNb2RhbCBwcm9wcyAqL1xuXG4gIHNob3cgPSBmYWxzZSxcbiAgYmFja2Ryb3AgPSB0cnVlLFxuICBrZXlib2FyZCA9IHRydWUsXG4gIHNjcm9sbCA9IGZhbHNlLFxuICBvbkVzY2FwZUtleURvd24sXG4gIG9uU2hvdyxcbiAgb25IaWRlLFxuICBjb250YWluZXIsXG4gIGF1dG9Gb2N1cyA9IHRydWUsXG4gIGVuZm9yY2VGb2N1cyA9IHRydWUsXG4gIHJlc3RvcmVGb2N1cyA9IHRydWUsXG4gIHJlc3RvcmVGb2N1c09wdGlvbnMsXG4gIG9uRW50ZXJlZCxcbiAgb25FeGl0LFxuICBvbkV4aXRpbmcsXG4gIG9uRW50ZXIsXG4gIG9uRW50ZXJpbmcsXG4gIG9uRXhpdGVkLFxuICBiYWNrZHJvcENsYXNzTmFtZSxcbiAgbWFuYWdlcjogcHJvcHNNYW5hZ2VyLFxuICByZW5kZXJTdGF0aWNOb2RlID0gZmFsc2UsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgbW9kYWxNYW5hZ2VyID0gdXNlUmVmKCk7XG4gIGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnb2ZmY2FudmFzJyk7XG4gIGNvbnN0IHtcbiAgICBvblRvZ2dsZVxuICB9ID0gdXNlQ29udGV4dChOYXZiYXJDb250ZXh0KSB8fCB7fTtcbiAgY29uc3QgW3Nob3dPZmZjYW52YXMsIHNldFNob3dPZmZjYW52YXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBoaWRlUmVzcG9uc2l2ZU9mZmNhbnZhcyA9IHVzZUJyZWFrcG9pbnQocmVzcG9uc2l2ZSB8fCAneHMnLCAndXAnKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBIYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHNjcmVlbiBpcyByZXNpemVkIHdoaWxlIHRoZSByZXNwb25zaXZlXG4gICAgLy8gb2ZmY2FudmFzIGlzIHNob3duLiBJZiBgcmVzcG9uc2l2ZWAgbm90IHByb3ZpZGVkLCBqdXN0IHVzZSBgc2hvd2AuXG4gICAgc2V0U2hvd09mZmNhbnZhcyhyZXNwb25zaXZlID8gc2hvdyAmJiAhaGlkZVJlc3BvbnNpdmVPZmZjYW52YXMgOiBzaG93KTtcbiAgfSwgW3Nob3csIHJlc3BvbnNpdmUsIGhpZGVSZXNwb25zaXZlT2ZmY2FudmFzXSk7XG4gIGNvbnN0IGhhbmRsZUhpZGUgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICBvblRvZ2dsZSA9PSBudWxsID8gdm9pZCAwIDogb25Ub2dnbGUoKTtcbiAgICBvbkhpZGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uSGlkZSgpO1xuICB9KTtcbiAgY29uc3QgbW9kYWxDb250ZXh0ID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIG9uSGlkZTogaGFuZGxlSGlkZVxuICB9KSwgW2hhbmRsZUhpZGVdKTtcbiAgZnVuY3Rpb24gZ2V0TW9kYWxNYW5hZ2VyKCkge1xuICAgIGlmIChwcm9wc01hbmFnZXIpIHJldHVybiBwcm9wc01hbmFnZXI7XG4gICAgaWYgKHNjcm9sbCkge1xuICAgICAgLy8gSGF2ZSB0byB1c2UgYSBkaWZmZXJlbnQgbW9kYWwgbWFuYWdlciBzaW5jZSB0aGUgc2hhcmVkXG4gICAgICAvLyBvbmUgaGFuZGxlcyBvdmVyZmxvdy5cbiAgICAgIGlmICghbW9kYWxNYW5hZ2VyLmN1cnJlbnQpIG1vZGFsTWFuYWdlci5jdXJyZW50ID0gbmV3IEJvb3RzdHJhcE1vZGFsTWFuYWdlcih7XG4gICAgICAgIGhhbmRsZUNvbnRhaW5lck92ZXJmbG93OiBmYWxzZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbW9kYWxNYW5hZ2VyLmN1cnJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBnZXRTaGFyZWRNYW5hZ2VyKCk7XG4gIH1cbiAgY29uc3QgaGFuZGxlRW50ZXIgPSAobm9kZSwgLi4uYXJncykgPT4ge1xuICAgIGlmIChub2RlKSBub2RlLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgb25FbnRlciA9PSBudWxsID8gdm9pZCAwIDogb25FbnRlcihub2RlLCAuLi5hcmdzKTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlRXhpdGVkID0gKG5vZGUsIC4uLmFyZ3MpID0+IHtcbiAgICBpZiAobm9kZSkgbm9kZS5zdHlsZS52aXNpYmlsaXR5ID0gJyc7XG4gICAgb25FeGl0ZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRXhpdGVkKC4uLmFyZ3MpO1xuICB9O1xuICBjb25zdCByZW5kZXJCYWNrZHJvcCA9IHVzZUNhbGxiYWNrKGJhY2tkcm9wUHJvcHMgPT4gLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwge1xuICAgIC4uLmJhY2tkcm9wUHJvcHMsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGAke2JzUHJlZml4fS1iYWNrZHJvcGAsIGJhY2tkcm9wQ2xhc3NOYW1lKVxuICB9KSwgW2JhY2tkcm9wQ2xhc3NOYW1lLCBic1ByZWZpeF0pO1xuICBjb25zdCByZW5kZXJEaWFsb2cgPSBkaWFsb2dQcm9wcyA9PiAvKiNfX1BVUkVfXyovX2pzeChcImRpdlwiLCB7XG4gICAgLi4uZGlhbG9nUHJvcHMsXG4gICAgLi4ucHJvcHMsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgcmVzcG9uc2l2ZSA/IGAke2JzUHJlZml4fS0ke3Jlc3BvbnNpdmV9YCA6IGJzUHJlZml4LCBgJHtic1ByZWZpeH0tJHtwbGFjZW1lbnR9YCksXG4gICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXJpYUxhYmVsbGVkYnksXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKF9GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBbIXNob3dPZmZjYW52YXMgJiYgKHJlc3BvbnNpdmUgfHwgcmVuZGVyU3RhdGljTm9kZSkgJiYgcmVuZGVyRGlhbG9nKHt9KSwgLyojX19QVVJFX18qL19qc3goTW9kYWxDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZTogbW9kYWxDb250ZXh0LFxuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KEJhc2VNb2RhbCwge1xuICAgICAgICBzaG93OiBzaG93T2ZmY2FudmFzLFxuICAgICAgICByZWY6IHJlZixcbiAgICAgICAgYmFja2Ryb3A6IGJhY2tkcm9wLFxuICAgICAgICBjb250YWluZXI6IGNvbnRhaW5lcixcbiAgICAgICAga2V5Ym9hcmQ6IGtleWJvYXJkLFxuICAgICAgICBhdXRvRm9jdXM6IGF1dG9Gb2N1cyxcbiAgICAgICAgZW5mb3JjZUZvY3VzOiBlbmZvcmNlRm9jdXMgJiYgIXNjcm9sbCxcbiAgICAgICAgcmVzdG9yZUZvY3VzOiByZXN0b3JlRm9jdXMsXG4gICAgICAgIHJlc3RvcmVGb2N1c09wdGlvbnM6IHJlc3RvcmVGb2N1c09wdGlvbnMsXG4gICAgICAgIG9uRXNjYXBlS2V5RG93bjogb25Fc2NhcGVLZXlEb3duLFxuICAgICAgICBvblNob3c6IG9uU2hvdyxcbiAgICAgICAgb25IaWRlOiBoYW5kbGVIaWRlLFxuICAgICAgICBvbkVudGVyOiBoYW5kbGVFbnRlcixcbiAgICAgICAgb25FbnRlcmluZzogb25FbnRlcmluZyxcbiAgICAgICAgb25FbnRlcmVkOiBvbkVudGVyZWQsXG4gICAgICAgIG9uRXhpdDogb25FeGl0LFxuICAgICAgICBvbkV4aXRpbmc6IG9uRXhpdGluZyxcbiAgICAgICAgb25FeGl0ZWQ6IGhhbmRsZUV4aXRlZCxcbiAgICAgICAgbWFuYWdlcjogZ2V0TW9kYWxNYW5hZ2VyKCksXG4gICAgICAgIHRyYW5zaXRpb246IERpYWxvZ1RyYW5zaXRpb24sXG4gICAgICAgIGJhY2tkcm9wVHJhbnNpdGlvbjogQmFja2Ryb3BUcmFuc2l0aW9uLFxuICAgICAgICByZW5kZXJCYWNrZHJvcDogcmVuZGVyQmFja2Ryb3AsXG4gICAgICAgIHJlbmRlckRpYWxvZzogcmVuZGVyRGlhbG9nXG4gICAgICB9KVxuICAgIH0pXVxuICB9KTtcbn0pO1xuT2ZmY2FudmFzLmRpc3BsYXlOYW1lID0gJ09mZmNhbnZhcyc7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKE9mZmNhbnZhcywge1xuICBCb2R5OiBPZmZjYW52YXNCb2R5LFxuICBIZWFkZXI6IE9mZmNhbnZhc0hlYWRlcixcbiAgVGl0bGU6IE9mZmNhbnZhc1RpdGxlXG59KTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IE9mZmNhbnZhcyBmcm9tICcuL09mZmNhbnZhcyc7XG5pbXBvcnQgTmF2YmFyQ29udGV4dCBmcm9tICcuL05hdmJhckNvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE5hdmJhck9mZmNhbnZhcyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE5hdmJhckNvbnRleHQpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goT2ZmY2FudmFzLCB7XG4gICAgcmVmOiByZWYsXG4gICAgc2hvdzogISEoY29udGV4dCAhPSBudWxsICYmIGNvbnRleHQuZXhwYW5kZWQpLFxuICAgIC4uLnByb3BzLFxuICAgIHJlbmRlclN0YXRpY05vZGU6IHRydWVcbiAgfSk7XG59KTtcbk5hdmJhck9mZmNhbnZhcy5kaXNwbGF5TmFtZSA9ICdOYXZiYXJPZmZjYW52YXMnO1xuZXhwb3J0IGRlZmF1bHQgTmF2YmFyT2ZmY2FudmFzOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgU2VsZWN0YWJsZUNvbnRleHQgZnJvbSAnQHJlc3RhcnQvdWkvU2VsZWN0YWJsZUNvbnRleHQnO1xuaW1wb3J0IHsgdXNlVW5jb250cm9sbGVkIH0gZnJvbSAndW5jb250cm9sbGFibGUnO1xuaW1wb3J0IGNyZWF0ZVdpdGhCc1ByZWZpeCBmcm9tICcuL2NyZWF0ZVdpdGhCc1ByZWZpeCc7XG5pbXBvcnQgTmF2YmFyQnJhbmQgZnJvbSAnLi9OYXZiYXJCcmFuZCc7XG5pbXBvcnQgTmF2YmFyQ29sbGFwc2UgZnJvbSAnLi9OYXZiYXJDb2xsYXBzZSc7XG5pbXBvcnQgTmF2YmFyVG9nZ2xlIGZyb20gJy4vTmF2YmFyVG9nZ2xlJztcbmltcG9ydCBOYXZiYXJPZmZjYW52YXMgZnJvbSAnLi9OYXZiYXJPZmZjYW52YXMnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBOYXZiYXJDb250ZXh0IGZyb20gJy4vTmF2YmFyQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgTmF2YmFyVGV4dCA9IGNyZWF0ZVdpdGhCc1ByZWZpeCgnbmF2YmFyLXRleHQnLCB7XG4gIENvbXBvbmVudDogJ3NwYW4nXG59KTtcbmNvbnN0IE5hdmJhciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBic1ByZWZpeDogaW5pdGlhbEJzUHJlZml4LFxuICAgIGV4cGFuZCA9IHRydWUsXG4gICAgdmFyaWFudCA9ICdsaWdodCcsXG4gICAgYmcsXG4gICAgZml4ZWQsXG4gICAgc3RpY2t5LFxuICAgIGNsYXNzTmFtZSxcbiAgICAvLyBOZWVkIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBcImFzXCIgZHVyaW5nIHByb3AgZGVzdHJ1Y3R1cmluZyB0byBiZSBjb21wYXRpYmxlIHdpdGggc3R5bGVkLWNvbXBvbmVudHMgZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3QtYm9vdHN0cmFwL2lzc3Vlcy8zNTk1XG4gICAgYXM6IENvbXBvbmVudCA9ICduYXYnLFxuICAgIGV4cGFuZGVkLFxuICAgIG9uVG9nZ2xlLFxuICAgIG9uU2VsZWN0LFxuICAgIGNvbGxhcHNlT25TZWxlY3QgPSBmYWxzZSxcbiAgICAuLi5jb250cm9sbGVkUHJvcHNcbiAgfSA9IHVzZVVuY29udHJvbGxlZChwcm9wcywge1xuICAgIGV4cGFuZGVkOiAnb25Ub2dnbGUnXG4gIH0pO1xuICBjb25zdCBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChpbml0aWFsQnNQcmVmaXgsICduYXZiYXInKTtcbiAgY29uc3QgaGFuZGxlQ29sbGFwc2UgPSB1c2VDYWxsYmFjaygoLi4uYXJncykgPT4ge1xuICAgIG9uU2VsZWN0ID09IG51bGwgPyB2b2lkIDAgOiBvblNlbGVjdCguLi5hcmdzKTtcbiAgICBpZiAoY29sbGFwc2VPblNlbGVjdCAmJiBleHBhbmRlZCkge1xuICAgICAgb25Ub2dnbGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uVG9nZ2xlKGZhbHNlKTtcbiAgICB9XG4gIH0sIFtvblNlbGVjdCwgY29sbGFwc2VPblNlbGVjdCwgZXhwYW5kZWQsIG9uVG9nZ2xlXSk7XG5cbiAgLy8gd2lsbCByZXN1bHQgaW4gc29tZSBmYWxzZSBwb3NpdGl2ZXMgYnV0IHRoYXQgc2VlbXMgYmV0dGVyXG4gIC8vIHRoYW4gZmFsc2UgbmVnYXRpdmVzLiBzdHJpY3QgYHVuZGVmaW5lZGAgY2hlY2sgYWxsb3dzIGV4cGxpY2l0XG4gIC8vIFwibnVsbGluZ1wiIG9mIHRoZSByb2xlIGlmIHRoZSB1c2VyIHJlYWxseSBkb2Vzbid0IHdhbnQgb25lXG4gIGlmIChjb250cm9sbGVkUHJvcHMucm9sZSA9PT0gdW5kZWZpbmVkICYmIENvbXBvbmVudCAhPT0gJ25hdicpIHtcbiAgICBjb250cm9sbGVkUHJvcHMucm9sZSA9ICduYXZpZ2F0aW9uJztcbiAgfVxuICBsZXQgZXhwYW5kQ2xhc3MgPSBgJHtic1ByZWZpeH0tZXhwYW5kYDtcbiAgaWYgKHR5cGVvZiBleHBhbmQgPT09ICdzdHJpbmcnKSBleHBhbmRDbGFzcyA9IGAke2V4cGFuZENsYXNzfS0ke2V4cGFuZH1gO1xuICBjb25zdCBuYXZiYXJDb250ZXh0ID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIG9uVG9nZ2xlOiAoKSA9PiBvblRvZ2dsZSA9PSBudWxsID8gdm9pZCAwIDogb25Ub2dnbGUoIWV4cGFuZGVkKSxcbiAgICBic1ByZWZpeCxcbiAgICBleHBhbmRlZDogISFleHBhbmRlZCxcbiAgICBleHBhbmRcbiAgfSksIFtic1ByZWZpeCwgZXhwYW5kZWQsIGV4cGFuZCwgb25Ub2dnbGVdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KE5hdmJhckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogbmF2YmFyQ29udGV4dCxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goU2VsZWN0YWJsZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgIHZhbHVlOiBoYW5kbGVDb2xsYXBzZSxcbiAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAgICAgcmVmOiByZWYsXG4gICAgICAgIC4uLmNvbnRyb2xsZWRQcm9wcyxcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgYnNQcmVmaXgsIGV4cGFuZCAmJiBleHBhbmRDbGFzcywgdmFyaWFudCAmJiBgJHtic1ByZWZpeH0tJHt2YXJpYW50fWAsIGJnICYmIGBiZy0ke2JnfWAsIHN0aWNreSAmJiBgc3RpY2t5LSR7c3RpY2t5fWAsIGZpeGVkICYmIGBmaXhlZC0ke2ZpeGVkfWApXG4gICAgICB9KVxuICAgIH0pXG4gIH0pO1xufSk7XG5OYXZiYXIuZGlzcGxheU5hbWUgPSAnTmF2YmFyJztcbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5hc3NpZ24oTmF2YmFyLCB7XG4gIEJyYW5kOiBOYXZiYXJCcmFuZCxcbiAgQ29sbGFwc2U6IE5hdmJhckNvbGxhcHNlLFxuICBPZmZjYW52YXM6IE5hdmJhck9mZmNhbnZhcyxcbiAgVGV4dDogTmF2YmFyVGV4dCxcbiAgVG9nZ2xlOiBOYXZiYXJUb2dnbGVcbn0pOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBDb250YWluZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBic1ByZWZpeCxcbiAgZmx1aWQgPSBmYWxzZSxcbiAgLy8gTmVlZCB0byBkZWZpbmUgdGhlIGRlZmF1bHQgXCJhc1wiIGR1cmluZyBwcm9wIGRlc3RydWN0dXJpbmcgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHN0eWxlZC1jb21wb25lbnRzIGdpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LWJvb3RzdHJhcC9pc3N1ZXMvMzU5NVxuICBhczogQ29tcG9uZW50ID0gJ2RpdicsXG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdjb250YWluZXInKTtcbiAgY29uc3Qgc3VmZml4ID0gdHlwZW9mIGZsdWlkID09PSAnc3RyaW5nJyA/IGAtJHtmbHVpZH1gIDogJy1mbHVpZCc7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICByZWY6IHJlZixcbiAgICAuLi5wcm9wcyxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBmbHVpZCA/IGAke3ByZWZpeH0ke3N1ZmZpeH1gIDogcHJlZml4KVxuICB9KTtcbn0pO1xuQ29udGFpbmVyLmRpc3BsYXlOYW1lID0gJ0NvbnRhaW5lcic7XG5leHBvcnQgZGVmYXVsdCBDb250YWluZXI7IiwiLypcbiAqIFRoaXMgZmlsZSBpcyBhIHBhcnQgb2YgdGhlIENhb3NEQiBQcm9qZWN0LlxuICpcbiAqIENvcHlyaWdodCAoQykgMjAxOSBIZW5yaWsgdG9tIFfDtnJkZW4gPGgudG9td29lcmRlbkBpbmRpc2NhbGUuY29tPlxuICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjMgVGltbSBGaXRzY2hlbiA8dC5maXRzY2hlbkBpbmRpc2NhbGUuY29tPlxuICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjMgSW5kaVNjYWxlIEdtYkggPGluZm9AaW5kaXNjYWxlLmNvbT5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbi8vLy8vLy8gQVVUTyBDT01QTEVUSU9OXG5jb25zdCBDUUxfV09SRFMgPSBbXG4gIFwiRklORFwiLFxuICBcIkZJTEVcIixcbiAgXCJFTlRJVFlcIixcbiAgXCJTRUxFQ1RcIixcbiAgXCJDT1VOVFwiLFxuICBcIlJFQ09SRFwiLFxuICBcIlBST1BFUlRZXCIsXG4gIFwiUkVDT1JEVFlQRVwiLFxuICBcIlJFRkVSRU5DRVNcIixcbiAgXCJSRUZFUkVOQ0VEIEJZXCIsXG4gIFwiV0hJQ0hcIixcbiAgXCJXSVRIXCIsXG4gIFwiQ1JFQVRFRCBCWVwiLFxuICBcIkNSRUFURUQgQlkgTUVcIixcbiAgXCJDUkVBVEVEIEFUXCIsXG4gIFwiQ1JFQVRFRCBPTlwiLFxuICBcIkNSRUFURUQgSU5cIixcbiAgXCJDUkVBVEVEIEJFRk9SRVwiLFxuICBcIkNSRUFURUQgVU5USUxcIixcbiAgXCJDUkVBVEVEIEFGVEVSXCIsXG4gIFwiQ1JFQVRFRCBTSU5DRVwiLFxuICBcIlNPTUVPTkVcIixcbiAgXCJTVE9SRUQgQVRcIixcbiAgXCJIQVMgQSBQUk9QRVJUWVwiLFxuICBcIkhBUyBCRUVOXCIsXG4gIFwiQU5ZIFZFUlNJT04gT0ZcIixcbiAgXCJGUk9NXCIsXG4gIFwiSU5TRVJURUQgQVRcIixcbiAgXCJJTlNFUlRFRCBPTlwiLFxuICBcIklOU0VSVEVEIElOXCIsXG4gIFwiSU5TRVJURUQgQllcIixcbiAgXCJJTlNFUlRFRCBCWSBNRVwiLFxuICBcIklOU0VSVEVEIEJFRk9SRVwiLFxuICBcIklOU0VSVEVEIFVOVElMXCIsXG4gIFwiSU5TRVJURUQgQUZURVJcIixcbiAgXCJJTlNFUlRFRCBTSU5DRVwiLFxuICBcIlVQREFURUQgQVRcIixcbiAgXCJVUERBVEVEIE9OXCIsXG4gIFwiVVBEQVRFRCBJTlwiLFxuICBcIlVQREFURUQgQllcIixcbiAgXCJVUERBVEVEIEJZIE1FXCIsXG4gIFwiVVBEQVRFRCBCRUZPUkVcIixcbiAgXCJVUERBVEVEIFVOVElMXCIsXG4gIFwiVVBEQVRFRCBBRlRFUlwiLFxuICBcIlVQREFURUQgU0lOQ0VcIixcbiAgXCJTSU5DRVwiLFxuICBcIkJFRk9SRVwiLFxuICBcIk9OXCIsXG4gIFwiSU5cIixcbiAgXCJBRlRFUlwiLFxuICBcIlVOVElMXCIsXG4gIFwiQVRcIixcbiAgXCJCWVwiLFxuICBcIkJZIE1FXCIsXG5dO1xuXG5mdW5jdGlvbiBwcmVwYXJlVGVybXModGVybXMpIHtcbiAgcmV0dXJuIHRlcm1zLm1hcCgodGVybSkgPT4ge1xuICAgIHZhciB0ZXJtX2VzY2FwZWQgPSB0ZXJtO1xuICAgIGlmICh0ZXJtX2VzY2FwZWQuaW5kZXhPZihcIiBcIikgPiAtMSkge1xuICAgICAgaWYgKHRlcm0uaW5kZXhPZignXCInKSA+IC0xKSB7XG4gICAgICAgIHRlcm1fZXNjYXBlZCA9IGAnJHt0ZXJtX2VzY2FwZWR9J2A7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZXJtX2VzY2FwZWQgPSBgXCIke3Rlcm1fZXNjYXBlZH1cImA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBvcmlnaW5hbDogdGVybSxcbiAgICAgIG5vcm1hbGl6ZWQ6IHRlcm0udHJpbSgpLnRvTG93ZXJDYXNlKCksXG4gICAgICBlc2NhcGVkOiB0ZXJtX2VzY2FwZWQsXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVDcWxXb3Jkcyh3b3Jkcykge1xuICByZXR1cm4gd29yZHMubWFwKCh3b3JkKSA9PiAoe1xuICAgIG9yaWdpbmFsOiB3b3JkLFxuICAgIG5vcm1hbGl6ZWQ6IHdvcmQudHJpbSgpLnRvTG93ZXJDYXNlKCksXG4gICAgZXNjYXBlZDogd29yZCxcbiAgfSkpO1xufVxuXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRpb24ge1xuICBjb25zdHJ1Y3Rvcih0ZXJtcywgY3FsX3dvcmRzKSB7XG4gICAgdGhpcy5fY3FsX3dvcmRzID0gcHJlcGFyZUNxbFdvcmRzKGNxbF93b3JkcyB8fCBDUUxfV09SRFMpO1xuICAgIHRoaXMuX3Rlcm1zID0gdGVybXMgfHwgW107XG4gICAgdGhpcy5fcmVzb2x2ZWRfdGVybXMgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBhc3luYyBnZXRTdWdnZXN0aW9ucyhpc0NxbCwgZnVsbFF1ZXJ5LCB3b3JkKSB7XG4gICAgaWYgKGlzQ3FsKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRDcWxTdWdnZXN0aW9ucyhmdWxsUXVlcnksIHdvcmQpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRTZWFyY2hUZXJtU3VnZ2VzdGlvbnMoZnVsbFF1ZXJ5LCB3b3JkKTtcbiAgfVxuXG4gIGFzeW5jIF9kb19yZXNvbHZlX3Rlcm1zKHRlcm1zKSB7XG4gICAgdmFyIHJlc29sdmVkX3Rlcm1zO1xuICAgIGlmICh0eXBlb2YgdGVybXMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmVzb2x2ZWRfdGVybXMgPSBhd2FpdCB0ZXJtcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlZF90ZXJtcyA9IGF3YWl0IHRlcm1zO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgcHJlcGFyZVRlcm1zKHJlc29sdmVkX3Rlcm1zKTtcbiAgfVxuXG4gIGFzeW5jIF9nZXRUZXJtcygpIHtcbiAgICBpZiAoIXRoaXMuX3Jlc29sdmVkX3Rlcm1zKSB7XG4gICAgICB0aGlzLl9yZXNvbHZlZF90ZXJtcyA9IHRoaXMuX2RvX3Jlc29sdmVfdGVybXModGhpcy5fdGVybXMpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fcmVzb2x2ZWRfdGVybXM7XG4gIH1cblxuICBhc3luYyBnZXRTZWFyY2hUZXJtU3VnZ2VzdGlvbnMoZnVsbFF1ZXJ5LCB3b3JkKSB7XG4gICAgdmFyIHRlcm1zID0gYXdhaXQgdGhpcy5fZ2V0VGVybXMoKTtcbiAgICBpZiAoZnVsbFF1ZXJ5ID09PSB3b3JkKSB7XG4gICAgICAvLyBzdGlsbCBvbmx5IG9uZSB3b3JkIC0+IGFsc28gYXBwZW5kIEZJTkQsIFNFTEVDVCBhbmQgQ09VTlRcbiAgICAgIHRlcm1zID0gcHJlcGFyZUNxbFdvcmRzKFtcIkZJTkRcIiwgXCJTRUxFQ1RcIiwgXCJDT1VOVFwiXSkuY29uY2F0KHRlcm1zKTtcbiAgICB9XG4gICAgY29uc3Qgd29yZE5vcm1hbGl6ZWQgPSB3b3JkLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB0ZXJtcy5maWx0ZXIoKHRlcm0pID0+IHRlcm0ubm9ybWFsaXplZC5zdGFydHNXaXRoKHdvcmROb3JtYWxpemVkKSk7XG4gIH1cblxuICBhc3luYyBnZXRDcWxTdWdnZXN0aW9ucyhmdWxsUXVlcnksIHdvcmQpIHtcbiAgICBjb25zdCBjcWxfd29yZHMgPSB0aGlzLl9jcWxfd29yZHM7XG5cbiAgICBjb25zdCB3b3JkTm9ybWFsaXplZCA9IHdvcmQudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGNxbF93b3Jkc1xuICAgICAgLmZpbHRlcigodGVybSkgPT4gdGVybS5ub3JtYWxpemVkLnN0YXJ0c1dpdGgod29yZE5vcm1hbGl6ZWQpKVxuICAgICAgLmNvbmNhdChhd2FpdCB0aGlzLmdldFNlYXJjaFRlcm1TdWdnZXN0aW9ucyhmdWxsUXVlcnksIHdvcmQpKTtcbiAgfVxufVxuXG4vLy8vLy8vIFFVRVJZIEdFTkVSQVRJT05cblxuZXhwb3J0IGNvbnN0IGlzQ3FsID0gZnVuY3Rpb24gKHF1ZXJ5KSB7XG4gIHF1ZXJ5ID0gcXVlcnkudG9VcHBlckNhc2UoKS50cmltKCk7XG4gIHJldHVybiAoXG4gICAgcXVlcnkuc3RhcnRzV2l0aChcIkZJTkRcIikgfHxcbiAgICBxdWVyeS5zdGFydHNXaXRoKFwiQ09VTlRcIikgfHxcbiAgICBxdWVyeS5zdGFydHNXaXRoKFwiU0VMRUNUXCIpXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZWxlY3QgPSBmdW5jdGlvbiAocXVlcnkpIHtcbiAgcmV0dXJuIHF1ZXJ5LnRvVXBwZXJDYXNlKCkudHJpbSgpLnN0YXJ0c1dpdGgoXCJTRUxFQ1RcIik7XG59O1xuXG5jb25zdCB0cmFuc2xhdG9yID0ge1xuICBcIj1cIjogXCI9XCIsXG4gIFwiPlwiOiBcIj5cIixcbiAgXCLiiaVcIjogXCI+PVwiLFxuICBcIjxcIjogXCI8XCIsXG4gIFwi4omkXCI6IFwiPD1cIixcbiAgXCLiiaBcIjogXCIhPVwiLFxuICBlcXVhbHM6IFwiPVwiLFxuICBpbjogXCJpblwiLFxuICBcIm5vdCBpblwiOiBcIm5vdCBpblwiLFxuICBcImFmdGVyIGRhdGVcIjogXCI+XCIsXG4gIFwic2luY2UgZGF0ZVwiOiBcIj49XCIsXG4gIFwidW50aWwgZGF0ZVwiOiBcIjw9XCIsXG4gIFwiYmVmb3JlIGRhdGVcIjogXCI8XCIsXG4gIFwib24gZGF0ZVwiOiBcIm9uXCIsXG4gIFwibm90IG9uIGRhdGVcIjogXCJub3Qgb25cIixcbn07XG5cbi8qKlxuICogQ29udmVydCBhIChwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlLCB1bml0KSB0dXBsZSB0byBhIHZhbGlkIENRTCBQT1YtZmlsdGVyXG4gKiBleHByZXNzaW9uIGluY2x1ZGluZyBxdW90YXRpb24gZm9yIHRoZSB2YWx1ZSBhbmQgcGFyZW50aGVzaXMgYXJvdW5kXG4gKiBldmVyeXRoaW5nIGZvciBzYWZlIGludGVycHJldGF0aW9uIGJ5IHRoZSBDUUwgcGFyc2VyLlxuICpcbiAqICAgRS5nLiAoXCJFdmVudC5sb25naXR1ZGVcIiwgXCI+XCIsIC00MCwgXCLCsFwiKSByZXN1bHRzIGluXG4gKiAgICAgICAgJyhFdmVudC5sb25naXR1ZGUgPiBcIi00MMKwXCIpJy5cbiAqXG4gKiBOb3RlOiBUaGUgY29ycmVjdCBxdW90YXRpb24gZm9yIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIGluY2x1ZGVkIGluIHRoZSBwYXNzZWRcbiAqIGBwcm9wZXJ0eWAgYWxyZWFkeSBhbmQgaGVuY2UgYmUgZGVmaW5lZCBpbiB0aGUgUXVlcnlGb3JtfkZpbHRlckRlZmluaXRpb24uXG4gKlxuICogTm90ZTogVGhpcyBpcyBuZWVkZWQgYnkgbWFrZVF1ZXJ5IGFuZCBoYW5kbGVzIHRoZSBtb3N0IGJhc2ljIGNhc2VzLiBGb3JcbiAqIG9wZXJhdG9ycyBsaWtlIGBub3QgY29udGFpbnNgIG9yIGByYW5nZWAgdGhlcmUgYXJlIHNwZWNpYWwgdHJlYXRtZW50c1xuICogZWxzZXdoZXJlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eVxuICogQHBhcmFtIHtzdHJpbmd9IG9wZXJhdG9yXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW3VuaXRdXG4gKiBAcmV0dXJuIHtzdHJpbmd9IENRTCBQT1YtZmlsdGVyIGV4cHJlc3Npb24uXG4gKi9cbmNvbnN0IHRvQ1FMID0gKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUsIHVuaXQpID0+IHtcbiAgdmFsdWUgPSB2YWx1ZSB8fCBcIlwiO1xuICB1bml0ID0gdW5pdCB8fCBcIlwiO1xuICBjb25zdCBxdW90ZXMgPSB1bml0ICE9PSBcIlwiID8gXCJcIiA6IHZhbHVlLmluZGV4T2YoJ1wiJykgPT09IC0xID8gJ1wiJyA6IFwiJ1wiO1xuICBpZiAodHJhbnNsYXRvcltvcGVyYXRvcl0pIHtcbiAgICByZXR1cm4gYCgke3Byb3BlcnR5fSAke3RyYW5zbGF0b3Jbb3BlcmF0b3JdfSAke3F1b3Rlc30ke3ZhbHVlfSR7dW5pdH0ke3F1b3Rlc30pYDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCB0cmFuc2xhdGUgJHtwcm9wZXJ0eX0gJHtvcGVyYXRvcn0gZmlsdGVyYCwgdmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFsbG93ZWRfb3BlcmF0b3JzID0ge1xuICBib29sZWFuOiBbXCJpcyB0cnVlXCIsIFwiaXMgZmFsc2VcIl0sXG4gIHRleHQ6IFtcImVxdWFsc1wiLCBcIm5vdCBlcXVhbHNcIiwgXCJjb250YWluc1wiLCBcIm5vdCBjb250YWluc1wiXSxcbiAgaW50ZWdlcjogW1wiPVwiLCBcIuKJoFwiLCBcIuKJpVwiLCBcIuKJpFwiLCBcIjxcIiwgXCI+XCIsIFwicmFuZ2VcIl0sXG4gIGRvdWJsZTogW1wiPVwiLCBcIuKJoFwiLCBcIuKJpVwiLCBcIuKJpFwiLCBcIjxcIiwgXCI+XCIsIFwicmFuZ2VcIl0sXG4gIGRhdGV0aW1lOiBbXG4gICAgXCI9XCIsXG4gICAgXCLiiaBcIixcbiAgICBcIm9uIGRhdGVcIixcbiAgICBcImluXCIsXG4gICAgXCJub3Qgb24gZGF0ZVwiLFxuICAgIFwibm90IGluXCIsXG4gICAgXCJhZnRlciBkYXRlXCIsXG4gICAgXCJiZWZvcmUgZGF0ZVwiLFxuICAgIFwidW50aWwgZGF0ZVwiLFxuICAgIFwic2luY2UgZGF0ZVwiLFxuICBdLFxufTtcblxuLyoqXG4gKiBEaWN0aW9uYXJ5IG9mIGZ1bmN0aW9uczpcbiAqXG4gKiAoZGF0YXR5cGUsb3BlcmF0b3IpIC0+IGZ1bmN0aW9uKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUsIHVuaXQpXG4gKi9cbmNvbnN0IG1ha2VfcXVlcnlfZmlsdGVyID0ge1xuICBib29sZWFuOiB7XG4gICAgXCJpcyB0cnVlXCI6IChwcm9wZXJ0eSkgPT4gYCgke3Byb3BlcnR5fSA9IFRSVUUpYCxcbiAgICBcImlzIGZhbHNlXCI6IChwcm9wZXJ0eSkgPT4gYCgke3Byb3BlcnR5fSA9IEZBTFNFKWAsXG4gIH0sXG4gIHRleHQ6IHtcbiAgICBjb250YWluczogKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUpID0+IGAoJHtwcm9wZXJ0eX0gTElLRSBcIioke3ZhbHVlfSpcIilgLFxuICAgIFwibm90IGVxdWFsc1wiOiAocHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSkgPT5cbiAgICAgIGAoTk9UICR7cHJvcGVydHl9ID0gXCIke3ZhbHVlfVwiKWAsXG4gICAgXCJub3QgY29udGFpbnNcIjogKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUpID0+XG4gICAgICBgKE5PVCAke3Byb3BlcnR5fSBMSUtFIFwiKiR7dmFsdWV9KlwiKWAsXG4gIH0sXG4gIGludGVnZXI6IHtcbiAgICByYW5nZTogKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUsIHVuaXQpID0+XG4gICAgICBgKCR7cHJvcGVydHl9ID4gJHt2YWx1ZVswXX0ke3VuaXR9KSBBTkQgKCR7cHJvcGVydHl9IDwgJHt2YWx1ZVsxXX0ke3VuaXR9KWAsXG4gIH0sXG4gIGRvdWJsZToge1xuICAgIHJhbmdlOiAocHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSwgdW5pdCkgPT5cbiAgICAgIGAoJHtwcm9wZXJ0eX0gPiAke3ZhbHVlWzBdfSR7dW5pdH0pIEFORCAoJHtwcm9wZXJ0eX0gPCAke3ZhbHVlWzFdfSR7dW5pdH0pYCxcbiAgfSxcbiAgX2RlZmF1bHQ6IHsgX2RlZmF1bHQ6IHRvQ1FMIH0sXG59O1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgdmFsaWQgQ1FMIFBPVi1maWx0ZXIgZXhwcmVzc2lvbnMgYXBwcm9wcmlhdGUgZm9yIGEgdHVwbGVcbiAqIChkYXRhdHlwZSwgcHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSwgdW5pdCkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGRhdGF0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHlcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcGVyYXRvclxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFt1bml0XVxuICogQHJldHVybiB7c3RyaW5nfSBDUUwgUE9WLWZpbHRlciBleHByZXNzaW9uLlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VRdWVyeUZpbHRlciA9IChkYXRhdHlwZSwgcHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSwgdW5pdCkgPT4ge1xuICBpZiAoIWRhdGF0eXBlIHx8ICFvcGVyYXRvcikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgdW5pdCA9IHVuaXQgfHwgXCJcIjtcblxuICBpZiAobWFrZV9xdWVyeV9maWx0ZXJbZGF0YXR5cGVdKSB7XG4gICAgaWYgKFxuICAgICAgbWFrZV9xdWVyeV9maWx0ZXJbZGF0YXR5cGVdW29wZXJhdG9yXSB8fFxuICAgICAgbWFrZV9xdWVyeV9maWx0ZXJbZGF0YXR5cGVdW29wZXJhdG9yXSA9PT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuIG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXVtvcGVyYXRvcl0oXG4gICAgICAgIHByb3BlcnR5LFxuICAgICAgICBvcGVyYXRvcixcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHVuaXRcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXVtcIl9kZWZhdWx0XCJdIHx8XG4gICAgICBtYWtlX3F1ZXJ5X2ZpbHRlcltkYXRhdHlwZV1bXCJfZGVmYXVsdFwiXSA9PT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuIG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXVtcIl9kZWZhdWx0XCJdKFxuICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB1bml0XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChtYWtlX3F1ZXJ5X2ZpbHRlcltcIl9kZWZhdWx0XCJdW29wZXJhdG9yXSkge1xuICAgIHJldHVybiBtYWtlX3F1ZXJ5X2ZpbHRlcltcIl9kZWZhdWx0XCJdW29wZXJhdG9yXShcbiAgICAgIHByb3BlcnR5LFxuICAgICAgb3BlcmF0b3IsXG4gICAgICB2YWx1ZSxcbiAgICAgIHVuaXRcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG1ha2VfcXVlcnlfZmlsdGVyW1wiX2RlZmF1bHRcIl1bXCJfZGVmYXVsdFwiXShcbiAgICBwcm9wZXJ0eSxcbiAgICBvcGVyYXRvcixcbiAgICB2YWx1ZSxcbiAgICB1bml0XG4gICk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWNvcmRfdHlwZVxuICogQHJldHVybnMge1F1ZXJ5Rm9ybX5tYWtlUXVlcnlDYWxsYmFja31cbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VRdWVyeVRlbXBsYXRlID1cbiAgKHJlY29yZF90eXBlKSA9PiAoc2VhcmNoX3Rlcm1zLCBhY3RpdmVGaWx0ZXJzKSA9PiB7XG4gICAgdmFyIHF1ZXJ5ID0gXCJGSU5EIFJFQ09SRFwiO1xuICAgIGlmIChyZWNvcmRfdHlwZSkge1xuICAgICAgcXVlcnkgKz0gYCBcIiR7cmVjb3JkX3R5cGV9XCJgO1xuICAgIH1cbiAgICB2YXIgZmlsdGVyX2Nvbm5lY3RvciA9IFwiIFdJVEggXCI7XG4gICAgaWYgKHNlYXJjaF90ZXJtcyAmJiBzZWFyY2hfdGVybXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc3BsaXR0ZWRfc2VhcmNoX3Rlcm1zID0gc3BsaXRTZWFyY2hUZXJtcyhzZWFyY2hfdGVybXMpLm1hcChcbiAgICAgICAgKHdvcmQpID0+IGBBIFBST1BFUlRZIExJS0UgJyoke3dvcmQucmVwbGFjZUFsbChcIidcIiwgYFxcXFwnYCl9KidgXG4gICAgICApO1xuICAgICAgaWYgKHNwbGl0dGVkX3NlYXJjaF90ZXJtcy5sZW5ndGgpIHtcbiAgICAgICAgZmlsdGVyX2Nvbm5lY3RvciA9IFwiIEFORCBcIjtcbiAgICAgICAgcXVlcnkgKz0gXCIgV0lUSCBcIiArIHNwbGl0dGVkX3NlYXJjaF90ZXJtcy5qb2luKGZpbHRlcl9jb25uZWN0b3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlcnMgPSBhY3RpdmVGaWx0ZXJzLm1hcCgoZmlsdGVyKSA9PlxuICAgICAgbWFrZVF1ZXJ5RmlsdGVyKFxuICAgICAgICBmaWx0ZXIuZGF0YXR5cGUsXG4gICAgICAgIGZpbHRlci5wcm9wZXJ0eSxcbiAgICAgICAgZmlsdGVyLm9wZXJhdG9yLFxuICAgICAgICBmaWx0ZXIudmFsdWUsXG4gICAgICAgIGZpbHRlci51bml0XG4gICAgICApXG4gICAgKTtcblxuICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHF1ZXJ5ICs9IGZpbHRlcl9jb25uZWN0b3IgKyBmaWx0ZXJzLmpvaW4oXCIgQU5EIFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH07XG5cbmNvbnN0IF9zcGxpdFNlYXJjaFRlcm1zUGF0dGVybiA9XG4gIC9cIig/PGRxPlteXCJdKilcIiB8Jyg/PHNxPlteJ10qKScgfCg/PG5xPlteIF0rKS9nO1xuXG4vKipcbiAqIFNwbGl0IGEgcXVlcnkgc3RyaW5nIGludG8gc2luZ2xlIHRlcm1zLlxuICpcbiAqIFRlcm1zIGFyZSBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2VzLiBUZXJtcyB3aGljaCBjb250YWluIHdoaXRlIHNwYWNlc1xuICogd2hpY2ggYXJlIHRvIGJlIHByZXNlcnZlZCBtdXN0IGJlIGVuY2xvc2VkIGluIFwiIG9yICcgcXVvdGVzLiBUaGVcbiAqIGVuY2xvc2luZyBxdW90YXRpb24gbWFya3MgYXJlIGJlaW5nIHN0cmlwcGVkLiBDdXJyZW50bHkgbm8gc3VwcG9ydCBmb3JcbiAqIGVzY2FwZSBzZXF1ZW5jZXMgZm9yIHF1b3RhdGlvbiBtYXJrcy5cbiAqXG4gKiBAZnVuY3Rpb24gc3BsaXRTZWFyY2hUZXJtc1xuICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5IC0gY29tcGxldGUgcXVlcnkgc3RyaW5nLlxuICogQHJldHVybiB7c3RyaW5nW119IGFycmF5IG9mIHRoZSBzZWFyY2ggdGVybXMuXG4gKi9cbmNvbnN0IHNwbGl0U2VhcmNoVGVybXMgPSBmdW5jdGlvbiAocXVlcnkpIHtcbiAgLy8gYWRkIGVtcHR5IHNwYWNlIGF0IHRoZSBlbmQsIHNvIGV2ZXJ5IG1hdGNoaW5nIGdyb3VwIGVuZHMgd2l0aCBpdCAtPiBlYXNpZXIgcmVnZXguIEFsc28sIHVuZGVmaW5lZCBpcyBmaWx0ZXJlZCBvdXRcbiAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgKHF1ZXJ5ICsgXCIgXCIpLm1hdGNoQWxsKF9zcGxpdFNlYXJjaFRlcm1zUGF0dGVybiksXG4gICAgKG0pID0+IG1bMV0gfHwgbVsyXSB8fCBtWzNdXG4gICkuZmlsdGVyKCh3b3JkKSA9PiB3b3JkKTtcbn07XG5cbi8vLy8vLyBUQUJTXG5cbi8qKlxuICogRmlsdGVyRGVmaW5pdGlvbnMgZGVmaW5lIHdoaWNoIGZpbHRlcnMgY2FuIGJlIHNlbGVjdGVkIGJ5IHRoZSB1c2Vycy5cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBRdWVyeUZvcm1+RmlsdGVyRGVmaW5pdGlvblxuICogQHB1YmxpY1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHByb3BlcnR5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gZGF0YXR5cGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbbWluXVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFttYXhdXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3N0ZXBdXG4gKiBAcHJvcGVydHkge3N0cmludH0gW3VuaXRdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2lucHV0VHlwZV1cbiAqL1xuXG4vKipcbiAqIFF1ZXJ5RmlsdGVycyBzcGVjaWZ5IHRoZSBjdXJyZW50IGZpbHRlcnMgYSB1c2VyIGhhcyBzcGVjaWZpZWQgdXNpbmcgdGhlXG4gKiBRdWVyeUZvcm0uXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gUXVlcnlGb3JtflF1ZXJ5RmlsdGVyXG4gKiBAcHVibGljXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcHJvcGVydHlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkYXRhdHlwZVxuICogQHByb3BlcnR5IHtzdGlybmd9IG9wZXJhdG9yXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdW5pdFxuICogQHByb3BlcnR5IHtzdHJpbmd8bnVtYmVyfSB2YWx1ZVxuICovXG5cbi8qKlxuICogV2hlbiB0aGUgcXVlcnkgZm9ybSBpcyBiZWluZyBzdWJtaXR0ZWQsIHRoaXMgY2FsbGJhY2sgZ2VuZXJhdGVzIHRoZSBxdWVyeVxuICogZnJvbSB0aGUgc2VhcmNoIHRlcm1zIGFuZCBhY3RpdmUgRmlsdGVycy5cbiAqXG4gKiBAY2FsbGJhY2sgUXVlcnlGb3Jtfm1ha2VRdWVyeUNhbGxiYWNrXG4gKiBAcHVibGljXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoVGVybXNcbiAqIEBwYXJhbSB7UXVlcnlGb3JtflF1ZXJ5RmlsdGVyW119IGFjdGl2ZUZpbHRlcnNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBnZW5lcmF0ZWQgQ1FMIHF1ZXJ5LlxuICovXG5cbi8qKlxuICogQ3JlYXRlIGEgdGFiIG9iamVjdC5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwdWJsaWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZFxuICogQHBhcmFtIHtzdHJpbmd9IHJlY29yZFR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbGFiZWxdXG4gKiBAcGFyYW0ge3N0cmluZ30gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtIHtRdWVyeUZvcm1+bWFrZVF1ZXJ5Q2FsbGJhY2t9IFttYWtlUXVlcnlDYWxsYmFjaz1tYWtlUXVlcnlUZW1wbGF0ZShpZCldXG4gKiBAcGFyYW0ge1F1ZXJ5Rm9ybX5GaWx0ZXJEZWZpbml0aW9uW119IFtmaWx0ZXJEZWZpbml0aW9ucz1bXV1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhYihcbiAgaWQsXG4gIHJlY29yZFR5cGUsXG4gIGxhYmVsLFxuICBkZXNjcmlwdGlvbixcbiAgbWFrZVF1ZXJ5Q2FsbGJhY2ssXG4gIGZpbHRlckRlZmluaXRpb25zXG4pIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogaWQsXG4gICAgcmVjb3JkVHlwZTogcmVjb3JkVHlwZSxcbiAgICBsYWJlbDogbGFiZWwgfHwgcmVjb3JkVHlwZSB8fCBpZCxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIGRlc2NyaXB0aW9uIHx8IGBTaG93IG9ubHkgcmVzdWx0cyBvZiB0eXBlICR7bGFiZWwgfHwgcmVjb3JkVHlwZSB8fCBpZH1gLFxuICAgIG1ha2VRdWVyeTogbWFrZVF1ZXJ5Q2FsbGJhY2sgfHwgbWFrZVF1ZXJ5VGVtcGxhdGUocmVjb3JkVHlwZSksXG4gICAgZmlsdGVyRGVmaW5pdGlvbnM6IGZpbHRlckRlZmluaXRpb25zIHx8IFtdLFxuICB9O1xufVxuXG4vLy8vLy8gREVCVUdHSU5HIEFORCBURVNUSU5HXG5cbi8qKlxuICogQ3JlYXRlIHNvbWUgcXVlcnkgcGFuZWwgdGFicyBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nLlxuICovXG5leHBvcnQgY29uc3QgZ2V0X3Rlc3RfdGFicyA9ICgpID0+IHtcbiAgY29uc3QgbWFrZUZpbHRlckRlZmluaXRpb25zID0gKGlkKSA9PiBbXG4gICAgeyBwcm9wZXJ0eTogaWQgKyBcIi10ZXh0LXByb3BlcnR5XCIsIGRhdGF0eXBlOiBcInRleHRcIiB9LFxuICAgIHsgcHJvcGVydHk6IGlkICsgXCItZGF0ZXRpbWUtcHJvcGVydHlcIiwgZGF0YXR5cGU6IFwiZGF0ZXRpbWVcIiB9LFxuICAgIHsgcHJvcGVydHk6IGlkICsgXCItaW50ZWdlci1wcm9wZXJ0eVwiLCBkYXRhdHlwZTogXCJpbnRlZ2VyXCIgfSxcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogaWQgKyBcIi1kb3VibGUtcHJvcGVydHlcIixcbiAgICAgIGRhdGF0eXBlOiBcImRvdWJsZVwiLFxuICAgICAgbWluOiBcIi01MFwiLFxuICAgICAgbWF4OiBcIjUwXCIsXG4gICAgICB1bml0OiBcIm1cIixcbiAgICB9LFxuICAgIHsgcHJvcGVydHk6IGlkICsgXCItYm9vbGVhbi1wcm9wZXJ0eVwiLCBkYXRhdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogYFwiJHtpZH0tcmVmZXJlbmNlLXByb3BlcnR5XCIuXCJzdWItcHJvcGVydHlcImAsXG4gICAgICBsYWJlbDogYHN1Yi1wcm9wZXJ0eSBvZiAke2lkfS1yZWZlcmVuY2UtcHJvcGVydHlgLFxuICAgICAgZGF0YXR5cGU6IFwidGV4dFwiLFxuICAgIH0sXG4gIF07XG4gIHJldHVybiBbXG4gICAgY3JlYXRlVGFiKFxuICAgICAgXCJhbGxcIixcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIFwiQWxsXCIsXG4gICAgICBcIlNob3cgYWxsIG1hdGNoaW5nIHJlc3VsdHNcIixcbiAgICAgIG1ha2VRdWVyeVRlbXBsYXRlKFwiXCIpLFxuICAgICAgbWFrZUZpbHRlckRlZmluaXRpb25zKFwiYWxsXCIpXG4gICAgKSxcbiAgICBjcmVhdGVUYWIoXG4gICAgICBcImRhdGFzZXRcIixcbiAgICAgIFwiRGF0YXNldFwiLFxuICAgICAgXCJEYXRhc2V0XCIsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBtYWtlUXVlcnlUZW1wbGF0ZShcIkRhdGFzZXRcIiksXG4gICAgICBtYWtlRmlsdGVyRGVmaW5pdGlvbnMoXCJkYXRhc2V0XCIpXG4gICAgKSxcbiAgICBjcmVhdGVUYWIoXG4gICAgICBcImV2ZW50XCIsXG4gICAgICBcIkV2ZW50XCIsXG4gICAgICBcIkV2ZW50XCIsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBtYWtlUXVlcnlUZW1wbGF0ZShcIkV2ZW50XCIpLFxuICAgICAgbWFrZUZpbHRlckRlZmluaXRpb25zKFwiZXZlbnRcIilcbiAgICApLFxuICAgIGNyZWF0ZVRhYihcbiAgICAgIFwicGVyc29uXCIsXG4gICAgICBcIlBlcnNvblwiLFxuICAgICAgXCJQZXJzb25cIixcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIG1ha2VRdWVyeVRlbXBsYXRlKFwiUGVyc29uXCIpLFxuICAgICAgbWFrZUZpbHRlckRlZmluaXRpb25zKFwicGVyc29uXCIpXG4gICAgKSxcbiAgXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRfdGVzdF9zdWdnZXN0aW9ucyA9IGFzeW5jIChpc0NxbCwgZnVsbCwgcHJlZml4KSA9PiB7XG4gIGNvbnN0IGFjID0gbmV3IEF1dG9Db21wbGV0aW9uKFxuICAgICgpID0+IFtcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24xXCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uMlwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjNcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb240XCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uNVwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjZcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb243XCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uOFwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjlcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24xMFwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjExXCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uMTJcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24xM1wiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjE0XCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uMTVcIixcbiAgICBdLFxuICAgIENRTF9XT1JEU1xuICApO1xuICByZXR1cm4gYWMuZ2V0U3VnZ2VzdGlvbnMoaXNDcWwsIGZ1bGwsIHByZWZpeCk7XG59O1xuIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBhIHBhcnQgb2YgdGhlIENhb3NEQiBQcm9qZWN0LlxuICpcbiAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzIFRpbW0gRml0c2NoZW4gPHQuZml0c2NoZW5AaW5kaXNjYWxlLmNvbT5cbiAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzIEluZGlTY2FsZSBHbWJIIDxpbmZvQGluZGlzY2FsZS5jb20+XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9wcm9wLXR5cGVzICovXG5pbXBvcnQgUmVhY3QsIHtcbiAgdXNlTWVtbyxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZVJlZHVjZXIsXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ29udGV4dCxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBMb2FkaW5nSW5mbyB9IGZyb20gXCIuL0xvYWRpbmdJbmZvXCI7XG5pbXBvcnQgZ2V0Q2FyZXRDb29yZGluYXRlcyBmcm9tIFwidGV4dGFyZWEtY2FyZXRcIjtcbmltcG9ydCB7IEF1dG9Db21wbGV0aW9uIH0gZnJvbSBcIi4vUXVlcnlGb3JtLmhlbHBlcnNcIjtcbmltcG9ydCB7XG4gIGFsbG93ZWRfb3BlcmF0b3JzLFxuICBpc1NlbGVjdCBhcyBmSXNTZWxlY3QsXG4gIGlzQ3FsIGFzIGZJc0NxbCxcbiAgZ2V0X3Rlc3Rfc3VnZ2VzdGlvbnMsXG4gIGdldF90ZXN0X3RhYnMsXG59IGZyb20gXCIuL1F1ZXJ5Rm9ybS5oZWxwZXJzXCI7XG5cbmNvbnN0IFF1ZXJ5Rm9ybUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcblxuY29uc3QgUmFuZ2VGaWx0ZXJJbnB1dCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IG9uQ2hhbmdlLCB2YWx1ZSB9ID0gcHJvcHM7XG4gIGNvbnN0IG9uQ2hhbmdlTWluID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld0UgPSB7IHRhcmdldDogeyB2YWx1ZTogW2UudGFyZ2V0LnZhbHVlLCB2YWx1ZVsxXV0gfSB9O1xuICAgICAgb25DaGFuZ2UobmV3RSk7XG4gICAgfSxcbiAgICBbb25DaGFuZ2UsIHZhbHVlXVxuICApO1xuICBjb25zdCBvbkNoYW5nZU1heCA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBjb25zdCBuZXdFID0geyB0YXJnZXQ6IHsgdmFsdWU6IFt2YWx1ZVswXSwgZS50YXJnZXQudmFsdWVdIH0gfTtcbiAgICAgIG9uQ2hhbmdlKG5ld0UpO1xuICAgIH0sXG4gICAgW29uQ2hhbmdlLCB2YWx1ZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgdmFsdWU9e3Byb3BzLnZhbHVlWzBdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VNaW59XG4gICAgICAgIG1heD17cHJvcHMudmFsdWVbMV19XG4gICAgICAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXgtMVwiPnRvPC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIHZhbHVlPXtwcm9wcy52YWx1ZVsxXX1cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlTWF4fVxuICAgICAgICBtaW49e3Byb3BzLnZhbHVlWzBdfVxuICAgICAgLz5cbiAgICAgIHtwcm9wcy51bml0RWxlbWVudH1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmNvbnN0IEZpbHRlcklucHV0ID0gKHtcbiAgbWluLFxuICBtYXgsXG4gIHN0ZXAsXG4gIHZhbHVlLFxuICBzZXRWYWx1ZSxcbiAgZGF0YXR5cGUsXG4gIG9wZXJhdG9yLFxuICB1bml0LFxuICBpbnB1dHR5cGUsXG59KSA9PiB7XG4gIGNvbnN0IG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGUpID0+IHNldFZhbHVlKGUudGFyZ2V0LnZhbHVlKSwgW3NldFZhbHVlXSk7XG4gIGlmICghZGF0YXR5cGUgfHwgIW9wZXJhdG9yKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjbGFzc05hbWU6IFwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiLFxuICAgIG9uQ2hhbmdlOiBvbkNoYW5nZSxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgbWluOiBtaW4sXG4gICAgbWF4OiBtYXgsXG4gIH07XG4gIGlmIChpbnB1dHR5cGUpIHtcbiAgICBkZWZhdWx0UHJvcHMudHlwZSA9IGlucHV0dHlwZTtcbiAgfVxuICBpZiAoc3RlcCkge1xuICAgIGRlZmF1bHRQcm9wcy5zdGVwID0gc3RlcDtcbiAgfVxuXG4gIGNvbnN0IHVuaXRFbGVtZW50ID0gdW5pdCAmJiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPVwibXMtMVwiIHRpdGxlPVwiVGhlIHVuaXRcIj5cbiAgICAgIHt1bml0fVxuICAgIDwvc3Bhbj5cbiAgKTtcblxuICBjb25zdCBpbnB1dEVsZW1lbnQgPSB7XG4gICAgYm9vbGVhbjogeyBfZGVmYXVsdDogbnVsbCB9LFxuICAgIGludGVnZXI6IHtcbiAgICAgIF9kZWZhdWx0OiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGlucHV0IHsuLi5kZWZhdWx0UHJvcHN9IHR5cGU9XCJudW1iZXJcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgICAge3VuaXRFbGVtZW50fVxuICAgICAgICA8Lz5cbiAgICAgICksXG4gICAgICByYW5nZTogKFxuICAgICAgICA8UmFuZ2VGaWx0ZXJJbnB1dFxuICAgICAgICAgIHVuaXRFbGVtZW50PXt1bml0RWxlbWVudH1cbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIHN0ZXA9XCIxXCJcbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgfSxcbiAgICBkb3VibGU6IHtcbiAgICAgIF9kZWZhdWx0OiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGlucHV0IHN0ZXA9XCIwLjAwMVwiIHsuLi5kZWZhdWx0UHJvcHN9IHR5cGU9XCJudW1iZXJcIiAvPlxuICAgICAgICAgIHt1bml0RWxlbWVudH1cbiAgICAgICAgPC8+XG4gICAgICApLFxuICAgICAgcmFuZ2U6IChcbiAgICAgICAgPFJhbmdlRmlsdGVySW5wdXRcbiAgICAgICAgICB1bml0RWxlbWVudD17dW5pdEVsZW1lbnR9XG4gICAgICAgICAgc3RlcD1cIjAuMDAxXCJcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIF9kZWZhdWx0OiB7IF9kZWZhdWx0OiA8aW5wdXQgey4uLmRlZmF1bHRQcm9wc30gLz4gfSxcbiAgfTtcblxuICBpZiAoaW5wdXRFbGVtZW50W2RhdGF0eXBlXSkge1xuICAgIGlmIChcbiAgICAgIGlucHV0RWxlbWVudFtkYXRhdHlwZV1bb3BlcmF0b3JdIHx8XG4gICAgICBpbnB1dEVsZW1lbnRbZGF0YXR5cGVdW29wZXJhdG9yXSA9PT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuIGlucHV0RWxlbWVudFtkYXRhdHlwZV1bb3BlcmF0b3JdO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBpbnB1dEVsZW1lbnRbZGF0YXR5cGVdW1wiX2RlZmF1bHRcIl0gfHxcbiAgICAgIGlucHV0RWxlbWVudFtkYXRhdHlwZV1bXCJfZGVmYXVsdFwiXSA9PT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuIGlucHV0RWxlbWVudFtkYXRhdHlwZV1bXCJfZGVmYXVsdFwiXTtcbiAgICB9XG4gIH1cblxuICBpZiAoaW5wdXRFbGVtZW50W1wiX2RlZmF1bHRcIl1bb3BlcmF0b3JdKSB7XG4gICAgcmV0dXJuIGlucHV0RWxlbWVudFtcIl9kZWZhdWx0XCJdW29wZXJhdG9yXTtcbiAgfVxuXG4gIHJldHVybiBpbnB1dEVsZW1lbnRbXCJfZGVmYXVsdFwiXVtcIl9kZWZhdWx0XCJdO1xufTtcblxuZnVuY3Rpb24gQ3FsSGludCgpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJjYW9zZGItZi1xdWVyeS1jcWwtaGludFwiXG4gICAgICB0aXRsZT1cIllvdSBhcmUgdXNpbmcgdGhlIGV4cGVydCBzZWFyY2ggbW9kZS4gRW50ZXIgYSB2YWxpZCBDUUwgUXVlcnkuXCJcbiAgICA+XG4gICAgICBDUUxcbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gUXVlcnlGb3JtU2luZ2xlVGFiKHsgdGFiLCBzZXRBY3RpdmVUYWIsIGlzQWN0aXZlVGFiIH0pIHtcbiAgY29uc3QgYWN0aXZhdGVUYWIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFpc0FjdGl2ZVRhYikge1xuICAgICAgc2V0QWN0aXZlVGFiKHRhYik7XG4gICAgfVxuICB9LCBbdGFiLCBzZXRBY3RpdmVUYWIsIGlzQWN0aXZlVGFiXSk7XG5cbiAgY29uc3QgY2xhc3NOYW1lID0gXCJjYW9zZGItZi1xdWVyeS10YWJcIiArIChpc0FjdGl2ZVRhYiA/IFwiIGFjdGl2ZVwiIDogXCJcIik7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICB0aXRsZT17dGFiLmRlc2NyaXB0aW9ufVxuICAgICAgdGFiSW5kZXg9e2lzQWN0aXZlVGFiID8gXCItMVwiIDogXCIwXCJ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIG9uQ2xpY2s9e2lzQWN0aXZlVGFiID8gdW5kZWZpbmVkIDogYWN0aXZhdGVUYWJ9XG4gICAgPlxuICAgICAge3RhYi5sYWJlbH1cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gQWRkVGFiRmlsdGVyT3BlcmF0b3Ioe1xuICBmaWx0ZXIsXG4gIGZpbHRlcklkeCxcbiAgdXBkYXRlRmlsdGVyLFxuICByZXN0b3JlT3BlcmF0b3IsXG4gIHJlc3RvcmVWYWx1ZSxcbn0pIHtcbiAgY29uc3QgW29wZXJhdG9yLCBzZXRPcGVyYXRvcl0gPSB1c2VTdGF0ZShcbiAgICBmaWx0ZXIub3BlcmF0b3IgfHwgYWxsb3dlZF9vcGVyYXRvcnNbZmlsdGVyLmRhdGF0eXBlXVswXVxuICApO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKGZpbHRlci52YWx1ZSB8fCBcIlwiKTtcblxuICBjb25zdCBpbnB1dEVsZW1lbnQgPSAoXG4gICAgPEZpbHRlcklucHV0XG4gICAgICBkYXRhdHlwZT17ZmlsdGVyLmRhdGF0eXBlfVxuICAgICAgb3BlcmF0b3I9e29wZXJhdG9yfVxuICAgICAgc2V0VmFsdWU9e3NldFZhbHVlfVxuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgdW5pdD17ZmlsdGVyLnVuaXR9XG4gICAgICBtaW49e2ZpbHRlci5taW59XG4gICAgICBtYXg9e2ZpbHRlci5tYXh9XG4gICAgICBzdGVwPXtmaWx0ZXIuc3RlcH1cbiAgICAgIGlucHV0dHlwZT17ZmlsdGVyLmlucHV0dHlwZX1cbiAgICAvPlxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlc3RvcmVPcGVyYXRvciAmJiBvcGVyYXRvciAhPT0gcmVzdG9yZU9wZXJhdG9yKSB7XG4gICAgICBzZXRPcGVyYXRvcihyZXN0b3JlT3BlcmF0b3IpO1xuICAgIH1cbiAgfSwgW3Jlc3RvcmVPcGVyYXRvciwgb3BlcmF0b3JdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZXN0b3JlVmFsdWUgJiYgdmFsdWUgIT09IHJlc3RvcmVWYWx1ZSkge1xuICAgICAgc2V0VmFsdWUocmVzdG9yZVZhbHVlKTtcbiAgICB9XG4gIH0sIFtyZXN0b3JlVmFsdWUsIHZhbHVlXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlcmF0b3IgIT09IGZpbHRlci5vcGVyYXRvcikge1xuICAgICAgdXBkYXRlRmlsdGVyKGZpbHRlcklkeCwge1xuICAgICAgICByZXN0b3JlT3BlcmF0b3I6IHVuZGVmaW5lZCxcbiAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbb3BlcmF0b3IsIGZpbHRlci5vcGVyYXRvciwgZmlsdGVySWR4LCB1cGRhdGVGaWx0ZXJdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh2YWx1ZSAhPT0gZmlsdGVyLnZhbHVlKSB7XG4gICAgICB1cGRhdGVGaWx0ZXIoZmlsdGVySWR4LCB7XG4gICAgICAgIHJlc3RvcmVWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFt2YWx1ZSwgZmlsdGVyLnZhbHVlLCBmaWx0ZXJJZHgsIHVwZGF0ZUZpbHRlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBjbGFzc05hbWU9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXG4gICAgICAgICAgdmFsdWU9e29wZXJhdG9yfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0T3BlcmF0b3IoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICA+XG4gICAgICAgICAge2FsbG93ZWRfb3BlcmF0b3JzW2ZpbHRlci5kYXRhdHlwZV0ubWFwKChvcCwgaWR4KSA9PiAoXG4gICAgICAgICAgICA8b3B0aW9uIGtleT17aWR4fT57b3B9PC9vcHRpb24+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleFwiPntpbnB1dEVsZW1lbnR9PC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEZpbHRlclNlbGVjdCh7IHNlbGVjdGVkLCBmaWx0ZXJEZWZpbml0aW9ucywgb25DaGFuZ2UsIHRpdGxlIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c2VsZWN0XG4gICAgICB0aXRsZT17dGl0bGV9XG4gICAgICBjbGFzc05hbWU9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXG4gICAgICB2YWx1ZT17c2VsZWN0ZWR9XG4gICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgPlxuICAgICAge2ZpbHRlckRlZmluaXRpb25zLm1hcCgoZmlsLCBpZHgpID0+IChcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT17ZmlsLnByb3BlcnR5fSBzdHlsZT17ZmlsLnN0eWxlfSBrZXk9e2lkeH0+XG4gICAgICAgICAge2ZpbC5sYWJlbCB8fCBmaWwucHJvcGVydHl9XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgKSl9XG4gICAgPC9zZWxlY3Q+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEFkZEZpbHRlcih7IGZpbHRlckRlZmluaXRpb25zLCBhZGRGaWx0ZXIgfSkge1xuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBhZGRGaWx0ZXIoZS50YXJnZXQudmFsdWUpO1xuICAgIH0sXG4gICAgW2FkZEZpbHRlcl1cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAgPEZpbHRlclNlbGVjdFxuICAgICAgICBmaWx0ZXJEZWZpbml0aW9ucz17ZmlsdGVyRGVmaW5pdGlvbnMuY29uY2F0KHtcbiAgICAgICAgICBwcm9wZXJ0eTogXCJfX2FkZF9maWx0ZXJfX1wiLFxuICAgICAgICAgIGxhYmVsOiBcIkFkZCBGaWx0ZXJcIixcbiAgICAgICAgICBzdHlsZTogeyBkaXNwbGF5OiBcIm5vbmVcIiB9LFxuICAgICAgICB9KX1cbiAgICAgICAgc2VsZWN0ZWQ9XCJfX2FkZF9maWx0ZXJfX1wiXG4gICAgICAgIHRpdGxlPVwiQWRkIEZpbHRlclwiXG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEZpbHRlcih7XG4gIGZpbHRlckRlZmluaXRpb25zLFxuICBmaWx0ZXJJZHgsXG4gIGFjdGl2ZUZpbHRlcnMsXG4gIHVwZGF0ZUZpbHRlcixcbiAgc2V0UHJvcGVydHksXG4gIHJlbW92ZUZpbHRlcixcbn0pIHtcbiAgY29uc3QgYWN0aXZlRmlsdGVyID0gYWN0aXZlRmlsdGVycyAmJiBhY3RpdmVGaWx0ZXJzW2ZpbHRlcklkeF07XG4gIGNvbnN0IG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIHNldFByb3BlcnR5KGZpbHRlcklkeCwgZS50YXJnZXQudmFsdWUpO1xuICAgIH0sXG4gICAgW3NldFByb3BlcnR5LCBmaWx0ZXJJZHhdXG4gICk7XG4gIGNvbnN0IHJlbW92ZVRoaXMgPSB1c2VDYWxsYmFjayhcbiAgICAoKSA9PiByZW1vdmVGaWx0ZXIoZmlsdGVySWR4KSxcbiAgICBbcmVtb3ZlRmlsdGVyLCBmaWx0ZXJJZHhdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYW9zZGItZi1xdWVyeS1maWx0ZXItcHJvcGVydHktc2VsZWN0b3JcIj5cbiAgICAgICAgPEZpbHRlclNlbGVjdFxuICAgICAgICAgIGZpbHRlckRlZmluaXRpb25zPXtmaWx0ZXJEZWZpbml0aW9uc31cbiAgICAgICAgICBzZWxlY3RlZD17YWN0aXZlRmlsdGVyLnByb3BlcnR5fVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPEFkZFRhYkZpbHRlck9wZXJhdG9yXG4gICAgICAgIHJlc3RvcmVWYWx1ZT17YWN0aXZlRmlsdGVyLnJlc3RvcmVWYWx1ZX1cbiAgICAgICAgcmVzdG9yZU9wZXJhdG9yPXthY3RpdmVGaWx0ZXIucmVzdG9yZU9wZXJhdG9yfVxuICAgICAgICB1cGRhdGVGaWx0ZXI9e3VwZGF0ZUZpbHRlcn1cbiAgICAgICAgZmlsdGVySWR4PXtmaWx0ZXJJZHh9XG4gICAgICAgIGZpbHRlcj17YWN0aXZlRmlsdGVyfVxuICAgICAgLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1lbmQgZmxleC1ncm93LTFcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcbiAgICAgICAgICBvbkNsaWNrPXtyZW1vdmVUaGlzfVxuICAgICAgICA+XG4gICAgICAgICAgUmVtb3ZlIEZpbHRlclxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1UYWJGaWx0ZXJzSW5uZXIoe1xuICBmaWx0ZXJEZWZpbml0aW9ucyxcbiAgYWN0aXZlRmlsdGVycyxcbiAgc2V0QWN0aXZlRmlsdGVycyxcbn0pIHtcbiAgY29uc3QgcmVtb3ZlRmlsdGVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGZpbHRlcklkeCkgPT4ge1xuICAgICAgc2V0QWN0aXZlRmlsdGVycyhhY3RpdmVGaWx0ZXJzLmZpbHRlcigoZmlsLCBpZHgpID0+IGlkeCAhPT0gZmlsdGVySWR4KSk7XG4gICAgfSxcbiAgICBbYWN0aXZlRmlsdGVycywgc2V0QWN0aXZlRmlsdGVyc11cbiAgKTtcblxuICBjb25zdCB1cGRhdGVGaWx0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZmlsdGVySWR4LCB1cGRhdGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld0FjdGl2ZUZpbHRlcnMgPSBbXS5jb25jYXQoYWN0aXZlRmlsdGVycyk7XG5cbiAgICAgIG5ld0FjdGl2ZUZpbHRlcnNbZmlsdGVySWR4XSA9IHtcbiAgICAgICAgLi4ubmV3QWN0aXZlRmlsdGVyc1tmaWx0ZXJJZHhdLFxuICAgICAgICAuLi51cGRhdGUsXG4gICAgICB9O1xuXG4gICAgICBzZXRBY3RpdmVGaWx0ZXJzKG5ld0FjdGl2ZUZpbHRlcnMpO1xuICAgIH0sXG4gICAgW2FjdGl2ZUZpbHRlcnMsIHNldEFjdGl2ZUZpbHRlcnNdXG4gICk7XG5cbiAgY29uc3Qgc2V0UHJvcGVydHkgPSB1c2VDYWxsYmFjayhcbiAgICAoZmlsdGVySWR4LCBwcm9wZXJ0eU5hbWUpID0+IHtcbiAgICAgIGNvbnN0IHByb3BlcnR5RmlsdGVyID0gZmlsdGVyRGVmaW5pdGlvbnMuZmlsdGVyKFxuICAgICAgICAoZmlsKSA9PiBmaWwucHJvcGVydHkgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKVswXTtcbiAgICAgIHVwZGF0ZUZpbHRlcihmaWx0ZXJJZHgsIHtcbiAgICAgICAgcmVzdG9yZVZhbHVlOiBcIlwiLFxuICAgICAgICByZXN0b3JlT3BlcmF0b3I6IGFsbG93ZWRfb3BlcmF0b3JzW3Byb3BlcnR5RmlsdGVyLmRhdGF0eXBlXVswXSxcbiAgICAgICAgcHJvcGVydHk6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgZGF0YXR5cGU6IHByb3BlcnR5RmlsdGVyLmRhdGF0eXBlLFxuICAgICAgICB1bml0OiBwcm9wZXJ0eUZpbHRlci51bml0LFxuICAgICAgICBtaW46IHByb3BlcnR5RmlsdGVyLm1pbixcbiAgICAgICAgbWF4OiBwcm9wZXJ0eUZpbHRlci5tYXgsXG4gICAgICAgIGZpbHRlcjogcHJvcGVydHlGaWx0ZXIsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFt1cGRhdGVGaWx0ZXIsIGZpbHRlckRlZmluaXRpb25zXVxuICApO1xuXG4gIGNvbnN0IGFkZEZpbHRlciA9IHVzZUNhbGxiYWNrKFxuICAgIChwcm9wZXJ0eU5hbWUpID0+IHtcbiAgICAgIGNvbnN0IHByb3BlcnR5RmlsdGVyID0gZmlsdGVyRGVmaW5pdGlvbnMuZmlsdGVyKFxuICAgICAgICAoZmlsKSA9PiBmaWwucHJvcGVydHkgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKVswXTtcbiAgICAgIHNldEFjdGl2ZUZpbHRlcnMoXG4gICAgICAgIGFjdGl2ZUZpbHRlcnMuY29uY2F0KHtcbiAgICAgICAgICBwcm9wZXJ0eTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgIGRhdGF0eXBlOiBwcm9wZXJ0eUZpbHRlci5kYXRhdHlwZSxcbiAgICAgICAgICB1bml0OiBwcm9wZXJ0eUZpbHRlci51bml0LFxuICAgICAgICAgIG1pbjogcHJvcGVydHlGaWx0ZXIubWluLFxuICAgICAgICAgIG1heDogcHJvcGVydHlGaWx0ZXIubWF4LFxuICAgICAgICAgIGZpbHRlcjogcHJvcGVydHlGaWx0ZXIsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0sXG4gICAgW2FjdGl2ZUZpbHRlcnMsIHNldEFjdGl2ZUZpbHRlcnMsIGZpbHRlckRlZmluaXRpb25zXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHthY3RpdmVGaWx0ZXJzLm1hcCgoZmlsLCBpZHgpID0+IChcbiAgICAgICAgPEZpbHRlclxuICAgICAgICAgIGtleT17aWR4fVxuICAgICAgICAgIGZpbHRlcklkeD17aWR4fVxuICAgICAgICAgIGZpbHRlckRlZmluaXRpb25zPXtmaWx0ZXJEZWZpbml0aW9uc31cbiAgICAgICAgICBhY3RpdmVGaWx0ZXJzPXthY3RpdmVGaWx0ZXJzfVxuICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcnM9e3NldEFjdGl2ZUZpbHRlcnN9XG4gICAgICAgICAgdXBkYXRlRmlsdGVyPXt1cGRhdGVGaWx0ZXJ9XG4gICAgICAgICAgc2V0UHJvcGVydHk9e3NldFByb3BlcnR5fVxuICAgICAgICAgIHJlbW92ZUZpbHRlcj17cmVtb3ZlRmlsdGVyfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleFwiPlxuICAgICAgICA8QWRkRmlsdGVyXG4gICAgICAgICAgZmlsdGVyRGVmaW5pdGlvbnM9e2ZpbHRlckRlZmluaXRpb25zfVxuICAgICAgICAgIGFkZEZpbHRlcj17YWRkRmlsdGVyfVxuICAgICAgICAvPlxuICAgICAgICB7YWN0aXZlRmlsdGVycy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIHRpdGxlPVwiU2VhcmNoIHdpdGggZmlsdGVyc1wiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG1zLWF1dG9cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFNlYXJjaFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFF1ZXJ5Rm9ybVRhYkZpbHRlcnMoe1xuICBmaWx0ZXJEZWZpbml0aW9ucyxcbiAgYWN0aXZlRmlsdGVycyxcbiAgc2V0QWN0aXZlRmlsdGVycyxcbn0pIHtcbiAgY29uc3QgW3Nob3dGaWx0ZXJzLCBzZXRTaG93RmlsdGVyc10gPSB1c2VTdGF0ZShhY3RpdmVGaWx0ZXJzLmxlbmd0aCA+IDApO1xuXG4gIGNvbnN0IHRpdGxlID0gc2hvd0ZpbHRlcnNcbiAgICA/IFwiQ2FuY2VsIEFkdmFuY2VkIEZpbHRlcmluZ1wiXG4gICAgOiBcIkFkdmFuY2VkIEZpbHRlcmluZ1wiO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dGaWx0ZXJzKCFzaG93RmlsdGVycyl9XG4gICAgICAgIGNsYXNzTmFtZT1cImJ0biBtcy1hdXRvIGNhb3NkYi1mLXF1ZXJ5LWZpbHRlcnMtdG9nZ2xlXCJcbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgPlxuICAgICAgICB7c2hvd0ZpbHRlcnMgPyAoXG4gICAgICAgICAgPGkgY2xhc3NOYW1lPVwiYmkgYmkteFwiPjwvaT5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8aSBjbGFzc05hbWU9XCJiaSBiaS1maWx0ZXJcIj48L2k+XG4gICAgICAgICl9XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIHtzaG93RmlsdGVycyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMgdy0xMDBcIj5cbiAgICAgICAgICA8UXVlcnlGb3JtVGFiRmlsdGVyc0lubmVyXG4gICAgICAgICAgICBmaWx0ZXJEZWZpbml0aW9ucz17ZmlsdGVyRGVmaW5pdGlvbnN9XG4gICAgICAgICAgICBhY3RpdmVGaWx0ZXJzPXthY3RpdmVGaWx0ZXJzfVxuICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVycz17c2V0QWN0aXZlRmlsdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFF1ZXJ5Rm9ybVRhYnMoe1xuICB0YWJzLFxuICBzZXRBY3RpdmVUYWIsXG4gIGFjdGl2ZVRhYixcbiAgYWN0aXZlRmlsdGVycyxcbiAgc2V0QWN0aXZlRmlsdGVycyxcbn0pIHtcbiAgY29uc3QgaGFzRmlsdGVycyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBhY3RpdmVUYWIgJiZcbiAgICAgIGFjdGl2ZVRhYi5maWx0ZXJEZWZpbml0aW9ucyAmJlxuICAgICAgYWN0aXZlVGFiLmZpbHRlckRlZmluaXRpb25zLmxlbmd0aCA+IDBcbiAgICApO1xuICB9LCBbYWN0aXZlVGFiXSk7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJjYW9zZGItZi1xdWVyeS10YWItbGlzdCBkLWZsZXggZmxleC13cmFwXCI+XG4gICAgICB7dGFicy5tYXAoKHRhYikgPT4gKFxuICAgICAgICA8UXVlcnlGb3JtU2luZ2xlVGFiXG4gICAgICAgICAgaXNBY3RpdmVUYWI9e2FjdGl2ZVRhYi5pZCA9PT0gdGFiLmlkfVxuICAgICAgICAgIHNldEFjdGl2ZVRhYj17c2V0QWN0aXZlVGFifVxuICAgICAgICAgIGtleT17dGFiLmxhYmVsfVxuICAgICAgICAgIHRhYj17dGFifVxuICAgICAgICAvPlxuICAgICAgKSl9e1wiIFwifVxuICAgICAge2hhc0ZpbHRlcnMgJiYgKFxuICAgICAgICA8UXVlcnlGb3JtVGFiRmlsdGVyc1xuICAgICAgICAgIHsuLi5hY3RpdmVUYWJ9XG4gICAgICAgICAgYWN0aXZlRmlsdGVycz17YWN0aXZlRmlsdGVyc31cbiAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXJzPXtzZXRBY3RpdmVGaWx0ZXJzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gUXVlcnlTdWJtaXRCdXR0b24oeyBpc1N1Ym1pdHRlZCwgYWN0aXZlIH0pIHtcbiAgaWYgKGlzU3VibWl0dGVkKSB7XG4gICAgcmV0dXJuIDxMb2FkaW5nSW5mbyBjbGFzc05hbWU9XCJhbGlnbi1zZWxmLWNlbnRlclwiIHNpemU9XCJzbVwiIC8+O1xuICB9XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvbiBhcmlhLWxhYmVsPVwic2VhcmNoXCIgdGl0bGU9XCJTZWFyY2hcIiB0eXBlPVwic3VibWl0XCIgZGlzYWJsZWQ9eyFhY3RpdmV9PlxuICAgICAgPGkgY2xhc3NOYW1lPVwiYmkgYmktc2VhcmNoXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICApO1xufVxuXG5mdW5jdGlvbiBTaW5nbGVRdWVyeUZvcm1TdWdnZXN0aW9uc0l0ZW0oe1xuICBzdWdnZXN0aW9uLFxuICBpc0hpZ2hsaWdodGVkLFxuICBvbk1vdXNlRW50ZXIsXG59KSB7XG4gIHJldHVybiAoXG4gICAgPGxpXG4gICAgICBvbk1vdXNlRW50ZXI9e29uTW91c2VFbnRlcn1cbiAgICAgIGNsYXNzTmFtZT17aXNIaWdobGlnaHRlZCA/IFwiaGlnaGxpZ2h0XCIgOiBcIlwifVxuICAgID5cbiAgICAgIHtzdWdnZXN0aW9uLm9yaWdpbmFsfVxuICAgIDwvbGk+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zSXRlbXMoe1xuICBzdWdnZXN0aW9ucyxcbiAgaGlnaGxpZ2h0SW5kZXgsXG4gIHNlbGVjdFN1Z2dlc3Rpb24sXG59KSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzdWdnZXN0aW9ucy5tYXAoKHN1ZywgaW5kZXgpID0+IChcbiAgICAgICAgPFNpbmdsZVF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zSXRlbVxuICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gc2VsZWN0U3VnZ2VzdGlvbihpbmRleCl9XG4gICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICBpc0hpZ2hsaWdodGVkPXtoaWdobGlnaHRJbmRleCA9PT0gaW5kZXh9XG4gICAgICAgICAgc3VnZ2VzdGlvbj17c3VnfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zKHtcbiAgdW5zZWxlY3RTdWdnZXN0aW9ucyxcbiAgc2VsZWN0U3VnZ2VzdGlvbixcbiAgaGlnaGxpZ2h0SW5kZXgsXG4gIHN1Z2dlc3Rpb25zLFxuICBnZXRJbnB1dFJlZixcbiAgd29yZFBvcyxcbiAgd29yZCxcbiAgeE9mZnNldCxcbn0pIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IGl0ZW1zID0gKFxuICAgIDxRdWVyeUZvcm1TdWdnZXN0aW9uc0l0ZW1zXG4gICAgICBzZWxlY3RTdWdnZXN0aW9uPXtzZWxlY3RTdWdnZXN0aW9ufVxuICAgICAgaGlnaGxpZ2h0SW5kZXg9e2hpZ2hsaWdodEluZGV4fVxuICAgICAgc3VnZ2VzdGlvbnM9e3N1Z2dlc3Rpb25zfVxuICAgIC8+XG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaGlnaGxpZ2h0SW5kZXggPiAtMSkge1xuICAgICAgcmVmLmN1cnJlbnQuc2Nyb2xsKDAsIDI0ICogaGlnaGxpZ2h0SW5kZXggLSA0OCk7XG4gICAgfVxuICB9LCBbaGlnaGxpZ2h0SW5kZXhdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpbnB1dFJlZiA9IGdldElucHV0UmVmKCk7XG4gICAgdmFyIGNvb3JkcyA9IGdldENhcmV0Q29vcmRpbmF0ZXMoaW5wdXRSZWYuY3VycmVudCwgd29yZFBvcyk7XG4gICAgY29uc3QgaW5wdXRXaWR0aCA9IGlucHV0UmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgaWYgKGNvb3Jkcy5sZWZ0ID4gaW5wdXRXaWR0aCkge1xuICAgICAgY29uc3QgcmlnaHRPZmZzZXQgPVxuICAgICAgICBnZXRDYXJldENvb3JkaW5hdGVzKGlucHV0UmVmLmN1cnJlbnQsIHdvcmRQb3MgKyB3b3JkLmxlbmd0aCkubGVmdCAtXG4gICAgICAgIGNvb3Jkcy5sZWZ0O1xuXG4gICAgICByZWYuY3VycmVudC5zdHlsZS5tYXJnaW5MZWZ0ID0gYCR7aW5wdXRXaWR0aCAtIHJpZ2h0T2Zmc2V0fXB4YDtcbiAgICB9IGVsc2UgaWYgKGNvb3Jkcy5sZWZ0ID4gOCkge1xuICAgICAgcmVmLmN1cnJlbnQuc3R5bGUubWFyZ2luTGVmdCA9IGAke2Nvb3Jkcy5sZWZ0IC0gOH1weGA7XG4gICAgfVxuICB9LCBbd29yZCwgZ2V0SW5wdXRSZWYsIHdvcmRQb3NdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIG9uTW91c2VMZWF2ZT17dW5zZWxlY3RTdWdnZXN0aW9uc31cbiAgICAgIHN0eWxlPXt7IHBhZGRpbmdMZWZ0OiB4T2Zmc2V0IH19XG4gICAgICBjbGFzc05hbWU9XCJjYW9zZGItZi1xdWVyeS1mb3JtLXN1Zy1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxvbCByZWY9e3JlZn0gY2xhc3NOYW1lPVwiY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWdcIj5cbiAgICAgICAge2l0ZW1zfVxuICAgICAgPC9vbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKSB7XG4gIHZhciBjdXJzb3JfcG9zLCB3b3JkX3Bvcywgd29yZCwgb3BlbiwgdW5yZXNvbHZlZF9zdWdnZXN0aW9ucztcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgXCJvbkZvY3VzXCI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgcmVmb2N1czogZmFsc2UsIGZvY3VzOiB0cnVlIH07XG4gICAgY2FzZSBcIm9uQmx1clwiOlxuICAgICAgaWYgKHN0YXRlLm9uQ2xpY2tWYWx1ZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHZhbHVlOiBzdGF0ZS5vbkNsaWNrVmFsdWUsXG4gICAgICAgICAgY3Vyc29yUG9zOiBzdGF0ZS5vbkNsaWNrQ3Vyc29yUG9zLFxuICAgICAgICAgIG9uQ2xpY2tDdXJzb3JQb3M6IHVuZGVmaW5lZCxcbiAgICAgICAgICBvbkNsaWNrVmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICByZWZvY3VzOiB0cnVlLFxuICAgICAgICAgIG9wZW46IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGZvY3VzOiBmYWxzZSB9O1xuICAgIGNhc2UgXCJvbkNoYW5nZVwiOlxuICAgICAgY3Vyc29yX3BvcyA9IGFjdGlvbi50YXJnZXQuc2VsZWN0aW9uRW5kO1xuICAgICAgd29yZF9wb3MgPSBhY3Rpb24udGFyZ2V0LnZhbHVlLnNsaWNlKDAsIGN1cnNvcl9wb3MpLmxhc3RJbmRleE9mKFwiIFwiKSArIDE7XG4gICAgICB3b3JkID0gYWN0aW9uLnRhcmdldC52YWx1ZS5zbGljZSh3b3JkX3BvcywgY3Vyc29yX3Bvcyk7XG4gICAgICBvcGVuID0gd29yZC5sZW5ndGggPiAyO1xuICAgICAgdW5yZXNvbHZlZF9zdWdnZXN0aW9ucyA9XG4gICAgICAgIG9wZW4gJiYgYWN0aW9uLmdldFN1Z2dlc3Rpb25zQ2FsbGJhY2tcbiAgICAgICAgICA/IGFjdGlvbi5nZXRTdWdnZXN0aW9uc0NhbGxiYWNrKFxuICAgICAgICAgICAgICBmSXNDcWwoYWN0aW9uLnRhcmdldC52YWx1ZSksXG4gICAgICAgICAgICAgIGFjdGlvbi50YXJnZXQudmFsdWUsXG4gICAgICAgICAgICAgIHdvcmRcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvbkNsaWNrVmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgb25DbGlja0N1cnNvclBvczogdW5kZWZpbmVkLFxuICAgICAgICBoaWdobGlnaHRJbmRleDogLTEsXG4gICAgICAgIGN1cnNvclBvczogY3Vyc29yX3BvcyxcbiAgICAgICAgY3Vyc29yUG9zTm9Db21wbGV0aW9uOiBjdXJzb3JfcG9zLFxuICAgICAgICB3b3JkUG9zOiB3b3JkX3BvcyxcbiAgICAgICAgdmFsdWU6IGFjdGlvbi50YXJnZXQudmFsdWUsXG4gICAgICAgIHZhbHVlTm9Db21wbGV0aW9uOiBhY3Rpb24udGFyZ2V0LnZhbHVlLFxuICAgICAgICByZWZvY3VzOiBmYWxzZSxcbiAgICAgICAgd29yZDogd29yZCxcbiAgICAgICAgb3Blbjogb3BlbixcbiAgICAgICAgdW5yZXNvbHZlZFN1Z2dlc3Rpb25zOiB1bnJlc29sdmVkX3N1Z2dlc3Rpb25zLFxuICAgICAgfTtcbiAgICBjYXNlIFwicmVzb2x2ZVN1Z2dlc3Rpb25zXCI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgc3VnZ2VzdGlvbnM6IGFjdGlvbi5zdWdnZXN0aW9ucyB9O1xuICAgIGNhc2UgXCJvbkFycm93RG93blwiOlxuICAgICAgaWYgKFxuICAgICAgICBzdGF0ZS5vcGVuICYmXG4gICAgICAgIHN0YXRlLnN1Z2dlc3Rpb25zICYmXG4gICAgICAgIHN0YXRlLmhpZ2hsaWdodEluZGV4IDwgc3RhdGUuc3VnZ2VzdGlvbnMubGVuZ3RoIC0gMVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IG5ld0hpZ2hsaWdodEluZGV4ID0gc3RhdGUuaGlnaGxpZ2h0SW5kZXggKyAxO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9XG4gICAgICAgICAgc3RhdGUudmFsdWVOb0NvbXBsZXRpb24uc2xpY2UoMCwgc3RhdGUud29yZFBvcykgK1xuICAgICAgICAgIHN0YXRlLnN1Z2dlc3Rpb25zW25ld0hpZ2hsaWdodEluZGV4XS5lc2NhcGVkICtcbiAgICAgICAgICBzdGF0ZS52YWx1ZU5vQ29tcGxldGlvbi5zbGljZShzdGF0ZS5jdXJzb3JQb3NOb0NvbXBsZXRpb24pO1xuICAgICAgICBjb25zdCBuZXdDdXJzb3JQb3MgPVxuICAgICAgICAgIHN0YXRlLndvcmRQb3MgKyBzdGF0ZS5zdWdnZXN0aW9uc1tuZXdIaWdobGlnaHRJbmRleF0uZXNjYXBlZC5sZW5ndGg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgY3Vyc29yUG9zOiBuZXdDdXJzb3JQb3MsXG4gICAgICAgICAgdmFsdWU6IG5ld1ZhbHVlLFxuICAgICAgICAgIGhpZ2hsaWdodEluZGV4OiBuZXdIaWdobGlnaHRJbmRleCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ1bnNlbGVjdFN1Z2dlc3Rpb25zXCI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgb25DbGlja0N1cnNvclBvczogdW5kZWZpbmVkLFxuICAgICAgICBvbkNsaWNrVmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgY2FzZSBcInNlbGVjdFN1Z2dlc3Rpb25cIjpcbiAgICAgIGlmIChhY3Rpb24uaW5kZXggPiAtMSAmJiBhY3Rpb24uaW5kZXggPCBzdGF0ZS5zdWdnZXN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPVxuICAgICAgICAgIHN0YXRlLnZhbHVlTm9Db21wbGV0aW9uLnNsaWNlKDAsIHN0YXRlLndvcmRQb3MpICtcbiAgICAgICAgICBzdGF0ZS5zdWdnZXN0aW9uc1thY3Rpb24uaW5kZXhdLmVzY2FwZWQgK1xuICAgICAgICAgIHN0YXRlLnZhbHVlTm9Db21wbGV0aW9uLnNsaWNlKHN0YXRlLmN1cnNvclBvc05vQ29tcGxldGlvbikgK1xuICAgICAgICAgIFwiIFwiO1xuICAgICAgICBjb25zdCBuZXdDdXJzb3JQb3MgPVxuICAgICAgICAgIHN0YXRlLndvcmRQb3MgKyBzdGF0ZS5zdWdnZXN0aW9uc1thY3Rpb24uaW5kZXhdLmVzY2FwZWQubGVuZ3RoICsgMTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBvbkNsaWNrVmFsdWU6IG5ld1ZhbHVlLFxuICAgICAgICAgIG9uQ2xpY2tDdXJzb3JQb3M6IG5ld0N1cnNvclBvcyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJyZXN0b3JlXCI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdmFsdWU6IGFjdGlvbi52YWx1ZSB9O1xuICAgIGNhc2UgXCJvbkFycm93VXBcIjpcbiAgICAgIGlmIChzdGF0ZS5vcGVuICYmIHN0YXRlLmhpZ2hsaWdodEluZGV4ID4gLTEpIHtcbiAgICAgICAgY29uc3QgbmV3SGlnaGxpZ2h0SW5kZXggPSBzdGF0ZS5oaWdobGlnaHRJbmRleCAtIDE7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID1cbiAgICAgICAgICBuZXdIaWdobGlnaHRJbmRleCA8IDBcbiAgICAgICAgICAgID8gc3RhdGUudmFsdWVOb0NvbXBsZXRpb25cbiAgICAgICAgICAgIDogc3RhdGUudmFsdWVOb0NvbXBsZXRpb24uc2xpY2UoMCwgc3RhdGUud29yZFBvcykgK1xuICAgICAgICAgICAgICBzdGF0ZS5zdWdnZXN0aW9uc1tuZXdIaWdobGlnaHRJbmRleF0uZXNjYXBlZCArXG4gICAgICAgICAgICAgIHN0YXRlLnZhbHVlTm9Db21wbGV0aW9uLnNsaWNlKHN0YXRlLmN1cnNvclBvc05vQ29tcGxldGlvbik7XG4gICAgICAgIGNvbnN0IG5ld0N1cnNvclBvcyA9XG4gICAgICAgICAgbmV3SGlnaGxpZ2h0SW5kZXggPCAwXG4gICAgICAgICAgICA/IHN0YXRlLmN1cnNvclBvc05vQ29tcGxldGlvblxuICAgICAgICAgICAgOiBzdGF0ZS53b3JkUG9zICtcbiAgICAgICAgICAgICAgc3RhdGUuc3VnZ2VzdGlvbnNbbmV3SGlnaGxpZ2h0SW5kZXhdLmVzY2FwZWQubGVuZ3RoO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGN1cnNvclBvczogbmV3Q3Vyc29yUG9zLFxuICAgICAgICAgIHZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgICBoaWdobGlnaHRJbmRleDogbmV3SGlnaGxpZ2h0SW5kZXgsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1UZXh0RmllbGQoeyBzZXRRdWVyeVN0cmluZywgaXNDcWwsIHJlc3RvcmVRdWVyeVN0cmluZyB9KSB7XG4gIGNvbnN0IHsgZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjaywgaXNTdWJtaXR0ZWQgfSA9IHVzZUNvbnRleHQoUXVlcnlGb3JtQ29udGV4dCk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBbc3RhdGUsIGRpc3BhdGNoXSA9IHVzZVJlZHVjZXIocmVkdWNlciwge1xuICAgIHJlZm9jdXM6IGZhbHNlLFxuICAgIHZhbHVlOiBcIlwiLFxuICAgIGZvY3VzOiBmYWxzZSxcbiAgICBvcGVuOiBmYWxzZSxcbiAgICB3b3JkOiBcIlwiLFxuICAgIGhpZ2hsaWdodEluZGV4OiAtMSxcbiAgICB1bnJlc29sdmVkU3VnZ2VzdGlvbnM6IG51bGwsXG4gICAgc3VnZ2VzdGlvbnM6IG51bGwsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UXVlcnlTdHJpbmcoc3RhdGUudmFsdWUpO1xuICB9LCBbc3RhdGUudmFsdWUsIHNldFF1ZXJ5U3RyaW5nXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVzdG9yZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6IFwicmVzdG9yZVwiLCB2YWx1ZTogcmVzdG9yZVF1ZXJ5U3RyaW5nIH0pO1xuICAgIH1cbiAgfSwgW3Jlc3RvcmVRdWVyeVN0cmluZ10pO1xuXG4gIGNvbnN0IG9uRm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiBcIm9uRm9jdXNcIiB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uQmx1ciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6IFwib25CbHVyXCIgfSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvbkFycm93VXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiBcIm9uQXJyb3dVcFwiIH0pO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25BcnJvd0Rvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiBcIm9uQXJyb3dEb3duXCIgfSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IFwib25DaGFuZ2VcIixcbiAgICAgICAgdGFyZ2V0OiBlLnRhcmdldCxcbiAgICAgICAgZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjazogZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjayxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW2dldFN1Z2dlc3Rpb25zQ2FsbGJhY2tdXG4gICk7XG5cbiAgY29uc3Qgb25LZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIGlmIChlLmtleSA9PT0gXCJBcnJvd0Rvd25cIikge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybiBvbkFycm93RG93bihlKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09IFwiQXJyb3dVcFwiKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIG9uQXJyb3dVcChlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkFycm93VXAsIG9uQXJyb3dEb3duXVxuICApO1xuXG4gIGNvbnN0IHVuc2VsZWN0U3VnZ2VzdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiBcInVuc2VsZWN0U3VnZ2VzdGlvbnNcIiB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHNlbGVjdFN1Z2dlc3Rpb24gPSB1c2VDYWxsYmFjaygoaW5kZXgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6IFwic2VsZWN0U3VnZ2VzdGlvblwiLCBpbmRleDogaW5kZXggfSk7XG4gIH0sIFtdKTtcblxuICB2YXIgY2xhc3NOYW1lID0gXCJjYW9zZGItZi1xdWVyeS1mb3JtXCI7XG4gIGlmIChzdGF0ZS5vcGVuKSB7XG4gICAgY2xhc3NOYW1lICs9IFwiIG9wZW5cIjtcbiAgfVxuICBpZiAoc3RhdGUuZm9jdXMpIHtcbiAgICBjbGFzc05hbWUgKz0gXCIgZm9jdXNcIjtcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXRlLnVucmVzb2x2ZWRTdWdnZXN0aW9ucykge1xuICAgICAgc3RhdGUudW5yZXNvbHZlZFN1Z2dlc3Rpb25zLnRoZW4oKHN1Z2dlc3Rpb25zKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJyZXNvbHZlU3VnZ2VzdGlvbnNcIiwgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCBbc3RhdGUudW5yZXNvbHZlZFN1Z2dlc3Rpb25zXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHN0YXRlLmN1cnNvclBvcywgc3RhdGUuY3Vyc29yUG9zKTtcbiAgfSwgW3N0YXRlLnZhbHVlLCBzdGF0ZS5jdXJzb3JQb3NdKTtcblxuICBjb25zdCBnZXRJbnB1dFJlZiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICByZXR1cm4gaW5wdXRSZWY7XG4gIH0sIFtpbnB1dFJlZl0pO1xuXG4gIC8vIGhhbmRsZSBmb2N1cyBhZnRlciByZXNldFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdGF0ZS5yZWZvY3VzKSB7XG4gICAgICBpbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbc3RhdGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtjb250YWluZXJSZWZ9IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4XCI+XG4gICAgICAgIHtpc0NxbCAmJiA8Q3FsSGludCAvPn1cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGVkfVxuICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtZ3Jvdy0xXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiZW50ZXIgc2VhcmNoIHRlcm1zXCJcbiAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgIHRpdGxlPVwiRW50ZXIgc2VhcmNoIHRlcm1zXCJcbiAgICAgICAgICBvbkZvY3VzPXtvbkZvY3VzfVxuICAgICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICB2YWx1ZT17c3RhdGUudmFsdWV9XG4gICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgPjwvaW5wdXQ+XG4gICAgICAgIDxRdWVyeVN1Ym1pdEJ1dHRvblxuICAgICAgICAgIGFjdGl2ZT17c3RhdGUudmFsdWUubGVuZ3RoID4gMH1cbiAgICAgICAgICBpc1N1Ym1pdHRlZD17aXNTdWJtaXR0ZWR9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIHtzdGF0ZS5vcGVuICYmIHN0YXRlLnN1Z2dlc3Rpb25zICYmIChcbiAgICAgICAgPFF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zXG4gICAgICAgICAgdW5zZWxlY3RTdWdnZXN0aW9ucz17dW5zZWxlY3RTdWdnZXN0aW9uc31cbiAgICAgICAgICBzZWxlY3RTdWdnZXN0aW9uPXtzZWxlY3RTdWdnZXN0aW9ufVxuICAgICAgICAgIHdvcmQ9e3N0YXRlLndvcmR9XG4gICAgICAgICAgd29yZFBvcz17c3RhdGUud29yZFBvc31cbiAgICAgICAgICBnZXRJbnB1dFJlZj17Z2V0SW5wdXRSZWZ9XG4gICAgICAgICAgc3VnZ2VzdGlvbnM9e3N0YXRlLnN1Z2dlc3Rpb25zfVxuICAgICAgICAgIGhpZ2hsaWdodEluZGV4PXtzdGF0ZS5oaWdobGlnaHRJbmRleH1cbiAgICAgICAgICB4T2Zmc2V0PXtpc0NxbCA/IDQ0IDogMH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIHN0b3JlKGFjdGl2ZVRhYiwgYWN0aXZlRmlsdGVycywgcXVlcnlTdHJpbmcpIHtcbiAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwicXVlcnkuYWN0aXZlVGFiXCIpO1xuICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJxdWVyeS5hY3RpdmVGaWx0ZXJzXCIpO1xuICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJxdWVyeS5xdWVyeVN0cmluZ1wiKTtcbiAgaWYgKGFjdGl2ZVRhYikge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2VbXCJxdWVyeS5hY3RpdmVUYWJcIl0gPSBKU09OLnN0cmluZ2lmeShhY3RpdmVUYWIpO1xuICB9XG4gIGlmIChhY3RpdmVGaWx0ZXJzICYmIGFjdGl2ZUZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2VbXCJxdWVyeS5hY3RpdmVGaWx0ZXJzXCJdID0gSlNPTi5zdHJpbmdpZnkoYWN0aXZlRmlsdGVycyk7XG4gIH1cbiAgaWYgKHF1ZXJ5U3RyaW5nICYmIHF1ZXJ5U3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlW1wicXVlcnkucXVlcnlTdHJpbmdcIl0gPSBxdWVyeVN0cmluZztcbiAgfVxufVxuXG5mdW5jdGlvbiByZXN0b3JlKHRhYnMpIHtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIHJlc3RvcmVBY3RpdmVUYWI6XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlW1wicXVlcnkuYWN0aXZlVGFiXCJdICYmXG4gICAgICBKU09OLnBhcnNlKHdpbmRvdy5sb2NhbFN0b3JhZ2VbXCJxdWVyeS5hY3RpdmVUYWJcIl0pLFxuICAgIHJlc3RvcmVBY3RpdmVGaWx0ZXJzOlxuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LmFjdGl2ZUZpbHRlcnNcIl0gJiZcbiAgICAgIEpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LmFjdGl2ZUZpbHRlcnNcIl0pLFxuICAgIHJlc3RvcmVRdWVyeVN0cmluZzogd2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LnF1ZXJ5U3RyaW5nXCJdIHx8IFwiXCIsXG4gIH07XG4gIGlmIChcbiAgICByZXN1bHQucmVzdG9yZUFjdGl2ZVRhYiAmJlxuICAgIHRhYnMuZmlsdGVyKCh0YWIpID0+IHRhYi5pZCA9PT0gcmVzdWx0LnJlc3RvcmVBY3RpdmVUYWIuaWQpLmxlbmd0aCA9PT0gMFxuICApIHtcbiAgICAvLyBjb25maWcgY2hhbmdlZFxuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInF1ZXJ5LmFjdGl2ZVRhYlwiKTtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJxdWVyeS5hY3RpdmVGaWx0ZXJzXCIpO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInF1ZXJ5LnF1ZXJ5U3RyaW5nXCIpO1xuICAgIHJldHVybiB7fTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUXVlcnlGb3JtKHtcbiAgc3VibWl0Q2FsbGJhY2ssXG4gIHRhYnMsXG4gIGRlZmF1bHRUYWIsXG4gIGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2ssXG4gIHJlc3RvcmVDYWxsYmFjayxcbiAgc3RvcmVDYWxsYmFjayxcbiAgcmVzdG9yZSxcbn0pIHtcbiAgY29uc3QgeyByZXN0b3JlUXVlcnlTdHJpbmcsIHJlc3RvcmVBY3RpdmVGaWx0ZXJzLCByZXN0b3JlQWN0aXZlVGFiIH0gPSByZXN0b3JlXG4gICAgPyByZXN0b3JlQ2FsbGJhY2sodGFicylcbiAgICA6IHt9O1xuICBjb25zdCBbaXNTdWJtaXR0ZWQsIHNldElzU3VibWl0dGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3F1ZXJ5U3RyaW5nLCBzZXRRdWVyeVN0cmluZ10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW2FjdGl2ZVRhYiwgc2V0QWN0aXZlVGFiXSA9IHVzZVN0YXRlKFxuICAgIHJlc3RvcmVBY3RpdmVUYWIgfHwgdGFic1tkZWZhdWx0VGFiXVxuICApO1xuICBjb25zdCBbYWN0aXZlRmlsdGVycywgc2V0QWN0aXZlRmlsdGVyc10gPSB1c2VTdGF0ZShcbiAgICByZXN0b3JlQWN0aXZlRmlsdGVycyB8fCBbXVxuICApO1xuXG4gIGNvbnN0IG9uU3VibWl0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHNldElzU3VibWl0dGVkKHRydWUpO1xuICAgICAgc3RvcmVDYWxsYmFjayhhY3RpdmVUYWIsIGFjdGl2ZUZpbHRlcnMsIHF1ZXJ5U3RyaW5nKTtcbiAgICAgIGNvbnN0IGFjdGl2ZVRhYkRlZiA9IHRhYnMuZmlsdGVyKCh0KSA9PiB0LmlkID09PSBhY3RpdmVUYWIuaWQpWzBdIHx8IHt9O1xuICAgICAgY29uc3QgaXNDcWwgPSBmSXNDcWwocXVlcnlTdHJpbmcpO1xuICAgICAgY29uc3QgaXNTZWxlY3QgPSBpc0NxbCAmJiBmSXNTZWxlY3QocXVlcnlTdHJpbmcpO1xuICAgICAgY29uc3QgbWFrZVF1ZXJ5ID1cbiAgICAgICAgaXNDcWwgfHwgIWFjdGl2ZVRhYkRlZi5tYWtlUXVlcnkgPyAoeCkgPT4geCA6IGFjdGl2ZVRhYkRlZi5tYWtlUXVlcnk7XG4gICAgICBjb25zdCBwYWdlU2l6ZSA9IGlzU2VsZWN0ID8gLTEgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHJldHVybiBzdWJtaXRDYWxsYmFjayhtYWtlUXVlcnkocXVlcnlTdHJpbmcsIGFjdGl2ZUZpbHRlcnMpLCBwYWdlU2l6ZSk7XG4gICAgfSxcbiAgICBbdGFicywgYWN0aXZlVGFiLCBhY3RpdmVGaWx0ZXJzLCBxdWVyeVN0cmluZywgc3VibWl0Q2FsbGJhY2ssIHN0b3JlQ2FsbGJhY2tdXG4gICk7XG5cbiAgY29uc3QgaXNDcWwgPSBmSXNDcWwocXVlcnlTdHJpbmcpO1xuXG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNTdWJtaXR0ZWQ6IGlzU3VibWl0dGVkLFxuICAgICAgcXVlcnlTdHJpbmc6IHF1ZXJ5U3RyaW5nLFxuICAgICAgZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjazogZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjayxcbiAgICB9O1xuICB9LCBbcXVlcnlTdHJpbmcsIGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2ssIGlzU3VibWl0dGVkXSk7XG5cbiAgY29uc3Qgc2V0QWN0aXZlVGFiUmVzZXRGaWx0ZXJzID0gdXNlQ2FsbGJhY2soXG4gICAgKHRhYikgPT4ge1xuICAgICAgc2V0QWN0aXZlVGFiKHRhYik7XG4gICAgICBzZXRBY3RpdmVGaWx0ZXJzKFtdKTtcbiAgICB9LFxuICAgIFtzZXRBY3RpdmVGaWx0ZXJzLCBzZXRBY3RpdmVUYWJdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17b25TdWJtaXR9PlxuICAgICAgPFF1ZXJ5Rm9ybUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHR9PlxuICAgICAgICA8UXVlcnlGb3JtVGV4dEZpZWxkXG4gICAgICAgICAgcmVzdG9yZVF1ZXJ5U3RyaW5nPXtyZXN0b3JlUXVlcnlTdHJpbmd9XG4gICAgICAgICAgaXNDcWw9e2lzQ3FsfVxuICAgICAgICAgIHNldFF1ZXJ5U3RyaW5nPXtzZXRRdWVyeVN0cmluZ31cbiAgICAgICAgLz5cbiAgICAgICAgeyFpc0NxbCAmJiAoXG4gICAgICAgICAgPFF1ZXJ5Rm9ybVRhYnNcbiAgICAgICAgICAgIHRhYnM9e3RhYnN9XG4gICAgICAgICAgICBhY3RpdmVUYWI9e2FjdGl2ZVRhYn1cbiAgICAgICAgICAgIHNldEFjdGl2ZVRhYj17c2V0QWN0aXZlVGFiUmVzZXRGaWx0ZXJzfVxuICAgICAgICAgICAgYWN0aXZlRmlsdGVycz17YWN0aXZlRmlsdGVyc31cbiAgICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcnM9e3NldEFjdGl2ZUZpbHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvUXVlcnlGb3JtQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L2Zvcm0+XG4gICk7XG59XG5cblF1ZXJ5Rm9ybS5BdXRvQ29tcGxldGlvbiA9IEF1dG9Db21wbGV0aW9uO1xuXG4vLyBEZWZhdWx0cyBhcmUgc3VpdGFibGUgZm9yIHRlc3RpbmcgYnV0IG5vdCBmb3IgcHJvZHVjdGlvbi5cblF1ZXJ5Rm9ybS5kZWZhdWx0UHJvcHMgPSB7XG4gIHN1Ym1pdENhbGxiYWNrOiAocXVlcnlTdHJpbmcsIHBhZ2VTaXplKSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJzdWJtaXQgcXVlcnk6IFwiLCBxdWVyeVN0cmluZywgcGFnZVNpemUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgYWxlcnQocXVlcnlTdHJpbmcpO1xuICAgICAgLy8gcmVsb2FkIHBhZ2VcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWFzc2lnblxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICB9LCAxMDAwKTtcbiAgfSxcbiAgdGFiczogZ2V0X3Rlc3RfdGFicygpLFxuICBkZWZhdWx0VGFiOiAwLFxuICBnZXRTdWdnZXN0aW9uc0NhbGxiYWNrOiBnZXRfdGVzdF9zdWdnZXN0aW9ucyxcbiAgcmVzdG9yZUNhbGxiYWNrOiByZXN0b3JlLFxuICBzdG9yZUNhbGxiYWNrOiBzdG9yZSxcbiAgcmVzdG9yZTogZmFsc2UsXG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDb250YWluZXIgfSBmcm9tIFwicmVhY3QtYm9vdHN0cmFwXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBRdWVyeUZvcm0gfSBmcm9tIFwiLi9RdWVyeUZvcm1cIjtcblxubGV0IGxhc3RRdWVyeUZvcm1IZWlnaHQgPSAwO1xubGV0IHNjcm9sbERvd25UaW1lb3V0ID0gdW5kZWZpbmVkO1xuXG5jb25zdCB0b2dnbGVRdWVyeVBhbmVsID0gKGNvbnRhaW5lcikgPT4ge1xuICBpZiAodHlwZW9mIHNjcm9sbERvd25UaW1lb3V0ID09PSBcIm51bWJlclwiKSB7XG4gICAgY2xlYXJUaW1lb3V0KHNjcm9sbERvd25UaW1lb3V0KTtcbiAgfVxuICBjb25zdCB7IHRvcCwgYm90dG9tIH0gPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGlmIChsYXN0UXVlcnlGb3JtSGVpZ2h0ICE9PSBib3R0b20gLSB0b3ApIHtcbiAgICAvLyBPbmx5IHRoZSBoZWlnaHQgb2YgdGhlIGZvcm0gaGFzIGNoYW5nZWQuIFRoaXMgaXMgbm90IGFjdHVhbGx5IGEgc2Nyb2xsIGV2ZW50LlxuICAgIGxhc3RRdWVyeUZvcm1IZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc2Nyb2xsRG93blRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBzY3JvbGxEb3duVGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICBpZiAod2luZG93LnBhZ2VZT2Zmc2V0ID4gbGFzdFF1ZXJ5Rm9ybUhlaWdodCkge1xuICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJjb25kZW5zZWRcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwiY29uZGVuc2VkXCIpO1xuICAgIH1cbiAgfSwgMjAwKTtcbn07XG5cbmNvbnN0IFF1ZXJ5UGFuZWwgPSAocHJvcHMpID0+IHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBwcm9wcy5zY3JvbGxIYW5kbGVyKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgcHJvcHMuc2Nyb2xsSGFuZGxlcik7XG4gICAgfTtcbiAgfSwgW3Byb3BzLnNjcm9sbEhhbmRsZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXI+XG4gICAgICA8UXVlcnlGb3JtIHsuLi5wcm9wc30gLz5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cblF1ZXJ5UGFuZWwucHJvcFR5cGVzID0ge1xuICBzY3JvbGxIYW5kbGVyOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmV4cG9ydCB7IFF1ZXJ5UGFuZWwsIHRvZ2dsZVF1ZXJ5UGFuZWwgfTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVJlZiwgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEJyYW5kaW5nIH0gZnJvbSBcIi4uL0JyYW5kaW5nXCI7XG5pbXBvcnQgeyBOYXZiYXIsIENvbnRhaW5lciwgTmF2LCBOYXZEcm9wZG93biB9IGZyb20gXCJyZWFjdC1ib290c3RyYXBcIjtcbmltcG9ydCB7IFVzZXJDb21wb25lbnQgfSBmcm9tIFwiLi9Vc2VyQ29tcG9uZW50XCI7XG5pbXBvcnQgeyBRdWVyeVBhbmVsLCB0b2dnbGVRdWVyeVBhbmVsIH0gZnJvbSBcIi4vUXVlcnlQYW5lbFwiO1xuXG5jbGFzcyBOYXZpZ2F0aW9uTWFuYWdlckltcGwge1xuICBjb25zdHJ1Y3Rvcih7IGl0ZW1zLCBicmFuZCwgdXNlcl9jb21wb25lbnQgfSkge1xuICAgIHRoaXMuaXRlbXMgPSBpdGVtcyB8fCBbXTtcbiAgICB0aGlzLmJyYW5kID0gYnJhbmQgfHwgQnJhbmRpbmcubmFtZTtcbiAgICB0aGlzLnVwZGF0ZV9saXN0ZW5lcnMgPSBbXTtcbiAgICB0aGlzLnVzZXJfY29tcG9uZW50ID0gdXNlcl9jb21wb25lbnQ7XG4gIH1cbiAgcmVnaXN0ZXJVcGRhdGVMaXN0ZW5lcihsaXN0ZW5lcikge1xuICAgIHRoaXMudXBkYXRlX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgfVxuICBhZGRMaW5rKGxpbmspIHtcbiAgICB0aGlzLml0ZW1zLnB1c2gobGluayk7XG4gICAgdGhpcy5ub3RpZnlVcGRhdGVMaXN0ZW5lcnMoKTtcbiAgfVxuICBub3RpZnlVcGRhdGVMaXN0ZW5lcnMoKSB7XG4gICAgdGhpcy51cGRhdGVfbGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcigpKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgTmF2aWdhdGlvbk1hbmFnZXIgPSBuZXcgTmF2aWdhdGlvbk1hbmFnZXJJbXBsKHtcbiAgaXRlbXM6IFtcbiAgICA8TmF2Lkxpbmsga2V5PVwiMFwiIGhyZWY9XCIjYWN0aW9uMVwiPlxuICAgICAgSG9tZVxuICAgIDwvTmF2Lkxpbms+LFxuICAgIDxOYXYuTGluayBrZXk9XCIxXCIgaHJlZj1cIiNhY3Rpb24yXCI+XG4gICAgICBMaW5rXG4gICAgPC9OYXYuTGluaz4sXG4gICAgPE5hdkRyb3Bkb3duIGtleT1cIjJcIiB0aXRsZT1cIkxpbmtcIj5cbiAgICAgIDxOYXZEcm9wZG93bi5JdGVtIGhyZWY9XCIjYWN0aW9uM1wiPkFjdGlvbjwvTmF2RHJvcGRvd24uSXRlbT5cbiAgICAgIDxOYXZEcm9wZG93bi5JdGVtIGhyZWY9XCIjYWN0aW9uNFwiPkFub3RoZXIgYWN0aW9uPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgICAgPE5hdkRyb3Bkb3duLkRpdmlkZXIgLz5cbiAgICAgIDxOYXZEcm9wZG93bi5JdGVtIGhyZWY9XCIjYWN0aW9uNVwiPlNvbWV0aGluZyBlbHNlIGhlcmU8L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgPC9OYXZEcm9wZG93bj4sXG4gICAgPE5hdi5MaW5rIGtleT1cIjNcIiBocmVmPVwiI1wiIGRpc2FibGVkPlxuICAgICAgTGlua1xuICAgIDwvTmF2Lkxpbms+LFxuICBdLFxuICB1c2VyX2NvbXBvbmVudDogPFVzZXJDb21wb25lbnQgLz4sXG59KTtcblxuZXhwb3J0IGNvbnN0IFRvcE5hdmlnYXRpb25CYXIgPSAoKSA9PiB7XG4gIGNvbnN0IHBhbmVsUmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IHNjcm9sbEhhbmRsZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdG9nZ2xlUXVlcnlQYW5lbChwYW5lbFJlZi5jdXJyZW50KTtcbiAgfSwgW3BhbmVsUmVmXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8TmF2YmFyIGJnPVwibGlnaHRcIiBleHBhbmQ9XCJsZ1wiPlxuICAgICAgPENvbnRhaW5lciBmbHVpZD5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZC1sZy1ub25lIGQtaW5saW5lXCI+e05hdmlnYXRpb25NYW5hZ2VyLmJyYW5kfTwvc3Bhbj5cbiAgICAgICAgPE5hdmJhci5Ub2dnbGUgYXJpYS1jb250cm9scz1cIm5hdmJhclNjcm9sbFwiIC8+XG4gICAgICAgIDxOYXZiYXIuQ29sbGFwc2UgaWQ9XCJuYXZiYXJTY3JvbGxcIj5cbiAgICAgICAgICA8TmF2YmFyLkJyYW5kIGNsYXNzTmFtZT1cImQtbm9uZSBkLWxnLWlubGluZVwiPlxuICAgICAgICAgICAge05hdmlnYXRpb25NYW5hZ2VyLmJyYW5kfVxuICAgICAgICAgIDwvTmF2YmFyLkJyYW5kPlxuICAgICAgICAgIDxOYXYgY2xhc3NOYW1lPVwibWUtYXV0byBteS0yIG15LWxnLTBcIj5cbiAgICAgICAgICAgIHtOYXZpZ2F0aW9uTWFuYWdlci5pdGVtcy5tYXAoKGl0ZW0sIGtleSkgPT4gKFxuICAgICAgICAgICAgICA8c3BhbiBrZXk9e2tleX0+e2l0ZW19PC9zcGFuPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9OYXY+XG4gICAgICAgICAgPE5hdiByZWY9e3BhbmVsUmVmfSBjbGFzc05hbWU9XCJjYW9zZGItZi1xdWVyeS1wYW5lbCBtZS1sZy0yIGZ1bGxcIj5cbiAgICAgICAgICAgIDxRdWVyeVBhbmVsIHJlc3RvcmU9e3RydWV9IHNjcm9sbEhhbmRsZXI9e3Njcm9sbEhhbmRsZXJ9IC8+XG4gICAgICAgICAgPC9OYXY+XG4gICAgICAgICAgPE5hdj57TmF2aWdhdGlvbk1hbmFnZXIudXNlcl9jb21wb25lbnR9PC9OYXY+XG4gICAgICAgIDwvTmF2YmFyLkNvbGxhcHNlPlxuICAgICAgPC9Db250YWluZXI+XG4gICAgPC9OYXZiYXI+XG4gICk7XG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVG9wTmF2aWdhdGlvbkJhciB9IGZyb20gXCIuL1RvcE5hdmlnYXRpb25CYXJcIjtcblxuZXhwb3J0IGNvbnN0IEhlYWRlciA9ICgpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8aGVhZGVyIGNsYXNzTmFtZT1cInNoYWRvdy1zbSBiZy1saWdodFwiPlxuICAgICAgPFRvcE5hdmlnYXRpb25CYXI+PC9Ub3BOYXZpZ2F0aW9uQmFyPlxuICAgIDwvaGVhZGVyPlxuICApO1xufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuY2xhc3MgRm9vdGVyTWFuYWdlckltcGwge1xuICBjb25zdHJ1Y3Rvcih7IGl0ZW1zLCBjb3B5UmlnaHQgfSkge1xuICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcbiAgICB0aGlzLmNvcHlSaWdodCA9IGNvcHlSaWdodDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgRm9vdGVyTWFuYWdlciA9IG5ldyBGb290ZXJNYW5hZ2VySW1wbCh7XG4gIGl0ZW1zOiBbXG4gICAgPGFcbiAgICAgIGtleT1cIjBcIlxuICAgICAgY2xhc3NOYW1lPVwibmF2LWxpbmsgcHgtMlwiXG4gICAgICBocmVmPVwiaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLTMuMC5lbi5odG1sXCJcbiAgICA+XG4gICAgICBMaWNlbnNlIChBR1BMLXYzKVxuICAgIDwvYT4sXG4gICAgPGEga2V5PVwiMVwiIGNsYXNzTmFtZT1cIm5hdi1saW5rIHB4LTJcIiBocmVmPVwiaHR0cHM6Ly9naXRsYWIuY29tL2Nhb3NkYlwiPlxuICAgICAgU291cmNlc1xuICAgIDwvYT4sXG4gICAgPGEga2V5PVwiM1wiIGNsYXNzTmFtZT1cIm5hdi1saW5rIHB4LTJcIiBocmVmPVwiaHR0cHM6Ly9kb2NzLmluZGlzY2FsZS5jb20vXCI+XG4gICAgICBEb2N1bWVudGF0aW9uXG4gICAgPC9hPixcbiAgXSxcbiAgY29weVJpZ2h0OiBcIsKpIDIwMjEgSW5kaVNjYWxlIEdtYkhcIixcbn0pO1xuXG5leHBvcnQgY29uc3QgRm9vdGVyID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxmb290ZXI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvb3Rlci1ib3JkZXJcIiAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb290ZXItYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lciBweS0zIG15LTRcIj5cbiAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwibmF2IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHBiLTMgbWItM1wiPlxuICAgICAgICAgICAge0Zvb3Rlck1hbmFnZXIuaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzcGFjZXIgPVxuICAgICAgICAgICAgICAgIGluZGV4ID09PSAwID8gbnVsbCA6IDxsaSBjbGFzc05hbWU9XCJuYXYtaXRlbSBweC0xXCI+4oCiPC9saT47XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3NwYWNlcn1cbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzc05hbWU9XCJuYXYtaXRlbVwiPntpdGVtfTwvbGk+XG4gICAgICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj57Rm9vdGVyTWFuYWdlci5jb3B5UmlnaHR9PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9vdGVyPlxuICApO1xufTtcbiIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgYSBwYXJ0IG9mIHRoZSBDYW9zREIgUHJvamVjdC5cbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjMgVGltbSBGaXRzY2hlbiA8dC5maXRzY2hlbkBpbmRpc2NhbGUuY29tPlxuICogQ29weXJpZ2h0IChDKSAyMDIzIEluZGlTY2FsZSBHbWJIIDxpbmZvQGluZGlzY2FsZS5jb20+XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBMb2FkaW5nSW5mbyB9IGZyb20gXCIuL0xvYWRpbmdJbmZvXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8qKlxuICogV3JhcHBlciBmb3IgaGFuZGxpbmcgUHJvbWlzZXMuIFRoZSByZXN1bHRzIG9mIHRoZSBwcm9taXNlIGFyZSBiZWluZ1xuICogcmVuZGVyZWQuIEluIHRoZSBtZWFuIHRpbWUsIGEgTG9hZGluZ0luZm8gaXMgYmVpbmcgc2hvd24uXG4gKlxuICogRXhhbXBsZTpcbiAqICAgPEF3YWl0IHByb21pc2U9e2ZldGNoRGF0YSgpfVxuICogICAgICAgICAgdGhlbj17ZGF0YSA9PiBjcmVhdGVUYWJsZShkYXRhKX1cbiAqICAgICAgICAgIGNhdGNoPXtlcnJvciA9PiBcIjxkaXY+RXJyb3I6IFwiICsgZXJyb3IubWVzc2FnZTwvZGl2Pn0vPlxuICpcbiAqIFdoZW4gZmV0Y2hEYXRhIHJlc29sdmVzLCB0aGUgZGF0YSBpcyBiZWluZyBwcmVzZW50ZWQgYXMgYSB0YWJsZS4gQW4gZXJyb3JcbiAqIGRpdiBpcyBiZWluZyBzaG93biBpZiBmZXRjaERhdGEgZmFpbHMuXG4gKlxuICogTkIuIEVxdWl2YWxlbnRseSwgeW91IGNvdWxkIGFsc28gZG86XG4gKiAgIDxBd2FpdCBwcm9taXNlPXtmZXRjaERhdGEoKVxuICogICAgICAgICAgLnRoZW4oZGF0YSA9PiBjcmVhdGVUYWJsZShkYXRhKVxuICogICAgICAgICAgLmNhdGNoPShlcnJvciA9PiBcIjxkaXY+RXJyb3I6IFwiICsgZXJyb3IubWVzc2FnZTwvZGl2PilcbiAqICAgfS8+XG4gKlxuICogQHBhcmFtIHtQcm9taXNlfSBwcm9taXNlIC0gTXVzdCByZXNvbHZlIHRvIGEgUmVhY3QuQ29tcG9uZW50IHVubGVzcyB0aGVcbiAqIHBhcmFtZXRlciBgdGhlbmAgZG9lcyB0aGUgY29udmVzaW9uLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gW3RoZW5dIC0gZnVuY3Rpb24gd2l0aCBvbmUgcGFyYW1ldGVyLiBJdCBpcyBiZWluZyBjYWxsZWRcbiAqIHdoZW4gdGhlIHByb21pc2UgcmVzb2x2ZXMuIEl0IHNob3VsZCBwcmVwcm9jZXNzIHRoZSBwcm9taXNlcycgcmVzdWx0cyBhbmRcbiAqIG11c3QgYSBjb21wb25lbnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2F0Y2hdIC0gZnVuY3Rpb24gd2l0aCBvbmUgcGFyYW1ldGVyLiBJdCBpcyBiZWluZyBjYWxsZWRcbiAqIHdoZW4gdGhlIHByb21pc2UgcmVqZWN0cy4gSXQgc2hvdWxkIHByZXByb2Nlc3MgdGhlIGVycm9yIGFuZCBtdXN0IHJldHVybiBhXG4gKiBjb21wb25lbnQuXG4gKiBAcGFyYW0ge1JlYWN0LkNvbXBvbmVudH0gW2xvYWRpbmddIC0gQSBjb21wb25lbnQgd2hpY2ggd2lsbCBzaG93IHVudGlsIHRoZVxuICogcHJvbWlzZSByZXNvbHZlcy4gSWYgdW5kZWZpbmVkLCBub3RoaW5nIHdpbGwgYmUgc2hvd24uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIEF3YWl0KHByb3BzKSB7XG4gIGNvbnN0IGxvYWRpbmcgPSBwcm9wcy5sb2FkaW5nIHx8IDxMb2FkaW5nSW5mbyAvPjtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShsb2FkaW5nKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHZhciB0aGVQcm9taXNlID0gcHJvcHMucHJvbWlzZTtcbiAgICBpZiAocHJvcHMudGhlbikge1xuICAgICAgdGhlUHJvbWlzZSA9IHRoZVByb21pc2UudGhlbihwcm9wcy50aGVuKTtcbiAgICB9XG4gICAgY29uc3QgZG9DYXRjaCA9XG4gICAgICBwcm9wcy5jYXRjaCB8fFxuICAgICAgKChlcnJvcikgPT4ge1xuICAgICAgICBlcnJvciA9IGVycm9yICYmIGVycm9yLm1lc3NhZ2UgPyBlcnJvci5tZXNzYWdlIDogZXJyb3I7XG4gICAgICAgIHJldHVybiA8c3Bhbj5BbiB1bmhhbmRsZWQgZXJyb3Igb2NjdXJlZDoge2Vycm9yfTwvc3Bhbj47XG4gICAgICB9KTtcblxuICAgIHRoZVByb21pc2UuY2F0Y2goZG9DYXRjaCkudGhlbihzZXRTdGF0ZSk7XG4gIH0sIFtwcm9wcy5wcm9taXNlLCBwcm9wcy50aGVuLCBwcm9wcy5jYXRjaF0pO1xuXG4gIHJldHVybiBzdGF0ZTtcbn1cbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgQ2hlY2tib3ggPSAoe1xuICBuYW1lLFxuICB2YWx1ZSxcbiAgaWNvbnMsXG4gIHN0eWxlLFxuICBjb2xvcixcbiAgcmVhZE9ubHksXG4gIG9uQ2hhbmdlLFxuICBvbkJsdXIsXG4gIHNldFZhbHVlLFxuICB0aXRsZSxcbn0pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSh2YWx1ZSB8fCBcImZhbHNlXCIpO1xuICBzdHlsZSA9IHN0eWxlIHx8IFwiY2hlY2tcIjtcbiAgY29sb3IgPVxuICAgIGNvbG9yIHx8XG4gICAge1xuICAgICAgY2hlY2s6IHtcbiAgICAgICAgdHJ1ZTogXCIgdGV4dC1zdWNjZXNzXCIsXG4gICAgICAgIGZhbHNlOiBcIiB0ZXh0LWJvZHlcIixcbiAgICAgICAgcGFydGlhbDogXCIgY29sb3ItbGlnaHQtZ3JlZW5cIixcbiAgICAgIH0sXG4gICAgICBcImNoZWNrLWZpbGxcIjoge1xuICAgICAgICB0cnVlOiBcIiB0ZXh0LXN1Y2Nlc3NcIixcbiAgICAgICAgZmFsc2U6IFwiIHRleHQtYm9keVwiLFxuICAgICAgICBwYXJ0aWFsOiBcIiBjb2xvci1saWdodC1ncmVlblwiLFxuICAgICAgfSxcbiAgICAgIHg6IHtcbiAgICAgICAgdHJ1ZTogXCIgdGV4dC1kYW5nZXJcIixcbiAgICAgICAgZmFsc2U6IFwiIHRleHQtYm9keVwiLFxuICAgICAgICBwYXJ0aWFsOiBcIiB0ZXh0LXdhcm5pbmdcIixcbiAgICAgIH0sXG4gICAgICBcIngtZmlsbFwiOiB7XG4gICAgICAgIHRydWU6IFwiIHRleHQtZGFuZ2VyXCIsXG4gICAgICAgIGZhbHNlOiBcIiB0ZXh0LWJvZHlcIixcbiAgICAgICAgcGFydGlhbDogXCIgdGV4dC13YXJuaW5nXCIsXG4gICAgICB9LFxuICAgIH1bc3R5bGVdO1xuXG4gIGNvbnN0IGljb25DbGFzc05hbWVNYXAgPSB7XG4gICAgeDoge1xuICAgICAgdHJ1ZTogXCJiaSBiaS14LXNxdWFyZVwiICsgY29sb3JbXCJ0cnVlXCJdLFxuICAgICAgZmFsc2U6IFwiYmkgYmktc3F1YXJlXCIgKyBjb2xvcltcImZhbHNlXCJdLFxuICAgICAgcGFydGlhbDogXCJiaSBiaS1zbGFzaC1zcXVhcmVcIiArIGNvbG9yW1wicGFydGlhbFwiXSxcbiAgICB9LFxuICAgIFwieC1maWxsXCI6IHtcbiAgICAgIHRydWU6IFwiYmkgYmkteC1zcXVhcmUtZmlsbFwiICsgY29sb3JbXCJ0cnVlXCJdLFxuICAgICAgZmFsc2U6IFwiYmkgYmktc3F1YXJlXCIgKyBjb2xvcltcImZhbHNlXCJdLFxuICAgICAgcGFydGlhbDogXCJiaSBiaS1zbGFzaC1zcXVhcmUtZmlsbFwiICsgY29sb3JbXCJwYXJ0aWFsXCJdLFxuICAgIH0sXG4gICAgY2hlY2s6IHtcbiAgICAgIHRydWU6IFwiYmkgYmktY2hlY2stc3F1YXJlXCIgKyBjb2xvcltcInRydWVcIl0sXG4gICAgICBmYWxzZTogXCJiaSBiaS1zcXVhcmVcIiArIGNvbG9yW1wiZmFsc2VcIl0sXG4gICAgICBwYXJ0aWFsOiBcImJpIGJpLXNsYXNoLXNxdWFyZVwiICsgY29sb3JbXCJwYXJ0aWFsXCJdLFxuICAgIH0sXG4gICAgXCJjaGVjay1maWxsXCI6IHtcbiAgICAgIHRydWU6IFwiYmkgYmktY2hlY2stc3F1YXJlLWZpbGxcIiArIGNvbG9yW1widHJ1ZVwiXSxcbiAgICAgIGZhbHNlOiBcImJpIGJpLXNxdWFyZVwiICsgY29sb3JbXCJmYWxzZVwiXSxcbiAgICAgIHBhcnRpYWw6IFwiYmkgYmktc2xhc2gtc3F1YXJlLWZpbGxcIiArIGNvbG9yW1wicGFydGlhbFwiXSxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0IHRyYW5zaXRpb25zID0ge1xuICAgIHBhcnRpYWw6IFwiZmFsc2VcIixcbiAgICB0cnVlOiBcImZhbHNlXCIsXG4gICAgZmFsc2U6IFwidHJ1ZVwiLFxuICB9O1xuXG4gIGNvbnN0IHByb3BzID0ge307XG5cbiAgdmFyIGlucHV0O1xuICBpZiAoIXJlYWRPbmx5KSB7XG4gICAgaW5wdXQgPSAoXG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3NOYW1lPVwiY2Fvc2RiLWNoZWNrLWJveC1pbnB1dFwiXG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgdGFiSW5kZXg9XCItMVwiXG4gICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICB2YWx1ZT17c3RhdGV9XG4gICAgICAvPlxuICAgICk7XG5cbiAgICBwcm9wcy5vbkNsaWNrID0gKCkgPT4ge1xuICAgICAgc2V0VmFsdWUobmFtZSwgdHJhbnNpdGlvbnNbc3RhdGVdKTtcbiAgICAgIHNldFN0YXRlKHRyYW5zaXRpb25zW3N0YXRlXSk7XG4gICAgfTtcblxuICAgIHByb3BzLm9uS2V5RG93biA9IChlKSA9PiB7XG4gICAgICBpZiAoZS5jb2RlID09PSBcIlNwYWNlXCIpIHtcbiAgICAgICAgc2V0VmFsdWUobmFtZSwgdHJhbnNpdGlvbnNbc3RhdGVdKTtcbiAgICAgICAgc2V0U3RhdGUodHJhbnNpdGlvbnNbc3RhdGVdKTtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBwcm9wcy50YWJJbmRleCA9IFwiMFwiO1xuICAgIHByb3BzLm9uQmx1ciA9IG9uQmx1cjtcbiAgfVxuXG4gIGljb25zID0gaWNvbnMgfHwge307XG5cbiAgY29uc3QgaWNvbiA9IGljb25zW3N0YXRlXSB8fCAoXG4gICAgPGlcbiAgICAgIGNsYXNzTmFtZT17XCJtcy0xIGNhb3NkYi1jaGVja2JveC1pY29uIFwiICsgaWNvbkNsYXNzTmFtZU1hcFtzdHlsZV1bc3RhdGVdfVxuICAgIC8+XG4gICk7XG5cbiAgdmFyIGNsYXNzTmFtZSA9IFwiY2Fvc2RiLWNoZWNrYm94IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIjtcbiAgaWYgKHJlYWRPbmx5KSB7XG4gICAgY2xhc3NOYW1lICs9IFwiIHJlYWQtb25seVwiO1xuICB9XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgIGFyaWEtY2hlY2tlZD17c3RhdGV9XG4gICAgPlxuICAgICAge2lucHV0fVxuICAgICAgPHNwYW4gey4uLnByb3BzfT57aWNvbn08L3NwYW4+XG4gICAgPC9zcGFuPlxuICApO1xufTtcblxuQ2hlY2tib3gucHJvcFR5cGVzID0ge1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMub25lT2YoW1widHJ1ZVwiLCBcImZhbHNlXCJdKSxcbiAgaWNvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gIHN0eWxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjb2xvcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gIHNldFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5jb25zdCBDYXJkID0gZnVuY3Rpb24gKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiB9KSB7XG4gIGNsYXNzTmFtZSA9IGNsYXNzTmFtZSB8fCBcIlwiO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2BjYXJkIG10LTMgcm91bmRlZCBzaGFkb3cgJHtjbGFzc05hbWV9YH0+e2NoaWxkcmVufTwvZGl2PlxuICApO1xufTtcblxuQ2FyZC5wcm9wVHlwZXMgPSB7XG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSxcbiAgICBQcm9wVHlwZXMubm9kZSxcbiAgXSksXG59O1xuXG5DYXJkLkJvZHkgPSBmdW5jdGlvbiBDYXJkQm9keSh7IGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiY2FyZC1ib2R5XCI+e2NoaWxkcmVufTwvZGl2Pjtcbn07XG5cbkNhcmQuQm9keS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksXG4gICAgUHJvcFR5cGVzLm5vZGUsXG4gIF0pLFxufTtcblxuQ2FyZC5Gb290ZXIgPSBmdW5jdGlvbiBDYXJkRm9vdGVyKHsgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZC1mb290ZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+e2NoaWxkcmVufTwvZGl2PlxuICApO1xufTtcblxuQ2FyZC5Gb290ZXIucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLFxuICAgIFByb3BUeXBlcy5ub2RlLFxuICBdKSxcbn07XG5cbkNhcmQuVGl0bGUgPSBmdW5jdGlvbiBDYXJkVGl0bGUoeyBjaGlsZHJlbiB9KSB7XG4gIHJldHVybiA8aDMgY2xhc3NOYW1lPVwiY2FyZC10aXRsZVwiPntjaGlsZHJlbn08L2gzPjtcbn07XG5cbkNhcmQuVGl0bGUucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLFxuICAgIFByb3BUeXBlcy5ub2RlLFxuICBdKSxcbn07XG5cbkNhcmQuSGVhZGVyID0gZnVuY3Rpb24gQ2FyZEhlYWRlcih7IHRpdGxlLCBjaGlsZHJlbiB9KSB7XG4gIHRpdGxlID0gdGl0bGUgPyA8Q2FyZC5UaXRsZT57dGl0bGV9PC9DYXJkLlRpdGxlPiA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQtaGVhZGVyXCI+XG4gICAgICB7dGl0bGV9XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DYXJkLkhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIHRpdGxlOiBQcm9wVHlwZXMubm9kZSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSxcbiAgICBQcm9wVHlwZXMubm9kZSxcbiAgXSksXG59O1xuXG5leHBvcnQgeyBDYXJkIH07XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsxXSEuLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzJdIS4vaW5kZXguc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsxXSEuLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzJdIS4vaW5kZXguc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJyZXF1aXJlIiwiZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX182MzlfXyIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzE4OV9fIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJjbGFzc05hbWVzIiwiY2xhc3NlcyIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmciLCJhcmdUeXBlIiwicHVzaCIsIkFycmF5IiwiaXNBcnJheSIsImlubmVyIiwiYXBwbHkiLCJ0b1N0cmluZyIsIk9iamVjdCIsInByb3RvdHlwZSIsImluY2x1ZGVzIiwia2V5IiwiY2FsbCIsImpvaW4iLCJkZWZhdWx0IiwiX19fQ1NTX0xPQURFUl9FWFBPUlRfX18iLCJpZCIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJsaXN0IiwidGhpcyIsIm1hcCIsIml0ZW0iLCJjb250ZW50IiwibmVlZExheWVyIiwiY29uY2F0IiwibW9kdWxlcyIsIm1lZGlhIiwiZGVkdXBlIiwic3VwcG9ydHMiLCJsYXllciIsInVuZGVmaW5lZCIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJrIiwiX2siLCJjc3NNYXBwaW5nIiwiYnRvYSIsImJhc2U2NCIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiSlNPTiIsInN0cmluZ2lmeSIsImRhdGEiLCJzb3VyY2VNYXBwaW5nIiwiY29uZGl0aW9uIiwiZm9ybWF0IiwiYSIsImIiLCJjIiwiZCIsImYiLCJlcnJvciIsIkVycm9yIiwiYXJncyIsImFyZ0luZGV4IiwicmVwbGFjZSIsIm5hbWUiLCJmcmFtZXNUb1BvcCIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfbGVuIiwidmFsaWRhdG9ycyIsIl9rZXkiLCJfY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIyIiwiX2xlbjIiLCJfa2V5MiIsImZvckVhY2giLCJ2YWxpZGF0b3IiLCJyZXN1bHQiLCJvYmoiLCJfX2VzTW9kdWxlIiwidmFsaWRhdGUiLCJjaGVja1R5cGUiLCJpc1JlcXVpcmVkIiwicHJvcHMiLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsImNvbXBvbmVudE5hbWVTYWZlIiwicHJvcEZ1bGxOYW1lU2FmZSIsImNoYWluZWRDaGVja1R5cGUiLCJiaW5kIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwic2hpbSIsInNlY3JldCIsImVyciIsImdldFNoaW0iLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwiYmlnaW50IiwiYm9vbCIsImZ1bmMiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm5vZGUiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwic2hhcGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiYWEiLCJjYSIsInAiLCJkYSIsIlNldCIsImVhIiwiZmEiLCJoYSIsImFkZCIsImlhIiwid2luZG93IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiamEiLCJrYSIsImxhIiwibWEiLCJ2IiwiZyIsImFjY2VwdHNCb29sZWFucyIsImF0dHJpYnV0ZU5hbWUiLCJhdHRyaWJ1dGVOYW1lc3BhY2UiLCJtdXN0VXNlUHJvcGVydHkiLCJwcm9wZXJ0eU5hbWUiLCJ0eXBlIiwic2FuaXRpemVVUkwiLCJyZW1vdmVFbXB0eVN0cmluZyIsInoiLCJzcGxpdCIsInRvTG93ZXJDYXNlIiwicmEiLCJzYSIsInRvVXBwZXJDYXNlIiwidGEiLCJzbGljZSIsInBhIiwiaXNOYU4iLCJxYSIsInRlc3QiLCJvYSIsInJlbW92ZUF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZU5TIiwieGxpbmtIcmVmIiwidWEiLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsInZhIiwiU3ltYm9sIiwiZm9yIiwid2EiLCJ5YSIsInphIiwiQWEiLCJCYSIsIkNhIiwiRGEiLCJFYSIsIkZhIiwiR2EiLCJIYSIsIklhIiwiSmEiLCJpdGVyYXRvciIsIkthIiwiTGEiLCJBIiwiYXNzaWduIiwiTWEiLCJzdGFjayIsInRyaW0iLCJtYXRjaCIsIk5hIiwiT2EiLCJwcmVwYXJlU3RhY2tUcmFjZSIsInNldCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJsIiwiaCIsImRpc3BsYXlOYW1lIiwiUGEiLCJ0YWciLCJyZW5kZXIiLCJRYSIsIiQkdHlwZW9mIiwiX2NvbnRleHQiLCJfcGF5bG9hZCIsIl9pbml0IiwiUmEiLCJTYSIsIlRhIiwibm9kZU5hbWUiLCJWYSIsIl92YWx1ZVRyYWNrZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJjb25zdHJ1Y3RvciIsImdldCIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXRWYWx1ZSIsInNldFZhbHVlIiwic3RvcFRyYWNraW5nIiwiVWEiLCJXYSIsImNoZWNrZWQiLCJYYSIsImFjdGl2ZUVsZW1lbnQiLCJib2R5IiwiWWEiLCJkZWZhdWx0Q2hlY2tlZCIsImRlZmF1bHRWYWx1ZSIsIl93cmFwcGVyU3RhdGUiLCJpbml0aWFsQ2hlY2tlZCIsIlphIiwiaW5pdGlhbFZhbHVlIiwiY29udHJvbGxlZCIsImFiIiwiYmIiLCJjYiIsImRiIiwib3duZXJEb2N1bWVudCIsImViIiwiZmIiLCJvcHRpb25zIiwic2VsZWN0ZWQiLCJkZWZhdWx0U2VsZWN0ZWQiLCJkaXNhYmxlZCIsImdiIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJjaGlsZHJlbiIsImhiIiwiaWIiLCJqYiIsInRleHRDb250ZW50Iiwia2IiLCJsYiIsIm1iIiwibmIiLCJuYW1lc3BhY2VVUkkiLCJpbm5lckhUTUwiLCJ2YWx1ZU9mIiwiZmlyc3RDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGQiLCJNU0FwcCIsImV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uIiwib2IiLCJsYXN0Q2hpbGQiLCJub2RlVHlwZSIsIm5vZGVWYWx1ZSIsInBiIiwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCJhc3BlY3RSYXRpbyIsImJvcmRlckltYWdlT3V0c2V0IiwiYm9yZGVySW1hZ2VTbGljZSIsImJvcmRlckltYWdlV2lkdGgiLCJib3hGbGV4IiwiYm94RmxleEdyb3VwIiwiYm94T3JkaW5hbEdyb3VwIiwiY29sdW1uQ291bnQiLCJjb2x1bW5zIiwiZmxleCIsImZsZXhHcm93IiwiZmxleFBvc2l0aXZlIiwiZmxleFNocmluayIsImZsZXhOZWdhdGl2ZSIsImZsZXhPcmRlciIsImdyaWRBcmVhIiwiZ3JpZFJvdyIsImdyaWRSb3dFbmQiLCJncmlkUm93U3BhbiIsImdyaWRSb3dTdGFydCIsImdyaWRDb2x1bW4iLCJncmlkQ29sdW1uRW5kIiwiZ3JpZENvbHVtblNwYW4iLCJncmlkQ29sdW1uU3RhcnQiLCJmb250V2VpZ2h0IiwibGluZUNsYW1wIiwibGluZUhlaWdodCIsIm9wYWNpdHkiLCJvcmRlciIsIm9ycGhhbnMiLCJ0YWJTaXplIiwid2lkb3dzIiwiekluZGV4Iiwiem9vbSIsImZpbGxPcGFjaXR5IiwiZmxvb2RPcGFjaXR5Iiwic3RvcE9wYWNpdHkiLCJzdHJva2VEYXNoYXJyYXkiLCJzdHJva2VEYXNob2Zmc2V0Iiwic3Ryb2tlTWl0ZXJsaW1pdCIsInN0cm9rZU9wYWNpdHkiLCJzdHJva2VXaWR0aCIsInFiIiwicmIiLCJzYiIsInN0eWxlIiwiaW5kZXhPZiIsInNldFByb3BlcnR5Iiwia2V5cyIsImNoYXJBdCIsInN1YnN0cmluZyIsInRiIiwibWVudWl0ZW0iLCJhcmVhIiwiYmFzZSIsImJyIiwiY29sIiwiZW1iZWQiLCJociIsImltZyIsImlucHV0Iiwia2V5Z2VuIiwibGluayIsIm1ldGEiLCJwYXJhbSIsInNvdXJjZSIsInRyYWNrIiwid2JyIiwidWIiLCJ2YiIsImlzIiwid2IiLCJ4YiIsInRhcmdldCIsInNyY0VsZW1lbnQiLCJjb3JyZXNwb25kaW5nVXNlRWxlbWVudCIsInBhcmVudE5vZGUiLCJ5YiIsInpiIiwiQWIiLCJCYiIsIkNiIiwic3RhdGVOb2RlIiwiRGIiLCJFYiIsIkZiIiwiR2IiLCJIYiIsIkliIiwiSmIiLCJLYiIsIkxiIiwiTWIiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIk5iIiwibSIsIm9uRXJyb3IiLCJPYiIsIlBiIiwiUWIiLCJSYiIsIlNiIiwiVGIiLCJWYiIsImFsdGVybmF0ZSIsInJldHVybiIsImZsYWdzIiwiV2IiLCJtZW1vaXplZFN0YXRlIiwiZGVoeWRyYXRlZCIsIlhiIiwiWmIiLCJjaGlsZCIsInNpYmxpbmciLCJjdXJyZW50IiwiWWIiLCIkYiIsImFjIiwidW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayIsImJjIiwidW5zdGFibGVfY2FuY2VsQ2FsbGJhY2siLCJjYyIsInVuc3RhYmxlX3Nob3VsZFlpZWxkIiwiZGMiLCJ1bnN0YWJsZV9yZXF1ZXN0UGFpbnQiLCJCIiwidW5zdGFibGVfbm93IiwiZWMiLCJ1bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbCIsImZjIiwidW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHkiLCJnYyIsInVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5IiwiaGMiLCJ1bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSIsImljIiwidW5zdGFibGVfTG93UHJpb3JpdHkiLCJqYyIsInVuc3RhYmxlX0lkbGVQcmlvcml0eSIsImtjIiwibGMiLCJvYyIsIk1hdGgiLCJjbHozMiIsInBjIiwicWMiLCJsb2ciLCJMTjIiLCJyYyIsInNjIiwidGMiLCJ1YyIsInBlbmRpbmdMYW5lcyIsInN1c3BlbmRlZExhbmVzIiwicGluZ2VkTGFuZXMiLCJlbnRhbmdsZWRMYW5lcyIsImVudGFuZ2xlbWVudHMiLCJ2YyIsInhjIiwieWMiLCJ6YyIsIkFjIiwiZXZlbnRUaW1lcyIsIkNjIiwiQyIsIkRjIiwiRWMiLCJGYyIsIkdjIiwiSGMiLCJJYyIsIkpjIiwiS2MiLCJMYyIsIk1jIiwiTmMiLCJPYyIsIk1hcCIsIlBjIiwiUWMiLCJSYyIsIlNjIiwiZGVsZXRlIiwicG9pbnRlcklkIiwiVGMiLCJuYXRpdmVFdmVudCIsImJsb2NrZWRPbiIsImRvbUV2ZW50TmFtZSIsImV2ZW50U3lzdGVtRmxhZ3MiLCJ0YXJnZXRDb250YWluZXJzIiwiVmMiLCJXYyIsInByaW9yaXR5IiwiaXNEZWh5ZHJhdGVkIiwiY29udGFpbmVySW5mbyIsIlhjIiwiWWMiLCJkaXNwYXRjaEV2ZW50Iiwic2hpZnQiLCJaYyIsIiRjIiwiYWQiLCJiZCIsImNkIiwiUmVhY3RDdXJyZW50QmF0Y2hDb25maWciLCJkZCIsImVkIiwidHJhbnNpdGlvbiIsImZkIiwiZ2QiLCJoZCIsIlVjIiwic3RvcFByb3BhZ2F0aW9uIiwiamQiLCJrZCIsImxkIiwibWQiLCJuZCIsIm9kIiwia2V5Q29kZSIsImNoYXJDb2RlIiwicGQiLCJxZCIsInJkIiwiX3JlYWN0TmFtZSIsIl90YXJnZXRJbnN0IiwiY3VycmVudFRhcmdldCIsImlzRGVmYXVsdFByZXZlbnRlZCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJyZXR1cm5WYWx1ZSIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwicHJldmVudERlZmF1bHQiLCJjYW5jZWxCdWJibGUiLCJwZXJzaXN0IiwiaXNQZXJzaXN0ZW50Iiwid2QiLCJ4ZCIsInlkIiwic2QiLCJldmVudFBoYXNlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJ0aW1lU3RhbXAiLCJEYXRlIiwibm93IiwiaXNUcnVzdGVkIiwidGQiLCJ1ZCIsInZpZXciLCJkZXRhaWwiLCJ2ZCIsIkFkIiwic2NyZWVuWCIsInNjcmVlblkiLCJjbGllbnRYIiwiY2xpZW50WSIsInBhZ2VYIiwicGFnZVkiLCJjdHJsS2V5Iiwic2hpZnRLZXkiLCJhbHRLZXkiLCJtZXRhS2V5IiwiZ2V0TW9kaWZpZXJTdGF0ZSIsInpkIiwiYnV0dG9uIiwiYnV0dG9ucyIsInJlbGF0ZWRUYXJnZXQiLCJmcm9tRWxlbWVudCIsInRvRWxlbWVudCIsIm1vdmVtZW50WCIsIm1vdmVtZW50WSIsIkJkIiwiRGQiLCJkYXRhVHJhbnNmZXIiLCJGZCIsIkhkIiwiYW5pbWF0aW9uTmFtZSIsImVsYXBzZWRUaW1lIiwicHNldWRvRWxlbWVudCIsIklkIiwiY2xpcGJvYXJkRGF0YSIsIkpkIiwiTGQiLCJNZCIsIkVzYyIsIlNwYWNlYmFyIiwiTGVmdCIsIlVwIiwiUmlnaHQiLCJEb3duIiwiRGVsIiwiV2luIiwiTWVudSIsIkFwcHMiLCJTY3JvbGwiLCJNb3pQcmludGFibGVLZXkiLCJOZCIsIk9kIiwiQWx0IiwiQ29udHJvbCIsIk1ldGEiLCJTaGlmdCIsIlBkIiwiUWQiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJjb2RlIiwicmVwZWF0IiwibG9jYWxlIiwid2hpY2giLCJSZCIsIlRkIiwid2lkdGgiLCJoZWlnaHQiLCJwcmVzc3VyZSIsInRhbmdlbnRpYWxQcmVzc3VyZSIsInRpbHRYIiwidGlsdFkiLCJ0d2lzdCIsInBvaW50ZXJUeXBlIiwiaXNQcmltYXJ5IiwiVmQiLCJ0b3VjaGVzIiwidGFyZ2V0VG91Y2hlcyIsImNoYW5nZWRUb3VjaGVzIiwiWGQiLCJZZCIsImRlbHRhWCIsIndoZWVsRGVsdGFYIiwiZGVsdGFZIiwid2hlZWxEZWx0YVkiLCJ3aGVlbERlbHRhIiwiZGVsdGFaIiwiZGVsdGFNb2RlIiwiWmQiLCIkZCIsImFlIiwiYmUiLCJkb2N1bWVudE1vZGUiLCJjZSIsImRlIiwiZWUiLCJmZSIsImdlIiwiaGUiLCJpZSIsImxlIiwiY29sb3IiLCJkYXRlIiwiZGF0ZXRpbWUiLCJlbWFpbCIsIm1vbnRoIiwicGFzc3dvcmQiLCJyYW5nZSIsInNlYXJjaCIsInRlbCIsInRleHQiLCJ0aW1lIiwidXJsIiwid2VlayIsIm1lIiwibmUiLCJvZSIsImV2ZW50IiwibGlzdGVuZXJzIiwicGUiLCJxZSIsInJlIiwic2UiLCJ0ZSIsInVlIiwidmUiLCJ3ZSIsInhlIiwieWUiLCJ6ZSIsIm9uaW5wdXQiLCJBZSIsImRldGFjaEV2ZW50IiwiQmUiLCJDZSIsImF0dGFjaEV2ZW50IiwiRGUiLCJFZSIsIkZlIiwiSGUiLCJJZSIsIkplIiwiS2UiLCJvZmZzZXQiLCJuZXh0U2libGluZyIsIkxlIiwiY29udGFpbnMiLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsIk1lIiwiSFRNTElGcmFtZUVsZW1lbnQiLCJjb250ZW50V2luZG93IiwiaHJlZiIsIk5lIiwiY29udGVudEVkaXRhYmxlIiwiT2UiLCJmb2N1c2VkRWxlbSIsInNlbGVjdGlvblJhbmdlIiwiZG9jdW1lbnRFbGVtZW50Iiwic3RhcnQiLCJlbmQiLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsIm1pbiIsImRlZmF1bHRWaWV3IiwiZ2V0U2VsZWN0aW9uIiwiZXh0ZW5kIiwicmFuZ2VDb3VudCIsImFuY2hvck5vZGUiLCJhbmNob3JPZmZzZXQiLCJmb2N1c05vZGUiLCJmb2N1c09mZnNldCIsImNyZWF0ZVJhbmdlIiwic2V0U3RhcnQiLCJyZW1vdmVBbGxSYW5nZXMiLCJhZGRSYW5nZSIsInNldEVuZCIsImxlZnQiLCJzY3JvbGxMZWZ0IiwidG9wIiwic2Nyb2xsVG9wIiwiZm9jdXMiLCJQZSIsIlFlIiwiUmUiLCJTZSIsIlRlIiwiVWUiLCJWZSIsIldlIiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uc3RhcnQiLCJ0cmFuc2l0aW9uZW5kIiwiWGUiLCJZZSIsIlplIiwiYW5pbWF0aW9uIiwiJGUiLCJhZiIsImJmIiwiY2YiLCJkZiIsImVmIiwiZmYiLCJnZiIsImhmIiwibGYiLCJtZiIsIm5mIiwiVWIiLCJpbnN0YW5jZSIsImxpc3RlbmVyIiwiRCIsIm9mIiwiaGFzIiwicGYiLCJxZiIsInJmIiwicmFuZG9tIiwic2YiLCJjYXB0dXJlIiwicGFzc2l2ZSIsIm4iLCJ0IiwiSiIsIngiLCJ1IiwidyIsIkYiLCJ0ZiIsInVmIiwicGFyZW50V2luZG93IiwidmYiLCJ3ZiIsIm5hIiwieGEiLCIkYSIsImJhIiwiamUiLCJjaGFyIiwia2UiLCJ1bnNoaWZ0IiwieGYiLCJ5ZiIsInpmIiwiQWYiLCJCZiIsIkNmIiwiRGYiLCJFZiIsIl9faHRtbCIsIkZmIiwic2V0VGltZW91dCIsIkdmIiwiY2xlYXJUaW1lb3V0IiwiSGYiLCJQcm9taXNlIiwiSmYiLCJxdWV1ZU1pY3JvdGFzayIsInJlc29sdmUiLCJ0aGVuIiwiY2F0Y2giLCJJZiIsIktmIiwiTGYiLCJNZiIsInByZXZpb3VzU2libGluZyIsIk5mIiwiT2YiLCJQZiIsIlFmIiwiUmYiLCJTZiIsIlRmIiwiVWYiLCJFIiwiRyIsIlZmIiwiSCIsIldmIiwiWGYiLCJZZiIsImNvbnRleHRUeXBlcyIsIl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQiLCJfX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dCIsIlpmIiwiY2hpbGRDb250ZXh0VHlwZXMiLCIkZiIsImFnIiwiYmciLCJnZXRDaGlsZENvbnRleHQiLCJjZyIsIl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0IiwiZGciLCJlZyIsImZnIiwiZ2ciLCJoZyIsImpnIiwia2ciLCJsZyIsIm1nIiwibmciLCJvZyIsInBnIiwicWciLCJyZyIsInNnIiwidGciLCJ1ZyIsInZnIiwid2ciLCJ4ZyIsInlnIiwiSSIsInpnIiwiQWciLCJCZyIsImRlbGV0aW9ucyIsIkNnIiwicGVuZGluZ1Byb3BzIiwib3ZlcmZsb3ciLCJ0cmVlQ29udGV4dCIsInJldHJ5TGFuZSIsIkRnIiwibW9kZSIsIkVnIiwiRmciLCJHZyIsIm1lbW9pemVkUHJvcHMiLCJIZyIsIklnIiwiSmciLCJLZyIsIkxnIiwiZGVmYXVsdFByb3BzIiwiTWciLCJOZyIsIk9nIiwiUGciLCJRZyIsIlJnIiwiX2N1cnJlbnRWYWx1ZSIsIlNnIiwiY2hpbGRMYW5lcyIsIlRnIiwiZGVwZW5kZW5jaWVzIiwiZmlyc3RDb250ZXh0IiwibGFuZXMiLCJVZyIsIlZnIiwiY29udGV4dCIsIm1lbW9pemVkVmFsdWUiLCJuZXh0IiwiV2ciLCJYZyIsIllnIiwiaW50ZXJsZWF2ZWQiLCJaZyIsIiRnIiwiYWgiLCJ1cGRhdGVRdWV1ZSIsImJhc2VTdGF0ZSIsImZpcnN0QmFzZVVwZGF0ZSIsImxhc3RCYXNlVXBkYXRlIiwic2hhcmVkIiwicGVuZGluZyIsImVmZmVjdHMiLCJiaCIsImNoIiwiZXZlbnRUaW1lIiwibGFuZSIsInBheWxvYWQiLCJjYWxsYmFjayIsImRoIiwiSyIsImVoIiwiZmgiLCJnaCIsInEiLCJyIiwieSIsImhoIiwiaWgiLCJqaCIsIkNvbXBvbmVudCIsInJlZnMiLCJraCIsIm5oIiwiaXNNb3VudGVkIiwiX3JlYWN0SW50ZXJuYWxzIiwiZW5xdWV1ZVNldFN0YXRlIiwiTCIsImxoIiwibWgiLCJlbnF1ZXVlUmVwbGFjZVN0YXRlIiwiZW5xdWV1ZUZvcmNlVXBkYXRlIiwib2giLCJzaG91bGRDb21wb25lbnRVcGRhdGUiLCJpc1B1cmVSZWFjdENvbXBvbmVudCIsInBoIiwiY29udGV4dFR5cGUiLCJzdGF0ZSIsInVwZGF0ZXIiLCJxaCIsImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsInJoIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUiLCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50IiwiY29tcG9uZW50V2lsbE1vdW50IiwiY29tcG9uZW50RGlkTW91bnQiLCJzaCIsInJlZiIsIl9vd25lciIsIl9zdHJpbmdSZWYiLCJ0aCIsInVoIiwidmgiLCJpbmRleCIsIndoIiwieGgiLCJ5aCIsImltcGxlbWVudGF0aW9uIiwiemgiLCJBaCIsImRvbmUiLCJCaCIsIkNoIiwiRGgiLCJFaCIsIkZoIiwiR2giLCJIaCIsIkloIiwidGFnTmFtZSIsIkpoIiwiS2giLCJMaCIsIk0iLCJNaCIsInJldmVhbE9yZGVyIiwiTmgiLCJPaCIsIl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5IiwiUGgiLCJSZWFjdEN1cnJlbnREaXNwYXRjaGVyIiwiUWgiLCJSaCIsIk4iLCJPIiwiUCIsIlNoIiwiVGgiLCJVaCIsIlZoIiwiUSIsIldoIiwiWGgiLCJZaCIsIlpoIiwiJGgiLCJhaSIsImJpIiwiY2kiLCJiYXNlUXVldWUiLCJxdWV1ZSIsImRpIiwiZWkiLCJmaSIsImxhc3RSZW5kZXJlZFJlZHVjZXIiLCJhY3Rpb24iLCJoYXNFYWdlclN0YXRlIiwiZWFnZXJTdGF0ZSIsImxhc3RSZW5kZXJlZFN0YXRlIiwiZGlzcGF0Y2giLCJnaSIsImhpIiwiaWkiLCJqaSIsImtpIiwiZ2V0U25hcHNob3QiLCJsaSIsIm1pIiwiUiIsIm5pIiwibGFzdEVmZmVjdCIsInN0b3JlcyIsIm9pIiwicGkiLCJxaSIsInJpIiwiY3JlYXRlIiwiZGVzdHJveSIsImRlcHMiLCJzaSIsInRpIiwidWkiLCJ2aSIsIndpIiwieGkiLCJ5aSIsInppIiwiQWkiLCJCaSIsIkNpIiwiRGkiLCJFaSIsIkZpIiwiR2kiLCJIaSIsIklpIiwiSmkiLCJyZWFkQ29udGV4dCIsInVzZUNhbGxiYWNrIiwidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VJbnNlcnRpb25FZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVkdWNlciIsInVzZVJlZiIsInVzZVN0YXRlIiwidXNlRGVidWdWYWx1ZSIsInVzZURlZmVycmVkVmFsdWUiLCJ1c2VUcmFuc2l0aW9uIiwidXNlTXV0YWJsZVNvdXJjZSIsInVzZVN5bmNFeHRlcm5hbFN0b3JlIiwidXNlSWQiLCJ1bnN0YWJsZV9pc05ld1JlY29uY2lsZXIiLCJpZGVudGlmaWVyUHJlZml4IiwiS2kiLCJtZXNzYWdlIiwiZGlnZXN0IiwiTGkiLCJNaSIsImNvbnNvbGUiLCJOaSIsIldlYWtNYXAiLCJPaSIsIlBpIiwiUWkiLCJSaSIsImdldERlcml2ZWRTdGF0ZUZyb21FcnJvciIsImNvbXBvbmVudERpZENhdGNoIiwiU2kiLCJjb21wb25lbnRTdGFjayIsIlRpIiwicGluZ0NhY2hlIiwiVWkiLCJWaSIsIldpIiwiWGkiLCJSZWFjdEN1cnJlbnRPd25lciIsIllpIiwiWmkiLCIkaSIsImFqIiwiYmoiLCJjb21wYXJlIiwiY2oiLCJkaiIsImVqIiwiYmFzZUxhbmVzIiwiY2FjaGVQb29sIiwidHJhbnNpdGlvbnMiLCJmaiIsImdqIiwiaGoiLCJpaiIsImpqIiwiVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUiLCJjb21wb25lbnRXaWxsVXBkYXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwia2oiLCJsaiIsInBlbmRpbmdDb250ZXh0IiwibWoiLCJBaiIsIkJqIiwiQ2oiLCJEaiIsIm5qIiwib2oiLCJwaiIsImZhbGxiYWNrIiwicWoiLCJyaiIsInRqIiwiZGF0YXNldCIsImRnc3QiLCJ1aiIsInZqIiwiX3JlYWN0UmV0cnkiLCJzaiIsInN1YnRyZWVGbGFncyIsIndqIiwieGoiLCJpc0JhY2t3YXJkcyIsInJlbmRlcmluZyIsInJlbmRlcmluZ1N0YXJ0VGltZSIsImxhc3QiLCJ0YWlsIiwidGFpbE1vZGUiLCJ5aiIsIkVqIiwiUyIsIkZqIiwiR2oiLCJ3YXNNdWx0aXBsZSIsIm11bHRpcGxlIiwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiwib25DbGljayIsIm9uY2xpY2siLCJzaXplIiwiY3JlYXRlRWxlbWVudE5TIiwiYXV0b0ZvY3VzIiwiY3JlYXRlVGV4dE5vZGUiLCJUIiwiSGoiLCJJaiIsIkpqIiwiS2oiLCJVIiwiTGoiLCJXZWFrU2V0IiwiViIsIk1qIiwiVyIsIk5qIiwiT2oiLCJRaiIsIlJqIiwiU2oiLCJUaiIsIlVqIiwiVmoiLCJXaiIsImluc2VydEJlZm9yZSIsIl9yZWFjdFJvb3RDb250YWluZXIiLCJYaiIsIlgiLCJZaiIsIlpqIiwiYWsiLCJvbkNvbW1pdEZpYmVyVW5tb3VudCIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiYmsiLCJjayIsImRrIiwiZWsiLCJmayIsImlzSGlkZGVuIiwiZ2siLCJoayIsImRpc3BsYXkiLCJpayIsImprIiwia2siLCJsayIsIl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlIiwic3JjIiwiV2siLCJtayIsImNlaWwiLCJuayIsIm9rIiwicGsiLCJZIiwiWiIsInFrIiwicmsiLCJzayIsInRrIiwidWsiLCJJbmZpbml0eSIsInZrIiwid2siLCJ4ayIsInlrIiwiemsiLCJBayIsIkJrIiwiQ2siLCJEayIsIkVrIiwiY2FsbGJhY2tOb2RlIiwiZXhwaXJhdGlvblRpbWVzIiwiZXhwaXJlZExhbmVzIiwid2MiLCJjYWxsYmFja1ByaW9yaXR5IiwiaWciLCJGayIsIkdrIiwiSGsiLCJJayIsIkprIiwiS2siLCJMayIsIk1rIiwiTmsiLCJPayIsIlBrIiwiZmluaXNoZWRXb3JrIiwiZmluaXNoZWRMYW5lcyIsIlFrIiwidGltZW91dEhhbmRsZSIsIlJrIiwiU2siLCJUayIsIlVrIiwiVmsiLCJtdXRhYmxlUmVhZExhbmVzIiwiQmMiLCJQaiIsIm9uQ29tbWl0RmliZXJSb290IiwibWMiLCJvblJlY292ZXJhYmxlRXJyb3IiLCJYayIsIm9uUG9zdENvbW1pdEZpYmVyUm9vdCIsIllrIiwiWmsiLCJhbCIsImlzUmVhY3RDb21wb25lbnQiLCJwZW5kaW5nQ2hpbGRyZW4iLCJibCIsIm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEiLCJjbCIsImNhY2hlIiwicGVuZGluZ1N1c3BlbnNlQm91bmRhcmllcyIsImVsIiwiZmwiLCJnbCIsImhsIiwiaWwiLCJqbCIsInpqIiwiJGsiLCJsbCIsInJlcG9ydEVycm9yIiwibWwiLCJfaW50ZXJuYWxSb290IiwibmwiLCJvbCIsInBsIiwicWwiLCJzbCIsInJsIiwidW5tb3VudCIsInVuc3RhYmxlX3NjaGVkdWxlSHlkcmF0aW9uIiwic3BsaWNlIiwicXVlcnlTZWxlY3RvckFsbCIsImZvcm0iLCJ0bCIsInVzaW5nQ2xpZW50RW50cnlQb2ludCIsIkV2ZW50cyIsInVsIiwiZmluZEZpYmVyQnlIb3N0SW5zdGFuY2UiLCJidW5kbGVUeXBlIiwidmVyc2lvbiIsInJlbmRlcmVyUGFja2FnZU5hbWUiLCJ2bCIsInJlbmRlcmVyQ29uZmlnIiwib3ZlcnJpZGVIb29rU3RhdGUiLCJvdmVycmlkZUhvb2tTdGF0ZURlbGV0ZVBhdGgiLCJvdmVycmlkZUhvb2tTdGF0ZVJlbmFtZVBhdGgiLCJvdmVycmlkZVByb3BzIiwib3ZlcnJpZGVQcm9wc0RlbGV0ZVBhdGgiLCJvdmVycmlkZVByb3BzUmVuYW1lUGF0aCIsInNldEVycm9ySGFuZGxlciIsInNldFN1c3BlbnNlSGFuZGxlciIsInNjaGVkdWxlVXBkYXRlIiwiY3VycmVudERpc3BhdGNoZXJSZWYiLCJmaW5kSG9zdEluc3RhbmNlQnlGaWJlciIsImZpbmRIb3N0SW5zdGFuY2VzRm9yUmVmcmVzaCIsInNjaGVkdWxlUmVmcmVzaCIsInNjaGVkdWxlUm9vdCIsInNldFJlZnJlc2hIYW5kbGVyIiwiZ2V0Q3VycmVudEZpYmVyIiwicmVjb25jaWxlclZlcnNpb24iLCJfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18iLCJ3bCIsImlzRGlzYWJsZWQiLCJzdXBwb3J0c0ZpYmVyIiwiaW5qZWN0IiwiY3JlYXRlUG9ydGFsIiwiZGwiLCJjcmVhdGVSb290IiwidW5zdGFibGVfc3RyaWN0TW9kZSIsImZpbmRET01Ob2RlIiwiZmx1c2hTeW5jIiwiaHlkcmF0ZSIsImh5ZHJhdGVSb290IiwiaHlkcmF0ZWRTb3VyY2VzIiwiX2dldFZlcnNpb24iLCJfc291cmNlIiwidW5tb3VudENvbXBvbmVudEF0Tm9kZSIsInVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzIiwidW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXIiLCJjaGVja0RDRSIsIl9fc2VsZiIsIl9fc291cmNlIiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIiwicG9wIiwic29ydEluZGV4IiwicGVyZm9ybWFuY2UiLCJzZXRJbW1lZGlhdGUiLCJzdGFydFRpbWUiLCJleHBpcmF0aW9uVGltZSIsInByaW9yaXR5TGV2ZWwiLCJuYXZpZ2F0b3IiLCJzY2hlZHVsaW5nIiwiaXNJbnB1dFBlbmRpbmciLCJNZXNzYWdlQ2hhbm5lbCIsInBvcnQyIiwicG9ydDEiLCJvbm1lc3NhZ2UiLCJwb3N0TWVzc2FnZSIsInVuc3RhYmxlX1Byb2ZpbGluZyIsInVuc3RhYmxlX2NvbnRpbnVlRXhlY3V0aW9uIiwidW5zdGFibGVfZm9yY2VGcmFtZVJhdGUiLCJmbG9vciIsInVuc3RhYmxlX2dldEZpcnN0Q2FsbGJhY2tOb2RlIiwidW5zdGFibGVfbmV4dCIsInVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uIiwidW5zdGFibGVfcnVuV2l0aFByaW9yaXR5IiwiZGVsYXkiLCJ1bnN0YWJsZV93cmFwQ2FsbGJhY2siLCJzdHlsZXNJbkRPTSIsImdldEluZGV4QnlJZGVudGlmaWVyIiwiaWRlbnRpZmllciIsIm1vZHVsZXNUb0RvbSIsImlkQ291bnRNYXAiLCJpZGVudGlmaWVycyIsImNvdW50IiwiaW5kZXhCeUlkZW50aWZpZXIiLCJjc3MiLCJzb3VyY2VNYXAiLCJyZWZlcmVuY2VzIiwiYWRkRWxlbWVudFN0eWxlIiwiYnlJbmRleCIsImFwaSIsImRvbUFQSSIsInVwZGF0ZSIsIm5ld09iaiIsInJlbW92ZSIsImxhc3RJZGVudGlmaWVycyIsIm5ld0xpc3QiLCJuZXdMYXN0SWRlbnRpZmllcnMiLCJfaSIsIl9pbmRleCIsIm1lbW8iLCJpbnNlcnQiLCJzdHlsZVRhcmdldCIsInF1ZXJ5U2VsZWN0b3IiLCJjb250ZW50RG9jdW1lbnQiLCJoZWFkIiwiZ2V0VGFyZ2V0Iiwic2V0QXR0cmlidXRlcyIsImF0dHJpYnV0ZXMiLCJzdHlsZUVsZW1lbnQiLCJub25jZSIsImluc2VydFN0eWxlRWxlbWVudCIsInN0eWxlVGFnVHJhbnNmb3JtIiwicmVtb3ZlU3R5bGVFbGVtZW50Iiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJwcm9wZXJ0aWVzIiwiaXNCcm93c2VyIiwiaXNGaXJlZm94IiwibW96SW5uZXJTY3JlZW5YIiwiZ2V0Q2FyZXRDb29yZGluYXRlcyIsInBvc2l0aW9uIiwiZGVidWciLCJkaXYiLCJjb21wdXRlZCIsImdldENvbXB1dGVkU3R5bGUiLCJjdXJyZW50U3R5bGUiLCJpc0lucHV0Iiwid2hpdGVTcGFjZSIsIndvcmRXcmFwIiwidmlzaWJpbGl0eSIsInByb3AiLCJzY3JvbGxIZWlnaHQiLCJwYXJzZUludCIsIm92ZXJmbG93WSIsInNwYW4iLCJjb29yZGluYXRlcyIsIm9mZnNldFRvcCIsIm9mZnNldExlZnQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiZ2V0dGVyIiwiZGVmaW5pdGlvbiIsIm8iLCJnbG9iYWxUaGlzIiwiRnVuY3Rpb24iLCJ0b1N0cmluZ1RhZyIsIm5jIiwiSW5mb1NlcnZpY2UiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwiT3AiLCJkZXNjIiwiJFN5bWJvbCIsIml0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvclN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZ1N5bWJvbCIsIndyaXRhYmxlIiwid3JhcCIsImlubmVyRm4iLCJvdXRlckZuIiwidHJ5TG9jc0xpc3QiLCJwcm90b0dlbmVyYXRvciIsIkdlbmVyYXRvciIsImdlbmVyYXRvciIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJmbiIsIkNvbnRpbnVlU2VudGluZWwiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiSXRlcmF0b3JQcm90b3R5cGUiLCJnZXRQcm90byIsImdldFByb3RvdHlwZU9mIiwiTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUiLCJ2YWx1ZXMiLCJHcCIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsIm1ldGhvZCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiUHJvbWlzZUltcGwiLCJpbnZva2UiLCJyZWplY3QiLCJyZWNvcmQiLCJfdHlwZW9mIiwiX19hd2FpdCIsInVud3JhcHBlZCIsInByZXZpb3VzUHJvbWlzZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiZGVsZWdhdGUiLCJkZWxlZ2F0ZVJlc3VsdCIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIm1ldGhvZE5hbWUiLCJUeXBlRXJyb3IiLCJpbmZvIiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJsb2NzIiwiZW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXRlcmFibGUiLCJpdGVyYXRvck1ldGhvZCIsImRvbmVSZXN1bHQiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiZ2VuRnVuIiwiY3RvciIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJpdGVyIiwidmFsIiwicmV2ZXJzZSIsInNraXBUZW1wUmVzZXQiLCJwcmV2Iiwic3RvcCIsInJvb3RSZWNvcmQiLCJydmFsIiwiZXhjZXB0aW9uIiwiaGFuZGxlIiwibG9jIiwiY2F1Z2h0IiwiaGFzQ2F0Y2giLCJoYXNGaW5hbGx5IiwiZmluYWxseUVudHJ5IiwiY29tcGxldGUiLCJmaW5pc2giLCJ0aHJvd24iLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwiX25leHQiLCJfdGhyb3ciLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiZGVzY3JpcHRvciIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJfdG9QcmltaXRpdmUiLCJNb2NrdXBJbmZvU2VydmljZUltcGwiLCJDb25zdHJ1Y3RvciIsIl9jbGFzc0NhbGxDaGVjayIsInByb3RvUHJvcHMiLCJfbG9nb3V0IiwiX2dldFNlc3Npb25JbmZvIiwiX2xvZ2luIiwiX2NhbGxlZSIsInNsZWVwIiwibXMiLCJfY2FsbGVlMiIsInVzZXJuYW1lIiwiX2NvbnRleHQyIiwicmVhbG0iLCJyb2xlcyIsImV4cGlyZXMiLCJfeCIsIl9jYWxsZWUzIiwiX2NvbnRleHQzIiwiaGFuZGxlRXJyb3IiLCJTZXJ2ZXJWZXJzaW9uSW5mbyIsIl91c2VTdGF0ZTIiLCJzZXRWZXJzaW9uIiwiZ2V0VmVyc2lvbkluZm8iLCJzZXJ2ZXJWZXJzaW9uIiwibm9CdWlsZCIsImdldFNlcnZlclZlcnNpb25JbmZvIiwiUmVhY3QiLCJjbGFzc05hbWUiLCJleGNsdWRlZCIsInNvdXJjZUtleXMiLCJkZWZhdWx0S2V5Iiwic3Vic3RyIiwidXNlVW5jb250cm9sbGVkUHJvcCIsInByb3BWYWx1ZSIsImhhbmRsZXIiLCJ3YXNQcm9wUmVmIiwiX3VzZVN0YXRlIiwic3RhdGVWYWx1ZSIsInNldFN0YXRlIiwiaXNQcm9wIiwid2FzUHJvcCIsInVzZVVuY29udHJvbGxlZCIsImNvbmZpZyIsInJlZHVjZSIsImZpZWxkTmFtZSIsIl9leHRlbmRzMiIsIl9yZWYiLCJwcm9wc1ZhbHVlIiwicmVzdCIsImhhbmRsZXJOYW1lIiwiX3VzZVVuY29udHJvbGxlZFByb3AiLCJ1c2VFdmVudENhbGxiYWNrIiwidXNlTW91bnRlZCIsIm1vdW50ZWQiLCJ1c2VQcmV2aW91cyIsImlzUmVhY3ROYXRpdmUiLCJwcm9kdWN0IiwiX2V4Y2x1ZGVkIiwidXNlQnV0dG9uUHJvcHMiLCJyZWwiLCJyb2xlIiwidGFiSW5kZXgiLCJoYW5kbGVDbGljayIsImlzVHJpdmlhbEhyZWYiLCJvbktleURvd24iLCJCdXR0b24iLCJhcyIsImFzUHJvcCIsImJ1dHRvblByb3BzIiwiQW5jaG9yIiwiaGFuZGxlS2V5RG93biIsIlRoZW1lQ29udGV4dCIsInByZWZpeGVzIiwiYnJlYWtwb2ludHMiLCJtaW5CcmVha3BvaW50IiwiQ29uc3VtZXIiLCJQcm92aWRlciIsInVzZUJvb3RzdHJhcFByZWZpeCIsInByZWZpeCIsImRlZmF1bHRQcmVmaXgiLCJfc2V0UHJvdG90eXBlT2YiLCJVTk1PVU5URUQiLCJFWElURUQiLCJFTlRFUklORyIsIkVOVEVSRUQiLCJFWElUSU5HIiwiVHJhbnNpdGlvbiIsIl9SZWFjdCRDb21wb25lbnQiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJfdGhpcyIsImluaXRpYWxTdGF0dXMiLCJhcHBlYXIiLCJpc01vdW50aW5nIiwiZW50ZXIiLCJhcHBlYXJTdGF0dXMiLCJpbiIsInVubW91bnRPbkV4aXQiLCJtb3VudE9uRW50ZXIiLCJzdGF0dXMiLCJuZXh0Q2FsbGJhY2siLCJwcmV2U3RhdGUiLCJfcHJvdG8iLCJ1cGRhdGVTdGF0dXMiLCJwcmV2UHJvcHMiLCJuZXh0U3RhdHVzIiwiY2FuY2VsTmV4dENhbGxiYWNrIiwiZ2V0VGltZW91dHMiLCJleGl0IiwidGltZW91dCIsIm1vdW50aW5nIiwibm9kZVJlZiIsImZvcmNlUmVmbG93IiwicGVyZm9ybUVudGVyIiwicGVyZm9ybUV4aXQiLCJfdGhpczIiLCJhcHBlYXJpbmciLCJfcmVmMiIsIm1heWJlTm9kZSIsIm1heWJlQXBwZWFyaW5nIiwidGltZW91dHMiLCJlbnRlclRpbWVvdXQiLCJvbkVudGVyIiwic2FmZVNldFN0YXRlIiwib25FbnRlcmluZyIsIm9uVHJhbnNpdGlvbkVuZCIsIm9uRW50ZXJlZCIsIl90aGlzMyIsIm9uRXhpdCIsIm9uRXhpdGluZyIsIm9uRXhpdGVkIiwiY2FuY2VsIiwibmV4dFN0YXRlIiwic2V0TmV4dENhbGxiYWNrIiwiX3RoaXM0IiwiYWN0aXZlIiwiZG9lc05vdEhhdmVUaW1lb3V0T3JMaXN0ZW5lciIsImFkZEVuZExpc3RlbmVyIiwiX3JlZjMiLCJtYXliZU5leHRDYWxsYmFjayIsIl90aGlzJHByb3BzIiwiY2hpbGRQcm9wcyIsIlRyYW5zaXRpb25Hcm91cENvbnRleHQiLCJwcm9wVHlwZXMiLCJyVXBwZXIiLCJtc1BhdHRlcm4iLCJoeXBoZW5hdGVTdHlsZU5hbWUiLCJoeXBoZW5hdGUiLCJzdXBwb3J0ZWRUcmFuc2Zvcm1zIiwicHJvcGVydHkiLCJ0cmFuc2Zvcm1zIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInBzdWVkb0VsZW1lbnQiLCJkb2MiLCJvd25lcldpbmRvdyIsImlzVHJhbnNmb3JtIiwicmVtb3ZlUHJvcGVydHkiLCJvcHRpb25zU3VwcG9ydGVkIiwib25jZVN1cHBvcnRlZCIsIm9uY2UiLCJjYW5Vc2VET00iLCJldmVudE5hbWUiLCJ3cmFwcGVkSGFuZGxlciIsIl9fb25jZSIsIm9uY2VIYW5kbGVyIiwidHJhbnNpdGlvbkVuZCIsImR1cmF0aW9uIiwicGFkZGluZyIsInN0ciIsIm11bHQiLCJwYXJzZUZsb2F0IiwicmVtb3ZlRW11bGF0ZSIsImNhbGxlZCIsImNyZWF0ZUV2ZW50IiwiaW5pdEV2ZW50IiwidHJpZ2dlckV2ZW50IiwiZW11bGF0ZVRyYW5zaXRpb25FbmQiLCJ0cmFuc2l0aW9uRW5kTGlzdGVuZXIiLCJ0cmlnZ2VyQnJvd3NlclJlZmxvdyIsIm9mZnNldEhlaWdodCIsInRvRm5SZWYiLCJyZWZBIiwicmVmQiIsIm1lcmdlUmVmcyIsImNoaWxkUmVmIiwibWVyZ2VkUmVmIiwiYXR0YWNoUmVmIiwiY29tcG9uZW50T3JFbGVtZW50Iiwibm9ybWFsaXplIiwiaGFuZGxlRW50ZXIiLCJoYW5kbGVFbnRlcmluZyIsImhhbmRsZUVudGVyZWQiLCJoYW5kbGVFeGl0IiwiaGFuZGxlRXhpdGluZyIsImhhbmRsZUV4aXRlZCIsImhhbmRsZUFkZEVuZExpc3RlbmVyIiwiaW5uZXJQcm9wcyIsImZhZGVTdHlsZXMiLCJGYWRlIiwidHJhbnNpdGlvbkNsYXNzZXMiLCJpc0FwcGVhcmluZyIsInZhcmlhbnQiLCJDbG9zZUJ1dHRvbiIsImFyaWFMYWJlbCIsInJIeXBoZW4iLCJwYXNjYWxDYXNlIiwiXyIsImNociIsImNyZWF0ZVdpdGhCc1ByZWZpeCIsIkJzQ29tcG9uZW50IiwiYnNQcmVmaXgiLCJUYWciLCJjb21wb25lbnRQcm9wcyIsInJlc29sdmVkUHJlZml4IiwiRGl2U3R5bGVkQXNINCIsImRpdldpdGhDbGFzc05hbWUiLCJBbGVydEhlYWRpbmciLCJBbGVydExpbmsiLCJBbGVydCIsInVuY29udHJvbGxlZFByb3BzIiwic2hvdyIsImNsb3NlTGFiZWwiLCJjbG9zZVZhcmlhbnQiLCJvbkNsb3NlIiwiZGlzbWlzc2libGUiLCJoYW5kbGVDbG9zZSIsImFsZXJ0IiwiTGluayIsIkhlYWRpbmciLCJNZXNzYWdlIiwiaGVhZGluZyIsImljb24iLCJzaG93SWNvbiIsImljb25DbGFzcyIsInNldFNob3ciLCJFcnJvck1lc3NhZ2UiLCJ3YXJuIiwiTG9hZGluZ0luZm8iLCJ0aXRsZSIsIl9sb2dpbjIiLCJzZXJ2aWNlIiwibG9naW4iLCJoYW5kbGVTdWJtaXQiLCJzaG93TG9hZGluZ0luZm8iLCJzdWJtaXQiLCJsb2dpbl9wcm9taXNlIiwiX3gyIiwiVGltZW91dCIsIk51bWJlciIsImlzSW50ZWdlciIsInBhdXNlIiwiTG9naW5Gb3JtSW5wdXRzIiwic2hvd01lc3NhZ2VzIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJ3cmFwcGVkT25FcnJvciIsIl94MyIsIm9uU3VibWl0IiwicGxhY2Vob2xkZXIiLCJMb2dpbkZvcm1NZXNzYWdlIiwibWVzc2FnZVR5cGUiLCJzaG93SW5wdXRzIiwiTG9naW5Gb3JtIiwiX3JlZjQiLCJzZXRTaG93SW5wdXRzIiwidG9BcnJheSIsInFzYSIsInNlbGVjdG9yIiwidXNlRm9yY2VVcGRhdGUiLCJmaW5kIiwidGFyIiwiZGVxdWFsIiwiZm9vIiwiYmFyIiwibGVuIiwidG1wIiwiZ2V0VGltZSIsIlJlZ0V4cCIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsIkRhdGFWaWV3IiwiYnl0ZUxlbmd0aCIsImdldEludDgiLCJpc1ZpZXciLCJnZXRCYXNlUGxhY2VtZW50IiwicGxhY2VtZW50IiwiZ2V0V2luZG93IiwiaXNFbGVtZW50IiwiRWxlbWVudCIsImlzSFRNTEVsZW1lbnQiLCJIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsIlNoYWRvd1Jvb3QiLCJtYXgiLCJyb3VuZCIsImdldFVBU3RyaW5nIiwidWFEYXRhIiwidXNlckFnZW50RGF0YSIsImJyYW5kcyIsImJyYW5kIiwidXNlckFnZW50IiwiaXNMYXlvdXRWaWV3cG9ydCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImluY2x1ZGVTY2FsZSIsImlzRml4ZWRTdHJhdGVneSIsImNsaWVudFJlY3QiLCJzY2FsZVgiLCJzY2FsZVkiLCJvZmZzZXRXaWR0aCIsInZpc3VhbFZpZXdwb3J0IiwiYWRkVmlzdWFsT2Zmc2V0cyIsInJpZ2h0IiwiYm90dG9tIiwiZ2V0TGF5b3V0UmVjdCIsImFicyIsInBhcmVudCIsInJvb3ROb2RlIiwiZ2V0Um9vdE5vZGUiLCJpc1NhbWVOb2RlIiwiaG9zdCIsImdldE5vZGVOYW1lIiwiaXNUYWJsZUVsZW1lbnQiLCJnZXREb2N1bWVudEVsZW1lbnQiLCJnZXRQYXJlbnROb2RlIiwiYXNzaWduZWRTbG90IiwiZ2V0VHJ1ZU9mZnNldFBhcmVudCIsIm9mZnNldFBhcmVudCIsImdldE9mZnNldFBhcmVudCIsImN1cnJlbnROb2RlIiwidHJhbnNmb3JtIiwicGVyc3BlY3RpdmUiLCJjb250YWluIiwid2lsbENoYW5nZSIsImZpbHRlciIsImdldENvbnRhaW5pbmdCbG9jayIsImdldE1haW5BeGlzRnJvbVBsYWNlbWVudCIsIndpdGhpbiIsIm1lcmdlUGFkZGluZ09iamVjdCIsInBhZGRpbmdPYmplY3QiLCJleHBhbmRUb0hhc2hNYXAiLCJoYXNoTWFwIiwiYXV0byIsImJhc2VQbGFjZW1lbnRzIiwidmlld3BvcnQiLCJwb3BwZXIiLCJ2YXJpYXRpb25QbGFjZW1lbnRzIiwiYWNjIiwibW9kaWZpZXJQaGFzZXMiLCJlbmFibGVkIiwicGhhc2UiLCJfc3RhdGUkbW9kaWZpZXJzRGF0YSQiLCJhcnJvd0VsZW1lbnQiLCJlbGVtZW50cyIsImFycm93IiwicG9wcGVyT2Zmc2V0cyIsIm1vZGlmaWVyc0RhdGEiLCJiYXNlUGxhY2VtZW50IiwiYXhpcyIsInJlY3RzIiwidG9QYWRkaW5nT2JqZWN0IiwiYXJyb3dSZWN0IiwibWluUHJvcCIsIm1heFByb3AiLCJlbmREaWZmIiwicmVmZXJlbmNlIiwic3RhcnREaWZmIiwiYXJyb3dPZmZzZXRQYXJlbnQiLCJjbGllbnRTaXplIiwiY2xpZW50SGVpZ2h0IiwiY2xpZW50V2lkdGgiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImNlbnRlciIsImF4aXNQcm9wIiwiY2VudGVyT2Zmc2V0IiwiZWZmZWN0IiwiX29wdGlvbnMkZWxlbWVudCIsInJlcXVpcmVzIiwicmVxdWlyZXNJZkV4aXN0cyIsImdldFZhcmlhdGlvbiIsInVuc2V0U2lkZXMiLCJtYXBUb1N0eWxlcyIsIl9PYmplY3QkYXNzaWduMiIsInBvcHBlclJlY3QiLCJ2YXJpYXRpb24iLCJvZmZzZXRzIiwiZ3B1QWNjZWxlcmF0aW9uIiwiYWRhcHRpdmUiLCJyb3VuZE9mZnNldHMiLCJpc0ZpeGVkIiwiX29mZnNldHMkeCIsIl9vZmZzZXRzJHkiLCJoYXNYIiwiaGFzWSIsInNpZGVYIiwic2lkZVkiLCJ3aW4iLCJoZWlnaHRQcm9wIiwid2lkdGhQcm9wIiwiX09iamVjdCRhc3NpZ24iLCJjb21tb25TdHlsZXMiLCJkcHIiLCJkZXZpY2VQaXhlbFJhdGlvIiwicm91bmRPZmZzZXRzQnlEUFIiLCJfcmVmNSIsIl9vcHRpb25zJGdwdUFjY2VsZXJhdCIsIl9vcHRpb25zJGFkYXB0aXZlIiwiX29wdGlvbnMkcm91bmRPZmZzZXRzIiwic3RyYXRlZ3kiLCJzdHlsZXMiLCJfb3B0aW9ucyRzY3JvbGwiLCJzY3JvbGwiLCJfb3B0aW9ucyRyZXNpemUiLCJyZXNpemUiLCJzY3JvbGxQYXJlbnRzIiwic2Nyb2xsUGFyZW50IiwiaGFzaCIsImdldE9wcG9zaXRlUGxhY2VtZW50IiwibWF0Y2hlZCIsImdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IiwiZ2V0V2luZG93U2Nyb2xsIiwicGFnZVhPZmZzZXQiLCJwYWdlWU9mZnNldCIsImdldFdpbmRvd1Njcm9sbEJhclgiLCJpc1Njcm9sbFBhcmVudCIsIl9nZXRDb21wdXRlZFN0eWxlIiwib3ZlcmZsb3dYIiwiZ2V0U2Nyb2xsUGFyZW50IiwibGlzdFNjcm9sbFBhcmVudHMiLCJfZWxlbWVudCRvd25lckRvY3VtZW4iLCJpc0JvZHkiLCJ1cGRhdGVkTGlzdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUiLCJjbGlwcGluZ1BhcmVudCIsImh0bWwiLCJsYXlvdXRWaWV3cG9ydCIsImdldFZpZXdwb3J0UmVjdCIsImNsaWVudFRvcCIsImNsaWVudExlZnQiLCJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsIndpblNjcm9sbCIsInNjcm9sbFdpZHRoIiwiZGlyZWN0aW9uIiwiZ2V0RG9jdW1lbnRSZWN0IiwiY29tcHV0ZU9mZnNldHMiLCJjb21tb25YIiwiY29tbW9uWSIsIm1haW5BeGlzIiwiZGV0ZWN0T3ZlcmZsb3ciLCJfb3B0aW9ucyIsIl9vcHRpb25zJHBsYWNlbWVudCIsIl9vcHRpb25zJHN0cmF0ZWd5IiwiX29wdGlvbnMkYm91bmRhcnkiLCJib3VuZGFyeSIsIl9vcHRpb25zJHJvb3RCb3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsIl9vcHRpb25zJGVsZW1lbnRDb250ZSIsImVsZW1lbnRDb250ZXh0IiwiX29wdGlvbnMkYWx0Qm91bmRhcnkiLCJhbHRCb3VuZGFyeSIsIl9vcHRpb25zJHBhZGRpbmciLCJhbHRDb250ZXh0IiwiY2xpcHBpbmdDbGllbnRSZWN0IiwibWFpbkNsaXBwaW5nUGFyZW50cyIsImNsaXBwaW5nUGFyZW50cyIsImNsaXBwZXJFbGVtZW50IiwiZ2V0Q2xpcHBpbmdQYXJlbnRzIiwiZmlyc3RDbGlwcGluZ1BhcmVudCIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXRDbGlwcGluZ1JlY3QiLCJjb250ZXh0RWxlbWVudCIsInJlZmVyZW5jZUNsaWVudFJlY3QiLCJwb3BwZXJDbGllbnRSZWN0IiwiZWxlbWVudENsaWVudFJlY3QiLCJvdmVyZmxvd09mZnNldHMiLCJvZmZzZXREYXRhIiwibXVsdGlwbHkiLCJfc2tpcCIsIl9vcHRpb25zJG1haW5BeGlzIiwiY2hlY2tNYWluQXhpcyIsIl9vcHRpb25zJGFsdEF4aXMiLCJhbHRBeGlzIiwiY2hlY2tBbHRBeGlzIiwic3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIiwiZmFsbGJhY2tQbGFjZW1lbnRzIiwiX29wdGlvbnMkZmxpcFZhcmlhdGlvIiwiZmxpcFZhcmlhdGlvbnMiLCJhbGxvd2VkQXV0b1BsYWNlbWVudHMiLCJwcmVmZXJyZWRQbGFjZW1lbnQiLCJvcHBvc2l0ZVBsYWNlbWVudCIsImdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzIiwicGxhY2VtZW50cyIsIl9vcHRpb25zJGFsbG93ZWRBdXRvUCIsImFsbG93ZWRQbGFjZW1lbnRzIiwib3ZlcmZsb3dzIiwic29ydCIsImNvbXB1dGVBdXRvUGxhY2VtZW50IiwicmVmZXJlbmNlUmVjdCIsImNoZWNrc01hcCIsIm1ha2VGYWxsYmFja0NoZWNrcyIsImZpcnN0Rml0dGluZ1BsYWNlbWVudCIsIl9iYXNlUGxhY2VtZW50IiwiaXNTdGFydFZhcmlhdGlvbiIsImlzVmVydGljYWwiLCJtYWluVmFyaWF0aW9uU2lkZSIsImFsdFZhcmlhdGlvblNpZGUiLCJjaGVja3MiLCJldmVyeSIsImNoZWNrIiwiX2xvb3AiLCJmaXR0aW5nUGxhY2VtZW50IiwiZ2V0U2lkZU9mZnNldHMiLCJwcmV2ZW50ZWRPZmZzZXRzIiwiaXNBbnlTaWRlRnVsbHlDbGlwcGVkIiwic29tZSIsInNpZGUiLCJfb3B0aW9ucyRvZmZzZXQiLCJpbnZlcnREaXN0YW5jZSIsInNraWRkaW5nIiwiZGlzdGFuY2UiLCJkaXN0YW5jZUFuZFNraWRkaW5nVG9YWSIsIl9kYXRhJHN0YXRlJHBsYWNlbWVudCIsIl9vcHRpb25zJHRldGhlciIsInRldGhlciIsIl9vcHRpb25zJHRldGhlck9mZnNldCIsInRldGhlck9mZnNldCIsImlzQmFzZVBsYWNlbWVudCIsInRldGhlck9mZnNldFZhbHVlIiwibm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlIiwib2Zmc2V0TW9kaWZpZXJTdGF0ZSIsIl9vZmZzZXRNb2RpZmllclN0YXRlJCIsIm1haW5TaWRlIiwiYWx0U2lkZSIsImFkZGl0aXZlIiwibWluTGVuIiwibWF4TGVuIiwiYXJyb3dQYWRkaW5nT2JqZWN0IiwiYXJyb3dQYWRkaW5nTWluIiwiYXJyb3dQYWRkaW5nTWF4IiwiYXJyb3dMZW4iLCJtaW5PZmZzZXQiLCJtYXhPZmZzZXQiLCJjbGllbnRPZmZzZXQiLCJvZmZzZXRNb2RpZmllclZhbHVlIiwidGV0aGVyTWF4IiwicHJldmVudGVkT2Zmc2V0IiwiX29mZnNldE1vZGlmaWVyU3RhdGUkMiIsIl9tYWluU2lkZSIsIl9hbHRTaWRlIiwiX29mZnNldCIsIl9taW4iLCJfbWF4IiwiaXNPcmlnaW5TaWRlIiwiX29mZnNldE1vZGlmaWVyVmFsdWUiLCJfdGV0aGVyTWluIiwiX3RldGhlck1heCIsIl9wcmV2ZW50ZWRPZmZzZXQiLCJ3aXRoaW5NYXhDbGFtcCIsImdldENvbXBvc2l0ZVJlY3QiLCJlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCIsImlzT2Zmc2V0UGFyZW50QW5FbGVtZW50Iiwib2Zmc2V0UGFyZW50SXNTY2FsZWQiLCJpc0VsZW1lbnRTY2FsZWQiLCJtb2RpZmllcnMiLCJ2aXNpdGVkIiwibW9kaWZpZXIiLCJkZXAiLCJkZXBNb2RpZmllciIsIkRFRkFVTFRfT1BUSU9OUyIsImFyZVZhbGlkRWxlbWVudHMiLCJnZW5lcmF0b3JPcHRpb25zIiwiX2dlbmVyYXRvck9wdGlvbnMiLCJfZ2VuZXJhdG9yT3B0aW9ucyRkZWYiLCJkZWZhdWx0TW9kaWZpZXJzIiwiX2dlbmVyYXRvck9wdGlvbnMkZGVmMiIsImRlZmF1bHRPcHRpb25zIiwib3JkZXJlZE1vZGlmaWVycyIsImVmZmVjdENsZWFudXBGbnMiLCJpc0Rlc3Ryb3llZCIsInNldE9wdGlvbnMiLCJzZXRPcHRpb25zQWN0aW9uIiwiY2xlYW51cE1vZGlmaWVyRWZmZWN0cyIsIm1lcmdlZCIsIm9yZGVyTW9kaWZpZXJzIiwiZXhpc3RpbmciLCJfcmVmMyRvcHRpb25zIiwiY2xlYW51cEZuIiwiZm9yY2VVcGRhdGUiLCJfc3RhdGUkZWxlbWVudHMiLCJfc3RhdGUkb3JkZXJlZE1vZGlmaWUiLCJfc3RhdGUkb3JkZXJlZE1vZGlmaWUyIiwib25GaXJzdFVwZGF0ZSIsInBvcHBlckdlbmVyYXRvciIsInByZXZlbnRPdmVyZmxvdyIsInJlZmVyZW5jZU92ZXJmbG93IiwicG9wcGVyQWx0T3ZlcmZsb3ciLCJyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMiLCJwb3BwZXJFc2NhcGVPZmZzZXRzIiwiaXNSZWZlcmVuY2VIaWRkZW4iLCJoYXNQb3BwZXJFc2NhcGVkIiwiZXZlbnRMaXN0ZW5lcnMiLCJkaXNhYmxlZEFwcGx5U3R5bGVzTW9kaWZpZXIiLCJhcmlhRGVzY3JpYmVkQnlNb2RpZmllciIsImlkcyIsImdldEF0dHJpYnV0ZSIsIl9wb3BwZXIkZ2V0QXR0cmlidXRlIiwiRU1QVFlfTU9ESUZJRVJTIiwicmVmZXJlbmNlRWxlbWVudCIsInBvcHBlckVsZW1lbnQiLCJwcmV2TW9kaWZpZXJzIiwicG9wcGVySW5zdGFuY2VSZWYiLCJfcG9wcGVySW5zdGFuY2VSZWYkY3UiLCJfcG9wcGVySW5zdGFuY2VSZWYkY3UyIiwicG9wcGVyU3RhdGUiLCJ1cGRhdGVNb2RpZmllciIsIm5leHRNb2RpZmllcnMiLCJzIiwiZ2V0UmVmVGFyZ2V0IiwiSW5pdGlhbFRyaWdnZXJFdmVudHMiLCJjbGljayIsIm1vdXNldXAiLCJwb2ludGVydXAiLCJvbkNsaWNrT3V0c2lkZSIsImNsaWNrVHJpZ2dlciIsInByZXZlbnRNb3VzZUNsaWNrT3V0c2lkZVJlZiIsIndhaXRpbmdGb3JUcmlnZ2VyIiwiaGFuZGxlTW91c2VDYXB0dXJlIiwiaXNMZWZ0Q2xpY2tFdmVudCIsImhhbmRsZUluaXRpYWxNb3VzZSIsImhhbmRsZU1vdXNlIiwiY3VycmVudEV2ZW50IiwicmVtb3ZlSW5pdGlhbFRyaWdnZXJMaXN0ZW5lciIsInJlbW92ZU1vdXNlQ2FwdHVyZUxpc3RlbmVyIiwicmVtb3ZlTW91c2VMaXN0ZW5lciIsIm1vYmlsZVNhZmFyaUhhY2tMaXN0ZW5lcnMiLCJ0b01vZGlmaWVyQXJyYXkiLCJ1c2VEcm9wZG93bk1lbnUiLCJhdHRhY2hBcnJvd1JlZiIsImhhc1Nob3duUmVmIiwiZmxpcCIsInJvb3RDbG9zZUV2ZW50IiwiZml4ZWQiLCJwbGFjZW1lbnRPdmVycmlkZSIsInBvcHBlckNvbmZpZyIsImVuYWJsZUV2ZW50TGlzdGVuZXJzIiwidXNlUG9wcGVyIiwic2hvdWxkVXNlUG9wcGVyIiwic2V0TWVudSIsIm1lbnVFbGVtZW50IiwidG9nZ2xlRWxlbWVudCIsImVuYWJsZUV2ZW50cyIsImNvbnRhaW5lclBhZGRpbmciLCJfbW9kaWZpZXJzJGV2ZW50TGlzdGUiLCJfbW9kaWZpZXJzJHByZXZlbnRPdmUiLCJfbW9kaWZpZXJzJHByZXZlbnRPdmUyIiwiX21vZGlmaWVycyRvZmZzZXQiLCJfbW9kaWZpZXJzJGFycm93IiwidG9Nb2RpZmllck1hcCIsIm1lcmdlT3B0aW9uc1dpdGhQb3BwZXJDb25maWciLCJtZW51UHJvcHMiLCJtZXRhZGF0YSIsImhhc1Nob3duIiwidG9nZ2xlIiwiYXJyb3dQcm9wcyIsIkRyb3Bkb3duTWVudSIsIiQ3MDRjZjFkM2I2ODRjYzVjJHZhciRkZWZhdWx0Q29udGV4dCIsImlzU1NSIiwiJDcwNGNmMWQzYjY4NGNjNWMkdmFyJFNTUkNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNhblVzZURPTSIsIkJvb2xlYW4iLCIkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkY29tcG9uZW50SWRzIiwiaXNSb2xlTWVudSIsIl9lbCRnZXRBdHRyaWJ1dGUiLCJ1c2VEcm9wZG93blRvZ2dsZSIsImRlZmF1bHRJZCIsImN0eCIsImNvdW50ZXIiLCJfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfUmVhY3RDdXJyZW50T3duZXIiLCJjdXJyZW50T3duZXIiLCJwcmV2Q29tcG9uZW50VmFsdWUiLCIkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkdXNlQ291bnRlciIsInNldFRvZ2dsZSIsIkRyb3Bkb3duVG9nZ2xlIiwibWFrZUV2ZW50S2V5IiwiZXZlbnRLZXkiLCJOYXZDb250ZXh0IiwiQVRUUklCVVRFX1BSRUZJWCIsImRhdGFBdHRyIiwidXNlRHJvcGRvd25JdGVtIiwib25TZWxlY3RDdHgiLCJuYXZDb250ZXh0IiwiYWN0aXZlS2V5IiwiaXNBY3RpdmUiLCJEcm9wZG93bkl0ZW0iLCJkcm9wZG93bkl0ZW1Qcm9wcyIsInVzZVdpbmRvdyIsInVzZVJlZldpdGhVcGRhdGUiLCJEcm9wZG93biIsImRlZmF1bHRTaG93IiwicmF3U2hvdyIsIm9uU2VsZWN0Iiwib25Ub2dnbGUiLCJyYXdPblRvZ2dsZSIsIml0ZW1TZWxlY3RvciIsImZvY3VzRmlyc3RJdGVtT25TaG93IiwibWVudVJlZiIsInRvZ2dsZVJlZiIsImxhc3RTaG93IiwibGFzdFNvdXJjZUV2ZW50IiwiZm9jdXNJbkRyb3Bkb3duIiwibmV4dFNob3ciLCJvcmlnaW5hbEV2ZW50IiwiaGFuZGxlU2VsZWN0IiwiZm9jdXNUb2dnbGUiLCJtYXliZUZvY3VzRmlyc3QiLCJmb2N1c1R5cGUiLCJmaXJzdCIsImdldE5leHRGb2N1c2VkQ2hpbGQiLCJpdGVtcyIsImV2ZW50VGFyZ2V0IiwiX21lbnVSZWYkY3VycmVudCIsIl90b2dnbGVSZWYkY3VycmVudCIsImZyb21NZW51IiwiZnJvbVRvZ2dsZSIsIl9tZW51UmVmJGN1cnJlbnQyIiwiVG9nZ2xlIiwiSXRlbSIsInVzZVdyYXBwZWRSZWZXaXRoV2FybmluZyIsImdldERyb3Bkb3duTWVudVBsYWNlbWVudCIsImFsaWduRW5kIiwiZHJvcERpcmVjdGlvbiIsImlzUlRMIiwiYWxpZ24iLCJzaG93UHJvcHMiLCJyZW5kZXJPbk1vdW50IiwiaXNOYXZiYXIiLCJOYXZiYXJDb250ZXh0IiwiY29udGV4dEFsaWduIiwiZHJvcCIsImlzSW5wdXRHcm91cCIsIklucHV0R3JvdXBDb250ZXh0IiwiYWxpZ25DbGFzc2VzIiwiYnJrUG9pbnQiLCJ1c2VJc29tb3JwaGljRWZmZWN0IiwiY2xvc2UiLCJjaGlsZEJzUHJlZml4IiwiZHJvcGRvd25Db250ZXh0IiwidG9nZ2xlUHJvcHMiLCJEcm9wZG93bkhlYWRlciIsIkRyb3Bkb3duRGl2aWRlciIsIkRyb3Bkb3duSXRlbVRleHQiLCJwUHJvcHMiLCJuYXZiYXIiLCJfNCIsImF1dG9DbG9zZSIsImRpciIsInVzZUlzUlRMIiwiaGFuZGxlVG9nZ2xlIiwiY29udGV4dFZhbHVlIiwiZGlyZWN0aW9uQ2xhc3NlcyIsImRvd24iLCJ1cCIsIkl0ZW1UZXh0IiwiRGl2aWRlciIsIkhlYWRlciIsInVzZU5hdkl0ZW0iLCJwYXJlbnRPblNlbGVjdCIsInRhYkNvbnRleHQiLCJjb250ZXh0Q29udHJvbGxlcklkIiwiZ2V0Q29udHJvbGxlcklkIiwiY29udGV4dENvbnRyb2xsZWRJZCIsImdldENvbnRyb2xsZWRJZCIsIk5hdkl0ZW0iLCJOYXZMaW5rIiwibmF2SXRlbVByb3BzIiwiTmF2RHJvcGRvd24iLCJtZW51Um9sZSIsInJlbmRlck1lbnVPbk1vdW50IiwibWVudVZhcmlhbnQiLCJuYXZJdGVtUHJlZml4IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJhcnIiLCJhcnIyIiwiVXNlckNvbXBvbmVudCIsIm9uTG9naW4iLCJvbkxvZ291dCIsIl9hcnJheVdpdGhIb2xlcyIsIl9zIiwiX2UiLCJfciIsIl9hcnIiLCJfbiIsIl9kIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiZnJvbSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJjb21wb25lbnQiLCJzZXRDb21wb25lbnQiLCJzaG93X2NvbXBvbmVudCIsInNob3dfbG9naW5fZm9ybSIsImxvZ291dF9jYWxsYmFjayIsIl9zZXJ2aWNlIiwibG9nb3V0IiwidDAiLCJzaG93X3Nlc3Npb25faW5mbyIsInNlc3Npb25faW5mbyIsIl9Vc2VyQ29tcG9uZW50IiwibG9naW5fZmFpbCIsImxvZ2luX3N1Y2Nlc3MiLCJnZXRTZXNzaW9uSW5mbyIsIkJyYW5kaW5nIiwiRVZFTlRfS0VZX0FUVFIiLCJOYXYiLCJuZWVkc1JlZm9jdXNSZWYiLCJsaXN0Tm9kZSIsImdldE5leHRBY3RpdmVUYWIiLCJjdXJyZW50TGlzdE5vZGUiLCJhY3RpdmVDaGlsZCIsIm5leHRJbmRleCIsIm5leHRBY3RpdmVDaGlsZCIsImluaXRpYWxCc1ByZWZpeCIsImZpbGwiLCJqdXN0aWZ5IiwibmF2YmFyU2Nyb2xsIiwibmF2YmFyQnNQcmVmaXgiLCJjYXJkSGVhZGVyQnNQcmVmaXgiLCJuYXZiYXJDb250ZXh0IiwiY2FyZEhlYWRlckNvbnRleHQiLCJDYXJkSGVhZGVyQ29udGV4dCIsIk5hdmJhckJyYW5kIiwiZnVuY3MiLCJNQVJHSU5TIiwiZ2V0RGVmYXVsdERpbWVuc2lvblZhbHVlIiwiZGltZW5zaW9uIiwiZWxlbSIsIm1hcmdpbnMiLCJjb2xsYXBzZVN0eWxlcyIsImluUHJvcCIsImdldERpbWVuc2lvblZhbHVlIiwiY29tcHV0ZWREaW1lbnNpb24iLCJOYXZiYXJDb2xsYXBzZSIsImV4cGFuZGVkIiwiTmF2YmFyVG9nZ2xlIiwibGFiZWwiLCJtYXRjaGVyc0J5V2luZG93IiwiZ2V0TWF0Y2hlciIsInF1ZXJ5IiwidGFyZ2V0V2luZG93IiwibWF0Y2hlcnMiLCJtcWwiLCJtYXRjaE1lZGlhIiwicmVmQ291bnQiLCJ1c2VNZWRpYVF1ZXJ5IiwibWF0Y2hlcyIsInNldE1hdGNoZXMiLCJoYW5kbGVDaGFuZ2UiLCJhZGRMaXN0ZW5lciIsInJlbW92ZUxpc3RlbmVyIiwiYnJlYWtwb2ludFZhbHVlcyIsIm5hbWVzIiwiYW5kIiwiYnJlYWtwb2ludE9yTWFwIiwiYnJlYWtwb2ludE1hcCIsIl9icmVha3BvaW50TWFwIiwiZW50cmllcyIsImJyZWFrcG9pbnQiLCJnZXROZXh0IiwiZ2V0TWF4UXVlcnkiLCJjcmVhdGVCcmVha3BvaW50SG9vayIsInhzIiwic20iLCJ4bCIsInh4bCIsIk9QRU5fREFUQV9BVFRSSUJVVEUiLCJoYW5kbGVDb250YWluZXJPdmVyZmxvdyIsIm1vZGFscyIsImdldFNjcm9sbGJhcldpZHRoIiwiaW5uZXJXaWR0aCIsImdldEJvZHlTY3JvbGxiYXJXaWR0aCIsImdldEVsZW1lbnQiLCJzZXRNb2RhbEF0dHJpYnV0ZXMiLCJfbW9kYWwiLCJyZW1vdmVNb2RhbEF0dHJpYnV0ZXMiLCJzZXRDb250YWluZXJTdHlsZSIsImNvbnRhaW5lclN0YXRlIiwicGFkZGluZ1Byb3AiLCJjb250YWluZXIiLCJzY3JvbGxCYXJXaWR0aCIsInJlbW92ZUNvbnRhaW5lclN0eWxlIiwibW9kYWwiLCJtb2RhbElkeCIsImlzVG9wTW9kYWwiLCJyZXNvbHZlQ29udGFpbmVyUmVmIiwiaGFzRW50ZXJlZFJlZiIsImNvbWJpbmVkUmVmIiwiY2xvbmVFbGVtZW50IiwiSW1wZXJhdGl2ZVRyYW5zaXRpb24iLCJleGl0ZWQiLCJzZXRFeGl0ZWQiLCJvblRyYW5zaXRpb24iLCJpc0luaXRpYWxSZWYiLCJoYW5kbGVUcmFuc2l0aW9uIiwic3RhbGUiLCJpbml0aWFsIiwiaXNTdGFsZSIsInJlbmRlclRyYW5zaXRpb24iLCJydW5UcmFuc2l0aW9uIiwibWFuYWdlciIsIk1vZGFsIiwiZm9yd2FyZFJlZiIsImJhY2tkcm9wIiwia2V5Ym9hcmQiLCJvbkJhY2tkcm9wQ2xpY2siLCJvbkVzY2FwZUtleURvd24iLCJiYWNrZHJvcFRyYW5zaXRpb24iLCJydW5CYWNrZHJvcFRyYW5zaXRpb24iLCJlbmZvcmNlRm9jdXMiLCJyZXN0b3JlRm9jdXMiLCJyZXN0b3JlRm9jdXNPcHRpb25zIiwicmVuZGVyRGlhbG9nIiwicmVuZGVyQmFja2Ryb3AiLCJwcm92aWRlZE1hbmFnZXIiLCJjb250YWluZXJSZWYiLCJvblNob3ciLCJvbkhpZGUiLCJvblJlc29sdmVkIiwicmVzb2x2ZWRSZWYiLCJzZXRSZWYiLCJlYXJseVJlZiIsIm5leHRSZWYiLCJ1c2VXYWl0Rm9yRE9NUmVmIiwicHJvdmlkZWQiLCJtb2RhbE1hbmFnZXIiLCJnZXRNYW5hZ2VyIiwiZGlhbG9nIiwic2V0RGlhbG9nUmVmIiwic2V0QmFja2Ryb3BSZWYiLCJ1c2VNb2RhbE1hbmFnZXIiLCJwcmV2U2hvdyIsImxhc3RGb2N1c1JlZiIsImhhbmRsZVNob3ciLCJyZW1vdmVLZXlkb3duTGlzdGVuZXJSZWYiLCJoYW5kbGVEb2N1bWVudEtleURvd24iLCJyZW1vdmVGb2N1c0xpc3RlbmVyUmVmIiwiaGFuZGxlRW5mb3JjZUZvY3VzIiwiY3VycmVudEFjdGl2ZUVsZW1lbnQiLCJoYW5kbGVIaWRlIiwiX2xhc3RGb2N1c1JlZiRjdXJyZW50IiwidmFsdWVSZWYiLCJvblVubW91bnQiLCJoYW5kbGVCYWNrZHJvcENsaWNrIiwiaXNFc2NLZXkiLCJkaWFsb2dQcm9wcyIsImJhY2tkcm9wRWxlbWVudCIsIk1hbmFnZXIiLCJ0cmFuc2l0aW9uU3R5bGVzIiwiT2ZmY2FudmFzVG9nZ2xpbmciLCJBYnN0cmFjdE1vZGFsSGVhZGVyIiwiY2xvc2VCdXR0b24iLCJPZmZjYW52YXNIZWFkZXIiLCJyZXBsYWNlQ2xhc3NOYW1lIiwib3JpZ0NsYXNzIiwiY2xhc3NUb1JlbW92ZSIsIlNlbGVjdG9yIiwiQm9vdHN0cmFwTW9kYWxNYW5hZ2VyIiwiYWRqdXN0QW5kU3RvcmUiLCJhZGp1c3QiLCJhY3R1YWwiLCJyZXN0b3JlIiwic3VwZXIiLCJjbGFzc0xpc3QiLCJiYXNlVmFsIiwiaGFzQ2xhc3MiLCJtYXJnaW5Qcm9wIiwic2hhcmVkTWFuYWdlciIsIkRpYWxvZ1RyYW5zaXRpb24iLCJCYWNrZHJvcFRyYW5zaXRpb24iLCJPZmZjYW52YXMiLCJhcmlhTGFiZWxsZWRieSIsInJlc3BvbnNpdmUiLCJiYWNrZHJvcENsYXNzTmFtZSIsInByb3BzTWFuYWdlciIsInJlbmRlclN0YXRpY05vZGUiLCJzaG93T2ZmY2FudmFzIiwic2V0U2hvd09mZmNhbnZhcyIsImhpZGVSZXNwb25zaXZlT2ZmY2FudmFzIiwibW9kYWxDb250ZXh0IiwiYmFja2Ryb3BQcm9wcyIsImdldFNoYXJlZE1hbmFnZXIiLCJCb2R5IiwiT2ZmY2FudmFzQm9keSIsIlRpdGxlIiwiT2ZmY2FudmFzVGl0bGUiLCJOYXZiYXJPZmZjYW52YXMiLCJOYXZiYXJUZXh0IiwiTmF2YmFyIiwiZXhwYW5kIiwic3RpY2t5IiwiY29sbGFwc2VPblNlbGVjdCIsImNvbnRyb2xsZWRQcm9wcyIsImhhbmRsZUNvbGxhcHNlIiwiZXhwYW5kQ2xhc3MiLCJCcmFuZCIsIkNvbGxhcHNlIiwiVGV4dCIsIkNvbnRhaW5lciIsImZsdWlkIiwic3VmZml4IiwiQ1FMX1dPUkRTIiwicHJlcGFyZVRlcm1zIiwidGVybXMiLCJ0ZXJtIiwidGVybV9lc2NhcGVkIiwib3JpZ2luYWwiLCJub3JtYWxpemVkIiwiZXNjYXBlZCIsInByZXBhcmVDcWxXb3JkcyIsIndvcmRzIiwid29yZCIsIkF1dG9Db21wbGV0aW9uIiwiY3FsX3dvcmRzIiwiX2NxbF93b3JkcyIsIl90ZXJtcyIsIl9yZXNvbHZlZF90ZXJtcyIsIl9nZXRDcWxTdWdnZXN0aW9ucyIsIl9nZXRTZWFyY2hUZXJtU3VnZ2VzdGlvbnMiLCJfZ2V0VGVybXMyIiwiX2RvX3Jlc29sdmVfdGVybXMyIiwiX2dldFN1Z2dlc3Rpb25zIiwiaXNDcWwiLCJmdWxsUXVlcnkiLCJnZXRDcWxTdWdnZXN0aW9ucyIsImdldFNlYXJjaFRlcm1TdWdnZXN0aW9ucyIsInJlc29sdmVkX3Rlcm1zIiwiX3g0IiwiX2RvX3Jlc29sdmVfdGVybXMiLCJfY2FsbGVlNCIsIndvcmROb3JtYWxpemVkIiwiX2NvbnRleHQ0IiwiX2dldFRlcm1zIiwic3RhcnRzV2l0aCIsIl94NSIsIl94NiIsIl9jYWxsZWU1IiwiX2NvbnRleHQ1IiwidDEiLCJfeDciLCJfeDgiLCJpc1NlbGVjdCIsInRyYW5zbGF0b3IiLCJlcXVhbHMiLCJhbGxvd2VkX29wZXJhdG9ycyIsImJvb2xlYW4iLCJpbnRlZ2VyIiwiZG91YmxlIiwibWFrZV9xdWVyeV9maWx0ZXIiLCJvcGVyYXRvciIsInVuaXQiLCJfZGVmYXVsdCIsInF1b3RlcyIsIm1ha2VRdWVyeVRlbXBsYXRlIiwicmVjb3JkX3R5cGUiLCJzZWFyY2hfdGVybXMiLCJhY3RpdmVGaWx0ZXJzIiwiZmlsdGVyX2Nvbm5lY3RvciIsInNwbGl0dGVkX3NlYXJjaF90ZXJtcyIsInNwbGl0U2VhcmNoVGVybXMiLCJyZXBsYWNlQWxsIiwiZmlsdGVycyIsImRhdGF0eXBlIiwibWFrZVF1ZXJ5RmlsdGVyIiwiX3NwbGl0U2VhcmNoVGVybXNQYXR0ZXJuIiwiX3dyYXBSZWdFeHAiLCJkcSIsInNxIiwibnEiLCJtYXRjaEFsbCIsImNyZWF0ZVRhYiIsInJlY29yZFR5cGUiLCJkZXNjcmlwdGlvbiIsIm1ha2VRdWVyeUNhbGxiYWNrIiwiZmlsdGVyRGVmaW5pdGlvbnMiLCJtYWtlUXVlcnkiLCJnZXRfdGVzdF9zdWdnZXN0aW9ucyIsIl9jYWxsZWU2IiwiZnVsbCIsIl9jb250ZXh0NiIsImdldFN1Z2dlc3Rpb25zIiwiX3g5IiwiX3gxMCIsIl94MTEiLCJtYWtlRmlsdGVyRGVmaW5pdGlvbnMiLCJRdWVyeUZvcm1Db250ZXh0IiwiUmFuZ2VGaWx0ZXJJbnB1dCIsIm9uQ2hhbmdlTWluIiwibmV3RSIsIm9uQ2hhbmdlTWF4IiwiX2V4dGVuZHMiLCJ1bml0RWxlbWVudCIsIkZpbHRlcklucHV0Iiwic3RlcCIsImlucHV0dHlwZSIsImlucHV0RWxlbWVudCIsIkNxbEhpbnQiLCJRdWVyeUZvcm1TaW5nbGVUYWIiLCJ0YWIiLCJzZXRBY3RpdmVUYWIiLCJpc0FjdGl2ZVRhYiIsImFjdGl2YXRlVGFiIiwiQWRkVGFiRmlsdGVyT3BlcmF0b3IiLCJmaWx0ZXJJZHgiLCJ1cGRhdGVGaWx0ZXIiLCJyZXN0b3JlT3BlcmF0b3IiLCJyZXN0b3JlVmFsdWUiLCJfc2xpY2VkVG9BcnJheSIsInNldE9wZXJhdG9yIiwiX3VzZVN0YXRlNCIsIm9wIiwiaWR4IiwiRmlsdGVyU2VsZWN0IiwiZmlsIiwiQWRkRmlsdGVyIiwiYWRkRmlsdGVyIiwiRmlsdGVyIiwiX3JlZjYiLCJyZW1vdmVGaWx0ZXIiLCJhY3RpdmVGaWx0ZXIiLCJyZW1vdmVUaGlzIiwiUXVlcnlGb3JtVGFiRmlsdGVyc0lubmVyIiwiX3JlZjciLCJzZXRBY3RpdmVGaWx0ZXJzIiwibmV3QWN0aXZlRmlsdGVycyIsIl9vYmplY3RTcHJlYWQiLCJwcm9wZXJ0eUZpbHRlciIsIlF1ZXJ5Rm9ybVRhYkZpbHRlcnMiLCJfcmVmOCIsIl91c2VTdGF0ZTYiLCJzaG93RmlsdGVycyIsInNldFNob3dGaWx0ZXJzIiwiUXVlcnlGb3JtVGFicyIsIl9yZWY5IiwidGFicyIsImFjdGl2ZVRhYiIsImhhc0ZpbHRlcnMiLCJRdWVyeVN1Ym1pdEJ1dHRvbiIsIl9yZWYxMCIsImlzU3VibWl0dGVkIiwiU2luZ2xlUXVlcnlGb3JtU3VnZ2VzdGlvbnNJdGVtIiwiX3JlZjExIiwic3VnZ2VzdGlvbiIsImlzSGlnaGxpZ2h0ZWQiLCJvbk1vdXNlRW50ZXIiLCJRdWVyeUZvcm1TdWdnZXN0aW9uc0l0ZW1zIiwiX3JlZjEyIiwic3VnZ2VzdGlvbnMiLCJoaWdobGlnaHRJbmRleCIsInNlbGVjdFN1Z2dlc3Rpb24iLCJzdWciLCJRdWVyeUZvcm1TdWdnZXN0aW9ucyIsIl9yZWYxMyIsInVuc2VsZWN0U3VnZ2VzdGlvbnMiLCJnZXRJbnB1dFJlZiIsIndvcmRQb3MiLCJ4T2Zmc2V0IiwiaW5wdXRSZWYiLCJjb29yZHMiLCJpbnB1dFdpZHRoIiwicmlnaHRPZmZzZXQiLCJtYXJnaW5MZWZ0Iiwib25Nb3VzZUxlYXZlIiwicGFkZGluZ0xlZnQiLCJyZWR1Y2VyIiwiY3Vyc29yX3BvcyIsIndvcmRfcG9zIiwib3BlbiIsInVucmVzb2x2ZWRfc3VnZ2VzdGlvbnMiLCJyZWZvY3VzIiwib25DbGlja1ZhbHVlIiwiY3Vyc29yUG9zIiwib25DbGlja0N1cnNvclBvcyIsImxhc3RJbmRleE9mIiwiZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjayIsImZJc0NxbCIsImN1cnNvclBvc05vQ29tcGxldGlvbiIsInZhbHVlTm9Db21wbGV0aW9uIiwidW5yZXNvbHZlZFN1Z2dlc3Rpb25zIiwibmV3SGlnaGxpZ2h0SW5kZXgiLCJuZXdWYWx1ZSIsIm5ld0N1cnNvclBvcyIsIlF1ZXJ5Rm9ybVRleHRGaWVsZCIsIl9yZWYxNCIsInNldFF1ZXJ5U3RyaW5nIiwicmVzdG9yZVF1ZXJ5U3RyaW5nIiwiX3VzZUNvbnRleHQiLCJfdXNlUmVkdWNlcjIiLCJvbkZvY3VzIiwib25BcnJvd1VwIiwib25BcnJvd0Rvd24iLCJzZXRTZWxlY3Rpb25SYW5nZSIsIlF1ZXJ5Rm9ybSIsIl9yZWYxNSIsInN1Ym1pdENhbGxiYWNrIiwiZGVmYXVsdFRhYiIsInJlc3RvcmVDYWxsYmFjayIsInN0b3JlQ2FsbGJhY2siLCJfcmVmMTYiLCJyZXN0b3JlQWN0aXZlRmlsdGVycyIsInJlc3RvcmVBY3RpdmVUYWIiLCJfdXNlU3RhdGU4Iiwic2V0SXNTdWJtaXR0ZWQiLCJfdXNlU3RhdGUxMCIsInF1ZXJ5U3RyaW5nIiwiX3VzZVN0YXRlMTIiLCJfdXNlU3RhdGUxNCIsImFjdGl2ZVRhYkRlZiIsImZJc1NlbGVjdCIsInBhZ2VTaXplIiwic2V0QWN0aXZlVGFiUmVzZXRGaWx0ZXJzIiwibG9jYWxTdG9yYWdlIiwicGFyc2UiLCJyZW1vdmVJdGVtIiwibGFzdFF1ZXJ5Rm9ybUhlaWdodCIsInNjcm9sbERvd25UaW1lb3V0IiwidG9nZ2xlUXVlcnlQYW5lbCIsIl9jb250YWluZXIkZ2V0Qm91bmRpbiIsIlF1ZXJ5UGFuZWwiLCJzY3JvbGxIYW5kbGVyIiwiTmF2aWdhdGlvbk1hbmFnZXIiLCJOYXZpZ2F0aW9uTWFuYWdlckltcGwiLCJ1c2VyX2NvbXBvbmVudCIsInVwZGF0ZV9saXN0ZW5lcnMiLCJub3RpZnlVcGRhdGVMaXN0ZW5lcnMiLCJUb3BOYXZpZ2F0aW9uQmFyIiwicGFuZWxSZWYiLCJGb290ZXJNYW5hZ2VyIiwiX2NyZWF0ZUNsYXNzIiwiRm9vdGVyTWFuYWdlckltcGwiLCJjb3B5UmlnaHQiLCJGb290ZXIiLCJzcGFjZXIiLCJBd2FpdCIsImxvYWRpbmciLCJ0aGVQcm9taXNlIiwicHJvbWlzZSIsImRvQ2F0Y2giLCJDaGVja2JveCIsImljb25zIiwicmVhZE9ubHkiLCJpY29uQ2xhc3NOYW1lTWFwIiwidHJ1ZSIsImZhbHNlIiwicGFydGlhbCIsIkNhcmQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///787\n')},818:module=>{eval('!function(e,t){ true?module.exports=t():0}(self,(function(){return(()=>{var __webpack_modules__={661:(e,t,o)=>{var r={};r.v1=o(958),t.h=r},958:(e,t,o)=>{var r={};r.web=o(40);var n={caosdb:{}};n.caosdb.info={},n.caosdb.info.v1=o(988),n.caosdb.info.v1.GeneralInfoServiceClient=function(e,t,o){o||(o={}),o.format="text",this.client_=new r.web.GrpcWebClientBase(o),this.hostname_=e},n.caosdb.info.v1.GeneralInfoServicePromiseClient=function(e,t,o){o||(o={}),o.format="text",this.client_=new r.web.GrpcWebClientBase(o),this.hostname_=e};var s=new r.web.MethodDescriptor("/caosdb.info.v1.GeneralInfoService/GetVersionInfo",r.web.MethodType.UNARY,n.caosdb.info.v1.GetVersionInfoRequest,n.caosdb.info.v1.GetVersionInfoResponse,(function(e){return e.serializeBinary()}),n.caosdb.info.v1.GetVersionInfoResponse.deserializeBinary);n.caosdb.info.v1.GeneralInfoServiceClient.prototype.getVersionInfo=function(e,t,o){return this.client_.rpcCall(this.hostname_+"/caosdb.info.v1.GeneralInfoService/GetVersionInfo",e,t||{},s,o)},n.caosdb.info.v1.GeneralInfoServicePromiseClient.prototype.getVersionInfo=function(e,t){return this.client_.unaryCall(this.hostname_+"/caosdb.info.v1.GeneralInfoService/GetVersionInfo",e,t||{},s)};var i=new r.web.MethodDescriptor("/caosdb.info.v1.GeneralInfoService/GetSessionInfo",r.web.MethodType.UNARY,n.caosdb.info.v1.GetSessionInfoRequest,n.caosdb.info.v1.GetSessionInfoResponse,(function(e){return e.serializeBinary()}),n.caosdb.info.v1.GetSessionInfoResponse.deserializeBinary);n.caosdb.info.v1.GeneralInfoServiceClient.prototype.getSessionInfo=function(e,t,o){return this.client_.rpcCall(this.hostname_+"/caosdb.info.v1.GeneralInfoService/GetSessionInfo",e,t||{},i,o)},n.caosdb.info.v1.GeneralInfoServicePromiseClient.prototype.getSessionInfo=function(e,t){return this.client_.unaryCall(this.hostname_+"/caosdb.info.v1.GeneralInfoService/GetSessionInfo",e,t||{},i)},e.exports=n.caosdb.info.v1},988:(e,t,o)=>{var r=o(19),n=r,s=Function("return this")();n.exportSymbol("proto.caosdb.info.v1.GetSessionInfoRequest",null,s),n.exportSymbol("proto.caosdb.info.v1.GetSessionInfoResponse",null,s),n.exportSymbol("proto.caosdb.info.v1.GetVersionInfoRequest",null,s),n.exportSymbol("proto.caosdb.info.v1.GetVersionInfoResponse",null,s),n.exportSymbol("proto.caosdb.info.v1.VersionInfo",null,s),proto.caosdb.info.v1.VersionInfo=function(e){r.Message.initialize(this,e,0,-1,null,null)},n.inherits(proto.caosdb.info.v1.VersionInfo,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.VersionInfo.displayName="proto.caosdb.info.v1.VersionInfo"),proto.caosdb.info.v1.GetVersionInfoRequest=function(e){r.Message.initialize(this,e,0,-1,null,null)},n.inherits(proto.caosdb.info.v1.GetVersionInfoRequest,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.GetVersionInfoRequest.displayName="proto.caosdb.info.v1.GetVersionInfoRequest"),proto.caosdb.info.v1.GetVersionInfoResponse=function(e){r.Message.initialize(this,e,0,-1,null,null)},n.inherits(proto.caosdb.info.v1.GetVersionInfoResponse,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.GetVersionInfoResponse.displayName="proto.caosdb.info.v1.GetVersionInfoResponse"),proto.caosdb.info.v1.GetSessionInfoRequest=function(e){r.Message.initialize(this,e,0,-1,null,null)},n.inherits(proto.caosdb.info.v1.GetSessionInfoRequest,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.GetSessionInfoRequest.displayName="proto.caosdb.info.v1.GetSessionInfoRequest"),proto.caosdb.info.v1.GetSessionInfoResponse=function(e){r.Message.initialize(this,e,0,-1,proto.caosdb.info.v1.GetSessionInfoResponse.repeatedFields_,null)},n.inherits(proto.caosdb.info.v1.GetSessionInfoResponse,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.GetSessionInfoResponse.displayName="proto.caosdb.info.v1.GetSessionInfoResponse"),r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.VersionInfo.prototype.toObject=function(e){return proto.caosdb.info.v1.VersionInfo.toObject(e,this)},proto.caosdb.info.v1.VersionInfo.toObject=function(e,t){var o={major:r.Message.getFieldWithDefault(t,1,0),minor:r.Message.getFieldWithDefault(t,2,0),patch:r.Message.getFieldWithDefault(t,3,0),preRelease:r.Message.getFieldWithDefault(t,4,""),build:r.Message.getFieldWithDefault(t,5,"")};return e&&(o.$jspbMessageInstance=t),o}),proto.caosdb.info.v1.VersionInfo.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.VersionInfo;return proto.caosdb.info.v1.VersionInfo.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.VersionInfo.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)switch(t.getFieldNumber()){case 1:var o=t.readInt32();e.setMajor(o);break;case 2:o=t.readInt32(),e.setMinor(o);break;case 3:o=t.readInt32(),e.setPatch(o);break;case 4:o=t.readString(),e.setPreRelease(o);break;case 5:o=t.readString(),e.setBuild(o);break;default:t.skipField()}return e},proto.caosdb.info.v1.VersionInfo.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.VersionInfo.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.VersionInfo.serializeBinaryToWriter=function(e,t){var o=void 0;0!==(o=e.getMajor())&&t.writeInt32(1,o),0!==(o=e.getMinor())&&t.writeInt32(2,o),0!==(o=e.getPatch())&&t.writeInt32(3,o),(o=e.getPreRelease()).length>0&&t.writeString(4,o),(o=e.getBuild()).length>0&&t.writeString(5,o)},proto.caosdb.info.v1.VersionInfo.prototype.getMajor=function(){return r.Message.getFieldWithDefault(this,1,0)},proto.caosdb.info.v1.VersionInfo.prototype.setMajor=function(e){return r.Message.setProto3IntField(this,1,e)},proto.caosdb.info.v1.VersionInfo.prototype.getMinor=function(){return r.Message.getFieldWithDefault(this,2,0)},proto.caosdb.info.v1.VersionInfo.prototype.setMinor=function(e){return r.Message.setProto3IntField(this,2,e)},proto.caosdb.info.v1.VersionInfo.prototype.getPatch=function(){return r.Message.getFieldWithDefault(this,3,0)},proto.caosdb.info.v1.VersionInfo.prototype.setPatch=function(e){return r.Message.setProto3IntField(this,3,e)},proto.caosdb.info.v1.VersionInfo.prototype.getPreRelease=function(){return r.Message.getFieldWithDefault(this,4,"")},proto.caosdb.info.v1.VersionInfo.prototype.setPreRelease=function(e){return r.Message.setProto3StringField(this,4,e)},proto.caosdb.info.v1.VersionInfo.prototype.getBuild=function(){return r.Message.getFieldWithDefault(this,5,"")},proto.caosdb.info.v1.VersionInfo.prototype.setBuild=function(e){return r.Message.setProto3StringField(this,5,e)},r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.GetVersionInfoRequest.prototype.toObject=function(e){return proto.caosdb.info.v1.GetVersionInfoRequest.toObject(e,this)},proto.caosdb.info.v1.GetVersionInfoRequest.toObject=function(e,t){var o={};return e&&(o.$jspbMessageInstance=t),o}),proto.caosdb.info.v1.GetVersionInfoRequest.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.GetVersionInfoRequest;return proto.caosdb.info.v1.GetVersionInfoRequest.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.GetVersionInfoRequest.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)t.getFieldNumber(),t.skipField();return e},proto.caosdb.info.v1.GetVersionInfoRequest.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.GetVersionInfoRequest.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.GetVersionInfoRequest.serializeBinaryToWriter=function(e,t){},r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.GetVersionInfoResponse.prototype.toObject=function(e){return proto.caosdb.info.v1.GetVersionInfoResponse.toObject(e,this)},proto.caosdb.info.v1.GetVersionInfoResponse.toObject=function(e,t){var o,r={versionInfo:(o=t.getVersionInfo())&&proto.caosdb.info.v1.VersionInfo.toObject(e,o)};return e&&(r.$jspbMessageInstance=t),r}),proto.caosdb.info.v1.GetVersionInfoResponse.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.GetVersionInfoResponse;return proto.caosdb.info.v1.GetVersionInfoResponse.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.GetVersionInfoResponse.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)if(1===t.getFieldNumber()){var o=new proto.caosdb.info.v1.VersionInfo;t.readMessage(o,proto.caosdb.info.v1.VersionInfo.deserializeBinaryFromReader),e.setVersionInfo(o)}else t.skipField();return e},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.GetVersionInfoResponse.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.GetVersionInfoResponse.serializeBinaryToWriter=function(e,t){var o;null!=(o=e.getVersionInfo())&&t.writeMessage(1,o,proto.caosdb.info.v1.VersionInfo.serializeBinaryToWriter)},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.getVersionInfo=function(){return r.Message.getWrapperField(this,proto.caosdb.info.v1.VersionInfo,1)},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.setVersionInfo=function(e){return r.Message.setWrapperField(this,1,e)},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.clearVersionInfo=function(){return this.setVersionInfo(void 0)},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.hasVersionInfo=function(){return null!=r.Message.getField(this,1)},r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.GetSessionInfoRequest.prototype.toObject=function(e){return proto.caosdb.info.v1.GetSessionInfoRequest.toObject(e,this)},proto.caosdb.info.v1.GetSessionInfoRequest.toObject=function(e,t){var o={};return e&&(o.$jspbMessageInstance=t),o}),proto.caosdb.info.v1.GetSessionInfoRequest.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.GetSessionInfoRequest;return proto.caosdb.info.v1.GetSessionInfoRequest.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.GetSessionInfoRequest.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)t.getFieldNumber(),t.skipField();return e},proto.caosdb.info.v1.GetSessionInfoRequest.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.GetSessionInfoRequest.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.GetSessionInfoRequest.serializeBinaryToWriter=function(e,t){},proto.caosdb.info.v1.GetSessionInfoResponse.repeatedFields_=[3,5],r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.GetSessionInfoResponse.prototype.toObject=function(e){return proto.caosdb.info.v1.GetSessionInfoResponse.toObject(e,this)},proto.caosdb.info.v1.GetSessionInfoResponse.toObject=function(e,t){var o,n={realm:r.Message.getFieldWithDefault(t,1,""),username:r.Message.getFieldWithDefault(t,2,""),rolesList:null==(o=r.Message.getRepeatedField(t,3))?void 0:o,expires:r.Message.getFieldWithDefault(t,4,0),permissionsList:null==(o=r.Message.getRepeatedField(t,5))?void 0:o};return e&&(n.$jspbMessageInstance=t),n}),proto.caosdb.info.v1.GetSessionInfoResponse.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.GetSessionInfoResponse;return proto.caosdb.info.v1.GetSessionInfoResponse.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.GetSessionInfoResponse.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)switch(t.getFieldNumber()){case 1:var o=t.readString();e.setRealm(o);break;case 2:o=t.readString(),e.setUsername(o);break;case 3:o=t.readString(),e.addRoles(o);break;case 4:o=t.readInt64(),e.setExpires(o);break;case 5:o=t.readString(),e.addPermissions(o);break;default:t.skipField()}return e},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.GetSessionInfoResponse.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.GetSessionInfoResponse.serializeBinaryToWriter=function(e,t){var o=void 0;(o=e.getRealm()).length>0&&t.writeString(1,o),(o=e.getUsername()).length>0&&t.writeString(2,o),(o=e.getRolesList()).length>0&&t.writeRepeatedString(3,o),0!==(o=e.getExpires())&&t.writeInt64(4,o),(o=e.getPermissionsList()).length>0&&t.writeRepeatedString(5,o)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getRealm=function(){return r.Message.getFieldWithDefault(this,1,"")},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setRealm=function(e){return r.Message.setProto3StringField(this,1,e)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getUsername=function(){return r.Message.getFieldWithDefault(this,2,"")},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setUsername=function(e){return r.Message.setProto3StringField(this,2,e)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getRolesList=function(){return r.Message.getRepeatedField(this,3)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setRolesList=function(e){return r.Message.setField(this,3,e||[])},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.addRoles=function(e,t){return r.Message.addToRepeatedField(this,3,e,t)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.clearRolesList=function(){return this.setRolesList([])},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getExpires=function(){return r.Message.getFieldWithDefault(this,4,0)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setExpires=function(e){return r.Message.setProto3IntField(this,4,e)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getPermissionsList=function(){return r.Message.getRepeatedField(this,5)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setPermissionsList=function(e){return r.Message.setField(this,5,e||[])},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.addPermissions=function(e,t){return r.Message.addToRepeatedField(this,5,e,t)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.clearPermissionsList=function(){return this.setPermissionsList([])},n.object.extend(t,proto.caosdb.info.v1)},19:function(__unused_webpack_module,exports,__nested_webpack_require_14101__){var $jscomp=$jscomp||{};$jscomp.scope={},$jscomp.findInternal=function(e,t,o){e instanceof String&&(e=String(e));for(var r=e.length,n=0;n<r;n++){var s=e[n];if(t.call(o,s,n,e))return{i:n,v:s}}return{i:-1,v:void 0}},$jscomp.ASSUME_ES5=!1,$jscomp.ASSUME_NO_NATIVE_MAP=!1,$jscomp.ASSUME_NO_NATIVE_SET=!1,$jscomp.SIMPLE_FROUND_POLYFILL=!1,$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(e,t,o){e!=Array.prototype&&e!=Object.prototype&&(e[t]=o.value)},$jscomp.getGlobal=function(e){return"undefined"!=typeof window&&window===e?e:void 0!==__nested_webpack_require_14101__.g&&null!=__nested_webpack_require_14101__.g?__nested_webpack_require_14101__.g:e},$jscomp.global=$jscomp.getGlobal(this),$jscomp.polyfill=function(e,t,o,r){if(t){for(o=$jscomp.global,e=e.split("."),r=0;r<e.length-1;r++){var n=e[r];n in o||(o[n]={}),o=o[n]}(t=t(r=o[e=e[e.length-1]]))!=r&&null!=t&&$jscomp.defineProperty(o,e,{configurable:!0,writable:!0,value:t})}},$jscomp.polyfill("Array.prototype.findIndex",(function(e){return e||function(e,t){return $jscomp.findInternal(this,e,t).i}}),"es6","es3"),$jscomp.checkStringArgs=function(e,t,o){if(null==e)throw new TypeError("The \'this\' value for String.prototype."+o+" must not be null or undefined");if(t instanceof RegExp)throw new TypeError("First argument to String.prototype."+o+" must not be a regular expression");return e+""},$jscomp.polyfill("String.prototype.endsWith",(function(e){return e||function(e,t){var o=$jscomp.checkStringArgs(this,e,"endsWith");e+="",void 0===t&&(t=o.length),t=Math.max(0,Math.min(0|t,o.length));for(var r=e.length;0<r&&0<t;)if(o[--t]!=e[--r])return!1;return 0>=r}}),"es6","es3"),$jscomp.polyfill("Array.prototype.find",(function(e){return e||function(e,t){return $jscomp.findInternal(this,e,t).v}}),"es6","es3"),$jscomp.polyfill("String.prototype.startsWith",(function(e){return e||function(e,t){var o=$jscomp.checkStringArgs(this,e,"startsWith");e+="";var r=o.length,n=e.length;t=Math.max(0,Math.min(0|t,o.length));for(var s=0;s<n&&t<r;)if(o[t++]!=e[s++])return!1;return s>=n}}),"es6","es3"),$jscomp.polyfill("String.prototype.repeat",(function(e){return e||function(e){var t=$jscomp.checkStringArgs(this,null,"repeat");if(0>e||1342177279<e)throw new RangeError("Invalid count value");e|=0;for(var o="";e;)1&e&&(o+=t),(e>>>=1)&&(t+=t);return o}}),"es6","es3");var COMPILED=!0,goog=goog||{};goog.global=this||self,goog.isDef=function(e){return void 0!==e},goog.isString=function(e){return"string"==typeof e},goog.isBoolean=function(e){return"boolean"==typeof e},goog.isNumber=function(e){return"number"==typeof e},goog.exportPath_=function(e,t,o){e=e.split("."),o=o||goog.global,e[0]in o||void 0===o.execScript||o.execScript("var "+e[0]);for(var r;e.length&&(r=e.shift());)!e.length&&goog.isDef(t)?o[r]=t:o=o[r]&&o[r]!==Object.prototype[r]?o[r]:o[r]={}},goog.define=function(e,t){if(!COMPILED){var o=goog.global.CLOSURE_UNCOMPILED_DEFINES,r=goog.global.CLOSURE_DEFINES;o&&void 0===o.nodeType&&Object.prototype.hasOwnProperty.call(o,e)?t=o[e]:r&&void 0===r.nodeType&&Object.prototype.hasOwnProperty.call(r,e)&&(t=r[e])}return t},goog.FEATURESET_YEAR=2012,goog.DEBUG=!0,goog.LOCALE="en",goog.TRUSTED_SITE=!0,goog.STRICT_MODE_COMPATIBLE=!1,goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG,goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1,goog.provide=function(e){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(e))throw Error(\'Namespace "\'+e+\'" already declared.\');goog.constructNamespace_(e)},goog.constructNamespace_=function(e,t){if(!COMPILED){delete goog.implicitNamespaces_[e];for(var o=e;(o=o.substring(0,o.lastIndexOf(".")))&&!goog.getObjectByName(o);)goog.implicitNamespaces_[o]=!0}goog.exportPath_(e,t)},goog.getScriptNonce=function(e){return e&&e!=goog.global?goog.getScriptNonce_(e.document):(null===goog.cspNonce_&&(goog.cspNonce_=goog.getScriptNonce_(goog.global.document)),goog.cspNonce_)},goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/,goog.cspNonce_=null,goog.getScriptNonce_=function(e){return(e=e.querySelector&&e.querySelector("script[nonce]"))&&(e=e.nonce||e.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(e)?e:""},goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/,goog.module=function(e){if(!goog.isString(e)||!e||-1==e.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+e+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You\'re likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");if(goog.moduleLoaderState_.moduleName=e,!COMPILED){if(goog.isProvided_(e))throw Error(\'Namespace "\'+e+\'" already declared.\');delete goog.implicitNamespaces_[e]}},goog.module.get=function(e){return goog.module.getInternal_(e)},goog.module.getInternal_=function(e){if(!COMPILED){if(e in goog.loadedModules_)return goog.loadedModules_[e].exports;if(!goog.implicitNamespaces_[e])return null!=(e=goog.getObjectByName(e))?e:null}return null},goog.ModuleType={ES6:"es6",GOOG:"goog"},goog.moduleLoaderState_=null,goog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()},goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG},goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var e=goog.global.$jscomp;return!!e&&"function"==typeof e.getCurrentModulePath&&!!e.getCurrentModulePath()},goog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0},goog.declareModuleId=function(e){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(e in goog.loadedModules_)throw Error(\'Module with namespace "\'+e+\'" already exists.\')}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=e;else{var t=goog.global.$jscomp;if(!t||"function"!=typeof t.getCurrentModulePath)throw Error(\'Module with namespace "\'+e+\'" has been loaded incorrectly.\');t=t.require(t.getCurrentModulePath()),goog.loadedModules_[e]={exports:t,type:goog.ModuleType.ES6,moduleId:e}}},goog.setTestOnly=function(e){if(goog.DISALLOW_TEST_ONLY_CODE)throw e=e||"",Error("Importing test-only code into non-debug environment"+(e?": "+e:"."))},goog.forwardDeclare=function(e){},COMPILED||(goog.isProvided_=function(e){return e in goog.loadedModules_||!goog.implicitNamespaces_[e]&&goog.isDefAndNotNull(goog.getObjectByName(e))},goog.implicitNamespaces_={"goog.module":!0}),goog.getObjectByName=function(e,t){e=e.split("."),t=t||goog.global;for(var o=0;o<e.length;o++)if(t=t[e[o]],!goog.isDefAndNotNull(t))return null;return t},goog.globalize=function(e,t){for(var o in t=t||goog.global,e)t[o]=e[o]},goog.addDependency=function(e,t,o,r){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(e,t,o,r)},goog.ENABLE_DEBUG_LOADER=!0,goog.logToConsole_=function(e){goog.global.console&&goog.global.console.error(e)},goog.require=function(e){if(!COMPILED){if(goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(e),goog.isProvided_(e)){if(goog.isInModuleLoader_())return goog.module.getInternal_(e)}else if(goog.ENABLE_DEBUG_LOADER){var t=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(e)}finally{goog.moduleLoaderState_=t}}return null}},goog.requireType=function(e){return{}},goog.basePath="",goog.nullFunction=function(){},goog.abstractMethod=function(){throw Error("unimplemented abstract method")},goog.addSingletonGetter=function(e){e.instance_=void 0,e.getInstance=function(){return e.instance_?e.instance_:(goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=e),e.instance_=new e)}},goog.instantiatedSingletons_=[],goog.LOAD_MODULE_USING_EVAL=!0,goog.SEAL_MODULE_EXPORTS=goog.DEBUG,goog.loadedModules_={},goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER,goog.TRANSPILE="detect",goog.ASSUME_ES_MODULES_TRANSPILED=!1,goog.TRANSPILE_TO_LANGUAGE="",goog.TRANSPILER="transpile.js",goog.hasBadLetScoping=null,goog.useSafari10Workaround=function(){if(null==goog.hasBadLetScoping){try{var a=!eval(\'"use strict";let x = 1; function f() { return typeof x; };f() == "number";\')}catch(e){a=!1}goog.hasBadLetScoping=a}return goog.hasBadLetScoping},goog.workaroundSafari10EvalBug=function(e){return"(function(){"+e+"\\n;})();\\n"},goog.loadModule=function(e){var t=goog.moduleLoaderState_;try{if(goog.moduleLoaderState_={moduleName:"",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG},goog.isFunction(e))var o=e.call(void 0,{});else{if(!goog.isString(e))throw Error("Invalid module definition");goog.useSafari10Workaround()&&(e=goog.workaroundSafari10EvalBug(e)),o=goog.loadModuleFromSource_.call(void 0,e)}var r=goog.moduleLoaderState_.moduleName;if(!goog.isString(r)||!r)throw Error(\'Invalid module name "\'+r+\'"\');goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(r,o):goog.SEAL_MODULE_EXPORTS&&Object.seal&&"object"==typeof o&&null!=o&&Object.seal(o),goog.loadedModules_[r]={exports:o,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName}}finally{goog.moduleLoaderState_=t}},goog.loadModuleFromSource_=function(a){return eval(a),{}},goog.normalizePath_=function(e){e=e.split("/");for(var t=0;t<e.length;)"."==e[t]?e.splice(t,1):t&&".."==e[t]&&e[t-1]&&".."!=e[t-1]?e.splice(--t,2):t++;return e.join("/")},goog.loadFileSync_=function(e){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(e);try{var t=new goog.global.XMLHttpRequest;return t.open("get",e,!1),t.send(),0==t.status||200==t.status?t.responseText:null}catch(e){return null}},goog.transpile_=function(e,t,o){var r=goog.global.$jscomp;r||(goog.global.$jscomp=r={});var n=r.transpile;if(!n){var s=goog.basePath+goog.TRANSPILER,i=goog.loadFileSync_(s);if(i){if(function(){(0,eval)(i+"\\n//# sourceURL="+s)}.call(goog.global),goog.global.$gwtExport&&goog.global.$gwtExport.$jscomp&&!goog.global.$gwtExport.$jscomp.transpile)throw Error(\'The transpiler did not properly export the "transpile" method. $gwtExport: \'+JSON.stringify(goog.global.$gwtExport));goog.global.$jscomp.transpile=goog.global.$gwtExport.$jscomp.transpile,n=(r=goog.global.$jscomp).transpile}}return n||(n=r.transpile=function(e,t){return goog.logToConsole_(t+" requires transpilation but no transpiler was found."),e}),n(e,t,o)},goog.typeOf=function(e){var t=typeof e;if("object"==t){if(!e)return"null";if(e instanceof Array)return"array";if(e instanceof Object)return t;var o=Object.prototype.toString.call(e);if("[object Window]"==o)return"object";if("[object Array]"==o||"number"==typeof e.length&&void 0!==e.splice&&void 0!==e.propertyIsEnumerable&&!e.propertyIsEnumerable("splice"))return"array";if("[object Function]"==o||void 0!==e.call&&void 0!==e.propertyIsEnumerable&&!e.propertyIsEnumerable("call"))return"function"}else if("function"==t&&void 0===e.call)return"object";return t},goog.isNull=function(e){return null===e},goog.isDefAndNotNull=function(e){return null!=e},goog.isArray=function(e){return"array"==goog.typeOf(e)},goog.isArrayLike=function(e){var t=goog.typeOf(e);return"array"==t||"object"==t&&"number"==typeof e.length},goog.isDateLike=function(e){return goog.isObject(e)&&"function"==typeof e.getFullYear},goog.isFunction=function(e){return"function"==goog.typeOf(e)},goog.isObject=function(e){var t=typeof e;return"object"==t&&null!=e||"function"==t},goog.getUid=function(e){return e[goog.UID_PROPERTY_]||(e[goog.UID_PROPERTY_]=++goog.uidCounter_)},goog.hasUid=function(e){return!!e[goog.UID_PROPERTY_]},goog.removeUid=function(e){null!==e&&"removeAttribute"in e&&e.removeAttribute(goog.UID_PROPERTY_);try{delete e[goog.UID_PROPERTY_]}catch(e){}},goog.UID_PROPERTY_="closure_uid_"+(1e9*Math.random()>>>0),goog.uidCounter_=0,goog.getHashCode=goog.getUid,goog.removeHashCode=goog.removeUid,goog.cloneObject=function(e){var t=goog.typeOf(e);if("object"==t||"array"==t){if("function"==typeof e.clone)return e.clone();for(var o in t="array"==t?[]:{},e)t[o]=goog.cloneObject(e[o]);return t}return e},goog.bindNative_=function(e,t,o){return e.call.apply(e.bind,arguments)},goog.bindJs_=function(e,t,o){if(!e)throw Error();if(2<arguments.length){var r=Array.prototype.slice.call(arguments,2);return function(){var o=Array.prototype.slice.call(arguments);return Array.prototype.unshift.apply(o,r),e.apply(t,o)}}return function(){return e.apply(t,arguments)}},goog.bind=function(e,t,o){return Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_,goog.bind.apply(null,arguments)},goog.partial=function(e,t){var o=Array.prototype.slice.call(arguments,1);return function(){var t=o.slice();return t.push.apply(t,arguments),e.apply(this,t)}},goog.mixin=function(e,t){for(var o in t)e[o]=t[o]},goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date},goog.globalEval=function(e){if(goog.global.execScript)goog.global.execScript(e,"JavaScript");else{if(!goog.global.eval)throw Error("goog.globalEval not available");if(null==goog.evalWorksForGlobals_){try{goog.global.eval("var _evalTest_ = 1;")}catch(e){}if(void 0!==goog.global._evalTest_){try{delete goog.global._evalTest_}catch(e){}goog.evalWorksForGlobals_=!0}else goog.evalWorksForGlobals_=!1}if(goog.evalWorksForGlobals_)goog.global.eval(e);else{var t=goog.global.document,o=t.createElement("SCRIPT");o.type="text/javascript",o.defer=!1,o.appendChild(t.createTextNode(e)),t.head.appendChild(o),t.head.removeChild(o)}}},goog.evalWorksForGlobals_=null,goog.getCssName=function(e,t){if("."==String(e).charAt(0))throw Error(\'className passed in goog.getCssName must not start with ".". You passed: \'+e);var o=function(e){return goog.cssNameMapping_[e]||e},r=function(e){e=e.split("-");for(var t=[],r=0;r<e.length;r++)t.push(o(e[r]));return t.join("-")};return r=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?o:r:function(e){return e},e=t?e+"-"+r(t):r(e),goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(e):e},goog.setCssNameMapping=function(e,t){goog.cssNameMapping_=e,goog.cssNameMappingStyle_=t},!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING),goog.getMsg=function(e,t,o){return o&&o.html&&(e=e.replace(/</g,"&lt;")),t&&(e=e.replace(/\\{\\$([^}]+)}/g,(function(e,o){return null!=t&&o in t?t[o]:e}))),e},goog.getMsgWithFallback=function(e,t){return e},goog.exportSymbol=function(e,t,o){goog.exportPath_(e,t,o)},goog.exportProperty=function(e,t,o){e[t]=o},goog.inherits=function(e,t){function o(){}o.prototype=t.prototype,e.superClass_=t.prototype,e.prototype=new o,e.prototype.constructor=e,e.base=function(e,o,r){for(var n=Array(arguments.length-2),s=2;s<arguments.length;s++)n[s-2]=arguments[s];return t.prototype[o].apply(e,n)}},goog.base=function(e,t,o){var r=arguments.callee.caller;if(goog.STRICT_MODE_COMPATIBLE||goog.DEBUG&&!r)throw Error("arguments.caller not defined.  goog.base() cannot be used with strict mode code. See http://www.ecma-international.org/ecma-262/5.1/#sec-C");if(void 0!==r.superClass_){for(var n=Array(arguments.length-1),s=1;s<arguments.length;s++)n[s-1]=arguments[s];return r.superClass_.constructor.apply(e,n)}if("string"!=typeof t&&"symbol"!=typeof t)throw Error("method names provided to goog.base must be a string or a symbol");for(n=Array(arguments.length-2),s=2;s<arguments.length;s++)n[s-2]=arguments[s];s=!1;for(var i=e.constructor.prototype;i;i=Object.getPrototypeOf(i))if(i[t]===r)s=!0;else if(s)return i[t].apply(e,n);if(e[t]===r)return e.constructor.prototype[t].apply(e,n);throw Error("goog.base called from a method of one name to a method of a different name")},goog.scope=function(e){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a module.");e.call(goog.global)},COMPILED||(goog.global.COMPILED=COMPILED),goog.defineClass=function(e,t){var o=t.constructor,r=t.statics;return o&&o!=Object.prototype.constructor||(o=function(){throw Error("cannot instantiate an interface (no constructor defined).")}),o=goog.defineClass.createSealingConstructor_(o,e),e&&goog.inherits(o,e),delete t.constructor,delete t.statics,goog.defineClass.applyProperties_(o.prototype,t),null!=r&&(r instanceof Function?r(o):goog.defineClass.applyProperties_(o,r)),o},goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG,goog.defineClass.createSealingConstructor_=function(e,t){if(!goog.defineClass.SEAL_CLASS_INSTANCES)return e;var o=!goog.defineClass.isUnsealable_(t),r=function(){var t=e.apply(this,arguments)||this;return t[goog.UID_PROPERTY_]=t[goog.UID_PROPERTY_],this.constructor===r&&o&&Object.seal instanceof Function&&Object.seal(t),t};return r},goog.defineClass.isUnsealable_=function(e){return e&&e.prototype&&e.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]},goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),goog.defineClass.applyProperties_=function(e,t){for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);for(var r=0;r<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;r++)o=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[r],Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])},goog.tagUnsealableClass=function(e){!COMPILED&&goog.defineClass.SEAL_CLASS_INSTANCES&&(e.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]=!0)},goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_="goog_defineClass_legacy_unsealable",!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.inHtmlDocument_=function(){var e=goog.global.document;return null!=e&&"write"in e},goog.isDocumentLoading_=function(){var e=goog.global.document;return e.attachEvent?"complete"!=e.readyState:"loading"==e.readyState},goog.findBasePath_=function(){if(goog.isDef(goog.global.CLOSURE_BASE_PATH)&&goog.isString(goog.global.CLOSURE_BASE_PATH))goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var e=goog.global.document,t=e.currentScript;for(t=(e=t?[t]:e.getElementsByTagName("SCRIPT")).length-1;0<=t;--t){var o=e[t].src,r=o.lastIndexOf("?");if(r=-1==r?o.length:r,"base.js"==o.substr(r-7,7)){goog.basePath=o.substr(0,r-7);break}}}},goog.findBasePath_(),goog.Transpiler=function(){this.requiresTranspilation_=null,this.transpilationTarget_=goog.TRANSPILE_TO_LANGUAGE},goog.Transpiler.prototype.createRequiresTranspilation_=function(){function a(t,o){e?d[t]=!0:o()?(c=t,d[t]=!1):e=d[t]=!0}function b(a){try{return!!eval(a)}catch(e){return!1}}var c="es3",d={es3:!1},e=!1,f=goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:"";return a("es5",(function(){return b("[1,].length==1")})),a("es6",(function(){return!f.match(/Edge\\/(\\d+)(\\.\\d)*/i)&&b(\'(()=>{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()\')})),a("es7",(function(){return b("2 ** 2 == 4")})),a("es8",(function(){return b("async () => 1, true")})),a("es9",(function(){return b("({...rest} = {}), true")})),a("es_next",(function(){return!1})),{target:c,map:d}},goog.Transpiler.prototype.needsTranspile=function(e,t){if("always"==goog.TRANSPILE)return!0;if("never"==goog.TRANSPILE)return!1;if(!this.requiresTranspilation_){var o=this.createRequiresTranspilation_();this.requiresTranspilation_=o.map,this.transpilationTarget_=this.transpilationTarget_||o.target}if(e in this.requiresTranspilation_)return!!this.requiresTranspilation_[e]||!(!goog.inHtmlDocument_()||"es6"!=t||"noModule"in goog.global.document.createElement("script"));throw Error("Unknown language mode: "+e)},goog.Transpiler.prototype.transpile=function(e,t){return goog.transpile_(e,t,this.transpilationTarget_)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(e){return e.replace(/<\\/(SCRIPT)/gi,"\\\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={},this.idToPath_={},this.written_={},this.loadingDeps_=[],this.depsToLoad_=[],this.paused_=!1,this.factory_=new goog.DependencyFactory(goog.transpiler_),this.deferredCallbacks_={},this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(e,t){function o(){r&&(goog.global.setTimeout(r,0),r=null)}var r=t;if(e.length){t=[];for(var n=0;n<e.length;n++){var s=this.getPathFromDeps_(e[n]);if(!s)throw Error("Unregonized namespace: "+e[n]);t.push(this.dependencies_[s])}s=goog.require;var i=0;for(n=0;n<e.length;n++)s(e[n]),t[n].onLoad((function(){++i==e.length&&o()}))}else o()},goog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+"deps.js"),"deps.js",[],[],{},!1)),this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(e,t){(e=this.getPathFromDeps_(e))&&(t||this.areDepsLoaded_(this.dependencies_[e].requires))&&(t=this.deferredCallbacks_[e])&&(delete this.deferredCallbacks_[e],t())},goog.DebugLoader_.prototype.setDependencyFactory=function(e){this.factory_=e},goog.DebugLoader_.prototype.load_=function(e){if(!this.getPathFromDeps_(e))throw e="goog.require could not find: "+e,goog.logToConsole_(e),Error(e);var t=this,o=[],r=function(e){var n=t.getPathFromDeps_(e);if(!n)throw Error("Bad dependency path or symbol: "+e);if(!t.written_[n]){for(t.written_[n]=!0,e=t.dependencies_[n],n=0;n<e.requires.length;n++)goog.isProvided_(e.requires[n])||r(e.requires[n]);o.push(e)}};r(e),e=!!this.depsToLoad_.length,this.depsToLoad_=this.depsToLoad_.concat(o),this.paused_||e||this.loadDeps_()},goog.DebugLoader_.prototype.loadDeps_=function(){for(var e=this,t=this.paused_;this.depsToLoad_.length&&!t;)!function(){var o=!1,r=e.depsToLoad_.shift(),n=!1;e.loading_(r);var s={pause:function(){if(o)throw Error("Cannot call pause after the call to load.");t=!0},resume:function(){o?e.resume_():t=!1},loaded:function(){if(n)throw Error("Double call to loaded.");n=!0,e.loaded_(r)},pending:function(){for(var t=[],o=0;o<e.loadingDeps_.length;o++)t.push(e.loadingDeps_[o]);return t},setModuleState:function(e){goog.moduleLoaderState_={type:e,moduleName:"",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(e,t,o){o&&(goog.loadedModules_[o]={exports:t,type:goog.ModuleType.ES6,moduleId:o||""})},registerGoogModuleExports:function(e,t){goog.loadedModules_[e]={exports:t,type:goog.ModuleType.GOOG,moduleId:e}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(t){if(o)throw Error("Cannot register with defer after the call to load.");e.defer_(r,t)},areDepsLoaded:function(){return e.areDepsLoaded_(r.requires)}};try{r.load(s)}finally{o=!0}}();t&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(e){this.loadingDeps_.push(e)},goog.DebugLoader_.prototype.loaded_=function(e){for(var t=0;t<this.loadingDeps_.length;t++)if(this.loadingDeps_[t]==e){this.loadingDeps_.splice(t,1);break}for(t=0;t<this.deferredQueue_.length;t++)if(this.deferredQueue_[t]==e.path){this.deferredQueue_.splice(t,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);e.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(e){for(var t=0;t<e.length;t++){var o=this.getPathFromDeps_(e[t]);if(!o||!(o in this.deferredCallbacks_)&&!goog.isProvided_(e[t]))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(e){return e in this.idToPath_?this.idToPath_[e]:e in this.dependencies_?e:null},goog.DebugLoader_.prototype.defer_=function(e,t){this.deferredCallbacks_[e.path]=t,this.deferredQueue_.push(e.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(e,t,o){},goog.LoadController.prototype.setModuleState=function(e){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(e){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(e,t,o,r,n){this.path=e,this.relativePath=t,this.provides=o,this.requires=r,this.loadFlags=n,this.loaded_=!1,this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var e=this.path,t=e.indexOf("://");return 0<=t&&0<=(t=(e=e.substring(t+3)).indexOf("/"))&&(e=e.substring(t+1)),e},goog.Dependency.prototype.onLoad=function(e){this.loaded_?e():this.loadCallbacks_.push(e)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var e=this.loadCallbacks_;this.loadCallbacks_=[];for(var t=0;t<e.length;t++)e[t]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(e){var t=Math.random().toString(32);return goog.Dependency.callbackMap_[t]=e,t},goog.Dependency.unregisterCallback_=function(e){delete goog.Dependency.callbackMap_[e]},goog.Dependency.callback_=function(e,t){if(!(e in goog.Dependency.callbackMap_))throw Error("Callback key "+e+" does not exist (was base.js loaded more than once?).");for(var o=goog.Dependency.callbackMap_[e],r=[],n=1;n<arguments.length;n++)r.push(arguments[n]);o.apply(void 0,r)},goog.Dependency.prototype.load=function(e){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?e.loaded():e.pause();else if(goog.inHtmlDocument_()){var t=goog.global.document;if("complete"==t.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\bdeps.js$/.test(this.path))return void e.loaded();throw Error(\'Cannot write "\'+this.path+\'" after document load\')}if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var o=goog.Dependency.registerCallback_((function(t){goog.DebugLoader_.IS_OLD_IE_&&"complete"!=t.readyState||(goog.Dependency.unregisterCallback_(o),e.loaded())})),r=!goog.DebugLoader_.IS_OLD_IE_&&goog.getScriptNonce()?\' nonce="\'+goog.getScriptNonce()+\'"\':"";r=\'<script src="\'+this.path+\'" \'+(goog.DebugLoader_.IS_OLD_IE_?"onreadystatechange":"onload")+"=\\"goog.Dependency.callback_(\'"+o+\'\\\', this)" type="text/javascript" \'+(goog.Dependency.defer_?"defer":"")+r+"><\\/script>",t.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(r):r)}else{var n=t.createElement("script");n.defer=goog.Dependency.defer_,n.async=!1,n.type="text/javascript",(r=goog.getScriptNonce())&&n.setAttribute("nonce",r),goog.DebugLoader_.IS_OLD_IE_?(e.pause(),n.onreadystatechange=function(){"loaded"!=n.readyState&&"complete"!=n.readyState||(e.loaded(),e.resume())}):n.onload=function(){n.onload=null,e.loaded()},n.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path,t.head.appendChild(n)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),e.loaded()):e.pause()},goog.Es6ModuleDependency=function(e,t,o,r,n){goog.Dependency.call(this,e,t,o,r,n)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(e){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?e.loaded():e.pause();else if(goog.inHtmlDocument_()){var t=goog.global.document,o=this;if(goog.isDocumentLoading_()){var r=function(e,o){e=o?\'<script type="module" crossorigin>\'+o+"<\\/script>":\'<script type="module" crossorigin src="\'+e+\'"><\\/script>\',t.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(e):e)};goog.Dependency.defer_=!0}else r=function(e,o){var r=t.createElement("script");r.defer=!0,r.async=!1,r.type="module",r.setAttribute("crossorigin",!0);var n=goog.getScriptNonce();n&&r.setAttribute("nonce",n),o?r.textContent=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(o):o:r.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(e):e,t.head.appendChild(r)};var n=goog.Dependency.registerCallback_((function(){goog.Dependency.unregisterCallback_(n),e.setModuleState(goog.ModuleType.ES6)}));r(void 0,\'goog.Dependency.callback_("\'+n+\'")\'),r(this.path,void 0);var s=goog.Dependency.registerCallback_((function(t){goog.Dependency.unregisterCallback_(s),e.registerEs6ModuleExports(o.path,t,goog.moduleLoaderState_.moduleName)}));r(void 0,\'import * as m from "\'+this.path+\'"; goog.Dependency.callback_("\'+s+\'", m)\');var i=goog.Dependency.registerCallback_((function(){goog.Dependency.unregisterCallback_(i),e.clearModuleState(),e.loaded()}));r(void 0,\'goog.Dependency.callback_("\'+i+\'")\')}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),e.pause()},goog.TransformedDependency=function(e,t,o,r,n){goog.Dependency.call(this,e,t,o,r,n),this.contents_=null,this.lazyFetch_=!goog.inHtmlDocument_()||!("noModule"in goog.global.document.createElement("script"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(e){function t(){r.contents_=goog.loadFileSync_(r.path),r.contents_&&(r.contents_=r.transform(r.contents_),r.contents_&&(r.contents_+="\\n//# sourceURL="+r.path))}function o(){if(r.lazyFetch_&&t(),r.contents_){n&&e.setModuleState(goog.ModuleType.ES6);try{var o=r.contents_;if(r.contents_=null,goog.globalEval(o),n)var s=goog.moduleLoaderState_.moduleName}finally{n&&e.clearModuleState()}n&&goog.global.$jscomp.require.ensure([r.getPathName()],(function(){e.registerEs6ModuleExports(r.path,goog.global.$jscomp.require(r.getPathName()),s)})),e.loaded()}}var r=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)t(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT("",this.contents_)?(this.contents_=null,e.loaded()):e.pause();else{var n=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||t();var s=1<e.pending().length,i=s&&goog.DebugLoader_.IS_OLD_IE_;if(s=goog.Dependency.defer_&&(s||goog.isDocumentLoading_()),i||s)e.defer((function(){o()}));else{var a=goog.global.document;if(i=goog.inHtmlDocument_()&&"ActiveXObject"in goog.global,n&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!i){goog.Dependency.defer_=!0,e.pause();var g=a.onreadystatechange;a.onreadystatechange=function(){"interactive"==a.readyState&&(a.onreadystatechange=g,o(),e.resume()),goog.isFunction(g)&&g.apply(void 0,arguments)}}else!goog.DebugLoader_.IS_OLD_IE_&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()?function(){var e=goog.global.document,t=goog.Dependency.registerCallback_((function(){goog.Dependency.unregisterCallback_(t),o()})),r=\'<script type="text/javascript">\'+goog.protectScriptTag_(\'goog.Dependency.callback_("\'+t+\'");\')+"<\\/script>";e.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(r):r)}():o()}}},goog.TransformedDependency.prototype.transform=function(e){},goog.TranspiledDependency=function(e,t,o,r,n,s){goog.TransformedDependency.call(this,e,t,o,r,n),this.transpiler=s},goog.inherits(goog.TranspiledDependency,goog.TransformedDependency),goog.TranspiledDependency.prototype.transform=function(e){return this.transpiler.transpile(e,this.getPathName())},goog.PreTranspiledEs6ModuleDependency=function(e,t,o,r,n){goog.TransformedDependency.call(this,e,t,o,r,n)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(e){return e},goog.GoogModuleDependency=function(e,t,o,r,n,s,i){goog.TransformedDependency.call(this,e,t,o,r,n),this.needsTranspile_=s,this.transpiler_=i},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(e){return this.needsTranspile_&&(e=this.transpiler_.transpile(e,this.getPathName())),goog.LOAD_MODULE_USING_EVAL&&goog.isDef(goog.global.JSON)?"goog.loadModule("+goog.global.JSON.stringify(e+"\\n//# sourceURL="+this.path+"\\n")+");":\'goog.loadModule(function(exports) {"use strict";\'+e+"\\n;return exports});\\n//# sourceURL="+this.path+"\\n"},goog.DebugLoader_.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.DebugLoader_.prototype.addDependency=function(e,t,o,r){t=t||[],e=e.replace(/\\\\/g,"/");var n=goog.normalizePath_(goog.basePath+e);for(r&&"boolean"!=typeof r||(r=r?{module:goog.ModuleType.GOOG}:{}),o=this.factory_.createDependency(n,e,t,o,r,goog.transpiler_.needsTranspile(r.lang||"es3",r.module)),this.dependencies_[n]=o,o=0;o<t.length;o++)this.idToPath_[t[o]]=n;this.idToPath_[e]=n},goog.DependencyFactory=function(e){this.transpiler=e},goog.DependencyFactory.prototype.createDependency=function(e,t,o,r,n,s){return n.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(e,t,o,r,n,s,this.transpiler):s?new goog.TranspiledDependency(e,t,o,r,n,this.transpiler):n.module==goog.ModuleType.ES6?"never"==goog.TRANSPILE&&goog.ASSUME_ES_MODULES_TRANSPILED?new goog.PreTranspiledEs6ModuleDependency(e,t,o,r,n):new goog.Es6ModuleDependency(e,t,o,r,n):new goog.Dependency(e,t,o,r,n)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(e){goog.debugLoader_.setDependencyFactory(e)},goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),goog.bootstrap=function(e,t){goog.debugLoader_.bootstrap(e,t)}),goog.TRUSTED_TYPES_POLICY_NAME="",goog.identity_=function(e){return e},goog.createTrustedTypesPolicy=function(e){var t=null;if("undefined"==typeof TrustedTypes||!TrustedTypes.createPolicy)return t;try{t=TrustedTypes.createPolicy(e,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_,createURL:goog.identity_})}catch(e){goog.logToConsole_(e.message)}return t},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#base"):null,goog.object={},goog.object.is=function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t},goog.object.forEach=function(e,t,o){for(var r in e)t.call(o,e[r],r,e)},goog.object.filter=function(e,t,o){var r,n={};for(r in e)t.call(o,e[r],r,e)&&(n[r]=e[r]);return n},goog.object.map=function(e,t,o){var r,n={};for(r in e)n[r]=t.call(o,e[r],r,e);return n},goog.object.some=function(e,t,o){for(var r in e)if(t.call(o,e[r],r,e))return!0;return!1},goog.object.every=function(e,t,o){for(var r in e)if(!t.call(o,e[r],r,e))return!1;return!0},goog.object.getCount=function(e){var t,o=0;for(t in e)o++;return o},goog.object.getAnyKey=function(e){for(var t in e)return t},goog.object.getAnyValue=function(e){for(var t in e)return e[t]},goog.object.contains=function(e,t){return goog.object.containsValue(e,t)},goog.object.getValues=function(e){var t,o=[],r=0;for(t in e)o[r++]=e[t];return o},goog.object.getKeys=function(e){var t,o=[],r=0;for(t in e)o[r++]=t;return o},goog.object.getValueByKeys=function(e,t){var o=goog.isArrayLike(t),r=o?t:arguments;for(o=o?0:1;o<r.length;o++){if(null==e)return;e=e[r[o]]}return e},goog.object.containsKey=function(e,t){return null!==e&&t in e},goog.object.containsValue=function(e,t){for(var o in e)if(e[o]==t)return!0;return!1},goog.object.findKey=function(e,t,o){for(var r in e)if(t.call(o,e[r],r,e))return r},goog.object.findValue=function(e,t,o){return(t=goog.object.findKey(e,t,o))&&e[t]},goog.object.isEmpty=function(e){for(var t in e)return!1;return!0},goog.object.clear=function(e){for(var t in e)delete e[t]},goog.object.remove=function(e,t){var o;return(o=t in e)&&delete e[t],o},goog.object.add=function(e,t,o){if(null!==e&&t in e)throw Error(\'The object already contains the key "\'+t+\'"\');goog.object.set(e,t,o)},goog.object.get=function(e,t,o){return null!==e&&t in e?e[t]:o},goog.object.set=function(e,t,o){e[t]=o},goog.object.setIfUndefined=function(e,t,o){return t in e?e[t]:e[t]=o},goog.object.setWithReturnValueIfNotSet=function(e,t,o){return t in e?e[t]:(o=o(),e[t]=o)},goog.object.equals=function(e,t){for(var o in e)if(!(o in t)||e[o]!==t[o])return!1;for(var r in t)if(!(r in e))return!1;return!0},goog.object.clone=function(e){var t,o={};for(t in e)o[t]=e[t];return o},goog.object.unsafeClone=function(e){var t=goog.typeOf(e);if("object"==t||"array"==t){if(goog.isFunction(e.clone))return e.clone();for(var o in t="array"==t?[]:{},e)t[o]=goog.object.unsafeClone(e[o]);return t}return e},goog.object.transpose=function(e){var t,o={};for(t in e)o[e[t]]=t;return o},goog.object.PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),goog.object.extend=function(e,t){for(var o,r,n=1;n<arguments.length;n++){for(o in r=arguments[n])e[o]=r[o];for(var s=0;s<goog.object.PROTOTYPE_FIELDS_.length;s++)o=goog.object.PROTOTYPE_FIELDS_[s],Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}},goog.object.create=function(e){var t=arguments.length;if(1==t&&goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(t%2)throw Error("Uneven number of arguments");for(var o={},r=0;r<t;r+=2)o[arguments[r]]=arguments[r+1];return o},goog.object.createSet=function(e){var t=arguments.length;if(1==t&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var o={},r=0;r<t;r++)o[arguments[r]]=!0;return o},goog.object.createImmutableView=function(e){var t=e;return Object.isFrozen&&!Object.isFrozen(e)&&(t=Object.create(e),Object.freeze(t)),t},goog.object.isImmutableView=function(e){return!!Object.isFrozen&&Object.isFrozen(e)},goog.object.getAllPropertyNames=function(e,t,o){if(!e)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return goog.object.getKeys(e);for(var r={};e&&(e!==Object.prototype||t)&&(e!==Function.prototype||o);){for(var n=Object.getOwnPropertyNames(e),s=0;s<n.length;s++)r[n[s]]=!0;e=Object.getPrototypeOf(e)}return goog.object.getKeys(r)},goog.object.getSuperClass=function(e){return(e=Object.getPrototypeOf(e.prototype))&&e.constructor},goog.debug={},goog.debug.Error=function(e){if(Error.captureStackTrace)Error.captureStackTrace(this,goog.debug.Error);else{var t=Error().stack;t&&(this.stack=t)}e&&(this.message=String(e)),this.reportErrorToServer=!0},goog.inherits(goog.debug.Error,Error),goog.debug.Error.prototype.name="CustomError",goog.dom={},goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12},goog.asserts={},goog.asserts.ENABLE_ASSERTS=goog.DEBUG,goog.asserts.AssertionError=function(e,t){goog.debug.Error.call(this,goog.asserts.subs_(e,t)),this.messagePattern=e},goog.inherits(goog.asserts.AssertionError,goog.debug.Error),goog.asserts.AssertionError.prototype.name="AssertionError",goog.asserts.DEFAULT_ERROR_HANDLER=function(e){throw e},goog.asserts.errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER,goog.asserts.subs_=function(e,t){for(var o="",r=(e=e.split("%s")).length-1,n=0;n<r;n++)o+=e[n]+(n<t.length?t[n]:"%s");return o+e[r]},goog.asserts.doAssertFailure_=function(e,t,o,r){var n="Assertion failed";if(o){n+=": "+o;var s=r}else e&&(n+=": "+e,s=t);e=new goog.asserts.AssertionError(""+n,s||[]),goog.asserts.errorHandler_(e)},goog.asserts.setErrorHandler=function(e){goog.asserts.ENABLE_ASSERTS&&(goog.asserts.errorHandler_=e)},goog.asserts.assert=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!e&&goog.asserts.doAssertFailure_("",null,t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertExists=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&null==e&&goog.asserts.doAssertFailure_("Expected to exist: %s.",[e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.fail=function(e,t){goog.asserts.ENABLE_ASSERTS&&goog.asserts.errorHandler_(new goog.asserts.AssertionError("Failure"+(e?": "+e:""),Array.prototype.slice.call(arguments,1)))},goog.asserts.assertNumber=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isNumber(e)&&goog.asserts.doAssertFailure_("Expected number but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertString=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isString(e)&&goog.asserts.doAssertFailure_("Expected string but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertFunction=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isFunction(e)&&goog.asserts.doAssertFailure_("Expected function but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertObject=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isObject(e)&&goog.asserts.doAssertFailure_("Expected object but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertArray=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isArray(e)&&goog.asserts.doAssertFailure_("Expected array but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertBoolean=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isBoolean(e)&&goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertElement=function(e,t,o){return!goog.asserts.ENABLE_ASSERTS||goog.isObject(e)&&e.nodeType==goog.dom.NodeType.ELEMENT||goog.asserts.doAssertFailure_("Expected Element but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertInstanceof=function(e,t,o,r){return!goog.asserts.ENABLE_ASSERTS||e instanceof t||goog.asserts.doAssertFailure_("Expected instanceof %s but got %s.",[goog.asserts.getType_(t),goog.asserts.getType_(e)],o,Array.prototype.slice.call(arguments,3)),e},goog.asserts.assertFinite=function(e,t,o){return!goog.asserts.ENABLE_ASSERTS||"number"==typeof e&&isFinite(e)||goog.asserts.doAssertFailure_("Expected %s to be a finite number but it is not.",[e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertObjectPrototypeIsIntact=function(){for(var e in Object.prototype)goog.asserts.fail(e+" should not be enumerable in Object.prototype.")},goog.asserts.getType_=function(e){return e instanceof Function?e.displayName||e.name||"unknown type name":e instanceof Object?e.constructor.displayName||e.constructor.name||Object.prototype.toString.call(e):null===e?"null":typeof e};var jspb={BinaryConstants:{},ConstBinaryMessage:function(){},BinaryMessage:function(){}};jspb.BinaryConstants.FieldType={INVALID:-1,DOUBLE:1,FLOAT:2,INT64:3,UINT64:4,INT32:5,FIXED64:6,FIXED32:7,BOOL:8,STRING:9,GROUP:10,MESSAGE:11,BYTES:12,UINT32:13,ENUM:14,SFIXED32:15,SFIXED64:16,SINT32:17,SINT64:18,FHASH64:30,VHASH64:31},jspb.BinaryConstants.WireType={INVALID:-1,VARINT:0,FIXED64:1,DELIMITED:2,START_GROUP:3,END_GROUP:4,FIXED32:5},jspb.BinaryConstants.FieldTypeToWireType=function(e){var t=jspb.BinaryConstants.FieldType,o=jspb.BinaryConstants.WireType;switch(e){case t.INT32:case t.INT64:case t.UINT32:case t.UINT64:case t.SINT32:case t.SINT64:case t.BOOL:case t.ENUM:case t.VHASH64:return o.VARINT;case t.DOUBLE:case t.FIXED64:case t.SFIXED64:case t.FHASH64:return o.FIXED64;case t.STRING:case t.MESSAGE:case t.BYTES:return o.DELIMITED;case t.FLOAT:case t.FIXED32:case t.SFIXED32:return o.FIXED32;default:return o.INVALID}},jspb.BinaryConstants.INVALID_FIELD_NUMBER=-1,jspb.BinaryConstants.FLOAT32_EPS=1401298464324817e-60,jspb.BinaryConstants.FLOAT32_MIN=11754943508222875e-54,jspb.BinaryConstants.FLOAT32_MAX=34028234663852886e22,jspb.BinaryConstants.FLOAT64_EPS=5e-324,jspb.BinaryConstants.FLOAT64_MIN=22250738585072014e-324,jspb.BinaryConstants.FLOAT64_MAX=17976931348623157e292,jspb.BinaryConstants.TWO_TO_20=1048576,jspb.BinaryConstants.TWO_TO_23=8388608,jspb.BinaryConstants.TWO_TO_31=2147483648,jspb.BinaryConstants.TWO_TO_32=4294967296,jspb.BinaryConstants.TWO_TO_52=4503599627370496,jspb.BinaryConstants.TWO_TO_63=0x8000000000000000,jspb.BinaryConstants.TWO_TO_64=0x10000000000000000,jspb.BinaryConstants.ZERO_HASH="\\0\\0\\0\\0\\0\\0\\0\\0",goog.array={},goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE,goog.array.ASSUME_NATIVE_FUNCTIONS=2012<goog.FEATURESET_YEAR,goog.array.peek=function(e){return e[e.length-1]},goog.array.last=goog.array.peek,goog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.indexOf.call(e,t,o)}:function(e,t,o){if(o=null==o?0:0>o?Math.max(0,e.length+o):o,goog.isString(e))return goog.isString(t)&&1==t.length?e.indexOf(t,o):-1;for(;o<e.length;o++)if(o in e&&e[o]===t)return o;return-1},goog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.lastIndexOf.call(e,t,null==o?e.length-1:o)}:function(e,t,o){if(0>(o=null==o?e.length-1:o)&&(o=Math.max(0,e.length+o)),goog.isString(e))return goog.isString(t)&&1==t.length?e.lastIndexOf(t,o):-1;for(;0<=o;o--)if(o in e&&e[o]===t)return o;return-1},goog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(e,t,o){goog.asserts.assert(null!=e.length),Array.prototype.forEach.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=goog.isString(e)?e.split(""):e,s=0;s<r;s++)s in n&&t.call(o,n[s],s,e)},goog.array.forEachRight=function(e,t,o){var r=e.length,n=goog.isString(e)?e.split(""):e;for(--r;0<=r;--r)r in n&&t.call(o,n[r],r,e)},goog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.filter.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=[],s=0,i=goog.isString(e)?e.split(""):e,a=0;a<r;a++)if(a in i){var g=i[a];t.call(o,g,a,e)&&(n[s++]=g)}return n},goog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.map.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=Array(r),s=goog.isString(e)?e.split(""):e,i=0;i<r;i++)i in s&&(n[i]=t.call(o,s[i],i,e));return n},goog.array.reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(e,t,o,r){return goog.asserts.assert(null!=e.length),r&&(t=goog.bind(t,r)),Array.prototype.reduce.call(e,t,o)}:function(e,t,o,r){var n=o;return goog.array.forEach(e,(function(o,s){n=t.call(r,n,o,s,e)})),n},goog.array.reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(e,t,o,r){return goog.asserts.assert(null!=e.length),goog.asserts.assert(null!=t),r&&(t=goog.bind(t,r)),Array.prototype.reduceRight.call(e,t,o)}:function(e,t,o,r){var n=o;return goog.array.forEachRight(e,(function(o,s){n=t.call(r,n,o,s,e)})),n},goog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.some.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=goog.isString(e)?e.split(""):e,s=0;s<r;s++)if(s in n&&t.call(o,n[s],s,e))return!0;return!1},goog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.every.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=goog.isString(e)?e.split(""):e,s=0;s<r;s++)if(s in n&&!t.call(o,n[s],s,e))return!1;return!0},goog.array.count=function(e,t,o){var r=0;return goog.array.forEach(e,(function(e,n,s){t.call(o,e,n,s)&&++r}),o),r},goog.array.find=function(e,t,o){return 0>(t=goog.array.findIndex(e,t,o))?null:goog.isString(e)?e.charAt(t):e[t]},goog.array.findIndex=function(e,t,o){for(var r=e.length,n=goog.isString(e)?e.split(""):e,s=0;s<r;s++)if(s in n&&t.call(o,n[s],s,e))return s;return-1},goog.array.findRight=function(e,t,o){return 0>(t=goog.array.findIndexRight(e,t,o))?null:goog.isString(e)?e.charAt(t):e[t]},goog.array.findIndexRight=function(e,t,o){var r=e.length,n=goog.isString(e)?e.split(""):e;for(--r;0<=r;r--)if(r in n&&t.call(o,n[r],r,e))return r;return-1},goog.array.contains=function(e,t){return 0<=goog.array.indexOf(e,t)},goog.array.isEmpty=function(e){return 0==e.length},goog.array.clear=function(e){if(!goog.isArray(e))for(var t=e.length-1;0<=t;t--)delete e[t];e.length=0},goog.array.insert=function(e,t){goog.array.contains(e,t)||e.push(t)},goog.array.insertAt=function(e,t,o){goog.array.splice(e,o,0,t)},goog.array.insertArrayAt=function(e,t,o){goog.partial(goog.array.splice,e,o,0).apply(null,t)},goog.array.insertBefore=function(e,t,o){var r;2==arguments.length||0>(r=goog.array.indexOf(e,o))?e.push(t):goog.array.insertAt(e,t,r)},goog.array.remove=function(e,t){var o;return(o=0<=(t=goog.array.indexOf(e,t)))&&goog.array.removeAt(e,t),o},goog.array.removeLast=function(e,t){return 0<=(t=goog.array.lastIndexOf(e,t))&&(goog.array.removeAt(e,t),!0)},goog.array.removeAt=function(e,t){return goog.asserts.assert(null!=e.length),1==Array.prototype.splice.call(e,t,1).length},goog.array.removeIf=function(e,t,o){return 0<=(t=goog.array.findIndex(e,t,o))&&(goog.array.removeAt(e,t),!0)},goog.array.removeAllIf=function(e,t,o){var r=0;return goog.array.forEachRight(e,(function(n,s){t.call(o,n,s,e)&&goog.array.removeAt(e,s)&&r++})),r},goog.array.concat=function(e){return Array.prototype.concat.apply([],arguments)},goog.array.join=function(e){return Array.prototype.concat.apply([],arguments)},goog.array.toArray=function(e){var t=e.length;if(0<t){for(var o=Array(t),r=0;r<t;r++)o[r]=e[r];return o}return[]},goog.array.clone=goog.array.toArray,goog.array.extend=function(e,t){for(var o=1;o<arguments.length;o++){var r=arguments[o];if(goog.isArrayLike(r)){var n=e.length||0,s=r.length||0;e.length=n+s;for(var i=0;i<s;i++)e[n+i]=r[i]}else e.push(r)}},goog.array.splice=function(e,t,o,r){return goog.asserts.assert(null!=e.length),Array.prototype.splice.apply(e,goog.array.slice(arguments,1))},goog.array.slice=function(e,t,o){return goog.asserts.assert(null!=e.length),2>=arguments.length?Array.prototype.slice.call(e,t):Array.prototype.slice.call(e,t,o)},goog.array.removeDuplicates=function(e,t,o){t=t||e;var r=function(e){return goog.isObject(e)?"o"+goog.getUid(e):(typeof e).charAt(0)+e};o=o||r,r={};for(var n=0,s=0;s<e.length;){var i=e[s++],a=o(i);Object.prototype.hasOwnProperty.call(r,a)||(r[a]=!0,t[n++]=i)}t.length=n},goog.array.binarySearch=function(e,t,o){return goog.array.binarySearch_(e,o||goog.array.defaultCompare,!1,t)},goog.array.binarySelect=function(e,t,o){return goog.array.binarySearch_(e,t,!0,void 0,o)},goog.array.binarySearch_=function(e,t,o,r,n){for(var s,i=0,a=e.length;i<a;){var g=i+a>>1,l=o?t.call(n,e[g],g,e):t(r,e[g]);0<l?i=g+1:(a=g,s=!l)}return s?i:~i},goog.array.sort=function(e,t){e.sort(t||goog.array.defaultCompare)},goog.array.stableSort=function(e,t){for(var o=Array(e.length),r=0;r<e.length;r++)o[r]={index:r,value:e[r]};var n=t||goog.array.defaultCompare;for(goog.array.sort(o,(function(e,t){return n(e.value,t.value)||e.index-t.index})),r=0;r<e.length;r++)e[r]=o[r].value},goog.array.sortByKey=function(e,t,o){var r=o||goog.array.defaultCompare;goog.array.sort(e,(function(e,o){return r(t(e),t(o))}))},goog.array.sortObjectsByKey=function(e,t,o){goog.array.sortByKey(e,(function(e){return e[t]}),o)},goog.array.isSorted=function(e,t,o){t=t||goog.array.defaultCompare;for(var r=1;r<e.length;r++){var n=t(e[r-1],e[r]);if(0<n||0==n&&o)return!1}return!0},goog.array.equals=function(e,t,o){if(!goog.isArrayLike(e)||!goog.isArrayLike(t)||e.length!=t.length)return!1;var r=e.length;o=o||goog.array.defaultCompareEquality;for(var n=0;n<r;n++)if(!o(e[n],t[n]))return!1;return!0},goog.array.compare3=function(e,t,o){o=o||goog.array.defaultCompare;for(var r=Math.min(e.length,t.length),n=0;n<r;n++){var s=o(e[n],t[n]);if(0!=s)return s}return goog.array.defaultCompare(e.length,t.length)},goog.array.defaultCompare=function(e,t){return e>t?1:e<t?-1:0},goog.array.inverseDefaultCompare=function(e,t){return-goog.array.defaultCompare(e,t)},goog.array.defaultCompareEquality=function(e,t){return e===t},goog.array.binaryInsert=function(e,t,o){return 0>(o=goog.array.binarySearch(e,t,o))&&(goog.array.insertAt(e,t,-(o+1)),!0)},goog.array.binaryRemove=function(e,t,o){return 0<=(t=goog.array.binarySearch(e,t,o))&&goog.array.removeAt(e,t)},goog.array.bucket=function(e,t,o){for(var r={},n=0;n<e.length;n++){var s=e[n],i=t.call(o,s,n,e);goog.isDef(i)&&(r[i]||(r[i]=[])).push(s)}return r},goog.array.toObject=function(e,t,o){var r={};return goog.array.forEach(e,(function(n,s){r[t.call(o,n,s,e)]=n})),r},goog.array.range=function(e,t,o){var r=[],n=0,s=e;if(void 0!==t&&(n=e,s=t),0>(o=o||1)*(s-n))return[];if(0<o)for(e=n;e<s;e+=o)r.push(e);else for(e=n;e>s;e+=o)r.push(e);return r},goog.array.repeat=function(e,t){for(var o=[],r=0;r<t;r++)o[r]=e;return o},goog.array.flatten=function(e){for(var t=[],o=0;o<arguments.length;o++){var r=arguments[o];if(goog.isArray(r))for(var n=0;n<r.length;n+=8192){var s=goog.array.slice(r,n,n+8192);s=goog.array.flatten.apply(null,s);for(var i=0;i<s.length;i++)t.push(s[i])}else t.push(r)}return t},goog.array.rotate=function(e,t){return goog.asserts.assert(null!=e.length),e.length&&(0<(t%=e.length)?Array.prototype.unshift.apply(e,e.splice(-t,t)):0>t&&Array.prototype.push.apply(e,e.splice(0,-t))),e},goog.array.moveItem=function(e,t,o){goog.asserts.assert(0<=t&&t<e.length),goog.asserts.assert(0<=o&&o<e.length),t=Array.prototype.splice.call(e,t,1),Array.prototype.splice.call(e,o,0,t[0])},goog.array.zip=function(e){if(!arguments.length)return[];for(var t=[],o=arguments[0].length,r=1;r<arguments.length;r++)arguments[r].length<o&&(o=arguments[r].length);for(r=0;r<o;r++){for(var n=[],s=0;s<arguments.length;s++)n.push(arguments[s][r]);t.push(n)}return t},goog.array.shuffle=function(e,t){t=t||Math.random;for(var o=e.length-1;0<o;o--){var r=Math.floor(t()*(o+1)),n=e[o];e[o]=e[r],e[r]=n}},goog.array.copyByIndex=function(e,t){var o=[];return goog.array.forEach(t,(function(t){o.push(e[t])})),o},goog.array.concatMap=function(e,t,o){return goog.array.concat.apply([],goog.array.map(e,t,o))},goog.crypt={},goog.crypt.stringToByteArray=function(e){for(var t=[],o=0,r=0;r<e.length;r++){var n=e.charCodeAt(r);255<n&&(t[o++]=255&n,n>>=8),t[o++]=n}return t},goog.crypt.byteArrayToString=function(e){if(8192>=e.length)return String.fromCharCode.apply(null,e);for(var t="",o=0;o<e.length;o+=8192){var r=goog.array.slice(e,o,o+8192);t+=String.fromCharCode.apply(null,r)}return t},goog.crypt.byteArrayToHex=function(e,t){return goog.array.map(e,(function(e){return 1<(e=e.toString(16)).length?e:"0"+e})).join(t||"")},goog.crypt.hexToByteArray=function(e){goog.asserts.assert(0==e.length%2,"Key string length must be multiple of 2");for(var t=[],o=0;o<e.length;o+=2)t.push(parseInt(e.substring(o,o+2),16));return t},goog.crypt.stringToUtf8ByteArray=function(e){for(var t=[],o=0,r=0;r<e.length;r++){var n=e.charCodeAt(r);128>n?t[o++]=n:(2048>n?t[o++]=n>>6|192:(55296==(64512&n)&&r+1<e.length&&56320==(64512&e.charCodeAt(r+1))?(n=65536+((1023&n)<<10)+(1023&e.charCodeAt(++r)),t[o++]=n>>18|240,t[o++]=n>>12&63|128):t[o++]=n>>12|224,t[o++]=n>>6&63|128),t[o++]=63&n|128)}return t},goog.crypt.utf8ByteArrayToString=function(e){for(var t=[],o=0,r=0;o<e.length;){var n=e[o++];if(128>n)t[r++]=String.fromCharCode(n);else if(191<n&&224>n){var s=e[o++];t[r++]=String.fromCharCode((31&n)<<6|63&s)}else if(239<n&&365>n){s=e[o++];var i=e[o++];n=((7&n)<<18|(63&s)<<12|(63&i)<<6|63&e[o++])-65536,t[r++]=String.fromCharCode(55296+(n>>10)),t[r++]=String.fromCharCode(56320+(1023&n))}else s=e[o++],i=e[o++],t[r++]=String.fromCharCode((15&n)<<12|(63&s)<<6|63&i)}return t.join("")},goog.crypt.xorByteArray=function(e,t){goog.asserts.assert(e.length==t.length,"XOR array lengths must match");for(var o=[],r=0;r<e.length;r++)o.push(e[r]^t[r]);return o},goog.dom.asserts={},goog.dom.asserts.assertIsLocation=function(e){if(goog.asserts.ENABLE_ASSERTS){var t=goog.dom.asserts.getWindow_(e);t&&(!e||!(e instanceof t.Location)&&e instanceof t.Element)&&goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s",goog.dom.asserts.debugStringForType_(e))}return e},goog.dom.asserts.assertIsElementType_=function(e,t){if(goog.asserts.ENABLE_ASSERTS){var o=goog.dom.asserts.getWindow_(e);o&&void 0!==o[t]&&(e&&(e instanceof o[t]||!(e instanceof o.Location||e instanceof o.Element))||goog.asserts.fail("Argument is not a %s (or a non-Element, non-Location mock); got: %s",t,goog.dom.asserts.debugStringForType_(e)))}return e},goog.dom.asserts.assertIsHTMLAnchorElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLAnchorElement")},goog.dom.asserts.assertIsHTMLButtonElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLButtonElement")},goog.dom.asserts.assertIsHTMLLinkElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLLinkElement")},goog.dom.asserts.assertIsHTMLImageElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLImageElement")},goog.dom.asserts.assertIsHTMLAudioElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLAudioElement")},goog.dom.asserts.assertIsHTMLVideoElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLVideoElement")},goog.dom.asserts.assertIsHTMLInputElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLInputElement")},goog.dom.asserts.assertIsHTMLTextAreaElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLTextAreaElement")},goog.dom.asserts.assertIsHTMLCanvasElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLCanvasElement")},goog.dom.asserts.assertIsHTMLEmbedElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLEmbedElement")},goog.dom.asserts.assertIsHTMLFormElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLFormElement")},goog.dom.asserts.assertIsHTMLFrameElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLFrameElement")},goog.dom.asserts.assertIsHTMLIFrameElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLIFrameElement")},goog.dom.asserts.assertIsHTMLObjectElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLObjectElement")},goog.dom.asserts.assertIsHTMLScriptElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLScriptElement")},goog.dom.asserts.debugStringForType_=function(e){if(!goog.isObject(e))return void 0===e?"undefined":null===e?"null":typeof e;try{return e.constructor.displayName||e.constructor.name||Object.prototype.toString.call(e)}catch(e){return"<object could not be stringified>"}},goog.dom.asserts.getWindow_=function(e){try{var t=e&&e.ownerDocument,o=t&&(t.defaultView||t.parentWindow);if((o=o||goog.global).Element&&o.Location)return o}catch(e){}return null},goog.functions={},goog.functions.constant=function(e){return function(){return e}},goog.functions.FALSE=function(){return!1},goog.functions.TRUE=function(){return!0},goog.functions.NULL=function(){return null},goog.functions.identity=function(e,t){return e},goog.functions.error=function(e){return function(){throw Error(e)}},goog.functions.fail=function(e){return function(){throw e}},goog.functions.lock=function(e,t){return t=t||0,function(){return e.apply(this,Array.prototype.slice.call(arguments,0,t))}},goog.functions.nth=function(e){return function(){return arguments[e]}},goog.functions.partialRight=function(e,t){var o=Array.prototype.slice.call(arguments,1);return function(){var t=Array.prototype.slice.call(arguments);return t.push.apply(t,o),e.apply(this,t)}},goog.functions.withReturnValue=function(e,t){return goog.functions.sequence(e,goog.functions.constant(t))},goog.functions.equalTo=function(e,t){return function(o){return t?e==o:e===o}},goog.functions.compose=function(e,t){var o=arguments,r=o.length;return function(){var e;r&&(e=o[r-1].apply(this,arguments));for(var t=r-2;0<=t;t--)e=o[t].call(this,e);return e}},goog.functions.sequence=function(e){var t=arguments,o=t.length;return function(){for(var e,r=0;r<o;r++)e=t[r].apply(this,arguments);return e}},goog.functions.and=function(e){var t=arguments,o=t.length;return function(){for(var e=0;e<o;e++)if(!t[e].apply(this,arguments))return!1;return!0}},goog.functions.or=function(e){var t=arguments,o=t.length;return function(){for(var e=0;e<o;e++)if(t[e].apply(this,arguments))return!0;return!1}},goog.functions.not=function(e){return function(){return!e.apply(this,arguments)}},goog.functions.create=function(e,t){var o=function(){};return o.prototype=e.prototype,o=new o,e.apply(o,Array.prototype.slice.call(arguments,1)),o},goog.functions.CACHE_RETURN_VALUE=!0,goog.functions.cacheReturnValue=function(e){var t,o=!1;return function(){return goog.functions.CACHE_RETURN_VALUE?(o||(t=e(),o=!0),t):e()}},goog.functions.once=function(e){var t=e;return function(){if(t){var e=t;t=null,e()}}},goog.functions.debounce=function(e,t,o){var r=0;return function(n){goog.global.clearTimeout(r);var s=arguments;r=goog.global.setTimeout((function(){e.apply(o,s)}),t)}},goog.functions.throttle=function(e,t,o){var r=0,n=!1,s=[],i=function(){r=0,n&&(n=!1,a())},a=function(){r=goog.global.setTimeout(i,t),e.apply(o,s)};return function(e){s=arguments,r?n=!0:a()}},goog.functions.rateLimit=function(e,t,o){var r=0,n=function(){r=0};return function(s){r||(r=goog.global.setTimeout(n,t),e.apply(o,arguments))}},goog.dom.HtmlElement=function(){},goog.dom.TagName=function(e){this.tagName_=e},goog.dom.TagName.prototype.toString=function(){return this.tagName_},goog.dom.TagName.A=new goog.dom.TagName("A"),goog.dom.TagName.ABBR=new goog.dom.TagName("ABBR"),goog.dom.TagName.ACRONYM=new goog.dom.TagName("ACRONYM"),goog.dom.TagName.ADDRESS=new goog.dom.TagName("ADDRESS"),goog.dom.TagName.APPLET=new goog.dom.TagName("APPLET"),goog.dom.TagName.AREA=new goog.dom.TagName("AREA"),goog.dom.TagName.ARTICLE=new goog.dom.TagName("ARTICLE"),goog.dom.TagName.ASIDE=new goog.dom.TagName("ASIDE"),goog.dom.TagName.AUDIO=new goog.dom.TagName("AUDIO"),goog.dom.TagName.B=new goog.dom.TagName("B"),goog.dom.TagName.BASE=new goog.dom.TagName("BASE"),goog.dom.TagName.BASEFONT=new goog.dom.TagName("BASEFONT"),goog.dom.TagName.BDI=new goog.dom.TagName("BDI"),goog.dom.TagName.BDO=new goog.dom.TagName("BDO"),goog.dom.TagName.BIG=new goog.dom.TagName("BIG"),goog.dom.TagName.BLOCKQUOTE=new goog.dom.TagName("BLOCKQUOTE"),goog.dom.TagName.BODY=new goog.dom.TagName("BODY"),goog.dom.TagName.BR=new goog.dom.TagName("BR"),goog.dom.TagName.BUTTON=new goog.dom.TagName("BUTTON"),goog.dom.TagName.CANVAS=new goog.dom.TagName("CANVAS"),goog.dom.TagName.CAPTION=new goog.dom.TagName("CAPTION"),goog.dom.TagName.CENTER=new goog.dom.TagName("CENTER"),goog.dom.TagName.CITE=new goog.dom.TagName("CITE"),goog.dom.TagName.CODE=new goog.dom.TagName("CODE"),goog.dom.TagName.COL=new goog.dom.TagName("COL"),goog.dom.TagName.COLGROUP=new goog.dom.TagName("COLGROUP"),goog.dom.TagName.COMMAND=new goog.dom.TagName("COMMAND"),goog.dom.TagName.DATA=new goog.dom.TagName("DATA"),goog.dom.TagName.DATALIST=new goog.dom.TagName("DATALIST"),goog.dom.TagName.DD=new goog.dom.TagName("DD"),goog.dom.TagName.DEL=new goog.dom.TagName("DEL"),goog.dom.TagName.DETAILS=new goog.dom.TagName("DETAILS"),goog.dom.TagName.DFN=new goog.dom.TagName("DFN"),goog.dom.TagName.DIALOG=new goog.dom.TagName("DIALOG"),goog.dom.TagName.DIR=new goog.dom.TagName("DIR"),goog.dom.TagName.DIV=new goog.dom.TagName("DIV"),goog.dom.TagName.DL=new goog.dom.TagName("DL"),goog.dom.TagName.DT=new goog.dom.TagName("DT"),goog.dom.TagName.EM=new goog.dom.TagName("EM"),goog.dom.TagName.EMBED=new goog.dom.TagName("EMBED"),goog.dom.TagName.FIELDSET=new goog.dom.TagName("FIELDSET"),goog.dom.TagName.FIGCAPTION=new goog.dom.TagName("FIGCAPTION"),goog.dom.TagName.FIGURE=new goog.dom.TagName("FIGURE"),goog.dom.TagName.FONT=new goog.dom.TagName("FONT"),goog.dom.TagName.FOOTER=new goog.dom.TagName("FOOTER"),goog.dom.TagName.FORM=new goog.dom.TagName("FORM"),goog.dom.TagName.FRAME=new goog.dom.TagName("FRAME"),goog.dom.TagName.FRAMESET=new goog.dom.TagName("FRAMESET"),goog.dom.TagName.H1=new goog.dom.TagName("H1"),goog.dom.TagName.H2=new goog.dom.TagName("H2"),goog.dom.TagName.H3=new goog.dom.TagName("H3"),goog.dom.TagName.H4=new goog.dom.TagName("H4"),goog.dom.TagName.H5=new goog.dom.TagName("H5"),goog.dom.TagName.H6=new goog.dom.TagName("H6"),goog.dom.TagName.HEAD=new goog.dom.TagName("HEAD"),goog.dom.TagName.HEADER=new goog.dom.TagName("HEADER"),goog.dom.TagName.HGROUP=new goog.dom.TagName("HGROUP"),goog.dom.TagName.HR=new goog.dom.TagName("HR"),goog.dom.TagName.HTML=new goog.dom.TagName("HTML"),goog.dom.TagName.I=new goog.dom.TagName("I"),goog.dom.TagName.IFRAME=new goog.dom.TagName("IFRAME"),goog.dom.TagName.IMG=new goog.dom.TagName("IMG"),goog.dom.TagName.INPUT=new goog.dom.TagName("INPUT"),goog.dom.TagName.INS=new goog.dom.TagName("INS"),goog.dom.TagName.ISINDEX=new goog.dom.TagName("ISINDEX"),goog.dom.TagName.KBD=new goog.dom.TagName("KBD"),goog.dom.TagName.KEYGEN=new goog.dom.TagName("KEYGEN"),goog.dom.TagName.LABEL=new goog.dom.TagName("LABEL"),goog.dom.TagName.LEGEND=new goog.dom.TagName("LEGEND"),goog.dom.TagName.LI=new goog.dom.TagName("LI"),goog.dom.TagName.LINK=new goog.dom.TagName("LINK"),goog.dom.TagName.MAIN=new goog.dom.TagName("MAIN"),goog.dom.TagName.MAP=new goog.dom.TagName("MAP"),goog.dom.TagName.MARK=new goog.dom.TagName("MARK"),goog.dom.TagName.MATH=new goog.dom.TagName("MATH"),goog.dom.TagName.MENU=new goog.dom.TagName("MENU"),goog.dom.TagName.MENUITEM=new goog.dom.TagName("MENUITEM"),goog.dom.TagName.META=new goog.dom.TagName("META"),goog.dom.TagName.METER=new goog.dom.TagName("METER"),goog.dom.TagName.NAV=new goog.dom.TagName("NAV"),goog.dom.TagName.NOFRAMES=new goog.dom.TagName("NOFRAMES"),goog.dom.TagName.NOSCRIPT=new goog.dom.TagName("NOSCRIPT"),goog.dom.TagName.OBJECT=new goog.dom.TagName("OBJECT"),goog.dom.TagName.OL=new goog.dom.TagName("OL"),goog.dom.TagName.OPTGROUP=new goog.dom.TagName("OPTGROUP"),goog.dom.TagName.OPTION=new goog.dom.TagName("OPTION"),goog.dom.TagName.OUTPUT=new goog.dom.TagName("OUTPUT"),goog.dom.TagName.P=new goog.dom.TagName("P"),goog.dom.TagName.PARAM=new goog.dom.TagName("PARAM"),goog.dom.TagName.PICTURE=new goog.dom.TagName("PICTURE"),goog.dom.TagName.PRE=new goog.dom.TagName("PRE"),goog.dom.TagName.PROGRESS=new goog.dom.TagName("PROGRESS"),goog.dom.TagName.Q=new goog.dom.TagName("Q"),goog.dom.TagName.RP=new goog.dom.TagName("RP"),goog.dom.TagName.RT=new goog.dom.TagName("RT"),goog.dom.TagName.RTC=new goog.dom.TagName("RTC"),goog.dom.TagName.RUBY=new goog.dom.TagName("RUBY"),goog.dom.TagName.S=new goog.dom.TagName("S"),goog.dom.TagName.SAMP=new goog.dom.TagName("SAMP"),goog.dom.TagName.SCRIPT=new goog.dom.TagName("SCRIPT"),goog.dom.TagName.SECTION=new goog.dom.TagName("SECTION"),goog.dom.TagName.SELECT=new goog.dom.TagName("SELECT"),goog.dom.TagName.SMALL=new goog.dom.TagName("SMALL"),goog.dom.TagName.SOURCE=new goog.dom.TagName("SOURCE"),goog.dom.TagName.SPAN=new goog.dom.TagName("SPAN"),goog.dom.TagName.STRIKE=new goog.dom.TagName("STRIKE"),goog.dom.TagName.STRONG=new goog.dom.TagName("STRONG"),goog.dom.TagName.STYLE=new goog.dom.TagName("STYLE"),goog.dom.TagName.SUB=new goog.dom.TagName("SUB"),goog.dom.TagName.SUMMARY=new goog.dom.TagName("SUMMARY"),goog.dom.TagName.SUP=new goog.dom.TagName("SUP"),goog.dom.TagName.SVG=new goog.dom.TagName("SVG"),goog.dom.TagName.TABLE=new goog.dom.TagName("TABLE"),goog.dom.TagName.TBODY=new goog.dom.TagName("TBODY"),goog.dom.TagName.TD=new goog.dom.TagName("TD"),goog.dom.TagName.TEMPLATE=new goog.dom.TagName("TEMPLATE"),goog.dom.TagName.TEXTAREA=new goog.dom.TagName("TEXTAREA"),goog.dom.TagName.TFOOT=new goog.dom.TagName("TFOOT"),goog.dom.TagName.TH=new goog.dom.TagName("TH"),goog.dom.TagName.THEAD=new goog.dom.TagName("THEAD"),goog.dom.TagName.TIME=new goog.dom.TagName("TIME"),goog.dom.TagName.TITLE=new goog.dom.TagName("TITLE"),goog.dom.TagName.TR=new goog.dom.TagName("TR"),goog.dom.TagName.TRACK=new goog.dom.TagName("TRACK"),goog.dom.TagName.TT=new goog.dom.TagName("TT"),goog.dom.TagName.U=new goog.dom.TagName("U"),goog.dom.TagName.UL=new goog.dom.TagName("UL"),goog.dom.TagName.VAR=new goog.dom.TagName("VAR"),goog.dom.TagName.VIDEO=new goog.dom.TagName("VIDEO"),goog.dom.TagName.WBR=new goog.dom.TagName("WBR"),goog.dom.tags={},goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},goog.dom.tags.isVoidTag=function(e){return!0===goog.dom.tags.VOID_TAGS_[e]},goog.html={},goog.html.trustedtypes={},goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#html"):null,goog.string={},goog.string.TypedString=function(){},goog.string.Const=function(e,t){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=e===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&t||"",this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_},goog.string.Const.prototype.implementsGoogStringTypedString=!0,goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_},goog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"},goog.string.Const.unwrap=function(e){return e instanceof goog.string.Const&&e.constructor===goog.string.Const&&e.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_?e.stringConstValueWithSecurityContract__googStringSecurityPrivate_:(goog.asserts.fail("expected object of type Const, got \'"+e+"\'"),"type_error:Const")},goog.string.Const.from=function(e){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,e)},goog.string.Const.TYPE_MARKER_={},goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={},goog.string.Const.EMPTY=goog.string.Const.from(""),goog.html.SafeScript=function(){this.privateDoNotAccessOrElseSafeScriptWrappedValue_="",this.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeScript.prototype.implementsGoogStringTypedString=!0,goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeScript.fromConstant=function(e){return 0===(e=goog.string.Const.unwrap(e)).length?goog.html.SafeScript.EMPTY:goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeScript.fromConstantAndArgs=function(e,t){for(var o=[],r=1;r<arguments.length;r++)o.push(goog.html.SafeScript.stringify_(arguments[r]));return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("("+goog.string.Const.unwrap(e)+")("+o.join(", ")+");")},goog.html.SafeScript.fromJson=function(e){return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(goog.html.SafeScript.stringify_(e))},goog.html.SafeScript.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()},goog.DEBUG&&(goog.html.SafeScript.prototype.toString=function(){return"SafeScript{"+this.privateDoNotAccessOrElseSafeScriptWrappedValue_+"}"}),goog.html.SafeScript.unwrap=function(e){return goog.html.SafeScript.unwrapTrustedScript(e).toString()},goog.html.SafeScript.unwrapTrustedScript=function(e){return e instanceof goog.html.SafeScript&&e.constructor===goog.html.SafeScript&&e.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeScriptWrappedValue_:(goog.asserts.fail("expected object of type SafeScript, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeScript")},goog.html.SafeScript.stringify_=function(e){return JSON.stringify(e).replace(/</g,"\\\\x3c")},goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse=function(e){return(new goog.html.SafeScript).initSecurityPrivateDoNotAccessOrElse_(e)},goog.html.SafeScript.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScript(e):e,this},goog.html.SafeScript.EMPTY=goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(""),goog.fs={},goog.fs.url={},goog.fs.url.createObjectUrl=function(e){return goog.fs.url.getUrlObject_().createObjectURL(e)},goog.fs.url.revokeObjectUrl=function(e){goog.fs.url.getUrlObject_().revokeObjectURL(e)},goog.fs.url.getUrlObject_=function(){var e=goog.fs.url.findUrlObject_();if(null!=e)return e;throw Error("This browser doesn\'t seem to support blob URLs")},goog.fs.url.findUrlObject_=function(){return goog.isDef(goog.global.URL)&&goog.isDef(goog.global.URL.createObjectURL)?goog.global.URL:goog.isDef(goog.global.webkitURL)&&goog.isDef(goog.global.webkitURL.createObjectURL)?goog.global.webkitURL:goog.isDef(goog.global.createObjectURL)?goog.global:null},goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()},goog.i18n={},goog.i18n.bidi={},goog.i18n.bidi.FORCE_RTL=!1,goog.i18n.bidi.IS_RTL=goog.i18n.bidi.FORCE_RTL||("ar"==goog.LOCALE.substring(0,2).toLowerCase()||"fa"==goog.LOCALE.substring(0,2).toLowerCase()||"he"==goog.LOCALE.substring(0,2).toLowerCase()||"iw"==goog.LOCALE.substring(0,2).toLowerCase()||"ps"==goog.LOCALE.substring(0,2).toLowerCase()||"sd"==goog.LOCALE.substring(0,2).toLowerCase()||"ug"==goog.LOCALE.substring(0,2).toLowerCase()||"ur"==goog.LOCALE.substring(0,2).toLowerCase()||"yi"==goog.LOCALE.substring(0,2).toLowerCase())&&(2==goog.LOCALE.length||"-"==goog.LOCALE.substring(2,3)||"_"==goog.LOCALE.substring(2,3))||3<=goog.LOCALE.length&&"ckb"==goog.LOCALE.substring(0,3).toLowerCase()&&(3==goog.LOCALE.length||"-"==goog.LOCALE.substring(3,4)||"_"==goog.LOCALE.substring(3,4))||7<=goog.LOCALE.length&&("-"==goog.LOCALE.substring(2,3)||"_"==goog.LOCALE.substring(2,3))&&("adlm"==goog.LOCALE.substring(3,7).toLowerCase()||"arab"==goog.LOCALE.substring(3,7).toLowerCase()||"hebr"==goog.LOCALE.substring(3,7).toLowerCase()||"nkoo"==goog.LOCALE.substring(3,7).toLowerCase()||"rohg"==goog.LOCALE.substring(3,7).toLowerCase()||"thaa"==goog.LOCALE.substring(3,7).toLowerCase())||8<=goog.LOCALE.length&&("-"==goog.LOCALE.substring(3,4)||"_"==goog.LOCALE.substring(3,4))&&("adlm"==goog.LOCALE.substring(4,8).toLowerCase()||"arab"==goog.LOCALE.substring(4,8).toLowerCase()||"hebr"==goog.LOCALE.substring(4,8).toLowerCase()||"nkoo"==goog.LOCALE.substring(4,8).toLowerCase()||"rohg"==goog.LOCALE.substring(4,8).toLowerCase()||"thaa"==goog.LOCALE.substring(4,8).toLowerCase()),goog.i18n.bidi.Format={LRE:"‪",RLE:"‫",PDF:"‬",LRM:"‎",RLM:"‏"},goog.i18n.bidi.Dir={LTR:1,RTL:-1,NEUTRAL:0},goog.i18n.bidi.RIGHT="right",goog.i18n.bidi.LEFT="left",goog.i18n.bidi.I18N_RIGHT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.LEFT:goog.i18n.bidi.RIGHT,goog.i18n.bidi.I18N_LEFT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT,goog.i18n.bidi.toDir=function(e,t){return"number"==typeof e?0<e?goog.i18n.bidi.Dir.LTR:0>e?goog.i18n.bidi.Dir.RTL:t?null:goog.i18n.bidi.Dir.NEUTRAL:null==e?null:e?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR},goog.i18n.bidi.ltrChars_="A-Za-zÀ-ÖØ-öø-ʸ̀-֐ऀ-῿‎Ⰰ-\\ud801\\ud804-\\ud839\\ud83c-\\udbff豈-﬜︀-﹯﻽-￿",goog.i18n.bidi.rtlChars_="֑-ۯۺ-ࣿ‏\\ud802-\\ud803\\ud83a-\\ud83bיִ-﷿ﹰ-ﻼ",goog.i18n.bidi.htmlSkipReg_=/<[^>]*>|&[^;]+;/g,goog.i18n.bidi.stripHtmlIfNeeded_=function(e,t){return t?e.replace(goog.i18n.bidi.htmlSkipReg_,""):e},goog.i18n.bidi.rtlCharReg_=new RegExp("["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.ltrCharReg_=new RegExp("["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.hasAnyRtl=function(e,t){return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.hasRtlChar=goog.i18n.bidi.hasAnyRtl,goog.i18n.bidi.hasAnyLtr=function(e,t){return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.ltrRe_=new RegExp("^["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.rtlRe_=new RegExp("^["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.isRtlChar=function(e){return goog.i18n.bidi.rtlRe_.test(e)},goog.i18n.bidi.isLtrChar=function(e){return goog.i18n.bidi.ltrRe_.test(e)},goog.i18n.bidi.isNeutralChar=function(e){return!goog.i18n.bidi.isLtrChar(e)&&!goog.i18n.bidi.isRtlChar(e)},goog.i18n.bidi.ltrDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.rtlChars_+"]*["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.rtlDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.ltrChars_+"]*["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.startsWithRtl=function(e,t){return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isRtlText=goog.i18n.bidi.startsWithRtl,goog.i18n.bidi.startsWithLtr=function(e,t){return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isLtrText=goog.i18n.bidi.startsWithLtr,goog.i18n.bidi.isRequiredLtrRe_=/^http:\\/\\/.*/,goog.i18n.bidi.isNeutralText=function(e,t){return e=goog.i18n.bidi.stripHtmlIfNeeded_(e,t),goog.i18n.bidi.isRequiredLtrRe_.test(e)||!goog.i18n.bidi.hasAnyLtr(e)&&!goog.i18n.bidi.hasAnyRtl(e)},goog.i18n.bidi.ltrExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.ltrChars_+"][^"+goog.i18n.bidi.rtlChars_+"]*$"),goog.i18n.bidi.rtlExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.rtlChars_+"][^"+goog.i18n.bidi.ltrChars_+"]*$"),goog.i18n.bidi.endsWithLtr=function(e,t){return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isLtrExitText=goog.i18n.bidi.endsWithLtr,goog.i18n.bidi.endsWithRtl=function(e,t){return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isRtlExitText=goog.i18n.bidi.endsWithRtl,goog.i18n.bidi.rtlLocalesRe_=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i,goog.i18n.bidi.isRtlLanguage=function(e){return goog.i18n.bidi.rtlLocalesRe_.test(e)},goog.i18n.bidi.bracketGuardTextRe_=/(\\(.*?\\)+)|(\\[.*?\\]+)|(\\{.*?\\}+)|(<.*?>+)/g,goog.i18n.bidi.guardBracketInText=function(e,t){return t=(void 0===t?goog.i18n.bidi.hasAnyRtl(e):t)?goog.i18n.bidi.Format.RLM:goog.i18n.bidi.Format.LRM,e.replace(goog.i18n.bidi.bracketGuardTextRe_,t+"$&"+t)},goog.i18n.bidi.enforceRtlInHtml=function(e){return"<"==e.charAt(0)?e.replace(/<\\w+/,"$& dir=rtl"):"\\n<span dir=rtl>"+e+"</span>"},goog.i18n.bidi.enforceRtlInText=function(e){return goog.i18n.bidi.Format.RLE+e+goog.i18n.bidi.Format.PDF},goog.i18n.bidi.enforceLtrInHtml=function(e){return"<"==e.charAt(0)?e.replace(/<\\w+/,"$& dir=ltr"):"\\n<span dir=ltr>"+e+"</span>"},goog.i18n.bidi.enforceLtrInText=function(e){return goog.i18n.bidi.Format.LRE+e+goog.i18n.bidi.Format.PDF},goog.i18n.bidi.dimensionsRe_=/:\\s*([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)/g,goog.i18n.bidi.leftRe_=/left/gi,goog.i18n.bidi.rightRe_=/right/gi,goog.i18n.bidi.tempRe_=/%%%%/g,goog.i18n.bidi.mirrorCSS=function(e){return e.replace(goog.i18n.bidi.dimensionsRe_,":$1 $4 $3 $2").replace(goog.i18n.bidi.leftRe_,"%%%%").replace(goog.i18n.bidi.rightRe_,goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_,goog.i18n.bidi.RIGHT)},goog.i18n.bidi.doubleQuoteSubstituteRe_=/([\\u0591-\\u05f2])"/g,goog.i18n.bidi.singleQuoteSubstituteRe_=/([\\u0591-\\u05f2])\'/g,goog.i18n.bidi.normalizeHebrewQuote=function(e){return e.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_,"$1״").replace(goog.i18n.bidi.singleQuoteSubstituteRe_,"$1׳")},goog.i18n.bidi.wordSeparatorRe_=/\\s+/,goog.i18n.bidi.hasNumeralsRe_=/[\\d\\u06f0-\\u06f9]/,goog.i18n.bidi.rtlDetectionThreshold_=.4,goog.i18n.bidi.estimateDirection=function(e,t){var o=0,r=0,n=!1;for(e=goog.i18n.bidi.stripHtmlIfNeeded_(e,t).split(goog.i18n.bidi.wordSeparatorRe_),t=0;t<e.length;t++){var s=e[t];goog.i18n.bidi.startsWithRtl(s)?(o++,r++):goog.i18n.bidi.isRequiredLtrRe_.test(s)?n=!0:goog.i18n.bidi.hasAnyLtr(s)?r++:goog.i18n.bidi.hasNumeralsRe_.test(s)&&(n=!0)}return 0==r?n?goog.i18n.bidi.Dir.LTR:goog.i18n.bidi.Dir.NEUTRAL:o/r>goog.i18n.bidi.rtlDetectionThreshold_?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR},goog.i18n.bidi.detectRtlDirectionality=function(e,t){return goog.i18n.bidi.estimateDirection(e,t)==goog.i18n.bidi.Dir.RTL},goog.i18n.bidi.setElementDirAndAlign=function(e,t){e&&(t=goog.i18n.bidi.toDir(t))&&(e.style.textAlign=t==goog.i18n.bidi.Dir.RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT,e.dir=t==goog.i18n.bidi.Dir.RTL?"rtl":"ltr")},goog.i18n.bidi.setElementDirByTextDirectionality=function(e,t){switch(goog.i18n.bidi.estimateDirection(t)){case goog.i18n.bidi.Dir.LTR:e.dir="ltr";break;case goog.i18n.bidi.Dir.RTL:e.dir="rtl";break;default:e.removeAttribute("dir")}},goog.i18n.bidi.DirectionalString=function(){},goog.html.TrustedResourceUrl=function(){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_="",this.trustedURL_=null,this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0,goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()},goog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString=!0,goog.html.TrustedResourceUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR},goog.html.TrustedResourceUrl.prototype.cloneWithParams=function(e,t){var o=goog.html.TrustedResourceUrl.unwrap(this),r=(o=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(o))[3]||"";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(o[1]+goog.html.TrustedResourceUrl.stringifyParams_("?",o[2]||"",e)+goog.html.TrustedResourceUrl.stringifyParams_("#",r,t))},goog.DEBUG&&(goog.html.TrustedResourceUrl.prototype.toString=function(){return"TrustedResourceUrl{"+this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+"}"}),goog.html.TrustedResourceUrl.unwrap=function(e){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(e).toString()},goog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(e){return e instanceof goog.html.TrustedResourceUrl&&e.constructor===goog.html.TrustedResourceUrl&&e.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_:(goog.asserts.fail("expected object of type TrustedResourceUrl, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:TrustedResourceUrl")},goog.html.TrustedResourceUrl.unwrapTrustedURL=function(e){return e.trustedURL_?e.trustedURL_:goog.html.TrustedResourceUrl.unwrap(e)},goog.html.TrustedResourceUrl.format=function(e,t){var o=goog.string.Const.unwrap(e);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(o))throw Error("Invalid TrustedResourceUrl format: "+o);return e=o.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,(function(e,r){if(!Object.prototype.hasOwnProperty.call(t,r))throw Error(\'Found marker, "\'+r+\'", in format string, "\'+o+\'", but no valid label mapping found in args: \'+JSON.stringify(t));return(e=t[r])instanceof goog.string.Const?goog.string.Const.unwrap(e):encodeURIComponent(String(e))})),goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\\w+)}/g,goog.html.TrustedResourceUrl.BASE_URL_=/^((https:)?\\/\\/[0-9a-z.:[\\]-]+\\/|\\/[^/\\\\]|[^:/\\\\%]+\\/|[^:/\\\\%]*[?#]|about:blank#)/i,goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\\?[^#]*)?(#[\\s\\S]*)?/,goog.html.TrustedResourceUrl.formatWithParams=function(e,t,o,r){return goog.html.TrustedResourceUrl.format(e,t).cloneWithParams(o,r)},goog.html.TrustedResourceUrl.fromConstant=function(e){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(e))},goog.html.TrustedResourceUrl.fromConstants=function(e){for(var t="",o=0;o<e.length;o++)t+=goog.string.Const.unwrap(e[o]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(t)},goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(e){var t=new goog.html.TrustedResourceUrl;return t.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScriptURL(e):e,goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY&&(t.trustedURL_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createURL(e)),t},goog.html.TrustedResourceUrl.stringifyParams_=function(e,t,o){if(null==o)return t;if(goog.isString(o))return o?e+encodeURIComponent(o):"";for(var r in o){var n=o[r];n=goog.isArray(n)?n:[n];for(var s=0;s<n.length;s++){var i=n[s];null!=i&&(t||(t=e),t+=(t.length>e.length?"&":"")+encodeURIComponent(r)+"="+encodeURIComponent(String(i)))}}return t},goog.string.internal={},goog.string.internal.startsWith=function(e,t){return 0==e.lastIndexOf(t,0)},goog.string.internal.endsWith=function(e,t){var o=e.length-t.length;return 0<=o&&e.indexOf(t,o)==o},goog.string.internal.caseInsensitiveStartsWith=function(e,t){return 0==goog.string.internal.caseInsensitiveCompare(t,e.substr(0,t.length))},goog.string.internal.caseInsensitiveEndsWith=function(e,t){return 0==goog.string.internal.caseInsensitiveCompare(t,e.substr(e.length-t.length,t.length))},goog.string.internal.caseInsensitiveEquals=function(e,t){return e.toLowerCase()==t.toLowerCase()},goog.string.internal.isEmptyOrWhitespace=function(e){return/^[\\s\\xa0]*$/.test(e)},goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(e){return e.trim()}:function(e){return/^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(e)[1]},goog.string.internal.caseInsensitiveCompare=function(e,t){return(e=String(e).toLowerCase())<(t=String(t).toLowerCase())?-1:e==t?0:1},goog.string.internal.newLineToBr=function(e,t){return e.replace(/(\\r\\n|\\r|\\n)/g,t?"<br />":"<br>")},goog.string.internal.htmlEscape=function(e,t){if(t)e=e.replace(goog.string.internal.AMP_RE_,"&amp;").replace(goog.string.internal.LT_RE_,"&lt;").replace(goog.string.internal.GT_RE_,"&gt;").replace(goog.string.internal.QUOT_RE_,"&quot;").replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;").replace(goog.string.internal.NULL_RE_,"&#0;");else{if(!goog.string.internal.ALL_RE_.test(e))return e;-1!=e.indexOf("&")&&(e=e.replace(goog.string.internal.AMP_RE_,"&amp;")),-1!=e.indexOf("<")&&(e=e.replace(goog.string.internal.LT_RE_,"&lt;")),-1!=e.indexOf(">")&&(e=e.replace(goog.string.internal.GT_RE_,"&gt;")),-1!=e.indexOf(\'"\')&&(e=e.replace(goog.string.internal.QUOT_RE_,"&quot;")),-1!=e.indexOf("\'")&&(e=e.replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;")),-1!=e.indexOf("\\0")&&(e=e.replace(goog.string.internal.NULL_RE_,"&#0;"))}return e},goog.string.internal.AMP_RE_=/&/g,goog.string.internal.LT_RE_=/</g,goog.string.internal.GT_RE_=/>/g,goog.string.internal.QUOT_RE_=/"/g,goog.string.internal.SINGLE_QUOTE_RE_=/\'/g,goog.string.internal.NULL_RE_=/\\x00/g,goog.string.internal.ALL_RE_=/[\\x00&<>"\']/,goog.string.internal.whitespaceEscape=function(e,t){return goog.string.internal.newLineToBr(e.replace(/  /g," &#160;"),t)},goog.string.internal.contains=function(e,t){return-1!=e.indexOf(t)},goog.string.internal.caseInsensitiveContains=function(e,t){return goog.string.internal.contains(e.toLowerCase(),t.toLowerCase())},goog.string.internal.compareVersions=function(e,t){var o=0;e=goog.string.internal.trim(String(e)).split("."),t=goog.string.internal.trim(String(t)).split(".");for(var r=Math.max(e.length,t.length),n=0;0==o&&n<r;n++){var s=e[n]||"",i=t[n]||"";do{if(s=/(\\d*)(\\D*)(.*)/.exec(s)||["","","",""],i=/(\\d*)(\\D*)(.*)/.exec(i)||["","","",""],0==s[0].length&&0==i[0].length)break;o=0==s[1].length?0:parseInt(s[1],10);var a=0==i[1].length?0:parseInt(i[1],10);o=goog.string.internal.compareElements_(o,a)||goog.string.internal.compareElements_(0==s[2].length,0==i[2].length)||goog.string.internal.compareElements_(s[2],i[2]),s=s[3],i=i[3]}while(0==o)}return o},goog.string.internal.compareElements_=function(e,t){return e<t?-1:e>t?1:0},goog.html.SafeUrl=function(){this.privateDoNotAccessOrElseSafeUrlWrappedValue_="",this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez",goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0,goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()},goog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString=!0,goog.html.SafeUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR},goog.DEBUG&&(goog.html.SafeUrl.prototype.toString=function(){return"SafeUrl{"+this.privateDoNotAccessOrElseSafeUrlWrappedValue_+"}"}),goog.html.SafeUrl.unwrap=function(e){return goog.html.SafeUrl.unwrapTrustedURL(e).toString()},goog.html.SafeUrl.unwrapTrustedURL=function(e){return e instanceof goog.html.SafeUrl&&e.constructor===goog.html.SafeUrl&&e.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeUrlWrappedValue_:(goog.asserts.fail("expected object of type SafeUrl, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeUrl")},goog.html.SafeUrl.fromConstant=function(e){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(e))},goog.html.SAFE_MIME_TYPE_PATTERN_=/^(?:audio\\/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-wav|wav|webm)|image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)|text\\/csv|video\\/(?:mpeg|mp4|ogg|webm|quicktime))(?:;\\w+=(?:\\w+|"[\\w;=]+"))*$/i,goog.html.SafeUrl.isSafeMimeType=function(e){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(e)},goog.html.SafeUrl.fromBlob=function(e){return e=goog.html.SAFE_MIME_TYPE_PATTERN_.test(e.type)?goog.fs.url.createObjectUrl(e):goog.html.SafeUrl.INNOCUOUS_STRING,goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.DATA_URL_PATTERN_=/^data:([^,]*);base64,[a-z0-9+\\/]+=*$/i,goog.html.SafeUrl.fromDataUrl=function(e){var t=(e=e.replace(/(%0A|%0D)/g,"")).match(goog.html.DATA_URL_PATTERN_);return t=t&&goog.html.SAFE_MIME_TYPE_PATTERN_.test(t[1]),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(t?e:goog.html.SafeUrl.INNOCUOUS_STRING)},goog.html.SafeUrl.fromTelUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"tel:")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SIP_URL_PATTERN_=/^sip[s]?:[+a-z0-9_.!$%&\'*\\/=^`{|}~-]+@([a-z0-9-]+\\.)+[a-z0-9]{2,63}$/i,goog.html.SafeUrl.fromSipUrl=function(e){return goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(e))||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.fromFacebookMessengerUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"fb-messenger://share")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.fromWhatsAppUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"whatsapp://send")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.fromSmsUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"sms:")&&goog.html.SafeUrl.isSmsUrlBodyValid_(e)||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.isSmsUrlBodyValid_=function(e){var t=e.indexOf("#");if(0<t&&(e=e.substring(0,t)),!(t=e.match(/[?&]body=/gi)))return!0;if(1<t.length)return!1;if(!(e=e.match(/[?&]body=([^&]*)/)[1]))return!0;try{decodeURIComponent(e)}catch(e){return!1}return/^(?:[a-z0-9\\-_.~]|%[0-9a-f]{2})+$/i.test(e)},goog.html.SafeUrl.fromSshUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"ssh://")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.sanitizeChromeExtensionUrl=function(e,t){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\\/\\/([^\\/]+)\\//,e,t)},goog.html.SafeUrl.sanitizeFirefoxExtensionUrl=function(e,t){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\\/\\/([^\\/]+)\\//,e,t)},goog.html.SafeUrl.sanitizeEdgeExtensionUrl=function(e,t){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\\/\\/([^\\/]+)\\//,e,t)},goog.html.SafeUrl.sanitizeExtensionUrl_=function(e,t,o){return(e=e.exec(t))?(e=e[1],-1==(o instanceof goog.string.Const?[goog.string.Const.unwrap(o)]:o.map((function(e){return goog.string.Const.unwrap(e)}))).indexOf(e)&&(t=goog.html.SafeUrl.INNOCUOUS_STRING)):t=goog.html.SafeUrl.INNOCUOUS_STRING,goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(t)},goog.html.SafeUrl.fromTrustedResourceUrl=function(e){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(e))},goog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i,goog.html.SafeUrl.SAFE_URL_PATTERN=goog.html.SAFE_URL_PATTERN_,goog.html.SafeUrl.sanitize=function(e){return e instanceof goog.html.SafeUrl?e:(e="object"==typeof e&&e.implementsGoogStringTypedString?e.getTypedStringValue():String(e),goog.html.SAFE_URL_PATTERN_.test(e)||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e))},goog.html.SafeUrl.sanitizeAssertUnchanged=function(e,t){return e instanceof goog.html.SafeUrl?e:(e="object"==typeof e&&e.implementsGoogStringTypedString?e.getTypedStringValue():String(e),t&&/^data:/i.test(e)&&(t=goog.html.SafeUrl.fromDataUrl(e)).getTypedStringValue()==e?t:(goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(e),"%s does not match the safe URL pattern",e)||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)))},goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(e){var t=new goog.html.SafeUrl;return t.privateDoNotAccessOrElseSafeUrlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createURL(e):e,t},goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank"),goog.html.SafeStyle=function(){this.privateDoNotAccessOrElseSafeStyleWrappedValue_="",this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeStyle.prototype.implementsGoogStringTypedString=!0,goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeStyle.fromConstant=function(e){return 0===(e=goog.string.Const.unwrap(e)).length?goog.html.SafeStyle.EMPTY:(goog.asserts.assert(goog.string.internal.endsWith(e,";"),"Last character of style string is not \';\': "+e),goog.asserts.assert(goog.string.internal.contains(e,":"),"Style string must contain at least one \':\', to specify a \\"name: value\\" pair: "+e),goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(e))},goog.html.SafeStyle.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_},goog.DEBUG&&(goog.html.SafeStyle.prototype.toString=function(){return"SafeStyle{"+this.privateDoNotAccessOrElseSafeStyleWrappedValue_+"}"}),goog.html.SafeStyle.unwrap=function(e){return e instanceof goog.html.SafeStyle&&e.constructor===goog.html.SafeStyle&&e.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeStyleWrappedValue_:(goog.asserts.fail("expected object of type SafeStyle, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeStyle")},goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse=function(e){return(new goog.html.SafeStyle).initSecurityPrivateDoNotAccessOrElse_(e)},goog.html.SafeStyle.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_=e,this},goog.html.SafeStyle.EMPTY=goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(""),goog.html.SafeStyle.INNOCUOUS_STRING="zClosurez",goog.html.SafeStyle.create=function(e){var t,o="";for(t in e){if(!/^[-_a-zA-Z0-9]+$/.test(t))throw Error("Name allows only [-_a-zA-Z0-9], got: "+t);var r=e[t];null!=r&&(o+=t+":"+(r=goog.isArray(r)?goog.array.map(r,goog.html.SafeStyle.sanitizePropertyValue_).join(" "):goog.html.SafeStyle.sanitizePropertyValue_(r))+";")}return o?goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(o):goog.html.SafeStyle.EMPTY},goog.html.SafeStyle.sanitizePropertyValue_=function(e){if(e instanceof goog.html.SafeUrl)return\'url("\'+goog.html.SafeUrl.unwrap(e).replace(/</g,"%3c").replace(/[\\\\"]/g,"\\\\$&")+\'")\';if(e=e instanceof goog.string.Const?goog.string.Const.unwrap(e):goog.html.SafeStyle.sanitizePropertyValueString_(String(e)),/[{;}]/.test(e))throw new goog.asserts.AssertionError("Value does not allow [{;}], got: %s.",[e]);return e},goog.html.SafeStyle.sanitizePropertyValueString_=function(e){var t=e.replace(goog.html.SafeStyle.FUNCTIONS_RE_,"$1").replace(goog.html.SafeStyle.FUNCTIONS_RE_,"$1").replace(goog.html.SafeStyle.URL_RE_,"url");return goog.html.SafeStyle.VALUE_RE_.test(t)?goog.html.SafeStyle.COMMENT_RE_.test(e)?(goog.asserts.fail("String value disallows comments, got: "+e),goog.html.SafeStyle.INNOCUOUS_STRING):goog.html.SafeStyle.hasBalancedQuotes_(e)?goog.html.SafeStyle.hasBalancedSquareBrackets_(e)?goog.html.SafeStyle.sanitizeUrl_(e):(goog.asserts.fail("String value requires balanced square brackets and one identifier per pair of brackets, got: "+e),goog.html.SafeStyle.INNOCUOUS_STRING):(goog.asserts.fail("String value requires balanced quotes, got: "+e),goog.html.SafeStyle.INNOCUOUS_STRING):(goog.asserts.fail("String value allows only "+goog.html.SafeStyle.VALUE_ALLOWED_CHARS_+" and simple functions, got: "+e),goog.html.SafeStyle.INNOCUOUS_STRING)},goog.html.SafeStyle.hasBalancedQuotes_=function(e){for(var t=!0,o=!0,r=0;r<e.length;r++){var n=e.charAt(r);"\'"==n&&o?t=!t:\'"\'==n&&t&&(o=!o)}return t&&o},goog.html.SafeStyle.hasBalancedSquareBrackets_=function(e){for(var t=!0,o=/^[-_a-zA-Z0-9]$/,r=0;r<e.length;r++){var n=e.charAt(r);if("]"==n){if(t)return!1;t=!0}else if("["==n){if(!t)return!1;t=!1}else if(!t&&!o.test(n))return!1}return t},goog.html.SafeStyle.VALUE_ALLOWED_CHARS_="[-,.\\"\'%_!# a-zA-Z0-9\\\\[\\\\]]",goog.html.SafeStyle.VALUE_RE_=new RegExp("^"+goog.html.SafeStyle.VALUE_ALLOWED_CHARS_+"+$"),goog.html.SafeStyle.URL_RE_=/\\b(url\\([ \\t\\n]*)(\'[ -&(-\\[\\]-~]*\'|"[ !#-\\[\\]-~]*"|[!#-&*-\\[\\]-~]*)([ \\t\\n]*\\))/g,goog.html.SafeStyle.FUNCTIONS_RE_=/\\b(hsl|hsla|rgb|rgba|matrix|calc|minmax|fit-content|repeat|(rotate|scale|translate)(X|Y|Z|3d)?)\\([-+*/0-9a-z.%\\[\\], ]+\\)/g,goog.html.SafeStyle.COMMENT_RE_=/\\/\\*/,goog.html.SafeStyle.sanitizeUrl_=function(e){return e.replace(goog.html.SafeStyle.URL_RE_,(function(e,t,o,r){var n="";return o=o.replace(/^([\'"])(.*)\\1$/,(function(e,t,o){return n=t,o})),e=goog.html.SafeUrl.sanitize(o).getTypedStringValue(),t+n+e+n+r}))},goog.html.SafeStyle.concat=function(e){var t="",o=function(e){goog.isArray(e)?goog.array.forEach(e,o):t+=goog.html.SafeStyle.unwrap(e)};return goog.array.forEach(arguments,o),t?goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(t):goog.html.SafeStyle.EMPTY},goog.html.SafeStyleSheet=function(){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_="",this.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeStyleSheet.prototype.implementsGoogStringTypedString=!0,goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeStyleSheet.createRule=function(e,t){if(goog.string.internal.contains(e,"<"))throw Error("Selector does not allow \'<\', got: "+e);var o=e.replace(/(\'|")((?!\\1)[^\\r\\n\\f\\\\]|\\\\[\\s\\S])*\\1/g,"");if(!/^[-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|]+$/.test(o))throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\\\]()=^$|] and strings, got: "+e);if(!goog.html.SafeStyleSheet.hasBalancedBrackets_(o))throw Error("() and [] in selector must be balanced, got: "+e);return t instanceof goog.html.SafeStyle||(t=goog.html.SafeStyle.create(t)),e=e+"{"+goog.html.SafeStyle.unwrap(t).replace(/</g,"\\\\3C ")+"}",goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeStyleSheet.hasBalancedBrackets_=function(e){for(var t={"(":")","[":"]"},o=[],r=0;r<e.length;r++){var n=e[r];if(t[n])o.push(t[n]);else if(goog.object.contains(t,n)&&o.pop()!=n)return!1}return 0==o.length},goog.html.SafeStyleSheet.concat=function(e){var t="",o=function(e){goog.isArray(e)?goog.array.forEach(e,o):t+=goog.html.SafeStyleSheet.unwrap(e)};return goog.array.forEach(arguments,o),goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(t)},goog.html.SafeStyleSheet.fromConstant=function(e){return 0===(e=goog.string.Const.unwrap(e)).length?goog.html.SafeStyleSheet.EMPTY:(goog.asserts.assert(!goog.string.internal.contains(e,"<"),"Forbidden \'<\' character in style sheet string: "+e),goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(e))},goog.html.SafeStyleSheet.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_},goog.DEBUG&&(goog.html.SafeStyleSheet.prototype.toString=function(){return"SafeStyleSheet{"+this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_+"}"}),goog.html.SafeStyleSheet.unwrap=function(e){return e instanceof goog.html.SafeStyleSheet&&e.constructor===goog.html.SafeStyleSheet&&e.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_:(goog.asserts.fail("expected object of type SafeStyleSheet, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeStyleSheet")},goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse=function(e){return(new goog.html.SafeStyleSheet).initSecurityPrivateDoNotAccessOrElse_(e)},goog.html.SafeStyleSheet.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=e,this},goog.html.SafeStyleSheet.EMPTY=goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(""),goog.labs={},goog.labs.userAgent={},goog.labs.userAgent.util={},goog.labs.userAgent.util.getNativeUserAgentString_=function(){var e=goog.labs.userAgent.util.getNavigator_();return e&&(e=e.userAgent)?e:""},goog.labs.userAgent.util.getNavigator_=function(){return goog.global.navigator},goog.labs.userAgent.util.userAgent_=goog.labs.userAgent.util.getNativeUserAgentString_(),goog.labs.userAgent.util.setUserAgent=function(e){goog.labs.userAgent.util.userAgent_=e||goog.labs.userAgent.util.getNativeUserAgentString_()},goog.labs.userAgent.util.getUserAgent=function(){return goog.labs.userAgent.util.userAgent_},goog.labs.userAgent.util.matchUserAgent=function(e){var t=goog.labs.userAgent.util.getUserAgent();return goog.string.internal.contains(t,e)},goog.labs.userAgent.util.matchUserAgentIgnoreCase=function(e){var t=goog.labs.userAgent.util.getUserAgent();return goog.string.internal.caseInsensitiveContains(t,e)},goog.labs.userAgent.util.extractVersionTuples=function(e){for(var t,o=/(\\w[\\w ]+)\\/([^\\s]+)\\s*(?:\\((.*?)\\))?/g,r=[];t=o.exec(e);)r.push([t[1],t[2],t[3]||void 0]);return r},goog.labs.userAgent.browser={},goog.labs.userAgent.browser.matchOpera_=function(){return goog.labs.userAgent.util.matchUserAgent("Opera")},goog.labs.userAgent.browser.matchIE_=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")},goog.labs.userAgent.browser.matchEdgeHtml_=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")},goog.labs.userAgent.browser.matchEdgeChromium_=function(){return goog.labs.userAgent.util.matchUserAgent("Edg/")},goog.labs.userAgent.browser.matchOperaChromium_=function(){return goog.labs.userAgent.util.matchUserAgent("OPR")},goog.labs.userAgent.browser.matchFirefox_=function(){return goog.labs.userAgent.util.matchUserAgent("Firefox")||goog.labs.userAgent.util.matchUserAgent("FxiOS")},goog.labs.userAgent.browser.matchSafari_=function(){return goog.labs.userAgent.util.matchUserAgent("Safari")&&!(goog.labs.userAgent.browser.matchChrome_()||goog.labs.userAgent.browser.matchCoast_()||goog.labs.userAgent.browser.matchOpera_()||goog.labs.userAgent.browser.matchEdgeHtml_()||goog.labs.userAgent.browser.matchEdgeChromium_()||goog.labs.userAgent.browser.matchOperaChromium_()||goog.labs.userAgent.browser.matchFirefox_()||goog.labs.userAgent.browser.isSilk()||goog.labs.userAgent.util.matchUserAgent("Android"))},goog.labs.userAgent.browser.matchCoast_=function(){return goog.labs.userAgent.util.matchUserAgent("Coast")},goog.labs.userAgent.browser.matchIosWebview_=function(){return(goog.labs.userAgent.util.matchUserAgent("iPad")||goog.labs.userAgent.util.matchUserAgent("iPhone"))&&!goog.labs.userAgent.browser.matchSafari_()&&!goog.labs.userAgent.browser.matchChrome_()&&!goog.labs.userAgent.browser.matchCoast_()&&!goog.labs.userAgent.browser.matchFirefox_()&&goog.labs.userAgent.util.matchUserAgent("AppleWebKit")},goog.labs.userAgent.browser.matchChrome_=function(){return(goog.labs.userAgent.util.matchUserAgent("Chrome")||goog.labs.userAgent.util.matchUserAgent("CriOS"))&&!goog.labs.userAgent.browser.matchEdgeHtml_()},goog.labs.userAgent.browser.matchAndroidBrowser_=function(){return goog.labs.userAgent.util.matchUserAgent("Android")&&!(goog.labs.userAgent.browser.isChrome()||goog.labs.userAgent.browser.isFirefox()||goog.labs.userAgent.browser.isOpera()||goog.labs.userAgent.browser.isSilk())},goog.labs.userAgent.browser.isOpera=goog.labs.userAgent.browser.matchOpera_,goog.labs.userAgent.browser.isIE=goog.labs.userAgent.browser.matchIE_,goog.labs.userAgent.browser.isEdge=goog.labs.userAgent.browser.matchEdgeHtml_,goog.labs.userAgent.browser.isEdgeChromium=goog.labs.userAgent.browser.matchEdgeChromium_,goog.labs.userAgent.browser.isOperaChromium=goog.labs.userAgent.browser.matchOperaChromium_,goog.labs.userAgent.browser.isFirefox=goog.labs.userAgent.browser.matchFirefox_,goog.labs.userAgent.browser.isSafari=goog.labs.userAgent.browser.matchSafari_,goog.labs.userAgent.browser.isCoast=goog.labs.userAgent.browser.matchCoast_,goog.labs.userAgent.browser.isIosWebview=goog.labs.userAgent.browser.matchIosWebview_,goog.labs.userAgent.browser.isChrome=goog.labs.userAgent.browser.matchChrome_,goog.labs.userAgent.browser.isAndroidBrowser=goog.labs.userAgent.browser.matchAndroidBrowser_,goog.labs.userAgent.browser.isSilk=function(){return goog.labs.userAgent.util.matchUserAgent("Silk")},goog.labs.userAgent.browser.getVersion=function(){function e(e){return e=goog.array.find(e,r),o[e]||""}var t=goog.labs.userAgent.util.getUserAgent();if(goog.labs.userAgent.browser.isIE())return goog.labs.userAgent.browser.getIEVersion_(t);t=goog.labs.userAgent.util.extractVersionTuples(t);var o={};goog.array.forEach(t,(function(e){o[e[0]]=e[1]}));var r=goog.partial(goog.object.containsKey,o);return goog.labs.userAgent.browser.isOpera()?e(["Version","Opera"]):goog.labs.userAgent.browser.isEdge()?e(["Edge"]):goog.labs.userAgent.browser.isEdgeChromium()?e(["Edg"]):goog.labs.userAgent.browser.isChrome()?e(["Chrome","CriOS"]):(t=t[2])&&t[1]||""},goog.labs.userAgent.browser.isVersionOrHigher=function(e){return 0<=goog.string.internal.compareVersions(goog.labs.userAgent.browser.getVersion(),e)},goog.labs.userAgent.browser.getIEVersion_=function(e){var t=/rv: *([\\d\\.]*)/.exec(e);if(t&&t[1])return t[1];t="";var o=/MSIE +([\\d\\.]+)/.exec(e);if(o&&o[1])if(e=/Trident\\/(\\d.\\d)/.exec(e),"7.0"==o[1])if(e&&e[1])switch(e[1]){case"4.0":t="8.0";break;case"5.0":t="9.0";break;case"6.0":t="10.0";break;case"7.0":t="11.0"}else t="7.0";else t=o[1];return t},goog.html.SafeHtml=function(){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_="",this.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_,this.dir_=null},goog.html.SafeHtml.prototype.implementsGoogI18nBidiDirectionalString=!0,goog.html.SafeHtml.prototype.getDirection=function(){return this.dir_},goog.html.SafeHtml.prototype.implementsGoogStringTypedString=!0,goog.html.SafeHtml.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()},goog.DEBUG&&(goog.html.SafeHtml.prototype.toString=function(){return"SafeHtml{"+this.privateDoNotAccessOrElseSafeHtmlWrappedValue_+"}"}),goog.html.SafeHtml.unwrap=function(e){return goog.html.SafeHtml.unwrapTrustedHTML(e).toString()},goog.html.SafeHtml.unwrapTrustedHTML=function(e){return e instanceof goog.html.SafeHtml&&e.constructor===goog.html.SafeHtml&&e.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeHtmlWrappedValue_:(goog.asserts.fail("expected object of type SafeHtml, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeHtml")},goog.html.SafeHtml.htmlEscape=function(e){if(e instanceof goog.html.SafeHtml)return e;var t="object"==typeof e,o=null;return t&&e.implementsGoogI18nBidiDirectionalString&&(o=e.getDirection()),e=t&&e.implementsGoogStringTypedString?e.getTypedStringValue():String(e),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(e),o)},goog.html.SafeHtml.htmlEscapePreservingNewlines=function(e){return e instanceof goog.html.SafeHtml?e:(e=goog.html.SafeHtml.htmlEscape(e),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(goog.html.SafeHtml.unwrap(e)),e.getDirection()))},goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces=function(e){return e instanceof goog.html.SafeHtml?e:(e=goog.html.SafeHtml.htmlEscape(e),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(goog.html.SafeHtml.unwrap(e)),e.getDirection()))},goog.html.SafeHtml.from=goog.html.SafeHtml.htmlEscape,goog.html.SafeHtml.VALID_NAMES_IN_TAG_=/^[a-zA-Z0-9-]+$/,goog.html.SafeHtml.URL_ATTRIBUTES_={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0},goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_={APPLET:!0,BASE:!0,EMBED:!0,IFRAME:!0,LINK:!0,MATH:!0,META:!0,OBJECT:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0},goog.html.SafeHtml.create=function(e,t,o){return goog.html.SafeHtml.verifyTagName(String(e)),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(e),t,o)},goog.html.SafeHtml.verifyTagName=function(e){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(e))throw Error("Invalid tag name <"+e+">.");if(e.toUpperCase()in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_)throw Error("Tag name <"+e+"> is not allowed for SafeHtml.")},goog.html.SafeHtml.createIframe=function(e,t,o,r){e&&goog.html.TrustedResourceUrl.unwrap(e);var n={};return n.src=e||null,n.srcdoc=t&&goog.html.SafeHtml.unwrap(t),e=goog.html.SafeHtml.combineAttributes(n,{sandbox:""},o),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",e,r)},goog.html.SafeHtml.createSandboxIframe=function(e,t,o,r){if(!goog.html.SafeHtml.canUseSandboxIframe())throw Error("The browser does not support sandboxed iframes.");var n={};return n.src=e?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(e)):null,n.srcdoc=t||null,n.sandbox="",e=goog.html.SafeHtml.combineAttributes(n,{},o),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",e,r)},goog.html.SafeHtml.canUseSandboxIframe=function(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype},goog.html.SafeHtml.createScriptSrc=function(e,t){return goog.html.TrustedResourceUrl.unwrap(e),e=goog.html.SafeHtml.combineAttributes({src:e},{},t),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",e)},goog.html.SafeHtml.createScript=function(e,t){for(var o in t){var r=o.toLowerCase();if("language"==r||"src"==r||"text"==r||"type"==r)throw Error(\'Cannot set "\'+r+\'" attribute\')}for(o="",e=goog.array.concat(e),r=0;r<e.length;r++)o+=goog.html.SafeScript.unwrap(e[r]);return e=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(o,goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",t,e)},goog.html.SafeHtml.createStyle=function(e,t){t=goog.html.SafeHtml.combineAttributes({type:"text/css"},{},t);var o="";e=goog.array.concat(e);for(var r=0;r<e.length;r++)o+=goog.html.SafeStyleSheet.unwrap(e[r]);return e=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(o,goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style",t,e)},goog.html.SafeHtml.createMetaRefresh=function(e,t){return e=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(e)),(goog.labs.userAgent.browser.isIE()||goog.labs.userAgent.browser.isEdge())&&goog.string.internal.contains(e,";")&&(e="\'"+e.replace(/\'/g,"%27")+"\'"),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta",{"http-equiv":"refresh",content:(t||0)+"; url="+e})},goog.html.SafeHtml.getAttrNameAndValue_=function(e,t,o){if(o instanceof goog.string.Const)o=goog.string.Const.unwrap(o);else if("style"==t.toLowerCase())o=goog.html.SafeHtml.getStyleValue_(o);else{if(/^on/i.test(t))throw Error(\'Attribute "\'+t+\'" requires goog.string.Const value, "\'+o+\'" given.\');if(t.toLowerCase()in goog.html.SafeHtml.URL_ATTRIBUTES_)if(o instanceof goog.html.TrustedResourceUrl)o=goog.html.TrustedResourceUrl.unwrap(o);else if(o instanceof goog.html.SafeUrl)o=goog.html.SafeUrl.unwrap(o);else{if(!goog.isString(o))throw Error(\'Attribute "\'+t+\'" on tag "\'+e+\'" requires goog.html.SafeUrl, goog.string.Const, or string, value "\'+o+\'" given.\');o=goog.html.SafeUrl.sanitize(o).getTypedStringValue()}}return o.implementsGoogStringTypedString&&(o=o.getTypedStringValue()),goog.asserts.assert(goog.isString(o)||goog.isNumber(o),"String or number value expected, got "+typeof o+" with value: "+o),t+\'="\'+goog.string.internal.htmlEscape(String(o))+\'"\'},goog.html.SafeHtml.getStyleValue_=function(e){if(!goog.isObject(e))throw Error(\'The "style" attribute requires goog.html.SafeStyle or map of style properties, \'+typeof e+" given: "+e);return e instanceof goog.html.SafeStyle||(e=goog.html.SafeStyle.create(e)),goog.html.SafeStyle.unwrap(e)},goog.html.SafeHtml.createWithDir=function(e,t,o,r){return(t=goog.html.SafeHtml.create(t,o,r)).dir_=e,t},goog.html.SafeHtml.join=function(e,t){var o=(e=goog.html.SafeHtml.htmlEscape(e)).getDirection(),r=[],n=function(e){goog.isArray(e)?goog.array.forEach(e,n):(e=goog.html.SafeHtml.htmlEscape(e),r.push(goog.html.SafeHtml.unwrap(e)),e=e.getDirection(),o==goog.i18n.bidi.Dir.NEUTRAL?o=e:e!=goog.i18n.bidi.Dir.NEUTRAL&&o!=e&&(o=null))};return goog.array.forEach(t,n),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(r.join(goog.html.SafeHtml.unwrap(e)),o)},goog.html.SafeHtml.concat=function(e){return goog.html.SafeHtml.join(goog.html.SafeHtml.EMPTY,Array.prototype.slice.call(arguments))},goog.html.SafeHtml.concatWithDir=function(e,t){var o=goog.html.SafeHtml.concat(goog.array.slice(arguments,1));return o.dir_=e,o},goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse=function(e,t){return(new goog.html.SafeHtml).initSecurityPrivateDoNotAccessOrElse_(e,t)},goog.html.SafeHtml.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e,t){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createHTML(e):e,this.dir_=t,this},goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse=function(e,t,o){var r=null,n="<"+e+goog.html.SafeHtml.stringifyAttributes(e,t);return goog.isDefAndNotNull(o)?goog.isArray(o)||(o=[o]):o=[],goog.dom.tags.isVoidTag(e.toLowerCase())?(goog.asserts.assert(!o.length,"Void tag <"+e+"> does not allow content."),n+=">"):(r=goog.html.SafeHtml.concat(o),n+=">"+goog.html.SafeHtml.unwrap(r)+"</"+e+">",r=r.getDirection()),(e=t&&t.dir)&&(r=/^(ltr|rtl|auto)$/i.test(e)?goog.i18n.bidi.Dir.NEUTRAL:null),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(n,r)},goog.html.SafeHtml.stringifyAttributes=function(e,t){var o="";if(t)for(var r in t){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(r))throw Error(\'Invalid attribute name "\'+r+\'".\');var n=t[r];goog.isDefAndNotNull(n)&&(o+=" "+goog.html.SafeHtml.getAttrNameAndValue_(e,r,n))}return o},goog.html.SafeHtml.combineAttributes=function(e,t,o){var r,n={};for(r in e)goog.asserts.assert(r.toLowerCase()==r,"Must be lower case"),n[r]=e[r];for(r in t)goog.asserts.assert(r.toLowerCase()==r,"Must be lower case"),n[r]=t[r];for(r in o){var s=r.toLowerCase();if(s in e)throw Error(\'Cannot override "\'+s+\'" attribute, got "\'+r+\'" with value "\'+o[r]+\'"\');s in t&&delete n[s],n[r]=o[r]}return n},goog.html.SafeHtml.DOCTYPE_HTML=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>",goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.EMPTY=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("",goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.BR=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>",goog.i18n.bidi.Dir.NEUTRAL),goog.html.uncheckedconversions={},goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(e,t,o){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(t,o||null)},goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(t)},goog.dom.safe={},goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"},goog.dom.safe.insertAdjacentHtml=function(e,t,o){e.insertAdjacentHTML(t,goog.html.SafeHtml.unwrapTrustedHTML(o))},goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0},goog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue((function(){if(goog.DEBUG&&"undefined"==typeof document)return!1;var e=document.createElement("div"),t=document.createElement("div");return t.appendChild(document.createElement("div")),e.appendChild(t),!(goog.DEBUG&&!e.firstChild||(t=e.firstChild.firstChild,e.innerHTML=goog.html.SafeHtml.unwrapTrustedHTML(goog.html.SafeHtml.EMPTY),t.parentElement))})),goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(e,t){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;e.lastChild;)e.removeChild(e.lastChild);e.innerHTML=goog.html.SafeHtml.unwrapTrustedHTML(t)},goog.dom.safe.setInnerHtml=function(e,t){if(goog.asserts.ENABLE_ASSERTS){var o=e.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[o])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+e.tagName+".")}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(e,t)},goog.dom.safe.setOuterHtml=function(e,t){e.outerHTML=goog.html.SafeHtml.unwrapTrustedHTML(t)},goog.dom.safe.setFormElementAction=function(e,t){t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),goog.dom.asserts.assertIsHTMLFormElement(e).action=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setButtonFormAction=function(e,t){t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),goog.dom.asserts.assertIsHTMLButtonElement(e).formAction=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setInputFormAction=function(e,t){t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),goog.dom.asserts.assertIsHTMLInputElement(e).formAction=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setStyle=function(e,t){e.style.cssText=goog.html.SafeStyle.unwrap(t)},goog.dom.safe.documentWrite=function(e,t){e.write(goog.html.SafeHtml.unwrapTrustedHTML(t))},goog.dom.safe.setAnchorHref=function(e,t){goog.dom.asserts.assertIsHTMLAnchorElement(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.href=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setImageSrc=function(e,t){if(goog.dom.asserts.assertIsHTMLImageElement(e),!(t instanceof goog.html.SafeUrl)){var o=/^data:image\\//i.test(t);t=goog.html.SafeUrl.sanitizeAssertUnchanged(t,o)}e.src=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setAudioSrc=function(e,t){if(goog.dom.asserts.assertIsHTMLAudioElement(e),!(t instanceof goog.html.SafeUrl)){var o=/^data:audio\\//i.test(t);t=goog.html.SafeUrl.sanitizeAssertUnchanged(t,o)}e.src=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setVideoSrc=function(e,t){if(goog.dom.asserts.assertIsHTMLVideoElement(e),!(t instanceof goog.html.SafeUrl)){var o=/^data:video\\//i.test(t);t=goog.html.SafeUrl.sanitizeAssertUnchanged(t,o)}e.src=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setEmbedSrc=function(e,t){goog.dom.asserts.assertIsHTMLEmbedElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(t)},goog.dom.safe.setFrameSrc=function(e,t){goog.dom.asserts.assertIsHTMLFrameElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedURL(t)},goog.dom.safe.setIframeSrc=function(e,t){goog.dom.asserts.assertIsHTMLIFrameElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedURL(t)},goog.dom.safe.setIframeSrcdoc=function(e,t){goog.dom.asserts.assertIsHTMLIFrameElement(e),e.srcdoc=goog.html.SafeHtml.unwrapTrustedHTML(t)},goog.dom.safe.setLinkHrefAndRel=function(e,t,o){goog.dom.asserts.assertIsHTMLLinkElement(e),e.rel=o,goog.string.internal.caseInsensitiveContains(o,"stylesheet")?(goog.asserts.assert(t instanceof goog.html.TrustedResourceUrl,\'URL must be TrustedResourceUrl because "rel" contains "stylesheet"\'),e.href=goog.html.TrustedResourceUrl.unwrapTrustedURL(t)):e.href=t instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrapTrustedURL(t):t instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrapTrustedURL(t):goog.html.SafeUrl.unwrapTrustedURL(goog.html.SafeUrl.sanitizeAssertUnchanged(t))},goog.dom.safe.setObjectData=function(e,t){goog.dom.asserts.assertIsHTMLObjectElement(e),e.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(t)},goog.dom.safe.setScriptSrc=function(e,t){goog.dom.asserts.assertIsHTMLScriptElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(t),(t=goog.getScriptNonce())&&e.setAttribute("nonce",t)},goog.dom.safe.setScriptContent=function(e,t){goog.dom.asserts.assertIsHTMLScriptElement(e),e.text=goog.html.SafeScript.unwrapTrustedScript(t),(t=goog.getScriptNonce())&&e.setAttribute("nonce",t)},goog.dom.safe.setLocationHref=function(e,t){goog.dom.asserts.assertIsLocation(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.href=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.assignLocation=function(e,t){goog.dom.asserts.assertIsLocation(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.assign(goog.html.SafeUrl.unwrapTrustedURL(t))},goog.dom.safe.replaceLocation=function(e,t){goog.dom.asserts.assertIsLocation(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.replace(goog.html.SafeUrl.unwrapTrustedURL(t))},goog.dom.safe.openInWindow=function(e,t,o,r,n){return e=e instanceof goog.html.SafeUrl?e:goog.html.SafeUrl.sanitizeAssertUnchanged(e),(t||goog.global).open(goog.html.SafeUrl.unwrapTrustedURL(e),o?goog.string.Const.unwrap(o):"",r,n)},goog.dom.safe.parseFromStringHtml=function(e,t){return goog.dom.safe.parseFromString(e,t,"text/html")},goog.dom.safe.parseFromString=function(e,t,o){return e.parseFromString(goog.html.SafeHtml.unwrapTrustedHTML(t),o)},goog.dom.safe.createImageFromBlob=function(e){if(!/^image\\/.*/g.test(e.type))throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");var t=goog.global.URL.createObjectURL(e);return(e=new goog.global.Image).onload=function(){goog.global.URL.revokeObjectURL(t)},goog.dom.safe.setImageSrc(e,goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Image blob URL."),t)),e},goog.string.DETECT_DOUBLE_ESCAPING=!1,goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1,goog.string.Unicode={NBSP:" "},goog.string.startsWith=goog.string.internal.startsWith,goog.string.endsWith=goog.string.internal.endsWith,goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith,goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith,goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals,goog.string.subs=function(e,t){for(var o=e.split("%s"),r="",n=Array.prototype.slice.call(arguments,1);n.length&&1<o.length;)r+=o.shift()+n.shift();return r+o.join("%s")},goog.string.collapseWhitespace=function(e){return e.replace(/[\\s\\xa0]+/g," ").replace(/^\\s+|\\s+$/g,"")},goog.string.isEmptyOrWhitespace=goog.string.internal.isEmptyOrWhitespace,goog.string.isEmptyString=function(e){return 0==e.length},goog.string.isEmpty=goog.string.isEmptyOrWhitespace,goog.string.isEmptyOrWhitespaceSafe=function(e){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(e))},goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe,goog.string.isBreakingWhitespace=function(e){return!/[^\\t\\n\\r ]/.test(e)},goog.string.isAlpha=function(e){return!/[^a-zA-Z]/.test(e)},goog.string.isNumeric=function(e){return!/[^0-9]/.test(e)},goog.string.isAlphaNumeric=function(e){return!/[^a-zA-Z0-9]/.test(e)},goog.string.isSpace=function(e){return" "==e},goog.string.isUnicodeChar=function(e){return 1==e.length&&" "<=e&&"~">=e||"€"<=e&&"�">=e},goog.string.stripNewlines=function(e){return e.replace(/(\\r\\n|\\r|\\n)+/g," ")},goog.string.canonicalizeNewlines=function(e){return e.replace(/(\\r\\n|\\r|\\n)/g,"\\n")},goog.string.normalizeWhitespace=function(e){return e.replace(/\\xa0|\\s/g," ")},goog.string.normalizeSpaces=function(e){return e.replace(/\\xa0|[ \\t]+/g," ")},goog.string.collapseBreakingSpaces=function(e){return e.replace(/[\\t\\r\\n ]+/g," ").replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g,"")},goog.string.trim=goog.string.internal.trim,goog.string.trimLeft=function(e){return e.replace(/^[\\s\\xa0]+/,"")},goog.string.trimRight=function(e){return e.replace(/[\\s\\xa0]+$/,"")},goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare,goog.string.numberAwareCompare_=function(e,t,o){if(e==t)return 0;if(!e)return-1;if(!t)return 1;for(var r=e.toLowerCase().match(o),n=t.toLowerCase().match(o),s=Math.min(r.length,n.length),i=0;i<s;i++){o=r[i];var a=n[i];if(o!=a)return e=parseInt(o,10),!isNaN(e)&&(t=parseInt(a,10),!isNaN(t)&&e-t)?e-t:o<a?-1:1}return r.length!=n.length?r.length-n.length:e<t?-1:1},goog.string.intAwareCompare=function(e,t){return goog.string.numberAwareCompare_(e,t,/\\d+|\\D+/g)},goog.string.floatAwareCompare=function(e,t){return goog.string.numberAwareCompare_(e,t,/\\d+|\\.\\d+|\\D+/g)},goog.string.numerateCompare=goog.string.floatAwareCompare,goog.string.urlEncode=function(e){return encodeURIComponent(String(e))},goog.string.urlDecode=function(e){return decodeURIComponent(e.replace(/\\+/g," "))},goog.string.newLineToBr=goog.string.internal.newLineToBr,goog.string.htmlEscape=function(e,t){return e=goog.string.internal.htmlEscape(e,t),goog.string.DETECT_DOUBLE_ESCAPING&&(e=e.replace(goog.string.E_RE_,"&#101;")),e},goog.string.E_RE_=/e/g,goog.string.unescapeEntities=function(e){return goog.string.contains(e,"&")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(e):goog.string.unescapePureXmlEntities_(e):e},goog.string.unescapeEntitiesWithDocument=function(e,t){return goog.string.contains(e,"&")?goog.string.unescapeEntitiesUsingDom_(e,t):e},goog.string.unescapeEntitiesUsingDom_=function(e,t){var o={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":\'"\'},r=t?t.createElement("div"):goog.global.document.createElement("div");return e.replace(goog.string.HTML_ENTITY_PATTERN_,(function(e,t){var n=o[e];return n||("#"==t.charAt(0)&&(t=Number("0"+t.substr(1)),isNaN(t)||(n=String.fromCharCode(t))),n||(goog.dom.safe.setInnerHtml(r,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."),e+" ")),n=r.firstChild.nodeValue.slice(0,-1)),o[e]=n)}))},goog.string.unescapePureXmlEntities_=function(e){return e.replace(/&([^;]+);/g,(function(e,t){switch(t){case"amp":return"&";case"lt":return"<";case"gt":return">";case"quot":return\'"\';default:return"#"!=t.charAt(0)||(t=Number("0"+t.substr(1)),isNaN(t))?e:String.fromCharCode(t)}}))},goog.string.HTML_ENTITY_PATTERN_=/&([^;\\s<&]+);?/g,goog.string.whitespaceEscape=function(e,t){return goog.string.newLineToBr(e.replace(/  /g," &#160;"),t)},goog.string.preserveSpaces=function(e){return e.replace(/(^|[\\n ]) /g,"$1"+goog.string.Unicode.NBSP)},goog.string.stripQuotes=function(e,t){for(var o=t.length,r=0;r<o;r++){var n=1==o?t:t.charAt(r);if(e.charAt(0)==n&&e.charAt(e.length-1)==n)return e.substring(1,e.length-1)}return e},goog.string.truncate=function(e,t,o){return o&&(e=goog.string.unescapeEntities(e)),e.length>t&&(e=e.substring(0,t-3)+"..."),o&&(e=goog.string.htmlEscape(e)),e},goog.string.truncateMiddle=function(e,t,o,r){if(o&&(e=goog.string.unescapeEntities(e)),r&&e.length>t){r>t&&(r=t);var n=e.length-r;e=e.substring(0,t-r)+"..."+e.substring(n)}else e.length>t&&(r=Math.floor(t/2),n=e.length-r,e=e.substring(0,r+t%2)+"..."+e.substring(n));return o&&(e=goog.string.htmlEscape(e)),e},goog.string.specialEscapeChars_={"\\0":"\\\\0","\\b":"\\\\b","\\f":"\\\\f","\\n":"\\\\n","\\r":"\\\\r","\\t":"\\\\t","\\v":"\\\\x0B",\'"\':\'\\\\"\',"\\\\":"\\\\\\\\","<":"\\\\u003C"},goog.string.jsEscapeCache_={"\'":"\\\\\'"},goog.string.quote=function(e){e=String(e);for(var t=[\'"\'],o=0;o<e.length;o++){var r=e.charAt(o),n=r.charCodeAt(0);t[o+1]=goog.string.specialEscapeChars_[r]||(31<n&&127>n?r:goog.string.escapeChar(r))}return t.push(\'"\'),t.join("")},goog.string.escapeString=function(e){for(var t=[],o=0;o<e.length;o++)t[o]=goog.string.escapeChar(e.charAt(o));return t.join("")},goog.string.escapeChar=function(e){if(e in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[e];if(e in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[e]=goog.string.specialEscapeChars_[e];var t=e.charCodeAt(0);if(31<t&&127>t)var o=e;else 256>t?(o="\\\\x",(16>t||256<t)&&(o+="0")):(o="\\\\u",4096>t&&(o+="0")),o+=t.toString(16).toUpperCase();return goog.string.jsEscapeCache_[e]=o},goog.string.contains=goog.string.internal.contains,goog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains,goog.string.countOf=function(e,t){return e&&t?e.split(t).length-1:0},goog.string.removeAt=function(e,t,o){var r=e;return 0<=t&&t<e.length&&0<o&&(r=e.substr(0,t)+e.substr(t+o,e.length-t-o)),r},goog.string.remove=function(e,t){return e.replace(t,"")},goog.string.removeAll=function(e,t){return t=new RegExp(goog.string.regExpEscape(t),"g"),e.replace(t,"")},goog.string.replaceAll=function(e,t,o){return t=new RegExp(goog.string.regExpEscape(t),"g"),e.replace(t,o.replace(/\\$/g,"$$$$"))},goog.string.regExpEscape=function(e){return String(e).replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g,"\\\\$1").replace(/\\x08/g,"\\\\x08")},goog.string.repeat=String.prototype.repeat?function(e,t){return e.repeat(t)}:function(e,t){return Array(t+1).join(e)},goog.string.padNumber=function(e,t,o){return-1==(o=(e=goog.isDef(o)?e.toFixed(o):String(e)).indexOf("."))&&(o=e.length),goog.string.repeat("0",Math.max(0,t-o))+e},goog.string.makeSafe=function(e){return null==e?"":String(e)},goog.string.buildString=function(e){return Array.prototype.join.call(arguments,"")},goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)},goog.string.compareVersions=goog.string.internal.compareVersions,goog.string.hashCode=function(e){for(var t=0,o=0;o<e.length;++o)t=31*t+e.charCodeAt(o)>>>0;return t},goog.string.uniqueStringCounter_=2147483648*Math.random()|0,goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++},goog.string.toNumber=function(e){var t=Number(e);return 0==t&&goog.string.isEmptyOrWhitespace(e)?NaN:t},goog.string.isLowerCamelCase=function(e){return/^[a-z]+([A-Z][a-z]*)*$/.test(e)},goog.string.isUpperCamelCase=function(e){return/^([A-Z][a-z]*)+$/.test(e)},goog.string.toCamelCase=function(e){return String(e).replace(/\\-([a-z])/g,(function(e,t){return t.toUpperCase()}))},goog.string.toSelectorCase=function(e){return String(e).replace(/([A-Z])/g,"-$1").toLowerCase()},goog.string.toTitleCase=function(e,t){return t=goog.isString(t)?goog.string.regExpEscape(t):"\\\\s",e.replace(new RegExp("(^"+(t?"|["+t+"]+":"")+")([a-z])","g"),(function(e,t,o){return t+o.toUpperCase()}))},goog.string.capitalize=function(e){return String(e.charAt(0)).toUpperCase()+String(e.substr(1)).toLowerCase()},goog.string.parseInt=function(e){return isFinite(e)&&(e=String(e)),goog.isString(e)?/^\\s*-?0x/i.test(e)?parseInt(e,16):parseInt(e,10):NaN},goog.string.splitLimit=function(e,t,o){e=e.split(t);for(var r=[];0<o&&e.length;)r.push(e.shift()),o--;return e.length&&r.push(e.join(t)),r},goog.string.lastComponent=function(e,t){if(!t)return e;"string"==typeof t&&(t=[t]);for(var o=-1,r=0;r<t.length;r++)if(""!=t[r]){var n=e.lastIndexOf(t[r]);n>o&&(o=n)}return-1==o?e:e.slice(o+1)},goog.string.editDistance=function(e,t){var o=[],r=[];if(e==t)return 0;if(!e.length||!t.length)return Math.max(e.length,t.length);for(var n=0;n<t.length+1;n++)o[n]=n;for(n=0;n<e.length;n++){r[0]=n+1;for(var s=0;s<t.length;s++)r[s+1]=Math.min(r[s]+1,o[s+1]+1,o[s]+Number(e[n]!=t[s]));for(s=0;s<o.length;s++)o[s]=r[s]}return r[t.length]},goog.labs.userAgent.engine={},goog.labs.userAgent.engine.isPresto=function(){return goog.labs.userAgent.util.matchUserAgent("Presto")},goog.labs.userAgent.engine.isTrident=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")},goog.labs.userAgent.engine.isEdge=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")},goog.labs.userAgent.engine.isWebKit=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase("WebKit")&&!goog.labs.userAgent.engine.isEdge()},goog.labs.userAgent.engine.isGecko=function(){return goog.labs.userAgent.util.matchUserAgent("Gecko")&&!goog.labs.userAgent.engine.isWebKit()&&!goog.labs.userAgent.engine.isTrident()&&!goog.labs.userAgent.engine.isEdge()},goog.labs.userAgent.engine.getVersion=function(){var e=goog.labs.userAgent.util.getUserAgent();if(e){e=goog.labs.userAgent.util.extractVersionTuples(e);var t,o=goog.labs.userAgent.engine.getEngineTuple_(e);if(o)return"Gecko"==o[0]?goog.labs.userAgent.engine.getVersionForKey_(e,"Firefox"):o[1];if((e=e[0])&&(t=e[2])&&(t=/Trident\\/([^\\s;]+)/.exec(t)))return t[1]}return""},goog.labs.userAgent.engine.getEngineTuple_=function(e){if(!goog.labs.userAgent.engine.isEdge())return e[1];for(var t=0;t<e.length;t++){var o=e[t];if("Edge"==o[0])return o}},goog.labs.userAgent.engine.isVersionOrHigher=function(e){return 0<=goog.string.compareVersions(goog.labs.userAgent.engine.getVersion(),e)},goog.labs.userAgent.engine.getVersionForKey_=function(e,t){return(e=goog.array.find(e,(function(e){return t==e[0]})))&&e[1]||""},goog.labs.userAgent.platform={},goog.labs.userAgent.platform.isAndroid=function(){return goog.labs.userAgent.util.matchUserAgent("Android")},goog.labs.userAgent.platform.isIpod=function(){return goog.labs.userAgent.util.matchUserAgent("iPod")},goog.labs.userAgent.platform.isIphone=function(){return goog.labs.userAgent.util.matchUserAgent("iPhone")&&!goog.labs.userAgent.util.matchUserAgent("iPod")&&!goog.labs.userAgent.util.matchUserAgent("iPad")},goog.labs.userAgent.platform.isIpad=function(){return goog.labs.userAgent.util.matchUserAgent("iPad")},goog.labs.userAgent.platform.isIos=function(){return goog.labs.userAgent.platform.isIphone()||goog.labs.userAgent.platform.isIpad()||goog.labs.userAgent.platform.isIpod()},goog.labs.userAgent.platform.isMacintosh=function(){return goog.labs.userAgent.util.matchUserAgent("Macintosh")},goog.labs.userAgent.platform.isLinux=function(){return goog.labs.userAgent.util.matchUserAgent("Linux")},goog.labs.userAgent.platform.isWindows=function(){return goog.labs.userAgent.util.matchUserAgent("Windows")},goog.labs.userAgent.platform.isChromeOS=function(){return goog.labs.userAgent.util.matchUserAgent("CrOS")},goog.labs.userAgent.platform.isChromecast=function(){return goog.labs.userAgent.util.matchUserAgent("CrKey")},goog.labs.userAgent.platform.isKaiOS=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase("KaiOS")},goog.labs.userAgent.platform.isGo2Phone=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase("GAFP")},goog.labs.userAgent.platform.getVersion=function(){var e=goog.labs.userAgent.util.getUserAgent(),t="";return goog.labs.userAgent.platform.isWindows()?t=(e=(t=/Windows (?:NT|Phone) ([0-9.]+)/).exec(e))?e[1]:"0.0":goog.labs.userAgent.platform.isIos()?t=(e=(t=/(?:iPhone|iPod|iPad|CPU)\\s+OS\\s+(\\S+)/).exec(e))&&e[1].replace(/_/g,"."):goog.labs.userAgent.platform.isMacintosh()?t=(e=(t=/Mac OS X ([0-9_.]+)/).exec(e))?e[1].replace(/_/g,"."):"10":goog.labs.userAgent.platform.isKaiOS()?t=(e=(t=/(?:KaiOS)\\/(\\S+)/i).exec(e))&&e[1]:goog.labs.userAgent.platform.isAndroid()?t=(e=(t=/Android\\s+([^\\);]+)(\\)|;)/).exec(e))&&e[1]:goog.labs.userAgent.platform.isChromeOS()&&(t=(e=(t=/(?:CrOS\\s+(?:i686|x86_64)\\s+([0-9.]+))/).exec(e))&&e[1]),t||""},goog.labs.userAgent.platform.isVersionOrHigher=function(e){return 0<=goog.string.compareVersions(goog.labs.userAgent.platform.getVersion(),e)},goog.reflect={},goog.reflect.object=function(e,t){return t},goog.reflect.objectProperty=function(e,t){return e},goog.reflect.sinkValue=function(e){return goog.reflect.sinkValue[" "](e),e},goog.reflect.sinkValue[" "]=goog.nullFunction,goog.reflect.canAccessProperty=function(e,t){try{return goog.reflect.sinkValue(e[t]),!0}catch(e){}return!1},goog.reflect.cache=function(e,t,o,r){return r=r?r(t):t,Object.prototype.hasOwnProperty.call(e,r)?e[r]:e[r]=o(t)},goog.userAgent={},goog.userAgent.ASSUME_IE=!1,goog.userAgent.ASSUME_EDGE=!1,goog.userAgent.ASSUME_GECKO=!1,goog.userAgent.ASSUME_WEBKIT=!1,goog.userAgent.ASSUME_MOBILE_WEBKIT=!1,goog.userAgent.ASSUME_OPERA=!1,goog.userAgent.ASSUME_ANY_VERSION=!1,goog.userAgent.BROWSER_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_GECKO||goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_OPERA,goog.userAgent.getUserAgentString=function(){return goog.labs.userAgent.util.getUserAgent()},goog.userAgent.getNavigatorTyped=function(){return goog.global.navigator||null},goog.userAgent.getNavigator=function(){return goog.userAgent.getNavigatorTyped()},goog.userAgent.OPERA=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_OPERA:goog.labs.userAgent.browser.isOpera(),goog.userAgent.IE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_IE:goog.labs.userAgent.browser.isIE(),goog.userAgent.EDGE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_EDGE:goog.labs.userAgent.engine.isEdge(),goog.userAgent.EDGE_OR_IE=goog.userAgent.EDGE||goog.userAgent.IE,goog.userAgent.GECKO=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_GECKO:goog.labs.userAgent.engine.isGecko(),goog.userAgent.WEBKIT=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_MOBILE_WEBKIT:goog.labs.userAgent.engine.isWebKit(),goog.userAgent.isMobile_=function(){return goog.userAgent.WEBKIT&&goog.labs.userAgent.util.matchUserAgent("Mobile")},goog.userAgent.MOBILE=goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.isMobile_(),goog.userAgent.SAFARI=goog.userAgent.WEBKIT,goog.userAgent.determinePlatform_=function(){var e=goog.userAgent.getNavigatorTyped();return e&&e.platform||""},goog.userAgent.PLATFORM=goog.userAgent.determinePlatform_(),goog.userAgent.ASSUME_MAC=!1,goog.userAgent.ASSUME_WINDOWS=!1,goog.userAgent.ASSUME_LINUX=!1,goog.userAgent.ASSUME_X11=!1,goog.userAgent.ASSUME_ANDROID=!1,goog.userAgent.ASSUME_IPHONE=!1,goog.userAgent.ASSUME_IPAD=!1,goog.userAgent.ASSUME_IPOD=!1,goog.userAgent.ASSUME_KAIOS=!1,goog.userAgent.ASSUME_GO2PHONE=!1,goog.userAgent.PLATFORM_KNOWN_=goog.userAgent.ASSUME_MAC||goog.userAgent.ASSUME_WINDOWS||goog.userAgent.ASSUME_LINUX||goog.userAgent.ASSUME_X11||goog.userAgent.ASSUME_ANDROID||goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD,goog.userAgent.MAC=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_MAC:goog.labs.userAgent.platform.isMacintosh(),goog.userAgent.WINDOWS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_WINDOWS:goog.labs.userAgent.platform.isWindows(),goog.userAgent.isLegacyLinux_=function(){return goog.labs.userAgent.platform.isLinux()||goog.labs.userAgent.platform.isChromeOS()},goog.userAgent.LINUX=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_LINUX:goog.userAgent.isLegacyLinux_(),goog.userAgent.isX11_=function(){var e=goog.userAgent.getNavigatorTyped();return!!e&&goog.string.contains(e.appVersion||"","X11")},goog.userAgent.X11=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_X11:goog.userAgent.isX11_(),goog.userAgent.ANDROID=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_ANDROID:goog.labs.userAgent.platform.isAndroid(),goog.userAgent.IPHONE=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE:goog.labs.userAgent.platform.isIphone(),goog.userAgent.IPAD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPAD:goog.labs.userAgent.platform.isIpad(),goog.userAgent.IPOD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIpod(),goog.userAgent.IOS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIos(),goog.userAgent.KAIOS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_KAIOS:goog.labs.userAgent.platform.isKaiOS(),goog.userAgent.GO2PHONE=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_GO2PHONE:goog.labs.userAgent.platform.isGo2Phone(),goog.userAgent.determineVersion_=function(){var e="",t=goog.userAgent.getVersionRegexResult_();return t&&(e=t?t[1]:""),goog.userAgent.IE&&null!=(t=goog.userAgent.getDocumentMode_())&&t>parseFloat(e)?String(t):e},goog.userAgent.getVersionRegexResult_=function(){var e=goog.userAgent.getUserAgentString();return goog.userAgent.GECKO?/rv:([^\\);]+)(\\)|;)/.exec(e):goog.userAgent.EDGE?/Edge\\/([\\d\\.]+)/.exec(e):goog.userAgent.IE?/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(e):goog.userAgent.WEBKIT?/WebKit\\/(\\S+)/.exec(e):goog.userAgent.OPERA?/(?:Version)[ \\/]?(\\S+)/.exec(e):void 0},goog.userAgent.getDocumentMode_=function(){var e=goog.global.document;return e?e.documentMode:void 0},goog.userAgent.VERSION=goog.userAgent.determineVersion_(),goog.userAgent.compare=function(e,t){return goog.string.compareVersions(e,t)},goog.userAgent.isVersionOrHigherCache_={},goog.userAgent.isVersionOrHigher=function(e){return goog.userAgent.ASSUME_ANY_VERSION||goog.reflect.cache(goog.userAgent.isVersionOrHigherCache_,e,(function(){return 0<=goog.string.compareVersions(goog.userAgent.VERSION,e)}))},goog.userAgent.isVersion=goog.userAgent.isVersionOrHigher,goog.userAgent.isDocumentModeOrHigher=function(e){return Number(goog.userAgent.DOCUMENT_MODE)>=e},goog.userAgent.isDocumentMode=goog.userAgent.isDocumentModeOrHigher,goog.userAgent.DOCUMENT_MODE=function(){if(goog.global.document&&goog.userAgent.IE)return goog.userAgent.getDocumentMode_()}(),goog.userAgent.product={},goog.userAgent.product.ASSUME_FIREFOX=!1,goog.userAgent.product.ASSUME_IPHONE=!1,goog.userAgent.product.ASSUME_IPAD=!1,goog.userAgent.product.ASSUME_ANDROID=!1,goog.userAgent.product.ASSUME_CHROME=!1,goog.userAgent.product.ASSUME_SAFARI=!1,goog.userAgent.product.PRODUCT_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_OPERA||goog.userAgent.product.ASSUME_FIREFOX||goog.userAgent.product.ASSUME_IPHONE||goog.userAgent.product.ASSUME_IPAD||goog.userAgent.product.ASSUME_ANDROID||goog.userAgent.product.ASSUME_CHROME||goog.userAgent.product.ASSUME_SAFARI,goog.userAgent.product.OPERA=goog.userAgent.OPERA,goog.userAgent.product.IE=goog.userAgent.IE,goog.userAgent.product.EDGE=goog.userAgent.EDGE,goog.userAgent.product.FIREFOX=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_FIREFOX:goog.labs.userAgent.browser.isFirefox(),goog.userAgent.product.isIphoneOrIpod_=function(){return goog.labs.userAgent.platform.isIphone()||goog.labs.userAgent.platform.isIpod()},goog.userAgent.product.IPHONE=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPHONE:goog.userAgent.product.isIphoneOrIpod_(),goog.userAgent.product.IPAD=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPAD:goog.labs.userAgent.platform.isIpad(),goog.userAgent.product.ANDROID=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_ANDROID:goog.labs.userAgent.browser.isAndroidBrowser(),goog.userAgent.product.CHROME=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_CHROME:goog.labs.userAgent.browser.isChrome(),goog.userAgent.product.isSafariDesktop_=function(){return goog.labs.userAgent.browser.isSafari()&&!goog.labs.userAgent.platform.isIos()},goog.userAgent.product.SAFARI=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_SAFARI:goog.userAgent.product.isSafariDesktop_(),goog.crypt.base64={},goog.crypt.base64.DEFAULT_ALPHABET_COMMON_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",goog.crypt.base64.ENCODED_VALS=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_+"+/=",goog.crypt.base64.ENCODED_VALS_WEBSAFE=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_+"-_.",goog.crypt.base64.Alphabet={DEFAULT:0,NO_PADDING:1,WEBSAFE:2,WEBSAFE_DOT_PADDING:3,WEBSAFE_NO_PADDING:4},goog.crypt.base64.paddingChars_="=.",goog.crypt.base64.isPadding_=function(e){return goog.string.contains(goog.crypt.base64.paddingChars_,e)},goog.crypt.base64.byteToCharMaps_={};goog.crypt.base64.charToByteMap_=null,goog.crypt.base64.ASSUME_NATIVE_SUPPORT_=goog.userAgent.GECKO||goog.userAgent.WEBKIT&&!goog.userAgent.product.SAFARI||goog.userAgent.OPERA,goog.crypt.base64.HAS_NATIVE_ENCODE_=goog.crypt.base64.ASSUME_NATIVE_SUPPORT_||"function"==typeof goog.global.btoa,goog.crypt.base64.HAS_NATIVE_DECODE_=goog.crypt.base64.ASSUME_NATIVE_SUPPORT_||!goog.userAgent.product.SAFARI&&!goog.userAgent.IE&&"function"==typeof goog.global.atob,goog.crypt.base64.encodeByteArray=function(e,t){goog.asserts.assert(goog.isArrayLike(e),"encodeByteArray takes an array as a parameter"),void 0===t&&(t=goog.crypt.base64.Alphabet.DEFAULT),goog.crypt.base64.init_(),t=goog.crypt.base64.byteToCharMaps_[t];for(var o=[],r=0;r<e.length;r+=3){var n=e[r],s=r+1<e.length,i=s?e[r+1]:0,a=r+2<e.length,g=a?e[r+2]:0,l=n>>2;n=(3&n)<<4|i>>4,i=(15&i)<<2|g>>6,g&=63,a||(g=64,s||(i=64)),o.push(t[l],t[n],t[i]||"",t[g]||"")}return o.join("")},goog.crypt.base64.encodeString=function(e,t){return goog.crypt.base64.HAS_NATIVE_ENCODE_&&!t?goog.global.btoa(e):goog.crypt.base64.encodeByteArray(goog.crypt.stringToByteArray(e),t)},goog.crypt.base64.decodeString=function(e,t){if(goog.crypt.base64.HAS_NATIVE_DECODE_&&!t)return goog.global.atob(e);var o="";return goog.crypt.base64.decodeStringInternal_(e,(function(e){o+=String.fromCharCode(e)})),o},goog.crypt.base64.decodeStringToByteArray=function(e,t){var o=[];return goog.crypt.base64.decodeStringInternal_(e,(function(e){o.push(e)})),o},goog.crypt.base64.decodeStringToUint8Array=function(e){goog.asserts.assert(!goog.userAgent.IE||goog.userAgent.isVersionOrHigher("10"),"Browser does not support typed arrays");var t=e.length,o=3*t/4;o%3?o=Math.floor(o):goog.crypt.base64.isPadding_(e[t-1])&&(o=goog.crypt.base64.isPadding_(e[t-2])?o-2:o-1);var r=new Uint8Array(o),n=0;return goog.crypt.base64.decodeStringInternal_(e,(function(e){r[n++]=e})),r.subarray(0,n)},goog.crypt.base64.decodeStringInternal_=function(e,t){function o(t){for(;r<e.length;){var o=e.charAt(r++),n=goog.crypt.base64.charToByteMap_[o];if(null!=n)return n;if(!goog.string.isEmptyOrWhitespace(o))throw Error("Unknown base64 encoding at char: "+o)}return t}goog.crypt.base64.init_();for(var r=0;;){var n=o(-1),s=o(0),i=o(64),a=o(64);if(64===a&&-1===n)break;t(n<<2|s>>4),64!=i&&(t(s<<4&240|i>>2),64!=a&&t(i<<6&192|a))}},goog.crypt.base64.init_=function(){if(!goog.crypt.base64.charToByteMap_){goog.crypt.base64.charToByteMap_={};for(var e=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_.split(""),t=["+/=","+/","-_=","-_.","-_"],o=0;5>o;o++){var r=e.concat(t[o].split(""));goog.crypt.base64.byteToCharMaps_[o]=r;for(var n=0;n<r.length;n++){var s=r[n],i=goog.crypt.base64.charToByteMap_[s];void 0===i?goog.crypt.base64.charToByteMap_[s]=n:goog.asserts.assert(i===n)}}}},jspb.utils={},jspb.utils.split64Low=0,jspb.utils.split64High=0,jspb.utils.splitUint64=function(e){var t=e>>>0;e=Math.floor((e-t)/jspb.BinaryConstants.TWO_TO_32)>>>0,jspb.utils.split64Low=t,jspb.utils.split64High=e},jspb.utils.splitInt64=function(e){var t=0>e,o=(e=Math.abs(e))>>>0;e=Math.floor((e-o)/jspb.BinaryConstants.TWO_TO_32),e>>>=0,t&&(e=~e>>>0,4294967295<(o=1+(~o>>>0))&&(o=0,4294967295<++e&&(e=0))),jspb.utils.split64Low=o,jspb.utils.split64High=e},jspb.utils.splitZigzag64=function(e){var t=0>e;e=2*Math.abs(e),jspb.utils.splitUint64(e),e=jspb.utils.split64Low;var o=jspb.utils.split64High;t&&(0==e?0==o?o=e=4294967295:(o--,e=4294967295):e--),jspb.utils.split64Low=e,jspb.utils.split64High=o},jspb.utils.splitFloat32=function(e){var t=0>e?1:0;if(0===(e=t?-e:e))0<1/e?(jspb.utils.split64High=0,jspb.utils.split64Low=0):(jspb.utils.split64High=0,jspb.utils.split64Low=2147483648);else if(isNaN(e))jspb.utils.split64High=0,jspb.utils.split64Low=2147483647;else if(e>jspb.BinaryConstants.FLOAT32_MAX)jspb.utils.split64High=0,jspb.utils.split64Low=(t<<31|2139095040)>>>0;else if(e<jspb.BinaryConstants.FLOAT32_MIN)e=Math.round(e/Math.pow(2,-149)),jspb.utils.split64High=0,jspb.utils.split64Low=(t<<31|e)>>>0;else{var o=Math.floor(Math.log(e)/Math.LN2);e*=Math.pow(2,-o),16777216<=(e=Math.round(e*jspb.BinaryConstants.TWO_TO_23))&&++o,jspb.utils.split64High=0,jspb.utils.split64Low=(t<<31|o+127<<23|8388607&e)>>>0}},jspb.utils.splitFloat64=function(e){var t=0>e?1:0;if(0===(e=t?-e:e))jspb.utils.split64High=0<1/e?0:2147483648,jspb.utils.split64Low=0;else if(isNaN(e))jspb.utils.split64High=2147483647,jspb.utils.split64Low=4294967295;else if(e>jspb.BinaryConstants.FLOAT64_MAX)jspb.utils.split64High=(t<<31|2146435072)>>>0,jspb.utils.split64Low=0;else if(e<jspb.BinaryConstants.FLOAT64_MIN){var o=e/Math.pow(2,-1074);e=o/jspb.BinaryConstants.TWO_TO_32,jspb.utils.split64High=(t<<31|e)>>>0,jspb.utils.split64Low=o>>>0}else{var r=0;if(2<=(o=e))for(;2<=o&&1023>r;)r++,o/=2;else for(;1>o&&-1022<r;)o*=2,r--;e=(o=e*Math.pow(2,-r))*jspb.BinaryConstants.TWO_TO_20&1048575,o=o*jspb.BinaryConstants.TWO_TO_52>>>0,jspb.utils.split64High=(t<<31|r+1023<<20|e)>>>0,jspb.utils.split64Low=o}},jspb.utils.splitHash64=function(e){var t=e.charCodeAt(0),o=e.charCodeAt(1),r=e.charCodeAt(2),n=e.charCodeAt(3),s=e.charCodeAt(4),i=e.charCodeAt(5),a=e.charCodeAt(6);e=e.charCodeAt(7),jspb.utils.split64Low=t+(o<<8)+(r<<16)+(n<<24)>>>0,jspb.utils.split64High=s+(i<<8)+(a<<16)+(e<<24)>>>0},jspb.utils.joinUint64=function(e,t){return t*jspb.BinaryConstants.TWO_TO_32+(e>>>0)},jspb.utils.joinInt64=function(e,t){var o=2147483648&t;return o&&(t=~t>>>0,0==(e=1+~e>>>0)&&(t=t+1>>>0)),e=jspb.utils.joinUint64(e,t),o?-e:e},jspb.utils.toZigzag64=function(e,t,o){var r=t>>31;return o(e<<1^r,(t<<1|e>>>31)^r)},jspb.utils.joinZigzag64=function(e,t){return jspb.utils.fromZigzag64(e,t,jspb.utils.joinInt64)},jspb.utils.fromZigzag64=function(e,t,o){var r=-(1&e);return o((e>>>1|t<<31)^r,t>>>1^r)},jspb.utils.joinFloat32=function(e,t){t=2*(e>>31)+1;var o=e>>>23&255;return e&=8388607,255==o?e?NaN:1/0*t:0==o?t*Math.pow(2,-149)*e:t*Math.pow(2,o-150)*(e+Math.pow(2,23))},jspb.utils.joinFloat64=function(e,t){var o=2*(t>>31)+1,r=t>>>20&2047;return e=jspb.BinaryConstants.TWO_TO_32*(1048575&t)+e,2047==r?e?NaN:1/0*o:0==r?o*Math.pow(2,-1074)*e:o*Math.pow(2,r-1075)*(e+jspb.BinaryConstants.TWO_TO_52)},jspb.utils.joinHash64=function(e,t){return String.fromCharCode(e>>>0&255,e>>>8&255,e>>>16&255,e>>>24&255,t>>>0&255,t>>>8&255,t>>>16&255,t>>>24&255)},jspb.utils.DIGITS="0123456789abcdef".split(""),jspb.utils.ZERO_CHAR_CODE_=48,jspb.utils.A_CHAR_CODE_=97,jspb.utils.joinUnsignedDecimalString=function(e,t){function o(e,t){return e=e?String(e):"",t?"0000000".slice(e.length)+e:e}if(2097151>=t)return""+jspb.utils.joinUint64(e,t);var r=(e>>>24|t<<8)>>>0&16777215;return e=(16777215&e)+6777216*r+6710656*(t=t>>16&65535),r+=8147497*t,t*=2,1e7<=e&&(r+=Math.floor(e/1e7),e%=1e7),1e7<=r&&(t+=Math.floor(r/1e7),r%=1e7),o(t,0)+o(r,t)+o(e,1)},jspb.utils.joinSignedDecimalString=function(e,t){var o=2147483648&t;return o&&(t=~t+(0==(e=1+~e>>>0)?1:0)>>>0),e=jspb.utils.joinUnsignedDecimalString(e,t),o?"-"+e:e},jspb.utils.hash64ToDecimalString=function(e,t){jspb.utils.splitHash64(e),e=jspb.utils.split64Low;var o=jspb.utils.split64High;return t?jspb.utils.joinSignedDecimalString(e,o):jspb.utils.joinUnsignedDecimalString(e,o)},jspb.utils.hash64ArrayToDecimalStrings=function(e,t){for(var o=Array(e.length),r=0;r<e.length;r++)o[r]=jspb.utils.hash64ToDecimalString(e[r],t);return o},jspb.utils.decimalStringToHash64=function(e){function t(e,t){for(var o=0;8>o&&(1!==e||0<t);o++)t=e*r[o]+t,r[o]=255&t,t>>>=8}goog.asserts.assert(0<e.length);var o=!1;"-"===e[0]&&(o=!0,e=e.slice(1));for(var r=[0,0,0,0,0,0,0,0],n=0;n<e.length;n++)t(10,e.charCodeAt(n)-jspb.utils.ZERO_CHAR_CODE_);return o&&(function(){for(var e=0;8>e;e++)r[e]=255&~r[e]}(),t(1,1)),goog.crypt.byteArrayToString(r)},jspb.utils.splitDecimalString=function(e){jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(e))},jspb.utils.toHexDigit_=function(e){return String.fromCharCode(10>e?jspb.utils.ZERO_CHAR_CODE_+e:jspb.utils.A_CHAR_CODE_-10+e)},jspb.utils.fromHexCharCode_=function(e){return e>=jspb.utils.A_CHAR_CODE_?e-jspb.utils.A_CHAR_CODE_+10:e-jspb.utils.ZERO_CHAR_CODE_},jspb.utils.hash64ToHexString=function(e){var t=Array(18);t[0]="0",t[1]="x";for(var o=0;8>o;o++){var r=e.charCodeAt(7-o);t[2*o+2]=jspb.utils.toHexDigit_(r>>4),t[2*o+3]=jspb.utils.toHexDigit_(15&r)}return t.join("")},jspb.utils.hexStringToHash64=function(e){e=e.toLowerCase(),goog.asserts.assert(18==e.length),goog.asserts.assert("0"==e[0]),goog.asserts.assert("x"==e[1]);for(var t="",o=0;8>o;o++){var r=jspb.utils.fromHexCharCode_(e.charCodeAt(2*o+2)),n=jspb.utils.fromHexCharCode_(e.charCodeAt(2*o+3));t=String.fromCharCode(16*r+n)+t}return t},jspb.utils.hash64ToNumber=function(e,t){jspb.utils.splitHash64(e),e=jspb.utils.split64Low;var o=jspb.utils.split64High;return t?jspb.utils.joinInt64(e,o):jspb.utils.joinUint64(e,o)},jspb.utils.numberToHash64=function(e){return jspb.utils.splitInt64(e),jspb.utils.joinHash64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.utils.countVarints=function(e,t,o){for(var r=0,n=t;n<o;n++)r+=e[n]>>7;return o-t-r},jspb.utils.countVarintFields=function(e,t,o,r){var n=0;if(128>(r=8*r+jspb.BinaryConstants.WireType.VARINT))for(;t<o&&e[t++]==r;)for(n++;;){var s=e[t++];if(0==(128&s))break}else for(;t<o;){for(s=r;128<s;){if(e[t]!=(127&s|128))return n;t++,s>>=7}if(e[t++]!=s)break;for(n++;0!=(128&(s=e[t++])););}return n},jspb.utils.countFixedFields_=function(e,t,o,r,n){var s=0;if(128>r)for(;t<o&&e[t++]==r;)s++,t+=n;else for(;t<o;){for(var i=r;128<i;){if(e[t++]!=(127&i|128))return s;i>>=7}if(e[t++]!=i)break;s++,t+=n}return s},jspb.utils.countFixed32Fields=function(e,t,o,r){return jspb.utils.countFixedFields_(e,t,o,8*r+jspb.BinaryConstants.WireType.FIXED32,4)},jspb.utils.countFixed64Fields=function(e,t,o,r){return jspb.utils.countFixedFields_(e,t,o,8*r+jspb.BinaryConstants.WireType.FIXED64,8)},jspb.utils.countDelimitedFields=function(e,t,o,r){var n=0;for(r=8*r+jspb.BinaryConstants.WireType.DELIMITED;t<o;){for(var s=r;128<s;){if(e[t++]!=(127&s|128))return n;s>>=7}if(e[t++]!=s)break;n++;for(var i=0,a=1;i+=(127&(s=e[t++]))*a,a*=128,0!=(128&s););t+=i}return n},jspb.utils.debugBytesToTextFormat=function(e){var t=\'"\';if(e){e=jspb.utils.byteSourceToUint8Array(e);for(var o=0;o<e.length;o++)t+="\\\\x",16>e[o]&&(t+="0"),t+=e[o].toString(16)}return t+\'"\'},jspb.utils.debugScalarToTextFormat=function(e){return"string"==typeof e?goog.string.quote(e):e.toString()},jspb.utils.stringToByteArray=function(e){for(var t=new Uint8Array(e.length),o=0;o<e.length;o++){var r=e.charCodeAt(o);if(255<r)throw Error("Conversion error: string contains codepoint outside of byte range");t[o]=r}return t},jspb.utils.byteSourceToUint8Array=function(e){return e.constructor===Uint8Array?e:e.constructor===ArrayBuffer||"undefined"!=typeof Buffer&&e.constructor===Buffer||e.constructor===Array?new Uint8Array(e):e.constructor===String?goog.crypt.base64.decodeStringToUint8Array(e):(goog.asserts.fail("Type not convertible to Uint8Array."),new Uint8Array(0))},jspb.BinaryDecoder=function(e,t,o){this.bytes_=null,this.cursor_=this.end_=this.start_=0,this.error_=!1,e&&this.setBlock(e,t,o)},jspb.BinaryDecoder.instanceCache_=[],jspb.BinaryDecoder.alloc=function(e,t,o){if(jspb.BinaryDecoder.instanceCache_.length){var r=jspb.BinaryDecoder.instanceCache_.pop();return e&&r.setBlock(e,t,o),r}return new jspb.BinaryDecoder(e,t,o)},jspb.BinaryDecoder.prototype.free=function(){this.clear(),100>jspb.BinaryDecoder.instanceCache_.length&&jspb.BinaryDecoder.instanceCache_.push(this)},jspb.BinaryDecoder.prototype.clone=function(){return jspb.BinaryDecoder.alloc(this.bytes_,this.start_,this.end_-this.start_)},jspb.BinaryDecoder.prototype.clear=function(){this.bytes_=null,this.cursor_=this.end_=this.start_=0,this.error_=!1},jspb.BinaryDecoder.prototype.getBuffer=function(){return this.bytes_},jspb.BinaryDecoder.prototype.setBlock=function(e,t,o){this.bytes_=jspb.utils.byteSourceToUint8Array(e),this.start_=void 0!==t?t:0,this.end_=void 0!==o?this.start_+o:this.bytes_.length,this.cursor_=this.start_},jspb.BinaryDecoder.prototype.getEnd=function(){return this.end_},jspb.BinaryDecoder.prototype.setEnd=function(e){this.end_=e},jspb.BinaryDecoder.prototype.reset=function(){this.cursor_=this.start_},jspb.BinaryDecoder.prototype.getCursor=function(){return this.cursor_},jspb.BinaryDecoder.prototype.setCursor=function(e){this.cursor_=e},jspb.BinaryDecoder.prototype.advance=function(e){this.cursor_+=e,goog.asserts.assert(this.cursor_<=this.end_)},jspb.BinaryDecoder.prototype.atEnd=function(){return this.cursor_==this.end_},jspb.BinaryDecoder.prototype.pastEnd=function(){return this.cursor_>this.end_},jspb.BinaryDecoder.prototype.getError=function(){return this.error_||0>this.cursor_||this.cursor_>this.end_},jspb.BinaryDecoder.prototype.readSplitVarint64=function(e){for(var t=128,o=0,r=0,n=0;4>n&&128<=t;n++)o|=(127&(t=this.bytes_[this.cursor_++]))<<7*n;if(128<=t&&(o|=(127&(t=this.bytes_[this.cursor_++]))<<28,r|=(127&t)>>4),128<=t)for(n=0;5>n&&128<=t;n++)r|=(127&(t=this.bytes_[this.cursor_++]))<<7*n+3;if(128>t)return e(o>>>0,r>>>0);goog.asserts.fail("Failed to read varint, encoding is invalid."),this.error_=!0},jspb.BinaryDecoder.prototype.readSplitZigzagVarint64=function(e){return this.readSplitVarint64((function(t,o){return jspb.utils.fromZigzag64(t,o,e)}))},jspb.BinaryDecoder.prototype.readSplitFixed64=function(e){var t=this.bytes_,o=this.cursor_;this.cursor_+=8;for(var r=0,n=0,s=o+7;s>=o;s--)r=r<<8|t[s],n=n<<8|t[s+4];return e(r,n)},jspb.BinaryDecoder.prototype.skipVarint=function(){for(;128&this.bytes_[this.cursor_];)this.cursor_++;this.cursor_++},jspb.BinaryDecoder.prototype.unskipVarint=function(e){for(;128<e;)this.cursor_--,e>>>=7;this.cursor_--},jspb.BinaryDecoder.prototype.readUnsignedVarint32=function(){var e=this.bytes_,t=e[this.cursor_+0],o=127&t;return 128>t?(this.cursor_+=1,goog.asserts.assert(this.cursor_<=this.end_),o):(o|=(127&(t=e[this.cursor_+1]))<<7,128>t?(this.cursor_+=2,goog.asserts.assert(this.cursor_<=this.end_),o):(o|=(127&(t=e[this.cursor_+2]))<<14,128>t?(this.cursor_+=3,goog.asserts.assert(this.cursor_<=this.end_),o):(o|=(127&(t=e[this.cursor_+3]))<<21,128>t?(this.cursor_+=4,goog.asserts.assert(this.cursor_<=this.end_),o):(o|=(15&(t=e[this.cursor_+4]))<<28,128>t?(this.cursor_+=5,goog.asserts.assert(this.cursor_<=this.end_),o>>>0):(this.cursor_+=5,128<=e[this.cursor_++]&&128<=e[this.cursor_++]&&128<=e[this.cursor_++]&&128<=e[this.cursor_++]&&128<=e[this.cursor_++]&&goog.asserts.assert(!1),goog.asserts.assert(this.cursor_<=this.end_),o)))))},jspb.BinaryDecoder.prototype.readSignedVarint32=jspb.BinaryDecoder.prototype.readUnsignedVarint32,jspb.BinaryDecoder.prototype.readUnsignedVarint32String=function(){return this.readUnsignedVarint32().toString()},jspb.BinaryDecoder.prototype.readSignedVarint32String=function(){return this.readSignedVarint32().toString()},jspb.BinaryDecoder.prototype.readZigzagVarint32=function(){var e=this.readUnsignedVarint32();return e>>>1^-(1&e)},jspb.BinaryDecoder.prototype.readUnsignedVarint64=function(){return this.readSplitVarint64(jspb.utils.joinUint64)},jspb.BinaryDecoder.prototype.readUnsignedVarint64String=function(){return this.readSplitVarint64(jspb.utils.joinUnsignedDecimalString)},jspb.BinaryDecoder.prototype.readSignedVarint64=function(){return this.readSplitVarint64(jspb.utils.joinInt64)},jspb.BinaryDecoder.prototype.readSignedVarint64String=function(){return this.readSplitVarint64(jspb.utils.joinSignedDecimalString)},jspb.BinaryDecoder.prototype.readZigzagVarint64=function(){return this.readSplitVarint64(jspb.utils.joinZigzag64)},jspb.BinaryDecoder.prototype.readZigzagVarintHash64=function(){return this.readSplitZigzagVarint64(jspb.utils.joinHash64)},jspb.BinaryDecoder.prototype.readZigzagVarint64String=function(){return this.readSplitZigzagVarint64(jspb.utils.joinSignedDecimalString)},jspb.BinaryDecoder.prototype.readUint8=function(){var e=this.bytes_[this.cursor_+0];return this.cursor_+=1,goog.asserts.assert(this.cursor_<=this.end_),e},jspb.BinaryDecoder.prototype.readUint16=function(){var e=this.bytes_[this.cursor_+0],t=this.bytes_[this.cursor_+1];return this.cursor_+=2,goog.asserts.assert(this.cursor_<=this.end_),e<<0|t<<8},jspb.BinaryDecoder.prototype.readUint32=function(){var e=this.bytes_[this.cursor_+0],t=this.bytes_[this.cursor_+1],o=this.bytes_[this.cursor_+2],r=this.bytes_[this.cursor_+3];return this.cursor_+=4,goog.asserts.assert(this.cursor_<=this.end_),(e<<0|t<<8|o<<16|r<<24)>>>0},jspb.BinaryDecoder.prototype.readUint64=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinUint64(e,t)},jspb.BinaryDecoder.prototype.readUint64String=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinUnsignedDecimalString(e,t)},jspb.BinaryDecoder.prototype.readInt8=function(){var e=this.bytes_[this.cursor_+0];return this.cursor_+=1,goog.asserts.assert(this.cursor_<=this.end_),e<<24>>24},jspb.BinaryDecoder.prototype.readInt16=function(){var e=this.bytes_[this.cursor_+0],t=this.bytes_[this.cursor_+1];return this.cursor_+=2,goog.asserts.assert(this.cursor_<=this.end_),(e<<0|t<<8)<<16>>16},jspb.BinaryDecoder.prototype.readInt32=function(){var e=this.bytes_[this.cursor_+0],t=this.bytes_[this.cursor_+1],o=this.bytes_[this.cursor_+2],r=this.bytes_[this.cursor_+3];return this.cursor_+=4,goog.asserts.assert(this.cursor_<=this.end_),e<<0|t<<8|o<<16|r<<24},jspb.BinaryDecoder.prototype.readInt64=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinInt64(e,t)},jspb.BinaryDecoder.prototype.readInt64String=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinSignedDecimalString(e,t)},jspb.BinaryDecoder.prototype.readFloat=function(){var e=this.readUint32();return jspb.utils.joinFloat32(e,0)},jspb.BinaryDecoder.prototype.readDouble=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinFloat64(e,t)},jspb.BinaryDecoder.prototype.readBool=function(){return!!this.bytes_[this.cursor_++]},jspb.BinaryDecoder.prototype.readEnum=function(){return this.readSignedVarint32()},jspb.BinaryDecoder.prototype.readString=function(e){var t=this.bytes_,o=this.cursor_;e=o+e;for(var r=[],n="";o<e;){var s=t[o++];if(128>s)r.push(s);else{if(192>s)continue;if(224>s){var i=t[o++];r.push((31&s)<<6|63&i)}else if(240>s){i=t[o++];var a=t[o++];r.push((15&s)<<12|(63&i)<<6|63&a)}else 248>s&&(s=(7&s)<<18|(63&(i=t[o++]))<<12|(63&(a=t[o++]))<<6|63&t[o++],s-=65536,r.push(55296+(s>>10&1023),56320+(1023&s)))}8192<=r.length&&(n+=String.fromCharCode.apply(null,r),r.length=0)}return n+=goog.crypt.byteArrayToString(r),this.cursor_=o,n},jspb.BinaryDecoder.prototype.readStringWithLength=function(){var e=this.readUnsignedVarint32();return this.readString(e)},jspb.BinaryDecoder.prototype.readBytes=function(e){if(0>e||this.cursor_+e>this.bytes_.length)return this.error_=!0,goog.asserts.fail("Invalid byte length!"),new Uint8Array(0);var t=this.bytes_.subarray(this.cursor_,this.cursor_+e);return this.cursor_+=e,goog.asserts.assert(this.cursor_<=this.end_),t},jspb.BinaryDecoder.prototype.readVarintHash64=function(){return this.readSplitVarint64(jspb.utils.joinHash64)},jspb.BinaryDecoder.prototype.readFixedHash64=function(){var e=this.bytes_,t=this.cursor_,o=e[t+0],r=e[t+1],n=e[t+2],s=e[t+3],i=e[t+4],a=e[t+5],g=e[t+6];return e=e[t+7],this.cursor_+=8,String.fromCharCode(o,r,n,s,i,a,g,e)},jspb.BinaryReader=function(e,t,o){this.decoder_=jspb.BinaryDecoder.alloc(e,t,o),this.fieldCursor_=this.decoder_.getCursor(),this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER,this.nextWireType_=jspb.BinaryConstants.WireType.INVALID,this.error_=!1,this.readCallbacks_=null},jspb.BinaryReader.instanceCache_=[],jspb.BinaryReader.alloc=function(e,t,o){if(jspb.BinaryReader.instanceCache_.length){var r=jspb.BinaryReader.instanceCache_.pop();return e&&r.decoder_.setBlock(e,t,o),r}return new jspb.BinaryReader(e,t,o)},jspb.BinaryReader.prototype.alloc=jspb.BinaryReader.alloc,jspb.BinaryReader.prototype.free=function(){this.decoder_.clear(),this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER,this.nextWireType_=jspb.BinaryConstants.WireType.INVALID,this.error_=!1,this.readCallbacks_=null,100>jspb.BinaryReader.instanceCache_.length&&jspb.BinaryReader.instanceCache_.push(this)},jspb.BinaryReader.prototype.getFieldCursor=function(){return this.fieldCursor_},jspb.BinaryReader.prototype.getCursor=function(){return this.decoder_.getCursor()},jspb.BinaryReader.prototype.getBuffer=function(){return this.decoder_.getBuffer()},jspb.BinaryReader.prototype.getFieldNumber=function(){return this.nextField_},jspb.BinaryReader.prototype.getWireType=function(){return this.nextWireType_},jspb.BinaryReader.prototype.isDelimited=function(){return this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED},jspb.BinaryReader.prototype.isEndGroup=function(){return this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP},jspb.BinaryReader.prototype.getError=function(){return this.error_||this.decoder_.getError()},jspb.BinaryReader.prototype.setBlock=function(e,t,o){this.decoder_.setBlock(e,t,o),this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER,this.nextWireType_=jspb.BinaryConstants.WireType.INVALID},jspb.BinaryReader.prototype.reset=function(){this.decoder_.reset(),this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER,this.nextWireType_=jspb.BinaryConstants.WireType.INVALID},jspb.BinaryReader.prototype.advance=function(e){this.decoder_.advance(e)},jspb.BinaryReader.prototype.nextField=function(){if(this.decoder_.atEnd())return!1;if(this.getError())return goog.asserts.fail("Decoder hit an error"),!1;this.fieldCursor_=this.decoder_.getCursor();var e=this.decoder_.readUnsignedVarint32(),t=e>>>3;return(e&=7)!=jspb.BinaryConstants.WireType.VARINT&&e!=jspb.BinaryConstants.WireType.FIXED32&&e!=jspb.BinaryConstants.WireType.FIXED64&&e!=jspb.BinaryConstants.WireType.DELIMITED&&e!=jspb.BinaryConstants.WireType.START_GROUP&&e!=jspb.BinaryConstants.WireType.END_GROUP?(goog.asserts.fail("Invalid wire type: %s (at position %s)",e,this.fieldCursor_),this.error_=!0,!1):(this.nextField_=t,this.nextWireType_=e,!0)},jspb.BinaryReader.prototype.unskipHeader=function(){this.decoder_.unskipVarint(this.nextField_<<3|this.nextWireType_)},jspb.BinaryReader.prototype.skipMatchingFields=function(){var e=this.nextField_;for(this.unskipHeader();this.nextField()&&this.getFieldNumber()==e;)this.skipField();this.decoder_.atEnd()||this.unskipHeader()},jspb.BinaryReader.prototype.skipVarintField=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.VARINT?(goog.asserts.fail("Invalid wire type for skipVarintField"),this.skipField()):this.decoder_.skipVarint()},jspb.BinaryReader.prototype.skipDelimitedField=function(){if(this.nextWireType_!=jspb.BinaryConstants.WireType.DELIMITED)goog.asserts.fail("Invalid wire type for skipDelimitedField"),this.skipField();else{var e=this.decoder_.readUnsignedVarint32();this.decoder_.advance(e)}},jspb.BinaryReader.prototype.skipFixed32Field=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.FIXED32?(goog.asserts.fail("Invalid wire type for skipFixed32Field"),this.skipField()):this.decoder_.advance(4)},jspb.BinaryReader.prototype.skipFixed64Field=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.FIXED64?(goog.asserts.fail("Invalid wire type for skipFixed64Field"),this.skipField()):this.decoder_.advance(8)},jspb.BinaryReader.prototype.skipGroup=function(){for(var e=this.nextField_;;){if(!this.nextField()){goog.asserts.fail("Unmatched start-group tag: stream EOF"),this.error_=!0;break}if(this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP){this.nextField_!=e&&(goog.asserts.fail("Unmatched end-group tag"),this.error_=!0);break}this.skipField()}},jspb.BinaryReader.prototype.skipField=function(){switch(this.nextWireType_){case jspb.BinaryConstants.WireType.VARINT:this.skipVarintField();break;case jspb.BinaryConstants.WireType.FIXED64:this.skipFixed64Field();break;case jspb.BinaryConstants.WireType.DELIMITED:this.skipDelimitedField();break;case jspb.BinaryConstants.WireType.FIXED32:this.skipFixed32Field();break;case jspb.BinaryConstants.WireType.START_GROUP:this.skipGroup();break;default:goog.asserts.fail("Invalid wire encoding for field.")}},jspb.BinaryReader.prototype.registerReadCallback=function(e,t){null===this.readCallbacks_&&(this.readCallbacks_={}),goog.asserts.assert(!this.readCallbacks_[e]),this.readCallbacks_[e]=t},jspb.BinaryReader.prototype.runReadCallback=function(e){return goog.asserts.assert(null!==this.readCallbacks_),e=this.readCallbacks_[e],goog.asserts.assert(e),e(this)},jspb.BinaryReader.prototype.readAny=function(e){this.nextWireType_=jspb.BinaryConstants.FieldTypeToWireType(e);var t=jspb.BinaryConstants.FieldType;switch(e){case t.DOUBLE:return this.readDouble();case t.FLOAT:return this.readFloat();case t.INT64:return this.readInt64();case t.UINT64:return this.readUint64();case t.INT32:return this.readInt32();case t.FIXED64:return this.readFixed64();case t.FIXED32:return this.readFixed32();case t.BOOL:return this.readBool();case t.STRING:return this.readString();case t.GROUP:goog.asserts.fail("Group field type not supported in readAny()");case t.MESSAGE:goog.asserts.fail("Message field type not supported in readAny()");case t.BYTES:return this.readBytes();case t.UINT32:return this.readUint32();case t.ENUM:return this.readEnum();case t.SFIXED32:return this.readSfixed32();case t.SFIXED64:return this.readSfixed64();case t.SINT32:return this.readSint32();case t.SINT64:return this.readSint64();case t.FHASH64:return this.readFixedHash64();case t.VHASH64:return this.readVarintHash64();default:goog.asserts.fail("Invalid field type in readAny()")}return 0},jspb.BinaryReader.prototype.readMessage=function(e,t){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var o=this.decoder_.getEnd(),r=this.decoder_.readUnsignedVarint32();r=this.decoder_.getCursor()+r,this.decoder_.setEnd(r),t(e,this),this.decoder_.setCursor(r),this.decoder_.setEnd(o)},jspb.BinaryReader.prototype.readGroup=function(e,t,o){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.START_GROUP),goog.asserts.assert(this.nextField_==e),o(t,this),this.error_||this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP||(goog.asserts.fail("Group submessage did not end with an END_GROUP tag"),this.error_=!0)},jspb.BinaryReader.prototype.getFieldDecoder=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var e=this.decoder_.readUnsignedVarint32(),t=this.decoder_.getCursor(),o=t+e;return e=jspb.BinaryDecoder.alloc(this.decoder_.getBuffer(),t,e),this.decoder_.setCursor(o),e},jspb.BinaryReader.prototype.readInt32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint32()},jspb.BinaryReader.prototype.readInt32String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint32String()},jspb.BinaryReader.prototype.readInt64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint64()},jspb.BinaryReader.prototype.readInt64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint64String()},jspb.BinaryReader.prototype.readUint32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readUnsignedVarint32()},jspb.BinaryReader.prototype.readUint32String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readUnsignedVarint32String()},jspb.BinaryReader.prototype.readUint64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readUnsignedVarint64()},jspb.BinaryReader.prototype.readUint64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readUnsignedVarint64String()},jspb.BinaryReader.prototype.readSint32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readZigzagVarint32()},jspb.BinaryReader.prototype.readSint64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readZigzagVarint64()},jspb.BinaryReader.prototype.readSint64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readZigzagVarint64String()},jspb.BinaryReader.prototype.readFixed32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32),this.decoder_.readUint32()},jspb.BinaryReader.prototype.readFixed64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readUint64()},jspb.BinaryReader.prototype.readFixed64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readUint64String()},jspb.BinaryReader.prototype.readSfixed32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32),this.decoder_.readInt32()},jspb.BinaryReader.prototype.readSfixed32String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32),this.decoder_.readInt32().toString()},jspb.BinaryReader.prototype.readSfixed64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readInt64()},jspb.BinaryReader.prototype.readSfixed64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readInt64String()},jspb.BinaryReader.prototype.readFloat=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32),this.decoder_.readFloat()},jspb.BinaryReader.prototype.readDouble=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readDouble()},jspb.BinaryReader.prototype.readBool=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),!!this.decoder_.readUnsignedVarint32()},jspb.BinaryReader.prototype.readEnum=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint64()},jspb.BinaryReader.prototype.readString=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var e=this.decoder_.readUnsignedVarint32();return this.decoder_.readString(e)},jspb.BinaryReader.prototype.readBytes=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var e=this.decoder_.readUnsignedVarint32();return this.decoder_.readBytes(e)},jspb.BinaryReader.prototype.readVarintHash64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readVarintHash64()},jspb.BinaryReader.prototype.readSintHash64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readZigzagVarintHash64()},jspb.BinaryReader.prototype.readSplitVarint64=function(e){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSplitVarint64(e)},jspb.BinaryReader.prototype.readSplitZigzagVarint64=function(e){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSplitVarint64((function(t,o){return jspb.utils.fromZigzag64(t,o,e)}))},jspb.BinaryReader.prototype.readFixedHash64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readFixedHash64()},jspb.BinaryReader.prototype.readSplitFixed64=function(e){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readSplitFixed64(e)},jspb.BinaryReader.prototype.readPackedField_=function(e){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var t=this.decoder_.readUnsignedVarint32();t=this.decoder_.getCursor()+t;for(var o=[];this.decoder_.getCursor()<t;)o.push(e.call(this.decoder_));return o},jspb.BinaryReader.prototype.readPackedInt32=function(){return this.readPackedField_(this.decoder_.readSignedVarint32)},jspb.BinaryReader.prototype.readPackedInt32String=function(){return this.readPackedField_(this.decoder_.readSignedVarint32String)},jspb.BinaryReader.prototype.readPackedInt64=function(){return this.readPackedField_(this.decoder_.readSignedVarint64)},jspb.BinaryReader.prototype.readPackedInt64String=function(){return this.readPackedField_(this.decoder_.readSignedVarint64String)},jspb.BinaryReader.prototype.readPackedUint32=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint32)},jspb.BinaryReader.prototype.readPackedUint32String=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint32String)},jspb.BinaryReader.prototype.readPackedUint64=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint64)},jspb.BinaryReader.prototype.readPackedUint64String=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint64String)},jspb.BinaryReader.prototype.readPackedSint32=function(){return this.readPackedField_(this.decoder_.readZigzagVarint32)},jspb.BinaryReader.prototype.readPackedSint64=function(){return this.readPackedField_(this.decoder_.readZigzagVarint64)},jspb.BinaryReader.prototype.readPackedSint64String=function(){return this.readPackedField_(this.decoder_.readZigzagVarint64String)},jspb.BinaryReader.prototype.readPackedFixed32=function(){return this.readPackedField_(this.decoder_.readUint32)},jspb.BinaryReader.prototype.readPackedFixed64=function(){return this.readPackedField_(this.decoder_.readUint64)},jspb.BinaryReader.prototype.readPackedFixed64String=function(){return this.readPackedField_(this.decoder_.readUint64String)},jspb.BinaryReader.prototype.readPackedSfixed32=function(){return this.readPackedField_(this.decoder_.readInt32)},jspb.BinaryReader.prototype.readPackedSfixed64=function(){return this.readPackedField_(this.decoder_.readInt64)},jspb.BinaryReader.prototype.readPackedSfixed64String=function(){return this.readPackedField_(this.decoder_.readInt64String)},jspb.BinaryReader.prototype.readPackedFloat=function(){return this.readPackedField_(this.decoder_.readFloat)},jspb.BinaryReader.prototype.readPackedDouble=function(){return this.readPackedField_(this.decoder_.readDouble)},jspb.BinaryReader.prototype.readPackedBool=function(){return this.readPackedField_(this.decoder_.readBool)},jspb.BinaryReader.prototype.readPackedEnum=function(){return this.readPackedField_(this.decoder_.readEnum)},jspb.BinaryReader.prototype.readPackedVarintHash64=function(){return this.readPackedField_(this.decoder_.readVarintHash64)},jspb.BinaryReader.prototype.readPackedFixedHash64=function(){return this.readPackedField_(this.decoder_.readFixedHash64)},jspb.BinaryEncoder=function(){this.buffer_=[]},jspb.BinaryEncoder.prototype.length=function(){return this.buffer_.length},jspb.BinaryEncoder.prototype.end=function(){var e=this.buffer_;return this.buffer_=[],e},jspb.BinaryEncoder.prototype.writeSplitVarint64=function(e,t){for(goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(t==Math.floor(t)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_32),goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32);0<t||127<e;)this.buffer_.push(127&e|128),e=(e>>>7|t<<25)>>>0,t>>>=7;this.buffer_.push(e)},jspb.BinaryEncoder.prototype.writeSplitFixed64=function(e,t){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(t==Math.floor(t)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_32),goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32),this.writeUint32(e),this.writeUint32(t)},jspb.BinaryEncoder.prototype.writeUnsignedVarint32=function(e){for(goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_32);127<e;)this.buffer_.push(127&e|128),e>>>=7;this.buffer_.push(e)},jspb.BinaryEncoder.prototype.writeSignedVarint32=function(e){if(goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_31&&e<jspb.BinaryConstants.TWO_TO_31),0<=e)this.writeUnsignedVarint32(e);else{for(var t=0;9>t;t++)this.buffer_.push(127&e|128),e>>=7;this.buffer_.push(1)}},jspb.BinaryEncoder.prototype.writeUnsignedVarint64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_64),jspb.utils.splitInt64(e),this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeSignedVarint64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_63&&e<jspb.BinaryConstants.TWO_TO_63),jspb.utils.splitInt64(e),this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeZigzagVarint32=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_31&&e<jspb.BinaryConstants.TWO_TO_31),this.writeUnsignedVarint32((e<<1^e>>31)>>>0)},jspb.BinaryEncoder.prototype.writeZigzagVarint64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_63&&e<jspb.BinaryConstants.TWO_TO_63),jspb.utils.splitZigzag64(e),this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeZigzagVarint64String=function(e){this.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(e))},jspb.BinaryEncoder.prototype.writeZigzagVarintHash64=function(e){var t=this;jspb.utils.splitHash64(e),jspb.utils.toZigzag64(jspb.utils.split64Low,jspb.utils.split64High,(function(e,o){t.writeSplitVarint64(e>>>0,o>>>0)}))},jspb.BinaryEncoder.prototype.writeUint8=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&256>e),this.buffer_.push(e>>>0&255)},jspb.BinaryEncoder.prototype.writeUint16=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&65536>e),this.buffer_.push(e>>>0&255),this.buffer_.push(e>>>8&255)},jspb.BinaryEncoder.prototype.writeUint32=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_32),this.buffer_.push(e>>>0&255),this.buffer_.push(e>>>8&255),this.buffer_.push(e>>>16&255),this.buffer_.push(e>>>24&255)},jspb.BinaryEncoder.prototype.writeUint64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_64),jspb.utils.splitUint64(e),this.writeUint32(jspb.utils.split64Low),this.writeUint32(jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeInt8=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(-128<=e&&128>e),this.buffer_.push(e>>>0&255)},jspb.BinaryEncoder.prototype.writeInt16=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(-32768<=e&&32768>e),this.buffer_.push(e>>>0&255),this.buffer_.push(e>>>8&255)},jspb.BinaryEncoder.prototype.writeInt32=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_31&&e<jspb.BinaryConstants.TWO_TO_31),this.buffer_.push(e>>>0&255),this.buffer_.push(e>>>8&255),this.buffer_.push(e>>>16&255),this.buffer_.push(e>>>24&255)},jspb.BinaryEncoder.prototype.writeInt64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_63&&e<jspb.BinaryConstants.TWO_TO_63),jspb.utils.splitInt64(e),this.writeSplitFixed64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeInt64String=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(+e>=-jspb.BinaryConstants.TWO_TO_63&&+e<jspb.BinaryConstants.TWO_TO_63),jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(e)),this.writeSplitFixed64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeFloat=function(e){goog.asserts.assert(1/0===e||-1/0===e||isNaN(e)||e>=-jspb.BinaryConstants.FLOAT32_MAX&&e<=jspb.BinaryConstants.FLOAT32_MAX),jspb.utils.splitFloat32(e),this.writeUint32(jspb.utils.split64Low)},jspb.BinaryEncoder.prototype.writeDouble=function(e){goog.asserts.assert(1/0===e||-1/0===e||isNaN(e)||e>=-jspb.BinaryConstants.FLOAT64_MAX&&e<=jspb.BinaryConstants.FLOAT64_MAX),jspb.utils.splitFloat64(e),this.writeUint32(jspb.utils.split64Low),this.writeUint32(jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeBool=function(e){goog.asserts.assert("boolean"==typeof e||"number"==typeof e),this.buffer_.push(e?1:0)},jspb.BinaryEncoder.prototype.writeEnum=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_31&&e<jspb.BinaryConstants.TWO_TO_31),this.writeSignedVarint32(e)},jspb.BinaryEncoder.prototype.writeBytes=function(e){this.buffer_.push.apply(this.buffer_,e)},jspb.BinaryEncoder.prototype.writeVarintHash64=function(e){jspb.utils.splitHash64(e),this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeFixedHash64=function(e){jspb.utils.splitHash64(e),this.writeUint32(jspb.utils.split64Low),this.writeUint32(jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeString=function(e){for(var t=this.buffer_.length,o=0;o<e.length;o++){var r=e.charCodeAt(o);if(128>r)this.buffer_.push(r);else if(2048>r)this.buffer_.push(r>>6|192),this.buffer_.push(63&r|128);else if(65536>r)if(55296<=r&&56319>=r&&o+1<e.length){var n=e.charCodeAt(o+1);56320<=n&&57343>=n&&(r=1024*(r-55296)+n-56320+65536,this.buffer_.push(r>>18|240),this.buffer_.push(r>>12&63|128),this.buffer_.push(r>>6&63|128),this.buffer_.push(63&r|128),o++)}else this.buffer_.push(r>>12|224),this.buffer_.push(r>>6&63|128),this.buffer_.push(63&r|128)}return this.buffer_.length-t},jspb.arith={},jspb.arith.UInt64=function(e,t){this.lo=e,this.hi=t},jspb.arith.UInt64.prototype.cmp=function(e){return this.hi<e.hi||this.hi==e.hi&&this.lo<e.lo?-1:this.hi==e.hi&&this.lo==e.lo?0:1},jspb.arith.UInt64.prototype.rightShift=function(){return new jspb.arith.UInt64((this.lo>>>1|(1&this.hi)<<31)>>>0,this.hi>>>1>>>0)},jspb.arith.UInt64.prototype.leftShift=function(){return new jspb.arith.UInt64(this.lo<<1>>>0,(this.hi<<1|this.lo>>>31)>>>0)},jspb.arith.UInt64.prototype.msb=function(){return!!(2147483648&this.hi)},jspb.arith.UInt64.prototype.lsb=function(){return!!(1&this.lo)},jspb.arith.UInt64.prototype.zero=function(){return 0==this.lo&&0==this.hi},jspb.arith.UInt64.prototype.add=function(e){return new jspb.arith.UInt64((this.lo+e.lo&4294967295)>>>0>>>0,((this.hi+e.hi&4294967295)>>>0)+(4294967296<=this.lo+e.lo?1:0)>>>0)},jspb.arith.UInt64.prototype.sub=function(e){return new jspb.arith.UInt64((this.lo-e.lo&4294967295)>>>0>>>0,((this.hi-e.hi&4294967295)>>>0)-(0>this.lo-e.lo?1:0)>>>0)},jspb.arith.UInt64.mul32x32=function(e,t){var o=65535&e,r=65535&t,n=t>>>16;for(t=o*r+65536*(o*n&65535)+65536*((e>>>=16)*r&65535),o=e*n+(o*n>>>16)+(e*r>>>16);4294967296<=t;)t-=4294967296,o+=1;return new jspb.arith.UInt64(t>>>0,o>>>0)},jspb.arith.UInt64.prototype.mul=function(e){var t=jspb.arith.UInt64.mul32x32(this.lo,e);return(e=jspb.arith.UInt64.mul32x32(this.hi,e)).hi=e.lo,e.lo=0,t.add(e)},jspb.arith.UInt64.prototype.div=function(e){if(0==e)return[];var t=new jspb.arith.UInt64(0,0),o=new jspb.arith.UInt64(this.lo,this.hi);e=new jspb.arith.UInt64(e,0);for(var r=new jspb.arith.UInt64(1,0);!e.msb();)e=e.leftShift(),r=r.leftShift();for(;!r.zero();)0>=e.cmp(o)&&(t=t.add(r),o=o.sub(e)),e=e.rightShift(),r=r.rightShift();return[t,o]},jspb.arith.UInt64.prototype.toString=function(){for(var e="",t=this;!t.zero();){var o=(t=t.div(10))[0];e=t[1].lo+e,t=o}return""==e&&(e="0"),e},jspb.arith.UInt64.fromString=function(e){for(var t=new jspb.arith.UInt64(0,0),o=new jspb.arith.UInt64(0,0),r=0;r<e.length;r++){if("0">e[r]||"9"<e[r])return null;var n=parseInt(e[r],10);o.lo=n,t=t.mul(10).add(o)}return t},jspb.arith.UInt64.prototype.clone=function(){return new jspb.arith.UInt64(this.lo,this.hi)},jspb.arith.Int64=function(e,t){this.lo=e,this.hi=t},jspb.arith.Int64.prototype.add=function(e){return new jspb.arith.Int64((this.lo+e.lo&4294967295)>>>0>>>0,((this.hi+e.hi&4294967295)>>>0)+(4294967296<=this.lo+e.lo?1:0)>>>0)},jspb.arith.Int64.prototype.sub=function(e){return new jspb.arith.Int64((this.lo-e.lo&4294967295)>>>0>>>0,((this.hi-e.hi&4294967295)>>>0)-(0>this.lo-e.lo?1:0)>>>0)},jspb.arith.Int64.prototype.clone=function(){return new jspb.arith.Int64(this.lo,this.hi)},jspb.arith.Int64.prototype.toString=function(){var e=0!=(2147483648&this.hi),t=new jspb.arith.UInt64(this.lo,this.hi);return e&&(t=new jspb.arith.UInt64(0,0).sub(t)),(e?"-":"")+t.toString()},jspb.arith.Int64.fromString=function(e){var t=0<e.length&&"-"==e[0];return t&&(e=e.substring(1)),null===(e=jspb.arith.UInt64.fromString(e))?null:(t&&(e=new jspb.arith.UInt64(0,0).sub(e)),new jspb.arith.Int64(e.lo,e.hi))},jspb.BinaryWriter=function(){this.blocks_=[],this.totalLength_=0,this.encoder_=new jspb.BinaryEncoder,this.bookmarks_=[]},jspb.BinaryWriter.prototype.appendUint8Array_=function(e){var t=this.encoder_.end();this.blocks_.push(t),this.blocks_.push(e),this.totalLength_+=t.length+e.length},jspb.BinaryWriter.prototype.beginDelimited_=function(e){return this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),e=this.encoder_.end(),this.blocks_.push(e),this.totalLength_+=e.length,e.push(this.totalLength_),e},jspb.BinaryWriter.prototype.endDelimited_=function(e){var t=e.pop();for(t=this.totalLength_+this.encoder_.length()-t,goog.asserts.assert(0<=t);127<t;)e.push(127&t|128),t>>>=7,this.totalLength_++;e.push(t),this.totalLength_++},jspb.BinaryWriter.prototype.writeSerializedMessage=function(e,t,o){this.appendUint8Array_(e.subarray(t,o))},jspb.BinaryWriter.prototype.maybeWriteSerializedMessage=function(e,t,o){null!=e&&null!=t&&null!=o&&this.writeSerializedMessage(e,t,o)},jspb.BinaryWriter.prototype.reset=function(){this.blocks_=[],this.encoder_.end(),this.totalLength_=0,this.bookmarks_=[]},jspb.BinaryWriter.prototype.getResultBuffer=function(){goog.asserts.assert(0==this.bookmarks_.length);for(var e=new Uint8Array(this.totalLength_+this.encoder_.length()),t=this.blocks_,o=t.length,r=0,n=0;n<o;n++){var s=t[n];e.set(s,r),r+=s.length}return t=this.encoder_.end(),e.set(t,r),r+=t.length,goog.asserts.assert(r==e.length),this.blocks_=[e],e},jspb.BinaryWriter.prototype.getResultBase64String=function(e){return goog.crypt.base64.encodeByteArray(this.getResultBuffer(),e)},jspb.BinaryWriter.prototype.beginSubMessage=function(e){this.bookmarks_.push(this.beginDelimited_(e))},jspb.BinaryWriter.prototype.endSubMessage=function(){goog.asserts.assert(0<=this.bookmarks_.length),this.endDelimited_(this.bookmarks_.pop())},jspb.BinaryWriter.prototype.writeFieldHeader_=function(e,t){goog.asserts.assert(1<=e&&e==Math.floor(e)),this.encoder_.writeUnsignedVarint32(8*e+t)},jspb.BinaryWriter.prototype.writeAny=function(e,t,o){var r=jspb.BinaryConstants.FieldType;switch(e){case r.DOUBLE:this.writeDouble(t,o);break;case r.FLOAT:this.writeFloat(t,o);break;case r.INT64:this.writeInt64(t,o);break;case r.UINT64:this.writeUint64(t,o);break;case r.INT32:this.writeInt32(t,o);break;case r.FIXED64:this.writeFixed64(t,o);break;case r.FIXED32:this.writeFixed32(t,o);break;case r.BOOL:this.writeBool(t,o);break;case r.STRING:this.writeString(t,o);break;case r.GROUP:goog.asserts.fail("Group field type not supported in writeAny()");break;case r.MESSAGE:goog.asserts.fail("Message field type not supported in writeAny()");break;case r.BYTES:this.writeBytes(t,o);break;case r.UINT32:this.writeUint32(t,o);break;case r.ENUM:this.writeEnum(t,o);break;case r.SFIXED32:this.writeSfixed32(t,o);break;case r.SFIXED64:this.writeSfixed64(t,o);break;case r.SINT32:this.writeSint32(t,o);break;case r.SINT64:this.writeSint64(t,o);break;case r.FHASH64:this.writeFixedHash64(t,o);break;case r.VHASH64:this.writeVarintHash64(t,o);break;default:goog.asserts.fail("Invalid field type in writeAny()")}},jspb.BinaryWriter.prototype.writeUnsignedVarint32_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeUnsignedVarint32(t))},jspb.BinaryWriter.prototype.writeSignedVarint32_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(t))},jspb.BinaryWriter.prototype.writeUnsignedVarint64_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeUnsignedVarint64(t))},jspb.BinaryWriter.prototype.writeSignedVarint64_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint64(t))},jspb.BinaryWriter.prototype.writeZigzagVarint32_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint32(t))},jspb.BinaryWriter.prototype.writeZigzagVarint64_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint64(t))},jspb.BinaryWriter.prototype.writeZigzagVarint64String_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint64String(t))},jspb.BinaryWriter.prototype.writeZigzagVarintHash64_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarintHash64(t))},jspb.BinaryWriter.prototype.writeInt32=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeSignedVarint32_(e,t))},jspb.BinaryWriter.prototype.writeInt32String=function(e,t){null!=t&&(t=parseInt(t,10),goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeSignedVarint32_(e,t))},jspb.BinaryWriter.prototype.writeInt64=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_63&&t<jspb.BinaryConstants.TWO_TO_63),this.writeSignedVarint64_(e,t))},jspb.BinaryWriter.prototype.writeInt64String=function(e,t){null!=t&&(t=jspb.arith.Int64.fromString(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSplitVarint64(t.lo,t.hi))},jspb.BinaryWriter.prototype.writeUint32=function(e,t){null!=t&&(goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32),this.writeUnsignedVarint32_(e,t))},jspb.BinaryWriter.prototype.writeUint32String=function(e,t){null!=t&&(t=parseInt(t,10),goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32),this.writeUnsignedVarint32_(e,t))},jspb.BinaryWriter.prototype.writeUint64=function(e,t){null!=t&&(goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_64),this.writeUnsignedVarint64_(e,t))},jspb.BinaryWriter.prototype.writeUint64String=function(e,t){null!=t&&(t=jspb.arith.UInt64.fromString(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSplitVarint64(t.lo,t.hi))},jspb.BinaryWriter.prototype.writeSint32=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeZigzagVarint32_(e,t))},jspb.BinaryWriter.prototype.writeSint64=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_63&&t<jspb.BinaryConstants.TWO_TO_63),this.writeZigzagVarint64_(e,t))},jspb.BinaryWriter.prototype.writeSintHash64=function(e,t){null!=t&&this.writeZigzagVarintHash64_(e,t)},jspb.BinaryWriter.prototype.writeSint64String=function(e,t){null!=t&&this.writeZigzagVarint64String_(e,t)},jspb.BinaryWriter.prototype.writeFixed32=function(e,t){null!=t&&(goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeUint32(t))},jspb.BinaryWriter.prototype.writeFixed64=function(e,t){null!=t&&(goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_64),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeUint64(t))},jspb.BinaryWriter.prototype.writeFixed64String=function(e,t){null!=t&&(t=jspb.arith.UInt64.fromString(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeSplitFixed64(t.lo,t.hi))},jspb.BinaryWriter.prototype.writeSfixed32=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeInt32(t))},jspb.BinaryWriter.prototype.writeSfixed64=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_63&&t<jspb.BinaryConstants.TWO_TO_63),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeInt64(t))},jspb.BinaryWriter.prototype.writeSfixed64String=function(e,t){null!=t&&(t=jspb.arith.Int64.fromString(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeSplitFixed64(t.lo,t.hi))},jspb.BinaryWriter.prototype.writeFloat=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeFloat(t))},jspb.BinaryWriter.prototype.writeDouble=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeDouble(t))},jspb.BinaryWriter.prototype.writeBool=function(e,t){null!=t&&(goog.asserts.assert("boolean"==typeof t||"number"==typeof t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeBool(t))},jspb.BinaryWriter.prototype.writeEnum=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(t))},jspb.BinaryWriter.prototype.writeString=function(e,t){null!=t&&(e=this.beginDelimited_(e),this.encoder_.writeString(t),this.endDelimited_(e))},jspb.BinaryWriter.prototype.writeBytes=function(e,t){null!=t&&(t=jspb.utils.byteSourceToUint8Array(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(t.length),this.appendUint8Array_(t))},jspb.BinaryWriter.prototype.writeMessage=function(e,t,o){null!=t&&(e=this.beginDelimited_(e),o(t,this),this.endDelimited_(e))},jspb.BinaryWriter.prototype.writeMessageSet=function(e,t,o){null!=t&&(this.writeFieldHeader_(1,jspb.BinaryConstants.WireType.START_GROUP),this.writeFieldHeader_(2,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(e),e=this.beginDelimited_(3),o(t,this),this.endDelimited_(e),this.writeFieldHeader_(1,jspb.BinaryConstants.WireType.END_GROUP))},jspb.BinaryWriter.prototype.writeGroup=function(e,t,o){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.START_GROUP),o(t,this),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.END_GROUP))},jspb.BinaryWriter.prototype.writeFixedHash64=function(e,t){null!=t&&(goog.asserts.assert(8==t.length),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeFixedHash64(t))},jspb.BinaryWriter.prototype.writeVarintHash64=function(e,t){null!=t&&(goog.asserts.assert(8==t.length),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeVarintHash64(t))},jspb.BinaryWriter.prototype.writeSplitFixed64=function(e,t,o){this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeSplitFixed64(t,o)},jspb.BinaryWriter.prototype.writeSplitVarint64=function(e,t,o){this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSplitVarint64(t,o)},jspb.BinaryWriter.prototype.writeSplitZigzagVarint64=function(e,t,o){this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT);var r=this.encoder_;jspb.utils.toZigzag64(t,o,(function(e,t){r.writeSplitVarint64(e>>>0,t>>>0)}))},jspb.BinaryWriter.prototype.writeRepeatedInt32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSignedVarint32_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedInt32String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeInt32String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedInt64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSignedVarint64_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSplitFixed64=function(e,t,o,r){if(null!=t)for(var n=0;n<t.length;n++)this.writeSplitFixed64(e,o(t[n]),r(t[n]))},jspb.BinaryWriter.prototype.writeRepeatedSplitVarint64=function(e,t,o,r){if(null!=t)for(var n=0;n<t.length;n++)this.writeSplitVarint64(e,o(t[n]),r(t[n]))},jspb.BinaryWriter.prototype.writeRepeatedSplitZigzagVarint64=function(e,t,o,r){if(null!=t)for(var n=0;n<t.length;n++)this.writeSplitZigzagVarint64(e,o(t[n]),r(t[n]))},jspb.BinaryWriter.prototype.writeRepeatedInt64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeInt64String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedUint32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeUnsignedVarint32_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedUint32String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeUint32String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedUint64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeUnsignedVarint64_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedUint64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeUint64String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSint32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeZigzagVarint32_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSint64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeZigzagVarint64_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSint64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeZigzagVarint64String_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSintHash64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeZigzagVarintHash64_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedFixed32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFixed32(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedFixed64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFixed64(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedFixed64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFixed64String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSfixed32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSfixed32(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSfixed64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSfixed64(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSfixed64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSfixed64String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedFloat=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFloat(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedDouble=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeDouble(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedBool=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeBool(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedEnum=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeEnum(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedString=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeString(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedBytes=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeBytes(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedMessage=function(e,t,o){if(null!=t)for(var r=0;r<t.length;r++){var n=this.beginDelimited_(e);o(t[r],this),this.endDelimited_(n)}},jspb.BinaryWriter.prototype.writeRepeatedGroup=function(e,t,o){if(null!=t)for(var r=0;r<t.length;r++)this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.START_GROUP),o(t[r],this),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.END_GROUP)},jspb.BinaryWriter.prototype.writeRepeatedFixedHash64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFixedHash64(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedVarintHash64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeVarintHash64(e,t[o])},jspb.BinaryWriter.prototype.writePackedInt32=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeSignedVarint32(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedInt32String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeSignedVarint32(parseInt(t[o],10));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedInt64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeSignedVarint64(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSplitFixed64=function(e,t,o,r){if(null!=t){e=this.beginDelimited_(e);for(var n=0;n<t.length;n++)this.encoder_.writeSplitFixed64(o(t[n]),r(t[n]));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSplitVarint64=function(e,t,o,r){if(null!=t){e=this.beginDelimited_(e);for(var n=0;n<t.length;n++)this.encoder_.writeSplitVarint64(o(t[n]),r(t[n]));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSplitZigzagVarint64=function(e,t,o,r){if(null!=t){e=this.beginDelimited_(e);for(var n=this.encoder_,s=0;s<t.length;s++)jspb.utils.toZigzag64(o(t[s]),r(t[s]),(function(e,t){n.writeSplitVarint64(e>>>0,t>>>0)}));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedInt64String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++){var r=jspb.arith.Int64.fromString(t[o]);this.encoder_.writeSplitVarint64(r.lo,r.hi)}this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedUint32=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeUnsignedVarint32(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedUint32String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeUnsignedVarint32(parseInt(t[o],10));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedUint64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeUnsignedVarint64(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedUint64String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++){var r=jspb.arith.UInt64.fromString(t[o]);this.encoder_.writeSplitVarint64(r.lo,r.hi)}this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSint32=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeZigzagVarint32(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSint64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeZigzagVarint64(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSint64String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(t[o]));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSintHash64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeZigzagVarintHash64(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedFixed32=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*t.length),e=0;e<t.length;e++)this.encoder_.writeUint32(t[e])},jspb.BinaryWriter.prototype.writePackedFixed64=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeUint64(t[e])},jspb.BinaryWriter.prototype.writePackedFixed64String=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++){var o=jspb.arith.UInt64.fromString(t[e]);this.encoder_.writeSplitFixed64(o.lo,o.hi)}},jspb.BinaryWriter.prototype.writePackedSfixed32=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*t.length),e=0;e<t.length;e++)this.encoder_.writeInt32(t[e])},jspb.BinaryWriter.prototype.writePackedSfixed64=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeInt64(t[e])},jspb.BinaryWriter.prototype.writePackedSfixed64String=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeInt64String(t[e])},jspb.BinaryWriter.prototype.writePackedFloat=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*t.length),e=0;e<t.length;e++)this.encoder_.writeFloat(t[e])},jspb.BinaryWriter.prototype.writePackedDouble=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeDouble(t[e])},jspb.BinaryWriter.prototype.writePackedBool=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(t.length),e=0;e<t.length;e++)this.encoder_.writeBool(t[e])},jspb.BinaryWriter.prototype.writePackedEnum=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeEnum(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedFixedHash64=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeFixedHash64(t[e])},jspb.BinaryWriter.prototype.writePackedVarintHash64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeVarintHash64(t[o]);this.endDelimited_(e)}},jspb.Map=function(e,t){this.arr_=e,this.valueCtor_=t,this.map_={},this.arrClean=!0,0<this.arr_.length&&this.loadFromArray_()},jspb.Map.prototype.loadFromArray_=function(){for(var e=0;e<this.arr_.length;e++){var t=this.arr_[e],o=t[0];this.map_[o.toString()]=new jspb.Map.Entry_(o,t[1])}this.arrClean=!0},jspb.Map.prototype.toArray=function(){if(this.arrClean){if(this.valueCtor_){var e,t=this.map_;for(e in t)if(Object.prototype.hasOwnProperty.call(t,e)){var o=t[e].valueWrapper;o&&o.toArray()}}}else{for(this.arr_.length=0,(t=this.stringKeys_()).sort(),e=0;e<t.length;e++){var r=this.map_[t[e]];(o=r.valueWrapper)&&o.toArray(),this.arr_.push([r.key,r.value])}this.arrClean=!0}return this.arr_},jspb.Map.prototype.toObject=function(e,t){for(var o=this.toArray(),r=[],n=0;n<o.length;n++){var s=this.map_[o[n][0].toString()];this.wrapEntry_(s);var i=s.valueWrapper;i?(goog.asserts.assert(t),r.push([s.key,t(e,i)])):r.push([s.key,s.value])}return r},jspb.Map.fromObject=function(e,t,o){t=new jspb.Map([],t);for(var r=0;r<e.length;r++){var n=e[r][0],s=o(e[r][1]);t.set(n,s)}return t},jspb.Map.ArrayIteratorIterable_=function(e){this.idx_=0,this.arr_=e},jspb.Map.ArrayIteratorIterable_.prototype.next=function(){return this.idx_<this.arr_.length?{done:!1,value:this.arr_[this.idx_++]}:{done:!0,value:void 0}},"undefined"!=typeof Symbol&&(jspb.Map.ArrayIteratorIterable_.prototype[Symbol.iterator]=function(){return this}),jspb.Map.prototype.getLength=function(){return this.stringKeys_().length},jspb.Map.prototype.clear=function(){this.map_={},this.arrClean=!1},jspb.Map.prototype.del=function(e){e=e.toString();var t=this.map_.hasOwnProperty(e);return delete this.map_[e],this.arrClean=!1,t},jspb.Map.prototype.getEntryList=function(){var e=[],t=this.stringKeys_();t.sort();for(var o=0;o<t.length;o++){var r=this.map_[t[o]];e.push([r.key,r.value])}return e},jspb.Map.prototype.entries=function(){var e=[],t=this.stringKeys_();t.sort();for(var o=0;o<t.length;o++){var r=this.map_[t[o]];e.push([r.key,this.wrapEntry_(r)])}return new jspb.Map.ArrayIteratorIterable_(e)},jspb.Map.prototype.keys=function(){var e=[],t=this.stringKeys_();t.sort();for(var o=0;o<t.length;o++)e.push(this.map_[t[o]].key);return new jspb.Map.ArrayIteratorIterable_(e)},jspb.Map.prototype.values=function(){var e=[],t=this.stringKeys_();t.sort();for(var o=0;o<t.length;o++)e.push(this.wrapEntry_(this.map_[t[o]]));return new jspb.Map.ArrayIteratorIterable_(e)},jspb.Map.prototype.forEach=function(e,t){var o=this.stringKeys_();o.sort();for(var r=0;r<o.length;r++){var n=this.map_[o[r]];e.call(t,this.wrapEntry_(n),n.key,this)}},jspb.Map.prototype.set=function(e,t){var o=new jspb.Map.Entry_(e);return this.valueCtor_?(o.valueWrapper=t,o.value=t.toArray()):o.value=t,this.map_[e.toString()]=o,this.arrClean=!1,this},jspb.Map.prototype.wrapEntry_=function(e){return this.valueCtor_?(e.valueWrapper||(e.valueWrapper=new this.valueCtor_(e.value)),e.valueWrapper):e.value},jspb.Map.prototype.get=function(e){if(e=this.map_[e.toString()])return this.wrapEntry_(e)},jspb.Map.prototype.has=function(e){return e.toString()in this.map_},jspb.Map.prototype.serializeBinary=function(e,t,o,r,n){var s=this.stringKeys_();s.sort();for(var i=0;i<s.length;i++){var a=this.map_[s[i]];t.beginSubMessage(e),o.call(t,1,a.key),this.valueCtor_?r.call(t,2,this.wrapEntry_(a),n):r.call(t,2,a.value),t.endSubMessage()}},jspb.Map.deserializeBinary=function(e,t,o,r,n,s,i){for(;t.nextField()&&!t.isEndGroup();){var a=t.getFieldNumber();1==a?s=o.call(t):2==a&&(e.valueCtor_?(goog.asserts.assert(n),i||(i=new e.valueCtor_),r.call(t,i,n)):i=r.call(t))}goog.asserts.assert(null!=s),goog.asserts.assert(null!=i),e.set(s,i)},jspb.Map.prototype.stringKeys_=function(){var e,t=this.map_,o=[];for(e in t)Object.prototype.hasOwnProperty.call(t,e)&&o.push(e);return o},jspb.Map.Entry_=function(e,t){this.key=e,this.value=t,this.valueWrapper=void 0},jspb.ExtensionFieldInfo=function(e,t,o,r,n){this.fieldIndex=e,this.fieldName=t,this.ctor=o,this.toObjectFn=r,this.isRepeated=n},jspb.ExtensionFieldBinaryInfo=function(e,t,o,r,n,s){this.fieldInfo=e,this.binaryReaderFn=t,this.binaryWriterFn=o,this.binaryMessageSerializeFn=r,this.binaryMessageDeserializeFn=n,this.isPacked=s},jspb.ExtensionFieldInfo.prototype.isMessageType=function(){return!!this.ctor},jspb.Message=function(){},jspb.Message.GENERATE_TO_OBJECT=!0,jspb.Message.GENERATE_FROM_OBJECT=!goog.DISALLOW_TEST_ONLY_CODE,jspb.Message.GENERATE_TO_STRING=!0,jspb.Message.ASSUME_LOCAL_ARRAYS=!1,jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS=!0,jspb.Message.SUPPORTS_UINT8ARRAY_="function"==typeof Uint8Array,jspb.Message.prototype.getJsPbMessageId=function(){return this.messageId_},jspb.Message.getIndex_=function(e,t){return t+e.arrayIndexOffset_},jspb.Message.hiddenES6Property_=function(){},jspb.Message.getFieldNumber_=function(e,t){return t-e.arrayIndexOffset_},jspb.Message.initialize=function(e,t,o,r,n,s){if(e.wrappers_=null,t||(t=o?[o]:[]),e.messageId_=o?String(o):void 0,e.arrayIndexOffset_=0===o?-1:0,e.array=t,jspb.Message.initPivotAndExtensionObject_(e,r),e.convertedPrimitiveFields_={},jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS||(e.repeatedFields=n),n)for(t=0;t<n.length;t++)(o=n[t])<e.pivot_?(o=jspb.Message.getIndex_(e,o),e.array[o]=e.array[o]||jspb.Message.EMPTY_LIST_SENTINEL_):(jspb.Message.maybeInitEmptyExtensionObject_(e),e.extensionObject_[o]=e.extensionObject_[o]||jspb.Message.EMPTY_LIST_SENTINEL_);if(s&&s.length)for(t=0;t<s.length;t++)jspb.Message.computeOneofCase(e,s[t])},jspb.Message.EMPTY_LIST_SENTINEL_=goog.DEBUG&&Object.freeze?Object.freeze([]):[],jspb.Message.isArray_=function(e){return jspb.Message.ASSUME_LOCAL_ARRAYS?e instanceof Array:Array.isArray(e)},jspb.Message.isExtensionObject_=function(e){return!(null===e||"object"!=typeof e||jspb.Message.isArray_(e)||jspb.Message.SUPPORTS_UINT8ARRAY_&&e instanceof Uint8Array)},jspb.Message.initPivotAndExtensionObject_=function(e,t){var o=e.array.length,r=-1;if(o&&(r=o-1,o=e.array[r],jspb.Message.isExtensionObject_(o)))return e.pivot_=jspb.Message.getFieldNumber_(e,r),void(e.extensionObject_=o);-1<t?(e.pivot_=Math.max(t,jspb.Message.getFieldNumber_(e,r+1)),e.extensionObject_=null):e.pivot_=Number.MAX_VALUE},jspb.Message.maybeInitEmptyExtensionObject_=function(e){var t=jspb.Message.getIndex_(e,e.pivot_);e.array[t]||(e.extensionObject_=e.array[t]={})},jspb.Message.toObjectList=function(e,t,o){for(var r=[],n=0;n<e.length;n++)r[n]=t.call(e[n],o,e[n]);return r},jspb.Message.toObjectExtension=function(e,t,o,r,n){for(var s in o){var i=o[s],a=r.call(e,i);if(null!=a){for(var g in i.fieldName)if(i.fieldName.hasOwnProperty(g))break;t[g]=i.toObjectFn?i.isRepeated?jspb.Message.toObjectList(a,i.toObjectFn,n):i.toObjectFn(n,a):a}}},jspb.Message.serializeBinaryExtensions=function(e,t,o,r){for(var n in o){var s=o[n],i=s.fieldInfo;if(!s.binaryWriterFn)throw Error("Message extension present that was generated without binary serialization support");var a=r.call(e,i);if(null!=a)if(i.isMessageType()){if(!s.binaryMessageSerializeFn)throw Error("Message extension present holding submessage without binary support enabled, and message is being serialized to binary format");s.binaryWriterFn.call(t,i.fieldIndex,a,s.binaryMessageSerializeFn)}else s.binaryWriterFn.call(t,i.fieldIndex,a)}},jspb.Message.readBinaryExtension=function(e,t,o,r,n){var s=o[t.getFieldNumber()];if(s){if(o=s.fieldInfo,!s.binaryReaderFn)throw Error("Deserializing extension whose generated code does not support binary format");if(o.isMessageType()){var i=new o.ctor;s.binaryReaderFn.call(t,i,s.binaryMessageDeserializeFn)}else i=s.binaryReaderFn.call(t);o.isRepeated&&!s.isPacked?(t=r.call(e,o))?t.push(i):n.call(e,o,[i]):n.call(e,o,i)}else t.skipField()},jspb.Message.getField=function(e,t){if(t<e.pivot_){t=jspb.Message.getIndex_(e,t);var o=e.array[t];return o===jspb.Message.EMPTY_LIST_SENTINEL_?e.array[t]=[]:o}if(e.extensionObject_)return(o=e.extensionObject_[t])===jspb.Message.EMPTY_LIST_SENTINEL_?e.extensionObject_[t]=[]:o},jspb.Message.getRepeatedField=function(e,t){return jspb.Message.getField(e,t)},jspb.Message.getOptionalFloatingPointField=function(e,t){return null==(e=jspb.Message.getField(e,t))?e:+e},jspb.Message.getBooleanField=function(e,t){return null==(e=jspb.Message.getField(e,t))?e:!!e},jspb.Message.getRepeatedFloatingPointField=function(e,t){var o=jspb.Message.getRepeatedField(e,t);if(e.convertedPrimitiveFields_||(e.convertedPrimitiveFields_={}),!e.convertedPrimitiveFields_[t]){for(var r=0;r<o.length;r++)o[r]=+o[r];e.convertedPrimitiveFields_[t]=!0}return o},jspb.Message.getRepeatedBooleanField=function(e,t){var o=jspb.Message.getRepeatedField(e,t);if(e.convertedPrimitiveFields_||(e.convertedPrimitiveFields_={}),!e.convertedPrimitiveFields_[t]){for(var r=0;r<o.length;r++)o[r]=!!o[r];e.convertedPrimitiveFields_[t]=!0}return o},jspb.Message.bytesAsB64=function(e){return null==e||"string"==typeof e?e:jspb.Message.SUPPORTS_UINT8ARRAY_&&e instanceof Uint8Array?goog.crypt.base64.encodeByteArray(e):(goog.asserts.fail("Cannot coerce to b64 string: "+goog.typeOf(e)),null)},jspb.Message.bytesAsU8=function(e){return null==e||e instanceof Uint8Array?e:"string"==typeof e?goog.crypt.base64.decodeStringToUint8Array(e):(goog.asserts.fail("Cannot coerce to Uint8Array: "+goog.typeOf(e)),null)},jspb.Message.bytesListAsB64=function(e){return jspb.Message.assertConsistentTypes_(e),e.length&&"string"!=typeof e[0]?goog.array.map(e,jspb.Message.bytesAsB64):e},jspb.Message.bytesListAsU8=function(e){return jspb.Message.assertConsistentTypes_(e),!e.length||e[0]instanceof Uint8Array?e:goog.array.map(e,jspb.Message.bytesAsU8)},jspb.Message.assertConsistentTypes_=function(e){if(goog.DEBUG&&e&&1<e.length){var t=goog.typeOf(e[0]);goog.array.forEach(e,(function(e){goog.typeOf(e)!=t&&goog.asserts.fail("Inconsistent type in JSPB repeated field array. Got "+goog.typeOf(e)+" expected "+t)}))}},jspb.Message.getFieldWithDefault=function(e,t,o){return null==(e=jspb.Message.getField(e,t))?o:e},jspb.Message.getBooleanFieldWithDefault=function(e,t,o){return null==(e=jspb.Message.getBooleanField(e,t))?o:e},jspb.Message.getFloatingPointFieldWithDefault=function(e,t,o){return null==(e=jspb.Message.getOptionalFloatingPointField(e,t))?o:e},jspb.Message.getFieldProto3=jspb.Message.getFieldWithDefault,jspb.Message.getMapField=function(e,t,o,r){if(e.wrappers_||(e.wrappers_={}),t in e.wrappers_)return e.wrappers_[t];var n=jspb.Message.getField(e,t);if(!n){if(o)return;n=[],jspb.Message.setField(e,t,n)}return e.wrappers_[t]=new jspb.Map(n,r)},jspb.Message.setField=function(e,t,o){return goog.asserts.assertInstanceof(e,jspb.Message),t<e.pivot_?e.array[jspb.Message.getIndex_(e,t)]=o:(jspb.Message.maybeInitEmptyExtensionObject_(e),e.extensionObject_[t]=o),e},jspb.Message.setProto3IntField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,0)},jspb.Message.setProto3FloatField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,0)},jspb.Message.setProto3BooleanField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,!1)},jspb.Message.setProto3StringField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,"")},jspb.Message.setProto3BytesField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,"")},jspb.Message.setProto3EnumField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,0)},jspb.Message.setProto3StringIntField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,"0")},jspb.Message.setFieldIgnoringDefault_=function(e,t,o,r){return goog.asserts.assertInstanceof(e,jspb.Message),o!==r?jspb.Message.setField(e,t,o):t<e.pivot_?e.array[jspb.Message.getIndex_(e,t)]=null:(jspb.Message.maybeInitEmptyExtensionObject_(e),delete e.extensionObject_[t]),e},jspb.Message.addToRepeatedField=function(e,t,o,r){return goog.asserts.assertInstanceof(e,jspb.Message),t=jspb.Message.getRepeatedField(e,t),null!=r?t.splice(r,0,o):t.push(o),e},jspb.Message.setOneofField=function(e,t,o,r){return goog.asserts.assertInstanceof(e,jspb.Message),(o=jspb.Message.computeOneofCase(e,o))&&o!==t&&void 0!==r&&(e.wrappers_&&o in e.wrappers_&&(e.wrappers_[o]=void 0),jspb.Message.setField(e,o,void 0)),jspb.Message.setField(e,t,r)},jspb.Message.computeOneofCase=function(e,t){for(var o,r,n=0;n<t.length;n++){var s=t[n],i=jspb.Message.getField(e,s);null!=i&&(o=s,r=i,jspb.Message.setField(e,s,void 0))}return o?(jspb.Message.setField(e,o,r),o):0},jspb.Message.getWrapperField=function(e,t,o,r){if(e.wrappers_||(e.wrappers_={}),!e.wrappers_[o]){var n=jspb.Message.getField(e,o);(r||n)&&(e.wrappers_[o]=new t(n))}return e.wrappers_[o]},jspb.Message.getRepeatedWrapperField=function(e,t,o){return jspb.Message.wrapRepeatedField_(e,t,o),(t=e.wrappers_[o])==jspb.Message.EMPTY_LIST_SENTINEL_&&(t=e.wrappers_[o]=[]),t},jspb.Message.wrapRepeatedField_=function(e,t,o){if(e.wrappers_||(e.wrappers_={}),!e.wrappers_[o]){for(var r=jspb.Message.getRepeatedField(e,o),n=[],s=0;s<r.length;s++)n[s]=new t(r[s]);e.wrappers_[o]=n}},jspb.Message.setWrapperField=function(e,t,o){goog.asserts.assertInstanceof(e,jspb.Message),e.wrappers_||(e.wrappers_={});var r=o?o.toArray():o;return e.wrappers_[t]=o,jspb.Message.setField(e,t,r)},jspb.Message.setOneofWrapperField=function(e,t,o,r){goog.asserts.assertInstanceof(e,jspb.Message),e.wrappers_||(e.wrappers_={});var n=r?r.toArray():r;return e.wrappers_[t]=r,jspb.Message.setOneofField(e,t,o,n)},jspb.Message.setRepeatedWrapperField=function(e,t,o){goog.asserts.assertInstanceof(e,jspb.Message),e.wrappers_||(e.wrappers_={}),o=o||[];for(var r=[],n=0;n<o.length;n++)r[n]=o[n].toArray();return e.wrappers_[t]=o,jspb.Message.setField(e,t,r)},jspb.Message.addToRepeatedWrapperField=function(e,t,o,r,n){jspb.Message.wrapRepeatedField_(e,r,t);var s=e.wrappers_[t];return s||(s=e.wrappers_[t]=[]),o=o||new r,e=jspb.Message.getRepeatedField(e,t),null!=n?(s.splice(n,0,o),e.splice(n,0,o.toArray())):(s.push(o),e.push(o.toArray())),o},jspb.Message.toMap=function(e,t,o,r){for(var n={},s=0;s<e.length;s++)n[t.call(e[s])]=o?o.call(e[s],r,e[s]):e[s];return n},jspb.Message.prototype.syncMapFields_=function(){if(this.wrappers_)for(var e in this.wrappers_){var t=this.wrappers_[e];if(Array.isArray(t))for(var o=0;o<t.length;o++)t[o]&&t[o].toArray();else t&&t.toArray()}},jspb.Message.prototype.toArray=function(){return this.syncMapFields_(),this.array},jspb.Message.GENERATE_TO_STRING&&(jspb.Message.prototype.toString=function(){return this.syncMapFields_(),this.array.toString()}),jspb.Message.prototype.getExtension=function(e){if(this.extensionObject_){this.wrappers_||(this.wrappers_={});var t=e.fieldIndex;if(e.isRepeated){if(e.isMessageType())return this.wrappers_[t]||(this.wrappers_[t]=goog.array.map(this.extensionObject_[t]||[],(function(t){return new e.ctor(t)}))),this.wrappers_[t]}else if(e.isMessageType())return!this.wrappers_[t]&&this.extensionObject_[t]&&(this.wrappers_[t]=new e.ctor(this.extensionObject_[t])),this.wrappers_[t];return this.extensionObject_[t]}},jspb.Message.prototype.setExtension=function(e,t){this.wrappers_||(this.wrappers_={}),jspb.Message.maybeInitEmptyExtensionObject_(this);var o=e.fieldIndex;return e.isRepeated?(t=t||[],e.isMessageType()?(this.wrappers_[o]=t,this.extensionObject_[o]=goog.array.map(t,(function(e){return e.toArray()}))):this.extensionObject_[o]=t):e.isMessageType()?(this.wrappers_[o]=t,this.extensionObject_[o]=t?t.toArray():t):this.extensionObject_[o]=t,this},jspb.Message.difference=function(e,t){if(!(e instanceof t.constructor))throw Error("Messages have different types.");var o=e.toArray();t=t.toArray();var r=[],n=0,s=o.length>t.length?o.length:t.length;for(e.getJsPbMessageId()&&(r[0]=e.getJsPbMessageId(),n=1);n<s;n++)jspb.Message.compareFields(o[n],t[n])||(r[n]=t[n]);return new e.constructor(r)},jspb.Message.equals=function(e,t){return e==t||!(!e||!t)&&e instanceof t.constructor&&jspb.Message.compareFields(e.toArray(),t.toArray())},jspb.Message.compareExtensions=function(e,t){e=e||{},t=t||{};var o,r={};for(o in e)r[o]=0;for(o in t)r[o]=0;for(o in r)if(!jspb.Message.compareFields(e[o],t[o]))return!1;return!0},jspb.Message.compareFields=function(e,t){if(e==t)return!0;if(!goog.isObject(e)||!goog.isObject(t))return!!("number"==typeof e&&isNaN(e)||"number"==typeof t&&isNaN(t))&&String(e)==String(t);if(e.constructor!=t.constructor)return!1;if(jspb.Message.SUPPORTS_UINT8ARRAY_&&e.constructor===Uint8Array){if(e.length!=t.length)return!1;for(var o=0;o<e.length;o++)if(e[o]!=t[o])return!1;return!0}if(e.constructor===Array){var r=void 0,n=void 0,s=Math.max(e.length,t.length);for(o=0;o<s;o++){var i=e[o],a=t[o];if(i&&i.constructor==Object&&(goog.asserts.assert(void 0===r),goog.asserts.assert(o===e.length-1),r=i,i=void 0),a&&a.constructor==Object&&(goog.asserts.assert(void 0===n),goog.asserts.assert(o===t.length-1),n=a,a=void 0),!jspb.Message.compareFields(i,a))return!1}return!r&&!n||(r=r||{},n=n||{},jspb.Message.compareExtensions(r,n))}if(e.constructor===Object)return jspb.Message.compareExtensions(e,t);throw Error("Invalid type in JSPB array")},jspb.Message.prototype.cloneMessage=function(){return jspb.Message.cloneMessage(this)},jspb.Message.prototype.clone=function(){return jspb.Message.cloneMessage(this)},jspb.Message.clone=function(e){return jspb.Message.cloneMessage(e)},jspb.Message.cloneMessage=function(e){return new e.constructor(jspb.Message.clone_(e.toArray()))},jspb.Message.copyInto=function(e,t){goog.asserts.assertInstanceof(e,jspb.Message),goog.asserts.assertInstanceof(t,jspb.Message),goog.asserts.assert(e.constructor==t.constructor,"Copy source and target message should have the same type."),e=jspb.Message.clone(e);for(var o=t.toArray(),r=e.toArray(),n=o.length=0;n<r.length;n++)o[n]=r[n];t.wrappers_=e.wrappers_,t.extensionObject_=e.extensionObject_},jspb.Message.clone_=function(e){if(Array.isArray(e)){for(var t=Array(e.length),o=0;o<e.length;o++){var r=e[o];null!=r&&(t[o]="object"==typeof r?jspb.Message.clone_(goog.asserts.assert(r)):r)}return t}if(jspb.Message.SUPPORTS_UINT8ARRAY_&&e instanceof Uint8Array)return new Uint8Array(e);for(o in t={},e)null!=(r=e[o])&&(t[o]="object"==typeof r?jspb.Message.clone_(goog.asserts.assert(r)):r);return t},jspb.Message.registerMessageType=function(e,t){t.messageId=e},jspb.Message.messageSetExtensions={},jspb.Message.messageSetExtensionsBinary={},jspb.Export={},exports.Map=jspb.Map,exports.Message=jspb.Message,exports.BinaryReader=jspb.BinaryReader,exports.BinaryWriter=jspb.BinaryWriter,exports.ExtensionFieldInfo=jspb.ExtensionFieldInfo,exports.ExtensionFieldBinaryInfo=jspb.ExtensionFieldBinaryInfo,exports.exportSymbol=goog.exportSymbol,exports.inherits=goog.inherits,exports.object={extend:goog.object.extend},exports.typeOf=goog.typeOf},40:function(e,t,o){var r;function n(e){var t=0;return function(){return t<e.length?{done:!1,value:e[t++]}:{done:!0}}}var s="function"==typeof Object.defineProperties?Object.defineProperty:function(e,t,o){e!=Array.prototype&&e!=Object.prototype&&(e[t]=o.value)},i=function(e){e=["object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof o.g&&o.g,e];for(var t=0;t<e.length;++t){var r=e[t];if(r&&r.Math==Math)return r}throw Error("Cannot find global object")}(this);function a(){a=function(){},i.Symbol||(i.Symbol=u)}function g(e,t){this.a=e,s(this,"description",{configurable:!0,writable:!0,value:t})}g.prototype.toString=function(){return this.a};var l,u=(l=0,function e(t){if(this instanceof e)throw new TypeError("Symbol is not a constructor");return new g("jscomp_symbol_"+(t||"")+"_"+l++,t)});function c(){a();var e=i.Symbol.iterator;e||(e=i.Symbol.iterator=i.Symbol("Symbol.iterator")),"function"!=typeof Array.prototype[e]&&s(Array.prototype,e,{configurable:!0,writable:!0,value:function(){return function(e){return c(),(e={next:e})[i.Symbol.iterator]=function(){return this},e}(n(this))}}),c=function(){}}function p(e){var t="undefined"!=typeof Symbol&&Symbol.iterator&&e[Symbol.iterator];return t?t.call(e):{next:n(e)}}var f,d="function"==typeof Object.create?Object.create:function(e){function t(){}return t.prototype=e,new t};if("function"==typeof Object.setPrototypeOf)f=Object.setPrototypeOf;else{var h;e:{var y={};try{y.__proto__={V:!0},h=y.V;break e}catch(ee){}h=!1}f=h?function(e,t){if(e.__proto__=t,e.__proto__!==t)throw new TypeError(e+" is not extensible");return e}:null}var _=f;function b(e,t){if(e.prototype=d(t.prototype),e.prototype.constructor=e,_)_(e,t);else for(var o in t)if("prototype"!=o)if(Object.defineProperties){var r=Object.getOwnPropertyDescriptor(t,o);r&&Object.defineProperty(e,o,r)}else e[o]=t[o];e.O=t.prototype}function m(e,t){if(t){var o=i;e=e.split(".");for(var r=0;r<e.length-1;r++){var n=e[r];n in o||(o[n]={}),o=o[n]}(t=t(r=o[e=e[e.length-1]]))!=r&&null!=t&&s(o,e,{configurable:!0,writable:!0,value:t})}}m("Array.prototype.keys",(function(e){return e||function(){return function(e,t){c(),e instanceof String&&(e+="");var o=0,r={next:function(){if(o<e.length){var n=o++;return{value:t(n,e[n]),done:!1}}return r.next=function(){return{done:!0,value:void 0}},r.next()}};return r[Symbol.iterator]=function(){return r},r}(this,(function(e){return e}))}})),m("Array.prototype.find",(function(e){return e||function(e,t){e:{var o=this;o instanceof String&&(o=String(o));for(var r=o.length,n=0;n<r;n++){var s=o[n];if(e.call(t,s,n,o)){e=s;break e}}e=void 0}return e}})),m("Object.is",(function(e){return e||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}})),m("Array.prototype.includes",(function(e){return e||function(e,t){var o=this;o instanceof String&&(o=String(o));var r=o.length;for(0>(t=t||0)&&(t=Math.max(t+r,0));t<r;t++){var n=o[t];if(n===e||Object.is(n,e))return!0}return!1}})),m("Promise",(function(e){function t(e){this.b=0,this.c=void 0,this.a=[];var t=this.f();try{e(t.resolve,t.reject)}catch(e){t.reject(e)}}function o(){this.a=null}function r(e){return e instanceof t?e:new t((function(t){t(e)}))}if(e)return e;o.prototype.b=function(e){if(null==this.a){this.a=[];var t=this;this.c((function(){t.g()}))}this.a.push(e)};var n=i.setTimeout;o.prototype.c=function(e){n(e,0)},o.prototype.g=function(){for(;this.a&&this.a.length;){var e=this.a;this.a=[];for(var t=0;t<e.length;++t){var o=e[t];e[t]=null;try{o()}catch(e){this.f(e)}}}this.a=null},o.prototype.f=function(e){this.c((function(){throw e}))},t.prototype.f=function(){function e(e){return function(r){o||(o=!0,e.call(t,r))}}var t=this,o=!1;return{resolve:e(this.s),reject:e(this.g)}},t.prototype.s=function(e){if(e===this)this.g(new TypeError("A Promise cannot resolve to itself"));else if(e instanceof t)this.v(e);else{e:switch(typeof e){case"object":var o=null!=e;break e;case"function":o=!0;break e;default:o=!1}o?this.m(e):this.h(e)}},t.prototype.m=function(e){var t=void 0;try{t=e.then}catch(e){return void this.g(e)}"function"==typeof t?this.w(t,e):this.h(e)},t.prototype.g=function(e){this.i(2,e)},t.prototype.h=function(e){this.i(1,e)},t.prototype.i=function(e,t){if(0!=this.b)throw Error("Cannot settle("+e+", "+t+"): Promise already settled in state"+this.b);this.b=e,this.c=t,this.l()},t.prototype.l=function(){if(null!=this.a){for(var e=0;e<this.a.length;++e)s.b(this.a[e]);this.a=null}};var s=new o;return t.prototype.v=function(e){var t=this.f();e.F(t.resolve,t.reject)},t.prototype.w=function(e,t){var o=this.f();try{e.call(t,o.resolve,o.reject)}catch(e){o.reject(e)}},t.prototype.then=function(e,o){function r(e,t){return"function"==typeof e?function(t){try{n(e(t))}catch(e){s(e)}}:t}var n,s,i=new t((function(e,t){n=e,s=t}));return this.F(r(e,n),r(o,s)),i},t.prototype.catch=function(e){return this.then(void 0,e)},t.prototype.F=function(e,t){function o(){switch(r.b){case 1:e(r.c);break;case 2:t(r.c);break;default:throw Error("Unexpected state: "+r.b)}}var r=this;null==this.a?s.b(o):this.a.push(o)},t.resolve=r,t.reject=function(e){return new t((function(t,o){o(e)}))},t.race=function(e){return new t((function(t,o){for(var n=p(e),s=n.next();!s.done;s=n.next())r(s.value).F(t,o)}))},t.all=function(e){var o=p(e),n=o.next();return n.done?r([]):new t((function(e,t){function s(t){return function(o){i[t]=o,0==--a&&e(i)}}var i=[],a=0;do{i.push(void 0),a++,r(n.value).F(s(i.length-1),t),n=o.next()}while(!n.done)}))},t}));var S=S||{},E=this||self;function T(e,t){e=e.split("."),t=t||E;for(var o=0;o<e.length;o++)if(null==(t=t[e[o]]))return null;return t}function A(){}function v(e){var t=typeof e;return"object"==t&&null!=e||"function"==t}var I="closure_uid_"+(1e9*Math.random()>>>0),R=0;function O(e,t,o){return e.call.apply(e.bind,arguments)}function j(e,t,o){if(!e)throw Error();if(2<arguments.length){var r=Array.prototype.slice.call(arguments,2);return function(){var o=Array.prototype.slice.call(arguments);return Array.prototype.unshift.apply(o,r),e.apply(t,o)}}return function(){return e.apply(t,arguments)}}function w(e,t,o){return(w=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?O:j).apply(null,arguments)}function N(e,t){function o(){}o.prototype=t.prototype,e.O=t.prototype,e.prototype=new o,e.prototype.constructor=e}function C(){this.a={}}function U(e,t,o,r){this.f=e,this.c=t,this.b=o,this.a=r}function M(e,t,o,r){o=void 0===o?{}:o,this.c=e,this.a=o,this.b=t,this.f=void 0===r?null:r}function L(e,t,o){o=void 0===o?{}:o;var r=void 0===r?new C:r;return new U(t,e,o,r)}function D(e,t,o){o=void 0===o?{}:o,t=Error.call(this,t),this.message=t.message,"stack"in t&&(this.stack=t.stack),this.code=e,this.metadata=o}function B(e){this.a=e}function P(e){if(Error.captureStackTrace)Error.captureStackTrace(this,P);else{var t=Error().stack;t&&(this.stack=t)}e&&(this.message=String(e))}function F(e,t){for(var o="",r=(e=e.split("%s")).length-1,n=0;n<r;n++)o+=e[n]+(n<t.length?t[n]:"%s");P.call(this,o+e[r])}function x(){this.l=null,this.i=[],this.m=0,this.b=W,this.f=this.a=this.h=0,this.c=null,this.g=0}C.prototype.get=function(e){return this.a[e]},C.prototype.G=function(){return Object.keys(this.a)},U.prototype.getRequestMessage=function(){return this.f},U.prototype.getMethodDescriptor=function(){return this.c},U.prototype.getMetadata=function(){return this.b},U.prototype.getCallOptions=function(){return this.a},M.prototype.getResponseMessage=function(){return this.c},M.prototype.getMetadata=function(){return this.a},M.prototype.getMethodDescriptor=function(){return this.b},M.prototype.getStatus=function(){return this.f},b(D,Error),D.prototype.name="RpcError",B.prototype.on=function(e,t){return"data"==e||"error"==e?this:this.a.on(e,t)},B.prototype.removeListener=function(e,t){return this.a.removeListener(e,t)},B.prototype.cancel=function(){this.a.cancel()},N(P,Error),P.prototype.name="CustomError",N(F,P),F.prototype.name="AssertionError";var W=0,H=128;function V(e,t,o,r){throw e.b=3,e.l="The stream is broken @"+e.m+"/"+o+". Error: "+r+". With input:\\n"+t,Error(e.l)}var G,k=Array.prototype.indexOf?function(e,t){return Array.prototype.indexOf.call(e,t,void 0)}:function(e,t){if("string"==typeof e)return"string"!=typeof t||1!=t.length?-1:e.indexOf(t,0);for(var o=0;o<e.length;o++)if(o in e&&e[o]===t)return o;return-1},Y=String.prototype.trim?function(e){return e.trim()}:function(e){return/^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(e)[1]};function z(e,t){return-1!=e.indexOf(t)}function K(e,t){return e<t?-1:e>t?1:0}e:{var X=E.navigator;if(X){var q=X.userAgent;if(q){G=q;break e}}G=""}var $="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function Z(e){var t=1;e=e.split(":");for(var o=[];0<t&&e.length;)o.push(e.shift()),t--;return e.length&&o.push(e.join(":")),o}function J(e){return J[" "](e),e}J[" "]=A;var Q,ee,te=z(G,"Opera"),oe=z(G,"Trident")||z(G,"MSIE"),re=z(G,"Edge"),ne=z(G,"Gecko")&&!(z(G.toLowerCase(),"webkit")&&!z(G,"Edge"))&&!(z(G,"Trident")||z(G,"MSIE"))&&!z(G,"Edge"),se=z(G.toLowerCase(),"webkit")&&!z(G,"Edge");e:{var ie="",ae=(ee=G,ne?/rv:([^\\);]+)(\\)|;)/.exec(ee):re?/Edge\\/([\\d\\.]+)/.exec(ee):oe?/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(ee):se?/WebKit\\/(\\S+)/.exec(ee):te?/(?:Version)[ \\/]?(\\S+)/.exec(ee):void 0);if(ae&&(ie=ae?ae[1]:""),oe){var ge,le=E.document;if(null!=(ge=le?le.documentMode:void 0)&&ge>parseFloat(ie)){Q=String(ge);break e}}Q=ie}var ue={};function ce(){return function(e){var t=ue;return Object.prototype.hasOwnProperty.call(t,9)?t[9]:t[9]=function(){for(var e=0,t=Y(String(Q)).split("."),o=Y("9").split("."),r=Math.max(t.length,o.length),n=0;0==e&&n<r;n++){var s=t[n]||"",i=o[n]||"";do{if(s=/(\\d*)(\\D*)(.*)/.exec(s)||["","","",""],i=/(\\d*)(\\D*)(.*)/.exec(i)||["","","",""],0==s[0].length&&0==i[0].length)break;e=K(0==s[1].length?0:parseInt(s[1],10),0==i[1].length?0:parseInt(i[1],10))||K(0==s[2].length,0==i[2].length)||K(s[2],i[2]),s=s[3],i=i[3]}while(0==e)}return 0<=e}()}()}function pe(){0!=fe&&(Object.prototype.hasOwnProperty.call(this,I)&&this[I]||(this[I]=++R)),this.K=this.K}var fe=0;pe.prototype.K=!1;var de=Object.freeze||function(e){return e};function he(e,t){this.type=e,this.a=this.target=t,this.defaultPrevented=!1}he.prototype.b=function(){this.defaultPrevented=!0};var ye=function(){if(!E.addEventListener||!Object.defineProperty)return!1;var e=!1,t=Object.defineProperty({},"passive",{get:function(){e=!0}});try{E.addEventListener("test",A,t),E.removeEventListener("test",A,t)}catch(e){}return e}();function _e(e,t){if(he.call(this,e?e.type:""),this.relatedTarget=this.a=this.target=null,this.button=this.screenY=this.screenX=this.clientY=this.clientX=0,this.key="",this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1,this.pointerId=0,this.pointerType="",this.c=null,e){var o=this.type=e.type,r=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:null;if(this.target=e.target||e.srcElement,this.a=t,t=e.relatedTarget){if(ne){e:{try{J(t.nodeName);var n=!0;break e}catch(e){}n=!1}n||(t=null)}}else"mouseover"==o?t=e.fromElement:"mouseout"==o&&(t=e.toElement);this.relatedTarget=t,r?(this.clientX=void 0!==r.clientX?r.clientX:r.pageX,this.clientY=void 0!==r.clientY?r.clientY:r.pageY,this.screenX=r.screenX||0,this.screenY=r.screenY||0):(this.clientX=void 0!==e.clientX?e.clientX:e.pageX,this.clientY=void 0!==e.clientY?e.clientY:e.pageY,this.screenX=e.screenX||0,this.screenY=e.screenY||0),this.button=e.button,this.key=e.key||"",this.ctrlKey=e.ctrlKey,this.altKey=e.altKey,this.shiftKey=e.shiftKey,this.metaKey=e.metaKey,this.pointerId=e.pointerId||0,this.pointerType="string"==typeof e.pointerType?e.pointerType:be[e.pointerType]||"",this.c=e,e.defaultPrevented&&_e.O.b.call(this)}}N(_e,he);var be=de({2:"touch",3:"pen",4:"mouse"});_e.prototype.b=function(){_e.O.b.call(this);var e=this.c;e.preventDefault?e.preventDefault():e.returnValue=!1};var me="closure_listenable_"+(1e6*Math.random()|0),Se=0;function Ee(e,t,o,r,n){this.listener=e,this.proxy=null,this.src=t,this.type=o,this.capture=!!r,this.H=n,this.key=++Se,this.A=this.D=!1}function Te(e){e.A=!0,e.listener=null,e.proxy=null,e.src=null,e.H=null}function Ae(e){this.src=e,this.a={},this.b=0}function ve(e,t){var o=t.type;if(o in e.a){var r,n=e.a[o],s=k(n,t);(r=0<=s)&&Array.prototype.splice.call(n,s,1),r&&(Te(t),0==e.a[o].length&&(delete e.a[o],e.b--))}}function Ie(e,t,o,r){for(var n=0;n<e.length;++n){var s=e[n];if(!s.A&&s.listener==t&&s.capture==!!o&&s.H==r)return n}return-1}Ae.prototype.add=function(e,t,o,r,n){var s=e.toString();(e=this.a[s])||(e=this.a[s]=[],this.b++);var i=Ie(e,t,r,n);return-1<i?(t=e[i],o||(t.D=!1)):((t=new Ee(t,this.src,s,!!r,n)).D=o,e.push(t)),t},Ae.prototype.remove=function(e,t,o,r){if(!((e=e.toString())in this.a))return!1;var n=this.a[e];return-1<(t=Ie(n,t,o,r))&&(Te(n[t]),Array.prototype.splice.call(n,t,1),0==n.length&&(delete this.a[e],this.b--),!0)};var Re="closure_lm_"+(1e6*Math.random()|0),Oe={};function je(e,t,o,r,n){if(r&&r.once)Ne(e,t,o,r,n);else if(Array.isArray(t))for(var s=0;s<t.length;s++)je(e,t[s],o,r,n);else o=Pe(o),e&&e[me]?e.f.add(String(t),o,!1,v(r)?!!r.capture:!!r,n):we(e,t,o,!1,r,n)}function we(e,t,o,r,n,s){if(!t)throw Error("Invalid event type");var i=v(n)?!!n.capture:!!n,a=De(e);if(a||(e[Re]=a=new Ae(e)),!(o=a.add(t,o,r,i,s)).proxy)if(r=function(){var e=Le;return function t(o){return e.call(t.src,t.listener,o)}}(),o.proxy=r,r.src=e,r.listener=o,e.addEventListener)ye||(n=i),void 0===n&&(n=!1),e.addEventListener(t.toString(),r,n);else if(e.attachEvent)e.attachEvent(Me(t.toString()),r);else{if(!e.addListener||!e.removeListener)throw Error("addEventListener and attachEvent are unavailable.");e.addListener(r)}}function Ne(e,t,o,r,n){if(Array.isArray(t))for(var s=0;s<t.length;s++)Ne(e,t[s],o,r,n);else o=Pe(o),e&&e[me]?e.f.add(String(t),o,!0,v(r)?!!r.capture:!!r,n):we(e,t,o,!0,r,n)}function Ce(e,t,o,r,n){if(Array.isArray(t))for(var s=0;s<t.length;s++)Ce(e,t[s],o,r,n);else r=v(r)?!!r.capture:!!r,o=Pe(o),e&&e[me]?e.f.remove(String(t),o,r,n):e&&(e=De(e))&&(t=e.a[t.toString()],e=-1,t&&(e=Ie(t,o,r,n)),(o=-1<e?t[e]:null)&&Ue(o))}function Ue(e){if("number"!=typeof e&&e&&!e.A){var t=e.src;if(t&&t[me])ve(t.f,e);else{var o=e.type,r=e.proxy;t.removeEventListener?t.removeEventListener(o,r,e.capture):t.detachEvent?t.detachEvent(Me(o),r):t.addListener&&t.removeListener&&t.removeListener(r),(o=De(t))?(ve(o,e),0==o.b&&(o.src=null,t[Re]=null)):Te(e)}}}function Me(e){return e in Oe?Oe[e]:Oe[e]="on"+e}function Le(e,t){if(e.A)e=!0;else{t=new _e(t,this);var o=e.listener,r=e.H||e.src;e.D&&Ue(e),e=o.call(r,t)}return e}function De(e){return(e=e[Re])instanceof Ae?e:null}var Be="__closure_events_fn_"+(1e9*Math.random()>>>0);function Pe(e){return"function"==typeof e?e:(e[Be]||(e[Be]=function(t){return e.handleEvent(t)}),e[Be])}function Fe(){pe.call(this),this.f=new Ae(this),this.U=this}function xe(e,t){e=e.U;var o=t.type||t;if("string"==typeof t)t=new he(t,e);else if(t instanceof he)t.target=t.target||e;else{var r=t;!function(e,t){for(var o,r,n=1;n<arguments.length;n++){for(o in r=arguments[n])e[o]=r[o];for(var s=0;s<$.length;s++)o=$[s],Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}}(t=new he(o,e),r)}We(e=t.a=e,o,!0,t),We(e,o,!1,t)}function We(e,t,o,r){if(t=e.f.a[String(t)]){t=t.concat();for(var n=!0,s=0;s<t.length;++s){var i=t[s];if(i&&!i.A&&i.capture==o){var a=i.listener,g=i.H||i.src;i.D&&ve(e.f,i),n=!1!==a.call(g,r)&&n}}}}function He(e,t,o){if("function"==typeof e)o&&(e=w(e,o));else{if(!e||"function"!=typeof e.handleEvent)throw Error("Invalid listener argument");e=w(e.handleEvent,e)}return 2147483647<Number(t)?-1:E.setTimeout(e,t||0)}function Ve(e,t){this.name=e,this.value=t}N(Fe,pe),Fe.prototype[me]=!0,Fe.prototype.addEventListener=function(e,t,o,r){je(this,e,t,o,r)},Fe.prototype.removeEventListener=function(e,t,o,r){Ce(this,e,t,o,r)},Ve.prototype.toString=function(){return this.name};var Ge,ke,Ye,ze=new Ve("OFF",1/0),Ke=new Ve("SEVERE",1e3),Xe=new Ve("CONFIG",700),qe=new Ve("FINE",500);function $e(){this.clear()}function Ze(e,t,o){this.reset(e||ze,t,o,void 0,void 0)}function Je(e,t){this.a=null,this.f=[],this.b=(void 0===t?null:t)||null,this.c=[],this.g={a:function(){return e}}}function Qe(e){return e.a?e.a:e.b?Qe(e.b):(function(e,t){throw new F("Failure"+(e?": "+e:""),Array.prototype.slice.call(arguments,1))}("Root logger has no level set."),ze)}function et(){this.entries={};var e=new Je("");e.a=Xe,this.entries[""]=e}function tt(e,t,o){var r=e.entries[t];if(r)return void 0!==o&&(r.a=o),r;r=tt(e,t.substr(0,t.lastIndexOf(".")));var n=new Je(t,r);return e.entries[t]=n,r.c.push(n),void 0!==o&&(n.a=o),n}function ot(){return ke||(ke=new et),ke}function rt(e,t,o){var r;(r=e)&&(r=e&&t)&&(r=(r=t.value)>=(e?Qe(tt(ot(),e.a())):ze).value),r&&(t=t||ze,r=tt(ot(),e.a()),"function"==typeof o&&(o=o()),Ge||(Ge=new $e),function(e,t){for(;e;)e.f.forEach((function(e){e(t)})),e=e.b}(r,e=new Ze(t,o,e.a())))}function nt(e,t){e&&rt(e,qe,t)}function st(){}function it(e){var t;return(t=e.a)||(t={},lt(e)&&(t[0]=!0,t[1]=!0),t=e.a=t),t}function at(){}function gt(e){return(e=lt(e))?new ActiveXObject(e):new XMLHttpRequest}function lt(e){if(!e.b&&"undefined"==typeof XMLHttpRequest&&"undefined"!=typeof ActiveXObject){for(var t=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"],o=0;o<t.length;o++){var r=t[o];try{return new ActiveXObject(r),e.b=r}catch(e){}}throw Error("Could not create ActiveXObject. ActiveX might be disabled, or MSXML might not be installed")}return e.b}function ut(e,t){this.b=e[E.Symbol.iterator](),this.c=t,this.f=0}$e.prototype.clear=function(){},Ze.prototype.reset=function(){},st.prototype.a=null,N(at,st),Ye=new at,a(),c(),ut.prototype[Symbol.iterator]=function(){return this},ut.prototype.next=function(){var e=this.b.next();return{value:e.done?void 0:this.c.call(void 0,e.value,this.f++),done:e.done}},a(),c(),a(),c();var ct="StopIteration"in E?E.StopIteration:{message:"StopIteration",stack:""};function pt(){}function ft(e){if(e instanceof ht||e instanceof yt||e instanceof _t)return e;if("function"==typeof e.next)return new ht((function(){return dt(e)}));if(a(),c(),"function"==typeof e[Symbol.iterator])return a(),c(),new ht((function(){return e[Symbol.iterator]()}));if("function"==typeof e.u)return new ht((function(){return dt(e.u())}));throw Error("Not an iterator or iterable.")}function dt(e){if(!(e instanceof pt))return e;var t=!1;return{next:function(){for(var o;!t;)try{o=e.a();break}catch(e){if(e!==ct)throw e;t=!0}return{value:o,done:t}}}}function ht(e){this.b=e}function yt(e){this.b=e}function _t(e){ht.call(this,(function(){return e})),this.f=e}function bt(e,t){this.o={},this.j=[],this.B=this.size=0;var o=arguments.length;if(1<o){if(o%2)throw Error("Uneven number of arguments");for(var r=0;r<o;r+=2)this.set(arguments[r],arguments[r+1])}else e&&this.addAll(e)}function mt(e){if(e.size!=e.j.length){for(var t=0,o=0;t<e.j.length;){var r=e.j[t];St(e.o,r)&&(e.j[o++]=r),t++}e.j.length=o}if(e.size!=e.j.length){var n={};for(o=t=0;t<e.j.length;)St(n,r=e.j[t])||(e.j[o++]=r,n[r]=1),t++;e.j.length=o}}function St(e,t){return Object.prototype.hasOwnProperty.call(e,t)}pt.prototype.next=function(){return pt.prototype.a.call(this)},pt.prototype.a=function(){throw ct},pt.prototype.u=function(){return this},a(),c(),ht.prototype.u=function(){return new yt(this.b())},ht.prototype[Symbol.iterator]=function(){return new _t(this.b())},ht.prototype.c=function(){return new _t(this.b())},a(),c(),b(yt,pt),yt.prototype.a=function(){var e=this.b.next();if(e.done)throw ct;return e.value},yt.prototype.next=function(){return yt.prototype.a.call(this)},yt.prototype[Symbol.iterator]=function(){return new _t(this.b)},yt.prototype.c=function(){return new _t(this.b)},b(_t,ht),_t.prototype.next=function(){return this.f.next()},(r=bt.prototype).G=function(){return mt(this),this.j.concat()},r.has=function(e){return St(this.o,e)},r.clear=function(){this.o={},this.B=this.size=this.j.length=0},r.remove=function(e){return this.delete(e)},r.delete=function(e){return!!St(this.o,e)&&(delete this.o[e],--this.size,this.B++,this.j.length>2*this.size&&mt(this),!0)},r.get=function(e,t){return St(this.o,e)?this.o[e]:t},r.set=function(e,t){St(this.o,e)||(this.size+=1,this.j.push(e),this.B++),this.o[e]=t},r.addAll=function(e){if(e instanceof bt)for(var t=e.G(),o=0;o<t.length;o++)this.set(t[o],e.get(t[o]));else for(t in e)this.set(t,e[t])},r.forEach=function(e,t){for(var o=this.G(),r=0;r<o.length;r++){var n=o[r],s=this.get(n);e.call(t,s,n,this)}},r.clone=function(){return new bt(this)},r.keys=function(){return ft(this.u(!0)).c()},r.values=function(){return ft(this.u(!1)).c()},r.entries=function(){var e=this;return function(e,t){return new ut(e,t)}(this.keys(),(function(t){return[t,e.get(t)]}))},r.u=function(e){mt(this);var t=0,o=this.B,r=this,n=new pt;return n.a=function(){if(o!=r.B)throw Error("The map has changed since the iterator was created");if(t>=r.j.length)throw ct;var n=r.j[t++];return e?n:r.o[n]},n.next=n.a.bind(n),n};var Et=/^(?:([^:/?#.]+):)?(?:\\/\\/(?:([^\\\\/?#]*)@)?([^\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\/?#]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$/;function Tt(e){Fe.call(this),this.headers=new bt,this.C=e||null,this.c=!1,this.J=this.a=null,this.P=this.v="",this.g=0,this.l="",this.i=this.N=this.s=this.L=!1,this.h=0,this.w=null,this.m=At,this.I=this.M=!1}N(Tt,Fe);var At="";Tt.prototype.b=tt(ot(),"goog.net.XhrIo",void 0).g;var vt=/^https?$/i,It=["POST","PUT"];function Rt(e,t){e.c=!1,e.a&&(e.i=!0,e.a.abort(),e.i=!1),e.l=t,e.g=5,Ot(e),wt(e)}function Ot(e){e.L||(e.L=!0,xe(e,"complete"),xe(e,"error"))}function jt(e){if(e.c&&void 0!==S)if(e.J[1]&&4==Ct(e)&&2==e.getStatus())nt(e.b,Mt(e,"Local request error detected and ignored"));else if(e.s&&4==Ct(e))He(e.R,0,e);else if(xe(e,"readystatechange"),4==Ct(e)){nt(e.b,Mt(e,"Request complete")),e.c=!1;try{var t,o=e.getStatus();e:switch(o){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var r=!0;break e;default:r=!1}if(!(t=r)){var n;if(n=0===o){var s=String(e.v).match(Et)[1]||null;if(!s&&E.self&&E.self.location){var i=E.self.location.protocol;s=i.substr(0,i.length-1)}n=!vt.test(s?s.toLowerCase():"")}t=n}if(t)xe(e,"complete"),xe(e,"success");else{e.g=6;try{var a=2<Ct(e)?e.a.statusText:""}catch(t){nt(e.b,"Can not get status: "+t.message),a=""}e.l=a+" ["+e.getStatus()+"]",Ot(e)}}finally{wt(e)}}}function wt(e){if(e.a){Nt(e);var t=e.a,o=e.J[0]?A:null;e.a=null,e.J=null,xe(e,"ready");try{t.onreadystatechange=o}catch(t){(e=e.b)&&rt(e,Ke,"Problem encountered resetting onreadystatechange: "+t.message)}}}function Nt(e){e.a&&e.I&&(e.a.ontimeout=null),e.w&&(E.clearTimeout(e.w),e.w=null)}function Ct(e){return e.a?e.a.readyState:0}function Ut(e,t){if(e.a&&4==Ct(e))return null===(e=e.a.getResponseHeader(t))?void 0:e}function Mt(e,t){return t+" ["+e.P+" "+e.v+" "+e.getStatus()+"]"}(r=Tt.prototype).T=function(){void 0!==S&&this.a&&(this.l="Timed out after "+this.h+"ms, aborting",this.g=8,nt(this.b,Mt(this,this.l)),xe(this,"timeout"),this.abort(8))},r.abort=function(e){this.a&&this.c&&(nt(this.b,Mt(this,"Aborting")),this.c=!1,this.i=!0,this.a.abort(),this.i=!1,this.g=e||7,xe(this,"complete"),xe(this,"abort"),wt(this))},r.R=function(){this.K||(this.N||this.s||this.i?jt(this):this.W())},r.W=function(){jt(this)},r.getStatus=function(){try{return 2<Ct(this)?this.a.status:-1}catch(e){return-1}};var Lt={},Dt=null;function Bt(){if(!Dt){Dt={};for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),t=["+/=","+/","-_=","-_.","-_"],o=0;5>o;o++){var r=e.concat(t[o].split(""));Lt[o]=r;for(var n=0;n<r.length;n++){var s=r[n];void 0===Dt[s]&&(Dt[s]=n)}}}}var Pt=["content-type","grpc-status","grpc-message"];function Ft(e){this.a=e.Z,this.m=null,this.b=[],this.h=[],this.g=[],this.f=[],this.c=[],this.l=!1,this.i=0,this.s=new x;var t=this;je(this.a,"readystatechange",(function(){var e=t.a;if(e=e.a?e.a.getResponseHeader("Content-Type"):null){if(0==(e=e.toLowerCase()).lastIndexOf("application/grpc-web-text",0)){e=t.a;try{var o=e.a?e.a.responseText:""}catch(t){nt(e.b,"Can not get responseText: "+t.message),o=""}if(o=(e=o||"").length-e.length%4,0==(e=e.substr(t.i,o-t.i)).length)return;t.i=o,e=function(e){var t=e.length,o=3*t/4;o%3?o=Math.floor(o):z("=.",e[t-1])&&(o=z("=.",e[t-2])?o-2:o-1);var r=new Uint8Array(o),n=0;return function(e,t){function o(t){for(;r<e.length;){var o=e.charAt(r++),n=Dt[o];if(null!=n)return n;if(!/^[\\s\\xa0]*$/.test(o))throw Error("Unknown base64 encoding at char: "+o)}return t}Bt();for(var r=0;;){var n=o(-1),s=o(0),i=o(64),a=o(64);if(64===a&&-1===n)break;t(n<<2|s>>4),64!=i&&(t(s<<4&240|i>>2),64!=a&&t(i<<6&192|a))}}(e,(function(e){r[n++]=e})),r.subarray(0,n)}(e)}else{if(0!=e.lastIndexOf("application/grpc",0))return void Wt(t,new D(2,"Unknown Content-type received."));e=new Uint8Array(function(e){try{if(!e.a)return null;if("response"in e.a)return e.a.response;switch(e.m){case At:case"text":return e.a.responseText;case"arraybuffer":if("mozResponseArrayBuffer"in e.a)return e.a.mozResponseArrayBuffer}var t=e.b;return t&&rt(t,Ke,"Response type "+e.m+" is not supported on this browser"),null}catch(t){return nt(e.b,"Can not get response: "+t.message),null}}(t.a))}o=null;try{o=function(e,t){function o(e){a.f++,a.a=(a.a<<8)+e,4==a.f&&(a.b=2,a.g=0,"undefined"!=typeof Uint8Array?a.c=new Uint8Array(a.a):a.c=Array(a.a),0==a.a&&n())}function r(e){a.c[a.g++]=e,a.g==a.a&&n()}function n(){var e={};e[a.h]=a.c,a.i.push(e),a.b=W}var s,i,a=e,g=0;for(s=t instanceof Uint8Array||t instanceof Array?t:new Uint8Array(t);g<s.length;){switch(a.b){case 3:V(a,s,g,"stream already broken");break;case W:0==(i=s[g])||i==H?a.h=i:V(a,s,g,"invalid frame byte"),a.b=1,a.a=0,a.f=0;break;case 1:o(s[g]);break;case 2:r(s[g]);break;default:throw Error("unexpected parser state: "+a.b)}a.m++,g++}return e=a.i,a.i=[],0<e.length?e:null}(t.s,e)}catch(e){Wt(t,new D(2,"Error in parsing response body"))}if(o)for(e=0;e<o.length;e++){if(0 in o[e]){var r=o[e][0];if(r){var n=void 0;try{n=t.m(r)}catch(e){Wt(t,new D(13,"Error when deserializing response data: "+n))}if(n){r=t;for(var s=0;s<r.b.length;s++)r.b[s](n)}}}if(H in o[e]&&0<o[e][H].length){for(r="",n=0;n<o[e][H].length;n++)r+=String.fromCharCode(o[e][H][n]);for(r=r.trim().split("\\r\\n"),n={},s=0;s<r.length;s++){var i=r[s].indexOf(":");n[r[s].substring(0,i).trim()]=r[s].substring(i+1).trim()}r=n,n=0,s="","grpc-status"in r&&(n=Number(r["grpc-status"]),delete r["grpc-status"]),"grpc-message"in r&&(s=r["grpc-message"],delete r["grpc-message"]),Wt(t,new D(n,s,r))}}}})),je(this.a,"complete",(function(){var e=t.a.g,o=2,r="",n={},s=function(e){var t={};e=(e.a&&4==Ct(e)&&e.a.getAllResponseHeaders()||"").split("\\r\\n");for(var o=0;o<e.length;o++)if(!/^[\\s\\xa0]*$/.test(e[o])){var r=Z(e[o]),n=r[0];if("string"==typeof(r=r[1])){r=r.trim();var s=t[n]||[];t[n]=s,s.push(r)}}return function(e,t){var o,r={};for(o in e)r[o]=t.call(void 0,e[o],o,e);return r}(t,(function(e){return e.join(", ")}))}(t.a);if(Object.keys(s).forEach((function(e){Pt.includes(e)||(n[e]=s[e])})),function(e,t){for(var o=0;o<e.g.length;o++)e.g[o](t)}(t,n),0!=e){switch(e){case 7:o=10;break;case 8:o=4;break;case 6:o=function(e){switch(e){case 200:return 0;case 400:return 3;case 401:return 16;case 403:return 7;case 404:return 5;case 409:return 10;case 412:return 9;case 429:return 8;case 499:return 1;case 500:default:return 2;case 501:return 12;case 503:return 14;case 504:return 4}}(t.a.getStatus());break;default:o=14}10==o&&t.l||Wt(t,new D(o,function(e){switch(e){case 0:return"No Error";case 1:return"Access denied to content document";case 2:return"File not found";case 3:return"Firefox silently errored";case 4:return"Application custom error";case 5:return"An exception occurred";case 6:return"Http response at 400 or 500 level";case 7:return"Request was aborted";case 8:return"Request timed out";case 9:return"The resource is not available offline";default:return"Unrecognized error code"}}(e)))}else e=!1,"grpc-status"in s&&(o=Number(Ut(t.a,"grpc-status")),"grpc-message"in s&&(r=Ut(t.a,"grpc-message")),0!=o&&(Wt(t,new D(o,r||"",s)),e=!0)),e||function(e){for(var t=0;t<e.c.length;t++)e.c[t]()}(t)}))}function xt(e,t){-1<(t=e.indexOf(t))&&e.splice(t,1)}function Wt(e,t){if(0!=t.code)for(var o=new D(t.code,decodeURIComponent(t.message||""),t.metadata),r=0;r<e.f.length;r++)e.f[r](o);for(t={code:t.code,details:decodeURIComponent(t.message||""),metadata:t.metadata},o=0;o<e.h.length;o++)e.h[o](t)}function Ht(e,t){e=void 0===e?{}:e,this.a=e.format||T("format",e)||"text",this.g=e.aa||T("suppressCorsPreflight",e)||!1,this.f=e.withCredentials||T("withCredentials",e)||!1,this.b=e.$||T("streamInterceptors",e)||[],this.h=e.ba||T("unaryInterceptors",e)||[],this.c=t||null}function Vt(e,t,o){var r=t.getMethodDescriptor(),n=o+r.name;(o=e.c?e.c:new Tt).M=e.f;var s=new Ft({Z:o});s.m=r.b;var i=t.getMetadata();for(a in i)o.headers.set(a,i[a]);if("text"==e.a?(o.headers.set("Content-Type","application/grpc-web-text"),o.headers.set("Accept","application/grpc-web-text")):o.headers.set("Content-Type","application/grpc-web+proto"),o.headers.set("X-User-Agent","grpc-web-javascript/0.1"),o.headers.set("X-Grpc-Web","1"),o.headers.has("deadline")){var a=Number(o.headers.get("deadline"));a=Math.ceil(a-(new Date).getTime()),o.headers.delete("deadline"),1/0===a&&(a=0),0<a&&(o.headers.set("grpc-timeout",a+"m"),o.h=Math.max(0,Math.max(1e3,Math.ceil(1.1*a))))}if(e.g){a={};for(var g=p((i=o.headers).keys()),l=g.next();!l.done;l=g.next())a[l=l.value]=i.get(l);o.headers.clear();e:{for(u in a){var u=!1;break e}u=!0}u||(a=function(e){var t="";return function(e,t){for(var o in e)t.call(void 0,e[o],o,e)}(e,(function(e,o){t+=o,t+=":",t+=e,t+="\\r\\n"})),t}(a),"string"==typeof n?(u=encodeURIComponent("$httpHeaders"),(u+=a=null!=a?"="+encodeURIComponent(String(a)):"")&&(0>(a=n.indexOf("#"))&&(a=n.length),0>(i=n.indexOf("?"))||i>a?(i=a,g=""):g=n.substring(i+1,a),a=(n=[n.substr(0,i),g,n.substr(a)])[1],n[1]=u?a?a+"&"+u:u:a,n=n[0]+(n[1]?"?"+n[1]:"")+n[2])):n.a("$httpHeaders",a))}for(r=(t=(0,r.a)(t.getRequestMessage())).length,u=[0,0,0,0],a=new Uint8Array(5+r),i=3;0<=i;i--)u[i]=r%256,r>>>=8;if(a.set(new Uint8Array(u),1),a.set(t,5),t=a,"text"==e.a){var c;for(e=t,void 0===c&&(c=0),Bt(),c=Lt[c],t=Array(Math.floor(e.length/3)),r=c[64]||"",u=a=0;a<e.length-2;a+=3){l=e[a];var f=e[a+1];g=e[a+2],i=c[l>>2],l=c[(3&l)<<4|f>>4],f=c[(15&f)<<2|g>>6],g=c[63&g],t[u++]=i+l+f+g}switch(i=0,g=r,e.length-a){case 2:g=c[(15&(i=e[a+1]))<<2]||r;case 1:e=e[a],t[u]=c[e>>2]+c[(3&e)<<4|i>>4]+g+r}t=t.join("")}else"binary"==e.a&&(o.m="arraybuffer");return function(e,t,o){if(e.a)throw Error("[goog.net.XhrIo] Object is active with another request="+e.v+"; newUri="+t);e.v=t,e.l="",e.g=0,e.P="POST",e.L=!1,e.c=!0,e.a=e.C?gt(e.C):gt(Ye),e.J=e.C?it(e.C):it(Ye),e.a.onreadystatechange=w(e.R,e);try{nt(e.b,Mt(e,"Opening Xhr")),e.N=!0,e.a.open("POST",String(t),!0),e.N=!1}catch(t){return nt(e.b,Mt(e,"Error opening Xhr: "+t.message)),void Rt(e,t)}t=o||"";var r=(o=e.headers.clone()).G().find((function(e){return"content-type"==e.toLowerCase()})),n=E.FormData&&t instanceof E.FormData;!(0<=k(It,"POST"))||r||n||o.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8"),o.forEach((function(e,t){this.a.setRequestHeader(t,e)}),e),e.m&&(e.a.responseType=e.m),"withCredentials"in e.a&&e.a.withCredentials!==e.M&&(e.a.withCredentials=e.M);try{Nt(e),0<e.h&&(e.I=function(e){return oe&&ce()&&"number"==typeof e.timeout&&void 0!==e.ontimeout}(e.a),nt(e.b,Mt(e,"Will abort after "+e.h+"ms if incomplete, xhr2 "+e.I)),e.I?(e.a.timeout=e.h,e.a.ontimeout=w(e.T,e)):e.w=He(e.T,e.h,e)),nt(e.b,Mt(e,"Sending request")),e.s=!0,e.a.send(t),e.s=!1}catch(t){nt(e.b,Mt(e,"Send error: "+t.message)),Rt(e,t)}}(o,n,t),s}function Gt(e,t,o){var r=!1,n=null,s=!1;e.on("data",(function(e){r=!0,n=e})),e.on("error",(function(e){0==e.code||s||(s=!0,t(e,null))})),e.on("status",(function(e){0==e.code||s?o&&t(null,null,e):(s=!0,t({code:e.code,message:e.details,metadata:e.metadata},null))})),o&&e.on("metadata",(function(e){t(null,null,null,e)})),e.on("end",(function(){s||(r?t(null,n):t({code:2,message:"Incomplete response"})),o&&t(null,null)}))}function kt(e,t){var o=e;return t.forEach((function(e){var t=o;o=function(o){return e.intercept(o,t)}})),o}Ft.prototype.on=function(e,t){return"data"==e?this.b.push(t):"status"==e?this.h.push(t):"metadata"==e?this.g.push(t):"end"==e?this.c.push(t):"error"==e&&this.f.push(t),this},Ft.prototype.removeListener=function(e,t){return"data"==e?xt(this.b,t):"status"==e?xt(this.h,t):"metadata"==e?xt(this.g,t):"end"==e?xt(this.c,t):"error"==e&&xt(this.f,t),this},Ft.prototype.cancel=function(){this.l=!0,this.a.abort()},Ft.prototype.cancel=Ft.prototype.cancel,Ft.prototype.removeListener=Ft.prototype.removeListener,Ft.prototype.on=Ft.prototype.on,Ht.prototype.X=function(e,t,o,r,n){var s=this,i=e.substr(0,e.length-r.name.length);return Gt(e=kt((function(e){return Vt(s,e,i)}),this.b).call(this,L(r,t,o)),n,!1),new B(e)},Ht.prototype.S=function(e,t,o,r){var n=this,s=e.substr(0,e.length-r.name.length);return kt((function(e){return new Promise((function(t,o){var r,i,a;Gt(Vt(n,e,s),(function(n,s,g,l){n?o(n):s?a=s:g?i=g:l?r=l:(n=e.getMethodDescriptor(),t(new M(a,n,s=void 0===(s=r)?{}:s,void 0===i?null:i)))}),!0)}))}),this.h).call(this,L(r,t,o)).then((function(e){return e.getResponseMessage()}))},Ht.prototype.unaryCall=function(e,t,o,r){return this.S(e,t,o,r)},Ht.prototype.Y=function(e,t,o,r){var n=this,s=e.substr(0,e.length-r.name.length);return kt((function(e){return Vt(n,e,s)}),this.b).call(this,L(r,t,o))},Ht.prototype.serverStreaming=Ht.prototype.Y,Ht.prototype.unaryCall=Ht.prototype.unaryCall,Ht.prototype.thenableCall=Ht.prototype.S,Ht.prototype.rpcCall=Ht.prototype.X,e.exports.GrpcWebClientBase=Ht,e.exports.StatusCode={OK:0,CANCELLED:1,UNKNOWN:2,INVALID_ARGUMENT:3,DEADLINE_EXCEEDED:4,NOT_FOUND:5,ALREADY_EXISTS:6,PERMISSION_DENIED:7,UNAUTHENTICATED:16,RESOURCE_EXHAUSTED:8,FAILED_PRECONDITION:9,ABORTED:10,OUT_OF_RANGE:11,UNIMPLEMENTED:12,INTERNAL:13,UNAVAILABLE:14,DATA_LOSS:15},e.exports.MethodDescriptor=function(e,t,o,r,n,s){this.name=e,this.a=n,this.b=s},e.exports.MethodType={UNARY:"unary",SERVER_STREAMING:"server_streaming",BIDI_STREAMING:"bidi_streaming"}}},__webpack_module_cache__={};function __nested_webpack_require_282909__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var o=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(o.exports,o,o.exports,__nested_webpack_require_282909__),o.exports}__nested_webpack_require_282909__.d=(e,t)=>{for(var o in t)__nested_webpack_require_282909__.o(t,o)&&!__nested_webpack_require_282909__.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},__nested_webpack_require_282909__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__nested_webpack_require_282909__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__nested_webpack_require_282909__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};return(()=>{"use strict";function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}__nested_webpack_require_282909__.r(__webpack_exports__),__nested_webpack_require_282909__.d(__webpack_exports__,{InfoService:()=>c,SessionInfo:()=>r,VersionInfo:()=>t});var t=function(){function t(e){var o=e.major,r=e.minor,n=e.patch,s=e.preRelease,i=e.build;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.major=o,this.minor=r,this.patch=n,this.preRelease=s,this.build=i}var o,r;return o=t,(r=[{key:"noBuild",value:function(){var e=new t(this);return e.build=void 0,e}},{key:"noPreRelease",value:function(){var e=new t(this);return e.preRelease=void 0,e}},{key:"toString",value:function(){var e="".concat(this.major,".").concat(this.minor,".").concat(this.patch);return this.preRelease&&(e+="-".concat(this.preRelease)),this.build&&(e+="+".concat(this.build)),e}}])&&e(o.prototype,r),t}();function o(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var r=function(){function e(t){var o=t.realm,r=t.username,n=t.roles,s=t.permissions,i=t.expires;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.realm=o,this.username=r,this.roles=n||[],this.permissions=s||[],this.expires=i}var t,r;return t=e,(r=[{key:"implies",value:function(e){if(!this.permissions)return!1;for(var t=e.split(":"),o=["*",e],r=1;r<t.length;r++)o.push(t.slice(0,r).join(":")+"*");return this.permissions.filter((function(e){return o.indexOf(e)>-1})).length>0}}])&&o(t.prototype,r),e}(),n=__nested_webpack_require_282909__(661);function s(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?s(Object(o),!0).forEach((function(t){a(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):s(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function a(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function g(e,t,o,r,n,s,i){try{var a=e[s](i),g=a.value}catch(e){return void o(e)}a.done?t(g):Promise.resolve(g).then(r,n)}function l(e){return function(){var t=this,o=arguments;return new Promise((function(r,n){var s=e.apply(t,o);function i(e){g(s,r,n,i,a,"next",e)}function a(e){g(s,r,n,i,a,"throw",e)}i(void 0)}))}}function u(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var c=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.uri=t||"/api"}var o,s,a,g,c,p,f;return o=e,s=[{key:"getVersionInfo",value:(f=l(regeneratorRuntime.mark((function e(){var o,r,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=new n.h.v1.GeneralInfoServicePromiseClient(this.uri,null,null),r=new n.h.v1.GetVersionInfoRequest,e.next=4,o.getVersionInfo(r,{});case 4:return s=e.sent,e.abrupt("return",new t(s.getVersionInfo().toObject()));case 6:case"end":return e.stop()}}),e,this)}))),function(){return f.apply(this,arguments)})},{key:"_getSessionInfo",value:(p=l(regeneratorRuntime.mark((function e(t,o){var s,a,g,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s={},t&&(s.authentication="Basic "+btoa("".concat(t,":").concat(o))),a=new n.h.v1.GeneralInfoServicePromiseClient(this.uri,null,null),g=new n.h.v1.GetSessionInfoRequest,e.next=6,a.getSessionInfo(g,s);case 6:return l=e.sent,e.abrupt("return",new r(i(i({},l.toObject()),{},{roles:l.getRolesList(),permissions:l.getPermissionsList()})));case 8:case"end":return e.stop()}}),e,this)}))),function(e,t){return p.apply(this,arguments)})},{key:"getSessionInfo",value:(c=l(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._getSessionInfo();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)}))),function(){return c.apply(this,arguments)})},{key:"login",value:(g=l(regeneratorRuntime.mark((function e(t,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._getSessionInfo(t,o);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)}))),function(e,t){return g.apply(this,arguments)})},{key:"logout",value:(a=l(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._getSessionInfo("logout","");case 3:throw e.sent,new Error("Logout did not proceed correctly. Something went wrong and it looks like a programming error in the webui. Please report");case 7:if(e.prev=7,e.t0=e.catch(0),16!==e.t0.code){e.next=12;break}return e.abrupt("return",!0);case 12:throw e.t0;case 13:case"end":return e.stop()}}),e,this,[[0,7]])}))),function(){return a.apply(this,arguments)})}],s&&u(o.prototype,s),e}()})(),__webpack_exports__})()}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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YW9zREJXZWJ1aTIvLi9ub2RlX21vZHVsZXMvQGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlL2Rpc3QvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZS5qcz83ODEzIl0sInNvdXJjZXNDb250ZW50IjpbIiFmdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLHQpOlwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuQ2Fvc0RCSW5mb1NlcnZpY2U9dCgpOmUuQ2Fvc0RCSW5mb1NlcnZpY2U9dCgpfShzZWxmLChmdW5jdGlvbigpe3JldHVybigoKT0+e3ZhciBfX3dlYnBhY2tfbW9kdWxlc19fPXs2NjE6KGUsdCxvKT0+e3ZhciByPXt9O3IudjE9byg5NTgpLHQuaD1yfSw5NTg6KGUsdCxvKT0+e3ZhciByPXt9O3Iud2ViPW8oNDApO3ZhciBuPXtjYW9zZGI6e319O24uY2Fvc2RiLmluZm89e30sbi5jYW9zZGIuaW5mby52MT1vKDk4OCksbi5jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2VDbGllbnQ9ZnVuY3Rpb24oZSx0LG8pe298fChvPXt9KSxvLmZvcm1hdD1cInRleHRcIix0aGlzLmNsaWVudF89bmV3IHIud2ViLkdycGNXZWJDbGllbnRCYXNlKG8pLHRoaXMuaG9zdG5hbWVfPWV9LG4uY2Fvc2RiLmluZm8udjEuR2VuZXJhbEluZm9TZXJ2aWNlUHJvbWlzZUNsaWVudD1mdW5jdGlvbihlLHQsbyl7b3x8KG89e30pLG8uZm9ybWF0PVwidGV4dFwiLHRoaXMuY2xpZW50Xz1uZXcgci53ZWIuR3JwY1dlYkNsaWVudEJhc2UobyksdGhpcy5ob3N0bmFtZV89ZX07dmFyIHM9bmV3IHIud2ViLk1ldGhvZERlc2NyaXB0b3IoXCIvY2Fvc2RiLmluZm8udjEuR2VuZXJhbEluZm9TZXJ2aWNlL0dldFZlcnNpb25JbmZvXCIsci53ZWIuTWV0aG9kVHlwZS5VTkFSWSxuLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdCxuLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UsKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNlcmlhbGl6ZUJpbmFyeSgpfSksbi5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLmRlc2VyaWFsaXplQmluYXJ5KTtuLmNhb3NkYi5pbmZvLnYxLkdlbmVyYWxJbmZvU2VydmljZUNsaWVudC5wcm90b3R5cGUuZ2V0VmVyc2lvbkluZm89ZnVuY3Rpb24oZSx0LG8pe3JldHVybiB0aGlzLmNsaWVudF8ucnBjQ2FsbCh0aGlzLmhvc3RuYW1lXytcIi9jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2UvR2V0VmVyc2lvbkluZm9cIixlLHR8fHt9LHMsbyl9LG4uY2Fvc2RiLmluZm8udjEuR2VuZXJhbEluZm9TZXJ2aWNlUHJvbWlzZUNsaWVudC5wcm90b3R5cGUuZ2V0VmVyc2lvbkluZm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jbGllbnRfLnVuYXJ5Q2FsbCh0aGlzLmhvc3RuYW1lXytcIi9jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2UvR2V0VmVyc2lvbkluZm9cIixlLHR8fHt9LHMpfTt2YXIgaT1uZXcgci53ZWIuTWV0aG9kRGVzY3JpcHRvcihcIi9jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2UvR2V0U2Vzc2lvbkluZm9cIixyLndlYi5NZXRob2RUeXBlLlVOQVJZLG4uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LG4uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2VyaWFsaXplQmluYXJ5KCl9KSxuLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UuZGVzZXJpYWxpemVCaW5hcnkpO24uY2Fvc2RiLmluZm8udjEuR2VuZXJhbEluZm9TZXJ2aWNlQ2xpZW50LnByb3RvdHlwZS5nZXRTZXNzaW9uSW5mbz1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIHRoaXMuY2xpZW50Xy5ycGNDYWxsKHRoaXMuaG9zdG5hbWVfK1wiL2Nhb3NkYi5pbmZvLnYxLkdlbmVyYWxJbmZvU2VydmljZS9HZXRTZXNzaW9uSW5mb1wiLGUsdHx8e30saSxvKX0sbi5jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2VQcm9taXNlQ2xpZW50LnByb3RvdHlwZS5nZXRTZXNzaW9uSW5mbz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNsaWVudF8udW5hcnlDYWxsKHRoaXMuaG9zdG5hbWVfK1wiL2Nhb3NkYi5pbmZvLnYxLkdlbmVyYWxJbmZvU2VydmljZS9HZXRTZXNzaW9uSW5mb1wiLGUsdHx8e30saSl9LGUuZXhwb3J0cz1uLmNhb3NkYi5pbmZvLnYxfSw5ODg6KGUsdCxvKT0+e3ZhciByPW8oMTkpLG49cixzPUZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtuLmV4cG9ydFN5bWJvbChcInByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVxdWVzdFwiLG51bGwscyksbi5leHBvcnRTeW1ib2woXCJwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlXCIsbnVsbCxzKSxuLmV4cG9ydFN5bWJvbChcInByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdFwiLG51bGwscyksbi5leHBvcnRTeW1ib2woXCJwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlXCIsbnVsbCxzKSxuLmV4cG9ydFN5bWJvbChcInByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvXCIsbnVsbCxzKSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mbz1mdW5jdGlvbihlKXtyLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLGUsMCwtMSxudWxsLG51bGwpfSxuLmluaGVyaXRzKHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLHIuTWVzc2FnZSksbi5ERUJVRyYmIUNPTVBJTEVEJiYocHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8uZGlzcGxheU5hbWU9XCJwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mb1wiKSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3Q9ZnVuY3Rpb24oZSl7ci5NZXNzYWdlLmluaXRpYWxpemUodGhpcyxlLDAsLTEsbnVsbCxudWxsKX0sbi5pbmhlcml0cyhwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3Qsci5NZXNzYWdlKSxuLkRFQlVHJiYhQ09NUElMRUQmJihwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3QuZGlzcGxheU5hbWU9XCJwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3RcIikscHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZT1mdW5jdGlvbihlKXtyLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLGUsMCwtMSxudWxsLG51bGwpfSxuLmluaGVyaXRzKHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2Usci5NZXNzYWdlKSxuLkRFQlVHJiYhQ09NUElMRUQmJihwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLmRpc3BsYXlOYW1lPVwicHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZVwiKSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3Q9ZnVuY3Rpb24oZSl7ci5NZXNzYWdlLmluaXRpYWxpemUodGhpcyxlLDAsLTEsbnVsbCxudWxsKX0sbi5pbmhlcml0cyhwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3Qsci5NZXNzYWdlKSxuLkRFQlVHJiYhQ09NUElMRUQmJihwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QuZGlzcGxheU5hbWU9XCJwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3RcIikscHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZT1mdW5jdGlvbihlKXtyLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLGUsMCwtMSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnJlcGVhdGVkRmllbGRzXyxudWxsKX0sbi5pbmhlcml0cyhwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLHIuTWVzc2FnZSksbi5ERUJVRyYmIUNPTVBJTEVEJiYocHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5kaXNwbGF5TmFtZT1cInByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2VcIiksci5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCYmKHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLnByb3RvdHlwZS50b09iamVjdD1mdW5jdGlvbihlKXtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8udG9PYmplY3QoZSx0aGlzKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8udG9PYmplY3Q9ZnVuY3Rpb24oZSx0KXt2YXIgbz17bWFqb3I6ci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodCwxLDApLG1pbm9yOnIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHQsMiwwKSxwYXRjaDpyLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0LDMsMCkscHJlUmVsZWFzZTpyLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0LDQsXCJcIiksYnVpbGQ6ci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodCw1LFwiXCIpfTtyZXR1cm4gZSYmKG8uJGpzcGJNZXNzYWdlSW5zdGFuY2U9dCksb30pLHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLmRlc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyByLkJpbmFyeVJlYWRlcihlKSxvPW5ldyBwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mbztyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG8sdCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcj1mdW5jdGlvbihlLHQpe2Zvcig7dC5uZXh0RmllbGQoKSYmIXQuaXNFbmRHcm91cCgpOylzd2l0Y2godC5nZXRGaWVsZE51bWJlcigpKXtjYXNlIDE6dmFyIG89dC5yZWFkSW50MzIoKTtlLnNldE1ham9yKG8pO2JyZWFrO2Nhc2UgMjpvPXQucmVhZEludDMyKCksZS5zZXRNaW5vcihvKTticmVhaztjYXNlIDM6bz10LnJlYWRJbnQzMigpLGUuc2V0UGF0Y2gobyk7YnJlYWs7Y2FzZSA0Om89dC5yZWFkU3RyaW5nKCksZS5zZXRQcmVSZWxlYXNlKG8pO2JyZWFrO2Nhc2UgNTpvPXQucmVhZFN0cmluZygpLGUuc2V0QnVpbGQobyk7YnJlYWs7ZGVmYXVsdDp0LnNraXBGaWVsZCgpfXJldHVybiBlfSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHIuQmluYXJ5V3JpdGVyO3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLGUpLGUuZ2V0UmVzdWx0QnVmZmVyKCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyPWZ1bmN0aW9uKGUsdCl7dmFyIG89dm9pZCAwOzAhPT0obz1lLmdldE1ham9yKCkpJiZ0LndyaXRlSW50MzIoMSxvKSwwIT09KG89ZS5nZXRNaW5vcigpKSYmdC53cml0ZUludDMyKDIsbyksMCE9PShvPWUuZ2V0UGF0Y2goKSkmJnQud3JpdGVJbnQzMigzLG8pLChvPWUuZ2V0UHJlUmVsZWFzZSgpKS5sZW5ndGg+MCYmdC53cml0ZVN0cmluZyg0LG8pLChvPWUuZ2V0QnVpbGQoKSkubGVuZ3RoPjAmJnQud3JpdGVTdHJpbmcoNSxvKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLmdldE1ham9yPWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsMSwwKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLnNldE1ham9yPWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywxLGUpfSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5wcm90b3R5cGUuZ2V0TWlub3I9ZnVuY3Rpb24oKXtyZXR1cm4gci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywyLDApfSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5wcm90b3R5cGUuc2V0TWlub3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLDIsZSl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLnByb3RvdHlwZS5nZXRQYXRjaD1mdW5jdGlvbigpe3JldHVybiByLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLDMsMCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLnByb3RvdHlwZS5zZXRQYXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gci5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsMyxlKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLmdldFByZVJlbGVhc2U9ZnVuY3Rpb24oKXtyZXR1cm4gci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcyw0LFwiXCIpfSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5wcm90b3R5cGUuc2V0UHJlUmVsZWFzZT1mdW5jdGlvbihlKXtyZXR1cm4gci5NZXNzYWdlLnNldFByb3RvM1N0cmluZ0ZpZWxkKHRoaXMsNCxlKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLmdldEJ1aWxkPWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsNSxcIlwiKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLnNldEJ1aWxkPWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcyw1LGUpfSxyLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUJiYocHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LnByb3RvdHlwZS50b09iamVjdD1mdW5jdGlvbihlKXtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LnRvT2JqZWN0KGUsdGhpcyl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdC50b09iamVjdD1mdW5jdGlvbihlLHQpe3ZhciBvPXt9O3JldHVybiBlJiYoby4kanNwYk1lc3NhZ2VJbnN0YW5jZT10KSxvfSkscHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyByLkJpbmFyeVJlYWRlcihlKSxvPW5ldyBwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3Q7cmV0dXJuIHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobyx0KX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcj1mdW5jdGlvbihlLHQpe2Zvcig7dC5uZXh0RmllbGQoKSYmIXQuaXNFbmRHcm91cCgpOyl0LmdldEZpZWxkTnVtYmVyKCksdC5za2lwRmllbGQoKTtyZXR1cm4gZX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnk9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgci5CaW5hcnlXcml0ZXI7cmV0dXJuIHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLGUpLGUuZ2V0UmVzdWx0QnVmZmVyKCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcj1mdW5jdGlvbihlLHQpe30sci5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCYmKHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnRvT2JqZWN0PWZ1bmN0aW9uKGUpe3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLnRvT2JqZWN0KGUsdGhpcyl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UudG9PYmplY3Q9ZnVuY3Rpb24oZSx0KXt2YXIgbyxyPXt2ZXJzaW9uSW5mbzoobz10LmdldFZlcnNpb25JbmZvKCkpJiZwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby50b09iamVjdChlLG8pfTtyZXR1cm4gZSYmKHIuJGpzcGJNZXNzYWdlSW5zdGFuY2U9dCkscn0pLHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UuZGVzZXJpYWxpemVCaW5hcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHIuQmluYXJ5UmVhZGVyKGUpLG89bmV3IHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2U7cmV0dXJuIHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG8sdCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyPWZ1bmN0aW9uKGUsdCl7Zm9yKDt0Lm5leHRGaWVsZCgpJiYhdC5pc0VuZEdyb3VwKCk7KWlmKDE9PT10LmdldEZpZWxkTnVtYmVyKCkpe3ZhciBvPW5ldyBwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mbzt0LnJlYWRNZXNzYWdlKG8scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKSxlLnNldFZlcnNpb25JbmZvKG8pfWVsc2UgdC5za2lwRmllbGQoKTtyZXR1cm4gZX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHIuQmluYXJ5V3JpdGVyO3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsZSksZS5nZXRSZXN1bHRCdWZmZXIoKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcj1mdW5jdGlvbihlLHQpe3ZhciBvO251bGwhPShvPWUuZ2V0VmVyc2lvbkluZm8oKSkmJnQud3JpdGVNZXNzYWdlKDEsbyxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcil9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLmdldFZlcnNpb25JbmZvPWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRXcmFwcGVyRmllbGQodGhpcyxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mbywxKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuc2V0VmVyc2lvbkluZm89ZnVuY3Rpb24oZSl7cmV0dXJuIHIuTWVzc2FnZS5zZXRXcmFwcGVyRmllbGQodGhpcywxLGUpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5jbGVhclZlcnNpb25JbmZvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0VmVyc2lvbkluZm8odm9pZCAwKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuaGFzVmVyc2lvbkluZm89ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9ci5NZXNzYWdlLmdldEZpZWxkKHRoaXMsMSl9LHIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1QmJihwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QucHJvdG90eXBlLnRvT2JqZWN0PWZ1bmN0aW9uKGUpe3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QudG9PYmplY3QoZSx0aGlzKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LnRvT2JqZWN0PWZ1bmN0aW9uKGUsdCl7dmFyIG89e307cmV0dXJuIGUmJihvLiRqc3BiTWVzc2FnZUluc3RhbmNlPXQpLG99KSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QuZGVzZXJpYWxpemVCaW5hcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHIuQmluYXJ5UmVhZGVyKGUpLG89bmV3IHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVxdWVzdDtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihvLHQpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyPWZ1bmN0aW9uKGUsdCl7Zm9yKDt0Lm5leHRGaWVsZCgpJiYhdC5pc0VuZEdyb3VwKCk7KXQuZ2V0RmllbGROdW1iZXIoKSx0LnNraXBGaWVsZCgpO3JldHVybiBlfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeT1mdW5jdGlvbigpe3ZhciBlPW5ldyByLkJpbmFyeVdyaXRlcjtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsZSksZS5nZXRSZXN1bHRCdWZmZXIoKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyPWZ1bmN0aW9uKGUsdCl7fSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnJlcGVhdGVkRmllbGRzXz1bMyw1XSxyLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUJiYocHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUudG9PYmplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UudG9PYmplY3QoZSx0aGlzKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS50b09iamVjdD1mdW5jdGlvbihlLHQpe3ZhciBvLG49e3JlYWxtOnIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHQsMSxcIlwiKSx1c2VybmFtZTpyLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0LDIsXCJcIikscm9sZXNMaXN0Om51bGw9PShvPXIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKHQsMykpP3ZvaWQgMDpvLGV4cGlyZXM6ci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodCw0LDApLHBlcm1pc3Npb25zTGlzdDpudWxsPT0obz1yLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRGaWVsZCh0LDUpKT92b2lkIDA6b307cmV0dXJuIGUmJihuLiRqc3BiTWVzc2FnZUluc3RhbmNlPXQpLG59KSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLmRlc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyByLkJpbmFyeVJlYWRlcihlKSxvPW5ldyBwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlO3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihvLHQpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcj1mdW5jdGlvbihlLHQpe2Zvcig7dC5uZXh0RmllbGQoKSYmIXQuaXNFbmRHcm91cCgpOylzd2l0Y2godC5nZXRGaWVsZE51bWJlcigpKXtjYXNlIDE6dmFyIG89dC5yZWFkU3RyaW5nKCk7ZS5zZXRSZWFsbShvKTticmVhaztjYXNlIDI6bz10LnJlYWRTdHJpbmcoKSxlLnNldFVzZXJuYW1lKG8pO2JyZWFrO2Nhc2UgMzpvPXQucmVhZFN0cmluZygpLGUuYWRkUm9sZXMobyk7YnJlYWs7Y2FzZSA0Om89dC5yZWFkSW50NjQoKSxlLnNldEV4cGlyZXMobyk7YnJlYWs7Y2FzZSA1Om89dC5yZWFkU3RyaW5nKCksZS5hZGRQZXJtaXNzaW9ucyhvKTticmVhaztkZWZhdWx0OnQuc2tpcEZpZWxkKCl9cmV0dXJuIGV9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeT1mdW5jdGlvbigpe3ZhciBlPW5ldyByLkJpbmFyeVdyaXRlcjtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLGUpLGUuZ2V0UmVzdWx0QnVmZmVyKCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2Uuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbz12b2lkIDA7KG89ZS5nZXRSZWFsbSgpKS5sZW5ndGg+MCYmdC53cml0ZVN0cmluZygxLG8pLChvPWUuZ2V0VXNlcm5hbWUoKSkubGVuZ3RoPjAmJnQud3JpdGVTdHJpbmcoMixvKSwobz1lLmdldFJvbGVzTGlzdCgpKS5sZW5ndGg+MCYmdC53cml0ZVJlcGVhdGVkU3RyaW5nKDMsbyksMCE9PShvPWUuZ2V0RXhwaXJlcygpKSYmdC53cml0ZUludDY0KDQsbyksKG89ZS5nZXRQZXJtaXNzaW9uc0xpc3QoKSkubGVuZ3RoPjAmJnQud3JpdGVSZXBlYXRlZFN0cmluZyg1LG8pfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5nZXRSZWFsbT1mdW5jdGlvbigpe3JldHVybiByLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLDEsXCJcIil9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnNldFJlYWxtPWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywxLGUpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5nZXRVc2VybmFtZT1mdW5jdGlvbigpe3JldHVybiByLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLDIsXCJcIil9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnNldFVzZXJuYW1lPWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywyLGUpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5nZXRSb2xlc0xpc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gci5NZXNzYWdlLmdldFJlcGVhdGVkRmllbGQodGhpcywzKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuc2V0Um9sZXNMaXN0PWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0RmllbGQodGhpcywzLGV8fFtdKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuYWRkUm9sZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gci5NZXNzYWdlLmFkZFRvUmVwZWF0ZWRGaWVsZCh0aGlzLDMsZSx0KX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuY2xlYXJSb2xlc0xpc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXRSb2xlc0xpc3QoW10pfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5nZXRFeHBpcmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsNCwwKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuc2V0RXhwaXJlcz1mdW5jdGlvbihlKXtyZXR1cm4gci5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsNCxlKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuZ2V0UGVybWlzc2lvbnNMaXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKHRoaXMsNSl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnNldFBlcm1pc3Npb25zTGlzdD1mdW5jdGlvbihlKXtyZXR1cm4gci5NZXNzYWdlLnNldEZpZWxkKHRoaXMsNSxlfHxbXSl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLmFkZFBlcm1pc3Npb25zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuTWVzc2FnZS5hZGRUb1JlcGVhdGVkRmllbGQodGhpcyw1LGUsdCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLmNsZWFyUGVybWlzc2lvbnNMaXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0UGVybWlzc2lvbnNMaXN0KFtdKX0sbi5vYmplY3QuZXh0ZW5kKHQscHJvdG8uY2Fvc2RiLmluZm8udjEpfSwxOTpmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxleHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pe3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e30sJGpzY29tcC5maW5kSW50ZXJuYWw9ZnVuY3Rpb24oZSx0LG8pe2UgaW5zdGFuY2VvZiBTdHJpbmcmJihlPVN0cmluZyhlKSk7Zm9yKHZhciByPWUubGVuZ3RoLG49MDtuPHI7bisrKXt2YXIgcz1lW25dO2lmKHQuY2FsbChvLHMsbixlKSlyZXR1cm57aTpuLHY6c319cmV0dXJue2k6LTEsdjp2b2lkIDB9fSwkanNjb21wLkFTU1VNRV9FUzU9ITEsJGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMSwkanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExLCRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMSwkanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxvKXtlIT1BcnJheS5wcm90b3R5cGUmJmUhPU9iamVjdC5wcm90b3R5cGUmJihlW3RdPW8udmFsdWUpfSwkanNjb21wLmdldEdsb2JhbD1mdW5jdGlvbihlKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3c9PT1lP2U6dm9pZCAwIT09X193ZWJwYWNrX3JlcXVpcmVfXy5nJiZudWxsIT1fX3dlYnBhY2tfcmVxdWlyZV9fLmc/X193ZWJwYWNrX3JlcXVpcmVfXy5nOmV9LCRqc2NvbXAuZ2xvYmFsPSRqc2NvbXAuZ2V0R2xvYmFsKHRoaXMpLCRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oZSx0LG8scil7aWYodCl7Zm9yKG89JGpzY29tcC5nbG9iYWwsZT1lLnNwbGl0KFwiLlwiKSxyPTA7cjxlLmxlbmd0aC0xO3IrKyl7dmFyIG49ZVtyXTtuIGluIG98fChvW25dPXt9KSxvPW9bbl19KHQ9dChyPW9bZT1lW2UubGVuZ3RoLTFdXSkpIT1yJiZudWxsIT10JiYkanNjb21wLmRlZmluZVByb3BlcnR5KG8sZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KX19LCRqc2NvbXAucG9seWZpbGwoXCJBcnJheS5wcm90b3R5cGUuZmluZEluZGV4XCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe3JldHVybiAkanNjb21wLmZpbmRJbnRlcm5hbCh0aGlzLGUsdCkuaX19KSxcImVzNlwiLFwiZXMzXCIpLCRqc2NvbXAuY2hlY2tTdHJpbmdBcmdzPWZ1bmN0aW9uKGUsdCxvKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgJ3RoaXMnIHZhbHVlIGZvciBTdHJpbmcucHJvdG90eXBlLlwiK28rXCIgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWRcIik7aWYodCBpbnN0YW5jZW9mIFJlZ0V4cCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlyc3QgYXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5cIitvK1wiIG11c3Qgbm90IGJlIGEgcmVndWxhciBleHByZXNzaW9uXCIpO3JldHVybiBlK1wiXCJ9LCRqc2NvbXAucG9seWZpbGwoXCJTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe3ZhciBvPSRqc2NvbXAuY2hlY2tTdHJpbmdBcmdzKHRoaXMsZSxcImVuZHNXaXRoXCIpO2UrPVwiXCIsdm9pZCAwPT09dCYmKHQ9by5sZW5ndGgpLHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigwfHQsby5sZW5ndGgpKTtmb3IodmFyIHI9ZS5sZW5ndGg7MDxyJiYwPHQ7KWlmKG9bLS10XSE9ZVstLXJdKXJldHVybiExO3JldHVybiAwPj1yfX0pLFwiZXM2XCIsXCJlczNcIiksJGpzY29tcC5wb2x5ZmlsbChcIkFycmF5LnByb3RvdHlwZS5maW5kXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe3JldHVybiAkanNjb21wLmZpbmRJbnRlcm5hbCh0aGlzLGUsdCkudn19KSxcImVzNlwiLFwiZXMzXCIpLCRqc2NvbXAucG9seWZpbGwoXCJTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGhcIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGV8fGZ1bmN0aW9uKGUsdCl7dmFyIG89JGpzY29tcC5jaGVja1N0cmluZ0FyZ3ModGhpcyxlLFwic3RhcnRzV2l0aFwiKTtlKz1cIlwiO3ZhciByPW8ubGVuZ3RoLG49ZS5sZW5ndGg7dD1NYXRoLm1heCgwLE1hdGgubWluKDB8dCxvLmxlbmd0aCkpO2Zvcih2YXIgcz0wO3M8biYmdDxyOylpZihvW3QrK10hPWVbcysrXSlyZXR1cm4hMTtyZXR1cm4gcz49bn19KSxcImVzNlwiLFwiZXMzXCIpLCRqc2NvbXAucG9seWZpbGwoXCJTdHJpbmcucHJvdG90eXBlLnJlcGVhdFwiLChmdW5jdGlvbihlKXtyZXR1cm4gZXx8ZnVuY3Rpb24oZSl7dmFyIHQ9JGpzY29tcC5jaGVja1N0cmluZ0FyZ3ModGhpcyxudWxsLFwicmVwZWF0XCIpO2lmKDA+ZXx8MTM0MjE3NzI3OTxlKXRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCBjb3VudCB2YWx1ZVwiKTtlfD0wO2Zvcih2YXIgbz1cIlwiO2U7KTEmZSYmKG8rPXQpLChlPj4+PTEpJiYodCs9dCk7cmV0dXJuIG99fSksXCJlczZcIixcImVzM1wiKTt2YXIgQ09NUElMRUQ9ITAsZ29vZz1nb29nfHx7fTtnb29nLmdsb2JhbD10aGlzfHxzZWxmLGdvb2cuaXNEZWY9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWV9LGdvb2cuaXNTdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV9LGdvb2cuaXNCb29sZWFuPWZ1bmN0aW9uKGUpe3JldHVyblwiYm9vbGVhblwiPT10eXBlb2YgZX0sZ29vZy5pc051bWJlcj1mdW5jdGlvbihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZX0sZ29vZy5leHBvcnRQYXRoXz1mdW5jdGlvbihlLHQsbyl7ZT1lLnNwbGl0KFwiLlwiKSxvPW98fGdvb2cuZ2xvYmFsLGVbMF1pbiBvfHx2b2lkIDA9PT1vLmV4ZWNTY3JpcHR8fG8uZXhlY1NjcmlwdChcInZhciBcIitlWzBdKTtmb3IodmFyIHI7ZS5sZW5ndGgmJihyPWUuc2hpZnQoKSk7KSFlLmxlbmd0aCYmZ29vZy5pc0RlZih0KT9vW3JdPXQ6bz1vW3JdJiZvW3JdIT09T2JqZWN0LnByb3RvdHlwZVtyXT9vW3JdOm9bcl09e319LGdvb2cuZGVmaW5lPWZ1bmN0aW9uKGUsdCl7aWYoIUNPTVBJTEVEKXt2YXIgbz1nb29nLmdsb2JhbC5DTE9TVVJFX1VOQ09NUElMRURfREVGSU5FUyxyPWdvb2cuZ2xvYmFsLkNMT1NVUkVfREVGSU5FUztvJiZ2b2lkIDA9PT1vLm5vZGVUeXBlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobyxlKT90PW9bZV06ciYmdm9pZCAwPT09ci5ub2RlVHlwZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsZSkmJih0PXJbZV0pfXJldHVybiB0fSxnb29nLkZFQVRVUkVTRVRfWUVBUj0yMDEyLGdvb2cuREVCVUc9ITAsZ29vZy5MT0NBTEU9XCJlblwiLGdvb2cuVFJVU1RFRF9TSVRFPSEwLGdvb2cuU1RSSUNUX01PREVfQ09NUEFUSUJMRT0hMSxnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFPUNPTVBJTEVEJiYhZ29vZy5ERUJVRyxnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkc9ITEsZ29vZy5wcm92aWRlPWZ1bmN0aW9uKGUpe2lmKGdvb2cuaXNJbk1vZHVsZUxvYWRlcl8oKSl0aHJvdyBFcnJvcihcImdvb2cucHJvdmlkZSBjYW5ub3QgYmUgdXNlZCB3aXRoaW4gYSBtb2R1bGUuXCIpO2lmKCFDT01QSUxFRCYmZ29vZy5pc1Byb3ZpZGVkXyhlKSl0aHJvdyBFcnJvcignTmFtZXNwYWNlIFwiJytlKydcIiBhbHJlYWR5IGRlY2xhcmVkLicpO2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhlKX0sZ29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfPWZ1bmN0aW9uKGUsdCl7aWYoIUNPTVBJTEVEKXtkZWxldGUgZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2VdO2Zvcih2YXIgbz1lOyhvPW8uc3Vic3RyaW5nKDAsby5sYXN0SW5kZXhPZihcIi5cIikpKSYmIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKG8pOylnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bb109ITB9Z29vZy5leHBvcnRQYXRoXyhlLHQpfSxnb29nLmdldFNjcmlwdE5vbmNlPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlIT1nb29nLmdsb2JhbD9nb29nLmdldFNjcmlwdE5vbmNlXyhlLmRvY3VtZW50KToobnVsbD09PWdvb2cuY3NwTm9uY2VfJiYoZ29vZy5jc3BOb25jZV89Z29vZy5nZXRTY3JpcHROb25jZV8oZ29vZy5nbG9iYWwuZG9jdW1lbnQpKSxnb29nLmNzcE5vbmNlXyl9LGdvb2cuTk9OQ0VfUEFUVEVSTl89L15bXFx3Ky9fLV0rWz1dezAsMn0kLyxnb29nLmNzcE5vbmNlXz1udWxsLGdvb2cuZ2V0U2NyaXB0Tm9uY2VfPWZ1bmN0aW9uKGUpe3JldHVybihlPWUucXVlcnlTZWxlY3RvciYmZS5xdWVyeVNlbGVjdG9yKFwic2NyaXB0W25vbmNlXVwiKSkmJihlPWUubm9uY2V8fGUuZ2V0QXR0cmlidXRlKFwibm9uY2VcIikpJiZnb29nLk5PTkNFX1BBVFRFUk5fLnRlc3QoZSk/ZTpcIlwifSxnb29nLlZBTElEX01PRFVMRV9SRV89L15bYS16QS1aXyRdW2EtekEtWjAtOS5fJF0qJC8sZ29vZy5tb2R1bGU9ZnVuY3Rpb24oZSl7aWYoIWdvb2cuaXNTdHJpbmcoZSl8fCFlfHwtMT09ZS5zZWFyY2goZ29vZy5WQUxJRF9NT0RVTEVfUkVfKSl0aHJvdyBFcnJvcihcIkludmFsaWQgbW9kdWxlIGlkZW50aWZpZXJcIik7aWYoIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoXCJNb2R1bGUgXCIrZStcIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuIE5vdGUsIG1vZHVsZXMgY2Fubm90IGJlIGxvYWRlZCBhcyBub3JtYWwgc2NyaXB0cy4gVGhleSByZXF1aXJlIHNvbWUga2luZCBvZiBwcmUtcHJvY2Vzc2luZyBzdGVwLiBZb3UncmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIGEgbW9kdWxlIHZpYSBhIHNjcmlwdCB0YWcgb3IgYXMgYSBwYXJ0IG9mIGEgY29uY2F0ZW5hdGVkIGJ1bmRsZSB3aXRob3V0IHJld3JpdGluZyB0aGUgbW9kdWxlLiBGb3IgbW9yZSBpbmZvIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvd2lraS9nb29nLm1vZHVsZTotYW4tRVM2LW1vZHVsZS1saWtlLWFsdGVybmF0aXZlLXRvLWdvb2cucHJvdmlkZS5cIik7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZSl0aHJvdyBFcnJvcihcImdvb2cubW9kdWxlIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlIHBlciBtb2R1bGUuXCIpO2lmKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU9ZSwhQ09NUElMRUQpe2lmKGdvb2cuaXNQcm92aWRlZF8oZSkpdGhyb3cgRXJyb3IoJ05hbWVzcGFjZSBcIicrZSsnXCIgYWxyZWFkeSBkZWNsYXJlZC4nKTtkZWxldGUgZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2VdfX0sZ29vZy5tb2R1bGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLm1vZHVsZS5nZXRJbnRlcm5hbF8oZSl9LGdvb2cubW9kdWxlLmdldEludGVybmFsXz1mdW5jdGlvbihlKXtpZighQ09NUElMRUQpe2lmKGUgaW4gZ29vZy5sb2FkZWRNb2R1bGVzXylyZXR1cm4gZ29vZy5sb2FkZWRNb2R1bGVzX1tlXS5leHBvcnRzO2lmKCFnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZV0pcmV0dXJuIG51bGwhPShlPWdvb2cuZ2V0T2JqZWN0QnlOYW1lKGUpKT9lOm51bGx9cmV0dXJuIG51bGx9LGdvb2cuTW9kdWxlVHlwZT17RVM2OlwiZXM2XCIsR09PRzpcImdvb2dcIn0sZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV89bnVsbCxnb29nLmlzSW5Nb2R1bGVMb2FkZXJfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCl8fGdvb2cuaXNJbkVzNk1vZHVsZUxvYWRlcl8oKX0sZ29vZy5pc0luR29vZ01vZHVsZUxvYWRlcl89ZnVuY3Rpb24oKXtyZXR1cm4hIWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfJiZnb29nLm1vZHVsZUxvYWRlclN0YXRlXy50eXBlPT1nb29nLk1vZHVsZVR5cGUuR09PR30sZ29vZy5pc0luRXM2TW9kdWxlTG9hZGVyXz1mdW5jdGlvbigpe2lmKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfJiZnb29nLm1vZHVsZUxvYWRlclN0YXRlXy50eXBlPT1nb29nLk1vZHVsZVR5cGUuRVM2KXJldHVybiEwO3ZhciBlPWdvb2cuZ2xvYmFsLiRqc2NvbXA7cmV0dXJuISFlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmdldEN1cnJlbnRNb2R1bGVQYXRoJiYhIWUuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKX0sZ29vZy5tb2R1bGUuZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZT1mdW5jdGlvbigpe2lmKCFDT01QSUxFRCYmIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoXCJnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlIG11c3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgZ29vZy5tb2R1bGVcIik7aWYoIUNPTVBJTEVEJiYhZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZSl0aHJvdyBFcnJvcihcImdvb2cubW9kdWxlIG11c3QgYmUgY2FsbGVkIHByaW9yIHRvIGdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2UuXCIpO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ITB9LGdvb2cuZGVjbGFyZU1vZHVsZUlkPWZ1bmN0aW9uKGUpe2lmKCFDT01QSUxFRCl7aWYoIWdvb2cuaXNJbkVzNk1vZHVsZUxvYWRlcl8oKSl0aHJvdyBFcnJvcihcImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBFUzYgbW9kdWxlXCIpO2lmKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfJiZnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKFwiZ29vZy5kZWNsYXJlTW9kdWxlSWQgbWF5IG9ubHkgYmUgY2FsbGVkIG9uY2UgcGVyIG1vZHVsZS5cIik7aWYoZSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXRocm93IEVycm9yKCdNb2R1bGUgd2l0aCBuYW1lc3BhY2UgXCInK2UrJ1wiIGFscmVhZHkgZXhpc3RzLicpfWlmKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfKWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU9ZTtlbHNle3ZhciB0PWdvb2cuZ2xvYmFsLiRqc2NvbXA7aWYoIXR8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQuZ2V0Q3VycmVudE1vZHVsZVBhdGgpdGhyb3cgRXJyb3IoJ01vZHVsZSB3aXRoIG5hbWVzcGFjZSBcIicrZSsnXCIgaGFzIGJlZW4gbG9hZGVkIGluY29ycmVjdGx5LicpO3Q9dC5yZXF1aXJlKHQuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKSksZ29vZy5sb2FkZWRNb2R1bGVzX1tlXT17ZXhwb3J0czp0LHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkVTNixtb2R1bGVJZDplfX19LGdvb2cuc2V0VGVzdE9ubHk9ZnVuY3Rpb24oZSl7aWYoZ29vZy5ESVNBTExPV19URVNUX09OTFlfQ09ERSl0aHJvdyBlPWV8fFwiXCIsRXJyb3IoXCJJbXBvcnRpbmcgdGVzdC1vbmx5IGNvZGUgaW50byBub24tZGVidWcgZW52aXJvbm1lbnRcIisoZT9cIjogXCIrZTpcIi5cIikpfSxnb29nLmZvcndhcmREZWNsYXJlPWZ1bmN0aW9uKGUpe30sQ09NUElMRUR8fChnb29nLmlzUHJvdmlkZWRfPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluIGdvb2cubG9hZGVkTW9kdWxlc198fCFnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZV0mJmdvb2cuaXNEZWZBbmROb3ROdWxsKGdvb2cuZ2V0T2JqZWN0QnlOYW1lKGUpKX0sZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfPXtcImdvb2cubW9kdWxlXCI6ITB9KSxnb29nLmdldE9iamVjdEJ5TmFtZT1mdW5jdGlvbihlLHQpe2U9ZS5zcGxpdChcIi5cIiksdD10fHxnb29nLmdsb2JhbDtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZih0PXRbZVtvXV0sIWdvb2cuaXNEZWZBbmROb3ROdWxsKHQpKXJldHVybiBudWxsO3JldHVybiB0fSxnb29nLmdsb2JhbGl6ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiB0PXR8fGdvb2cuZ2xvYmFsLGUpdFtvXT1lW29dfSxnb29nLmFkZERlcGVuZGVuY3k9ZnVuY3Rpb24oZSx0LG8scil7IUNPTVBJTEVEJiZnb29nLkRFUEVOREVOQ0lFU19FTkFCTEVEJiZnb29nLmRlYnVnTG9hZGVyXy5hZGREZXBlbmRlbmN5KGUsdCxvLHIpfSxnb29nLkVOQUJMRV9ERUJVR19MT0FERVI9ITAsZ29vZy5sb2dUb0NvbnNvbGVfPWZ1bmN0aW9uKGUpe2dvb2cuZ2xvYmFsLmNvbnNvbGUmJmdvb2cuZ2xvYmFsLmNvbnNvbGUuZXJyb3IoZSl9LGdvb2cucmVxdWlyZT1mdW5jdGlvbihlKXtpZighQ09NUElMRUQpe2lmKGdvb2cuRU5BQkxFX0RFQlVHX0xPQURFUiYmZ29vZy5kZWJ1Z0xvYWRlcl8ucmVxdWVzdGVkKGUpLGdvb2cuaXNQcm92aWRlZF8oZSkpe2lmKGdvb2cuaXNJbk1vZHVsZUxvYWRlcl8oKSlyZXR1cm4gZ29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfKGUpfWVsc2UgaWYoZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSKXt2YXIgdD1nb29nLm1vZHVsZUxvYWRlclN0YXRlXztnb29nLm1vZHVsZUxvYWRlclN0YXRlXz1udWxsO3RyeXtnb29nLmRlYnVnTG9hZGVyXy5sb2FkXyhlKX1maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPXR9fXJldHVybiBudWxsfX0sZ29vZy5yZXF1aXJlVHlwZT1mdW5jdGlvbihlKXtyZXR1cm57fX0sZ29vZy5iYXNlUGF0aD1cIlwiLGdvb2cubnVsbEZ1bmN0aW9uPWZ1bmN0aW9uKCl7fSxnb29nLmFic3RyYWN0TWV0aG9kPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoXCJ1bmltcGxlbWVudGVkIGFic3RyYWN0IG1ldGhvZFwiKX0sZ29vZy5hZGRTaW5nbGV0b25HZXR0ZXI9ZnVuY3Rpb24oZSl7ZS5pbnN0YW5jZV89dm9pZCAwLGUuZ2V0SW5zdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gZS5pbnN0YW5jZV8/ZS5pbnN0YW5jZV86KGdvb2cuREVCVUcmJihnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfW2dvb2cuaW5zdGFudGlhdGVkU2luZ2xldG9uc18ubGVuZ3RoXT1lKSxlLmluc3RhbmNlXz1uZXcgZSl9fSxnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfPVtdLGdvb2cuTE9BRF9NT0RVTEVfVVNJTkdfRVZBTD0hMCxnb29nLlNFQUxfTU9EVUxFX0VYUE9SVFM9Z29vZy5ERUJVRyxnb29nLmxvYWRlZE1vZHVsZXNfPXt9LGdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQ9IUNPTVBJTEVEJiZnb29nLkVOQUJMRV9ERUJVR19MT0FERVIsZ29vZy5UUkFOU1BJTEU9XCJkZXRlY3RcIixnb29nLkFTU1VNRV9FU19NT0RVTEVTX1RSQU5TUElMRUQ9ITEsZ29vZy5UUkFOU1BJTEVfVE9fTEFOR1VBR0U9XCJcIixnb29nLlRSQU5TUElMRVI9XCJ0cmFuc3BpbGUuanNcIixnb29nLmhhc0JhZExldFNjb3Bpbmc9bnVsbCxnb29nLnVzZVNhZmFyaTEwV29ya2Fyb3VuZD1mdW5jdGlvbigpe2lmKG51bGw9PWdvb2cuaGFzQmFkTGV0U2NvcGluZyl7dHJ5e3ZhciBhPSFldmFsKCdcInVzZSBzdHJpY3RcIjtsZXQgeCA9IDE7IGZ1bmN0aW9uIGYoKSB7IHJldHVybiB0eXBlb2YgeDsgfTtmKCkgPT0gXCJudW1iZXJcIjsnKX1jYXRjaChlKXthPSExfWdvb2cuaGFzQmFkTGV0U2NvcGluZz1hfXJldHVybiBnb29nLmhhc0JhZExldFNjb3Bpbmd9LGdvb2cud29ya2Fyb3VuZFNhZmFyaTEwRXZhbEJ1Zz1mdW5jdGlvbihlKXtyZXR1cm5cIihmdW5jdGlvbigpe1wiK2UrXCJcXG47fSkoKTtcXG5cIn0sZ29vZy5sb2FkTW9kdWxlPWZ1bmN0aW9uKGUpe3ZhciB0PWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO3RyeXtpZihnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17bW9kdWxlTmFtZTpcIlwiLGRlY2xhcmVMZWdhY3lOYW1lc3BhY2U6ITEsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PR30sZ29vZy5pc0Z1bmN0aW9uKGUpKXZhciBvPWUuY2FsbCh2b2lkIDAse30pO2Vsc2V7aWYoIWdvb2cuaXNTdHJpbmcoZSkpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIG1vZHVsZSBkZWZpbml0aW9uXCIpO2dvb2cudXNlU2FmYXJpMTBXb3JrYXJvdW5kKCkmJihlPWdvb2cud29ya2Fyb3VuZFNhZmFyaTEwRXZhbEJ1ZyhlKSksbz1nb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXy5jYWxsKHZvaWQgMCxlKX12YXIgcj1nb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lO2lmKCFnb29nLmlzU3RyaW5nKHIpfHwhcil0aHJvdyBFcnJvcignSW52YWxpZCBtb2R1bGUgbmFtZSBcIicrcisnXCInKTtnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlP2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhyLG8pOmdvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUyYmT2JqZWN0LnNlYWwmJlwib2JqZWN0XCI9PXR5cGVvZiBvJiZudWxsIT1vJiZPYmplY3Quc2VhbChvKSxnb29nLmxvYWRlZE1vZHVsZXNfW3JdPXtleHBvcnRzOm8sdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDpnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lfX1maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPXR9fSxnb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXz1mdW5jdGlvbihhKXtyZXR1cm4gZXZhbChhKSx7fX0sZ29vZy5ub3JtYWxpemVQYXRoXz1mdW5jdGlvbihlKXtlPWUuc3BsaXQoXCIvXCIpO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7KVwiLlwiPT1lW3RdP2Uuc3BsaWNlKHQsMSk6dCYmXCIuLlwiPT1lW3RdJiZlW3QtMV0mJlwiLi5cIiE9ZVt0LTFdP2Uuc3BsaWNlKC0tdCwyKTp0Kys7cmV0dXJuIGUuam9pbihcIi9cIil9LGdvb2cubG9hZEZpbGVTeW5jXz1mdW5jdGlvbihlKXtpZihnb29nLmdsb2JhbC5DTE9TVVJFX0xPQURfRklMRV9TWU5DKXJldHVybiBnb29nLmdsb2JhbC5DTE9TVVJFX0xPQURfRklMRV9TWU5DKGUpO3RyeXt2YXIgdD1uZXcgZ29vZy5nbG9iYWwuWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIHQub3BlbihcImdldFwiLGUsITEpLHQuc2VuZCgpLDA9PXQuc3RhdHVzfHwyMDA9PXQuc3RhdHVzP3QucmVzcG9uc2VUZXh0Om51bGx9Y2F0Y2goZSl7cmV0dXJuIG51bGx9fSxnb29nLnRyYW5zcGlsZV89ZnVuY3Rpb24oZSx0LG8pe3ZhciByPWdvb2cuZ2xvYmFsLiRqc2NvbXA7cnx8KGdvb2cuZ2xvYmFsLiRqc2NvbXA9cj17fSk7dmFyIG49ci50cmFuc3BpbGU7aWYoIW4pe3ZhciBzPWdvb2cuYmFzZVBhdGgrZ29vZy5UUkFOU1BJTEVSLGk9Z29vZy5sb2FkRmlsZVN5bmNfKHMpO2lmKGkpe2lmKGZ1bmN0aW9uKCl7KDAsZXZhbCkoaStcIlxcbi8vIyBzb3VyY2VVUkw9XCIrcyl9LmNhbGwoZ29vZy5nbG9iYWwpLGdvb2cuZ2xvYmFsLiRnd3RFeHBvcnQmJmdvb2cuZ2xvYmFsLiRnd3RFeHBvcnQuJGpzY29tcCYmIWdvb2cuZ2xvYmFsLiRnd3RFeHBvcnQuJGpzY29tcC50cmFuc3BpbGUpdGhyb3cgRXJyb3IoJ1RoZSB0cmFuc3BpbGVyIGRpZCBub3QgcHJvcGVybHkgZXhwb3J0IHRoZSBcInRyYW5zcGlsZVwiIG1ldGhvZC4gJGd3dEV4cG9ydDogJytKU09OLnN0cmluZ2lmeShnb29nLmdsb2JhbC4kZ3d0RXhwb3J0KSk7Z29vZy5nbG9iYWwuJGpzY29tcC50cmFuc3BpbGU9Z29vZy5nbG9iYWwuJGd3dEV4cG9ydC4kanNjb21wLnRyYW5zcGlsZSxuPShyPWdvb2cuZ2xvYmFsLiRqc2NvbXApLnRyYW5zcGlsZX19cmV0dXJuIG58fChuPXIudHJhbnNwaWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cubG9nVG9Db25zb2xlXyh0K1wiIHJlcXVpcmVzIHRyYW5zcGlsYXRpb24gYnV0IG5vIHRyYW5zcGlsZXIgd2FzIGZvdW5kLlwiKSxlfSksbihlLHQsbyl9LGdvb2cudHlwZU9mPWZ1bmN0aW9uKGUpe3ZhciB0PXR5cGVvZiBlO2lmKFwib2JqZWN0XCI9PXQpe2lmKCFlKXJldHVyblwibnVsbFwiO2lmKGUgaW5zdGFuY2VvZiBBcnJheSlyZXR1cm5cImFycmF5XCI7aWYoZSBpbnN0YW5jZW9mIE9iamVjdClyZXR1cm4gdDt2YXIgbz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk7aWYoXCJbb2JqZWN0IFdpbmRvd11cIj09bylyZXR1cm5cIm9iamVjdFwiO2lmKFwiW29iamVjdCBBcnJheV1cIj09b3x8XCJudW1iZXJcIj09dHlwZW9mIGUubGVuZ3RoJiZ2b2lkIDAhPT1lLnNwbGljZSYmdm9pZCAwIT09ZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSYmIWUucHJvcGVydHlJc0VudW1lcmFibGUoXCJzcGxpY2VcIikpcmV0dXJuXCJhcnJheVwiO2lmKFwiW29iamVjdCBGdW5jdGlvbl1cIj09b3x8dm9pZCAwIT09ZS5jYWxsJiZ2b2lkIDAhPT1lLnByb3BlcnR5SXNFbnVtZXJhYmxlJiYhZS5wcm9wZXJ0eUlzRW51bWVyYWJsZShcImNhbGxcIikpcmV0dXJuXCJmdW5jdGlvblwifWVsc2UgaWYoXCJmdW5jdGlvblwiPT10JiZ2b2lkIDA9PT1lLmNhbGwpcmV0dXJuXCJvYmplY3RcIjtyZXR1cm4gdH0sZ29vZy5pc051bGw9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfSxnb29nLmlzRGVmQW5kTm90TnVsbD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZX0sZ29vZy5pc0FycmF5PWZ1bmN0aW9uKGUpe3JldHVyblwiYXJyYXlcIj09Z29vZy50eXBlT2YoZSl9LGdvb2cuaXNBcnJheUxpa2U9ZnVuY3Rpb24oZSl7dmFyIHQ9Z29vZy50eXBlT2YoZSk7cmV0dXJuXCJhcnJheVwiPT10fHxcIm9iamVjdFwiPT10JiZcIm51bWJlclwiPT10eXBlb2YgZS5sZW5ndGh9LGdvb2cuaXNEYXRlTGlrZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5pc09iamVjdChlKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5nZXRGdWxsWWVhcn0sZ29vZy5pc0Z1bmN0aW9uPWZ1bmN0aW9uKGUpe3JldHVyblwiZnVuY3Rpb25cIj09Z29vZy50eXBlT2YoZSl9LGdvb2cuaXNPYmplY3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuXCJvYmplY3RcIj09dCYmbnVsbCE9ZXx8XCJmdW5jdGlvblwiPT10fSxnb29nLmdldFVpZD1mdW5jdGlvbihlKXtyZXR1cm4gZVtnb29nLlVJRF9QUk9QRVJUWV9dfHwoZVtnb29nLlVJRF9QUk9QRVJUWV9dPSsrZ29vZy51aWRDb3VudGVyXyl9LGdvb2cuaGFzVWlkPWZ1bmN0aW9uKGUpe3JldHVybiEhZVtnb29nLlVJRF9QUk9QRVJUWV9dfSxnb29nLnJlbW92ZVVpZD1mdW5jdGlvbihlKXtudWxsIT09ZSYmXCJyZW1vdmVBdHRyaWJ1dGVcImluIGUmJmUucmVtb3ZlQXR0cmlidXRlKGdvb2cuVUlEX1BST1BFUlRZXyk7dHJ5e2RlbGV0ZSBlW2dvb2cuVUlEX1BST1BFUlRZX119Y2F0Y2goZSl7fX0sZ29vZy5VSURfUFJPUEVSVFlfPVwiY2xvc3VyZV91aWRfXCIrKDFlOSpNYXRoLnJhbmRvbSgpPj4+MCksZ29vZy51aWRDb3VudGVyXz0wLGdvb2cuZ2V0SGFzaENvZGU9Z29vZy5nZXRVaWQsZ29vZy5yZW1vdmVIYXNoQ29kZT1nb29nLnJlbW92ZVVpZCxnb29nLmNsb25lT2JqZWN0PWZ1bmN0aW9uKGUpe3ZhciB0PWdvb2cudHlwZU9mKGUpO2lmKFwib2JqZWN0XCI9PXR8fFwiYXJyYXlcIj09dCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jbG9uZSlyZXR1cm4gZS5jbG9uZSgpO2Zvcih2YXIgbyBpbiB0PVwiYXJyYXlcIj09dD9bXTp7fSxlKXRbb109Z29vZy5jbG9uZU9iamVjdChlW29dKTtyZXR1cm4gdH1yZXR1cm4gZX0sZ29vZy5iaW5kTmF0aXZlXz1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGUuY2FsbC5hcHBseShlLmJpbmQsYXJndW1lbnRzKX0sZ29vZy5iaW5kSnNfPWZ1bmN0aW9uKGUsdCxvKXtpZighZSl0aHJvdyBFcnJvcigpO2lmKDI8YXJndW1lbnRzLmxlbmd0aCl7dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KG8sciksZS5hcHBseSh0LG8pfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fSxnb29nLmJpbmQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCYmLTEhPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLnRvU3RyaW5nKCkuaW5kZXhPZihcIm5hdGl2ZSBjb2RlXCIpP2dvb2cuYmluZD1nb29nLmJpbmROYXRpdmVfOmdvb2cuYmluZD1nb29nLmJpbmRKc18sZ29vZy5iaW5kLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ29vZy5wYXJ0aWFsPWZ1bmN0aW9uKGUsdCl7dmFyIG89QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0PW8uc2xpY2UoKTtyZXR1cm4gdC5wdXNoLmFwcGx5KHQsYXJndW1lbnRzKSxlLmFwcGx5KHRoaXMsdCl9fSxnb29nLm1peGluPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvIGluIHQpZVtvXT10W29dfSxnb29nLm5vdz1nb29nLlRSVVNURURfU0lURSYmRGF0ZS5ub3d8fGZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxnb29nLmdsb2JhbEV2YWw9ZnVuY3Rpb24oZSl7aWYoZ29vZy5nbG9iYWwuZXhlY1NjcmlwdClnb29nLmdsb2JhbC5leGVjU2NyaXB0KGUsXCJKYXZhU2NyaXB0XCIpO2Vsc2V7aWYoIWdvb2cuZ2xvYmFsLmV2YWwpdGhyb3cgRXJyb3IoXCJnb29nLmdsb2JhbEV2YWwgbm90IGF2YWlsYWJsZVwiKTtpZihudWxsPT1nb29nLmV2YWxXb3Jrc0Zvckdsb2JhbHNfKXt0cnl7Z29vZy5nbG9iYWwuZXZhbChcInZhciBfZXZhbFRlc3RfID0gMTtcIil9Y2F0Y2goZSl7fWlmKHZvaWQgMCE9PWdvb2cuZ2xvYmFsLl9ldmFsVGVzdF8pe3RyeXtkZWxldGUgZ29vZy5nbG9iYWwuX2V2YWxUZXN0X31jYXRjaChlKXt9Z29vZy5ldmFsV29ya3NGb3JHbG9iYWxzXz0hMH1lbHNlIGdvb2cuZXZhbFdvcmtzRm9yR2xvYmFsc189ITF9aWYoZ29vZy5ldmFsV29ya3NGb3JHbG9iYWxzXylnb29nLmdsb2JhbC5ldmFsKGUpO2Vsc2V7dmFyIHQ9Z29vZy5nbG9iYWwuZG9jdW1lbnQsbz10LmNyZWF0ZUVsZW1lbnQoXCJTQ1JJUFRcIik7by50eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIsby5kZWZlcj0hMSxvLmFwcGVuZENoaWxkKHQuY3JlYXRlVGV4dE5vZGUoZSkpLHQuaGVhZC5hcHBlbmRDaGlsZChvKSx0LmhlYWQucmVtb3ZlQ2hpbGQobyl9fX0sZ29vZy5ldmFsV29ya3NGb3JHbG9iYWxzXz1udWxsLGdvb2cuZ2V0Q3NzTmFtZT1mdW5jdGlvbihlLHQpe2lmKFwiLlwiPT1TdHJpbmcoZSkuY2hhckF0KDApKXRocm93IEVycm9yKCdjbGFzc05hbWUgcGFzc2VkIGluIGdvb2cuZ2V0Q3NzTmFtZSBtdXN0IG5vdCBzdGFydCB3aXRoIFwiLlwiLiBZb3UgcGFzc2VkOiAnK2UpO3ZhciBvPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmNzc05hbWVNYXBwaW5nX1tlXXx8ZX0scj1mdW5jdGlvbihlKXtlPWUuc3BsaXQoXCItXCIpO2Zvcih2YXIgdD1bXSxyPTA7cjxlLmxlbmd0aDtyKyspdC5wdXNoKG8oZVtyXSkpO3JldHVybiB0LmpvaW4oXCItXCIpfTtyZXR1cm4gcj1nb29nLmNzc05hbWVNYXBwaW5nXz9cIkJZX1dIT0xFXCI9PWdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8/bzpyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxlPXQ/ZStcIi1cIityKHQpOnIoZSksZ29vZy5nbG9iYWwuQ0xPU1VSRV9DU1NfTkFNRV9NQVBfRk4/Z29vZy5nbG9iYWwuQ0xPU1VSRV9DU1NfTkFNRV9NQVBfRk4oZSk6ZX0sZ29vZy5zZXRDc3NOYW1lTWFwcGluZz1mdW5jdGlvbihlLHQpe2dvb2cuY3NzTmFtZU1hcHBpbmdfPWUsZ29vZy5jc3NOYW1lTWFwcGluZ1N0eWxlXz10fSwhQ09NUElMRUQmJmdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyYmKGdvb2cuY3NzTmFtZU1hcHBpbmdfPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyksZ29vZy5nZXRNc2c9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBvJiZvLmh0bWwmJihlPWUucmVwbGFjZSgvPC9nLFwiJmx0O1wiKSksdCYmKGU9ZS5yZXBsYWNlKC9cXHtcXCQoW159XSspfS9nLChmdW5jdGlvbihlLG8pe3JldHVybiBudWxsIT10JiZvIGluIHQ/dFtvXTplfSkpKSxlfSxnb29nLmdldE1zZ1dpdGhGYWxsYmFjaz1mdW5jdGlvbihlLHQpe3JldHVybiBlfSxnb29nLmV4cG9ydFN5bWJvbD1mdW5jdGlvbihlLHQsbyl7Z29vZy5leHBvcnRQYXRoXyhlLHQsbyl9LGdvb2cuZXhwb3J0UHJvcGVydHk9ZnVuY3Rpb24oZSx0LG8pe2VbdF09b30sZ29vZy5pbmhlcml0cz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oKXt9by5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5zdXBlckNsYXNzXz10LnByb3RvdHlwZSxlLnByb3RvdHlwZT1uZXcgbyxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUuYmFzZT1mdW5jdGlvbihlLG8scil7Zm9yKHZhciBuPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMikscz0yO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspbltzLTJdPWFyZ3VtZW50c1tzXTtyZXR1cm4gdC5wcm90b3R5cGVbb10uYXBwbHkoZSxuKX19LGdvb2cuYmFzZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9YXJndW1lbnRzLmNhbGxlZS5jYWxsZXI7aWYoZ29vZy5TVFJJQ1RfTU9ERV9DT01QQVRJQkxFfHxnb29nLkRFQlVHJiYhcil0aHJvdyBFcnJvcihcImFyZ3VtZW50cy5jYWxsZXIgbm90IGRlZmluZWQuICBnb29nLmJhc2UoKSBjYW5ub3QgYmUgdXNlZCB3aXRoIHN0cmljdCBtb2RlIGNvZGUuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNS4xLyNzZWMtQ1wiKTtpZih2b2lkIDAhPT1yLnN1cGVyQ2xhc3NfKXtmb3IodmFyIG49QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKSxzPTE7czxhcmd1bWVudHMubGVuZ3RoO3MrKyluW3MtMV09YXJndW1lbnRzW3NdO3JldHVybiByLnN1cGVyQ2xhc3NfLmNvbnN0cnVjdG9yLmFwcGx5KGUsbil9aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQmJlwic3ltYm9sXCIhPXR5cGVvZiB0KXRocm93IEVycm9yKFwibWV0aG9kIG5hbWVzIHByb3ZpZGVkIHRvIGdvb2cuYmFzZSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgc3ltYm9sXCIpO2ZvcihuPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMikscz0yO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspbltzLTJdPWFyZ3VtZW50c1tzXTtzPSExO2Zvcih2YXIgaT1lLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtpO2k9T2JqZWN0LmdldFByb3RvdHlwZU9mKGkpKWlmKGlbdF09PT1yKXM9ITA7ZWxzZSBpZihzKXJldHVybiBpW3RdLmFwcGx5KGUsbik7aWYoZVt0XT09PXIpcmV0dXJuIGUuY29uc3RydWN0b3IucHJvdG90eXBlW3RdLmFwcGx5KGUsbik7dGhyb3cgRXJyb3IoXCJnb29nLmJhc2UgY2FsbGVkIGZyb20gYSBtZXRob2Qgb2Ygb25lIG5hbWUgdG8gYSBtZXRob2Qgb2YgYSBkaWZmZXJlbnQgbmFtZVwiKX0sZ29vZy5zY29wZT1mdW5jdGlvbihlKXtpZihnb29nLmlzSW5Nb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoXCJnb29nLnNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aGluIGEgbW9kdWxlLlwiKTtlLmNhbGwoZ29vZy5nbG9iYWwpfSxDT01QSUxFRHx8KGdvb2cuZ2xvYmFsLkNPTVBJTEVEPUNPTVBJTEVEKSxnb29nLmRlZmluZUNsYXNzPWZ1bmN0aW9uKGUsdCl7dmFyIG89dC5jb25zdHJ1Y3RvcixyPXQuc3RhdGljcztyZXR1cm4gbyYmbyE9T2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcnx8KG89ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihcImNhbm5vdCBpbnN0YW50aWF0ZSBhbiBpbnRlcmZhY2UgKG5vIGNvbnN0cnVjdG9yIGRlZmluZWQpLlwiKX0pLG89Z29vZy5kZWZpbmVDbGFzcy5jcmVhdGVTZWFsaW5nQ29uc3RydWN0b3JfKG8sZSksZSYmZ29vZy5pbmhlcml0cyhvLGUpLGRlbGV0ZSB0LmNvbnN0cnVjdG9yLGRlbGV0ZSB0LnN0YXRpY3MsZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKG8ucHJvdG90eXBlLHQpLG51bGwhPXImJihyIGluc3RhbmNlb2YgRnVuY3Rpb24/cihvKTpnb29nLmRlZmluZUNsYXNzLmFwcGx5UHJvcGVydGllc18obyxyKSksb30sZ29vZy5kZWZpbmVDbGFzcy5TRUFMX0NMQVNTX0lOU1RBTkNFUz1nb29nLkRFQlVHLGdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXz1mdW5jdGlvbihlLHQpe2lmKCFnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTKXJldHVybiBlO3ZhciBvPSFnb29nLmRlZmluZUNsYXNzLmlzVW5zZWFsYWJsZV8odCkscj1mdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiB0W2dvb2cuVUlEX1BST1BFUlRZX109dFtnb29nLlVJRF9QUk9QRVJUWV9dLHRoaXMuY29uc3RydWN0b3I9PT1yJiZvJiZPYmplY3Quc2VhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZPYmplY3Quc2VhbCh0KSx0fTtyZXR1cm4gcn0sZ29vZy5kZWZpbmVDbGFzcy5pc1Vuc2VhbGFibGVfPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLnByb3RvdHlwZSYmZS5wcm90b3R5cGVbZ29vZy5VTlNFQUxBQkxFX0NPTlNUUlVDVE9SX1BST1BFUlRZX119LGdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfPVwiY29uc3RydWN0b3IgaGFzT3duUHJvcGVydHkgaXNQcm90b3R5cGVPZiBwcm9wZXJ0eUlzRW51bWVyYWJsZSB0b0xvY2FsZVN0cmluZyB0b1N0cmluZyB2YWx1ZU9mXCIuc3BsaXQoXCIgXCIpLGdvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtmb3IodmFyIHI9MDtyPGdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfLmxlbmd0aDtyKyspbz1nb29nLmRlZmluZUNsYXNzLk9CSkVDVF9QUk9UT1RZUEVfRklFTERTX1tyXSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxvKSYmKGVbb109dFtvXSl9LGdvb2cudGFnVW5zZWFsYWJsZUNsYXNzPWZ1bmN0aW9uKGUpeyFDT01QSUxFRCYmZ29vZy5kZWZpbmVDbGFzcy5TRUFMX0NMQVNTX0lOU1RBTkNFUyYmKGUucHJvdG90eXBlW2dvb2cuVU5TRUFMQUJMRV9DT05TVFJVQ1RPUl9QUk9QRVJUWV9dPSEwKX0sZ29vZy5VTlNFQUxBQkxFX0NPTlNUUlVDVE9SX1BST1BFUlRZXz1cImdvb2dfZGVmaW5lQ2xhc3NfbGVnYWN5X3Vuc2VhbGFibGVcIiwhQ09NUElMRUQmJmdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQmJihnb29nLmluSHRtbERvY3VtZW50Xz1mdW5jdGlvbigpe3ZhciBlPWdvb2cuZ2xvYmFsLmRvY3VtZW50O3JldHVybiBudWxsIT1lJiZcIndyaXRlXCJpbiBlfSxnb29nLmlzRG9jdW1lbnRMb2FkaW5nXz1mdW5jdGlvbigpe3ZhciBlPWdvb2cuZ2xvYmFsLmRvY3VtZW50O3JldHVybiBlLmF0dGFjaEV2ZW50P1wiY29tcGxldGVcIiE9ZS5yZWFkeVN0YXRlOlwibG9hZGluZ1wiPT1lLnJlYWR5U3RhdGV9LGdvb2cuZmluZEJhc2VQYXRoXz1mdW5jdGlvbigpe2lmKGdvb2cuaXNEZWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9CQVNFX1BBVEgpJiZnb29nLmlzU3RyaW5nKGdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIKSlnb29nLmJhc2VQYXRoPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIO2Vsc2UgaWYoZ29vZy5pbkh0bWxEb2N1bWVudF8oKSl7dmFyIGU9Z29vZy5nbG9iYWwuZG9jdW1lbnQsdD1lLmN1cnJlbnRTY3JpcHQ7Zm9yKHQ9KGU9dD9bdF06ZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIlNDUklQVFwiKSkubGVuZ3RoLTE7MDw9dDstLXQpe3ZhciBvPWVbdF0uc3JjLHI9by5sYXN0SW5kZXhPZihcIj9cIik7aWYocj0tMT09cj9vLmxlbmd0aDpyLFwiYmFzZS5qc1wiPT1vLnN1YnN0cihyLTcsNykpe2dvb2cuYmFzZVBhdGg9by5zdWJzdHIoMCxyLTcpO2JyZWFrfX19fSxnb29nLmZpbmRCYXNlUGF0aF8oKSxnb29nLlRyYW5zcGlsZXI9ZnVuY3Rpb24oKXt0aGlzLnJlcXVpcmVzVHJhbnNwaWxhdGlvbl89bnVsbCx0aGlzLnRyYW5zcGlsYXRpb25UYXJnZXRfPWdvb2cuVFJBTlNQSUxFX1RPX0xBTkdVQUdFfSxnb29nLlRyYW5zcGlsZXIucHJvdG90eXBlLmNyZWF0ZVJlcXVpcmVzVHJhbnNwaWxhdGlvbl89ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKHQsbyl7ZT9kW3RdPSEwOm8oKT8oYz10LGRbdF09ITEpOmU9ZFt0XT0hMH1mdW5jdGlvbiBiKGEpe3RyeXtyZXR1cm4hIWV2YWwoYSl9Y2F0Y2goZSl7cmV0dXJuITF9fXZhciBjPVwiZXMzXCIsZD17ZXMzOiExfSxlPSExLGY9Z29vZy5nbG9iYWwubmF2aWdhdG9yJiZnb29nLmdsb2JhbC5uYXZpZ2F0b3IudXNlckFnZW50P2dvb2cuZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtyZXR1cm4gYShcImVzNVwiLChmdW5jdGlvbigpe3JldHVybiBiKFwiWzEsXS5sZW5ndGg9PTFcIil9KSksYShcImVzNlwiLChmdW5jdGlvbigpe3JldHVybiFmLm1hdGNoKC9FZGdlXFwvKFxcZCspKFxcLlxcZCkqL2kpJiZiKCcoKCk9PntcInVzZSBzdHJpY3RcIjtjbGFzcyBYe2NvbnN0cnVjdG9yKCl7aWYobmV3LnRhcmdldCE9U3RyaW5nKXRocm93IDE7dGhpcy54PTQyfX1sZXQgcT1SZWZsZWN0LmNvbnN0cnVjdChYLFtdLFN0cmluZyk7aWYocS54IT00Mnx8IShxIGluc3RhbmNlb2YgU3RyaW5nKSl0aHJvdyAxO2Zvcihjb25zdCBhIG9mWzIsM10pe2lmKGE9PTIpY29udGludWU7ZnVuY3Rpb24gZih6PXthfSl7bGV0IGE9MDtyZXR1cm4gei5hfXtmdW5jdGlvbiBmKCl7cmV0dXJuIDA7fX1yZXR1cm4gZigpPT0zfX0pKCknKX0pKSxhKFwiZXM3XCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGIoXCIyICoqIDIgPT0gNFwiKX0pKSxhKFwiZXM4XCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGIoXCJhc3luYyAoKSA9PiAxLCB0cnVlXCIpfSkpLGEoXCJlczlcIiwoZnVuY3Rpb24oKXtyZXR1cm4gYihcIih7Li4ucmVzdH0gPSB7fSksIHRydWVcIil9KSksYShcImVzX25leHRcIiwoZnVuY3Rpb24oKXtyZXR1cm4hMX0pKSx7dGFyZ2V0OmMsbWFwOmR9fSxnb29nLlRyYW5zcGlsZXIucHJvdG90eXBlLm5lZWRzVHJhbnNwaWxlPWZ1bmN0aW9uKGUsdCl7aWYoXCJhbHdheXNcIj09Z29vZy5UUkFOU1BJTEUpcmV0dXJuITA7aWYoXCJuZXZlclwiPT1nb29nLlRSQU5TUElMRSlyZXR1cm4hMTtpZighdGhpcy5yZXF1aXJlc1RyYW5zcGlsYXRpb25fKXt2YXIgbz10aGlzLmNyZWF0ZVJlcXVpcmVzVHJhbnNwaWxhdGlvbl8oKTt0aGlzLnJlcXVpcmVzVHJhbnNwaWxhdGlvbl89by5tYXAsdGhpcy50cmFuc3BpbGF0aW9uVGFyZ2V0Xz10aGlzLnRyYW5zcGlsYXRpb25UYXJnZXRffHxvLnRhcmdldH1pZihlIGluIHRoaXMucmVxdWlyZXNUcmFuc3BpbGF0aW9uXylyZXR1cm4hIXRoaXMucmVxdWlyZXNUcmFuc3BpbGF0aW9uX1tlXXx8ISghZ29vZy5pbkh0bWxEb2N1bWVudF8oKXx8XCJlczZcIiE9dHx8XCJub01vZHVsZVwiaW4gZ29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSk7dGhyb3cgRXJyb3IoXCJVbmtub3duIGxhbmd1YWdlIG1vZGU6IFwiK2UpfSxnb29nLlRyYW5zcGlsZXIucHJvdG90eXBlLnRyYW5zcGlsZT1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLnRyYW5zcGlsZV8oZSx0LHRoaXMudHJhbnNwaWxhdGlvblRhcmdldF8pfSxnb29nLnRyYW5zcGlsZXJfPW5ldyBnb29nLlRyYW5zcGlsZXIsZ29vZy5wcm90ZWN0U2NyaXB0VGFnXz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC88XFwvKFNDUklQVCkvZ2ksXCJcXFxceDNjLyQxXCIpfSxnb29nLkRlYnVnTG9hZGVyXz1mdW5jdGlvbigpe3RoaXMuZGVwZW5kZW5jaWVzXz17fSx0aGlzLmlkVG9QYXRoXz17fSx0aGlzLndyaXR0ZW5fPXt9LHRoaXMubG9hZGluZ0RlcHNfPVtdLHRoaXMuZGVwc1RvTG9hZF89W10sdGhpcy5wYXVzZWRfPSExLHRoaXMuZmFjdG9yeV89bmV3IGdvb2cuRGVwZW5kZW5jeUZhY3RvcnkoZ29vZy50cmFuc3BpbGVyXyksdGhpcy5kZWZlcnJlZENhbGxiYWNrc189e30sdGhpcy5kZWZlcnJlZFF1ZXVlXz1bXX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oKXtyJiYoZ29vZy5nbG9iYWwuc2V0VGltZW91dChyLDApLHI9bnVsbCl9dmFyIHI9dDtpZihlLmxlbmd0aCl7dD1bXTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHM9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGVbbl0pO2lmKCFzKXRocm93IEVycm9yKFwiVW5yZWdvbml6ZWQgbmFtZXNwYWNlOiBcIitlW25dKTt0LnB1c2godGhpcy5kZXBlbmRlbmNpZXNfW3NdKX1zPWdvb2cucmVxdWlyZTt2YXIgaT0wO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspcyhlW25dKSx0W25dLm9uTG9hZCgoZnVuY3Rpb24oKXsrK2k9PWUubGVuZ3RoJiZvKCl9KSl9ZWxzZSBvKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkQ2xvc3VyZURlcHM9ZnVuY3Rpb24oKXt0aGlzLmRlcHNUb0xvYWRfLnB1c2godGhpcy5mYWN0b3J5Xy5jcmVhdGVEZXBlbmRlbmN5KGdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCtcImRlcHMuanNcIiksXCJkZXBzLmpzXCIsW10sW10se30sITEpKSx0aGlzLmxvYWREZXBzXygpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUucmVxdWVzdGVkPWZ1bmN0aW9uKGUsdCl7KGU9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGUpKSYmKHR8fHRoaXMuYXJlRGVwc0xvYWRlZF8odGhpcy5kZXBlbmRlbmNpZXNfW2VdLnJlcXVpcmVzKSkmJih0PXRoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2VdKSYmKGRlbGV0ZSB0aGlzLmRlZmVycmVkQ2FsbGJhY2tzX1tlXSx0KCkpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oZSl7dGhpcy5mYWN0b3J5Xz1lfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZF89ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZ2V0UGF0aEZyb21EZXBzXyhlKSl0aHJvdyBlPVwiZ29vZy5yZXF1aXJlIGNvdWxkIG5vdCBmaW5kOiBcIitlLGdvb2cubG9nVG9Db25zb2xlXyhlKSxFcnJvcihlKTt2YXIgdD10aGlzLG89W10scj1mdW5jdGlvbihlKXt2YXIgbj10LmdldFBhdGhGcm9tRGVwc18oZSk7aWYoIW4pdGhyb3cgRXJyb3IoXCJCYWQgZGVwZW5kZW5jeSBwYXRoIG9yIHN5bWJvbDogXCIrZSk7aWYoIXQud3JpdHRlbl9bbl0pe2Zvcih0LndyaXR0ZW5fW25dPSEwLGU9dC5kZXBlbmRlbmNpZXNfW25dLG49MDtuPGUucmVxdWlyZXMubGVuZ3RoO24rKylnb29nLmlzUHJvdmlkZWRfKGUucmVxdWlyZXNbbl0pfHxyKGUucmVxdWlyZXNbbl0pO28ucHVzaChlKX19O3IoZSksZT0hIXRoaXMuZGVwc1RvTG9hZF8ubGVuZ3RoLHRoaXMuZGVwc1RvTG9hZF89dGhpcy5kZXBzVG9Mb2FkXy5jb25jYXQobyksdGhpcy5wYXVzZWRffHxlfHx0aGlzLmxvYWREZXBzXygpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZERlcHNfPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD10aGlzLnBhdXNlZF87dGhpcy5kZXBzVG9Mb2FkXy5sZW5ndGgmJiF0OykhZnVuY3Rpb24oKXt2YXIgbz0hMSxyPWUuZGVwc1RvTG9hZF8uc2hpZnQoKSxuPSExO2UubG9hZGluZ18ocik7dmFyIHM9e3BhdXNlOmZ1bmN0aW9uKCl7aWYobyl0aHJvdyBFcnJvcihcIkNhbm5vdCBjYWxsIHBhdXNlIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuXCIpO3Q9ITB9LHJlc3VtZTpmdW5jdGlvbigpe28/ZS5yZXN1bWVfKCk6dD0hMX0sbG9hZGVkOmZ1bmN0aW9uKCl7aWYobil0aHJvdyBFcnJvcihcIkRvdWJsZSBjYWxsIHRvIGxvYWRlZC5cIik7bj0hMCxlLmxvYWRlZF8ocil9LHBlbmRpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbz0wO288ZS5sb2FkaW5nRGVwc18ubGVuZ3RoO28rKyl0LnB1c2goZS5sb2FkaW5nRGVwc19bb10pO3JldHVybiB0fSxzZXRNb2R1bGVTdGF0ZTpmdW5jdGlvbihlKXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17dHlwZTplLG1vZHVsZU5hbWU6XCJcIixkZWNsYXJlTGVnYWN5TmFtZXNwYWNlOiExfX0scmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzOmZ1bmN0aW9uKGUsdCxvKXtvJiYoZ29vZy5sb2FkZWRNb2R1bGVzX1tvXT17ZXhwb3J0czp0LHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkVTNixtb2R1bGVJZDpvfHxcIlwifSl9LHJlZ2lzdGVyR29vZ01vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZSx0KXtnb29nLmxvYWRlZE1vZHVsZXNfW2VdPXtleHBvcnRzOnQsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDplfX0sY2xlYXJNb2R1bGVTdGF0ZTpmdW5jdGlvbigpe2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGx9LGRlZmVyOmZ1bmN0aW9uKHQpe2lmKG8pdGhyb3cgRXJyb3IoXCJDYW5ub3QgcmVnaXN0ZXIgd2l0aCBkZWZlciBhZnRlciB0aGUgY2FsbCB0byBsb2FkLlwiKTtlLmRlZmVyXyhyLHQpfSxhcmVEZXBzTG9hZGVkOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYXJlRGVwc0xvYWRlZF8oci5yZXF1aXJlcyl9fTt0cnl7ci5sb2FkKHMpfWZpbmFsbHl7bz0hMH19KCk7dCYmdGhpcy5wYXVzZV8oKX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnBhdXNlXz1mdW5jdGlvbigpe3RoaXMucGF1c2VkXz0hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnJlc3VtZV89ZnVuY3Rpb24oKXt0aGlzLnBhdXNlZF8mJih0aGlzLnBhdXNlZF89ITEsdGhpcy5sb2FkRGVwc18oKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkaW5nXz1mdW5jdGlvbihlKXt0aGlzLmxvYWRpbmdEZXBzXy5wdXNoKGUpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZGVkXz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aDt0KyspaWYodGhpcy5sb2FkaW5nRGVwc19bdF09PWUpe3RoaXMubG9hZGluZ0RlcHNfLnNwbGljZSh0LDEpO2JyZWFrfWZvcih0PTA7dDx0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDt0KyspaWYodGhpcy5kZWZlcnJlZFF1ZXVlX1t0XT09ZS5wYXRoKXt0aGlzLmRlZmVycmVkUXVldWVfLnNwbGljZSh0LDEpO2JyZWFrfWlmKHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aD09dGhpcy5kZWZlcnJlZFF1ZXVlXy5sZW5ndGgmJiF0aGlzLmRlcHNUb0xvYWRfLmxlbmd0aClmb3IoO3RoaXMuZGVmZXJyZWRRdWV1ZV8ubGVuZ3RoOyl0aGlzLnJlcXVlc3RlZCh0aGlzLmRlZmVycmVkUXVldWVfLnNoaWZ0KCksITApO2UubG9hZGVkKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5hcmVEZXBzTG9hZGVkXz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG89dGhpcy5nZXRQYXRoRnJvbURlcHNfKGVbdF0pO2lmKCFvfHwhKG8gaW4gdGhpcy5kZWZlcnJlZENhbGxiYWNrc18pJiYhZ29vZy5pc1Byb3ZpZGVkXyhlW3RdKSlyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmdldFBhdGhGcm9tRGVwc189ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW4gdGhpcy5pZFRvUGF0aF8/dGhpcy5pZFRvUGF0aF9bZV06ZSBpbiB0aGlzLmRlcGVuZGVuY2llc18/ZTpudWxsfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuZGVmZXJfPWZ1bmN0aW9uKGUsdCl7dGhpcy5kZWZlcnJlZENhbGxiYWNrc19bZS5wYXRoXT10LHRoaXMuZGVmZXJyZWRRdWV1ZV8ucHVzaChlLnBhdGgpfSxnb29nLkxvYWRDb250cm9sbGVyPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5sb2FkZWQ9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnBlbmRpbmc9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0cz1mdW5jdGlvbihlLHQsbyl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5zZXRNb2R1bGVTdGF0ZT1mdW5jdGlvbihlKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLmNsZWFyTW9kdWxlU3RhdGU9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLmRlZmVyPWZ1bmN0aW9uKGUpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuYXJlRGVwc0xvYWRlZD1mdW5jdGlvbigpe30sZ29vZy5EZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbil7dGhpcy5wYXRoPWUsdGhpcy5yZWxhdGl2ZVBhdGg9dCx0aGlzLnByb3ZpZGVzPW8sdGhpcy5yZXF1aXJlcz1yLHRoaXMubG9hZEZsYWdzPW4sdGhpcy5sb2FkZWRfPSExLHRoaXMubG9hZENhbGxiYWNrc189W119LGdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUuZ2V0UGF0aE5hbWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBhdGgsdD1lLmluZGV4T2YoXCI6Ly9cIik7cmV0dXJuIDA8PXQmJjA8PSh0PShlPWUuc3Vic3RyaW5nKHQrMykpLmluZGV4T2YoXCIvXCIpKSYmKGU9ZS5zdWJzdHJpbmcodCsxKSksZX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5vbkxvYWQ9ZnVuY3Rpb24oZSl7dGhpcy5sb2FkZWRfP2UoKTp0aGlzLmxvYWRDYWxsYmFja3NfLnB1c2goZSl9LGdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7dGhpcy5sb2FkZWRfPSEwO3ZhciBlPXRoaXMubG9hZENhbGxiYWNrc187dGhpcy5sb2FkQ2FsbGJhY2tzXz1bXTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdKCl9LGdvb2cuRGVwZW5kZW5jeS5kZWZlcl89ITEsZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwXz17fSxnb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja189ZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5yYW5kb20oKS50b1N0cmluZygzMik7cmV0dXJuIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bdF09ZSx0fSxnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXz1mdW5jdGlvbihlKXtkZWxldGUgZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwX1tlXX0sZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXz1mdW5jdGlvbihlLHQpe2lmKCEoZSBpbiBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfKSl0aHJvdyBFcnJvcihcIkNhbGxiYWNrIGtleSBcIitlK1wiIGRvZXMgbm90IGV4aXN0ICh3YXMgYmFzZS5qcyBsb2FkZWQgbW9yZSB0aGFuIG9uY2U/KS5cIik7Zm9yKHZhciBvPWdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bZV0scj1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKylyLnB1c2goYXJndW1lbnRzW25dKTtvLmFwcGx5KHZvaWQgMCxyKX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGUpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVClnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQodGhpcy5wYXRoKT9lLmxvYWRlZCgpOmUucGF1c2UoKTtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciB0PWdvb2cuZ2xvYmFsLmRvY3VtZW50O2lmKFwiY29tcGxldGVcIj09dC5yZWFkeVN0YXRlJiYhZ29vZy5FTkFCTEVfQ0hST01FX0FQUF9TQUZFX1NDUklQVF9MT0FESU5HKXtpZigvXFxiZGVwcy5qcyQvLnRlc3QodGhpcy5wYXRoKSlyZXR1cm4gdm9pZCBlLmxvYWRlZCgpO3Rocm93IEVycm9yKCdDYW5ub3Qgd3JpdGUgXCInK3RoaXMucGF0aCsnXCIgYWZ0ZXIgZG9jdW1lbnQgbG9hZCcpfWlmKCFnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkcmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkpe3ZhciBvPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXygoZnVuY3Rpb24odCl7Z29vZy5EZWJ1Z0xvYWRlcl8uSVNfT0xEX0lFXyYmXCJjb21wbGV0ZVwiIT10LnJlYWR5U3RhdGV8fChnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhvKSxlLmxvYWRlZCgpKX0pKSxyPSFnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfJiZnb29nLmdldFNjcmlwdE5vbmNlKCk/JyBub25jZT1cIicrZ29vZy5nZXRTY3JpcHROb25jZSgpKydcIic6XCJcIjtyPSc8c2NyaXB0IHNyYz1cIicrdGhpcy5wYXRoKydcIiAnKyhnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfP1wib25yZWFkeXN0YXRlY2hhbmdlXCI6XCJvbmxvYWRcIikrXCI9XFxcImdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJ1wiK28rJ1xcJywgdGhpcylcIiB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgJysoZ29vZy5EZXBlbmRlbmN5LmRlZmVyXz9cImRlZmVyXCI6XCJcIikrcitcIj48XFwvc2NyaXB0PlwiLHQud3JpdGUoZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChyKTpyKX1lbHNle3ZhciBuPXQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtuLmRlZmVyPWdvb2cuRGVwZW5kZW5jeS5kZWZlcl8sbi5hc3luYz0hMSxuLnR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiwocj1nb29nLmdldFNjcmlwdE5vbmNlKCkpJiZuLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsciksZ29vZy5EZWJ1Z0xvYWRlcl8uSVNfT0xEX0lFXz8oZS5wYXVzZSgpLG4ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7XCJsb2FkZWRcIiE9bi5yZWFkeVN0YXRlJiZcImNvbXBsZXRlXCIhPW4ucmVhZHlTdGF0ZXx8KGUubG9hZGVkKCksZS5yZXN1bWUoKSl9KTpuLm9ubG9hZD1mdW5jdGlvbigpe24ub25sb2FkPW51bGwsZS5sb2FkZWQoKX0sbi5zcmM9Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0VVJMKHRoaXMucGF0aCk6dGhpcy5wYXRoLHQuaGVhZC5hcHBlbmRDaGlsZChuKX19ZWxzZSBnb29nLmxvZ1RvQ29uc29sZV8oXCJDYW5ub3QgdXNlIGRlZmF1bHQgZGVidWcgbG9hZGVyIG91dHNpZGUgb2YgSFRNTCBkb2N1bWVudHMuXCIpLFwiZGVwcy5qc1wiPT10aGlzLnJlbGF0aXZlUGF0aD8oZ29vZy5sb2dUb0NvbnNvbGVfKFwiQ29uc2lkZXIgc2V0dGluZyBDTE9TVVJFX0lNUE9SVF9TQ1JJUFQgYmVmb3JlIGxvYWRpbmcgYmFzZS5qcywgb3Igc2V0dGluZyBDTE9TVVJFX05PX0RFUFMgdG8gdHJ1ZS5cIiksZS5sb2FkZWQoKSk6ZS5wYXVzZSgpfSxnb29nLkVzNk1vZHVsZURlcGVuZGVuY3k9ZnVuY3Rpb24oZSx0LG8scixuKXtnb29nLkRlcGVuZGVuY3kuY2FsbCh0aGlzLGUsdCxvLHIsbil9LGdvb2cuaW5oZXJpdHMoZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGUpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVClnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQodGhpcy5wYXRoKT9lLmxvYWRlZCgpOmUucGF1c2UoKTtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciB0PWdvb2cuZ2xvYmFsLmRvY3VtZW50LG89dGhpcztpZihnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpKXt2YXIgcj1mdW5jdGlvbihlLG8pe2U9bz8nPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgY3Jvc3NvcmlnaW4+JytvK1wiPFxcL3NjcmlwdD5cIjonPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgY3Jvc3NvcmlnaW4gc3JjPVwiJytlKydcIj48XFwvc2NyaXB0PicsdC53cml0ZShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVIVE1MKGUpOmUpfTtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwfWVsc2Ugcj1mdW5jdGlvbihlLG8pe3ZhciByPXQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtyLmRlZmVyPSEwLHIuYXN5bmM9ITEsci50eXBlPVwibW9kdWxlXCIsci5zZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiLCEwKTt2YXIgbj1nb29nLmdldFNjcmlwdE5vbmNlKCk7biYmci5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLG4pLG8/ci50ZXh0Q29udGVudD1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVTY3JpcHQobyk6bzpyLnNyYz1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVTY3JpcHRVUkwoZSk6ZSx0LmhlYWQuYXBwZW5kQ2hpbGQocil9O3ZhciBuPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXygoZnVuY3Rpb24oKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhuKSxlLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpfSkpO3Iodm9pZCAwLCdnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKFwiJytuKydcIiknKSxyKHRoaXMucGF0aCx2b2lkIDApO3ZhciBzPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXygoZnVuY3Rpb24odCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18ocyksZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHMoby5wYXRoLHQsZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZSl9KSk7cih2b2lkIDAsJ2ltcG9ydCAqIGFzIG0gZnJvbSBcIicrdGhpcy5wYXRoKydcIjsgZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXyhcIicrcysnXCIsIG0pJyk7dmFyIGk9Z29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKChmdW5jdGlvbigpe2dvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGkpLGUuY2xlYXJNb2R1bGVTdGF0ZSgpLGUubG9hZGVkKCl9KSk7cih2b2lkIDAsJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oXCInK2krJ1wiKScpfWVsc2UgZ29vZy5sb2dUb0NvbnNvbGVfKFwiQ2Fubm90IHVzZSBkZWZhdWx0IGRlYnVnIGxvYWRlciBvdXRzaWRlIG9mIEhUTUwgZG9jdW1lbnRzLlwiKSxlLnBhdXNlKCl9LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbil7Z29vZy5EZXBlbmRlbmN5LmNhbGwodGhpcyxlLHQsbyxyLG4pLHRoaXMuY29udGVudHNfPW51bGwsdGhpcy5sYXp5RmV0Y2hfPSFnb29nLmluSHRtbERvY3VtZW50XygpfHwhKFwibm9Nb2R1bGVcImluIGdvb2cuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIikpfSxnb29nLmluaGVyaXRzKGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3IuY29udGVudHNfPWdvb2cubG9hZEZpbGVTeW5jXyhyLnBhdGgpLHIuY29udGVudHNfJiYoci5jb250ZW50c189ci50cmFuc2Zvcm0oci5jb250ZW50c18pLHIuY29udGVudHNfJiYoci5jb250ZW50c18rPVwiXFxuLy8jIHNvdXJjZVVSTD1cIityLnBhdGgpKX1mdW5jdGlvbiBvKCl7aWYoci5sYXp5RmV0Y2hfJiZ0KCksci5jb250ZW50c18pe24mJmUuc2V0TW9kdWxlU3RhdGUoZ29vZy5Nb2R1bGVUeXBlLkVTNik7dHJ5e3ZhciBvPXIuY29udGVudHNfO2lmKHIuY29udGVudHNfPW51bGwsZ29vZy5nbG9iYWxFdmFsKG8pLG4pdmFyIHM9Z29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZX1maW5hbGx5e24mJmUuY2xlYXJNb2R1bGVTdGF0ZSgpfW4mJmdvb2cuZ2xvYmFsLiRqc2NvbXAucmVxdWlyZS5lbnN1cmUoW3IuZ2V0UGF0aE5hbWUoKV0sKGZ1bmN0aW9uKCl7ZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHMoci5wYXRoLGdvb2cuZ2xvYmFsLiRqc2NvbXAucmVxdWlyZShyLmdldFBhdGhOYW1lKCkpLHMpfSkpLGUubG9hZGVkKCl9fXZhciByPXRoaXM7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKXQoKSx0aGlzLmNvbnRlbnRzXyYmZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKFwiXCIsdGhpcy5jb250ZW50c18pPyh0aGlzLmNvbnRlbnRzXz1udWxsLGUubG9hZGVkKCkpOmUucGF1c2UoKTtlbHNle3ZhciBuPXRoaXMubG9hZEZsYWdzLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkVTNjt0aGlzLmxhenlGZXRjaF98fHQoKTt2YXIgcz0xPGUucGVuZGluZygpLmxlbmd0aCxpPXMmJmdvb2cuRGVidWdMb2FkZXJfLklTX09MRF9JRV87aWYocz1nb29nLkRlcGVuZGVuY3kuZGVmZXJfJiYoc3x8Z29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSksaXx8cyllLmRlZmVyKChmdW5jdGlvbigpe28oKX0pKTtlbHNle3ZhciBhPWdvb2cuZ2xvYmFsLmRvY3VtZW50O2lmKGk9Z29vZy5pbkh0bWxEb2N1bWVudF8oKSYmXCJBY3RpdmVYT2JqZWN0XCJpbiBnb29nLmdsb2JhbCxuJiZnb29nLmluSHRtbERvY3VtZW50XygpJiZnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpJiYhaSl7Z29vZy5EZXBlbmRlbmN5LmRlZmVyXz0hMCxlLnBhdXNlKCk7dmFyIGc9YS5vbnJlYWR5c3RhdGVjaGFuZ2U7YS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtcImludGVyYWN0aXZlXCI9PWEucmVhZHlTdGF0ZSYmKGEub25yZWFkeXN0YXRlY2hhbmdlPWcsbygpLGUucmVzdW1lKCkpLGdvb2cuaXNGdW5jdGlvbihnKSYmZy5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX19ZWxzZSFnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfJiZnb29nLmluSHRtbERvY3VtZW50XygpJiZnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpP2Z1bmN0aW9uKCl7dmFyIGU9Z29vZy5nbG9iYWwuZG9jdW1lbnQsdD1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oKGZ1bmN0aW9uKCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18odCksbygpfSkpLHI9JzxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPicrZ29vZy5wcm90ZWN0U2NyaXB0VGFnXygnZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXyhcIicrdCsnXCIpOycpK1wiPFxcL3NjcmlwdD5cIjtlLndyaXRlKGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZUhUTUwocik6cil9KCk6bygpfX19LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7fSxnb29nLlRyYW5zcGlsZWREZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbixzKXtnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeS5jYWxsKHRoaXMsZSx0LG8scixuKSx0aGlzLnRyYW5zcGlsZXI9c30sZ29vZy5pbmhlcml0cyhnb29nLlRyYW5zcGlsZWREZXBlbmRlbmN5LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5KSxnb29nLlRyYW5zcGlsZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudHJhbnNwaWxlci50cmFuc3BpbGUoZSx0aGlzLmdldFBhdGhOYW1lKCkpfSxnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbil7Z29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kuY2FsbCh0aGlzLGUsdCxvLHIsbil9LGdvb2cuaW5oZXJpdHMoZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSksZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbixzLGkpe2dvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LmNhbGwodGhpcyxlLHQsbyxyLG4pLHRoaXMubmVlZHNUcmFuc3BpbGVfPXMsdGhpcy50cmFuc3BpbGVyXz1pfSxnb29nLmluaGVyaXRzKGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3ksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kpLGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3kucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5uZWVkc1RyYW5zcGlsZV8mJihlPXRoaXMudHJhbnNwaWxlcl8udHJhbnNwaWxlKGUsdGhpcy5nZXRQYXRoTmFtZSgpKSksZ29vZy5MT0FEX01PRFVMRV9VU0lOR19FVkFMJiZnb29nLmlzRGVmKGdvb2cuZ2xvYmFsLkpTT04pP1wiZ29vZy5sb2FkTW9kdWxlKFwiK2dvb2cuZ2xvYmFsLkpTT04uc3RyaW5naWZ5KGUrXCJcXG4vLyMgc291cmNlVVJMPVwiK3RoaXMucGF0aCtcIlxcblwiKStcIik7XCI6J2dvb2cubG9hZE1vZHVsZShmdW5jdGlvbihleHBvcnRzKSB7XCJ1c2Ugc3RyaWN0XCI7JytlK1wiXFxuO3JldHVybiBleHBvcnRzfSk7XFxuLy8jIHNvdXJjZVVSTD1cIit0aGlzLnBhdGgrXCJcXG5cIn0sZ29vZy5EZWJ1Z0xvYWRlcl8uSVNfT0xEX0lFXz0hKGdvb2cuZ2xvYmFsLmF0b2J8fCFnb29nLmdsb2JhbC5kb2N1bWVudHx8IWdvb2cuZ2xvYmFsLmRvY3VtZW50LmFsbCksZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmFkZERlcGVuZGVuY3k9ZnVuY3Rpb24oZSx0LG8scil7dD10fHxbXSxlPWUucmVwbGFjZSgvXFxcXC9nLFwiL1wiKTt2YXIgbj1nb29nLm5vcm1hbGl6ZVBhdGhfKGdvb2cuYmFzZVBhdGgrZSk7Zm9yKHImJlwiYm9vbGVhblwiIT10eXBlb2Ygcnx8KHI9cj97bW9kdWxlOmdvb2cuTW9kdWxlVHlwZS5HT09HfTp7fSksbz10aGlzLmZhY3RvcnlfLmNyZWF0ZURlcGVuZGVuY3kobixlLHQsbyxyLGdvb2cudHJhbnNwaWxlcl8ubmVlZHNUcmFuc3BpbGUoci5sYW5nfHxcImVzM1wiLHIubW9kdWxlKSksdGhpcy5kZXBlbmRlbmNpZXNfW25dPW8sbz0wO288dC5sZW5ndGg7bysrKXRoaXMuaWRUb1BhdGhfW3Rbb11dPW47dGhpcy5pZFRvUGF0aF9bZV09bn0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbihlKXt0aGlzLnRyYW5zcGlsZXI9ZX0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeS5wcm90b3R5cGUuY3JlYXRlRGVwZW5kZW5jeT1mdW5jdGlvbihlLHQsbyxyLG4scyl7cmV0dXJuIG4ubW9kdWxlPT1nb29nLk1vZHVsZVR5cGUuR09PRz9uZXcgZ29vZy5Hb29nTW9kdWxlRGVwZW5kZW5jeShlLHQsbyxyLG4scyx0aGlzLnRyYW5zcGlsZXIpOnM/bmV3IGdvb2cuVHJhbnNwaWxlZERlcGVuZGVuY3koZSx0LG8scixuLHRoaXMudHJhbnNwaWxlcik6bi5tb2R1bGU9PWdvb2cuTW9kdWxlVHlwZS5FUzY/XCJuZXZlclwiPT1nb29nLlRSQU5TUElMRSYmZ29vZy5BU1NVTUVfRVNfTU9EVUxFU19UUkFOU1BJTEVEP25ldyBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5KGUsdCxvLHIsbik6bmV3IGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeShlLHQsbyxyLG4pOm5ldyBnb29nLkRlcGVuZGVuY3koZSx0LG8scixuKX0sZ29vZy5kZWJ1Z0xvYWRlcl89bmV3IGdvb2cuRGVidWdMb2FkZXJfLGdvb2cubG9hZENsb3N1cmVEZXBzPWZ1bmN0aW9uKCl7Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCl9LGdvb2cuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oZSl7Z29vZy5kZWJ1Z0xvYWRlcl8uc2V0RGVwZW5kZW5jeUZhY3RvcnkoZSl9LGdvb2cuZ2xvYmFsLkNMT1NVUkVfTk9fREVQU3x8Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCksZ29vZy5ib290c3RyYXA9ZnVuY3Rpb24oZSx0KXtnb29nLmRlYnVnTG9hZGVyXy5ib290c3RyYXAoZSx0KX0pLGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT1cIlwiLGdvb2cuaWRlbnRpdHlfPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeT1mdW5jdGlvbihlKXt2YXIgdD1udWxsO2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBUcnVzdGVkVHlwZXN8fCFUcnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KXJldHVybiB0O3RyeXt0PVRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koZSx7Y3JlYXRlSFRNTDpnb29nLmlkZW50aXR5XyxjcmVhdGVTY3JpcHQ6Z29vZy5pZGVudGl0eV8sY3JlYXRlU2NyaXB0VVJMOmdvb2cuaWRlbnRpdHlfLGNyZWF0ZVVSTDpnb29nLmlkZW50aXR5X30pfWNhdGNoKGUpe2dvb2cubG9nVG9Db25zb2xlXyhlLm1lc3NhZ2UpfXJldHVybiB0fSxnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU/Z29vZy5jcmVhdGVUcnVzdGVkVHlwZXNQb2xpY3koZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV9OQU1FK1wiI2Jhc2VcIik6bnVsbCxnb29nLm9iamVjdD17fSxnb29nLm9iamVjdC5pcz1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dD8wIT09ZXx8MS9lPT0xL3Q6ZSE9ZSYmdCE9dH0sZ29vZy5vYmplY3QuZm9yRWFjaD1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByIGluIGUpdC5jYWxsKG8sZVtyXSxyLGUpfSxnb29nLm9iamVjdC5maWx0ZXI9ZnVuY3Rpb24oZSx0LG8pe3ZhciByLG49e307Zm9yKHIgaW4gZSl0LmNhbGwobyxlW3JdLHIsZSkmJihuW3JdPWVbcl0pO3JldHVybiBufSxnb29nLm9iamVjdC5tYXA9ZnVuY3Rpb24oZSx0LG8pe3ZhciByLG49e307Zm9yKHIgaW4gZSluW3JdPXQuY2FsbChvLGVbcl0scixlKTtyZXR1cm4gbn0sZ29vZy5vYmplY3Quc29tZT1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByIGluIGUpaWYodC5jYWxsKG8sZVtyXSxyLGUpKXJldHVybiEwO3JldHVybiExfSxnb29nLm9iamVjdC5ldmVyeT1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByIGluIGUpaWYoIXQuY2FsbChvLGVbcl0scixlKSlyZXR1cm4hMTtyZXR1cm4hMH0sZ29vZy5vYmplY3QuZ2V0Q291bnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbz0wO2Zvcih0IGluIGUpbysrO3JldHVybiBvfSxnb29nLm9iamVjdC5nZXRBbnlLZXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUpcmV0dXJuIHR9LGdvb2cub2JqZWN0LmdldEFueVZhbHVlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKXJldHVybiBlW3RdfSxnb29nLm9iamVjdC5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLm9iamVjdC5jb250YWluc1ZhbHVlKGUsdCl9LGdvb2cub2JqZWN0LmdldFZhbHVlcz1mdW5jdGlvbihlKXt2YXIgdCxvPVtdLHI9MDtmb3IodCBpbiBlKW9bcisrXT1lW3RdO3JldHVybiBvfSxnb29nLm9iamVjdC5nZXRLZXlzPWZ1bmN0aW9uKGUpe3ZhciB0LG89W10scj0wO2Zvcih0IGluIGUpb1tyKytdPXQ7cmV0dXJuIG99LGdvb2cub2JqZWN0LmdldFZhbHVlQnlLZXlzPWZ1bmN0aW9uKGUsdCl7dmFyIG89Z29vZy5pc0FycmF5TGlrZSh0KSxyPW8/dDphcmd1bWVudHM7Zm9yKG89bz8wOjE7bzxyLmxlbmd0aDtvKyspe2lmKG51bGw9PWUpcmV0dXJuO2U9ZVtyW29dXX1yZXR1cm4gZX0sZ29vZy5vYmplY3QuY29udGFpbnNLZXk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9PWUmJnQgaW4gZX0sZ29vZy5vYmplY3QuY29udGFpbnNWYWx1ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiBlKWlmKGVbb109PXQpcmV0dXJuITA7cmV0dXJuITF9LGdvb2cub2JqZWN0LmZpbmRLZXk9ZnVuY3Rpb24oZSx0LG8pe2Zvcih2YXIgciBpbiBlKWlmKHQuY2FsbChvLGVbcl0scixlKSlyZXR1cm4gcn0sZ29vZy5vYmplY3QuZmluZFZhbHVlPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4odD1nb29nLm9iamVjdC5maW5kS2V5KGUsdCxvKSkmJmVbdF19LGdvb2cub2JqZWN0LmlzRW1wdHk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUpcmV0dXJuITE7cmV0dXJuITB9LGdvb2cub2JqZWN0LmNsZWFyPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWRlbGV0ZSBlW3RdfSxnb29nLm9iamVjdC5yZW1vdmU9ZnVuY3Rpb24oZSx0KXt2YXIgbztyZXR1cm4obz10IGluIGUpJiZkZWxldGUgZVt0XSxvfSxnb29nLm9iamVjdC5hZGQ9ZnVuY3Rpb24oZSx0LG8pe2lmKG51bGwhPT1lJiZ0IGluIGUpdGhyb3cgRXJyb3IoJ1RoZSBvYmplY3QgYWxyZWFkeSBjb250YWlucyB0aGUga2V5IFwiJyt0KydcIicpO2dvb2cub2JqZWN0LnNldChlLHQsbyl9LGdvb2cub2JqZWN0LmdldD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIG51bGwhPT1lJiZ0IGluIGU/ZVt0XTpvfSxnb29nLm9iamVjdC5zZXQ9ZnVuY3Rpb24oZSx0LG8pe2VbdF09b30sZ29vZy5vYmplY3Quc2V0SWZVbmRlZmluZWQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiB0IGluIGU/ZVt0XTplW3RdPW99LGdvb2cub2JqZWN0LnNldFdpdGhSZXR1cm5WYWx1ZUlmTm90U2V0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gdCBpbiBlP2VbdF06KG89bygpLGVbdF09byl9LGdvb2cub2JqZWN0LmVxdWFscz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiBlKWlmKCEobyBpbiB0KXx8ZVtvXSE9PXRbb10pcmV0dXJuITE7Zm9yKHZhciByIGluIHQpaWYoIShyIGluIGUpKXJldHVybiExO3JldHVybiEwfSxnb29nLm9iamVjdC5jbG9uZT1mdW5jdGlvbihlKXt2YXIgdCxvPXt9O2Zvcih0IGluIGUpb1t0XT1lW3RdO3JldHVybiBvfSxnb29nLm9iamVjdC51bnNhZmVDbG9uZT1mdW5jdGlvbihlKXt2YXIgdD1nb29nLnR5cGVPZihlKTtpZihcIm9iamVjdFwiPT10fHxcImFycmF5XCI9PXQpe2lmKGdvb2cuaXNGdW5jdGlvbihlLmNsb25lKSlyZXR1cm4gZS5jbG9uZSgpO2Zvcih2YXIgbyBpbiB0PVwiYXJyYXlcIj09dD9bXTp7fSxlKXRbb109Z29vZy5vYmplY3QudW5zYWZlQ2xvbmUoZVtvXSk7cmV0dXJuIHR9cmV0dXJuIGV9LGdvb2cub2JqZWN0LnRyYW5zcG9zZT1mdW5jdGlvbihlKXt2YXIgdCxvPXt9O2Zvcih0IGluIGUpb1tlW3RdXT10O3JldHVybiBvfSxnb29nLm9iamVjdC5QUk9UT1RZUEVfRklFTERTXz1cImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZlwiLnNwbGl0KFwiIFwiKSxnb29nLm9iamVjdC5leHRlbmQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG8scixuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7Zm9yKG8gaW4gcj1hcmd1bWVudHNbbl0pZVtvXT1yW29dO2Zvcih2YXIgcz0wO3M8Z29vZy5vYmplY3QuUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoO3MrKylvPWdvb2cub2JqZWN0LlBST1RPVFlQRV9GSUVMRFNfW3NdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG8pJiYoZVtvXT1yW29dKX19LGdvb2cub2JqZWN0LmNyZWF0ZT1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO2lmKDE9PXQmJmdvb2cuaXNBcnJheShhcmd1bWVudHNbMF0pKXJldHVybiBnb29nLm9iamVjdC5jcmVhdGUuYXBwbHkobnVsbCxhcmd1bWVudHNbMF0pO2lmKHQlMil0aHJvdyBFcnJvcihcIlVuZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzXCIpO2Zvcih2YXIgbz17fSxyPTA7cjx0O3IrPTIpb1thcmd1bWVudHNbcl1dPWFyZ3VtZW50c1tyKzFdO3JldHVybiBvfSxnb29nLm9iamVjdC5jcmVhdGVTZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDtpZigxPT10JiZnb29nLmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gZ29vZy5vYmplY3QuY3JlYXRlU2V0LmFwcGx5KG51bGwsYXJndW1lbnRzWzBdKTtmb3IodmFyIG89e30scj0wO3I8dDtyKyspb1thcmd1bWVudHNbcl1dPSEwO3JldHVybiBvfSxnb29nLm9iamVjdC5jcmVhdGVJbW11dGFibGVWaWV3PWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIE9iamVjdC5pc0Zyb3plbiYmIU9iamVjdC5pc0Zyb3plbihlKSYmKHQ9T2JqZWN0LmNyZWF0ZShlKSxPYmplY3QuZnJlZXplKHQpKSx0fSxnb29nLm9iamVjdC5pc0ltbXV0YWJsZVZpZXc9ZnVuY3Rpb24oZSl7cmV0dXJuISFPYmplY3QuaXNGcm96ZW4mJk9iamVjdC5pc0Zyb3plbihlKX0sZ29vZy5vYmplY3QuZ2V0QWxsUHJvcGVydHlOYW1lcz1mdW5jdGlvbihlLHQsbyl7aWYoIWUpcmV0dXJuW107aWYoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHwhT2JqZWN0LmdldFByb3RvdHlwZU9mKXJldHVybiBnb29nLm9iamVjdC5nZXRLZXlzKGUpO2Zvcih2YXIgcj17fTtlJiYoZSE9PU9iamVjdC5wcm90b3R5cGV8fHQpJiYoZSE9PUZ1bmN0aW9uLnByb3RvdHlwZXx8byk7KXtmb3IodmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkscz0wO3M8bi5sZW5ndGg7cysrKXJbbltzXV09ITA7ZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9cmV0dXJuIGdvb2cub2JqZWN0LmdldEtleXMocil9LGdvb2cub2JqZWN0LmdldFN1cGVyQ2xhc3M9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUucHJvdG90eXBlKSkmJmUuY29uc3RydWN0b3J9LGdvb2cuZGVidWc9e30sZ29vZy5kZWJ1Zy5FcnJvcj1mdW5jdGlvbihlKXtpZihFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLGdvb2cuZGVidWcuRXJyb3IpO2Vsc2V7dmFyIHQ9RXJyb3IoKS5zdGFjazt0JiYodGhpcy5zdGFjaz10KX1lJiYodGhpcy5tZXNzYWdlPVN0cmluZyhlKSksdGhpcy5yZXBvcnRFcnJvclRvU2VydmVyPSEwfSxnb29nLmluaGVyaXRzKGdvb2cuZGVidWcuRXJyb3IsRXJyb3IpLGdvb2cuZGVidWcuRXJyb3IucHJvdG90eXBlLm5hbWU9XCJDdXN0b21FcnJvclwiLGdvb2cuZG9tPXt9LGdvb2cuZG9tLk5vZGVUeXBlPXtFTEVNRU5UOjEsQVRUUklCVVRFOjIsVEVYVDozLENEQVRBX1NFQ1RJT046NCxFTlRJVFlfUkVGRVJFTkNFOjUsRU5USVRZOjYsUFJPQ0VTU0lOR19JTlNUUlVDVElPTjo3LENPTU1FTlQ6OCxET0NVTUVOVDo5LERPQ1VNRU5UX1RZUEU6MTAsRE9DVU1FTlRfRlJBR01FTlQ6MTEsTk9UQVRJT046MTJ9LGdvb2cuYXNzZXJ0cz17fSxnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFM9Z29vZy5ERUJVRyxnb29nLmFzc2VydHMuQXNzZXJ0aW9uRXJyb3I9ZnVuY3Rpb24oZSx0KXtnb29nLmRlYnVnLkVycm9yLmNhbGwodGhpcyxnb29nLmFzc2VydHMuc3Vic18oZSx0KSksdGhpcy5tZXNzYWdlUGF0dGVybj1lfSxnb29nLmluaGVyaXRzKGdvb2cuYXNzZXJ0cy5Bc3NlcnRpb25FcnJvcixnb29nLmRlYnVnLkVycm9yKSxnb29nLmFzc2VydHMuQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLm5hbWU9XCJBc3NlcnRpb25FcnJvclwiLGdvb2cuYXNzZXJ0cy5ERUZBVUxUX0VSUk9SX0hBTkRMRVI9ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZ29vZy5hc3NlcnRzLmVycm9ySGFuZGxlcl89Z29vZy5hc3NlcnRzLkRFRkFVTFRfRVJST1JfSEFORExFUixnb29nLmFzc2VydHMuc3Vic189ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89XCJcIixyPShlPWUuc3BsaXQoXCIlc1wiKSkubGVuZ3RoLTEsbj0wO248cjtuKyspbys9ZVtuXSsobjx0Lmxlbmd0aD90W25dOlwiJXNcIik7cmV0dXJuIG8rZVtyXX0sZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV89ZnVuY3Rpb24oZSx0LG8scil7dmFyIG49XCJBc3NlcnRpb24gZmFpbGVkXCI7aWYobyl7bis9XCI6IFwiK287dmFyIHM9cn1lbHNlIGUmJihuKz1cIjogXCIrZSxzPXQpO2U9bmV3IGdvb2cuYXNzZXJ0cy5Bc3NlcnRpb25FcnJvcihcIlwiK24sc3x8W10pLGdvb2cuYXNzZXJ0cy5lcnJvckhhbmRsZXJfKGUpfSxnb29nLmFzc2VydHMuc2V0RXJyb3JIYW5kbGVyPWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmKGdvb2cuYXNzZXJ0cy5lcnJvckhhbmRsZXJfPWUpfSxnb29nLmFzc2VydHMuYXNzZXJ0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZSYmZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJcIixudWxsLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0RXhpc3RzPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZudWxsPT1lJiZnb29nLmFzc2VydHMuZG9Bc3NlcnRGYWlsdXJlXyhcIkV4cGVjdGVkIHRvIGV4aXN0OiAlcy5cIixbZV0sdCxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpLGV9LGdvb2cuYXNzZXJ0cy5mYWlsPWZ1bmN0aW9uKGUsdCl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZnb29nLmFzc2VydHMuZXJyb3JIYW5kbGVyXyhuZXcgZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yKFwiRmFpbHVyZVwiKyhlP1wiOiBcIitlOlwiXCIpLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSkpfSxnb29nLmFzc2VydHMuYXNzZXJ0TnVtYmVyPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc051bWJlcihlKSYmZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJFeHBlY3RlZCBudW1iZXIgYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0U3RyaW5nPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc1N0cmluZyhlKSYmZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJFeHBlY3RlZCBzdHJpbmcgYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0RnVuY3Rpb249ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiFnb29nLmlzRnVuY3Rpb24oZSkmJmdvb2cuYXNzZXJ0cy5kb0Fzc2VydEZhaWx1cmVfKFwiRXhwZWN0ZWQgZnVuY3Rpb24gYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0T2JqZWN0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc09iamVjdChlKSYmZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJFeHBlY3RlZCBvYmplY3QgYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0QXJyYXk9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiFnb29nLmlzQXJyYXkoZSkmJmdvb2cuYXNzZXJ0cy5kb0Fzc2VydEZhaWx1cmVfKFwiRXhwZWN0ZWQgYXJyYXkgYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0Qm9vbGVhbj1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmIWdvb2cuaXNCb29sZWFuKGUpJiZnb29nLmFzc2VydHMuZG9Bc3NlcnRGYWlsdXJlXyhcIkV4cGVjdGVkIGJvb2xlYW4gYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0RWxlbWVudD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8Z29vZy5pc09iamVjdChlKSYmZS5ub2RlVHlwZT09Z29vZy5kb20uTm9kZVR5cGUuRUxFTUVOVHx8Z29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJFeHBlY3RlZCBFbGVtZW50IGJ1dCBnb3QgJXM6ICVzLlwiLFtnb29nLnR5cGVPZihlKSxlXSx0LEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSksZX0sZ29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2Y9ZnVuY3Rpb24oZSx0LG8scil7cmV0dXJuIWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8ZSBpbnN0YW5jZW9mIHR8fGdvb2cuYXNzZXJ0cy5kb0Fzc2VydEZhaWx1cmVfKFwiRXhwZWN0ZWQgaW5zdGFuY2VvZiAlcyBidXQgZ290ICVzLlwiLFtnb29nLmFzc2VydHMuZ2V0VHlwZV8odCksZ29vZy5hc3NlcnRzLmdldFR5cGVfKGUpXSxvLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywzKSksZX0sZ29vZy5hc3NlcnRzLmFzc2VydEZpbml0ZT1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8XCJudW1iZXJcIj09dHlwZW9mIGUmJmlzRmluaXRlKGUpfHxnb29nLmFzc2VydHMuZG9Bc3NlcnRGYWlsdXJlXyhcIkV4cGVjdGVkICVzIHRvIGJlIGEgZmluaXRlIG51bWJlciBidXQgaXQgaXMgbm90LlwiLFtlXSx0LEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSksZX0sZ29vZy5hc3NlcnRzLmFzc2VydE9iamVjdFByb3RvdHlwZUlzSW50YWN0PWZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIE9iamVjdC5wcm90b3R5cGUpZ29vZy5hc3NlcnRzLmZhaWwoZStcIiBzaG91bGQgbm90IGJlIGVudW1lcmFibGUgaW4gT2JqZWN0LnByb3RvdHlwZS5cIil9LGdvb2cuYXNzZXJ0cy5nZXRUeXBlXz1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEZ1bmN0aW9uP2UuZGlzcGxheU5hbWV8fGUubmFtZXx8XCJ1bmtub3duIHR5cGUgbmFtZVwiOmUgaW5zdGFuY2VvZiBPYmplY3Q/ZS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZXx8ZS5jb25zdHJ1Y3Rvci5uYW1lfHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk6bnVsbD09PWU/XCJudWxsXCI6dHlwZW9mIGV9O3ZhciBqc3BiPXtCaW5hcnlDb25zdGFudHM6e30sQ29uc3RCaW5hcnlNZXNzYWdlOmZ1bmN0aW9uKCl7fSxCaW5hcnlNZXNzYWdlOmZ1bmN0aW9uKCl7fX07anNwYi5CaW5hcnlDb25zdGFudHMuRmllbGRUeXBlPXtJTlZBTElEOi0xLERPVUJMRToxLEZMT0FUOjIsSU5UNjQ6MyxVSU5UNjQ6NCxJTlQzMjo1LEZJWEVENjQ6NixGSVhFRDMyOjcsQk9PTDo4LFNUUklORzo5LEdST1VQOjEwLE1FU1NBR0U6MTEsQllURVM6MTIsVUlOVDMyOjEzLEVOVU06MTQsU0ZJWEVEMzI6MTUsU0ZJWEVENjQ6MTYsU0lOVDMyOjE3LFNJTlQ2NDoxOCxGSEFTSDY0OjMwLFZIQVNINjQ6MzF9LGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlPXtJTlZBTElEOi0xLFZBUklOVDowLEZJWEVENjQ6MSxERUxJTUlURUQ6MixTVEFSVF9HUk9VUDozLEVORF9HUk9VUDo0LEZJWEVEMzI6NX0sanNwYi5CaW5hcnlDb25zdGFudHMuRmllbGRUeXBlVG9XaXJlVHlwZT1mdW5jdGlvbihlKXt2YXIgdD1qc3BiLkJpbmFyeUNvbnN0YW50cy5GaWVsZFR5cGUsbz1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZTtzd2l0Y2goZSl7Y2FzZSB0LklOVDMyOmNhc2UgdC5JTlQ2NDpjYXNlIHQuVUlOVDMyOmNhc2UgdC5VSU5UNjQ6Y2FzZSB0LlNJTlQzMjpjYXNlIHQuU0lOVDY0OmNhc2UgdC5CT09MOmNhc2UgdC5FTlVNOmNhc2UgdC5WSEFTSDY0OnJldHVybiBvLlZBUklOVDtjYXNlIHQuRE9VQkxFOmNhc2UgdC5GSVhFRDY0OmNhc2UgdC5TRklYRUQ2NDpjYXNlIHQuRkhBU0g2NDpyZXR1cm4gby5GSVhFRDY0O2Nhc2UgdC5TVFJJTkc6Y2FzZSB0Lk1FU1NBR0U6Y2FzZSB0LkJZVEVTOnJldHVybiBvLkRFTElNSVRFRDtjYXNlIHQuRkxPQVQ6Y2FzZSB0LkZJWEVEMzI6Y2FzZSB0LlNGSVhFRDMyOnJldHVybiBvLkZJWEVEMzI7ZGVmYXVsdDpyZXR1cm4gby5JTlZBTElEfX0sanNwYi5CaW5hcnlDb25zdGFudHMuSU5WQUxJRF9GSUVMRF9OVU1CRVI9LTEsanNwYi5CaW5hcnlDb25zdGFudHMuRkxPQVQzMl9FUFM9MTQwMTI5ODQ2NDMyNDgxN2UtNjAsanNwYi5CaW5hcnlDb25zdGFudHMuRkxPQVQzMl9NSU49MTE3NTQ5NDM1MDgyMjI4NzVlLTU0LGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUMzJfTUFYPTM0MDI4MjM0NjYzODUyODg2ZTIyLGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUNjRfRVBTPTVlLTMyNCxqc3BiLkJpbmFyeUNvbnN0YW50cy5GTE9BVDY0X01JTj0yMjI1MDczODU4NTA3MjAxNGUtMzI0LGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUNjRfTUFYPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5Mixqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMjA9MTA0ODU3Nixqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMjM9ODM4ODYwOCxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzE9MjE0NzQ4MzY0OCxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzI9NDI5NDk2NzI5Nixqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNTI9NDUwMzU5OTYyNzM3MDQ5Nixqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjM9MHg4MDAwMDAwMDAwMDAwMDAwLGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182ND0weDEwMDAwMDAwMDAwMDAwMDAwLGpzcGIuQmluYXJ5Q29uc3RhbnRzLlpFUk9fSEFTSD1cIlxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFwiLGdvb2cuYXJyYXk9e30sZ29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUz1nb29nLlRSVVNURURfU0lURSxnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TPTIwMTI8Z29vZy5GRUFUVVJFU0VUX1lFQVIsZ29vZy5hcnJheS5wZWVrPWZ1bmN0aW9uKGUpe3JldHVybiBlW2UubGVuZ3RoLTFdfSxnb29nLmFycmF5Lmxhc3Q9Z29vZy5hcnJheS5wZWVrLGdvb2cuYXJyYXkuaW5kZXhPZj1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYoZ29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmluZGV4T2YpP2Z1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLHQsbyl9OmZ1bmN0aW9uKGUsdCxvKXtpZihvPW51bGw9PW8/MDowPm8/TWF0aC5tYXgoMCxlLmxlbmd0aCtvKTpvLGdvb2cuaXNTdHJpbmcoZSkpcmV0dXJuIGdvb2cuaXNTdHJpbmcodCkmJjE9PXQubGVuZ3RoP2UuaW5kZXhPZih0LG8pOi0xO2Zvcig7bzxlLmxlbmd0aDtvKyspaWYobyBpbiBlJiZlW29dPT09dClyZXR1cm4gbztyZXR1cm4tMX0sZ29vZy5hcnJheS5sYXN0SW5kZXhPZj1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYoZ29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mKT9mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9ZS5sZW5ndGgpLEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGUsdCxudWxsPT1vP2UubGVuZ3RoLTE6byl9OmZ1bmN0aW9uKGUsdCxvKXtpZigwPihvPW51bGw9PW8/ZS5sZW5ndGgtMTpvKSYmKG89TWF0aC5tYXgoMCxlLmxlbmd0aCtvKSksZ29vZy5pc1N0cmluZyhlKSlyZXR1cm4gZ29vZy5pc1N0cmluZyh0KSYmMT09dC5sZW5ndGg/ZS5sYXN0SW5kZXhPZih0LG8pOi0xO2Zvcig7MDw9bztvLS0paWYobyBpbiBlJiZlW29dPT09dClyZXR1cm4gbztyZXR1cm4tMX0sZ29vZy5hcnJheS5mb3JFYWNoPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZm9yRWFjaCk/ZnVuY3Rpb24oZSx0LG8pe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9ZS5sZW5ndGgpLEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZSx0LG8pfTpmdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPWUubGVuZ3RoLG49Z29vZy5pc1N0cmluZyhlKT9lLnNwbGl0KFwiXCIpOmUscz0wO3M8cjtzKyspcyBpbiBuJiZ0LmNhbGwobyxuW3NdLHMsZSl9LGdvb2cuYXJyYXkuZm9yRWFjaFJpZ2h0PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj1lLmxlbmd0aCxuPWdvb2cuaXNTdHJpbmcoZSk/ZS5zcGxpdChcIlwiKTplO2ZvcigtLXI7MDw9cjstLXIpciBpbiBuJiZ0LmNhbGwobyxuW3JdLHIsZSl9LGdvb2cuYXJyYXkuZmlsdGVyPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZmlsdGVyKT9mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9ZS5sZW5ndGgpLEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChlLHQsbyl9OmZ1bmN0aW9uKGUsdCxvKXtmb3IodmFyIHI9ZS5sZW5ndGgsbj1bXSxzPTAsaT1nb29nLmlzU3RyaW5nKGUpP2Uuc3BsaXQoXCJcIik6ZSxhPTA7YTxyO2ErKylpZihhIGluIGkpe3ZhciBnPWlbYV07dC5jYWxsKG8sZyxhLGUpJiYobltzKytdPWcpfXJldHVybiBufSxnb29nLmFycmF5Lm1hcD1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYoZ29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLm1hcCk/ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWUubGVuZ3RoKSxBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoZSx0LG8pfTpmdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPWUubGVuZ3RoLG49QXJyYXkocikscz1nb29nLmlzU3RyaW5nKGUpP2Uuc3BsaXQoXCJcIik6ZSxpPTA7aTxyO2krKylpIGluIHMmJihuW2ldPXQuY2FsbChvLHNbaV0saSxlKSk7cmV0dXJuIG59LGdvb2cuYXJyYXkucmVkdWNlPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUucmVkdWNlKT9mdW5jdGlvbihlLHQsbyxyKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksciYmKHQ9Z29vZy5iaW5kKHQscikpLEFycmF5LnByb3RvdHlwZS5yZWR1Y2UuY2FsbChlLHQsbyl9OmZ1bmN0aW9uKGUsdCxvLHIpe3ZhciBuPW87cmV0dXJuIGdvb2cuYXJyYXkuZm9yRWFjaChlLChmdW5jdGlvbihvLHMpe249dC5jYWxsKHIsbixvLHMsZSl9KSksbn0sZ29vZy5hcnJheS5yZWR1Y2VSaWdodD1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYoZ29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0KT9mdW5jdGlvbihlLHQsbyxyKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT10KSxyJiYodD1nb29nLmJpbmQodCxyKSksQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0LmNhbGwoZSx0LG8pfTpmdW5jdGlvbihlLHQsbyxyKXt2YXIgbj1vO3JldHVybiBnb29nLmFycmF5LmZvckVhY2hSaWdodChlLChmdW5jdGlvbihvLHMpe249dC5jYWxsKHIsbixvLHMsZSl9KSksbn0sZ29vZy5hcnJheS5zb21lPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuc29tZSk/ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWUubGVuZ3RoKSxBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGUsdCxvKX06ZnVuY3Rpb24oZSx0LG8pe2Zvcih2YXIgcj1lLmxlbmd0aCxuPWdvb2cuaXNTdHJpbmcoZSk/ZS5zcGxpdChcIlwiKTplLHM9MDtzPHI7cysrKWlmKHMgaW4gbiYmdC5jYWxsKG8sbltzXSxzLGUpKXJldHVybiEwO3JldHVybiExfSxnb29nLmFycmF5LmV2ZXJ5PWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZXZlcnkpP2Z1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwoZSx0LG8pfTpmdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPWUubGVuZ3RoLG49Z29vZy5pc1N0cmluZyhlKT9lLnNwbGl0KFwiXCIpOmUscz0wO3M8cjtzKyspaWYocyBpbiBuJiYhdC5jYWxsKG8sbltzXSxzLGUpKXJldHVybiExO3JldHVybiEwfSxnb29nLmFycmF5LmNvdW50PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj0wO3JldHVybiBnb29nLmFycmF5LmZvckVhY2goZSwoZnVuY3Rpb24oZSxuLHMpe3QuY2FsbChvLGUsbixzKSYmKytyfSksbykscn0sZ29vZy5hcnJheS5maW5kPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMD4odD1nb29nLmFycmF5LmZpbmRJbmRleChlLHQsbykpP251bGw6Z29vZy5pc1N0cmluZyhlKT9lLmNoYXJBdCh0KTplW3RdfSxnb29nLmFycmF5LmZpbmRJbmRleD1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPWUubGVuZ3RoLG49Z29vZy5pc1N0cmluZyhlKT9lLnNwbGl0KFwiXCIpOmUscz0wO3M8cjtzKyspaWYocyBpbiBuJiZ0LmNhbGwobyxuW3NdLHMsZSkpcmV0dXJuIHM7cmV0dXJuLTF9LGdvb2cuYXJyYXkuZmluZFJpZ2h0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMD4odD1nb29nLmFycmF5LmZpbmRJbmRleFJpZ2h0KGUsdCxvKSk/bnVsbDpnb29nLmlzU3RyaW5nKGUpP2UuY2hhckF0KHQpOmVbdF19LGdvb2cuYXJyYXkuZmluZEluZGV4UmlnaHQ9ZnVuY3Rpb24oZSx0LG8pe3ZhciByPWUubGVuZ3RoLG49Z29vZy5pc1N0cmluZyhlKT9lLnNwbGl0KFwiXCIpOmU7Zm9yKC0tcjswPD1yO3ItLSlpZihyIGluIG4mJnQuY2FsbChvLG5bcl0scixlKSlyZXR1cm4gcjtyZXR1cm4tMX0sZ29vZy5hcnJheS5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybiAwPD1nb29nLmFycmF5LmluZGV4T2YoZSx0KX0sZ29vZy5hcnJheS5pc0VtcHR5PWZ1bmN0aW9uKGUpe3JldHVybiAwPT1lLmxlbmd0aH0sZ29vZy5hcnJheS5jbGVhcj1mdW5jdGlvbihlKXtpZighZ29vZy5pc0FycmF5KGUpKWZvcih2YXIgdD1lLmxlbmd0aC0xOzA8PXQ7dC0tKWRlbGV0ZSBlW3RdO2UubGVuZ3RoPTB9LGdvb2cuYXJyYXkuaW5zZXJ0PWZ1bmN0aW9uKGUsdCl7Z29vZy5hcnJheS5jb250YWlucyhlLHQpfHxlLnB1c2godCl9LGdvb2cuYXJyYXkuaW5zZXJ0QXQ9ZnVuY3Rpb24oZSx0LG8pe2dvb2cuYXJyYXkuc3BsaWNlKGUsbywwLHQpfSxnb29nLmFycmF5Lmluc2VydEFycmF5QXQ9ZnVuY3Rpb24oZSx0LG8pe2dvb2cucGFydGlhbChnb29nLmFycmF5LnNwbGljZSxlLG8sMCkuYXBwbHkobnVsbCx0KX0sZ29vZy5hcnJheS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24oZSx0LG8pe3ZhciByOzI9PWFyZ3VtZW50cy5sZW5ndGh8fDA+KHI9Z29vZy5hcnJheS5pbmRleE9mKGUsbykpP2UucHVzaCh0KTpnb29nLmFycmF5Lmluc2VydEF0KGUsdCxyKX0sZ29vZy5hcnJheS5yZW1vdmU9ZnVuY3Rpb24oZSx0KXt2YXIgbztyZXR1cm4obz0wPD0odD1nb29nLmFycmF5LmluZGV4T2YoZSx0KSkpJiZnb29nLmFycmF5LnJlbW92ZUF0KGUsdCksb30sZ29vZy5hcnJheS5yZW1vdmVMYXN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA8PSh0PWdvb2cuYXJyYXkubGFzdEluZGV4T2YoZSx0KSkmJihnb29nLmFycmF5LnJlbW92ZUF0KGUsdCksITApfSxnb29nLmFycmF5LnJlbW92ZUF0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9ZS5sZW5ndGgpLDE9PUFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChlLHQsMSkubGVuZ3RofSxnb29nLmFycmF5LnJlbW92ZUlmPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMDw9KHQ9Z29vZy5hcnJheS5maW5kSW5kZXgoZSx0LG8pKSYmKGdvb2cuYXJyYXkucmVtb3ZlQXQoZSx0KSwhMCl9LGdvb2cuYXJyYXkucmVtb3ZlQWxsSWY9ZnVuY3Rpb24oZSx0LG8pe3ZhciByPTA7cmV0dXJuIGdvb2cuYXJyYXkuZm9yRWFjaFJpZ2h0KGUsKGZ1bmN0aW9uKG4scyl7dC5jYWxsKG8sbixzLGUpJiZnb29nLmFycmF5LnJlbW92ZUF0KGUscykmJnIrK30pKSxyfSxnb29nLmFycmF5LmNvbmNhdD1mdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhcmd1bWVudHMpfSxnb29nLmFycmF5LmpvaW49ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sYXJndW1lbnRzKX0sZ29vZy5hcnJheS50b0FycmF5PWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2lmKDA8dCl7Zm9yKHZhciBvPUFycmF5KHQpLHI9MDtyPHQ7cisrKW9bcl09ZVtyXTtyZXR1cm4gb31yZXR1cm5bXX0sZ29vZy5hcnJheS5jbG9uZT1nb29nLmFycmF5LnRvQXJyYXksZ29vZy5hcnJheS5leHRlbmQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXt2YXIgcj1hcmd1bWVudHNbb107aWYoZ29vZy5pc0FycmF5TGlrZShyKSl7dmFyIG49ZS5sZW5ndGh8fDAscz1yLmxlbmd0aHx8MDtlLmxlbmd0aD1uK3M7Zm9yKHZhciBpPTA7aTxzO2krKyllW24raV09cltpXX1lbHNlIGUucHVzaChyKX19LGdvb2cuYXJyYXkuc3BsaWNlPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWUubGVuZ3RoKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGUsZ29vZy5hcnJheS5zbGljZShhcmd1bWVudHMsMSkpfSxnb29nLmFycmF5LnNsaWNlPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksMj49YXJndW1lbnRzLmxlbmd0aD9BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLHQpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUsdCxvKX0sZ29vZy5hcnJheS5yZW1vdmVEdXBsaWNhdGVzPWZ1bmN0aW9uKGUsdCxvKXt0PXR8fGU7dmFyIHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuaXNPYmplY3QoZSk/XCJvXCIrZ29vZy5nZXRVaWQoZSk6KHR5cGVvZiBlKS5jaGFyQXQoMCkrZX07bz1vfHxyLHI9e307Zm9yKHZhciBuPTAscz0wO3M8ZS5sZW5ndGg7KXt2YXIgaT1lW3MrK10sYT1vKGkpO09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLGEpfHwoclthXT0hMCx0W24rK109aSl9dC5sZW5ndGg9bn0sZ29vZy5hcnJheS5iaW5hcnlTZWFyY2g9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFycmF5LmJpbmFyeVNlYXJjaF8oZSxvfHxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlLCExLHQpfSxnb29nLmFycmF5LmJpbmFyeVNlbGVjdD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuYXJyYXkuYmluYXJ5U2VhcmNoXyhlLHQsITAsdm9pZCAwLG8pfSxnb29nLmFycmF5LmJpbmFyeVNlYXJjaF89ZnVuY3Rpb24oZSx0LG8scixuKXtmb3IodmFyIHMsaT0wLGE9ZS5sZW5ndGg7aTxhOyl7dmFyIGc9aSthPj4xLGw9bz90LmNhbGwobixlW2ddLGcsZSk6dChyLGVbZ10pOzA8bD9pPWcrMTooYT1nLHM9IWwpfXJldHVybiBzP2k6fml9LGdvb2cuYXJyYXkuc29ydD1mdW5jdGlvbihlLHQpe2Uuc29ydCh0fHxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlKX0sZ29vZy5hcnJheS5zdGFibGVTb3J0PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPUFycmF5KGUubGVuZ3RoKSxyPTA7cjxlLmxlbmd0aDtyKyspb1tyXT17aW5kZXg6cix2YWx1ZTplW3JdfTt2YXIgbj10fHxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlO2Zvcihnb29nLmFycmF5LnNvcnQobywoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihlLnZhbHVlLHQudmFsdWUpfHxlLmluZGV4LXQuaW5kZXh9KSkscj0wO3I8ZS5sZW5ndGg7cisrKWVbcl09b1tyXS52YWx1ZX0sZ29vZy5hcnJheS5zb3J0QnlLZXk9ZnVuY3Rpb24oZSx0LG8pe3ZhciByPW98fGdvb2cuYXJyYXkuZGVmYXVsdENvbXBhcmU7Z29vZy5hcnJheS5zb3J0KGUsKGZ1bmN0aW9uKGUsbyl7cmV0dXJuIHIodChlKSx0KG8pKX0pKX0sZ29vZy5hcnJheS5zb3J0T2JqZWN0c0J5S2V5PWZ1bmN0aW9uKGUsdCxvKXtnb29nLmFycmF5LnNvcnRCeUtleShlLChmdW5jdGlvbihlKXtyZXR1cm4gZVt0XX0pLG8pfSxnb29nLmFycmF5LmlzU29ydGVkPWZ1bmN0aW9uKGUsdCxvKXt0PXR8fGdvb2cuYXJyYXkuZGVmYXVsdENvbXBhcmU7Zm9yKHZhciByPTE7cjxlLmxlbmd0aDtyKyspe3ZhciBuPXQoZVtyLTFdLGVbcl0pO2lmKDA8bnx8MD09biYmbylyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5hcnJheS5lcXVhbHM9ZnVuY3Rpb24oZSx0LG8pe2lmKCFnb29nLmlzQXJyYXlMaWtlKGUpfHwhZ29vZy5pc0FycmF5TGlrZSh0KXx8ZS5sZW5ndGghPXQubGVuZ3RoKXJldHVybiExO3ZhciByPWUubGVuZ3RoO289b3x8Z29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZUVxdWFsaXR5O2Zvcih2YXIgbj0wO248cjtuKyspaWYoIW8oZVtuXSx0W25dKSlyZXR1cm4hMTtyZXR1cm4hMH0sZ29vZy5hcnJheS5jb21wYXJlMz1mdW5jdGlvbihlLHQsbyl7bz1vfHxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlO2Zvcih2YXIgcj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCksbj0wO248cjtuKyspe3ZhciBzPW8oZVtuXSx0W25dKTtpZigwIT1zKXJldHVybiBzfXJldHVybiBnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlKGUubGVuZ3RoLHQubGVuZ3RoKX0sZ29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZT1mdW5jdGlvbihlLHQpe3JldHVybiBlPnQ/MTplPHQ/LTE6MH0sZ29vZy5hcnJheS5pbnZlcnNlRGVmYXVsdENvbXBhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4tZ29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZShlLHQpfSxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlRXF1YWxpdHk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXR9LGdvb2cuYXJyYXkuYmluYXJ5SW5zZXJ0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMD4obz1nb29nLmFycmF5LmJpbmFyeVNlYXJjaChlLHQsbykpJiYoZ29vZy5hcnJheS5pbnNlcnRBdChlLHQsLShvKzEpKSwhMCl9LGdvb2cuYXJyYXkuYmluYXJ5UmVtb3ZlPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMDw9KHQ9Z29vZy5hcnJheS5iaW5hcnlTZWFyY2goZSx0LG8pKSYmZ29vZy5hcnJheS5yZW1vdmVBdChlLHQpfSxnb29nLmFycmF5LmJ1Y2tldD1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPXt9LG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHM9ZVtuXSxpPXQuY2FsbChvLHMsbixlKTtnb29nLmlzRGVmKGkpJiYocltpXXx8KHJbaV09W10pKS5wdXNoKHMpfXJldHVybiByfSxnb29nLmFycmF5LnRvT2JqZWN0PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj17fTtyZXR1cm4gZ29vZy5hcnJheS5mb3JFYWNoKGUsKGZ1bmN0aW9uKG4scyl7clt0LmNhbGwobyxuLHMsZSldPW59KSkscn0sZ29vZy5hcnJheS5yYW5nZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9W10sbj0wLHM9ZTtpZih2b2lkIDAhPT10JiYobj1lLHM9dCksMD4obz1vfHwxKSoocy1uKSlyZXR1cm5bXTtpZigwPG8pZm9yKGU9bjtlPHM7ZSs9bylyLnB1c2goZSk7ZWxzZSBmb3IoZT1uO2U+cztlKz1vKXIucHVzaChlKTtyZXR1cm4gcn0sZ29vZy5hcnJheS5yZXBlYXQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89W10scj0wO3I8dDtyKyspb1tyXT1lO3JldHVybiBvfSxnb29nLmFycmF5LmZsYXR0ZW49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXt2YXIgcj1hcmd1bWVudHNbb107aWYoZ29vZy5pc0FycmF5KHIpKWZvcih2YXIgbj0wO248ci5sZW5ndGg7bis9ODE5Mil7dmFyIHM9Z29vZy5hcnJheS5zbGljZShyLG4sbis4MTkyKTtzPWdvb2cuYXJyYXkuZmxhdHRlbi5hcHBseShudWxsLHMpO2Zvcih2YXIgaT0wO2k8cy5sZW5ndGg7aSsrKXQucHVzaChzW2ldKX1lbHNlIHQucHVzaChyKX1yZXR1cm4gdH0sZ29vZy5hcnJheS5yb3RhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksZS5sZW5ndGgmJigwPCh0JT1lLmxlbmd0aCk/QXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoZSxlLnNwbGljZSgtdCx0KSk6MD50JiZBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShlLGUuc3BsaWNlKDAsLXQpKSksZX0sZ29vZy5hcnJheS5tb3ZlSXRlbT1mdW5jdGlvbihlLHQsbyl7Z29vZy5hc3NlcnRzLmFzc2VydCgwPD10JiZ0PGUubGVuZ3RoKSxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PW8mJm88ZS5sZW5ndGgpLHQ9QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGUsdCwxKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwoZSxvLDAsdFswXSl9LGdvb2cuYXJyYXkuemlwPWZ1bmN0aW9uKGUpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltdO2Zvcih2YXIgdD1bXSxvPWFyZ3VtZW50c1swXS5sZW5ndGgscj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspYXJndW1lbnRzW3JdLmxlbmd0aDxvJiYobz1hcmd1bWVudHNbcl0ubGVuZ3RoKTtmb3Iocj0wO3I8bztyKyspe2Zvcih2YXIgbj1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoO3MrKyluLnB1c2goYXJndW1lbnRzW3NdW3JdKTt0LnB1c2gobil9cmV0dXJuIHR9LGdvb2cuYXJyYXkuc2h1ZmZsZT1mdW5jdGlvbihlLHQpe3Q9dHx8TWF0aC5yYW5kb207Zm9yKHZhciBvPWUubGVuZ3RoLTE7MDxvO28tLSl7dmFyIHI9TWF0aC5mbG9vcih0KCkqKG8rMSkpLG49ZVtvXTtlW29dPWVbcl0sZVtyXT1ufX0sZ29vZy5hcnJheS5jb3B5QnlJbmRleD1mdW5jdGlvbihlLHQpe3ZhciBvPVtdO3JldHVybiBnb29nLmFycmF5LmZvckVhY2godCwoZnVuY3Rpb24odCl7by5wdXNoKGVbdF0pfSkpLG99LGdvb2cuYXJyYXkuY29uY2F0TWFwPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hcnJheS5jb25jYXQuYXBwbHkoW10sZ29vZy5hcnJheS5tYXAoZSx0LG8pKX0sZ29vZy5jcnlwdD17fSxnb29nLmNyeXB0LnN0cmluZ1RvQnl0ZUFycmF5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxvPTAscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lLmNoYXJDb2RlQXQocik7MjU1PG4mJih0W28rK109MjU1Jm4sbj4+PTgpLHRbbysrXT1ufXJldHVybiB0fSxnb29nLmNyeXB0LmJ5dGVBcnJheVRvU3RyaW5nPWZ1bmN0aW9uKGUpe2lmKDgxOTI+PWUubGVuZ3RoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Zm9yKHZhciB0PVwiXCIsbz0wO288ZS5sZW5ndGg7bys9ODE5Mil7dmFyIHI9Z29vZy5hcnJheS5zbGljZShlLG8sbys4MTkyKTt0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwscil9cmV0dXJuIHR9LGdvb2cuY3J5cHQuYnl0ZUFycmF5VG9IZXg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5hcnJheS5tYXAoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIDE8KGU9ZS50b1N0cmluZygxNikpLmxlbmd0aD9lOlwiMFwiK2V9KSkuam9pbih0fHxcIlwiKX0sZ29vZy5jcnlwdC5oZXhUb0J5dGVBcnJheT1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KDA9PWUubGVuZ3RoJTIsXCJLZXkgc3RyaW5nIGxlbmd0aCBtdXN0IGJlIG11bHRpcGxlIG9mIDJcIik7Zm9yKHZhciB0PVtdLG89MDtvPGUubGVuZ3RoO28rPTIpdC5wdXNoKHBhcnNlSW50KGUuc3Vic3RyaW5nKG8sbysyKSwxNikpO3JldHVybiB0fSxnb29nLmNyeXB0LnN0cmluZ1RvVXRmOEJ5dGVBcnJheT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbz0wLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZS5jaGFyQ29kZUF0KHIpOzEyOD5uP3RbbysrXT1uOigyMDQ4Pm4/dFtvKytdPW4+PjZ8MTkyOig1NTI5Nj09KDY0NTEyJm4pJiZyKzE8ZS5sZW5ndGgmJjU2MzIwPT0oNjQ1MTImZS5jaGFyQ29kZUF0KHIrMSkpPyhuPTY1NTM2KygoMTAyMyZuKTw8MTApKygxMDIzJmUuY2hhckNvZGVBdCgrK3IpKSx0W28rK109bj4+MTh8MjQwLHRbbysrXT1uPj4xMiY2M3wxMjgpOnRbbysrXT1uPj4xMnwyMjQsdFtvKytdPW4+PjYmNjN8MTI4KSx0W28rK109NjMmbnwxMjgpfXJldHVybiB0fSxnb29nLmNyeXB0LnV0ZjhCeXRlQXJyYXlUb1N0cmluZz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbz0wLHI9MDtvPGUubGVuZ3RoOyl7dmFyIG49ZVtvKytdO2lmKDEyOD5uKXRbcisrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pO2Vsc2UgaWYoMTkxPG4mJjIyND5uKXt2YXIgcz1lW28rK107dFtyKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJm4pPDw2fDYzJnMpfWVsc2UgaWYoMjM5PG4mJjM2NT5uKXtzPWVbbysrXTt2YXIgaT1lW28rK107bj0oKDcmbik8PDE4fCg2MyZzKTw8MTJ8KDYzJmkpPDw2fDYzJmVbbysrXSktNjU1MzYsdFtyKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTYrKG4+PjEwKSksdFtyKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoNTYzMjArKDEwMjMmbikpfWVsc2Ugcz1lW28rK10saT1lW28rK10sdFtyKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoKDE1Jm4pPDwxMnwoNjMmcyk8PDZ8NjMmaSl9cmV0dXJuIHQuam9pbihcIlwiKX0sZ29vZy5jcnlwdC54b3JCeXRlQXJyYXk9ZnVuY3Rpb24oZSx0KXtnb29nLmFzc2VydHMuYXNzZXJ0KGUubGVuZ3RoPT10Lmxlbmd0aCxcIlhPUiBhcnJheSBsZW5ndGhzIG11c3QgbWF0Y2hcIik7Zm9yKHZhciBvPVtdLHI9MDtyPGUubGVuZ3RoO3IrKylvLnB1c2goZVtyXV50W3JdKTtyZXR1cm4gb30sZ29vZy5kb20uYXNzZXJ0cz17fSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzTG9jYXRpb249ZnVuY3Rpb24oZSl7aWYoZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTKXt2YXIgdD1nb29nLmRvbS5hc3NlcnRzLmdldFdpbmRvd18oZSk7dCYmKCFlfHwhKGUgaW5zdGFuY2VvZiB0LkxvY2F0aW9uKSYmZSBpbnN0YW5jZW9mIHQuRWxlbWVudCkmJmdvb2cuYXNzZXJ0cy5mYWlsKFwiQXJndW1lbnQgaXMgbm90IGEgTG9jYXRpb24gKG9yIGEgbm9uLUVsZW1lbnQgbW9jayk7IGdvdDogJXNcIixnb29nLmRvbS5hc3NlcnRzLmRlYnVnU3RyaW5nRm9yVHlwZV8oZSkpfXJldHVybiBlfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfPWZ1bmN0aW9uKGUsdCl7aWYoZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTKXt2YXIgbz1nb29nLmRvbS5hc3NlcnRzLmdldFdpbmRvd18oZSk7byYmdm9pZCAwIT09b1t0XSYmKGUmJihlIGluc3RhbmNlb2Ygb1t0XXx8IShlIGluc3RhbmNlb2Ygby5Mb2NhdGlvbnx8ZSBpbnN0YW5jZW9mIG8uRWxlbWVudCkpfHxnb29nLmFzc2VydHMuZmFpbChcIkFyZ3VtZW50IGlzIG5vdCBhICVzIChvciBhIG5vbi1FbGVtZW50LCBub24tTG9jYXRpb24gbW9jayk7IGdvdDogJXNcIix0LGdvb2cuZG9tLmFzc2VydHMuZGVidWdTdHJpbmdGb3JUeXBlXyhlKSkpfXJldHVybiBlfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEFuY2hvckVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxBbmNob3JFbGVtZW50XCIpfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEJ1dHRvbkVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxCdXR0b25FbGVtZW50XCIpfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTExpbmtFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGUsXCJIVE1MTGlua0VsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW1hZ2VFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGUsXCJIVE1MSW1hZ2VFbGVtZW50XCIpfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEF1ZGlvRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTEF1ZGlvRWxlbWVudFwiKX0sZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxWaWRlb0VsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxWaWRlb0VsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW5wdXRFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGUsXCJIVE1MSW5wdXRFbGVtZW50XCIpfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFRleHRBcmVhRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTFRleHRBcmVhRWxlbWVudFwiKX0sZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxDYW52YXNFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGUsXCJIVE1MQ2FudmFzRWxlbWVudFwiKX0sZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxFbWJlZEVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxFbWJlZEVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MRm9ybUVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxGb3JtRWxlbWVudFwiKX0sZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGcmFtZUVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxGcmFtZUVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSUZyYW1lRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTElGcmFtZUVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MT2JqZWN0RWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTE9iamVjdEVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MU2NyaXB0RWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTFNjcmlwdEVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuZGVidWdTdHJpbmdGb3JUeXBlXz1mdW5jdGlvbihlKXtpZighZ29vZy5pc09iamVjdChlKSlyZXR1cm4gdm9pZCAwPT09ZT9cInVuZGVmaW5lZFwiOm51bGw9PT1lP1wibnVsbFwiOnR5cGVvZiBlO3RyeXtyZXR1cm4gZS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZXx8ZS5jb25zdHJ1Y3Rvci5uYW1lfHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9Y2F0Y2goZSl7cmV0dXJuXCI8b2JqZWN0IGNvdWxkIG5vdCBiZSBzdHJpbmdpZmllZD5cIn19LGdvb2cuZG9tLmFzc2VydHMuZ2V0V2luZG93Xz1mdW5jdGlvbihlKXt0cnl7dmFyIHQ9ZSYmZS5vd25lckRvY3VtZW50LG89dCYmKHQuZGVmYXVsdFZpZXd8fHQucGFyZW50V2luZG93KTtpZigobz1vfHxnb29nLmdsb2JhbCkuRWxlbWVudCYmby5Mb2NhdGlvbilyZXR1cm4gb31jYXRjaChlKXt9cmV0dXJuIG51bGx9LGdvb2cuZnVuY3Rpb25zPXt9LGdvb2cuZnVuY3Rpb25zLmNvbnN0YW50PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0sZ29vZy5mdW5jdGlvbnMuRkFMU0U9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZ29vZy5mdW5jdGlvbnMuVFJVRT1mdW5jdGlvbigpe3JldHVybiEwfSxnb29nLmZ1bmN0aW9ucy5OVUxMPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGdvb2cuZnVuY3Rpb25zLmlkZW50aXR5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV9LGdvb2cuZnVuY3Rpb25zLmVycm9yPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3Rocm93IEVycm9yKGUpfX0sZ29vZy5mdW5jdGlvbnMuZmFpbD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aHJvdyBlfX0sZ29vZy5mdW5jdGlvbnMubG9jaz1mdW5jdGlvbihlLHQpe3JldHVybiB0PXR8fDAsZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwLHQpKX19LGdvb2cuZnVuY3Rpb25zLm50aD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzW2VdfX0sZ29vZy5mdW5jdGlvbnMucGFydGlhbFJpZ2h0PWZ1bmN0aW9uKGUsdCl7dmFyIG89QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIHQucHVzaC5hcHBseSh0LG8pLGUuYXBwbHkodGhpcyx0KX19LGdvb2cuZnVuY3Rpb25zLndpdGhSZXR1cm5WYWx1ZT1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmZ1bmN0aW9ucy5zZXF1ZW5jZShlLGdvb2cuZnVuY3Rpb25zLmNvbnN0YW50KHQpKX0sZ29vZy5mdW5jdGlvbnMuZXF1YWxUbz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4gdD9lPT1vOmU9PT1vfX0sZ29vZy5mdW5jdGlvbnMuY29tcG9zZT1mdW5jdGlvbihlLHQpe3ZhciBvPWFyZ3VtZW50cyxyPW8ubGVuZ3RoO3JldHVybiBmdW5jdGlvbigpe3ZhciBlO3ImJihlPW9bci0xXS5hcHBseSh0aGlzLGFyZ3VtZW50cykpO2Zvcih2YXIgdD1yLTI7MDw9dDt0LS0pZT1vW3RdLmNhbGwodGhpcyxlKTtyZXR1cm4gZX19LGdvb2cuZnVuY3Rpb25zLnNlcXVlbmNlPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cyxvPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZSxyPTA7cjxvO3IrKyllPXRbcl0uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBlfX0sZ29vZy5mdW5jdGlvbnMuYW5kPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cyxvPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bztlKyspaWYoIXRbZV0uYXBwbHkodGhpcyxhcmd1bWVudHMpKXJldHVybiExO3JldHVybiEwfX0sZ29vZy5mdW5jdGlvbnMub3I9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLG89dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxvO2UrKylpZih0W2VdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMDtyZXR1cm4hMX19LGdvb2cuZnVuY3Rpb25zLm5vdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxnb29nLmZ1bmN0aW9ucy5jcmVhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbz1mdW5jdGlvbigpe307cmV0dXJuIG8ucHJvdG90eXBlPWUucHJvdG90eXBlLG89bmV3IG8sZS5hcHBseShvLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksb30sZ29vZy5mdW5jdGlvbnMuQ0FDSEVfUkVUVVJOX1ZBTFVFPSEwLGdvb2cuZnVuY3Rpb25zLmNhY2hlUmV0dXJuVmFsdWU9ZnVuY3Rpb24oZSl7dmFyIHQsbz0hMTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5mdW5jdGlvbnMuQ0FDSEVfUkVUVVJOX1ZBTFVFPyhvfHwodD1lKCksbz0hMCksdCk6ZSgpfX0sZ29vZy5mdW5jdGlvbnMub25jZT1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBmdW5jdGlvbigpe2lmKHQpe3ZhciBlPXQ7dD1udWxsLGUoKX19fSxnb29nLmZ1bmN0aW9ucy5kZWJvdW5jZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9MDtyZXR1cm4gZnVuY3Rpb24obil7Z29vZy5nbG9iYWwuY2xlYXJUaW1lb3V0KHIpO3ZhciBzPWFyZ3VtZW50cztyPWdvb2cuZ2xvYmFsLnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5hcHBseShvLHMpfSksdCl9fSxnb29nLmZ1bmN0aW9ucy50aHJvdHRsZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9MCxuPSExLHM9W10saT1mdW5jdGlvbigpe3I9MCxuJiYobj0hMSxhKCkpfSxhPWZ1bmN0aW9uKCl7cj1nb29nLmdsb2JhbC5zZXRUaW1lb3V0KGksdCksZS5hcHBseShvLHMpfTtyZXR1cm4gZnVuY3Rpb24oZSl7cz1hcmd1bWVudHMscj9uPSEwOmEoKX19LGdvb2cuZnVuY3Rpb25zLnJhdGVMaW1pdD1mdW5jdGlvbihlLHQsbyl7dmFyIHI9MCxuPWZ1bmN0aW9uKCl7cj0wfTtyZXR1cm4gZnVuY3Rpb24ocyl7cnx8KHI9Z29vZy5nbG9iYWwuc2V0VGltZW91dChuLHQpLGUuYXBwbHkobyxhcmd1bWVudHMpKX19LGdvb2cuZG9tLkh0bWxFbGVtZW50PWZ1bmN0aW9uKCl7fSxnb29nLmRvbS5UYWdOYW1lPWZ1bmN0aW9uKGUpe3RoaXMudGFnTmFtZV89ZX0sZ29vZy5kb20uVGFnTmFtZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWdOYW1lX30sZ29vZy5kb20uVGFnTmFtZS5BPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQVwiKSxnb29nLmRvbS5UYWdOYW1lLkFCQlI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJBQkJSXCIpLGdvb2cuZG9tLlRhZ05hbWUuQUNST05ZTT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkFDUk9OWU1cIiksZ29vZy5kb20uVGFnTmFtZS5BRERSRVNTPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQUREUkVTU1wiKSxnb29nLmRvbS5UYWdOYW1lLkFQUExFVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkFQUExFVFwiKSxnb29nLmRvbS5UYWdOYW1lLkFSRUE9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJBUkVBXCIpLGdvb2cuZG9tLlRhZ05hbWUuQVJUSUNMRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkFSVElDTEVcIiksZ29vZy5kb20uVGFnTmFtZS5BU0lERT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkFTSURFXCIpLGdvb2cuZG9tLlRhZ05hbWUuQVVESU89bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJBVURJT1wiKSxnb29nLmRvbS5UYWdOYW1lLkI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJCXCIpLGdvb2cuZG9tLlRhZ05hbWUuQkFTRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkJBU0VcIiksZ29vZy5kb20uVGFnTmFtZS5CQVNFRk9OVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkJBU0VGT05UXCIpLGdvb2cuZG9tLlRhZ05hbWUuQkRJPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQkRJXCIpLGdvb2cuZG9tLlRhZ05hbWUuQkRPPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQkRPXCIpLGdvb2cuZG9tLlRhZ05hbWUuQklHPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQklHXCIpLGdvb2cuZG9tLlRhZ05hbWUuQkxPQ0tRVU9URT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkJMT0NLUVVPVEVcIiksZ29vZy5kb20uVGFnTmFtZS5CT0RZPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQk9EWVwiKSxnb29nLmRvbS5UYWdOYW1lLkJSPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQlJcIiksZ29vZy5kb20uVGFnTmFtZS5CVVRUT049bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJCVVRUT05cIiksZ29vZy5kb20uVGFnTmFtZS5DQU5WQVM9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJDQU5WQVNcIiksZ29vZy5kb20uVGFnTmFtZS5DQVBUSU9OPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQ0FQVElPTlwiKSxnb29nLmRvbS5UYWdOYW1lLkNFTlRFUj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkNFTlRFUlwiKSxnb29nLmRvbS5UYWdOYW1lLkNJVEU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJDSVRFXCIpLGdvb2cuZG9tLlRhZ05hbWUuQ09ERT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkNPREVcIiksZ29vZy5kb20uVGFnTmFtZS5DT0w9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJDT0xcIiksZ29vZy5kb20uVGFnTmFtZS5DT0xHUk9VUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkNPTEdST1VQXCIpLGdvb2cuZG9tLlRhZ05hbWUuQ09NTUFORD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkNPTU1BTkRcIiksZ29vZy5kb20uVGFnTmFtZS5EQVRBPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiREFUQVwiKSxnb29nLmRvbS5UYWdOYW1lLkRBVEFMSVNUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiREFUQUxJU1RcIiksZ29vZy5kb20uVGFnTmFtZS5ERD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkREXCIpLGdvb2cuZG9tLlRhZ05hbWUuREVMPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiREVMXCIpLGdvb2cuZG9tLlRhZ05hbWUuREVUQUlMUz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkRFVEFJTFNcIiksZ29vZy5kb20uVGFnTmFtZS5ERk49bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJERk5cIiksZ29vZy5kb20uVGFnTmFtZS5ESUFMT0c9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJESUFMT0dcIiksZ29vZy5kb20uVGFnTmFtZS5ESVI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJESVJcIiksZ29vZy5kb20uVGFnTmFtZS5ESVY9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJESVZcIiksZ29vZy5kb20uVGFnTmFtZS5ETD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkRMXCIpLGdvb2cuZG9tLlRhZ05hbWUuRFQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJEVFwiKSxnb29nLmRvbS5UYWdOYW1lLkVNPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiRU1cIiksZ29vZy5kb20uVGFnTmFtZS5FTUJFRD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkVNQkVEXCIpLGdvb2cuZG9tLlRhZ05hbWUuRklFTERTRVQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJGSUVMRFNFVFwiKSxnb29nLmRvbS5UYWdOYW1lLkZJR0NBUFRJT049bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJGSUdDQVBUSU9OXCIpLGdvb2cuZG9tLlRhZ05hbWUuRklHVVJFPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiRklHVVJFXCIpLGdvb2cuZG9tLlRhZ05hbWUuRk9OVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkZPTlRcIiksZ29vZy5kb20uVGFnTmFtZS5GT09URVI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJGT09URVJcIiksZ29vZy5kb20uVGFnTmFtZS5GT1JNPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiRk9STVwiKSxnb29nLmRvbS5UYWdOYW1lLkZSQU1FPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiRlJBTUVcIiksZ29vZy5kb20uVGFnTmFtZS5GUkFNRVNFVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkZSQU1FU0VUXCIpLGdvb2cuZG9tLlRhZ05hbWUuSDE9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJIMVwiKSxnb29nLmRvbS5UYWdOYW1lLkgyPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSDJcIiksZ29vZy5kb20uVGFnTmFtZS5IMz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkgzXCIpLGdvb2cuZG9tLlRhZ05hbWUuSDQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJINFwiKSxnb29nLmRvbS5UYWdOYW1lLkg1PW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSDVcIiksZ29vZy5kb20uVGFnTmFtZS5INj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkg2XCIpLGdvb2cuZG9tLlRhZ05hbWUuSEVBRD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkhFQURcIiksZ29vZy5kb20uVGFnTmFtZS5IRUFERVI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJIRUFERVJcIiksZ29vZy5kb20uVGFnTmFtZS5IR1JPVVA9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJIR1JPVVBcIiksZ29vZy5kb20uVGFnTmFtZS5IUj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkhSXCIpLGdvb2cuZG9tLlRhZ05hbWUuSFRNTD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkhUTUxcIiksZ29vZy5kb20uVGFnTmFtZS5JPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSVwiKSxnb29nLmRvbS5UYWdOYW1lLklGUkFNRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIklGUkFNRVwiKSxnb29nLmRvbS5UYWdOYW1lLklNRz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIklNR1wiKSxnb29nLmRvbS5UYWdOYW1lLklOUFVUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSU5QVVRcIiksZ29vZy5kb20uVGFnTmFtZS5JTlM9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJJTlNcIiksZ29vZy5kb20uVGFnTmFtZS5JU0lOREVYPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSVNJTkRFWFwiKSxnb29nLmRvbS5UYWdOYW1lLktCRD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIktCRFwiKSxnb29nLmRvbS5UYWdOYW1lLktFWUdFTj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIktFWUdFTlwiKSxnb29nLmRvbS5UYWdOYW1lLkxBQkVMPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTEFCRUxcIiksZ29vZy5kb20uVGFnTmFtZS5MRUdFTkQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJMRUdFTkRcIiksZ29vZy5kb20uVGFnTmFtZS5MST1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkxJXCIpLGdvb2cuZG9tLlRhZ05hbWUuTElOSz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkxJTktcIiksZ29vZy5kb20uVGFnTmFtZS5NQUlOPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUFJTlwiKSxnb29nLmRvbS5UYWdOYW1lLk1BUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk1BUFwiKSxnb29nLmRvbS5UYWdOYW1lLk1BUks9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJNQVJLXCIpLGdvb2cuZG9tLlRhZ05hbWUuTUFUSD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk1BVEhcIiksZ29vZy5kb20uVGFnTmFtZS5NRU5VPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUVOVVwiKSxnb29nLmRvbS5UYWdOYW1lLk1FTlVJVEVNPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUVOVUlURU1cIiksZ29vZy5kb20uVGFnTmFtZS5NRVRBPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUVUQVwiKSxnb29nLmRvbS5UYWdOYW1lLk1FVEVSPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUVURVJcIiksZ29vZy5kb20uVGFnTmFtZS5OQVY9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJOQVZcIiksZ29vZy5kb20uVGFnTmFtZS5OT0ZSQU1FUz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk5PRlJBTUVTXCIpLGdvb2cuZG9tLlRhZ05hbWUuTk9TQ1JJUFQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJOT1NDUklQVFwiKSxnb29nLmRvbS5UYWdOYW1lLk9CSkVDVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk9CSkVDVFwiKSxnb29nLmRvbS5UYWdOYW1lLk9MPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiT0xcIiksZ29vZy5kb20uVGFnTmFtZS5PUFRHUk9VUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk9QVEdST1VQXCIpLGdvb2cuZG9tLlRhZ05hbWUuT1BUSU9OPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiT1BUSU9OXCIpLGdvb2cuZG9tLlRhZ05hbWUuT1VUUFVUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiT1VUUFVUXCIpLGdvb2cuZG9tLlRhZ05hbWUuUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlBcIiksZ29vZy5kb20uVGFnTmFtZS5QQVJBTT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlBBUkFNXCIpLGdvb2cuZG9tLlRhZ05hbWUuUElDVFVSRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlBJQ1RVUkVcIiksZ29vZy5kb20uVGFnTmFtZS5QUkU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJQUkVcIiksZ29vZy5kb20uVGFnTmFtZS5QUk9HUkVTUz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlBST0dSRVNTXCIpLGdvb2cuZG9tLlRhZ05hbWUuUT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlFcIiksZ29vZy5kb20uVGFnTmFtZS5SUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlJQXCIpLGdvb2cuZG9tLlRhZ05hbWUuUlQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJSVFwiKSxnb29nLmRvbS5UYWdOYW1lLlJUQz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlJUQ1wiKSxnb29nLmRvbS5UYWdOYW1lLlJVQlk9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJSVUJZXCIpLGdvb2cuZG9tLlRhZ05hbWUuUz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlNcIiksZ29vZy5kb20uVGFnTmFtZS5TQU1QPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU0FNUFwiKSxnb29nLmRvbS5UYWdOYW1lLlNDUklQVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlNDUklQVFwiKSxnb29nLmRvbS5UYWdOYW1lLlNFQ1RJT049bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTRUNUSU9OXCIpLGdvb2cuZG9tLlRhZ05hbWUuU0VMRUNUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU0VMRUNUXCIpLGdvb2cuZG9tLlRhZ05hbWUuU01BTEw9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTTUFMTFwiKSxnb29nLmRvbS5UYWdOYW1lLlNPVVJDRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlNPVVJDRVwiKSxnb29nLmRvbS5UYWdOYW1lLlNQQU49bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTUEFOXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1RSSUtFPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU1RSSUtFXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1RST05HPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU1RST05HXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1RZTEU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTVFlMRVwiKSxnb29nLmRvbS5UYWdOYW1lLlNVQj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlNVQlwiKSxnb29nLmRvbS5UYWdOYW1lLlNVTU1BUlk9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTVU1NQVJZXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1VQPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU1VQXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1ZHPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU1ZHXCIpLGdvb2cuZG9tLlRhZ05hbWUuVEFCTEU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJUQUJMRVwiKSxnb29nLmRvbS5UYWdOYW1lLlRCT0RZPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVEJPRFlcIiksZ29vZy5kb20uVGFnTmFtZS5URD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlREXCIpLGdvb2cuZG9tLlRhZ05hbWUuVEVNUExBVEU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJURU1QTEFURVwiKSxnb29nLmRvbS5UYWdOYW1lLlRFWFRBUkVBPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVEVYVEFSRUFcIiksZ29vZy5kb20uVGFnTmFtZS5URk9PVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlRGT09UXCIpLGdvb2cuZG9tLlRhZ05hbWUuVEg9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJUSFwiKSxnb29nLmRvbS5UYWdOYW1lLlRIRUFEPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVEhFQURcIiksZ29vZy5kb20uVGFnTmFtZS5USU1FPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVElNRVwiKSxnb29nLmRvbS5UYWdOYW1lLlRJVExFPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVElUTEVcIiksZ29vZy5kb20uVGFnTmFtZS5UUj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlRSXCIpLGdvb2cuZG9tLlRhZ05hbWUuVFJBQ0s9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJUUkFDS1wiKSxnb29nLmRvbS5UYWdOYW1lLlRUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVFRcIiksZ29vZy5kb20uVGFnTmFtZS5VPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVVwiKSxnb29nLmRvbS5UYWdOYW1lLlVMPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVUxcIiksZ29vZy5kb20uVGFnTmFtZS5WQVI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJWQVJcIiksZ29vZy5kb20uVGFnTmFtZS5WSURFTz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlZJREVPXCIpLGdvb2cuZG9tLlRhZ05hbWUuV0JSPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiV0JSXCIpLGdvb2cuZG9tLnRhZ3M9e30sZ29vZy5kb20udGFncy5WT0lEX1RBR1NfPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGNvbW1hbmQ6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0sZ29vZy5kb20udGFncy5pc1ZvaWRUYWc9ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1nb29nLmRvbS50YWdzLlZPSURfVEFHU19bZV19LGdvb2cuaHRtbD17fSxnb29nLmh0bWwudHJ1c3RlZHR5cGVzPXt9LGdvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT9nb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUUrXCIjaHRtbFwiKTpudWxsLGdvb2cuc3RyaW5nPXt9LGdvb2cuc3RyaW5nLlR5cGVkU3RyaW5nPWZ1bmN0aW9uKCl7fSxnb29nLnN0cmluZy5Db25zdD1mdW5jdGlvbihlLHQpe3RoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXz1lPT09Z29vZy5zdHJpbmcuQ29uc3QuR09PR19TVFJJTkdfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV8mJnR8fFwiXCIsdGhpcy5TVFJJTkdfQ09OU1RfVFlQRV9NQVJLRVJfX0dPT0dfU1RSSU5HX1NFQ1VSSVRZX1BSSVZBVEVfPWdvb2cuc3RyaW5nLkNvbnN0LlRZUEVfTUFSS0VSX30sZ29vZy5zdHJpbmcuQ29uc3QucHJvdG90eXBlLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITAsZ29vZy5zdHJpbmcuQ29uc3QucHJvdG90eXBlLmdldFR5cGVkU3RyaW5nVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHJpbmdDb25zdFZhbHVlV2l0aFNlY3VyaXR5Q29udHJhY3RfX2dvb2dTdHJpbmdTZWN1cml0eVByaXZhdGVffSxnb29nLnN0cmluZy5Db25zdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIkNvbnN0e1wiK3RoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXytcIn1cIn0sZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3QmJmUuY29uc3RydWN0b3I9PT1nb29nLnN0cmluZy5Db25zdCYmZS5TVFJJTkdfQ09OU1RfVFlQRV9NQVJLRVJfX0dPT0dfU1RSSU5HX1NFQ1VSSVRZX1BSSVZBVEVfPT09Z29vZy5zdHJpbmcuQ29uc3QuVFlQRV9NQVJLRVJfP2Uuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXzooZ29vZy5hc3NlcnRzLmZhaWwoXCJleHBlY3RlZCBvYmplY3Qgb2YgdHlwZSBDb25zdCwgZ290ICdcIitlK1wiJ1wiKSxcInR5cGVfZXJyb3I6Q29uc3RcIil9LGdvb2cuc3RyaW5nLkNvbnN0LmZyb209ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBnb29nLnN0cmluZy5Db25zdChnb29nLnN0cmluZy5Db25zdC5HT09HX1NUUklOR19DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFXyxlKX0sZ29vZy5zdHJpbmcuQ29uc3QuVFlQRV9NQVJLRVJfPXt9LGdvb2cuc3RyaW5nLkNvbnN0LkdPT0dfU1RSSU5HX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfPXt9LGdvb2cuc3RyaW5nLkNvbnN0LkVNUFRZPWdvb2cuc3RyaW5nLkNvbnN0LmZyb20oXCJcIiksZ29vZy5odG1sLlNhZmVTY3JpcHQ9ZnVuY3Rpb24oKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTY3JpcHRXcmFwcGVkVmFsdWVfPVwiXCIsdGhpcy5TQUZFX1NDUklQVF9UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89Z29vZy5odG1sLlNhZmVTY3JpcHQuVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVffSxnb29nLmh0bWwuU2FmZVNjcmlwdC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMCxnb29nLmh0bWwuU2FmZVNjcmlwdC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89e30sZ29vZy5odG1sLlNhZmVTY3JpcHQuZnJvbUNvbnN0YW50PWZ1bmN0aW9uKGUpe3JldHVybiAwPT09KGU9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpKS5sZW5ndGg/Z29vZy5odG1sLlNhZmVTY3JpcHQuRU1QVFk6Z29vZy5odG1sLlNhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5mcm9tQ29uc3RhbnRBbmRBcmdzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPVtdLHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW8ucHVzaChnb29nLmh0bWwuU2FmZVNjcmlwdC5zdHJpbmdpZnlfKGFyZ3VtZW50c1tyXSkpO3JldHVybiBnb29nLmh0bWwuU2FmZVNjcmlwdC5jcmVhdGVTYWZlU2NyaXB0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoXCIoXCIrZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpK1wiKShcIitvLmpvaW4oXCIsIFwiKStcIik7XCIpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5mcm9tSnNvbj1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuaHRtbC5TYWZlU2NyaXB0LnN0cmluZ2lmeV8oZSkpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5wcm90b3R5cGUuZ2V0VHlwZWRTdHJpbmdWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTY3JpcHRXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9LGdvb2cuREVCVUcmJihnb29nLmh0bWwuU2FmZVNjcmlwdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIlNhZmVTY3JpcHR7XCIrdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXytcIn1cIn0pLGdvb2cuaHRtbC5TYWZlU2NyaXB0LnVud3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVTY3JpcHQudW53cmFwVHJ1c3RlZFNjcmlwdChlKS50b1N0cmluZygpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC51bndyYXBUcnVzdGVkU2NyaXB0PWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVTY3JpcHQmJmUuY29uc3RydWN0b3I9PT1nb29nLmh0bWwuU2FmZVNjcmlwdCYmZS5TQUZFX1NDUklQVF9UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89PT1nb29nLmh0bWwuU2FmZVNjcmlwdC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV8/ZS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXzooZ29vZy5hc3NlcnRzLmZhaWwoXCJleHBlY3RlZCBvYmplY3Qgb2YgdHlwZSBTYWZlU2NyaXB0LCBnb3QgJ1wiK2UrXCInIG9mIHR5cGUgXCIrZ29vZy50eXBlT2YoZSkpLFwidHlwZV9lcnJvcjpTYWZlU2NyaXB0XCIpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5zdHJpbmdpZnlfPWZ1bmN0aW9uKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKS5yZXBsYWNlKC88L2csXCJcXFxceDNjXCIpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5jcmVhdGVTYWZlU2NyaXB0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oZSl7cmV0dXJuKG5ldyBnb29nLmh0bWwuU2FmZVNjcmlwdCkuaW5pdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlXyhlKX0sZ29vZy5odG1sLlNhZmVTY3JpcHQucHJvdG90eXBlLmluaXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZV89ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVNjcmlwdFdyYXBwZWRWYWx1ZV89Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5QUklWQVRFX0RPX05PVF9BQ0NFU1NfT1JfRUxTRV9QT0xJQ1k/Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5QUklWQVRFX0RPX05PVF9BQ0NFU1NfT1JfRUxTRV9QT0xJQ1kuY3JlYXRlU2NyaXB0KGUpOmUsdGhpc30sZ29vZy5odG1sLlNhZmVTY3JpcHQuRU1QVFk9Z29vZy5odG1sLlNhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiXCIpLGdvb2cuZnM9e30sZ29vZy5mcy51cmw9e30sZ29vZy5mcy51cmwuY3JlYXRlT2JqZWN0VXJsPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmZzLnVybC5nZXRVcmxPYmplY3RfKCkuY3JlYXRlT2JqZWN0VVJMKGUpfSxnb29nLmZzLnVybC5yZXZva2VPYmplY3RVcmw9ZnVuY3Rpb24oZSl7Z29vZy5mcy51cmwuZ2V0VXJsT2JqZWN0XygpLnJldm9rZU9iamVjdFVSTChlKX0sZ29vZy5mcy51cmwuZ2V0VXJsT2JqZWN0Xz1mdW5jdGlvbigpe3ZhciBlPWdvb2cuZnMudXJsLmZpbmRVcmxPYmplY3RfKCk7aWYobnVsbCE9ZSlyZXR1cm4gZTt0aHJvdyBFcnJvcihcIlRoaXMgYnJvd3NlciBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCBibG9iIFVSTHNcIil9LGdvb2cuZnMudXJsLmZpbmRVcmxPYmplY3RfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuaXNEZWYoZ29vZy5nbG9iYWwuVVJMKSYmZ29vZy5pc0RlZihnb29nLmdsb2JhbC5VUkwuY3JlYXRlT2JqZWN0VVJMKT9nb29nLmdsb2JhbC5VUkw6Z29vZy5pc0RlZihnb29nLmdsb2JhbC53ZWJraXRVUkwpJiZnb29nLmlzRGVmKGdvb2cuZ2xvYmFsLndlYmtpdFVSTC5jcmVhdGVPYmplY3RVUkwpP2dvb2cuZ2xvYmFsLndlYmtpdFVSTDpnb29nLmlzRGVmKGdvb2cuZ2xvYmFsLmNyZWF0ZU9iamVjdFVSTCk/Z29vZy5nbG9iYWw6bnVsbH0sZ29vZy5mcy51cmwuYnJvd3NlclN1cHBvcnRzT2JqZWN0VXJscz1mdW5jdGlvbigpe3JldHVybiBudWxsIT1nb29nLmZzLnVybC5maW5kVXJsT2JqZWN0XygpfSxnb29nLmkxOG49e30sZ29vZy5pMThuLmJpZGk9e30sZ29vZy5pMThuLmJpZGkuRk9SQ0VfUlRMPSExLGdvb2cuaTE4bi5iaWRpLklTX1JUTD1nb29nLmkxOG4uYmlkaS5GT1JDRV9SVEx8fChcImFyXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygwLDIpLnRvTG93ZXJDYXNlKCl8fFwiZmFcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDAsMikudG9Mb3dlckNhc2UoKXx8XCJoZVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMCwyKS50b0xvd2VyQ2FzZSgpfHxcIml3XCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygwLDIpLnRvTG93ZXJDYXNlKCl8fFwicHNcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDAsMikudG9Mb3dlckNhc2UoKXx8XCJzZFwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMCwyKS50b0xvd2VyQ2FzZSgpfHxcInVnXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygwLDIpLnRvTG93ZXJDYXNlKCl8fFwidXJcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDAsMikudG9Mb3dlckNhc2UoKXx8XCJ5aVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMCwyKS50b0xvd2VyQ2FzZSgpKSYmKDI9PWdvb2cuTE9DQUxFLmxlbmd0aHx8XCItXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygyLDMpfHxcIl9cIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDIsMykpfHwzPD1nb29nLkxPQ0FMRS5sZW5ndGgmJlwiY2tiXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygwLDMpLnRvTG93ZXJDYXNlKCkmJigzPT1nb29nLkxPQ0FMRS5sZW5ndGh8fFwiLVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMyw0KXx8XCJfXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygzLDQpKXx8Nzw9Z29vZy5MT0NBTEUubGVuZ3RoJiYoXCItXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygyLDMpfHxcIl9cIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDIsMykpJiYoXCJhZGxtXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygzLDcpLnRvTG93ZXJDYXNlKCl8fFwiYXJhYlwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMyw3KS50b0xvd2VyQ2FzZSgpfHxcImhlYnJcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDMsNykudG9Mb3dlckNhc2UoKXx8XCJua29vXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygzLDcpLnRvTG93ZXJDYXNlKCl8fFwicm9oZ1wiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMyw3KS50b0xvd2VyQ2FzZSgpfHxcInRoYWFcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDMsNykudG9Mb3dlckNhc2UoKSl8fDg8PWdvb2cuTE9DQUxFLmxlbmd0aCYmKFwiLVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMyw0KXx8XCJfXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygzLDQpKSYmKFwiYWRsbVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoNCw4KS50b0xvd2VyQ2FzZSgpfHxcImFyYWJcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDQsOCkudG9Mb3dlckNhc2UoKXx8XCJoZWJyXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZyg0LDgpLnRvTG93ZXJDYXNlKCl8fFwibmtvb1wiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoNCw4KS50b0xvd2VyQ2FzZSgpfHxcInJvaGdcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDQsOCkudG9Mb3dlckNhc2UoKXx8XCJ0aGFhXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZyg0LDgpLnRvTG93ZXJDYXNlKCkpLGdvb2cuaTE4bi5iaWRpLkZvcm1hdD17TFJFOlwi4oCqXCIsUkxFOlwi4oCrXCIsUERGOlwi4oCsXCIsTFJNOlwi4oCOXCIsUkxNOlwi4oCPXCJ9LGdvb2cuaTE4bi5iaWRpLkRpcj17TFRSOjEsUlRMOi0xLE5FVVRSQUw6MH0sZ29vZy5pMThuLmJpZGkuUklHSFQ9XCJyaWdodFwiLGdvb2cuaTE4bi5iaWRpLkxFRlQ9XCJsZWZ0XCIsZ29vZy5pMThuLmJpZGkuSTE4Tl9SSUdIVD1nb29nLmkxOG4uYmlkaS5JU19SVEw/Z29vZy5pMThuLmJpZGkuTEVGVDpnb29nLmkxOG4uYmlkaS5SSUdIVCxnb29nLmkxOG4uYmlkaS5JMThOX0xFRlQ9Z29vZy5pMThuLmJpZGkuSVNfUlRMP2dvb2cuaTE4bi5iaWRpLlJJR0hUOmdvb2cuaTE4bi5iaWRpLkxFRlQsZ29vZy5pMThuLmJpZGkudG9EaXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT8wPGU/Z29vZy5pMThuLmJpZGkuRGlyLkxUUjowPmU/Z29vZy5pMThuLmJpZGkuRGlyLlJUTDp0P251bGw6Z29vZy5pMThuLmJpZGkuRGlyLk5FVVRSQUw6bnVsbD09ZT9udWxsOmU/Z29vZy5pMThuLmJpZGkuRGlyLlJUTDpnb29nLmkxOG4uYmlkaS5EaXIuTFRSfSxnb29nLmkxOG4uYmlkaS5sdHJDaGFyc189XCJBLVphLXrDgC3DlsOYLcO2w7gtyrjMgC3WkOCkgC3hv7/igI7isIAtXFx1ZDgwMVxcdWQ4MDQtXFx1ZDgzOVxcdWQ4M2MtXFx1ZGJmZu+kgC3vrJzvuIAt77mv77u9Le+/v1wiLGdvb2cuaTE4bi5iaWRpLnJ0bENoYXJzXz1cItaRLduv27ot4KO/4oCPXFx1ZDgwMi1cXHVkODAzXFx1ZDgzYS1cXHVkODNi76ydLe+3v++5sC3vu7xcIixnb29nLmkxOG4uYmlkaS5odG1sU2tpcFJlZ189LzxbXj5dKj58JlteO10rOy9nLGdvb2cuaTE4bi5iaWRpLnN0cmlwSHRtbElmTmVlZGVkXz1mdW5jdGlvbihlLHQpe3JldHVybiB0P2UucmVwbGFjZShnb29nLmkxOG4uYmlkaS5odG1sU2tpcFJlZ18sXCJcIik6ZX0sZ29vZy5pMThuLmJpZGkucnRsQ2hhclJlZ189bmV3IFJlZ0V4cChcIltcIitnb29nLmkxOG4uYmlkaS5ydGxDaGFyc18rXCJdXCIpLGdvb2cuaTE4bi5iaWRpLmx0ckNoYXJSZWdfPW5ldyBSZWdFeHAoXCJbXCIrZ29vZy5pMThuLmJpZGkubHRyQ2hhcnNfK1wiXVwiKSxnb29nLmkxOG4uYmlkaS5oYXNBbnlSdGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5pMThuLmJpZGkucnRsQ2hhclJlZ18udGVzdChnb29nLmkxOG4uYmlkaS5zdHJpcEh0bWxJZk5lZWRlZF8oZSx0KSl9LGdvb2cuaTE4bi5iaWRpLmhhc1J0bENoYXI9Z29vZy5pMThuLmJpZGkuaGFzQW55UnRsLGdvb2cuaTE4bi5iaWRpLmhhc0FueUx0cj1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmkxOG4uYmlkaS5sdHJDaGFyUmVnXy50ZXN0KGdvb2cuaTE4bi5iaWRpLnN0cmlwSHRtbElmTmVlZGVkXyhlLHQpKX0sZ29vZy5pMThuLmJpZGkubHRyUmVfPW5ldyBSZWdFeHAoXCJeW1wiK2dvb2cuaTE4bi5iaWRpLmx0ckNoYXJzXytcIl1cIiksZ29vZy5pMThuLmJpZGkucnRsUmVfPW5ldyBSZWdFeHAoXCJeW1wiK2dvb2cuaTE4bi5iaWRpLnJ0bENoYXJzXytcIl1cIiksZ29vZy5pMThuLmJpZGkuaXNSdGxDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmkxOG4uYmlkaS5ydGxSZV8udGVzdChlKX0sZ29vZy5pMThuLmJpZGkuaXNMdHJDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmkxOG4uYmlkaS5sdHJSZV8udGVzdChlKX0sZ29vZy5pMThuLmJpZGkuaXNOZXV0cmFsQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4hZ29vZy5pMThuLmJpZGkuaXNMdHJDaGFyKGUpJiYhZ29vZy5pMThuLmJpZGkuaXNSdGxDaGFyKGUpfSxnb29nLmkxOG4uYmlkaS5sdHJEaXJDaGVja1JlXz1uZXcgUmVnRXhwKFwiXlteXCIrZ29vZy5pMThuLmJpZGkucnRsQ2hhcnNfK1wiXSpbXCIrZ29vZy5pMThuLmJpZGkubHRyQ2hhcnNfK1wiXVwiKSxnb29nLmkxOG4uYmlkaS5ydGxEaXJDaGVja1JlXz1uZXcgUmVnRXhwKFwiXlteXCIrZ29vZy5pMThuLmJpZGkubHRyQ2hhcnNfK1wiXSpbXCIrZ29vZy5pMThuLmJpZGkucnRsQ2hhcnNfK1wiXVwiKSxnb29nLmkxOG4uYmlkaS5zdGFydHNXaXRoUnRsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaTE4bi5iaWRpLnJ0bERpckNoZWNrUmVfLnRlc3QoZ29vZy5pMThuLmJpZGkuc3RyaXBIdG1sSWZOZWVkZWRfKGUsdCkpfSxnb29nLmkxOG4uYmlkaS5pc1J0bFRleHQ9Z29vZy5pMThuLmJpZGkuc3RhcnRzV2l0aFJ0bCxnb29nLmkxOG4uYmlkaS5zdGFydHNXaXRoTHRyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaTE4bi5iaWRpLmx0ckRpckNoZWNrUmVfLnRlc3QoZ29vZy5pMThuLmJpZGkuc3RyaXBIdG1sSWZOZWVkZWRfKGUsdCkpfSxnb29nLmkxOG4uYmlkaS5pc0x0clRleHQ9Z29vZy5pMThuLmJpZGkuc3RhcnRzV2l0aEx0cixnb29nLmkxOG4uYmlkaS5pc1JlcXVpcmVkTHRyUmVfPS9eaHR0cDpcXC9cXC8uKi8sZ29vZy5pMThuLmJpZGkuaXNOZXV0cmFsVGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiBlPWdvb2cuaTE4bi5iaWRpLnN0cmlwSHRtbElmTmVlZGVkXyhlLHQpLGdvb2cuaTE4bi5iaWRpLmlzUmVxdWlyZWRMdHJSZV8udGVzdChlKXx8IWdvb2cuaTE4bi5iaWRpLmhhc0FueUx0cihlKSYmIWdvb2cuaTE4bi5iaWRpLmhhc0FueVJ0bChlKX0sZ29vZy5pMThuLmJpZGkubHRyRXhpdERpckNoZWNrUmVfPW5ldyBSZWdFeHAoXCJbXCIrZ29vZy5pMThuLmJpZGkubHRyQ2hhcnNfK1wiXVteXCIrZ29vZy5pMThuLmJpZGkucnRsQ2hhcnNfK1wiXSokXCIpLGdvb2cuaTE4bi5iaWRpLnJ0bEV4aXREaXJDaGVja1JlXz1uZXcgUmVnRXhwKFwiW1wiK2dvb2cuaTE4bi5iaWRpLnJ0bENoYXJzXytcIl1bXlwiK2dvb2cuaTE4bi5iaWRpLmx0ckNoYXJzXytcIl0qJFwiKSxnb29nLmkxOG4uYmlkaS5lbmRzV2l0aEx0cj1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmkxOG4uYmlkaS5sdHJFeGl0RGlyQ2hlY2tSZV8udGVzdChnb29nLmkxOG4uYmlkaS5zdHJpcEh0bWxJZk5lZWRlZF8oZSx0KSl9LGdvb2cuaTE4bi5iaWRpLmlzTHRyRXhpdFRleHQ9Z29vZy5pMThuLmJpZGkuZW5kc1dpdGhMdHIsZ29vZy5pMThuLmJpZGkuZW5kc1dpdGhSdGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5pMThuLmJpZGkucnRsRXhpdERpckNoZWNrUmVfLnRlc3QoZ29vZy5pMThuLmJpZGkuc3RyaXBIdG1sSWZOZWVkZWRfKGUsdCkpfSxnb29nLmkxOG4uYmlkaS5pc1J0bEV4aXRUZXh0PWdvb2cuaTE4bi5iaWRpLmVuZHNXaXRoUnRsLGdvb2cuaTE4bi5iaWRpLnJ0bExvY2FsZXNSZV89L14oYXJ8Y2tifGR2fGhlfGl3fGZhfG5xb3xwc3xzZHx1Z3x1cnx5aXwuKlstX10oQWRsbXxBcmFifEhlYnJ8Tmtvb3xSb2hnfFRoYWEpKSg/IS4qWy1fXShMYXRufEN5cmwpKCR8LXxfKSkoJHwtfF8pL2ksZ29vZy5pMThuLmJpZGkuaXNSdGxMYW5ndWFnZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkucnRsTG9jYWxlc1JlXy50ZXN0KGUpfSxnb29nLmkxOG4uYmlkaS5icmFja2V0R3VhcmRUZXh0UmVfPS8oXFwoLio/XFwpKyl8KFxcWy4qP1xcXSspfChcXHsuKj9cXH0rKXwoPC4qPz4rKS9nLGdvb2cuaTE4bi5iaWRpLmd1YXJkQnJhY2tldEluVGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiB0PSh2b2lkIDA9PT10P2dvb2cuaTE4bi5iaWRpLmhhc0FueVJ0bChlKTp0KT9nb29nLmkxOG4uYmlkaS5Gb3JtYXQuUkxNOmdvb2cuaTE4bi5iaWRpLkZvcm1hdC5MUk0sZS5yZXBsYWNlKGdvb2cuaTE4bi5iaWRpLmJyYWNrZXRHdWFyZFRleHRSZV8sdCtcIiQmXCIrdCl9LGdvb2cuaTE4bi5iaWRpLmVuZm9yY2VSdGxJbkh0bWw9ZnVuY3Rpb24oZSl7cmV0dXJuXCI8XCI9PWUuY2hhckF0KDApP2UucmVwbGFjZSgvPFxcdysvLFwiJCYgZGlyPXJ0bFwiKTpcIlxcbjxzcGFuIGRpcj1ydGw+XCIrZStcIjwvc3Bhbj5cIn0sZ29vZy5pMThuLmJpZGkuZW5mb3JjZVJ0bEluVGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkuRm9ybWF0LlJMRStlK2dvb2cuaTE4bi5iaWRpLkZvcm1hdC5QREZ9LGdvb2cuaTE4bi5iaWRpLmVuZm9yY2VMdHJJbkh0bWw9ZnVuY3Rpb24oZSl7cmV0dXJuXCI8XCI9PWUuY2hhckF0KDApP2UucmVwbGFjZSgvPFxcdysvLFwiJCYgZGlyPWx0clwiKTpcIlxcbjxzcGFuIGRpcj1sdHI+XCIrZStcIjwvc3Bhbj5cIn0sZ29vZy5pMThuLmJpZGkuZW5mb3JjZUx0ckluVGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkuRm9ybWF0LkxSRStlK2dvb2cuaTE4bi5iaWRpLkZvcm1hdC5QREZ9LGdvb2cuaTE4bi5iaWRpLmRpbWVuc2lvbnNSZV89LzpcXHMqKFsuXFxkXVsuXFx3XSopXFxzKyhbLlxcZF1bLlxcd10qKVxccysoWy5cXGRdWy5cXHddKilcXHMrKFsuXFxkXVsuXFx3XSopL2csZ29vZy5pMThuLmJpZGkubGVmdFJlXz0vbGVmdC9naSxnb29nLmkxOG4uYmlkaS5yaWdodFJlXz0vcmlnaHQvZ2ksZ29vZy5pMThuLmJpZGkudGVtcFJlXz0vJSUlJS9nLGdvb2cuaTE4bi5iaWRpLm1pcnJvckNTUz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGdvb2cuaTE4bi5iaWRpLmRpbWVuc2lvbnNSZV8sXCI6JDEgJDQgJDMgJDJcIikucmVwbGFjZShnb29nLmkxOG4uYmlkaS5sZWZ0UmVfLFwiJSUlJVwiKS5yZXBsYWNlKGdvb2cuaTE4bi5iaWRpLnJpZ2h0UmVfLGdvb2cuaTE4bi5iaWRpLkxFRlQpLnJlcGxhY2UoZ29vZy5pMThuLmJpZGkudGVtcFJlXyxnb29nLmkxOG4uYmlkaS5SSUdIVCl9LGdvb2cuaTE4bi5iaWRpLmRvdWJsZVF1b3RlU3Vic3RpdHV0ZVJlXz0vKFtcXHUwNTkxLVxcdTA1ZjJdKVwiL2csZ29vZy5pMThuLmJpZGkuc2luZ2xlUXVvdGVTdWJzdGl0dXRlUmVfPS8oW1xcdTA1OTEtXFx1MDVmMl0pJy9nLGdvb2cuaTE4bi5iaWRpLm5vcm1hbGl6ZUhlYnJld1F1b3RlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoZ29vZy5pMThuLmJpZGkuZG91YmxlUXVvdGVTdWJzdGl0dXRlUmVfLFwiJDHXtFwiKS5yZXBsYWNlKGdvb2cuaTE4bi5iaWRpLnNpbmdsZVF1b3RlU3Vic3RpdHV0ZVJlXyxcIiQx17NcIil9LGdvb2cuaTE4bi5iaWRpLndvcmRTZXBhcmF0b3JSZV89L1xccysvLGdvb2cuaTE4bi5iaWRpLmhhc051bWVyYWxzUmVfPS9bXFxkXFx1MDZmMC1cXHUwNmY5XS8sZ29vZy5pMThuLmJpZGkucnRsRGV0ZWN0aW9uVGhyZXNob2xkXz0uNCxnb29nLmkxOG4uYmlkaS5lc3RpbWF0ZURpcmVjdGlvbj1mdW5jdGlvbihlLHQpe3ZhciBvPTAscj0wLG49ITE7Zm9yKGU9Z29vZy5pMThuLmJpZGkuc3RyaXBIdG1sSWZOZWVkZWRfKGUsdCkuc3BsaXQoZ29vZy5pMThuLmJpZGkud29yZFNlcGFyYXRvclJlXyksdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcz1lW3RdO2dvb2cuaTE4bi5iaWRpLnN0YXJ0c1dpdGhSdGwocyk/KG8rKyxyKyspOmdvb2cuaTE4bi5iaWRpLmlzUmVxdWlyZWRMdHJSZV8udGVzdChzKT9uPSEwOmdvb2cuaTE4bi5iaWRpLmhhc0FueUx0cihzKT9yKys6Z29vZy5pMThuLmJpZGkuaGFzTnVtZXJhbHNSZV8udGVzdChzKSYmKG49ITApfXJldHVybiAwPT1yP24/Z29vZy5pMThuLmJpZGkuRGlyLkxUUjpnb29nLmkxOG4uYmlkaS5EaXIuTkVVVFJBTDpvL3I+Z29vZy5pMThuLmJpZGkucnRsRGV0ZWN0aW9uVGhyZXNob2xkXz9nb29nLmkxOG4uYmlkaS5EaXIuUlRMOmdvb2cuaTE4bi5iaWRpLkRpci5MVFJ9LGdvb2cuaTE4bi5iaWRpLmRldGVjdFJ0bERpcmVjdGlvbmFsaXR5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaTE4bi5iaWRpLmVzdGltYXRlRGlyZWN0aW9uKGUsdCk9PWdvb2cuaTE4bi5iaWRpLkRpci5SVEx9LGdvb2cuaTE4bi5iaWRpLnNldEVsZW1lbnREaXJBbmRBbGlnbj1mdW5jdGlvbihlLHQpe2UmJih0PWdvb2cuaTE4bi5iaWRpLnRvRGlyKHQpKSYmKGUuc3R5bGUudGV4dEFsaWduPXQ9PWdvb2cuaTE4bi5iaWRpLkRpci5SVEw/Z29vZy5pMThuLmJpZGkuUklHSFQ6Z29vZy5pMThuLmJpZGkuTEVGVCxlLmRpcj10PT1nb29nLmkxOG4uYmlkaS5EaXIuUlRMP1wicnRsXCI6XCJsdHJcIil9LGdvb2cuaTE4bi5iaWRpLnNldEVsZW1lbnREaXJCeVRleHREaXJlY3Rpb25hbGl0eT1mdW5jdGlvbihlLHQpe3N3aXRjaChnb29nLmkxOG4uYmlkaS5lc3RpbWF0ZURpcmVjdGlvbih0KSl7Y2FzZSBnb29nLmkxOG4uYmlkaS5EaXIuTFRSOmUuZGlyPVwibHRyXCI7YnJlYWs7Y2FzZSBnb29nLmkxOG4uYmlkaS5EaXIuUlRMOmUuZGlyPVwicnRsXCI7YnJlYWs7ZGVmYXVsdDplLnJlbW92ZUF0dHJpYnV0ZShcImRpclwiKX19LGdvb2cuaTE4bi5iaWRpLkRpcmVjdGlvbmFsU3RyaW5nPWZ1bmN0aW9uKCl7fSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsPWZ1bmN0aW9uKCl7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfPVwiXCIsdGhpcy50cnVzdGVkVVJMXz1udWxsLHRoaXMuVFJVU1RFRF9SRVNPVVJDRV9VUkxfVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVffSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwucHJvdG90eXBlLmdldFR5cGVkU3RyaW5nVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9LGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwucHJvdG90eXBlLmltcGxlbWVudHNHb29nSTE4bkJpZGlEaXJlY3Rpb25hbFN0cmluZz0hMCxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnByb3RvdHlwZS5nZXREaXJlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkuRGlyLkxUUn0sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUuY2xvbmVXaXRoUGFyYW1zPWZ1bmN0aW9uKGUsdCl7dmFyIG89Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAodGhpcykscj0obz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLlVSTF9QQVJBTV9QQVJTRVJfLmV4ZWMobykpWzNdfHxcIlwiO3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmNyZWF0ZVRydXN0ZWRSZXNvdXJjZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG9bMV0rZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5zdHJpbmdpZnlQYXJhbXNfKFwiP1wiLG9bMl18fFwiXCIsZSkrZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5zdHJpbmdpZnlQYXJhbXNfKFwiI1wiLHIsdCkpfSxnb29nLkRFQlVHJiYoZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIlRydXN0ZWRSZXNvdXJjZVVybHtcIit0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVRydXN0ZWRSZXNvdXJjZVVybFdyYXBwZWRWYWx1ZV8rXCJ9XCJ9KSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGUpLnRvU3RyaW5nKCl9LGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFNjcmlwdFVSTD1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwmJmUuY29uc3RydWN0b3I9PT1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJiZlLlRSVVNURURfUkVTT1VSQ0VfVVJMX1RZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz09PWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfP2UucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlVHJ1c3RlZFJlc291cmNlVXJsV3JhcHBlZFZhbHVlXzooZ29vZy5hc3NlcnRzLmZhaWwoXCJleHBlY3RlZCBvYmplY3Qgb2YgdHlwZSBUcnVzdGVkUmVzb3VyY2VVcmwsIGdvdCAnXCIrZStcIicgb2YgdHlwZSBcIitnb29nLnR5cGVPZihlKSksXCJ0eXBlX2Vycm9yOlRydXN0ZWRSZXNvdXJjZVVybFwiKX0sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkVVJMPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRydXN0ZWRVUkxfP2UudHJ1c3RlZFVSTF86Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoZSl9LGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuZm9ybWF0PWZ1bmN0aW9uKGUsdCl7dmFyIG89Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpO2lmKCFnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLkJBU0VfVVJMXy50ZXN0KG8pKXRocm93IEVycm9yKFwiSW52YWxpZCBUcnVzdGVkUmVzb3VyY2VVcmwgZm9ybWF0OiBcIitvKTtyZXR1cm4gZT1vLnJlcGxhY2UoZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5GT1JNQVRfTUFSS0VSXywoZnVuY3Rpb24oZSxyKXtpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikpdGhyb3cgRXJyb3IoJ0ZvdW5kIG1hcmtlciwgXCInK3IrJ1wiLCBpbiBmb3JtYXQgc3RyaW5nLCBcIicrbysnXCIsIGJ1dCBubyB2YWxpZCBsYWJlbCBtYXBwaW5nIGZvdW5kIGluIGFyZ3M6ICcrSlNPTi5zdHJpbmdpZnkodCkpO3JldHVybihlPXRbcl0paW5zdGFuY2VvZiBnb29nLnN0cmluZy5Db25zdD9nb29nLnN0cmluZy5Db25zdC51bndyYXAoZSk6ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhlKSl9KSksZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5GT1JNQVRfTUFSS0VSXz0vJXsoXFx3Kyl9L2csZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5CQVNFX1VSTF89L14oKGh0dHBzOik/XFwvXFwvWzAtOWEtei46W1xcXS1dK1xcL3xcXC9bXi9cXFxcXXxbXjovXFxcXCVdK1xcL3xbXjovXFxcXCVdKls/I118YWJvdXQ6YmxhbmsjKS9pLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuVVJMX1BBUkFNX1BBUlNFUl89L14oW14/I10qKShcXD9bXiNdKik/KCNbXFxzXFxTXSopPy8sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5mb3JtYXRXaXRoUGFyYW1zPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZvcm1hdChlLHQpLmNsb25lV2l0aFBhcmFtcyhvLHIpfSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSkpfSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVwiXCIsbz0wO288ZS5sZW5ndGg7bysrKXQrPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlW29dKTtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KX0sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89e30sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZT1mdW5jdGlvbihlKXt2YXIgdD1uZXcgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybDtyZXR1cm4gdC5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfPWdvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZP2dvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZLmNyZWF0ZVNjcmlwdFVSTChlKTplLGdvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZJiYodC50cnVzdGVkVVJMXz1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLlBSSVZBVEVfRE9fTk9UX0FDQ0VTU19PUl9FTFNFX1BPTElDWS5jcmVhdGVVUkwoZSkpLHR9LGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuc3RyaW5naWZ5UGFyYW1zXz1mdW5jdGlvbihlLHQsbyl7aWYobnVsbD09bylyZXR1cm4gdDtpZihnb29nLmlzU3RyaW5nKG8pKXJldHVybiBvP2UrZW5jb2RlVVJJQ29tcG9uZW50KG8pOlwiXCI7Zm9yKHZhciByIGluIG8pe3ZhciBuPW9bcl07bj1nb29nLmlzQXJyYXkobik/bjpbbl07Zm9yKHZhciBzPTA7czxuLmxlbmd0aDtzKyspe3ZhciBpPW5bc107bnVsbCE9aSYmKHR8fCh0PWUpLHQrPSh0Lmxlbmd0aD5lLmxlbmd0aD9cIiZcIjpcIlwiKStlbmNvZGVVUklDb21wb25lbnQocikrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhpKSkpfX1yZXR1cm4gdH0sZ29vZy5zdHJpbmcuaW50ZXJuYWw9e30sZ29vZy5zdHJpbmcuaW50ZXJuYWwuc3RhcnRzV2l0aD1mdW5jdGlvbihlLHQpe3JldHVybiAwPT1lLmxhc3RJbmRleE9mKHQsMCl9LGdvb2cuc3RyaW5nLmludGVybmFsLmVuZHNXaXRoPWZ1bmN0aW9uKGUsdCl7dmFyIG89ZS5sZW5ndGgtdC5sZW5ndGg7cmV0dXJuIDA8PW8mJmUuaW5kZXhPZih0LG8pPT1vfSxnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUodCxlLnN1YnN0cigwLHQubGVuZ3RoKSl9LGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUVuZHNXaXRoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUodCxlLnN1YnN0cihlLmxlbmd0aC10Lmxlbmd0aCx0Lmxlbmd0aCkpfSxnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVFcXVhbHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpPT10LnRvTG93ZXJDYXNlKCl9LGdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuL15bXFxzXFx4YTBdKiQvLnRlc3QoZSl9LGdvb2cuc3RyaW5nLmludGVybmFsLnRyaW09Z29vZy5UUlVTVEVEX1NJVEUmJlN0cmluZy5wcm90b3R5cGUudHJpbT9mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9OmZ1bmN0aW9uKGUpe3JldHVybi9eW1xcc1xceGEwXSooW1xcc1xcU10qPylbXFxzXFx4YTBdKiQvLmV4ZWMoZSlbMV19LGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZT1TdHJpbmcoZSkudG9Mb3dlckNhc2UoKSk8KHQ9U3RyaW5nKHQpLnRvTG93ZXJDYXNlKCkpPy0xOmU9PXQ/MDoxfSxnb29nLnN0cmluZy5pbnRlcm5hbC5uZXdMaW5lVG9Ccj1mdW5jdGlvbihlLHQpe3JldHVybiBlLnJlcGxhY2UoLyhcXHJcXG58XFxyfFxcbikvZyx0P1wiPGJyIC8+XCI6XCI8YnI+XCIpfSxnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlPWZ1bmN0aW9uKGUsdCl7aWYodCllPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5BTVBfUkVfLFwiJmFtcDtcIikucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5MVF9SRV8sXCImbHQ7XCIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuR1RfUkVfLFwiJmd0O1wiKS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLlFVT1RfUkVfLFwiJnF1b3Q7XCIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuU0lOR0xFX1FVT1RFX1JFXyxcIiYjMzk7XCIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuTlVMTF9SRV8sXCImIzA7XCIpO2Vsc2V7aWYoIWdvb2cuc3RyaW5nLmludGVybmFsLkFMTF9SRV8udGVzdChlKSlyZXR1cm4gZTstMSE9ZS5pbmRleE9mKFwiJlwiKSYmKGU9ZS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLkFNUF9SRV8sXCImYW1wO1wiKSksLTEhPWUuaW5kZXhPZihcIjxcIikmJihlPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5MVF9SRV8sXCImbHQ7XCIpKSwtMSE9ZS5pbmRleE9mKFwiPlwiKSYmKGU9ZS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLkdUX1JFXyxcIiZndDtcIikpLC0xIT1lLmluZGV4T2YoJ1wiJykmJihlPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5RVU9UX1JFXyxcIiZxdW90O1wiKSksLTEhPWUuaW5kZXhPZihcIidcIikmJihlPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5TSU5HTEVfUVVPVEVfUkVfLFwiJiMzOTtcIikpLC0xIT1lLmluZGV4T2YoXCJcXDBcIikmJihlPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5OVUxMX1JFXyxcIiYjMDtcIikpfXJldHVybiBlfSxnb29nLnN0cmluZy5pbnRlcm5hbC5BTVBfUkVfPS8mL2csZ29vZy5zdHJpbmcuaW50ZXJuYWwuTFRfUkVfPS88L2csZ29vZy5zdHJpbmcuaW50ZXJuYWwuR1RfUkVfPS8+L2csZ29vZy5zdHJpbmcuaW50ZXJuYWwuUVVPVF9SRV89L1wiL2csZ29vZy5zdHJpbmcuaW50ZXJuYWwuU0lOR0xFX1FVT1RFX1JFXz0vJy9nLGdvb2cuc3RyaW5nLmludGVybmFsLk5VTExfUkVfPS9cXHgwMC9nLGdvb2cuc3RyaW5nLmludGVybmFsLkFMTF9SRV89L1tcXHgwMCY8PlwiJ10vLGdvb2cuc3RyaW5nLmludGVybmFsLndoaXRlc3BhY2VFc2NhcGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5zdHJpbmcuaW50ZXJuYWwubmV3TGluZVRvQnIoZS5yZXBsYWNlKC8gIC9nLFwiICYjMTYwO1wiKSx0KX0sZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4tMSE9ZS5pbmRleE9mKHQpfSxnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucyhlLnRvTG93ZXJDYXNlKCksdC50b0xvd2VyQ2FzZSgpKX0sZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zPWZ1bmN0aW9uKGUsdCl7dmFyIG89MDtlPWdvb2cuc3RyaW5nLmludGVybmFsLnRyaW0oU3RyaW5nKGUpKS5zcGxpdChcIi5cIiksdD1nb29nLnN0cmluZy5pbnRlcm5hbC50cmltKFN0cmluZyh0KSkuc3BsaXQoXCIuXCIpO2Zvcih2YXIgcj1NYXRoLm1heChlLmxlbmd0aCx0Lmxlbmd0aCksbj0wOzA9PW8mJm48cjtuKyspe3ZhciBzPWVbbl18fFwiXCIsaT10W25dfHxcIlwiO2Rve2lmKHM9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMocyl8fFtcIlwiLFwiXCIsXCJcIixcIlwiXSxpPS8oXFxkKikoXFxEKikoLiopLy5leGVjKGkpfHxbXCJcIixcIlwiLFwiXCIsXCJcIl0sMD09c1swXS5sZW5ndGgmJjA9PWlbMF0ubGVuZ3RoKWJyZWFrO289MD09c1sxXS5sZW5ndGg/MDpwYXJzZUludChzWzFdLDEwKTt2YXIgYT0wPT1pWzFdLmxlbmd0aD8wOnBhcnNlSW50KGlbMV0sMTApO289Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZUVsZW1lbnRzXyhvLGEpfHxnb29nLnN0cmluZy5pbnRlcm5hbC5jb21wYXJlRWxlbWVudHNfKDA9PXNbMl0ubGVuZ3RoLDA9PWlbMl0ubGVuZ3RoKXx8Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZUVsZW1lbnRzXyhzWzJdLGlbMl0pLHM9c1szXSxpPWlbM119d2hpbGUoMD09byl9cmV0dXJuIG99LGdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVFbGVtZW50c189ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOjB9LGdvb2cuaHRtbC5TYWZlVXJsPWZ1bmN0aW9uKCl7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlVXJsV3JhcHBlZFZhbHVlXz1cIlwiLHRoaXMuU0FGRV9VUkxfVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPWdvb2cuaHRtbC5TYWZlVXJsLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFX30sZ29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORz1cImFib3V0OmludmFsaWQjekNsb3N1cmV6XCIsZ29vZy5odG1sLlNhZmVVcmwucHJvdG90eXBlLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITAsZ29vZy5odG1sLlNhZmVVcmwucHJvdG90eXBlLmdldFR5cGVkU3RyaW5nVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlVXJsV3JhcHBlZFZhbHVlXy50b1N0cmluZygpfSxnb29nLmh0bWwuU2FmZVVybC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dJMThuQmlkaURpcmVjdGlvbmFsU3RyaW5nPSEwLGdvb2cuaHRtbC5TYWZlVXJsLnByb3RvdHlwZS5nZXREaXJlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkuRGlyLkxUUn0sZ29vZy5ERUJVRyYmKGdvb2cuaHRtbC5TYWZlVXJsLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiU2FmZVVybHtcIit0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfK1wifVwifSksZ29vZy5odG1sLlNhZmVVcmwudW53cmFwPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC51bndyYXBUcnVzdGVkVVJMKGUpLnRvU3RyaW5nKCl9LGdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkw9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCYmZS5jb25zdHJ1Y3Rvcj09PWdvb2cuaHRtbC5TYWZlVXJsJiZlLlNBRkVfVVJMX1RZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz09PWdvb2cuaHRtbC5TYWZlVXJsLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz9lLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfOihnb29nLmFzc2VydHMuZmFpbChcImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVVcmwsIGdvdCAnXCIrZStcIicgb2YgdHlwZSBcIitnb29nLnR5cGVPZihlKSksXCJ0eXBlX2Vycm9yOlNhZmVVcmxcIil9LGdvb2cuaHRtbC5TYWZlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSl9LGdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXz0vXig/OmF1ZGlvXFwvKD86M2dwcDJ8M2dwcHxhYWN8TDE2fG1pZGl8bXAzfG1wNHxtcGVnfG9nYXxvZ2d8b3B1c3x4LW00YXx4LXdhdnx3YXZ8d2VibSl8aW1hZ2VcXC8oPzpibXB8Z2lmfGpwZWd8anBnfHBuZ3x0aWZmfHdlYnB8eC1pY29uKXx0ZXh0XFwvY3N2fHZpZGVvXFwvKD86bXBlZ3xtcDR8b2dnfHdlYm18cXVpY2t0aW1lKSkoPzo7XFx3Kz0oPzpcXHcrfFwiW1xcdzs9XStcIikpKiQvaSxnb29nLmh0bWwuU2FmZVVybC5pc1NhZmVNaW1lVHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNBRkVfTUlNRV9UWVBFX1BBVFRFUk5fLnRlc3QoZSl9LGdvb2cuaHRtbC5TYWZlVXJsLmZyb21CbG9iPWZ1bmN0aW9uKGUpe3JldHVybiBlPWdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXy50ZXN0KGUudHlwZSk/Z29vZy5mcy51cmwuY3JlYXRlT2JqZWN0VXJsKGUpOmdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcsZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpfSxnb29nLmh0bWwuREFUQV9VUkxfUEFUVEVSTl89L15kYXRhOihbXixdKik7YmFzZTY0LFthLXowLTkrXFwvXSs9KiQvaSxnb29nLmh0bWwuU2FmZVVybC5mcm9tRGF0YVVybD1mdW5jdGlvbihlKXt2YXIgdD0oZT1lLnJlcGxhY2UoLyglMEF8JTBEKS9nLFwiXCIpKS5tYXRjaChnb29nLmh0bWwuREFUQV9VUkxfUEFUVEVSTl8pO3JldHVybiB0PXQmJmdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXy50ZXN0KHRbMV0pLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0P2U6Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyl9LGdvb2cuaHRtbC5TYWZlVXJsLmZyb21UZWxVcmw9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGgoZSxcInRlbDpcIil8fChlPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlNJUF9VUkxfUEFUVEVSTl89L15zaXBbc10/OlsrYS16MC05Xy4hJCUmJypcXC89XmB7fH1+LV0rQChbYS16MC05LV0rXFwuKStbYS16MC05XXsyLDYzfSQvaSxnb29nLmh0bWwuU2FmZVVybC5mcm9tU2lwVXJsPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmh0bWwuU0lQX1VSTF9QQVRURVJOXy50ZXN0KGRlY29kZVVSSUNvbXBvbmVudChlKSl8fChlPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlNhZmVVcmwuZnJvbUZhY2Vib29rTWVzc2VuZ2VyVXJsPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGUsXCJmYi1tZXNzZW5nZXI6Ly9zaGFyZVwiKXx8KGU9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyksZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpfSxnb29nLmh0bWwuU2FmZVVybC5mcm9tV2hhdHNBcHBVcmw9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGgoZSxcIndoYXRzYXBwOi8vc2VuZFwiKXx8KGU9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyksZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpfSxnb29nLmh0bWwuU2FmZVVybC5mcm9tU21zVXJsPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGUsXCJzbXM6XCIpJiZnb29nLmh0bWwuU2FmZVVybC5pc1Ntc1VybEJvZHlWYWxpZF8oZSl8fChlPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlNhZmVVcmwuaXNTbXNVcmxCb2R5VmFsaWRfPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5kZXhPZihcIiNcIik7aWYoMDx0JiYoZT1lLnN1YnN0cmluZygwLHQpKSwhKHQ9ZS5tYXRjaCgvWz8mXWJvZHk9L2dpKSkpcmV0dXJuITA7aWYoMTx0Lmxlbmd0aClyZXR1cm4hMTtpZighKGU9ZS5tYXRjaCgvWz8mXWJvZHk9KFteJl0qKS8pWzFdKSlyZXR1cm4hMDt0cnl7ZGVjb2RlVVJJQ29tcG9uZW50KGUpfWNhdGNoKGUpe3JldHVybiExfXJldHVybi9eKD86W2EtejAtOVxcLV8ufl18JVswLTlhLWZdezJ9KSskL2kudGVzdChlKX0sZ29vZy5odG1sLlNhZmVVcmwuZnJvbVNzaFVybD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aChlLFwic3NoOi8vXCIpfHwoZT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKSxnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoZSl9LGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQ2hyb21lRXh0ZW5zaW9uVXJsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXygvXmNocm9tZS1leHRlbnNpb246XFwvXFwvKFteXFwvXSspXFwvLyxlLHQpfSxnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUZpcmVmb3hFeHRlbnNpb25Vcmw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVFeHRlbnNpb25VcmxfKC9ebW96LWV4dGVuc2lvbjpcXC9cXC8oW15cXC9dKylcXC8vLGUsdCl9LGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRWRnZUV4dGVuc2lvblVybD1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUV4dGVuc2lvblVybF8oL15tcy1icm93c2VyLWV4dGVuc2lvbjpcXC9cXC8oW15cXC9dKylcXC8vLGUsdCl9LGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXz1mdW5jdGlvbihlLHQsbyl7cmV0dXJuKGU9ZS5leGVjKHQpKT8oZT1lWzFdLC0xPT0obyBpbnN0YW5jZW9mIGdvb2cuc3RyaW5nLkNvbnN0P1tnb29nLnN0cmluZy5Db25zdC51bndyYXAobyldOm8ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpfSkpKS5pbmRleE9mKGUpJiYodD1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKSk6dD1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KX0sZ29vZy5odG1sLlNhZmVVcmwuZnJvbVRydXN0ZWRSZXNvdXJjZVVybD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGUpKX0sZ29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fPS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHApOnxbXjovPyNdKig/OlsvPyNdfCQpKS9pLGdvb2cuaHRtbC5TYWZlVXJsLlNBRkVfVVJMX1BBVFRFUk49Z29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fLGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/ZTooZT1cIm9iamVjdFwiPT10eXBlb2YgZSYmZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nP2UuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpOlN0cmluZyhlKSxnb29nLmh0bWwuU0FGRV9VUkxfUEFUVEVSTl8udGVzdChlKXx8KGU9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyksZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpKX0sZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsP2U6KGU9XCJvYmplY3RcIj09dHlwZW9mIGUmJmUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz9lLmdldFR5cGVkU3RyaW5nVmFsdWUoKTpTdHJpbmcoZSksdCYmL15kYXRhOi9pLnRlc3QoZSkmJih0PWdvb2cuaHRtbC5TYWZlVXJsLmZyb21EYXRhVXJsKGUpKS5nZXRUeXBlZFN0cmluZ1ZhbHVlKCk9PWU/dDooZ29vZy5hc3NlcnRzLmFzc2VydChnb29nLmh0bWwuU0FGRV9VUkxfUEFUVEVSTl8udGVzdChlKSxcIiVzIGRvZXMgbm90IG1hdGNoIHRoZSBzYWZlIFVSTCBwYXR0ZXJuXCIsZSl8fChlPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKSkpfSxnb29nLmh0bWwuU2FmZVVybC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89e30sZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBnb29nLmh0bWwuU2FmZVVybDtyZXR1cm4gdC5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlVXJsV3JhcHBlZFZhbHVlXz1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLlBSSVZBVEVfRE9fTk9UX0FDQ0VTU19PUl9FTFNFX1BPTElDWT9nb29nLmh0bWwudHJ1c3RlZHR5cGVzLlBSSVZBVEVfRE9fTk9UX0FDQ0VTU19PUl9FTFNFX1BPTElDWS5jcmVhdGVVUkwoZSk6ZSx0fSxnb29nLmh0bWwuU2FmZVVybC5BQk9VVF9CTEFOSz1nb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoXCJhYm91dDpibGFua1wiKSxnb29nLmh0bWwuU2FmZVN0eWxlPWZ1bmN0aW9uKCl7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfPVwiXCIsdGhpcy5TQUZFX1NUWUxFX1RZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz1nb29nLmh0bWwuU2FmZVN0eWxlLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFX30sZ29vZy5odG1sLlNhZmVTdHlsZS5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMCxnb29nLmh0bWwuU2FmZVN0eWxlLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz17fSxnb29nLmh0bWwuU2FmZVN0eWxlLmZyb21Db25zdGFudD1mdW5jdGlvbihlKXtyZXR1cm4gMD09PShlPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSkubGVuZ3RoP2dvb2cuaHRtbC5TYWZlU3R5bGUuRU1QVFk6KGdvb2cuYXNzZXJ0cy5hc3NlcnQoZ29vZy5zdHJpbmcuaW50ZXJuYWwuZW5kc1dpdGgoZSxcIjtcIiksXCJMYXN0IGNoYXJhY3RlciBvZiBzdHlsZSBzdHJpbmcgaXMgbm90ICc7JzogXCIrZSksZ29vZy5hc3NlcnRzLmFzc2VydChnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucyhlLFwiOlwiKSxcIlN0eWxlIHN0cmluZyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lICc6JywgdG8gc3BlY2lmeSBhIFxcXCJuYW1lOiB2YWx1ZVxcXCIgcGFpcjogXCIrZSksZ29vZy5odG1sLlNhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKSl9LGdvb2cuaHRtbC5TYWZlU3R5bGUucHJvdG90eXBlLmdldFR5cGVkU3RyaW5nVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVffSxnb29nLkRFQlVHJiYoZ29vZy5odG1sLlNhZmVTdHlsZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIlNhZmVTdHlsZXtcIit0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVdyYXBwZWRWYWx1ZV8rXCJ9XCJ9KSxnb29nLmh0bWwuU2FmZVN0eWxlLnVud3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlU3R5bGUmJmUuY29uc3RydWN0b3I9PT1nb29nLmh0bWwuU2FmZVN0eWxlJiZlLlNBRkVfU1RZTEVfVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPT09Z29vZy5odG1sLlNhZmVTdHlsZS5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV8/ZS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfOihnb29nLmFzc2VydHMuZmFpbChcImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVTdHlsZSwgZ290ICdcIitlK1wiJyBvZiB0eXBlIFwiK2dvb2cudHlwZU9mKGUpKSxcInR5cGVfZXJyb3I6U2FmZVN0eWxlXCIpfSxnb29nLmh0bWwuU2FmZVN0eWxlLmNyZWF0ZVNhZmVTdHlsZVNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlPWZ1bmN0aW9uKGUpe3JldHVybihuZXcgZ29vZy5odG1sLlNhZmVTdHlsZSkuaW5pdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlXyhlKX0sZ29vZy5odG1sLlNhZmVTdHlsZS5wcm90b3R5cGUuaW5pdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlXz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfPWUsdGhpc30sZ29vZy5odG1sLlNhZmVTdHlsZS5FTVBUWT1nb29nLmh0bWwuU2FmZVN0eWxlLmNyZWF0ZVNhZmVTdHlsZVNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiXCIpLGdvb2cuaHRtbC5TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORz1cInpDbG9zdXJlelwiLGdvb2cuaHRtbC5TYWZlU3R5bGUuY3JlYXRlPWZ1bmN0aW9uKGUpe3ZhciB0LG89XCJcIjtmb3IodCBpbiBlKXtpZighL15bLV9hLXpBLVowLTldKyQvLnRlc3QodCkpdGhyb3cgRXJyb3IoXCJOYW1lIGFsbG93cyBvbmx5IFstX2EtekEtWjAtOV0sIGdvdDogXCIrdCk7dmFyIHI9ZVt0XTtudWxsIT1yJiYobys9dCtcIjpcIisocj1nb29nLmlzQXJyYXkocik/Z29vZy5hcnJheS5tYXAocixnb29nLmh0bWwuU2FmZVN0eWxlLnNhbml0aXplUHJvcGVydHlWYWx1ZV8pLmpvaW4oXCIgXCIpOmdvb2cuaHRtbC5TYWZlU3R5bGUuc2FuaXRpemVQcm9wZXJ0eVZhbHVlXyhyKSkrXCI7XCIpfXJldHVybiBvP2dvb2cuaHRtbC5TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2Uobyk6Z29vZy5odG1sLlNhZmVTdHlsZS5FTVBUWX0sZ29vZy5odG1sLlNhZmVTdHlsZS5zYW5pdGl6ZVByb3BlcnR5VmFsdWVfPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybClyZXR1cm4ndXJsKFwiJytnb29nLmh0bWwuU2FmZVVybC51bndyYXAoZSkucmVwbGFjZSgvPC9nLFwiJTNjXCIpLnJlcGxhY2UoL1tcXFxcXCJdL2csXCJcXFxcJCZcIikrJ1wiKSc7aWYoZT1lIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpOmdvb2cuaHRtbC5TYWZlU3R5bGUuc2FuaXRpemVQcm9wZXJ0eVZhbHVlU3RyaW5nXyhTdHJpbmcoZSkpLC9bezt9XS8udGVzdChlKSl0aHJvdyBuZXcgZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yKFwiVmFsdWUgZG9lcyBub3QgYWxsb3cgW3s7fV0sIGdvdDogJXMuXCIsW2VdKTtyZXR1cm4gZX0sZ29vZy5odG1sLlNhZmVTdHlsZS5zYW5pdGl6ZVByb3BlcnR5VmFsdWVTdHJpbmdfPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShnb29nLmh0bWwuU2FmZVN0eWxlLkZVTkNUSU9OU19SRV8sXCIkMVwiKS5yZXBsYWNlKGdvb2cuaHRtbC5TYWZlU3R5bGUuRlVOQ1RJT05TX1JFXyxcIiQxXCIpLnJlcGxhY2UoZ29vZy5odG1sLlNhZmVTdHlsZS5VUkxfUkVfLFwidXJsXCIpO3JldHVybiBnb29nLmh0bWwuU2FmZVN0eWxlLlZBTFVFX1JFXy50ZXN0KHQpP2dvb2cuaHRtbC5TYWZlU3R5bGUuQ09NTUVOVF9SRV8udGVzdChlKT8oZ29vZy5hc3NlcnRzLmZhaWwoXCJTdHJpbmcgdmFsdWUgZGlzYWxsb3dzIGNvbW1lbnRzLCBnb3Q6IFwiK2UpLGdvb2cuaHRtbC5TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORyk6Z29vZy5odG1sLlNhZmVTdHlsZS5oYXNCYWxhbmNlZFF1b3Rlc18oZSk/Z29vZy5odG1sLlNhZmVTdHlsZS5oYXNCYWxhbmNlZFNxdWFyZUJyYWNrZXRzXyhlKT9nb29nLmh0bWwuU2FmZVN0eWxlLnNhbml0aXplVXJsXyhlKTooZ29vZy5hc3NlcnRzLmZhaWwoXCJTdHJpbmcgdmFsdWUgcmVxdWlyZXMgYmFsYW5jZWQgc3F1YXJlIGJyYWNrZXRzIGFuZCBvbmUgaWRlbnRpZmllciBwZXIgcGFpciBvZiBicmFja2V0cywgZ290OiBcIitlKSxnb29nLmh0bWwuU2FmZVN0eWxlLklOTk9DVU9VU19TVFJJTkcpOihnb29nLmFzc2VydHMuZmFpbChcIlN0cmluZyB2YWx1ZSByZXF1aXJlcyBiYWxhbmNlZCBxdW90ZXMsIGdvdDogXCIrZSksZ29vZy5odG1sLlNhZmVTdHlsZS5JTk5PQ1VPVVNfU1RSSU5HKTooZ29vZy5hc3NlcnRzLmZhaWwoXCJTdHJpbmcgdmFsdWUgYWxsb3dzIG9ubHkgXCIrZ29vZy5odG1sLlNhZmVTdHlsZS5WQUxVRV9BTExPV0VEX0NIQVJTXytcIiBhbmQgc2ltcGxlIGZ1bmN0aW9ucywgZ290OiBcIitlKSxnb29nLmh0bWwuU2FmZVN0eWxlLklOTk9DVU9VU19TVFJJTkcpfSxnb29nLmh0bWwuU2FmZVN0eWxlLmhhc0JhbGFuY2VkUXVvdGVzXz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ITAsbz0hMCxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWUuY2hhckF0KHIpO1wiJ1wiPT1uJiZvP3Q9IXQ6J1wiJz09biYmdCYmKG89IW8pfXJldHVybiB0JiZvfSxnb29nLmh0bWwuU2FmZVN0eWxlLmhhc0JhbGFuY2VkU3F1YXJlQnJhY2tldHNfPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0hMCxvPS9eWy1fYS16QS1aMC05XSQvLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZS5jaGFyQXQocik7aWYoXCJdXCI9PW4pe2lmKHQpcmV0dXJuITE7dD0hMH1lbHNlIGlmKFwiW1wiPT1uKXtpZighdClyZXR1cm4hMTt0PSExfWVsc2UgaWYoIXQmJiFvLnRlc3QobikpcmV0dXJuITF9cmV0dXJuIHR9LGdvb2cuaHRtbC5TYWZlU3R5bGUuVkFMVUVfQUxMT1dFRF9DSEFSU189XCJbLSwuXFxcIiclXyEjIGEtekEtWjAtOVxcXFxbXFxcXF1dXCIsZ29vZy5odG1sLlNhZmVTdHlsZS5WQUxVRV9SRV89bmV3IFJlZ0V4cChcIl5cIitnb29nLmh0bWwuU2FmZVN0eWxlLlZBTFVFX0FMTE9XRURfQ0hBUlNfK1wiKyRcIiksZ29vZy5odG1sLlNhZmVTdHlsZS5VUkxfUkVfPS9cXGIodXJsXFwoWyBcXHRcXG5dKikoJ1sgLSYoLVxcW1xcXS1+XSonfFwiWyAhIy1cXFtcXF0tfl0qXCJ8WyEjLSYqLVxcW1xcXS1+XSopKFsgXFx0XFxuXSpcXCkpL2csZ29vZy5odG1sLlNhZmVTdHlsZS5GVU5DVElPTlNfUkVfPS9cXGIoaHNsfGhzbGF8cmdifHJnYmF8bWF0cml4fGNhbGN8bWlubWF4fGZpdC1jb250ZW50fHJlcGVhdHwocm90YXRlfHNjYWxlfHRyYW5zbGF0ZSkoWHxZfFp8M2QpPylcXChbLSsqLzAtOWEtei4lXFxbXFxdLCBdK1xcKS9nLGdvb2cuaHRtbC5TYWZlU3R5bGUuQ09NTUVOVF9SRV89L1xcL1xcKi8sZ29vZy5odG1sLlNhZmVTdHlsZS5zYW5pdGl6ZVVybF89ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShnb29nLmh0bWwuU2FmZVN0eWxlLlVSTF9SRV8sKGZ1bmN0aW9uKGUsdCxvLHIpe3ZhciBuPVwiXCI7cmV0dXJuIG89by5yZXBsYWNlKC9eKFsnXCJdKSguKilcXDEkLywoZnVuY3Rpb24oZSx0LG8pe3JldHVybiBuPXQsb30pKSxlPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKG8pLmdldFR5cGVkU3RyaW5nVmFsdWUoKSx0K24rZStuK3J9KSl9LGdvb2cuaHRtbC5TYWZlU3R5bGUuY29uY2F0PWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCIsbz1mdW5jdGlvbihlKXtnb29nLmlzQXJyYXkoZSk/Z29vZy5hcnJheS5mb3JFYWNoKGUsbyk6dCs9Z29vZy5odG1sLlNhZmVTdHlsZS51bndyYXAoZSl9O3JldHVybiBnb29nLmFycmF5LmZvckVhY2goYXJndW1lbnRzLG8pLHQ/Z29vZy5odG1sLlNhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KTpnb29nLmh0bWwuU2FmZVN0eWxlLkVNUFRZfSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQ9ZnVuY3Rpb24oKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXz1cIlwiLHRoaXMuU0FGRV9TVFlMRV9TSEVFVF9UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89Z29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFX30sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwLGdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89e30sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LmNyZWF0ZVJ1bGU9ZnVuY3Rpb24oZSx0KXtpZihnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucyhlLFwiPFwiKSl0aHJvdyBFcnJvcihcIlNlbGVjdG9yIGRvZXMgbm90IGFsbG93ICc8JywgZ290OiBcIitlKTt2YXIgbz1lLnJlcGxhY2UoLygnfFwiKSgoPyFcXDEpW15cXHJcXG5cXGZcXFxcXXxcXFxcW1xcc1xcU10pKlxcMS9nLFwiXCIpO2lmKCEvXlstX2EtekEtWjAtOSMuOiogLD4rfltcXF0oKT1eJHxdKyQvLnRlc3QobykpdGhyb3cgRXJyb3IoXCJTZWxlY3RvciBhbGxvd3Mgb25seSBbLV9hLXpBLVowLTkjLjoqICw+K35bXFxcXF0oKT1eJHxdIGFuZCBzdHJpbmdzLCBnb3Q6IFwiK2UpO2lmKCFnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQuaGFzQmFsYW5jZWRCcmFja2V0c18obykpdGhyb3cgRXJyb3IoXCIoKSBhbmQgW10gaW4gc2VsZWN0b3IgbXVzdCBiZSBiYWxhbmNlZCwgZ290OiBcIitlKTtyZXR1cm4gdCBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlU3R5bGV8fCh0PWdvb2cuaHRtbC5TYWZlU3R5bGUuY3JlYXRlKHQpKSxlPWUrXCJ7XCIrZ29vZy5odG1sLlNhZmVTdHlsZS51bndyYXAodCkucmVwbGFjZSgvPC9nLFwiXFxcXDNDIFwiKStcIn1cIixnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0Lmhhc0JhbGFuY2VkQnJhY2tldHNfPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD17XCIoXCI6XCIpXCIsXCJbXCI6XCJdXCJ9LG89W10scj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO2lmKHRbbl0pby5wdXNoKHRbbl0pO2Vsc2UgaWYoZ29vZy5vYmplY3QuY29udGFpbnModCxuKSYmby5wb3AoKSE9bilyZXR1cm4hMX1yZXR1cm4gMD09by5sZW5ndGh9LGdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5jb25jYXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIixvPWZ1bmN0aW9uKGUpe2dvb2cuaXNBcnJheShlKT9nb29nLmFycmF5LmZvckVhY2goZSxvKTp0Kz1nb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQudW53cmFwKGUpfTtyZXR1cm4gZ29vZy5hcnJheS5mb3JFYWNoKGFyZ3VtZW50cyxvKSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KX0sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LmZyb21Db25zdGFudD1mdW5jdGlvbihlKXtyZXR1cm4gMD09PShlPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSkubGVuZ3RoP2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5FTVBUWTooZ29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMoZSxcIjxcIiksXCJGb3JiaWRkZW4gJzwnIGNoYXJhY3RlciBpbiBzdHlsZSBzaGVldCBzdHJpbmc6IFwiK2UpLGdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpKX0sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVffSxnb29nLkRFQlVHJiYoZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiU2FmZVN0eWxlU2hlZXR7XCIrdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVTaGVldFdyYXBwZWRWYWx1ZV8rXCJ9XCJ9KSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQudW53cmFwPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JiZlLmNvbnN0cnVjdG9yPT09Z29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JiZlLlNBRkVfU1RZTEVfU0hFRVRfVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPT09Z29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz9lLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXzooZ29vZy5hc3NlcnRzLmZhaWwoXCJleHBlY3RlZCBvYmplY3Qgb2YgdHlwZSBTYWZlU3R5bGVTaGVldCwgZ290ICdcIitlK1wiJyBvZiB0eXBlIFwiK2dvb2cudHlwZU9mKGUpKSxcInR5cGVfZXJyb3I6U2FmZVN0eWxlU2hlZXRcIil9LGdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlPWZ1bmN0aW9uKGUpe3JldHVybihuZXcgZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0KS5pbml0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VfKGUpfSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQucHJvdG90eXBlLmluaXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZV89ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVfPWUsdGhpc30sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LkVNUFRZPWdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiXCIpLGdvb2cubGFicz17fSxnb29nLmxhYnMudXNlckFnZW50PXt9LGdvb2cubGFicy51c2VyQWdlbnQudXRpbD17fSxnb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0TmF0aXZlVXNlckFnZW50U3RyaW5nXz1mdW5jdGlvbigpe3ZhciBlPWdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXROYXZpZ2F0b3JfKCk7cmV0dXJuIGUmJihlPWUudXNlckFnZW50KT9lOlwiXCJ9LGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXROYXZpZ2F0b3JfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuZ2xvYmFsLm5hdmlnYXRvcn0sZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLnVzZXJBZ2VudF89Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmdldE5hdGl2ZVVzZXJBZ2VudFN0cmluZ18oKSxnb29nLmxhYnMudXNlckFnZW50LnV0aWwuc2V0VXNlckFnZW50PWZ1bmN0aW9uKGUpe2dvb2cubGFicy51c2VyQWdlbnQudXRpbC51c2VyQWdlbnRfPWV8fGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXROYXRpdmVVc2VyQWdlbnRTdHJpbmdfKCl9LGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXRVc2VyQWdlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLnVzZXJBZ2VudF99LGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudD1mdW5jdGlvbihlKXt2YXIgdD1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50KCk7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKHQsZSl9LGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2U9ZnVuY3Rpb24oZSl7dmFyIHQ9Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmdldFVzZXJBZ2VudCgpO3JldHVybiBnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucyh0LGUpfSxnb29nLmxhYnMudXNlckFnZW50LnV0aWwuZXh0cmFjdFZlcnNpb25UdXBsZXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG89LyhcXHdbXFx3IF0rKVxcLyhbXlxcc10rKVxccyooPzpcXCgoLio/KVxcKSk/L2cscj1bXTt0PW8uZXhlYyhlKTspci5wdXNoKFt0WzFdLHRbMl0sdFszXXx8dm9pZCAwXSk7cmV0dXJuIHJ9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlcj17fSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hPcGVyYV89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiT3BlcmFcIil9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaElFXz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJUcmlkZW50XCIpfHxnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJNU0lFXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hFZGdlSHRtbF89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiRWRnZVwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoRWRnZUNocm9taXVtXz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJFZGcvXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hPcGVyYUNocm9taXVtXz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJPUFJcIil9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaEZpcmVmb3hfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkZpcmVmb3hcIil8fGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkZ4aU9TXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hTYWZhcmlfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIlNhZmFyaVwiKSYmIShnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hDaHJvbWVfKCl8fGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaENvYXN0XygpfHxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hPcGVyYV8oKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoRWRnZUh0bWxfKCl8fGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaEVkZ2VDaHJvbWl1bV8oKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoT3BlcmFDaHJvbWl1bV8oKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoRmlyZWZveF8oKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzU2lsaygpfHxnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJBbmRyb2lkXCIpKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ29hc3RfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkNvYXN0XCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hJb3NXZWJ2aWV3Xz1mdW5jdGlvbigpe3JldHVybihnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJpUGFkXCIpfHxnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJpUGhvbmVcIikpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoU2FmYXJpXygpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ2hyb21lXygpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ29hc3RfKCkmJiFnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hGaXJlZm94XygpJiZnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJBcHBsZVdlYktpdFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ2hyb21lXz1mdW5jdGlvbigpe3JldHVybihnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJDaHJvbWVcIil8fGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkNyaU9TXCIpKSYmIWdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaEVkZ2VIdG1sXygpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hBbmRyb2lkQnJvd3Nlcl89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiQW5kcm9pZFwiKSYmIShnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDaHJvbWUoKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRmlyZWZveCgpfHxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNPcGVyYSgpfHxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTaWxrKCkpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNPcGVyYT1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hPcGVyYV8sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSUU9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoSUVfLGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0VkZ2U9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoRWRnZUh0bWxfLGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0VkZ2VDaHJvbWl1bT1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hFZGdlQ2hyb21pdW1fLGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhQ2hyb21pdW09Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoT3BlcmFDaHJvbWl1bV8sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRmlyZWZveD1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hGaXJlZm94Xyxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTYWZhcmk9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoU2FmYXJpXyxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDb2FzdD1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hDb2FzdF8sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSW9zV2Vidmlldz1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hJb3NXZWJ2aWV3Xyxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDaHJvbWU9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ2hyb21lXyxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNBbmRyb2lkQnJvd3Nlcj1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hBbmRyb2lkQnJvd3Nlcl8sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzU2lsaz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJTaWxrXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuZ2V0VmVyc2lvbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGU9Z29vZy5hcnJheS5maW5kKGUsciksb1tlXXx8XCJcIn12YXIgdD1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50KCk7aWYoZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSUUoKSlyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmdldElFVmVyc2lvbl8odCk7dD1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZXh0cmFjdFZlcnNpb25UdXBsZXModCk7dmFyIG89e307Z29vZy5hcnJheS5mb3JFYWNoKHQsKGZ1bmN0aW9uKGUpe29bZVswXV09ZVsxXX0pKTt2YXIgcj1nb29nLnBhcnRpYWwoZ29vZy5vYmplY3QuY29udGFpbnNLZXksbyk7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhKCk/ZShbXCJWZXJzaW9uXCIsXCJPcGVyYVwiXSk6Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZSgpP2UoW1wiRWRnZVwiXSk6Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZUNocm9taXVtKCk/ZShbXCJFZGdcIl0pOmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0Nocm9tZSgpP2UoW1wiQ2hyb21lXCIsXCJDcmlPU1wiXSk6KHQ9dFsyXSkmJnRbMV18fFwiXCJ9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc1ZlcnNpb25PckhpZ2hlcj1mdW5jdGlvbihlKXtyZXR1cm4gMDw9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zKGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRWZXJzaW9uKCksZSl9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRJRVZlcnNpb25fPWZ1bmN0aW9uKGUpe3ZhciB0PS9ydjogKihbXFxkXFwuXSopLy5leGVjKGUpO2lmKHQmJnRbMV0pcmV0dXJuIHRbMV07dD1cIlwiO3ZhciBvPS9NU0lFICsoW1xcZFxcLl0rKS8uZXhlYyhlKTtpZihvJiZvWzFdKWlmKGU9L1RyaWRlbnRcXC8oXFxkLlxcZCkvLmV4ZWMoZSksXCI3LjBcIj09b1sxXSlpZihlJiZlWzFdKXN3aXRjaChlWzFdKXtjYXNlXCI0LjBcIjp0PVwiOC4wXCI7YnJlYWs7Y2FzZVwiNS4wXCI6dD1cIjkuMFwiO2JyZWFrO2Nhc2VcIjYuMFwiOnQ9XCIxMC4wXCI7YnJlYWs7Y2FzZVwiNy4wXCI6dD1cIjExLjBcIn1lbHNlIHQ9XCI3LjBcIjtlbHNlIHQ9b1sxXTtyZXR1cm4gdH0sZ29vZy5odG1sLlNhZmVIdG1sPWZ1bmN0aW9uKCl7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlSHRtbFdyYXBwZWRWYWx1ZV89XCJcIix0aGlzLlNBRkVfSFRNTF9UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89Z29vZy5odG1sLlNhZmVIdG1sLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXyx0aGlzLmRpcl89bnVsbH0sZ29vZy5odG1sLlNhZmVIdG1sLnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ0kxOG5CaWRpRGlyZWN0aW9uYWxTdHJpbmc9ITAsZ29vZy5odG1sLlNhZmVIdG1sLnByb3RvdHlwZS5nZXREaXJlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXJffSxnb29nLmh0bWwuU2FmZUh0bWwucHJvdG90eXBlLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITAsZ29vZy5odG1sLlNhZmVIdG1sLnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9LGdvb2cuREVCVUcmJihnb29nLmh0bWwuU2FmZUh0bWwucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuXCJTYWZlSHRtbHtcIit0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVIdG1sV3JhcHBlZFZhbHVlXytcIn1cIn0pLGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXA9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChlKS50b1N0cmluZygpfSxnb29nLmh0bWwuU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUw9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZUh0bWwmJmUuY29uc3RydWN0b3I9PT1nb29nLmh0bWwuU2FmZUh0bWwmJmUuU0FGRV9IVE1MX1RZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz09PWdvb2cuaHRtbC5TYWZlSHRtbC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV8/ZS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlSHRtbFdyYXBwZWRWYWx1ZV86KGdvb2cuYXNzZXJ0cy5mYWlsKFwiZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgU2FmZUh0bWwsIGdvdCAnXCIrZStcIicgb2YgdHlwZSBcIitnb29nLnR5cGVPZihlKSksXCJ0eXBlX2Vycm9yOlNhZmVIdG1sXCIpfSxnb29nLmh0bWwuU2FmZUh0bWwuaHRtbEVzY2FwZT1mdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVIdG1sKXJldHVybiBlO3ZhciB0PVwib2JqZWN0XCI9PXR5cGVvZiBlLG89bnVsbDtyZXR1cm4gdCYmZS5pbXBsZW1lbnRzR29vZ0kxOG5CaWRpRGlyZWN0aW9uYWxTdHJpbmcmJihvPWUuZ2V0RGlyZWN0aW9uKCkpLGU9dCYmZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nP2UuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpOlN0cmluZyhlKSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlKGUpLG8pfSxnb29nLmh0bWwuU2FmZUh0bWwuaHRtbEVzY2FwZVByZXNlcnZpbmdOZXdsaW5lcz1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlSHRtbD9lOihlPWdvb2cuaHRtbC5TYWZlSHRtbC5odG1sRXNjYXBlKGUpLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyKGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXAoZSkpLGUuZ2V0RGlyZWN0aW9uKCkpKX0sZ29vZy5odG1sLlNhZmVIdG1sLmh0bWxFc2NhcGVQcmVzZXJ2aW5nTmV3bGluZXNBbmRTcGFjZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZUh0bWw/ZTooZT1nb29nLmh0bWwuU2FmZUh0bWwuaHRtbEVzY2FwZShlKSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC53aGl0ZXNwYWNlRXNjYXBlKGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXAoZSkpLGUuZ2V0RGlyZWN0aW9uKCkpKX0sZ29vZy5odG1sLlNhZmVIdG1sLmZyb209Z29vZy5odG1sLlNhZmVIdG1sLmh0bWxFc2NhcGUsZ29vZy5odG1sLlNhZmVIdG1sLlZBTElEX05BTUVTX0lOX1RBR189L15bYS16QS1aMC05LV0rJC8sZ29vZy5odG1sLlNhZmVIdG1sLlVSTF9BVFRSSUJVVEVTXz17YWN0aW9uOiEwLGNpdGU6ITAsZGF0YTohMCxmb3JtYWN0aW9uOiEwLGhyZWY6ITAsbWFuaWZlc3Q6ITAscG9zdGVyOiEwLHNyYzohMH0sZ29vZy5odG1sLlNhZmVIdG1sLk5PVF9BTExPV0VEX1RBR19OQU1FU189e0FQUExFVDohMCxCQVNFOiEwLEVNQkVEOiEwLElGUkFNRTohMCxMSU5LOiEwLE1BVEg6ITAsTUVUQTohMCxPQkpFQ1Q6ITAsU0NSSVBUOiEwLFNUWUxFOiEwLFNWRzohMCxURU1QTEFURTohMH0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZT1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlSHRtbC52ZXJpZnlUYWdOYW1lKFN0cmluZyhlKSksZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoU3RyaW5nKGUpLHQsbyl9LGdvb2cuaHRtbC5TYWZlSHRtbC52ZXJpZnlUYWdOYW1lPWZ1bmN0aW9uKGUpe2lmKCFnb29nLmh0bWwuU2FmZUh0bWwuVkFMSURfTkFNRVNfSU5fVEFHXy50ZXN0KGUpKXRocm93IEVycm9yKFwiSW52YWxpZCB0YWcgbmFtZSA8XCIrZStcIj4uXCIpO2lmKGUudG9VcHBlckNhc2UoKWluIGdvb2cuaHRtbC5TYWZlSHRtbC5OT1RfQUxMT1dFRF9UQUdfTkFNRVNfKXRocm93IEVycm9yKFwiVGFnIG5hbWUgPFwiK2UrXCI+IGlzIG5vdCBhbGxvd2VkIGZvciBTYWZlSHRtbC5cIil9LGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVJZnJhbWU9ZnVuY3Rpb24oZSx0LG8scil7ZSYmZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoZSk7dmFyIG49e307cmV0dXJuIG4uc3JjPWV8fG51bGwsbi5zcmNkb2M9dCYmZ29vZy5odG1sLlNhZmVIdG1sLnVud3JhcCh0KSxlPWdvb2cuaHRtbC5TYWZlSHRtbC5jb21iaW5lQXR0cmlidXRlcyhuLHtzYW5kYm94OlwiXCJ9LG8pLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiaWZyYW1lXCIsZSxyKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhbmRib3hJZnJhbWU9ZnVuY3Rpb24oZSx0LG8scil7aWYoIWdvb2cuaHRtbC5TYWZlSHRtbC5jYW5Vc2VTYW5kYm94SWZyYW1lKCkpdGhyb3cgRXJyb3IoXCJUaGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHNhbmRib3hlZCBpZnJhbWVzLlwiKTt2YXIgbj17fTtyZXR1cm4gbi5zcmM9ZT9nb29nLmh0bWwuU2FmZVVybC51bndyYXAoZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemUoZSkpOm51bGwsbi5zcmNkb2M9dHx8bnVsbCxuLnNhbmRib3g9XCJcIixlPWdvb2cuaHRtbC5TYWZlSHRtbC5jb21iaW5lQXR0cmlidXRlcyhuLHt9LG8pLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiaWZyYW1lXCIsZSxyKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNhblVzZVNhbmRib3hJZnJhbWU9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5nbG9iYWwuSFRNTElGcmFtZUVsZW1lbnQmJlwic2FuZGJveFwiaW4gZ29vZy5nbG9iYWwuSFRNTElGcmFtZUVsZW1lbnQucHJvdG90eXBlfSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2NyaXB0U3JjPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGUpLGU9Z29vZy5odG1sLlNhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKHtzcmM6ZX0se30sdCksZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoXCJzY3JpcHRcIixlKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNjcmlwdD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiB0KXt2YXIgcj1vLnRvTG93ZXJDYXNlKCk7aWYoXCJsYW5ndWFnZVwiPT1yfHxcInNyY1wiPT1yfHxcInRleHRcIj09cnx8XCJ0eXBlXCI9PXIpdGhyb3cgRXJyb3IoJ0Nhbm5vdCBzZXQgXCInK3IrJ1wiIGF0dHJpYnV0ZScpfWZvcihvPVwiXCIsZT1nb29nLmFycmF5LmNvbmNhdChlKSxyPTA7cjxlLmxlbmd0aDtyKyspbys9Z29vZy5odG1sLlNhZmVTY3JpcHQudW53cmFwKGVbcl0pO3JldHVybiBlPWdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG8sZ29vZy5pMThuLmJpZGkuRGlyLk5FVVRSQUwpLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwic2NyaXB0XCIsdCxlKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVN0eWxlPWZ1bmN0aW9uKGUsdCl7dD1nb29nLmh0bWwuU2FmZUh0bWwuY29tYmluZUF0dHJpYnV0ZXMoe3R5cGU6XCJ0ZXh0L2Nzc1wifSx7fSx0KTt2YXIgbz1cIlwiO2U9Z29vZy5hcnJheS5jb25jYXQoZSk7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspbys9Z29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LnVud3JhcChlW3JdKTtyZXR1cm4gZT1nb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShvLGdvb2cuaTE4bi5iaWRpLkRpci5ORVVUUkFMKSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShcInN0eWxlXCIsdCxlKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZU1ldGFSZWZyZXNoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKGUpKSwoZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSUUoKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZSgpKSYmZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMoZSxcIjtcIikmJihlPVwiJ1wiK2UucmVwbGFjZSgvJy9nLFwiJTI3XCIpK1wiJ1wiKSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShcIm1ldGFcIix7XCJodHRwLWVxdWl2XCI6XCJyZWZyZXNoXCIsY29udGVudDoodHx8MCkrXCI7IHVybD1cIitlfSl9LGdvb2cuaHRtbC5TYWZlSHRtbC5nZXRBdHRyTmFtZUFuZFZhbHVlXz1mdW5jdGlvbihlLHQsbyl7aWYobyBpbnN0YW5jZW9mIGdvb2cuc3RyaW5nLkNvbnN0KW89Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKG8pO2Vsc2UgaWYoXCJzdHlsZVwiPT10LnRvTG93ZXJDYXNlKCkpbz1nb29nLmh0bWwuU2FmZUh0bWwuZ2V0U3R5bGVWYWx1ZV8obyk7ZWxzZXtpZigvXm9uL2kudGVzdCh0KSl0aHJvdyBFcnJvcignQXR0cmlidXRlIFwiJyt0KydcIiByZXF1aXJlcyBnb29nLnN0cmluZy5Db25zdCB2YWx1ZSwgXCInK28rJ1wiIGdpdmVuLicpO2lmKHQudG9Mb3dlckNhc2UoKWluIGdvb2cuaHRtbC5TYWZlSHRtbC5VUkxfQVRUUklCVVRFU18paWYobyBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwpbz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChvKTtlbHNlIGlmKG8gaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybClvPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChvKTtlbHNle2lmKCFnb29nLmlzU3RyaW5nKG8pKXRocm93IEVycm9yKCdBdHRyaWJ1dGUgXCInK3QrJ1wiIG9uIHRhZyBcIicrZSsnXCIgcmVxdWlyZXMgZ29vZy5odG1sLlNhZmVVcmwsIGdvb2cuc3RyaW5nLkNvbnN0LCBvciBzdHJpbmcsIHZhbHVlIFwiJytvKydcIiBnaXZlbi4nKTtvPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKG8pLmdldFR5cGVkU3RyaW5nVmFsdWUoKX19cmV0dXJuIG8uaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZyYmKG89by5nZXRUeXBlZFN0cmluZ1ZhbHVlKCkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZ29vZy5pc1N0cmluZyhvKXx8Z29vZy5pc051bWJlcihvKSxcIlN0cmluZyBvciBudW1iZXIgdmFsdWUgZXhwZWN0ZWQsIGdvdCBcIit0eXBlb2YgbytcIiB3aXRoIHZhbHVlOiBcIitvKSx0Kyc9XCInK2dvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoU3RyaW5nKG8pKSsnXCInfSxnb29nLmh0bWwuU2FmZUh0bWwuZ2V0U3R5bGVWYWx1ZV89ZnVuY3Rpb24oZSl7aWYoIWdvb2cuaXNPYmplY3QoZSkpdGhyb3cgRXJyb3IoJ1RoZSBcInN0eWxlXCIgYXR0cmlidXRlIHJlcXVpcmVzIGdvb2cuaHRtbC5TYWZlU3R5bGUgb3IgbWFwIG9mIHN0eWxlIHByb3BlcnRpZXMsICcrdHlwZW9mIGUrXCIgZ2l2ZW46IFwiK2UpO3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVTdHlsZXx8KGU9Z29vZy5odG1sLlNhZmVTdHlsZS5jcmVhdGUoZSkpLGdvb2cuaHRtbC5TYWZlU3R5bGUudW53cmFwKGUpfSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlV2l0aERpcj1mdW5jdGlvbihlLHQsbyxyKXtyZXR1cm4odD1nb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlKHQsbyxyKSkuZGlyXz1lLHR9LGdvb2cuaHRtbC5TYWZlSHRtbC5qb2luPWZ1bmN0aW9uKGUsdCl7dmFyIG89KGU9Z29vZy5odG1sLlNhZmVIdG1sLmh0bWxFc2NhcGUoZSkpLmdldERpcmVjdGlvbigpLHI9W10sbj1mdW5jdGlvbihlKXtnb29nLmlzQXJyYXkoZSk/Z29vZy5hcnJheS5mb3JFYWNoKGUsbik6KGU9Z29vZy5odG1sLlNhZmVIdG1sLmh0bWxFc2NhcGUoZSksci5wdXNoKGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXAoZSkpLGU9ZS5nZXREaXJlY3Rpb24oKSxvPT1nb29nLmkxOG4uYmlkaS5EaXIuTkVVVFJBTD9vPWU6ZSE9Z29vZy5pMThuLmJpZGkuRGlyLk5FVVRSQUwmJm8hPWUmJihvPW51bGwpKX07cmV0dXJuIGdvb2cuYXJyYXkuZm9yRWFjaCh0LG4pLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKHIuam9pbihnb29nLmh0bWwuU2FmZUh0bWwudW53cmFwKGUpKSxvKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNvbmNhdD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVIdG1sLmpvaW4oZ29vZy5odG1sLlNhZmVIdG1sLkVNUFRZLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfSxnb29nLmh0bWwuU2FmZUh0bWwuY29uY2F0V2l0aERpcj1mdW5jdGlvbihlLHQpe3ZhciBvPWdvb2cuaHRtbC5TYWZlSHRtbC5jb25jYXQoZ29vZy5hcnJheS5zbGljZShhcmd1bWVudHMsMSkpO3JldHVybiBvLmRpcl89ZSxvfSxnb29nLmh0bWwuU2FmZUh0bWwuVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPXt9LGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKG5ldyBnb29nLmh0bWwuU2FmZUh0bWwpLmluaXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZV8oZSx0KX0sZ29vZy5odG1sLlNhZmVIdG1sLnByb3RvdHlwZS5pbml0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VfPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfPWdvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZP2dvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZLmNyZWF0ZUhUTUwoZSk6ZSx0aGlzLmRpcl89dCx0aGlzfSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9bnVsbCxuPVwiPFwiK2UrZ29vZy5odG1sLlNhZmVIdG1sLnN0cmluZ2lmeUF0dHJpYnV0ZXMoZSx0KTtyZXR1cm4gZ29vZy5pc0RlZkFuZE5vdE51bGwobyk/Z29vZy5pc0FycmF5KG8pfHwobz1bb10pOm89W10sZ29vZy5kb20udGFncy5pc1ZvaWRUYWcoZS50b0xvd2VyQ2FzZSgpKT8oZ29vZy5hc3NlcnRzLmFzc2VydCghby5sZW5ndGgsXCJWb2lkIHRhZyA8XCIrZStcIj4gZG9lcyBub3QgYWxsb3cgY29udGVudC5cIiksbis9XCI+XCIpOihyPWdvb2cuaHRtbC5TYWZlSHRtbC5jb25jYXQobyksbis9XCI+XCIrZ29vZy5odG1sLlNhZmVIdG1sLnVud3JhcChyKStcIjwvXCIrZStcIj5cIixyPXIuZ2V0RGlyZWN0aW9uKCkpLChlPXQmJnQuZGlyKSYmKHI9L14obHRyfHJ0bHxhdXRvKSQvaS50ZXN0KGUpP2dvb2cuaTE4bi5iaWRpLkRpci5ORVVUUkFMOm51bGwpLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG4scil9LGdvb2cuaHRtbC5TYWZlSHRtbC5zdHJpbmdpZnlBdHRyaWJ1dGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG89XCJcIjtpZih0KWZvcih2YXIgciBpbiB0KXtpZighZ29vZy5odG1sLlNhZmVIdG1sLlZBTElEX05BTUVTX0lOX1RBR18udGVzdChyKSl0aHJvdyBFcnJvcignSW52YWxpZCBhdHRyaWJ1dGUgbmFtZSBcIicrcisnXCIuJyk7dmFyIG49dFtyXTtnb29nLmlzRGVmQW5kTm90TnVsbChuKSYmKG8rPVwiIFwiK2dvb2cuaHRtbC5TYWZlSHRtbC5nZXRBdHRyTmFtZUFuZFZhbHVlXyhlLHIsbikpfXJldHVybiBvfSxnb29nLmh0bWwuU2FmZUh0bWwuY29tYmluZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oZSx0LG8pe3ZhciByLG49e307Zm9yKHIgaW4gZSlnb29nLmFzc2VydHMuYXNzZXJ0KHIudG9Mb3dlckNhc2UoKT09cixcIk11c3QgYmUgbG93ZXIgY2FzZVwiKSxuW3JdPWVbcl07Zm9yKHIgaW4gdClnb29nLmFzc2VydHMuYXNzZXJ0KHIudG9Mb3dlckNhc2UoKT09cixcIk11c3QgYmUgbG93ZXIgY2FzZVwiKSxuW3JdPXRbcl07Zm9yKHIgaW4gbyl7dmFyIHM9ci50b0xvd2VyQ2FzZSgpO2lmKHMgaW4gZSl0aHJvdyBFcnJvcignQ2Fubm90IG92ZXJyaWRlIFwiJytzKydcIiBhdHRyaWJ1dGUsIGdvdCBcIicrcisnXCIgd2l0aCB2YWx1ZSBcIicrb1tyXSsnXCInKTtzIGluIHQmJmRlbGV0ZSBuW3NdLG5bcl09b1tyXX1yZXR1cm4gbn0sZ29vZy5odG1sLlNhZmVIdG1sLkRPQ1RZUEVfSFRNTD1nb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShcIjwhRE9DVFlQRSBodG1sPlwiLGdvb2cuaTE4bi5iaWRpLkRpci5ORVVUUkFMKSxnb29nLmh0bWwuU2FmZUh0bWwuRU1QVFk9Z29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoXCJcIixnb29nLmkxOG4uYmlkaS5EaXIuTkVVVFJBTCksZ29vZy5odG1sLlNhZmVIdG1sLkJSPWdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiPGJyPlwiLGdvb2cuaTE4bi5iaWRpLkRpci5ORVVUUkFMKSxnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnM9e30sZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVIdG1sRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSksXCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvblwiKSxnb29nLmFzc2VydHMuYXNzZXJ0KCFnb29nLnN0cmluZy5pbnRlcm5hbC5pc0VtcHR5T3JXaGl0ZXNwYWNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSksXCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb25cIiksZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UodCxvfHxudWxsKX0sZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVTY3JpcHRGcm9tU3RyaW5nS25vd25Ub1NhdGlzZnlUeXBlQ29udHJhY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSksXCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvblwiKSxnb29nLmFzc2VydHMuYXNzZXJ0KCFnb29nLnN0cmluZy5pbnRlcm5hbC5pc0VtcHR5T3JXaGl0ZXNwYWNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSksXCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb25cIiksZ29vZy5odG1sLlNhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKHQpfSxnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMuc2FmZVN0eWxlRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpLFwibXVzdCBwcm92aWRlIGp1c3RpZmljYXRpb25cIiksZ29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSkpLFwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uXCIpLGdvb2cuaHRtbC5TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UodCl9LGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlU3R5bGVTaGVldEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0U3RyaW5nKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSxcIm11c3QgcHJvdmlkZSBqdXN0aWZpY2F0aW9uXCIpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpKSxcIm11c3QgcHJvdmlkZSBub24tZW1wdHkganVzdGlmaWNhdGlvblwiKSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KX0sZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVVcmxGcm9tU3RyaW5nS25vd25Ub1NhdGlzZnlUeXBlQ29udHJhY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSksXCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvblwiKSxnb29nLmFzc2VydHMuYXNzZXJ0KCFnb29nLnN0cmluZy5pbnRlcm5hbC5pc0VtcHR5T3JXaGl0ZXNwYWNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSksXCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb25cIiksZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKHQpfSxnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMudHJ1c3RlZFJlc291cmNlVXJsRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpLFwibXVzdCBwcm92aWRlIGp1c3RpZmljYXRpb25cIiksZ29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSkpLFwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uXCIpLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UodCl9LGdvb2cuZG9tLnNhZmU9e30sZ29vZy5kb20uc2FmZS5JbnNlcnRBZGphY2VudEh0bWxQb3NpdGlvbj17QUZURVJCRUdJTjpcImFmdGVyYmVnaW5cIixBRlRFUkVORDpcImFmdGVyZW5kXCIsQkVGT1JFQkVHSU46XCJiZWZvcmViZWdpblwiLEJFRk9SRUVORDpcImJlZm9yZWVuZFwifSxnb29nLmRvbS5zYWZlLmluc2VydEFkamFjZW50SHRtbD1mdW5jdGlvbihlLHQsbyl7ZS5pbnNlcnRBZGphY2VudEhUTUwodCxnb29nLmh0bWwuU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwobykpfSxnb29nLmRvbS5zYWZlLlNFVF9JTk5FUl9IVE1MX0RJU0FMTE9XRURfVEFHU189e01BVEg6ITAsU0NSSVBUOiEwLFNUWUxFOiEwLFNWRzohMCxURU1QTEFURTohMH0sZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfPWdvb2cuZnVuY3Rpb25zLmNhY2hlUmV0dXJuVmFsdWUoKGZ1bmN0aW9uKCl7aWYoZ29vZy5ERUJVRyYmXCJ1bmRlZmluZWRcIj09dHlwZW9mIGRvY3VtZW50KXJldHVybiExO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3JldHVybiB0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLGUuYXBwZW5kQ2hpbGQodCksIShnb29nLkRFQlVHJiYhZS5maXJzdENoaWxkfHwodD1lLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCxlLmlubmVySFRNTD1nb29nLmh0bWwuU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwoZ29vZy5odG1sLlNhZmVIdG1sLkVNUFRZKSx0LnBhcmVudEVsZW1lbnQpKX0pKSxnb29nLmRvbS5zYWZlLnVuc2FmZVNldElubmVySHRtbERvTm90VXNlT3JFbHNlPWZ1bmN0aW9uKGUsdCl7aWYoZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfKCkpZm9yKDtlLmxhc3RDaGlsZDspZS5yZW1vdmVDaGlsZChlLmxhc3RDaGlsZCk7ZS5pbm5lckhUTUw9Z29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpfSxnb29nLmRvbS5zYWZlLnNldElubmVySHRtbD1mdW5jdGlvbihlLHQpe2lmKGdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyl7dmFyIG89ZS50YWdOYW1lLnRvVXBwZXJDYXNlKCk7aWYoZ29vZy5kb20uc2FmZS5TRVRfSU5ORVJfSFRNTF9ESVNBTExPV0VEX1RBR1NfW29dKXRocm93IEVycm9yKFwiZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWwgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGNvbnRlbnQgb2YgXCIrZS50YWdOYW1lK1wiLlwiKX1nb29nLmRvbS5zYWZlLnVuc2FmZVNldElubmVySHRtbERvTm90VXNlT3JFbHNlKGUsdCl9LGdvb2cuZG9tLnNhZmUuc2V0T3V0ZXJIdG1sPWZ1bmN0aW9uKGUsdCl7ZS5vdXRlckhUTUw9Z29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpfSxnb29nLmRvbS5zYWZlLnNldEZvcm1FbGVtZW50QWN0aW9uPWZ1bmN0aW9uKGUsdCl7dD10IGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/dDpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0KSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEZvcm1FbGVtZW50KGUpLmFjdGlvbj1nb29nLmh0bWwuU2FmZVVybC51bndyYXBUcnVzdGVkVVJMKHQpfSxnb29nLmRvbS5zYWZlLnNldEJ1dHRvbkZvcm1BY3Rpb249ZnVuY3Rpb24oZSx0KXt0PXQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD90Omdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKHQpLGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MQnV0dG9uRWxlbWVudChlKS5mb3JtQWN0aW9uPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0SW5wdXRGb3JtQWN0aW9uPWZ1bmN0aW9uKGUsdCl7dD10IGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/dDpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0KSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElucHV0RWxlbWVudChlKS5mb3JtQWN0aW9uPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0U3R5bGU9ZnVuY3Rpb24oZSx0KXtlLnN0eWxlLmNzc1RleHQ9Z29vZy5odG1sLlNhZmVTdHlsZS51bndyYXAodCl9LGdvb2cuZG9tLnNhZmUuZG9jdW1lbnRXcml0ZT1mdW5jdGlvbihlLHQpe2Uud3JpdGUoZ29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpKX0sZ29vZy5kb20uc2FmZS5zZXRBbmNob3JIcmVmPWZ1bmN0aW9uKGUsdCl7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxBbmNob3JFbGVtZW50KGUpLHQ9dCBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsP3Q6Z29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQodCksZS5ocmVmPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0SW1hZ2VTcmM9ZnVuY3Rpb24oZSx0KXtpZihnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEltYWdlRWxlbWVudChlKSwhKHQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBvPS9eZGF0YTppbWFnZVxcLy9pLnRlc3QodCk7dD1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0LG8pfWUuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0QXVkaW9TcmM9ZnVuY3Rpb24oZSx0KXtpZihnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEF1ZGlvRWxlbWVudChlKSwhKHQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBvPS9eZGF0YTphdWRpb1xcLy9pLnRlc3QodCk7dD1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0LG8pfWUuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0VmlkZW9TcmM9ZnVuY3Rpb24oZSx0KXtpZihnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFZpZGVvRWxlbWVudChlKSwhKHQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBvPS9eZGF0YTp2aWRlb1xcLy9pLnRlc3QodCk7dD1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0LG8pfWUuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0RW1iZWRTcmM9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEVtYmVkRWxlbWVudChlKSxlLnNyYz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcFRydXN0ZWRTY3JpcHRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0RnJhbWVTcmM9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEZyYW1lRWxlbWVudChlKSxlLnNyYz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0SWZyYW1lU3JjPWZ1bmN0aW9uKGUsdCl7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxJRnJhbWVFbGVtZW50KGUpLGUuc3JjPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFVSTCh0KX0sZ29vZy5kb20uc2FmZS5zZXRJZnJhbWVTcmNkb2M9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElGcmFtZUVsZW1lbnQoZSksZS5zcmNkb2M9Z29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpfSxnb29nLmRvbS5zYWZlLnNldExpbmtIcmVmQW5kUmVsPWZ1bmN0aW9uKGUsdCxvKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTExpbmtFbGVtZW50KGUpLGUucmVsPW8sZ29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlQ29udGFpbnMobyxcInN0eWxlc2hlZXRcIik/KGdvb2cuYXNzZXJ0cy5hc3NlcnQodCBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwsJ1VSTCBtdXN0IGJlIFRydXN0ZWRSZXNvdXJjZVVybCBiZWNhdXNlIFwicmVsXCIgY29udGFpbnMgXCJzdHlsZXNoZWV0XCInKSxlLmhyZWY9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkVVJMKHQpKTplLmhyZWY9dCBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmw/Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkVVJMKHQpOnQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9nb29nLmh0bWwuU2FmZVVybC51bndyYXBUcnVzdGVkVVJMKHQpOmdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwoZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQodCkpfSxnb29nLmRvbS5zYWZlLnNldE9iamVjdERhdGE9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTE9iamVjdEVsZW1lbnQoZSksZS5kYXRhPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFNjcmlwdFVSTCh0KX0sZ29vZy5kb20uc2FmZS5zZXRTY3JpcHRTcmM9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFNjcmlwdEVsZW1lbnQoZSksZS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKHQpLCh0PWdvb2cuZ2V0U2NyaXB0Tm9uY2UoKSkmJmUuc2V0QXR0cmlidXRlKFwibm9uY2VcIix0KX0sZ29vZy5kb20uc2FmZS5zZXRTY3JpcHRDb250ZW50PWZ1bmN0aW9uKGUsdCl7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxTY3JpcHRFbGVtZW50KGUpLGUudGV4dD1nb29nLmh0bWwuU2FmZVNjcmlwdC51bndyYXBUcnVzdGVkU2NyaXB0KHQpLCh0PWdvb2cuZ2V0U2NyaXB0Tm9uY2UoKSkmJmUuc2V0QXR0cmlidXRlKFwibm9uY2VcIix0KX0sZ29vZy5kb20uc2FmZS5zZXRMb2NhdGlvbkhyZWY9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzTG9jYXRpb24oZSksdD10IGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/dDpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0KSxlLmhyZWY9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwVHJ1c3RlZFVSTCh0KX0sZ29vZy5kb20uc2FmZS5hc3NpZ25Mb2NhdGlvbj1mdW5jdGlvbihlLHQpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbihlKSx0PXQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD90Omdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKHQpLGUuYXNzaWduKGdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCkpfSxnb29nLmRvbS5zYWZlLnJlcGxhY2VMb2NhdGlvbj1mdW5jdGlvbihlLHQpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbihlKSx0PXQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD90Omdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKHQpLGUucmVwbGFjZShnb29nLmh0bWwuU2FmZVVybC51bndyYXBUcnVzdGVkVVJMKHQpKX0sZ29vZy5kb20uc2FmZS5vcGVuSW5XaW5kb3c9ZnVuY3Rpb24oZSx0LG8scixuKXtyZXR1cm4gZT1lIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/ZTpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChlKSwodHx8Z29vZy5nbG9iYWwpLm9wZW4oZ29vZy5odG1sLlNhZmVVcmwudW53cmFwVHJ1c3RlZFVSTChlKSxvP2dvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChvKTpcIlwiLHIsbil9LGdvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nSHRtbD1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmRvbS5zYWZlLnBhcnNlRnJvbVN0cmluZyhlLHQsXCJ0ZXh0L2h0bWxcIil9LGdvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZS5wYXJzZUZyb21TdHJpbmcoZ29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpLG8pfSxnb29nLmRvbS5zYWZlLmNyZWF0ZUltYWdlRnJvbUJsb2I9ZnVuY3Rpb24oZSl7aWYoIS9eaW1hZ2VcXC8uKi9nLnRlc3QoZS50eXBlKSl0aHJvdyBFcnJvcihcImdvb2cuZG9tLnNhZmUuY3JlYXRlSW1hZ2VGcm9tQmxvYiBvbmx5IGFjY2VwdHMgTUlNRSB0eXBlIGltYWdlLy4qLlwiKTt2YXIgdD1nb29nLmdsb2JhbC5VUkwuY3JlYXRlT2JqZWN0VVJMKGUpO3JldHVybihlPW5ldyBnb29nLmdsb2JhbC5JbWFnZSkub25sb2FkPWZ1bmN0aW9uKCl7Z29vZy5nbG9iYWwuVVJMLnJldm9rZU9iamVjdFVSTCh0KX0sZ29vZy5kb20uc2FmZS5zZXRJbWFnZVNyYyhlLGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlVXJsRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0KGdvb2cuc3RyaW5nLkNvbnN0LmZyb20oXCJJbWFnZSBibG9iIFVSTC5cIiksdCkpLGV9LGdvb2cuc3RyaW5nLkRFVEVDVF9ET1VCTEVfRVNDQVBJTkc9ITEsZ29vZy5zdHJpbmcuRk9SQ0VfTk9OX0RPTV9IVE1MX1VORVNDQVBJTkc9ITEsZ29vZy5zdHJpbmcuVW5pY29kZT17TkJTUDpcIsKgXCJ9LGdvb2cuc3RyaW5nLnN0YXJ0c1dpdGg9Z29vZy5zdHJpbmcuaW50ZXJuYWwuc3RhcnRzV2l0aCxnb29nLnN0cmluZy5lbmRzV2l0aD1nb29nLnN0cmluZy5pbnRlcm5hbC5lbmRzV2l0aCxnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGgsZ29vZy5zdHJpbmcuY2FzZUluc2Vuc2l0aXZlRW5kc1dpdGg9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlRW5kc1dpdGgsZ29vZy5zdHJpbmcuY2FzZUluc2Vuc2l0aXZlRXF1YWxzPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUVxdWFscyxnb29nLnN0cmluZy5zdWJzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPWUuc3BsaXQoXCIlc1wiKSxyPVwiXCIsbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7bi5sZW5ndGgmJjE8by5sZW5ndGg7KXIrPW8uc2hpZnQoKStuLnNoaWZ0KCk7cmV0dXJuIHIrby5qb2luKFwiJXNcIil9LGdvb2cuc3RyaW5nLmNvbGxhcHNlV2hpdGVzcGFjZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFxzXFx4YTBdKy9nLFwiIFwiKS5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLFwiXCIpfSxnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlPWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UsZ29vZy5zdHJpbmcuaXNFbXB0eVN0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gMD09ZS5sZW5ndGh9LGdvb2cuc3RyaW5nLmlzRW1wdHk9Z29vZy5zdHJpbmcuaXNFbXB0eU9yV2hpdGVzcGFjZSxnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlU2FmZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5zdHJpbmcuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5tYWtlU2FmZShlKSl9LGdvb2cuc3RyaW5nLmlzRW1wdHlTYWZlPWdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2VTYWZlLGdvb2cuc3RyaW5nLmlzQnJlYWtpbmdXaGl0ZXNwYWNlPWZ1bmN0aW9uKGUpe3JldHVybiEvW15cXHRcXG5cXHIgXS8udGVzdChlKX0sZ29vZy5zdHJpbmcuaXNBbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4hL1teYS16QS1aXS8udGVzdChlKX0sZ29vZy5zdHJpbmcuaXNOdW1lcmljPWZ1bmN0aW9uKGUpe3JldHVybiEvW14wLTldLy50ZXN0KGUpfSxnb29nLnN0cmluZy5pc0FscGhhTnVtZXJpYz1mdW5jdGlvbihlKXtyZXR1cm4hL1teYS16QS1aMC05XS8udGVzdChlKX0sZ29vZy5zdHJpbmcuaXNTcGFjZT1mdW5jdGlvbihlKXtyZXR1cm5cIiBcIj09ZX0sZ29vZy5zdHJpbmcuaXNVbmljb2RlQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4gMT09ZS5sZW5ndGgmJlwiIFwiPD1lJiZcIn5cIj49ZXx8XCLCgFwiPD1lJiZcIu+/vVwiPj1lfSxnb29nLnN0cmluZy5zdHJpcE5ld2xpbmVzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhcXHJcXG58XFxyfFxcbikrL2csXCIgXCIpfSxnb29nLnN0cmluZy5jYW5vbmljYWxpemVOZXdsaW5lcz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC8oXFxyXFxufFxccnxcXG4pL2csXCJcXG5cIil9LGdvb2cuc3RyaW5nLm5vcm1hbGl6ZVdoaXRlc3BhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXFx4YTB8XFxzL2csXCIgXCIpfSxnb29nLnN0cmluZy5ub3JtYWxpemVTcGFjZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXFx4YTB8WyBcXHRdKy9nLFwiIFwiKX0sZ29vZy5zdHJpbmcuY29sbGFwc2VCcmVha2luZ1NwYWNlcz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFx0XFxyXFxuIF0rL2csXCIgXCIpLnJlcGxhY2UoL15bXFx0XFxyXFxuIF0rfFtcXHRcXHJcXG4gXSskL2csXCJcIil9LGdvb2cuc3RyaW5nLnRyaW09Z29vZy5zdHJpbmcuaW50ZXJuYWwudHJpbSxnb29nLnN0cmluZy50cmltTGVmdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9eW1xcc1xceGEwXSsvLFwiXCIpfSxnb29nLnN0cmluZy50cmltUmlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvW1xcc1xceGEwXSskLyxcIlwiKX0sZ29vZy5zdHJpbmcuY2FzZUluc2Vuc2l0aXZlQ29tcGFyZT1nb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb21wYXJlLGdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV89ZnVuY3Rpb24oZSx0LG8pe2lmKGU9PXQpcmV0dXJuIDA7aWYoIWUpcmV0dXJuLTE7aWYoIXQpcmV0dXJuIDE7Zm9yKHZhciByPWUudG9Mb3dlckNhc2UoKS5tYXRjaChvKSxuPXQudG9Mb3dlckNhc2UoKS5tYXRjaChvKSxzPU1hdGgubWluKHIubGVuZ3RoLG4ubGVuZ3RoKSxpPTA7aTxzO2krKyl7bz1yW2ldO3ZhciBhPW5baV07aWYobyE9YSlyZXR1cm4gZT1wYXJzZUludChvLDEwKSwhaXNOYU4oZSkmJih0PXBhcnNlSW50KGEsMTApLCFpc05hTih0KSYmZS10KT9lLXQ6bzxhPy0xOjF9cmV0dXJuIHIubGVuZ3RoIT1uLmxlbmd0aD9yLmxlbmd0aC1uLmxlbmd0aDplPHQ/LTE6MX0sZ29vZy5zdHJpbmcuaW50QXdhcmVDb21wYXJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV8oZSx0LC9cXGQrfFxcRCsvZyl9LGdvb2cuc3RyaW5nLmZsb2F0QXdhcmVDb21wYXJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV8oZSx0LC9cXGQrfFxcLlxcZCt8XFxEKy9nKX0sZ29vZy5zdHJpbmcubnVtZXJhdGVDb21wYXJlPWdvb2cuc3RyaW5nLmZsb2F0QXdhcmVDb21wYXJlLGdvb2cuc3RyaW5nLnVybEVuY29kZT1mdW5jdGlvbihlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhlKSl9LGdvb2cuc3RyaW5nLnVybERlY29kZT1mdW5jdGlvbihlKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGUucmVwbGFjZSgvXFwrL2csXCIgXCIpKX0sZ29vZy5zdHJpbmcubmV3TGluZVRvQnI9Z29vZy5zdHJpbmcuaW50ZXJuYWwubmV3TGluZVRvQnIsZ29vZy5zdHJpbmcuaHRtbEVzY2FwZT1mdW5jdGlvbihlLHQpe3JldHVybiBlPWdvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoZSx0KSxnb29nLnN0cmluZy5ERVRFQ1RfRE9VQkxFX0VTQ0FQSU5HJiYoZT1lLnJlcGxhY2UoZ29vZy5zdHJpbmcuRV9SRV8sXCImIzEwMTtcIikpLGV9LGdvb2cuc3RyaW5nLkVfUkVfPS9lL2csZ29vZy5zdHJpbmcudW5lc2NhcGVFbnRpdGllcz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5zdHJpbmcuY29udGFpbnMoZSxcIiZcIik/IWdvb2cuc3RyaW5nLkZPUkNFX05PTl9ET01fSFRNTF9VTkVTQ0FQSU5HJiZcImRvY3VtZW50XCJpbiBnb29nLmdsb2JhbD9nb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzVXNpbmdEb21fKGUpOmdvb2cuc3RyaW5nLnVuZXNjYXBlUHVyZVhtbEVudGl0aWVzXyhlKTplfSxnb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzV2l0aERvY3VtZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuc3RyaW5nLmNvbnRhaW5zKGUsXCImXCIpP2dvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXNVc2luZ0RvbV8oZSx0KTplfSxnb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzVXNpbmdEb21fPWZ1bmN0aW9uKGUsdCl7dmFyIG89e1wiJmFtcDtcIjpcIiZcIixcIiZsdDtcIjpcIjxcIixcIiZndDtcIjpcIj5cIixcIiZxdW90O1wiOidcIid9LHI9dD90LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik6Z29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtyZXR1cm4gZS5yZXBsYWNlKGdvb2cuc3RyaW5nLkhUTUxfRU5USVRZX1BBVFRFUk5fLChmdW5jdGlvbihlLHQpe3ZhciBuPW9bZV07cmV0dXJuIG58fChcIiNcIj09dC5jaGFyQXQoMCkmJih0PU51bWJlcihcIjBcIit0LnN1YnN0cigxKSksaXNOYU4odCl8fChuPVN0cmluZy5mcm9tQ2hhckNvZGUodCkpKSxufHwoZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWwocixnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMuc2FmZUh0bWxGcm9tU3RyaW5nS25vd25Ub1NhdGlzZnlUeXBlQ29udHJhY3QoZ29vZy5zdHJpbmcuQ29uc3QuZnJvbShcIlNpbmdsZSBIVE1MIGVudGl0eS5cIiksZStcIiBcIikpLG49ci5maXJzdENoaWxkLm5vZGVWYWx1ZS5zbGljZSgwLC0xKSksb1tlXT1uKX0pKX0sZ29vZy5zdHJpbmcudW5lc2NhcGVQdXJlWG1sRW50aXRpZXNfPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyYoW147XSspOy9nLChmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlXCJhbXBcIjpyZXR1cm5cIiZcIjtjYXNlXCJsdFwiOnJldHVyblwiPFwiO2Nhc2VcImd0XCI6cmV0dXJuXCI+XCI7Y2FzZVwicXVvdFwiOnJldHVybidcIic7ZGVmYXVsdDpyZXR1cm5cIiNcIiE9dC5jaGFyQXQoMCl8fCh0PU51bWJlcihcIjBcIit0LnN1YnN0cigxKSksaXNOYU4odCkpP2U6U3RyaW5nLmZyb21DaGFyQ29kZSh0KX19KSl9LGdvb2cuc3RyaW5nLkhUTUxfRU5USVRZX1BBVFRFUk5fPS8mKFteO1xcczwmXSspOz8vZyxnb29nLnN0cmluZy53aGl0ZXNwYWNlRXNjYXBlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuc3RyaW5nLm5ld0xpbmVUb0JyKGUucmVwbGFjZSgvICAvZyxcIiAmIzE2MDtcIiksdCl9LGdvb2cuc3RyaW5nLnByZXNlcnZlU3BhY2VzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhefFtcXG4gXSkgL2csXCIkMVwiK2dvb2cuc3RyaW5nLlVuaWNvZGUuTkJTUCl9LGdvb2cuc3RyaW5nLnN0cmlwUXVvdGVzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPXQubGVuZ3RoLHI9MDtyPG87cisrKXt2YXIgbj0xPT1vP3Q6dC5jaGFyQXQocik7aWYoZS5jaGFyQXQoMCk9PW4mJmUuY2hhckF0KGUubGVuZ3RoLTEpPT1uKXJldHVybiBlLnN1YnN0cmluZygxLGUubGVuZ3RoLTEpfXJldHVybiBlfSxnb29nLnN0cmluZy50cnVuY2F0ZT1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIG8mJihlPWdvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXMoZSkpLGUubGVuZ3RoPnQmJihlPWUuc3Vic3RyaW5nKDAsdC0zKStcIi4uLlwiKSxvJiYoZT1nb29nLnN0cmluZy5odG1sRXNjYXBlKGUpKSxlfSxnb29nLnN0cmluZy50cnVuY2F0ZU1pZGRsZT1mdW5jdGlvbihlLHQsbyxyKXtpZihvJiYoZT1nb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzKGUpKSxyJiZlLmxlbmd0aD50KXtyPnQmJihyPXQpO3ZhciBuPWUubGVuZ3RoLXI7ZT1lLnN1YnN0cmluZygwLHQtcikrXCIuLi5cIitlLnN1YnN0cmluZyhuKX1lbHNlIGUubGVuZ3RoPnQmJihyPU1hdGguZmxvb3IodC8yKSxuPWUubGVuZ3RoLXIsZT1lLnN1YnN0cmluZygwLHIrdCUyKStcIi4uLlwiK2Uuc3Vic3RyaW5nKG4pKTtyZXR1cm4gbyYmKGU9Z29vZy5zdHJpbmcuaHRtbEVzY2FwZShlKSksZX0sZ29vZy5zdHJpbmcuc3BlY2lhbEVzY2FwZUNoYXJzXz17XCJcXDBcIjpcIlxcXFwwXCIsXCJcXGJcIjpcIlxcXFxiXCIsXCJcXGZcIjpcIlxcXFxmXCIsXCJcXG5cIjpcIlxcXFxuXCIsXCJcXHJcIjpcIlxcXFxyXCIsXCJcXHRcIjpcIlxcXFx0XCIsXCJcXHZcIjpcIlxcXFx4MEJcIiwnXCInOidcXFxcXCInLFwiXFxcXFwiOlwiXFxcXFxcXFxcIixcIjxcIjpcIlxcXFx1MDAzQ1wifSxnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlXz17XCInXCI6XCJcXFxcJ1wifSxnb29nLnN0cmluZy5xdW90ZT1mdW5jdGlvbihlKXtlPVN0cmluZyhlKTtmb3IodmFyIHQ9WydcIiddLG89MDtvPGUubGVuZ3RoO28rKyl7dmFyIHI9ZS5jaGFyQXQobyksbj1yLmNoYXJDb2RlQXQoMCk7dFtvKzFdPWdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc19bcl18fCgzMTxuJiYxMjc+bj9yOmdvb2cuc3RyaW5nLmVzY2FwZUNoYXIocikpfXJldHVybiB0LnB1c2goJ1wiJyksdC5qb2luKFwiXCIpfSxnb29nLnN0cmluZy5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG89MDtvPGUubGVuZ3RoO28rKyl0W29dPWdvb2cuc3RyaW5nLmVzY2FwZUNoYXIoZS5jaGFyQXQobykpO3JldHVybiB0LmpvaW4oXCJcIil9LGdvb2cuc3RyaW5nLmVzY2FwZUNoYXI9ZnVuY3Rpb24oZSl7aWYoZSBpbiBnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlXylyZXR1cm4gZ29vZy5zdHJpbmcuanNFc2NhcGVDYWNoZV9bZV07aWYoZSBpbiBnb29nLnN0cmluZy5zcGVjaWFsRXNjYXBlQ2hhcnNfKXJldHVybiBnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlX1tlXT1nb29nLnN0cmluZy5zcGVjaWFsRXNjYXBlQ2hhcnNfW2VdO3ZhciB0PWUuY2hhckNvZGVBdCgwKTtpZigzMTx0JiYxMjc+dCl2YXIgbz1lO2Vsc2UgMjU2PnQ/KG89XCJcXFxceFwiLCgxNj50fHwyNTY8dCkmJihvKz1cIjBcIikpOihvPVwiXFxcXHVcIiw0MDk2PnQmJihvKz1cIjBcIikpLG8rPXQudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfW2VdPW99LGdvb2cuc3RyaW5nLmNvbnRhaW5zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zLGdvb2cuc3RyaW5nLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zLGdvb2cuc3RyaW5nLmNvdW50T2Y9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmdD9lLnNwbGl0KHQpLmxlbmd0aC0xOjB9LGdvb2cuc3RyaW5nLnJlbW92ZUF0PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj1lO3JldHVybiAwPD10JiZ0PGUubGVuZ3RoJiYwPG8mJihyPWUuc3Vic3RyKDAsdCkrZS5zdWJzdHIodCtvLGUubGVuZ3RoLXQtbykpLHJ9LGdvb2cuc3RyaW5nLnJlbW92ZT1mdW5jdGlvbihlLHQpe3JldHVybiBlLnJlcGxhY2UodCxcIlwiKX0sZ29vZy5zdHJpbmcucmVtb3ZlQWxsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9bmV3IFJlZ0V4cChnb29nLnN0cmluZy5yZWdFeHBFc2NhcGUodCksXCJnXCIpLGUucmVwbGFjZSh0LFwiXCIpfSxnb29nLnN0cmluZy5yZXBsYWNlQWxsPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gdD1uZXcgUmVnRXhwKGdvb2cuc3RyaW5nLnJlZ0V4cEVzY2FwZSh0KSxcImdcIiksZS5yZXBsYWNlKHQsby5yZXBsYWNlKC9cXCQvZyxcIiQkJCRcIikpfSxnb29nLnN0cmluZy5yZWdFeHBFc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKC8oWy0oKVxcW1xcXXt9Kz8qLiRcXF58LDojPCFcXFxcXSkvZyxcIlxcXFwkMVwiKS5yZXBsYWNlKC9cXHgwOC9nLFwiXFxcXHgwOFwiKX0sZ29vZy5zdHJpbmcucmVwZWF0PVN0cmluZy5wcm90b3R5cGUucmVwZWF0P2Z1bmN0aW9uKGUsdCl7cmV0dXJuIGUucmVwZWF0KHQpfTpmdW5jdGlvbihlLHQpe3JldHVybiBBcnJheSh0KzEpLmpvaW4oZSl9LGdvb2cuc3RyaW5nLnBhZE51bWJlcj1mdW5jdGlvbihlLHQsbyl7cmV0dXJuLTE9PShvPShlPWdvb2cuaXNEZWYobyk/ZS50b0ZpeGVkKG8pOlN0cmluZyhlKSkuaW5kZXhPZihcIi5cIikpJiYobz1lLmxlbmd0aCksZ29vZy5zdHJpbmcucmVwZWF0KFwiMFwiLE1hdGgubWF4KDAsdC1vKSkrZX0sZ29vZy5zdHJpbmcubWFrZVNhZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/XCJcIjpTdHJpbmcoZSl9LGdvb2cuc3RyaW5nLmJ1aWxkU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKGFyZ3VtZW50cyxcIlwiKX0sZ29vZy5zdHJpbmcuZ2V0UmFuZG9tU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IoMjE0NzQ4MzY0OCpNYXRoLnJhbmRvbSgpKS50b1N0cmluZygzNikrTWF0aC5hYnMoTWF0aC5mbG9vcigyMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCkpXmdvb2cubm93KCkpLnRvU3RyaW5nKDM2KX0sZ29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVWZXJzaW9ucyxnb29nLnN0cmluZy5oYXNoQ29kZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxvPTA7bzxlLmxlbmd0aDsrK28pdD0zMSp0K2UuY2hhckNvZGVBdChvKT4+PjA7cmV0dXJuIHR9LGdvb2cuc3RyaW5nLnVuaXF1ZVN0cmluZ0NvdW50ZXJfPTIxNDc0ODM2NDgqTWF0aC5yYW5kb20oKXwwLGdvb2cuc3RyaW5nLmNyZWF0ZVVuaXF1ZVN0cmluZz1mdW5jdGlvbigpe3JldHVyblwiZ29vZ19cIitnb29nLnN0cmluZy51bmlxdWVTdHJpbmdDb3VudGVyXysrfSxnb29nLnN0cmluZy50b051bWJlcj1mdW5jdGlvbihlKXt2YXIgdD1OdW1iZXIoZSk7cmV0dXJuIDA9PXQmJmdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2UoZSk/TmFOOnR9LGdvb2cuc3RyaW5nLmlzTG93ZXJDYW1lbENhc2U9ZnVuY3Rpb24oZSl7cmV0dXJuL15bYS16XSsoW0EtWl1bYS16XSopKiQvLnRlc3QoZSl9LGdvb2cuc3RyaW5nLmlzVXBwZXJDYW1lbENhc2U9ZnVuY3Rpb24oZSl7cmV0dXJuL14oW0EtWl1bYS16XSopKyQvLnRlc3QoZSl9LGdvb2cuc3RyaW5nLnRvQ2FtZWxDYXNlPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZSgvXFwtKFthLXpdKS9nLChmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KSl9LGdvb2cuc3RyaW5nLnRvU2VsZWN0b3JDYXNlPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZSgvKFtBLVpdKS9nLFwiLSQxXCIpLnRvTG93ZXJDYXNlKCl9LGdvb2cuc3RyaW5nLnRvVGl0bGVDYXNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9Z29vZy5pc1N0cmluZyh0KT9nb29nLnN0cmluZy5yZWdFeHBFc2NhcGUodCk6XCJcXFxcc1wiLGUucmVwbGFjZShuZXcgUmVnRXhwKFwiKF5cIisodD9cInxbXCIrdCtcIl0rXCI6XCJcIikrXCIpKFthLXpdKVwiLFwiZ1wiKSwoZnVuY3Rpb24oZSx0LG8pe3JldHVybiB0K28udG9VcHBlckNhc2UoKX0pKX0sZ29vZy5zdHJpbmcuY2FwaXRhbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUuY2hhckF0KDApKS50b1VwcGVyQ2FzZSgpK1N0cmluZyhlLnN1YnN0cigxKSkudG9Mb3dlckNhc2UoKX0sZ29vZy5zdHJpbmcucGFyc2VJbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGlzRmluaXRlKGUpJiYoZT1TdHJpbmcoZSkpLGdvb2cuaXNTdHJpbmcoZSk/L15cXHMqLT8weC9pLnRlc3QoZSk/cGFyc2VJbnQoZSwxNik6cGFyc2VJbnQoZSwxMCk6TmFOfSxnb29nLnN0cmluZy5zcGxpdExpbWl0PWZ1bmN0aW9uKGUsdCxvKXtlPWUuc3BsaXQodCk7Zm9yKHZhciByPVtdOzA8byYmZS5sZW5ndGg7KXIucHVzaChlLnNoaWZ0KCkpLG8tLTtyZXR1cm4gZS5sZW5ndGgmJnIucHVzaChlLmpvaW4odCkpLHJ9LGdvb2cuc3RyaW5nLmxhc3RDb21wb25lbnQ9ZnVuY3Rpb24oZSx0KXtpZighdClyZXR1cm4gZTtcInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9W3RdKTtmb3IodmFyIG89LTEscj0wO3I8dC5sZW5ndGg7cisrKWlmKFwiXCIhPXRbcl0pe3ZhciBuPWUubGFzdEluZGV4T2YodFtyXSk7bj5vJiYobz1uKX1yZXR1cm4tMT09bz9lOmUuc2xpY2UobysxKX0sZ29vZy5zdHJpbmcuZWRpdERpc3RhbmNlPWZ1bmN0aW9uKGUsdCl7dmFyIG89W10scj1bXTtpZihlPT10KXJldHVybiAwO2lmKCFlLmxlbmd0aHx8IXQubGVuZ3RoKXJldHVybiBNYXRoLm1heChlLmxlbmd0aCx0Lmxlbmd0aCk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aCsxO24rKylvW25dPW47Zm9yKG49MDtuPGUubGVuZ3RoO24rKyl7clswXT1uKzE7Zm9yKHZhciBzPTA7czx0Lmxlbmd0aDtzKyspcltzKzFdPU1hdGgubWluKHJbc10rMSxvW3MrMV0rMSxvW3NdK051bWJlcihlW25dIT10W3NdKSk7Zm9yKHM9MDtzPG8ubGVuZ3RoO3MrKylvW3NdPXJbc119cmV0dXJuIHJbdC5sZW5ndGhdfSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZT17fSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc1ByZXN0bz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJQcmVzdG9cIil9LGdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzVHJpZGVudD1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJUcmlkZW50XCIpfHxnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJNU0lFXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0VkZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiRWRnZVwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuaXNXZWJLaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50SWdub3JlQ2FzZShcIldlYktpdFwiKSYmIWdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzRWRnZSgpfSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0dlY2tvPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkdlY2tvXCIpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuaXNXZWJLaXQoKSYmIWdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzVHJpZGVudCgpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuaXNFZGdlKCl9LGdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmdldFZlcnNpb249ZnVuY3Rpb24oKXt2YXIgZT1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50KCk7aWYoZSl7ZT1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZXh0cmFjdFZlcnNpb25UdXBsZXMoZSk7dmFyIHQsbz1nb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5nZXRFbmdpbmVUdXBsZV8oZSk7aWYobylyZXR1cm5cIkdlY2tvXCI9PW9bMF0/Z29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuZ2V0VmVyc2lvbkZvcktleV8oZSxcIkZpcmVmb3hcIik6b1sxXTtpZigoZT1lWzBdKSYmKHQ9ZVsyXSkmJih0PS9UcmlkZW50XFwvKFteXFxzO10rKS8uZXhlYyh0KSkpcmV0dXJuIHRbMV19cmV0dXJuXCJcIn0sZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuZ2V0RW5naW5lVHVwbGVfPWZ1bmN0aW9uKGUpe2lmKCFnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0VkZ2UoKSlyZXR1cm4gZVsxXTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG89ZVt0XTtpZihcIkVkZ2VcIj09b1swXSlyZXR1cm4gb319LGdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzVmVyc2lvbk9ySGlnaGVyPWZ1bmN0aW9uKGUpe3JldHVybiAwPD1nb29nLnN0cmluZy5jb21wYXJlVmVyc2lvbnMoZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuZ2V0VmVyc2lvbigpLGUpfSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5nZXRWZXJzaW9uRm9yS2V5Xz1mdW5jdGlvbihlLHQpe3JldHVybihlPWdvb2cuYXJyYXkuZmluZChlLChmdW5jdGlvbihlKXtyZXR1cm4gdD09ZVswXX0pKSkmJmVbMV18fFwiXCJ9LGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm09e30sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0FuZHJvaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiQW5kcm9pZFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwb2Q9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiaVBvZFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwaG9uZT1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJpUGhvbmVcIikmJiFnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJpUG9kXCIpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiaVBhZFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiaVBhZFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lvcz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSXBob25lKCl8fGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNJcGFkKCl8fGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNJcG9kKCl9LGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNNYWNpbnRvc2g9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiTWFjaW50b3NoXCIpfSxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzTGludXg9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiTGludXhcIil9LGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNXaW5kb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIldpbmRvd3NcIil9LGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNDaHJvbWVPUz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJDck9TXCIpfSxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQ2hyb21lY2FzdD1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJDcktleVwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0thaU9TPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2UoXCJLYWlPU1wiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0dvMlBob25lPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2UoXCJHQUZQXCIpfSxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmdldFZlcnNpb249ZnVuY3Rpb24oKXt2YXIgZT1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50KCksdD1cIlwiO3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzV2luZG93cygpP3Q9KGU9KHQ9L1dpbmRvd3MgKD86TlR8UGhvbmUpIChbMC05Ll0rKS8pLmV4ZWMoZSkpP2VbMV06XCIwLjBcIjpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSW9zKCk/dD0oZT0odD0vKD86aVBob25lfGlQb2R8aVBhZHxDUFUpXFxzK09TXFxzKyhcXFMrKS8pLmV4ZWMoZSkpJiZlWzFdLnJlcGxhY2UoL18vZyxcIi5cIik6Z29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc01hY2ludG9zaCgpP3Q9KGU9KHQ9L01hYyBPUyBYIChbMC05Xy5dKykvKS5leGVjKGUpKT9lWzFdLnJlcGxhY2UoL18vZyxcIi5cIik6XCIxMFwiOmdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNLYWlPUygpP3Q9KGU9KHQ9Lyg/OkthaU9TKVxcLyhcXFMrKS9pKS5leGVjKGUpKSYmZVsxXTpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQW5kcm9pZCgpP3Q9KGU9KHQ9L0FuZHJvaWRcXHMrKFteXFwpO10rKShcXCl8OykvKS5leGVjKGUpKSYmZVsxXTpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQ2hyb21lT1MoKSYmKHQ9KGU9KHQ9Lyg/OkNyT1NcXHMrKD86aTY4Nnx4ODZfNjQpXFxzKyhbMC05Ll0rKSkvKS5leGVjKGUpKSYmZVsxXSksdHx8XCJcIn0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc1ZlcnNpb25PckhpZ2hlcj1mdW5jdGlvbihlKXtyZXR1cm4gMDw9Z29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zKGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uZ2V0VmVyc2lvbigpLGUpfSxnb29nLnJlZmxlY3Q9e30sZ29vZy5yZWZsZWN0Lm9iamVjdD1mdW5jdGlvbihlLHQpe3JldHVybiB0fSxnb29nLnJlZmxlY3Qub2JqZWN0UHJvcGVydHk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZX0sZ29vZy5yZWZsZWN0LnNpbmtWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5yZWZsZWN0LnNpbmtWYWx1ZVtcIiBcIl0oZSksZX0sZ29vZy5yZWZsZWN0LnNpbmtWYWx1ZVtcIiBcIl09Z29vZy5udWxsRnVuY3Rpb24sZ29vZy5yZWZsZWN0LmNhbkFjY2Vzc1Byb3BlcnR5PWZ1bmN0aW9uKGUsdCl7dHJ5e3JldHVybiBnb29nLnJlZmxlY3Quc2lua1ZhbHVlKGVbdF0pLCEwfWNhdGNoKGUpe31yZXR1cm4hMX0sZ29vZy5yZWZsZWN0LmNhY2hlPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiByPXI/cih0KTp0LE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpP2Vbcl06ZVtyXT1vKHQpfSxnb29nLnVzZXJBZ2VudD17fSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfSUU9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX0VER0U9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX0dFQ0tPPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9XRUJLSVQ9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX01PQklMRV9XRUJLSVQ9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX09QRVJBPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9BTllfVkVSU0lPTj0hMSxnb29nLnVzZXJBZ2VudC5CUk9XU0VSX0tOT1dOXz1nb29nLnVzZXJBZ2VudC5BU1NVTUVfSUV8fGdvb2cudXNlckFnZW50LkFTU1VNRV9FREdFfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfR0VDS098fGdvb2cudXNlckFnZW50LkFTU1VNRV9NT0JJTEVfV0VCS0lUfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfV0VCS0lUfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfT1BFUkEsZ29vZy51c2VyQWdlbnQuZ2V0VXNlckFnZW50U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXRVc2VyQWdlbnQoKX0sZ29vZy51c2VyQWdlbnQuZ2V0TmF2aWdhdG9yVHlwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5nbG9iYWwubmF2aWdhdG9yfHxudWxsfSxnb29nLnVzZXJBZ2VudC5nZXROYXZpZ2F0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy51c2VyQWdlbnQuZ2V0TmF2aWdhdG9yVHlwZWQoKX0sZ29vZy51c2VyQWdlbnQuT1BFUkE9Z29vZy51c2VyQWdlbnQuQlJPV1NFUl9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX09QRVJBOmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhKCksZ29vZy51c2VyQWdlbnQuSUU9Z29vZy51c2VyQWdlbnQuQlJPV1NFUl9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lFOmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0lFKCksZ29vZy51c2VyQWdlbnQuRURHRT1nb29nLnVzZXJBZ2VudC5CUk9XU0VSX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfRURHRTpnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0VkZ2UoKSxnb29nLnVzZXJBZ2VudC5FREdFX09SX0lFPWdvb2cudXNlckFnZW50LkVER0V8fGdvb2cudXNlckFnZW50LklFLGdvb2cudXNlckFnZW50LkdFQ0tPPWdvb2cudXNlckFnZW50LkJST1dTRVJfS05PV05fP2dvb2cudXNlckFnZW50LkFTU1VNRV9HRUNLTzpnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0dlY2tvKCksZ29vZy51c2VyQWdlbnQuV0VCS0lUPWdvb2cudXNlckFnZW50LkJST1dTRVJfS05PV05fP2dvb2cudXNlckFnZW50LkFTU1VNRV9XRUJLSVR8fGdvb2cudXNlckFnZW50LkFTU1VNRV9NT0JJTEVfV0VCS0lUOmdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzV2ViS2l0KCksZ29vZy51c2VyQWdlbnQuaXNNb2JpbGVfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cudXNlckFnZW50LldFQktJVCYmZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiTW9iaWxlXCIpfSxnb29nLnVzZXJBZ2VudC5NT0JJTEU9Z29vZy51c2VyQWdlbnQuQVNTVU1FX01PQklMRV9XRUJLSVR8fGdvb2cudXNlckFnZW50LmlzTW9iaWxlXygpLGdvb2cudXNlckFnZW50LlNBRkFSST1nb29nLnVzZXJBZ2VudC5XRUJLSVQsZ29vZy51c2VyQWdlbnQuZGV0ZXJtaW5lUGxhdGZvcm1fPWZ1bmN0aW9uKCl7dmFyIGU9Z29vZy51c2VyQWdlbnQuZ2V0TmF2aWdhdG9yVHlwZWQoKTtyZXR1cm4gZSYmZS5wbGF0Zm9ybXx8XCJcIn0sZ29vZy51c2VyQWdlbnQuUExBVEZPUk09Z29vZy51c2VyQWdlbnQuZGV0ZXJtaW5lUGxhdGZvcm1fKCksZ29vZy51c2VyQWdlbnQuQVNTVU1FX01BQz0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfV0lORE9XUz0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfTElOVVg9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX1gxMT0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfQU5EUk9JRD0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfSVBIT05FPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9JUEFEPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9JUE9EPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9LQUlPUz0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfR08yUEhPTkU9ITEsZ29vZy51c2VyQWdlbnQuUExBVEZPUk1fS05PV05fPWdvb2cudXNlckFnZW50LkFTU1VNRV9NQUN8fGdvb2cudXNlckFnZW50LkFTU1VNRV9XSU5ET1dTfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfTElOVVh8fGdvb2cudXNlckFnZW50LkFTU1VNRV9YMTF8fGdvb2cudXNlckFnZW50LkFTU1VNRV9BTkRST0lEfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfSVBIT05FfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfSVBBRHx8Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQT0QsZ29vZy51c2VyQWdlbnQuTUFDPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfTUFDOmdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNNYWNpbnRvc2goKSxnb29nLnVzZXJBZ2VudC5XSU5ET1dTPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfV0lORE9XUzpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzV2luZG93cygpLGdvb2cudXNlckFnZW50LmlzTGVnYWN5TGludXhfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNMaW51eCgpfHxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQ2hyb21lT1MoKX0sZ29vZy51c2VyQWdlbnQuTElOVVg9Z29vZy51c2VyQWdlbnQuUExBVEZPUk1fS05PV05fP2dvb2cudXNlckFnZW50LkFTU1VNRV9MSU5VWDpnb29nLnVzZXJBZ2VudC5pc0xlZ2FjeUxpbnV4XygpLGdvb2cudXNlckFnZW50LmlzWDExXz1mdW5jdGlvbigpe3ZhciBlPWdvb2cudXNlckFnZW50LmdldE5hdmlnYXRvclR5cGVkKCk7cmV0dXJuISFlJiZnb29nLnN0cmluZy5jb250YWlucyhlLmFwcFZlcnNpb258fFwiXCIsXCJYMTFcIil9LGdvb2cudXNlckFnZW50LlgxMT1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX1gxMTpnb29nLnVzZXJBZ2VudC5pc1gxMV8oKSxnb29nLnVzZXJBZ2VudC5BTkRST0lEPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfQU5EUk9JRDpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQW5kcm9pZCgpLGdvb2cudXNlckFnZW50LklQSE9ORT1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQSE9ORTpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSXBob25lKCksZ29vZy51c2VyQWdlbnQuSVBBRD1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQQUQ6Z29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwYWQoKSxnb29nLnVzZXJBZ2VudC5JUE9EPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfSVBPRDpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSXBvZCgpLGdvb2cudXNlckFnZW50LklPUz1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQSE9ORXx8Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQQUR8fGdvb2cudXNlckFnZW50LkFTU1VNRV9JUE9EOmdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNJb3MoKSxnb29nLnVzZXJBZ2VudC5LQUlPUz1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0tBSU9TOmdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNLYWlPUygpLGdvb2cudXNlckFnZW50LkdPMlBIT05FPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfR08yUEhPTkU6Z29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0dvMlBob25lKCksZ29vZy51c2VyQWdlbnQuZGV0ZXJtaW5lVmVyc2lvbl89ZnVuY3Rpb24oKXt2YXIgZT1cIlwiLHQ9Z29vZy51c2VyQWdlbnQuZ2V0VmVyc2lvblJlZ2V4UmVzdWx0XygpO3JldHVybiB0JiYoZT10P3RbMV06XCJcIiksZ29vZy51c2VyQWdlbnQuSUUmJm51bGwhPSh0PWdvb2cudXNlckFnZW50LmdldERvY3VtZW50TW9kZV8oKSkmJnQ+cGFyc2VGbG9hdChlKT9TdHJpbmcodCk6ZX0sZ29vZy51c2VyQWdlbnQuZ2V0VmVyc2lvblJlZ2V4UmVzdWx0Xz1mdW5jdGlvbigpe3ZhciBlPWdvb2cudXNlckFnZW50LmdldFVzZXJBZ2VudFN0cmluZygpO3JldHVybiBnb29nLnVzZXJBZ2VudC5HRUNLTz8vcnY6KFteXFwpO10rKShcXCl8OykvLmV4ZWMoZSk6Z29vZy51c2VyQWdlbnQuRURHRT8vRWRnZVxcLyhbXFxkXFwuXSspLy5leGVjKGUpOmdvb2cudXNlckFnZW50LklFPy9cXGIoPzpNU0lFfHJ2KVs6IF0oW15cXCk7XSspKFxcKXw7KS8uZXhlYyhlKTpnb29nLnVzZXJBZ2VudC5XRUJLSVQ/L1dlYktpdFxcLyhcXFMrKS8uZXhlYyhlKTpnb29nLnVzZXJBZ2VudC5PUEVSQT8vKD86VmVyc2lvbilbIFxcL10/KFxcUyspLy5leGVjKGUpOnZvaWQgMH0sZ29vZy51c2VyQWdlbnQuZ2V0RG9jdW1lbnRNb2RlXz1mdW5jdGlvbigpe3ZhciBlPWdvb2cuZ2xvYmFsLmRvY3VtZW50O3JldHVybiBlP2UuZG9jdW1lbnRNb2RlOnZvaWQgMH0sZ29vZy51c2VyQWdlbnQuVkVSU0lPTj1nb29nLnVzZXJBZ2VudC5kZXRlcm1pbmVWZXJzaW9uXygpLGdvb2cudXNlckFnZW50LmNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zKGUsdCl9LGdvb2cudXNlckFnZW50LmlzVmVyc2lvbk9ySGlnaGVyQ2FjaGVfPXt9LGdvb2cudXNlckFnZW50LmlzVmVyc2lvbk9ySGlnaGVyPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLnVzZXJBZ2VudC5BU1NVTUVfQU5ZX1ZFUlNJT058fGdvb2cucmVmbGVjdC5jYWNoZShnb29nLnVzZXJBZ2VudC5pc1ZlcnNpb25PckhpZ2hlckNhY2hlXyxlLChmdW5jdGlvbigpe3JldHVybiAwPD1nb29nLnN0cmluZy5jb21wYXJlVmVyc2lvbnMoZ29vZy51c2VyQWdlbnQuVkVSU0lPTixlKX0pKX0sZ29vZy51c2VyQWdlbnQuaXNWZXJzaW9uPWdvb2cudXNlckFnZW50LmlzVmVyc2lvbk9ySGlnaGVyLGdvb2cudXNlckFnZW50LmlzRG9jdW1lbnRNb2RlT3JIaWdoZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIE51bWJlcihnb29nLnVzZXJBZ2VudC5ET0NVTUVOVF9NT0RFKT49ZX0sZ29vZy51c2VyQWdlbnQuaXNEb2N1bWVudE1vZGU9Z29vZy51c2VyQWdlbnQuaXNEb2N1bWVudE1vZGVPckhpZ2hlcixnb29nLnVzZXJBZ2VudC5ET0NVTUVOVF9NT0RFPWZ1bmN0aW9uKCl7aWYoZ29vZy5nbG9iYWwuZG9jdW1lbnQmJmdvb2cudXNlckFnZW50LklFKXJldHVybiBnb29nLnVzZXJBZ2VudC5nZXREb2N1bWVudE1vZGVfKCl9KCksZ29vZy51c2VyQWdlbnQucHJvZHVjdD17fSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9GSVJFRk9YPSExLGdvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX0lQSE9ORT0hMSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9JUEFEPSExLGdvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX0FORFJPSUQ9ITEsZ29vZy51c2VyQWdlbnQucHJvZHVjdC5BU1NVTUVfQ0hST01FPSExLGdvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX1NBRkFSST0hMSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LlBST0RVQ1RfS05PV05fPWdvb2cudXNlckFnZW50LkFTU1VNRV9JRXx8Z29vZy51c2VyQWdlbnQuQVNTVU1FX0VER0V8fGdvb2cudXNlckFnZW50LkFTU1VNRV9PUEVSQXx8Z29vZy51c2VyQWdlbnQucHJvZHVjdC5BU1NVTUVfRklSRUZPWHx8Z29vZy51c2VyQWdlbnQucHJvZHVjdC5BU1NVTUVfSVBIT05FfHxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9JUEFEfHxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9BTkRST0lEfHxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9DSFJPTUV8fGdvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX1NBRkFSSSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0Lk9QRVJBPWdvb2cudXNlckFnZW50Lk9QRVJBLGdvb2cudXNlckFnZW50LnByb2R1Y3QuSUU9Z29vZy51c2VyQWdlbnQuSUUsZ29vZy51c2VyQWdlbnQucHJvZHVjdC5FREdFPWdvb2cudXNlckFnZW50LkVER0UsZ29vZy51c2VyQWdlbnQucHJvZHVjdC5GSVJFRk9YPWdvb2cudXNlckFnZW50LnByb2R1Y3QuUFJPRFVDVF9LTk9XTl8/Z29vZy51c2VyQWdlbnQucHJvZHVjdC5BU1NVTUVfRklSRUZPWDpnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNGaXJlZm94KCksZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc0lwaG9uZU9ySXBvZF89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwaG9uZSgpfHxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSXBvZCgpfSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LklQSE9ORT1nb29nLnVzZXJBZ2VudC5wcm9kdWN0LlBST0RVQ1RfS05PV05fP2dvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX0lQSE9ORTpnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzSXBob25lT3JJcG9kXygpLGdvb2cudXNlckFnZW50LnByb2R1Y3QuSVBBRD1nb29nLnVzZXJBZ2VudC5wcm9kdWN0LlBST0RVQ1RfS05PV05fP2dvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX0lQQUQ6Z29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwYWQoKSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFORFJPSUQ9Z29vZy51c2VyQWdlbnQucHJvZHVjdC5QUk9EVUNUX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9BTkRST0lEOmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0FuZHJvaWRCcm93c2VyKCksZ29vZy51c2VyQWdlbnQucHJvZHVjdC5DSFJPTUU9Z29vZy51c2VyQWdlbnQucHJvZHVjdC5QUk9EVUNUX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9DSFJPTUU6Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQ2hyb21lKCksZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1NhZmFyaURlc2t0b3BfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc1NhZmFyaSgpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lvcygpfSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LlNBRkFSST1nb29nLnVzZXJBZ2VudC5wcm9kdWN0LlBST0RVQ1RfS05PV05fP2dvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX1NBRkFSSTpnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzU2FmYXJpRGVza3RvcF8oKSxnb29nLmNyeXB0LmJhc2U2ND17fSxnb29nLmNyeXB0LmJhc2U2NC5ERUZBVUxUX0FMUEhBQkVUX0NPTU1PTl89XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVwiLGdvb2cuY3J5cHQuYmFzZTY0LkVOQ09ERURfVkFMUz1nb29nLmNyeXB0LmJhc2U2NC5ERUZBVUxUX0FMUEhBQkVUX0NPTU1PTl8rXCIrLz1cIixnb29nLmNyeXB0LmJhc2U2NC5FTkNPREVEX1ZBTFNfV0VCU0FGRT1nb29nLmNyeXB0LmJhc2U2NC5ERUZBVUxUX0FMUEhBQkVUX0NPTU1PTl8rXCItXy5cIixnb29nLmNyeXB0LmJhc2U2NC5BbHBoYWJldD17REVGQVVMVDowLE5PX1BBRERJTkc6MSxXRUJTQUZFOjIsV0VCU0FGRV9ET1RfUEFERElORzozLFdFQlNBRkVfTk9fUEFERElORzo0fSxnb29nLmNyeXB0LmJhc2U2NC5wYWRkaW5nQ2hhcnNfPVwiPS5cIixnb29nLmNyeXB0LmJhc2U2NC5pc1BhZGRpbmdfPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLnN0cmluZy5jb250YWlucyhnb29nLmNyeXB0LmJhc2U2NC5wYWRkaW5nQ2hhcnNfLGUpfSxnb29nLmNyeXB0LmJhc2U2NC5ieXRlVG9DaGFyTWFwc189e307Z29vZy5jcnlwdC5iYXNlNjQuY2hhclRvQnl0ZU1hcF89bnVsbCxnb29nLmNyeXB0LmJhc2U2NC5BU1NVTUVfTkFUSVZFX1NVUFBPUlRfPWdvb2cudXNlckFnZW50LkdFQ0tPfHxnb29nLnVzZXJBZ2VudC5XRUJLSVQmJiFnb29nLnVzZXJBZ2VudC5wcm9kdWN0LlNBRkFSSXx8Z29vZy51c2VyQWdlbnQuT1BFUkEsZ29vZy5jcnlwdC5iYXNlNjQuSEFTX05BVElWRV9FTkNPREVfPWdvb2cuY3J5cHQuYmFzZTY0LkFTU1VNRV9OQVRJVkVfU1VQUE9SVF98fFwiZnVuY3Rpb25cIj09dHlwZW9mIGdvb2cuZ2xvYmFsLmJ0b2EsZ29vZy5jcnlwdC5iYXNlNjQuSEFTX05BVElWRV9ERUNPREVfPWdvb2cuY3J5cHQuYmFzZTY0LkFTU1VNRV9OQVRJVkVfU1VQUE9SVF98fCFnb29nLnVzZXJBZ2VudC5wcm9kdWN0LlNBRkFSSSYmIWdvb2cudXNlckFnZW50LklFJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBnb29nLmdsb2JhbC5hdG9iLGdvb2cuY3J5cHQuYmFzZTY0LmVuY29kZUJ5dGVBcnJheT1mdW5jdGlvbihlLHQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZ29vZy5pc0FycmF5TGlrZShlKSxcImVuY29kZUJ5dGVBcnJheSB0YWtlcyBhbiBhcnJheSBhcyBhIHBhcmFtZXRlclwiKSx2b2lkIDA9PT10JiYodD1nb29nLmNyeXB0LmJhc2U2NC5BbHBoYWJldC5ERUZBVUxUKSxnb29nLmNyeXB0LmJhc2U2NC5pbml0XygpLHQ9Z29vZy5jcnlwdC5iYXNlNjQuYnl0ZVRvQ2hhck1hcHNfW3RdO2Zvcih2YXIgbz1bXSxyPTA7cjxlLmxlbmd0aDtyKz0zKXt2YXIgbj1lW3JdLHM9cisxPGUubGVuZ3RoLGk9cz9lW3IrMV06MCxhPXIrMjxlLmxlbmd0aCxnPWE/ZVtyKzJdOjAsbD1uPj4yO249KDMmbik8PDR8aT4+NCxpPSgxNSZpKTw8MnxnPj42LGcmPTYzLGF8fChnPTY0LHN8fChpPTY0KSksby5wdXNoKHRbbF0sdFtuXSx0W2ldfHxcIlwiLHRbZ118fFwiXCIpfXJldHVybiBvLmpvaW4oXCJcIil9LGdvb2cuY3J5cHQuYmFzZTY0LmVuY29kZVN0cmluZz1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmNyeXB0LmJhc2U2NC5IQVNfTkFUSVZFX0VOQ09ERV8mJiF0P2dvb2cuZ2xvYmFsLmJ0b2EoZSk6Z29vZy5jcnlwdC5iYXNlNjQuZW5jb2RlQnl0ZUFycmF5KGdvb2cuY3J5cHQuc3RyaW5nVG9CeXRlQXJyYXkoZSksdCl9LGdvb2cuY3J5cHQuYmFzZTY0LmRlY29kZVN0cmluZz1mdW5jdGlvbihlLHQpe2lmKGdvb2cuY3J5cHQuYmFzZTY0LkhBU19OQVRJVkVfREVDT0RFXyYmIXQpcmV0dXJuIGdvb2cuZ2xvYmFsLmF0b2IoZSk7dmFyIG89XCJcIjtyZXR1cm4gZ29vZy5jcnlwdC5iYXNlNjQuZGVjb2RlU3RyaW5nSW50ZXJuYWxfKGUsKGZ1bmN0aW9uKGUpe28rPVN0cmluZy5mcm9tQ2hhckNvZGUoZSl9KSksb30sZ29vZy5jcnlwdC5iYXNlNjQuZGVjb2RlU3RyaW5nVG9CeXRlQXJyYXk9ZnVuY3Rpb24oZSx0KXt2YXIgbz1bXTtyZXR1cm4gZ29vZy5jcnlwdC5iYXNlNjQuZGVjb2RlU3RyaW5nSW50ZXJuYWxfKGUsKGZ1bmN0aW9uKGUpe28ucHVzaChlKX0pKSxvfSxnb29nLmNyeXB0LmJhc2U2NC5kZWNvZGVTdHJpbmdUb1VpbnQ4QXJyYXk9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy51c2VyQWdlbnQuSUV8fGdvb2cudXNlckFnZW50LmlzVmVyc2lvbk9ySGlnaGVyKFwiMTBcIiksXCJCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzXCIpO3ZhciB0PWUubGVuZ3RoLG89Myp0LzQ7byUzP289TWF0aC5mbG9vcihvKTpnb29nLmNyeXB0LmJhc2U2NC5pc1BhZGRpbmdfKGVbdC0xXSkmJihvPWdvb2cuY3J5cHQuYmFzZTY0LmlzUGFkZGluZ18oZVt0LTJdKT9vLTI6by0xKTt2YXIgcj1uZXcgVWludDhBcnJheShvKSxuPTA7cmV0dXJuIGdvb2cuY3J5cHQuYmFzZTY0LmRlY29kZVN0cmluZ0ludGVybmFsXyhlLChmdW5jdGlvbihlKXtyW24rK109ZX0pKSxyLnN1YmFycmF5KDAsbil9LGdvb2cuY3J5cHQuYmFzZTY0LmRlY29kZVN0cmluZ0ludGVybmFsXz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8odCl7Zm9yKDtyPGUubGVuZ3RoOyl7dmFyIG89ZS5jaGFyQXQocisrKSxuPWdvb2cuY3J5cHQuYmFzZTY0LmNoYXJUb0J5dGVNYXBfW29dO2lmKG51bGwhPW4pcmV0dXJuIG47aWYoIWdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2UobykpdGhyb3cgRXJyb3IoXCJVbmtub3duIGJhc2U2NCBlbmNvZGluZyBhdCBjaGFyOiBcIitvKX1yZXR1cm4gdH1nb29nLmNyeXB0LmJhc2U2NC5pbml0XygpO2Zvcih2YXIgcj0wOzspe3ZhciBuPW8oLTEpLHM9bygwKSxpPW8oNjQpLGE9byg2NCk7aWYoNjQ9PT1hJiYtMT09PW4pYnJlYWs7dChuPDwyfHM+PjQpLDY0IT1pJiYodChzPDw0JjI0MHxpPj4yKSw2NCE9YSYmdChpPDw2JjE5MnxhKSl9fSxnb29nLmNyeXB0LmJhc2U2NC5pbml0Xz1mdW5jdGlvbigpe2lmKCFnb29nLmNyeXB0LmJhc2U2NC5jaGFyVG9CeXRlTWFwXyl7Z29vZy5jcnlwdC5iYXNlNjQuY2hhclRvQnl0ZU1hcF89e307Zm9yKHZhciBlPWdvb2cuY3J5cHQuYmFzZTY0LkRFRkFVTFRfQUxQSEFCRVRfQ09NTU9OXy5zcGxpdChcIlwiKSx0PVtcIisvPVwiLFwiKy9cIixcIi1fPVwiLFwiLV8uXCIsXCItX1wiXSxvPTA7NT5vO28rKyl7dmFyIHI9ZS5jb25jYXQodFtvXS5zcGxpdChcIlwiKSk7Z29vZy5jcnlwdC5iYXNlNjQuYnl0ZVRvQ2hhck1hcHNfW29dPXI7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBzPXJbbl0saT1nb29nLmNyeXB0LmJhc2U2NC5jaGFyVG9CeXRlTWFwX1tzXTt2b2lkIDA9PT1pP2dvb2cuY3J5cHQuYmFzZTY0LmNoYXJUb0J5dGVNYXBfW3NdPW46Z29vZy5hc3NlcnRzLmFzc2VydChpPT09bil9fX19LGpzcGIudXRpbHM9e30sanNwYi51dGlscy5zcGxpdDY0TG93PTAsanNwYi51dGlscy5zcGxpdDY0SGlnaD0wLGpzcGIudXRpbHMuc3BsaXRVaW50NjQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZT4+PjA7ZT1NYXRoLmZsb29yKChlLXQpL2pzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMik+Pj4wLGpzcGIudXRpbHMuc3BsaXQ2NExvdz10LGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2g9ZX0sanNwYi51dGlscy5zcGxpdEludDY0PWZ1bmN0aW9uKGUpe3ZhciB0PTA+ZSxvPShlPU1hdGguYWJzKGUpKT4+PjA7ZT1NYXRoLmZsb29yKChlLW8pL2pzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMiksZT4+Pj0wLHQmJihlPX5lPj4+MCw0Mjk0OTY3Mjk1PChvPTErKH5vPj4+MCkpJiYobz0wLDQyOTQ5NjcyOTU8KytlJiYoZT0wKSkpLGpzcGIudXRpbHMuc3BsaXQ2NExvdz1vLGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2g9ZX0sanNwYi51dGlscy5zcGxpdFppZ3phZzY0PWZ1bmN0aW9uKGUpe3ZhciB0PTA+ZTtlPTIqTWF0aC5hYnMoZSksanNwYi51dGlscy5zcGxpdFVpbnQ2NChlKSxlPWpzcGIudXRpbHMuc3BsaXQ2NExvdzt2YXIgbz1qc3BiLnV0aWxzLnNwbGl0NjRIaWdoO3QmJigwPT1lPzA9PW8/bz1lPTQyOTQ5NjcyOTU6KG8tLSxlPTQyOTQ5NjcyOTUpOmUtLSksanNwYi51dGlscy5zcGxpdDY0TG93PWUsanNwYi51dGlscy5zcGxpdDY0SGlnaD1vfSxqc3BiLnV0aWxzLnNwbGl0RmxvYXQzMj1mdW5jdGlvbihlKXt2YXIgdD0wPmU/MTowO2lmKDA9PT0oZT10Py1lOmUpKTA8MS9lPyhqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPTAsanNwYi51dGlscy5zcGxpdDY0TG93PTApOihqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPTAsanNwYi51dGlscy5zcGxpdDY0TG93PTIxNDc0ODM2NDgpO2Vsc2UgaWYoaXNOYU4oZSkpanNwYi51dGlscy5zcGxpdDY0SGlnaD0wLGpzcGIudXRpbHMuc3BsaXQ2NExvdz0yMTQ3NDgzNjQ3O2Vsc2UgaWYoZT5qc3BiLkJpbmFyeUNvbnN0YW50cy5GTE9BVDMyX01BWClqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPTAsanNwYi51dGlscy5zcGxpdDY0TG93PSh0PDwzMXwyMTM5MDk1MDQwKT4+PjA7ZWxzZSBpZihlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUMzJfTUlOKWU9TWF0aC5yb3VuZChlL01hdGgucG93KDIsLTE0OSkpLGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2g9MCxqc3BiLnV0aWxzLnNwbGl0NjRMb3c9KHQ8PDMxfGUpPj4+MDtlbHNle3ZhciBvPU1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5MTjIpO2UqPU1hdGgucG93KDIsLW8pLDE2Nzc3MjE2PD0oZT1NYXRoLnJvdW5kKGUqanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzIzKSkmJisrbyxqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPTAsanNwYi51dGlscy5zcGxpdDY0TG93PSh0PDwzMXxvKzEyNzw8MjN8ODM4ODYwNyZlKT4+PjB9fSxqc3BiLnV0aWxzLnNwbGl0RmxvYXQ2ND1mdW5jdGlvbihlKXt2YXIgdD0wPmU/MTowO2lmKDA9PT0oZT10Py1lOmUpKWpzcGIudXRpbHMuc3BsaXQ2NEhpZ2g9MDwxL2U/MDoyMTQ3NDgzNjQ4LGpzcGIudXRpbHMuc3BsaXQ2NExvdz0wO2Vsc2UgaWYoaXNOYU4oZSkpanNwYi51dGlscy5zcGxpdDY0SGlnaD0yMTQ3NDgzNjQ3LGpzcGIudXRpbHMuc3BsaXQ2NExvdz00Mjk0OTY3Mjk1O2Vsc2UgaWYoZT5qc3BiLkJpbmFyeUNvbnN0YW50cy5GTE9BVDY0X01BWClqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPSh0PDwzMXwyMTQ2NDM1MDcyKT4+PjAsanNwYi51dGlscy5zcGxpdDY0TG93PTA7ZWxzZSBpZihlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUNjRfTUlOKXt2YXIgbz1lL01hdGgucG93KDIsLTEwNzQpO2U9by9qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzIsanNwYi51dGlscy5zcGxpdDY0SGlnaD0odDw8MzF8ZSk+Pj4wLGpzcGIudXRpbHMuc3BsaXQ2NExvdz1vPj4+MH1lbHNle3ZhciByPTA7aWYoMjw9KG89ZSkpZm9yKDsyPD1vJiYxMDIzPnI7KXIrKyxvLz0yO2Vsc2UgZm9yKDsxPm8mJi0xMDIyPHI7KW8qPTIsci0tO2U9KG89ZSpNYXRoLnBvdygyLC1yKSkqanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzIwJjEwNDg1NzUsbz1vKmpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT181Mj4+PjAsanNwYi51dGlscy5zcGxpdDY0SGlnaD0odDw8MzF8cisxMDIzPDwyMHxlKT4+PjAsanNwYi51dGlscy5zcGxpdDY0TG93PW99fSxqc3BiLnV0aWxzLnNwbGl0SGFzaDY0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hhckNvZGVBdCgwKSxvPWUuY2hhckNvZGVBdCgxKSxyPWUuY2hhckNvZGVBdCgyKSxuPWUuY2hhckNvZGVBdCgzKSxzPWUuY2hhckNvZGVBdCg0KSxpPWUuY2hhckNvZGVBdCg1KSxhPWUuY2hhckNvZGVBdCg2KTtlPWUuY2hhckNvZGVBdCg3KSxqc3BiLnV0aWxzLnNwbGl0NjRMb3c9dCsobzw8OCkrKHI8PDE2KSsobjw8MjQpPj4+MCxqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPXMrKGk8PDgpKyhhPDwxNikrKGU8PDI0KT4+PjB9LGpzcGIudXRpbHMuam9pblVpbnQ2ND1mdW5jdGlvbihlLHQpe3JldHVybiB0KmpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMisoZT4+PjApfSxqc3BiLnV0aWxzLmpvaW5JbnQ2ND1mdW5jdGlvbihlLHQpe3ZhciBvPTIxNDc0ODM2NDgmdDtyZXR1cm4gbyYmKHQ9fnQ+Pj4wLDA9PShlPTErfmU+Pj4wKSYmKHQ9dCsxPj4+MCkpLGU9anNwYi51dGlscy5qb2luVWludDY0KGUsdCksbz8tZTplfSxqc3BiLnV0aWxzLnRvWmlnemFnNjQ9ZnVuY3Rpb24oZSx0LG8pe3ZhciByPXQ+PjMxO3JldHVybiBvKGU8PDFeciwodDw8MXxlPj4+MzEpXnIpfSxqc3BiLnV0aWxzLmpvaW5aaWd6YWc2ND1mdW5jdGlvbihlLHQpe3JldHVybiBqc3BiLnV0aWxzLmZyb21aaWd6YWc2NChlLHQsanNwYi51dGlscy5qb2luSW50NjQpfSxqc3BiLnV0aWxzLmZyb21aaWd6YWc2ND1mdW5jdGlvbihlLHQsbyl7dmFyIHI9LSgxJmUpO3JldHVybiBvKChlPj4+MXx0PDwzMSlecix0Pj4+MV5yKX0sanNwYi51dGlscy5qb2luRmxvYXQzMj1mdW5jdGlvbihlLHQpe3Q9MiooZT4+MzEpKzE7dmFyIG89ZT4+PjIzJjI1NTtyZXR1cm4gZSY9ODM4ODYwNywyNTU9PW8/ZT9OYU46MS8wKnQ6MD09bz90Kk1hdGgucG93KDIsLTE0OSkqZTp0Kk1hdGgucG93KDIsby0xNTApKihlK01hdGgucG93KDIsMjMpKX0sanNwYi51dGlscy5qb2luRmxvYXQ2ND1mdW5jdGlvbihlLHQpe3ZhciBvPTIqKHQ+PjMxKSsxLHI9dD4+PjIwJjIwNDc7cmV0dXJuIGU9anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMyKigxMDQ4NTc1JnQpK2UsMjA0Nz09cj9lP05hTjoxLzAqbzowPT1yP28qTWF0aC5wb3coMiwtMTA3NCkqZTpvKk1hdGgucG93KDIsci0xMDc1KSooZStqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNTIpfSxqc3BiLnV0aWxzLmpvaW5IYXNoNjQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj4+MCYyNTUsZT4+PjgmMjU1LGU+Pj4xNiYyNTUsZT4+PjI0JjI1NSx0Pj4+MCYyNTUsdD4+PjgmMjU1LHQ+Pj4xNiYyNTUsdD4+PjI0JjI1NSl9LGpzcGIudXRpbHMuRElHSVRTPVwiMDEyMzQ1Njc4OWFiY2RlZlwiLnNwbGl0KFwiXCIpLGpzcGIudXRpbHMuWkVST19DSEFSX0NPREVfPTQ4LGpzcGIudXRpbHMuQV9DSEFSX0NPREVfPTk3LGpzcGIudXRpbHMuam9pblVuc2lnbmVkRGVjaW1hbFN0cmluZz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oZSx0KXtyZXR1cm4gZT1lP1N0cmluZyhlKTpcIlwiLHQ/XCIwMDAwMDAwXCIuc2xpY2UoZS5sZW5ndGgpK2U6ZX1pZigyMDk3MTUxPj10KXJldHVyblwiXCIranNwYi51dGlscy5qb2luVWludDY0KGUsdCk7dmFyIHI9KGU+Pj4yNHx0PDw4KT4+PjAmMTY3NzcyMTU7cmV0dXJuIGU9KDE2Nzc3MjE1JmUpKzY3NzcyMTYqcis2NzEwNjU2Kih0PXQ+PjE2JjY1NTM1KSxyKz04MTQ3NDk3KnQsdCo9MiwxZTc8PWUmJihyKz1NYXRoLmZsb29yKGUvMWU3KSxlJT0xZTcpLDFlNzw9ciYmKHQrPU1hdGguZmxvb3Ioci8xZTcpLHIlPTFlNyksbyh0LDApK28ocix0KStvKGUsMSl9LGpzcGIudXRpbHMuam9pblNpZ25lZERlY2ltYWxTdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgbz0yMTQ3NDgzNjQ4JnQ7cmV0dXJuIG8mJih0PX50KygwPT0oZT0xK35lPj4+MCk/MTowKT4+PjApLGU9anNwYi51dGlscy5qb2luVW5zaWduZWREZWNpbWFsU3RyaW5nKGUsdCksbz9cIi1cIitlOmV9LGpzcGIudXRpbHMuaGFzaDY0VG9EZWNpbWFsU3RyaW5nPWZ1bmN0aW9uKGUsdCl7anNwYi51dGlscy5zcGxpdEhhc2g2NChlKSxlPWpzcGIudXRpbHMuc3BsaXQ2NExvdzt2YXIgbz1qc3BiLnV0aWxzLnNwbGl0NjRIaWdoO3JldHVybiB0P2pzcGIudXRpbHMuam9pblNpZ25lZERlY2ltYWxTdHJpbmcoZSxvKTpqc3BiLnV0aWxzLmpvaW5VbnNpZ25lZERlY2ltYWxTdHJpbmcoZSxvKX0sanNwYi51dGlscy5oYXNoNjRBcnJheVRvRGVjaW1hbFN0cmluZ3M9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89QXJyYXkoZS5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoO3IrKylvW3JdPWpzcGIudXRpbHMuaGFzaDY0VG9EZWNpbWFsU3RyaW5nKGVbcl0sdCk7cmV0dXJuIG99LGpzcGIudXRpbHMuZGVjaW1hbFN0cmluZ1RvSGFzaDY0PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtmb3IodmFyIG89MDs4Pm8mJigxIT09ZXx8MDx0KTtvKyspdD1lKnJbb10rdCxyW29dPTI1NSZ0LHQ+Pj49OH1nb29nLmFzc2VydHMuYXNzZXJ0KDA8ZS5sZW5ndGgpO3ZhciBvPSExO1wiLVwiPT09ZVswXSYmKG89ITAsZT1lLnNsaWNlKDEpKTtmb3IodmFyIHI9WzAsMCwwLDAsMCwwLDAsMF0sbj0wO248ZS5sZW5ndGg7bisrKXQoMTAsZS5jaGFyQ29kZUF0KG4pLWpzcGIudXRpbHMuWkVST19DSEFSX0NPREVfKTtyZXR1cm4gbyYmKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7OD5lO2UrKylyW2VdPTI1NSZ+cltlXX0oKSx0KDEsMSkpLGdvb2cuY3J5cHQuYnl0ZUFycmF5VG9TdHJpbmcocil9LGpzcGIudXRpbHMuc3BsaXREZWNpbWFsU3RyaW5nPWZ1bmN0aW9uKGUpe2pzcGIudXRpbHMuc3BsaXRIYXNoNjQoanNwYi51dGlscy5kZWNpbWFsU3RyaW5nVG9IYXNoNjQoZSkpfSxqc3BiLnV0aWxzLnRvSGV4RGlnaXRfPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDEwPmU/anNwYi51dGlscy5aRVJPX0NIQVJfQ09ERV8rZTpqc3BiLnV0aWxzLkFfQ0hBUl9DT0RFXy0xMCtlKX0sanNwYi51dGlscy5mcm9tSGV4Q2hhckNvZGVfPWZ1bmN0aW9uKGUpe3JldHVybiBlPj1qc3BiLnV0aWxzLkFfQ0hBUl9DT0RFXz9lLWpzcGIudXRpbHMuQV9DSEFSX0NPREVfKzEwOmUtanNwYi51dGlscy5aRVJPX0NIQVJfQ09ERV99LGpzcGIudXRpbHMuaGFzaDY0VG9IZXhTdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkoMTgpO3RbMF09XCIwXCIsdFsxXT1cInhcIjtmb3IodmFyIG89MDs4Pm87bysrKXt2YXIgcj1lLmNoYXJDb2RlQXQoNy1vKTt0WzIqbysyXT1qc3BiLnV0aWxzLnRvSGV4RGlnaXRfKHI+PjQpLHRbMipvKzNdPWpzcGIudXRpbHMudG9IZXhEaWdpdF8oMTUmcil9cmV0dXJuIHQuam9pbihcIlwiKX0sanNwYi51dGlscy5oZXhTdHJpbmdUb0hhc2g2ND1mdW5jdGlvbihlKXtlPWUudG9Mb3dlckNhc2UoKSxnb29nLmFzc2VydHMuYXNzZXJ0KDE4PT1lLmxlbmd0aCksZ29vZy5hc3NlcnRzLmFzc2VydChcIjBcIj09ZVswXSksZ29vZy5hc3NlcnRzLmFzc2VydChcInhcIj09ZVsxXSk7Zm9yKHZhciB0PVwiXCIsbz0wOzg+bztvKyspe3ZhciByPWpzcGIudXRpbHMuZnJvbUhleENoYXJDb2RlXyhlLmNoYXJDb2RlQXQoMipvKzIpKSxuPWpzcGIudXRpbHMuZnJvbUhleENoYXJDb2RlXyhlLmNoYXJDb2RlQXQoMipvKzMpKTt0PVN0cmluZy5mcm9tQ2hhckNvZGUoMTYqcituKSt0fXJldHVybiB0fSxqc3BiLnV0aWxzLmhhc2g2NFRvTnVtYmVyPWZ1bmN0aW9uKGUsdCl7anNwYi51dGlscy5zcGxpdEhhc2g2NChlKSxlPWpzcGIudXRpbHMuc3BsaXQ2NExvdzt2YXIgbz1qc3BiLnV0aWxzLnNwbGl0NjRIaWdoO3JldHVybiB0P2pzcGIudXRpbHMuam9pbkludDY0KGUsbyk6anNwYi51dGlscy5qb2luVWludDY0KGUsbyl9LGpzcGIudXRpbHMubnVtYmVyVG9IYXNoNjQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGpzcGIudXRpbHMuc3BsaXRJbnQ2NChlKSxqc3BiLnV0aWxzLmpvaW5IYXNoNjQoanNwYi51dGlscy5zcGxpdDY0TG93LGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2gpfSxqc3BiLnV0aWxzLmNvdW50VmFyaW50cz1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPTAsbj10O248bztuKyspcis9ZVtuXT4+NztyZXR1cm4gby10LXJ9LGpzcGIudXRpbHMuY291bnRWYXJpbnRGaWVsZHM9ZnVuY3Rpb24oZSx0LG8scil7dmFyIG49MDtpZigxMjg+KHI9OCpyK2pzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCkpZm9yKDt0PG8mJmVbdCsrXT09cjspZm9yKG4rKzs7KXt2YXIgcz1lW3QrK107aWYoMD09KDEyOCZzKSlicmVha31lbHNlIGZvcig7dDxvOyl7Zm9yKHM9cjsxMjg8czspe2lmKGVbdF0hPSgxMjcmc3wxMjgpKXJldHVybiBuO3QrKyxzPj49N31pZihlW3QrK10hPXMpYnJlYWs7Zm9yKG4rKzswIT0oMTI4JihzPWVbdCsrXSkpOyk7fXJldHVybiBufSxqc3BiLnV0aWxzLmNvdW50Rml4ZWRGaWVsZHNfPWZ1bmN0aW9uKGUsdCxvLHIsbil7dmFyIHM9MDtpZigxMjg+cilmb3IoO3Q8byYmZVt0KytdPT1yOylzKyssdCs9bjtlbHNlIGZvcig7dDxvOyl7Zm9yKHZhciBpPXI7MTI4PGk7KXtpZihlW3QrK10hPSgxMjcmaXwxMjgpKXJldHVybiBzO2k+Pj03fWlmKGVbdCsrXSE9aSlicmVhaztzKyssdCs9bn1yZXR1cm4gc30sanNwYi51dGlscy5jb3VudEZpeGVkMzJGaWVsZHM9ZnVuY3Rpb24oZSx0LG8scil7cmV0dXJuIGpzcGIudXRpbHMuY291bnRGaXhlZEZpZWxkc18oZSx0LG8sOCpyK2pzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIsNCl9LGpzcGIudXRpbHMuY291bnRGaXhlZDY0RmllbGRzPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBqc3BiLnV0aWxzLmNvdW50Rml4ZWRGaWVsZHNfKGUsdCxvLDgqcitqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0LDgpfSxqc3BiLnV0aWxzLmNvdW50RGVsaW1pdGVkRmllbGRzPWZ1bmN0aW9uKGUsdCxvLHIpe3ZhciBuPTA7Zm9yKHI9OCpyK2pzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkRFTElNSVRFRDt0PG87KXtmb3IodmFyIHM9cjsxMjg8czspe2lmKGVbdCsrXSE9KDEyNyZzfDEyOCkpcmV0dXJuIG47cz4+PTd9aWYoZVt0KytdIT1zKWJyZWFrO24rKztmb3IodmFyIGk9MCxhPTE7aSs9KDEyNyYocz1lW3QrK10pKSphLGEqPTEyOCwwIT0oMTI4JnMpOyk7dCs9aX1yZXR1cm4gbn0sanNwYi51dGlscy5kZWJ1Z0J5dGVzVG9UZXh0Rm9ybWF0PWZ1bmN0aW9uKGUpe3ZhciB0PSdcIic7aWYoZSl7ZT1qc3BiLnV0aWxzLmJ5dGVTb3VyY2VUb1VpbnQ4QXJyYXkoZSk7Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKyspdCs9XCJcXFxceFwiLDE2PmVbb10mJih0Kz1cIjBcIiksdCs9ZVtvXS50b1N0cmluZygxNil9cmV0dXJuIHQrJ1wiJ30sanNwYi51dGlscy5kZWJ1Z1NjYWxhclRvVGV4dEZvcm1hdD1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9nb29nLnN0cmluZy5xdW90ZShlKTplLnRvU3RyaW5nKCl9LGpzcGIudXRpbHMuc3RyaW5nVG9CeXRlQXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKSxvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciByPWUuY2hhckNvZGVBdChvKTtpZigyNTU8cil0aHJvdyBFcnJvcihcIkNvbnZlcnNpb24gZXJyb3I6IHN0cmluZyBjb250YWlucyBjb2RlcG9pbnQgb3V0c2lkZSBvZiBieXRlIHJhbmdlXCIpO3Rbb109cn1yZXR1cm4gdH0sanNwYi51dGlscy5ieXRlU291cmNlVG9VaW50OEFycmF5PWZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbnN0cnVjdG9yPT09VWludDhBcnJheT9lOmUuY29uc3RydWN0b3I9PT1BcnJheUJ1ZmZlcnx8XCJ1bmRlZmluZWRcIiE9dHlwZW9mIEJ1ZmZlciYmZS5jb25zdHJ1Y3Rvcj09PUJ1ZmZlcnx8ZS5jb25zdHJ1Y3Rvcj09PUFycmF5P25ldyBVaW50OEFycmF5KGUpOmUuY29uc3RydWN0b3I9PT1TdHJpbmc/Z29vZy5jcnlwdC5iYXNlNjQuZGVjb2RlU3RyaW5nVG9VaW50OEFycmF5KGUpOihnb29nLmFzc2VydHMuZmFpbChcIlR5cGUgbm90IGNvbnZlcnRpYmxlIHRvIFVpbnQ4QXJyYXkuXCIpLG5ldyBVaW50OEFycmF5KDApKX0sanNwYi5CaW5hcnlEZWNvZGVyPWZ1bmN0aW9uKGUsdCxvKXt0aGlzLmJ5dGVzXz1udWxsLHRoaXMuY3Vyc29yXz10aGlzLmVuZF89dGhpcy5zdGFydF89MCx0aGlzLmVycm9yXz0hMSxlJiZ0aGlzLnNldEJsb2NrKGUsdCxvKX0sanNwYi5CaW5hcnlEZWNvZGVyLmluc3RhbmNlQ2FjaGVfPVtdLGpzcGIuQmluYXJ5RGVjb2Rlci5hbGxvYz1mdW5jdGlvbihlLHQsbyl7aWYoanNwYi5CaW5hcnlEZWNvZGVyLmluc3RhbmNlQ2FjaGVfLmxlbmd0aCl7dmFyIHI9anNwYi5CaW5hcnlEZWNvZGVyLmluc3RhbmNlQ2FjaGVfLnBvcCgpO3JldHVybiBlJiZyLnNldEJsb2NrKGUsdCxvKSxyfXJldHVybiBuZXcganNwYi5CaW5hcnlEZWNvZGVyKGUsdCxvKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5mcmVlPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcigpLDEwMD5qc3BiLkJpbmFyeURlY29kZXIuaW5zdGFuY2VDYWNoZV8ubGVuZ3RoJiZqc3BiLkJpbmFyeURlY29kZXIuaW5zdGFuY2VDYWNoZV8ucHVzaCh0aGlzKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBqc3BiLkJpbmFyeURlY29kZXIuYWxsb2ModGhpcy5ieXRlc18sdGhpcy5zdGFydF8sdGhpcy5lbmRfLXRoaXMuc3RhcnRfKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuYnl0ZXNfPW51bGwsdGhpcy5jdXJzb3JfPXRoaXMuZW5kXz10aGlzLnN0YXJ0Xz0wLHRoaXMuZXJyb3JfPSExfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ5dGVzX30sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5zZXRCbG9jaz1mdW5jdGlvbihlLHQsbyl7dGhpcy5ieXRlc189anNwYi51dGlscy5ieXRlU291cmNlVG9VaW50OEFycmF5KGUpLHRoaXMuc3RhcnRfPXZvaWQgMCE9PXQ/dDowLHRoaXMuZW5kXz12b2lkIDAhPT1vP3RoaXMuc3RhcnRfK286dGhpcy5ieXRlc18ubGVuZ3RoLHRoaXMuY3Vyc29yXz10aGlzLnN0YXJ0X30sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5nZXRFbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmRffSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnNldEVuZD1mdW5jdGlvbihlKXt0aGlzLmVuZF89ZX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuY3Vyc29yXz10aGlzLnN0YXJ0X30sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5nZXRDdXJzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJzb3JffSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnNldEN1cnNvcj1mdW5jdGlvbihlKXt0aGlzLmN1cnNvcl89ZX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMuY3Vyc29yXys9ZSxnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMuY3Vyc29yXzw9dGhpcy5lbmRfKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5hdEVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnNvcl89PXRoaXMuZW5kX30sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5wYXN0RW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3Vyc29yXz50aGlzLmVuZF99LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcnJvcl98fDA+dGhpcy5jdXJzb3JffHx0aGlzLmN1cnNvcl8+dGhpcy5lbmRffSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTcGxpdFZhcmludDY0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xMjgsbz0wLHI9MCxuPTA7ND5uJiYxMjg8PXQ7bisrKW98PSgxMjcmKHQ9dGhpcy5ieXRlc19bdGhpcy5jdXJzb3JfKytdKSk8PDcqbjtpZigxMjg8PXQmJihvfD0oMTI3Jih0PXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXysrXSkpPDwyOCxyfD0oMTI3JnQpPj40KSwxMjg8PXQpZm9yKG49MDs1Pm4mJjEyODw9dDtuKyspcnw9KDEyNyYodD10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rK10pKTw8NypuKzM7aWYoMTI4PnQpcmV0dXJuIGUobz4+PjAscj4+PjApO2dvb2cuYXNzZXJ0cy5mYWlsKFwiRmFpbGVkIHRvIHJlYWQgdmFyaW50LCBlbmNvZGluZyBpcyBpbnZhbGlkLlwiKSx0aGlzLmVycm9yXz0hMH0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkU3BsaXRaaWd6YWdWYXJpbnQ2ND1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWFkU3BsaXRWYXJpbnQ2NCgoZnVuY3Rpb24odCxvKXtyZXR1cm4ganNwYi51dGlscy5mcm9tWmlnemFnNjQodCxvLGUpfSkpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTcGxpdEZpeGVkNjQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ieXRlc18sbz10aGlzLmN1cnNvcl87dGhpcy5jdXJzb3JfKz04O2Zvcih2YXIgcj0wLG49MCxzPW8rNztzPj1vO3MtLSlyPXI8PDh8dFtzXSxuPW48PDh8dFtzKzRdO3JldHVybiBlKHIsbil9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUuc2tpcFZhcmludD1mdW5jdGlvbigpe2Zvcig7MTI4JnRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yX107KXRoaXMuY3Vyc29yXysrO3RoaXMuY3Vyc29yXysrfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnVuc2tpcFZhcmludD1mdW5jdGlvbihlKXtmb3IoOzEyODxlOyl0aGlzLmN1cnNvcl8tLSxlPj4+PTc7dGhpcy5jdXJzb3JfLS19LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVuc2lnbmVkVmFyaW50MzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJ5dGVzXyx0PWVbdGhpcy5jdXJzb3JfKzBdLG89MTI3JnQ7cmV0dXJuIDEyOD50Pyh0aGlzLmN1cnNvcl8rPTEsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksbyk6KG98PSgxMjcmKHQ9ZVt0aGlzLmN1cnNvcl8rMV0pKTw8NywxMjg+dD8odGhpcy5jdXJzb3JfKz0yLGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5jdXJzb3JfPD10aGlzLmVuZF8pLG8pOihvfD0oMTI3Jih0PWVbdGhpcy5jdXJzb3JfKzJdKSk8PDE0LDEyOD50Pyh0aGlzLmN1cnNvcl8rPTMsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksbyk6KG98PSgxMjcmKHQ9ZVt0aGlzLmN1cnNvcl8rM10pKTw8MjEsMTI4PnQ/KHRoaXMuY3Vyc29yXys9NCxnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMuY3Vyc29yXzw9dGhpcy5lbmRfKSxvKToob3w9KDE1Jih0PWVbdGhpcy5jdXJzb3JfKzRdKSk8PDI4LDEyOD50Pyh0aGlzLmN1cnNvcl8rPTUsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksbz4+PjApOih0aGlzLmN1cnNvcl8rPTUsMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmZ29vZy5hc3NlcnRzLmFzc2VydCghMSksZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksbykpKSkpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTaWduZWRWYXJpbnQzMj1qc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRVbnNpZ25lZFZhcmludDMyLGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVuc2lnbmVkVmFyaW50MzJTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkVW5zaWduZWRWYXJpbnQzMigpLnRvU3RyaW5nKCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFNpZ25lZFZhcmludDMyU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFNpZ25lZFZhcmludDMyKCkudG9TdHJpbmcoKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkWmlnemFnVmFyaW50MzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVbnNpZ25lZFZhcmludDMyKCk7cmV0dXJuIGU+Pj4xXi0oMSZlKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkVW5zaWduZWRWYXJpbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRTcGxpdFZhcmludDY0KGpzcGIudXRpbHMuam9pblVpbnQ2NCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVuc2lnbmVkVmFyaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLmpvaW5VbnNpZ25lZERlY2ltYWxTdHJpbmcpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTaWduZWRWYXJpbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRTcGxpdFZhcmludDY0KGpzcGIudXRpbHMuam9pbkludDY0KX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkU2lnbmVkVmFyaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLmpvaW5TaWduZWREZWNpbWFsU3RyaW5nKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkWmlnemFnVmFyaW50NjQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLmpvaW5aaWd6YWc2NCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFppZ3phZ1ZhcmludEhhc2g2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRTcGxpdFppZ3phZ1ZhcmludDY0KGpzcGIudXRpbHMuam9pbkhhc2g2NCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFppZ3phZ1ZhcmludDY0U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFNwbGl0WmlnemFnVmFyaW50NjQoanNwYi51dGlscy5qb2luU2lnbmVkRGVjaW1hbFN0cmluZyl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVpbnQ4PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5ieXRlc19bdGhpcy5jdXJzb3JfKzBdO3JldHVybiB0aGlzLmN1cnNvcl8rPTEsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksZX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkVWludDE2PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5ieXRlc19bdGhpcy5jdXJzb3JfKzBdLHQ9dGhpcy5ieXRlc19bdGhpcy5jdXJzb3JfKzFdO3JldHVybiB0aGlzLmN1cnNvcl8rPTIsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksZTw8MHx0PDw4fSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRVaW50MzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMF0sdD10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMV0sbz10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMl0scj10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rM107cmV0dXJuIHRoaXMuY3Vyc29yXys9NCxnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMuY3Vyc29yXzw9dGhpcy5lbmRfKSwoZTw8MHx0PDw4fG88PDE2fHI8PDI0KT4+PjB9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVpbnQ2ND1mdW5jdGlvbigpe3ZhciBlPXRoaXMucmVhZFVpbnQzMigpLHQ9dGhpcy5yZWFkVWludDMyKCk7cmV0dXJuIGpzcGIudXRpbHMuam9pblVpbnQ2NChlLHQpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRVaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVaW50MzIoKSx0PXRoaXMucmVhZFVpbnQzMigpO3JldHVybiBqc3BiLnV0aWxzLmpvaW5VbnNpZ25lZERlY2ltYWxTdHJpbmcoZSx0KX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXyswXTtyZXR1cm4gdGhpcy5jdXJzb3JfKz0xLGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5jdXJzb3JfPD10aGlzLmVuZF8pLGU8PDI0Pj4yNH0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkSW50MTY9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMF0sdD10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMV07cmV0dXJuIHRoaXMuY3Vyc29yXys9Mixnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMuY3Vyc29yXzw9dGhpcy5lbmRfKSwoZTw8MHx0PDw4KTw8MTY+PjE2fSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRJbnQzMj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXyswXSx0PXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXysxXSxvPXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXysyXSxyPXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXyszXTtyZXR1cm4gdGhpcy5jdXJzb3JfKz00LGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5jdXJzb3JfPD10aGlzLmVuZF8pLGU8PDB8dDw8OHxvPDwxNnxyPDwyNH0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkSW50NjQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVaW50MzIoKSx0PXRoaXMucmVhZFVpbnQzMigpO3JldHVybiBqc3BiLnV0aWxzLmpvaW5JbnQ2NChlLHQpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRJbnQ2NFN0cmluZz1mdW5jdGlvbigpe3ZhciBlPXRoaXMucmVhZFVpbnQzMigpLHQ9dGhpcy5yZWFkVWludDMyKCk7cmV0dXJuIGpzcGIudXRpbHMuam9pblNpZ25lZERlY2ltYWxTdHJpbmcoZSx0KX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkRmxvYXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVaW50MzIoKTtyZXR1cm4ganNwYi51dGlscy5qb2luRmxvYXQzMihlLDApfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWREb3VibGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVaW50MzIoKSx0PXRoaXMucmVhZFVpbnQzMigpO3JldHVybiBqc3BiLnV0aWxzLmpvaW5GbG9hdDY0KGUsdCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZEJvb2w9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXysrXX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkRW51bT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRTaWduZWRWYXJpbnQzMigpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ieXRlc18sbz10aGlzLmN1cnNvcl87ZT1vK2U7Zm9yKHZhciByPVtdLG49XCJcIjtvPGU7KXt2YXIgcz10W28rK107aWYoMTI4PnMpci5wdXNoKHMpO2Vsc2V7aWYoMTkyPnMpY29udGludWU7aWYoMjI0PnMpe3ZhciBpPXRbbysrXTtyLnB1c2goKDMxJnMpPDw2fDYzJmkpfWVsc2UgaWYoMjQwPnMpe2k9dFtvKytdO3ZhciBhPXRbbysrXTtyLnB1c2goKDE1JnMpPDwxMnwoNjMmaSk8PDZ8NjMmYSl9ZWxzZSAyNDg+cyYmKHM9KDcmcyk8PDE4fCg2MyYoaT10W28rK10pKTw8MTJ8KDYzJihhPXRbbysrXSkpPDw2fDYzJnRbbysrXSxzLT02NTUzNixyLnB1c2goNTUyOTYrKHM+PjEwJjEwMjMpLDU2MzIwKygxMDIzJnMpKSl9ODE5Mjw9ci5sZW5ndGgmJihuKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsciksci5sZW5ndGg9MCl9cmV0dXJuIG4rPWdvb2cuY3J5cHQuYnl0ZUFycmF5VG9TdHJpbmcociksdGhpcy5jdXJzb3JfPW8sbn0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkU3RyaW5nV2l0aExlbmd0aD1mdW5jdGlvbigpe3ZhciBlPXRoaXMucmVhZFVuc2lnbmVkVmFyaW50MzIoKTtyZXR1cm4gdGhpcy5yZWFkU3RyaW5nKGUpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRCeXRlcz1mdW5jdGlvbihlKXtpZigwPmV8fHRoaXMuY3Vyc29yXytlPnRoaXMuYnl0ZXNfLmxlbmd0aClyZXR1cm4gdGhpcy5lcnJvcl89ITAsZ29vZy5hc3NlcnRzLmZhaWwoXCJJbnZhbGlkIGJ5dGUgbGVuZ3RoIVwiKSxuZXcgVWludDhBcnJheSgwKTt2YXIgdD10aGlzLmJ5dGVzXy5zdWJhcnJheSh0aGlzLmN1cnNvcl8sdGhpcy5jdXJzb3JfK2UpO3JldHVybiB0aGlzLmN1cnNvcl8rPWUsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksdH0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkVmFyaW50SGFzaDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFNwbGl0VmFyaW50NjQoanNwYi51dGlscy5qb2luSGFzaDY0KX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkRml4ZWRIYXNoNjQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJ5dGVzXyx0PXRoaXMuY3Vyc29yXyxvPWVbdCswXSxyPWVbdCsxXSxuPWVbdCsyXSxzPWVbdCszXSxpPWVbdCs0XSxhPWVbdCs1XSxnPWVbdCs2XTtyZXR1cm4gZT1lW3QrN10sdGhpcy5jdXJzb3JfKz04LFN0cmluZy5mcm9tQ2hhckNvZGUobyxyLG4scyxpLGEsZyxlKX0sanNwYi5CaW5hcnlSZWFkZXI9ZnVuY3Rpb24oZSx0LG8pe3RoaXMuZGVjb2Rlcl89anNwYi5CaW5hcnlEZWNvZGVyLmFsbG9jKGUsdCxvKSx0aGlzLmZpZWxkQ3Vyc29yXz10aGlzLmRlY29kZXJfLmdldEN1cnNvcigpLHRoaXMubmV4dEZpZWxkXz1qc3BiLkJpbmFyeUNvbnN0YW50cy5JTlZBTElEX0ZJRUxEX05VTUJFUix0aGlzLm5leHRXaXJlVHlwZV89anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuSU5WQUxJRCx0aGlzLmVycm9yXz0hMSx0aGlzLnJlYWRDYWxsYmFja3NfPW51bGx9LGpzcGIuQmluYXJ5UmVhZGVyLmluc3RhbmNlQ2FjaGVfPVtdLGpzcGIuQmluYXJ5UmVhZGVyLmFsbG9jPWZ1bmN0aW9uKGUsdCxvKXtpZihqc3BiLkJpbmFyeVJlYWRlci5pbnN0YW5jZUNhY2hlXy5sZW5ndGgpe3ZhciByPWpzcGIuQmluYXJ5UmVhZGVyLmluc3RhbmNlQ2FjaGVfLnBvcCgpO3JldHVybiBlJiZyLmRlY29kZXJfLnNldEJsb2NrKGUsdCxvKSxyfXJldHVybiBuZXcganNwYi5CaW5hcnlSZWFkZXIoZSx0LG8pfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuYWxsb2M9anNwYi5CaW5hcnlSZWFkZXIuYWxsb2MsanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLmZyZWU9ZnVuY3Rpb24oKXt0aGlzLmRlY29kZXJfLmNsZWFyKCksdGhpcy5uZXh0RmllbGRfPWpzcGIuQmluYXJ5Q29uc3RhbnRzLklOVkFMSURfRklFTERfTlVNQkVSLHRoaXMubmV4dFdpcmVUeXBlXz1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5JTlZBTElELHRoaXMuZXJyb3JfPSExLHRoaXMucmVhZENhbGxiYWNrc189bnVsbCwxMDA+anNwYi5CaW5hcnlSZWFkZXIuaW5zdGFuY2VDYWNoZV8ubGVuZ3RoJiZqc3BiLkJpbmFyeVJlYWRlci5pbnN0YW5jZUNhY2hlXy5wdXNoKHRoaXMpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0RmllbGRDdXJzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWVsZEN1cnNvcl99LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5nZXRDdXJzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWNvZGVyXy5nZXRDdXJzb3IoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlY29kZXJfLmdldEJ1ZmZlcigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0RmllbGROdW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0RmllbGRffSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0V2lyZVR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0V2lyZVR5cGVffSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuaXNEZWxpbWl0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUR9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5pc0VuZEdyb3VwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRU5EX0dST1VQfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcnJvcl98fHRoaXMuZGVjb2Rlcl8uZ2V0RXJyb3IoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNldEJsb2NrPWZ1bmN0aW9uKGUsdCxvKXt0aGlzLmRlY29kZXJfLnNldEJsb2NrKGUsdCxvKSx0aGlzLm5leHRGaWVsZF89anNwYi5CaW5hcnlDb25zdGFudHMuSU5WQUxJRF9GSUVMRF9OVU1CRVIsdGhpcy5uZXh0V2lyZVR5cGVfPWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLklOVkFMSUR9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuZGVjb2Rlcl8ucmVzZXQoKSx0aGlzLm5leHRGaWVsZF89anNwYi5CaW5hcnlDb25zdGFudHMuSU5WQUxJRF9GSUVMRF9OVU1CRVIsdGhpcy5uZXh0V2lyZVR5cGVfPWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLklOVkFMSUR9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMuZGVjb2Rlcl8uYWR2YW5jZShlKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLm5leHRGaWVsZD1mdW5jdGlvbigpe2lmKHRoaXMuZGVjb2Rlcl8uYXRFbmQoKSlyZXR1cm4hMTtpZih0aGlzLmdldEVycm9yKCkpcmV0dXJuIGdvb2cuYXNzZXJ0cy5mYWlsKFwiRGVjb2RlciBoaXQgYW4gZXJyb3JcIiksITE7dGhpcy5maWVsZEN1cnNvcl89dGhpcy5kZWNvZGVyXy5nZXRDdXJzb3IoKTt2YXIgZT10aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDMyKCksdD1lPj4+MztyZXR1cm4oZSY9NykhPWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCYmZSE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQzMiYmZSE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCYmZSE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEJiZlIT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5TVEFSVF9HUk9VUCYmZSE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRU5EX0dST1VQPyhnb29nLmFzc2VydHMuZmFpbChcIkludmFsaWQgd2lyZSB0eXBlOiAlcyAoYXQgcG9zaXRpb24gJXMpXCIsZSx0aGlzLmZpZWxkQ3Vyc29yXyksdGhpcy5lcnJvcl89ITAsITEpOih0aGlzLm5leHRGaWVsZF89dCx0aGlzLm5leHRXaXJlVHlwZV89ZSwhMCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS51bnNraXBIZWFkZXI9ZnVuY3Rpb24oKXt0aGlzLmRlY29kZXJfLnVuc2tpcFZhcmludCh0aGlzLm5leHRGaWVsZF88PDN8dGhpcy5uZXh0V2lyZVR5cGVfKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNraXBNYXRjaGluZ0ZpZWxkcz1mdW5jdGlvbigpe3ZhciBlPXRoaXMubmV4dEZpZWxkXztmb3IodGhpcy51bnNraXBIZWFkZXIoKTt0aGlzLm5leHRGaWVsZCgpJiZ0aGlzLmdldEZpZWxkTnVtYmVyKCk9PWU7KXRoaXMuc2tpcEZpZWxkKCk7dGhpcy5kZWNvZGVyXy5hdEVuZCgpfHx0aGlzLnVuc2tpcEhlYWRlcigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuc2tpcFZhcmludEZpZWxkPWZ1bmN0aW9uKCl7dGhpcy5uZXh0V2lyZVR5cGVfIT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQ/KGdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCB3aXJlIHR5cGUgZm9yIHNraXBWYXJpbnRGaWVsZFwiKSx0aGlzLnNraXBGaWVsZCgpKTp0aGlzLmRlY29kZXJfLnNraXBWYXJpbnQoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNraXBEZWxpbWl0ZWRGaWVsZD1mdW5jdGlvbigpe2lmKHRoaXMubmV4dFdpcmVUeXBlXyE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKWdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCB3aXJlIHR5cGUgZm9yIHNraXBEZWxpbWl0ZWRGaWVsZFwiKSx0aGlzLnNraXBGaWVsZCgpO2Vsc2V7dmFyIGU9dGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpO3RoaXMuZGVjb2Rlcl8uYWR2YW5jZShlKX19LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5za2lwRml4ZWQzMkZpZWxkPWZ1bmN0aW9uKCl7dGhpcy5uZXh0V2lyZVR5cGVfIT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDMyPyhnb29nLmFzc2VydHMuZmFpbChcIkludmFsaWQgd2lyZSB0eXBlIGZvciBza2lwRml4ZWQzMkZpZWxkXCIpLHRoaXMuc2tpcEZpZWxkKCkpOnRoaXMuZGVjb2Rlcl8uYWR2YW5jZSg0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNraXBGaXhlZDY0RmllbGQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRXaXJlVHlwZV8hPWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQ/KGdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCB3aXJlIHR5cGUgZm9yIHNraXBGaXhlZDY0RmllbGRcIiksdGhpcy5za2lwRmllbGQoKSk6dGhpcy5kZWNvZGVyXy5hZHZhbmNlKDgpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuc2tpcEdyb3VwPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMubmV4dEZpZWxkXzs7KXtpZighdGhpcy5uZXh0RmllbGQoKSl7Z29vZy5hc3NlcnRzLmZhaWwoXCJVbm1hdGNoZWQgc3RhcnQtZ3JvdXAgdGFnOiBzdHJlYW0gRU9GXCIpLHRoaXMuZXJyb3JfPSEwO2JyZWFrfWlmKHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRU5EX0dST1VQKXt0aGlzLm5leHRGaWVsZF8hPWUmJihnb29nLmFzc2VydHMuZmFpbChcIlVubWF0Y2hlZCBlbmQtZ3JvdXAgdGFnXCIpLHRoaXMuZXJyb3JfPSEwKTticmVha310aGlzLnNraXBGaWVsZCgpfX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNraXBGaWVsZD1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLm5leHRXaXJlVHlwZV8pe2Nhc2UganNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UOnRoaXMuc2tpcFZhcmludEZpZWxkKCk7YnJlYWs7Y2FzZSBqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0OnRoaXMuc2tpcEZpeGVkNjRGaWVsZCgpO2JyZWFrO2Nhc2UganNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEOnRoaXMuc2tpcERlbGltaXRlZEZpZWxkKCk7YnJlYWs7Y2FzZSBqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDMyOnRoaXMuc2tpcEZpeGVkMzJGaWVsZCgpO2JyZWFrO2Nhc2UganNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuU1RBUlRfR1JPVVA6dGhpcy5za2lwR3JvdXAoKTticmVhaztkZWZhdWx0Omdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCB3aXJlIGVuY29kaW5nIGZvciBmaWVsZC5cIil9fSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVnaXN0ZXJSZWFkQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0KXtudWxsPT09dGhpcy5yZWFkQ2FsbGJhY2tzXyYmKHRoaXMucmVhZENhbGxiYWNrc189e30pLGdvb2cuYXNzZXJ0cy5hc3NlcnQoIXRoaXMucmVhZENhbGxiYWNrc19bZV0pLHRoaXMucmVhZENhbGxiYWNrc19bZV09dH0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJ1blJlYWRDYWxsYmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT09dGhpcy5yZWFkQ2FsbGJhY2tzXyksZT10aGlzLnJlYWRDYWxsYmFja3NfW2VdLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZSksZSh0aGlzKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRBbnk9ZnVuY3Rpb24oZSl7dGhpcy5uZXh0V2lyZVR5cGVfPWpzcGIuQmluYXJ5Q29uc3RhbnRzLkZpZWxkVHlwZVRvV2lyZVR5cGUoZSk7dmFyIHQ9anNwYi5CaW5hcnlDb25zdGFudHMuRmllbGRUeXBlO3N3aXRjaChlKXtjYXNlIHQuRE9VQkxFOnJldHVybiB0aGlzLnJlYWREb3VibGUoKTtjYXNlIHQuRkxPQVQ6cmV0dXJuIHRoaXMucmVhZEZsb2F0KCk7Y2FzZSB0LklOVDY0OnJldHVybiB0aGlzLnJlYWRJbnQ2NCgpO2Nhc2UgdC5VSU5UNjQ6cmV0dXJuIHRoaXMucmVhZFVpbnQ2NCgpO2Nhc2UgdC5JTlQzMjpyZXR1cm4gdGhpcy5yZWFkSW50MzIoKTtjYXNlIHQuRklYRUQ2NDpyZXR1cm4gdGhpcy5yZWFkRml4ZWQ2NCgpO2Nhc2UgdC5GSVhFRDMyOnJldHVybiB0aGlzLnJlYWRGaXhlZDMyKCk7Y2FzZSB0LkJPT0w6cmV0dXJuIHRoaXMucmVhZEJvb2woKTtjYXNlIHQuU1RSSU5HOnJldHVybiB0aGlzLnJlYWRTdHJpbmcoKTtjYXNlIHQuR1JPVVA6Z29vZy5hc3NlcnRzLmZhaWwoXCJHcm91cCBmaWVsZCB0eXBlIG5vdCBzdXBwb3J0ZWQgaW4gcmVhZEFueSgpXCIpO2Nhc2UgdC5NRVNTQUdFOmdvb2cuYXNzZXJ0cy5mYWlsKFwiTWVzc2FnZSBmaWVsZCB0eXBlIG5vdCBzdXBwb3J0ZWQgaW4gcmVhZEFueSgpXCIpO2Nhc2UgdC5CWVRFUzpyZXR1cm4gdGhpcy5yZWFkQnl0ZXMoKTtjYXNlIHQuVUlOVDMyOnJldHVybiB0aGlzLnJlYWRVaW50MzIoKTtjYXNlIHQuRU5VTTpyZXR1cm4gdGhpcy5yZWFkRW51bSgpO2Nhc2UgdC5TRklYRUQzMjpyZXR1cm4gdGhpcy5yZWFkU2ZpeGVkMzIoKTtjYXNlIHQuU0ZJWEVENjQ6cmV0dXJuIHRoaXMucmVhZFNmaXhlZDY0KCk7Y2FzZSB0LlNJTlQzMjpyZXR1cm4gdGhpcy5yZWFkU2ludDMyKCk7Y2FzZSB0LlNJTlQ2NDpyZXR1cm4gdGhpcy5yZWFkU2ludDY0KCk7Y2FzZSB0LkZIQVNINjQ6cmV0dXJuIHRoaXMucmVhZEZpeGVkSGFzaDY0KCk7Y2FzZSB0LlZIQVNINjQ6cmV0dXJuIHRoaXMucmVhZFZhcmludEhhc2g2NCgpO2RlZmF1bHQ6Z29vZy5hc3NlcnRzLmZhaWwoXCJJbnZhbGlkIGZpZWxkIHR5cGUgaW4gcmVhZEFueSgpXCIpfXJldHVybiAwfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZE1lc3NhZ2U9ZnVuY3Rpb24oZSx0KXtnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKTt2YXIgbz10aGlzLmRlY29kZXJfLmdldEVuZCgpLHI9dGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpO3I9dGhpcy5kZWNvZGVyXy5nZXRDdXJzb3IoKStyLHRoaXMuZGVjb2Rlcl8uc2V0RW5kKHIpLHQoZSx0aGlzKSx0aGlzLmRlY29kZXJfLnNldEN1cnNvcihyKSx0aGlzLmRlY29kZXJfLnNldEVuZChvKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRHcm91cD1mdW5jdGlvbihlLHQsbyl7Z29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlNUQVJUX0dST1VQKSxnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dEZpZWxkXz09ZSksbyh0LHRoaXMpLHRoaXMuZXJyb3JffHx0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkVORF9HUk9VUHx8KGdvb2cuYXNzZXJ0cy5mYWlsKFwiR3JvdXAgc3VibWVzc2FnZSBkaWQgbm90IGVuZCB3aXRoIGFuIEVORF9HUk9VUCB0YWdcIiksdGhpcy5lcnJvcl89ITApfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0RmllbGREZWNvZGVyPWZ1bmN0aW9uKCl7Z29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkRFTElNSVRFRCk7dmFyIGU9dGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpLHQ9dGhpcy5kZWNvZGVyXy5nZXRDdXJzb3IoKSxvPXQrZTtyZXR1cm4gZT1qc3BiLkJpbmFyeURlY29kZXIuYWxsb2ModGhpcy5kZWNvZGVyXy5nZXRCdWZmZXIoKSx0LGUpLHRoaXMuZGVjb2Rlcl8uc2V0Q3Vyc29yKG8pLGV9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkSW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkU2lnbmVkVmFyaW50MzIoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRJbnQzMlN0cmluZz1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRTaWduZWRWYXJpbnQzMlN0cmluZygpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZGVjb2Rlcl8ucmVhZFNpZ25lZFZhcmludDY0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkSW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkU2lnbmVkVmFyaW50NjRTdHJpbmcoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRVaW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFVpbnQzMlN0cmluZz1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDMyU3RyaW5nKCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkVWludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZGVjb2Rlcl8ucmVhZFVuc2lnbmVkVmFyaW50NjQoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRVaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQ2NFN0cmluZygpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNpbnQzMj1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRaaWd6YWdWYXJpbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNpbnQ2ND1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRaaWd6YWdWYXJpbnQ2NCgpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNpbnQ2NFN0cmluZz1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRaaWd6YWdWYXJpbnQ2NFN0cmluZygpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEZpeGVkMzI9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIpLHRoaXMuZGVjb2Rlcl8ucmVhZFVpbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEZpeGVkNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZFVpbnQ2NCgpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEZpeGVkNjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZFVpbnQ2NFN0cmluZygpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNmaXhlZDMyPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDMyKSx0aGlzLmRlY29kZXJfLnJlYWRJbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNmaXhlZDMyU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDMyKSx0aGlzLmRlY29kZXJfLnJlYWRJbnQzMigpLnRvU3RyaW5nKCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkU2ZpeGVkNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZEludDY0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkU2ZpeGVkNjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZEludDY0U3RyaW5nKCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkRmxvYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIpLHRoaXMuZGVjb2Rlcl8ucmVhZEZsb2F0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkRG91YmxlPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0KSx0aGlzLmRlY29kZXJfLnJlYWREb3VibGUoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRCb29sPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLCEhdGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEVudW09ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkU2lnbmVkVmFyaW50NjQoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRTdHJpbmc9ZnVuY3Rpb24oKXtnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKTt2YXIgZT10aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDMyKCk7cmV0dXJuIHRoaXMuZGVjb2Rlcl8ucmVhZFN0cmluZyhlKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRCeXRlcz1mdW5jdGlvbigpe2dvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpO3ZhciBlPXRoaXMuZGVjb2Rlcl8ucmVhZFVuc2lnbmVkVmFyaW50MzIoKTtyZXR1cm4gdGhpcy5kZWNvZGVyXy5yZWFkQnl0ZXMoZSl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkVmFyaW50SGFzaDY0PWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZGVjb2Rlcl8ucmVhZFZhcmludEhhc2g2NCgpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNpbnRIYXNoNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkWmlnemFnVmFyaW50SGFzaDY0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkU3BsaXRWYXJpbnQ2ND1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkU3BsaXRWYXJpbnQ2NChlKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRTcGxpdFppZ3phZ1ZhcmludDY0PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRTcGxpdFZhcmludDY0KChmdW5jdGlvbih0LG8pe3JldHVybiBqc3BiLnV0aWxzLmZyb21aaWd6YWc2NCh0LG8sZSl9KSl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkRml4ZWRIYXNoNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZEZpeGVkSGFzaDY0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkU3BsaXRGaXhlZDY0PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCksdGhpcy5kZWNvZGVyXy5yZWFkU3BsaXRGaXhlZDY0KGUpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEZpZWxkXz1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKTt2YXIgdD10aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDMyKCk7dD10aGlzLmRlY29kZXJfLmdldEN1cnNvcigpK3Q7Zm9yKHZhciBvPVtdO3RoaXMuZGVjb2Rlcl8uZ2V0Q3Vyc29yKCk8dDspby5wdXNoKGUuY2FsbCh0aGlzLmRlY29kZXJfKSk7cmV0dXJuIG99LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkSW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFNpZ25lZFZhcmludDMyKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRJbnQzMlN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkU2lnbmVkVmFyaW50MzJTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRTaWduZWRWYXJpbnQ2NCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkSW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFNpZ25lZFZhcmludDY0U3RyaW5nKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRVaW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFVuc2lnbmVkVmFyaW50MzIpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFVpbnQzMlN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMlN0cmluZyl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkVWludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDY0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRVaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFVuc2lnbmVkVmFyaW50NjRTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFNpbnQzMj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkWmlnemFnVmFyaW50MzIpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFNpbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkWmlnemFnVmFyaW50NjQpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFNpbnQ2NFN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkWmlnemFnVmFyaW50NjRTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEZpeGVkMzI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFVpbnQzMil9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkRml4ZWQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkVWludDY0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRGaXhlZDY0U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRVaW50NjRTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFNmaXhlZDMyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRJbnQzMil9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkU2ZpeGVkNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZEludDY0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRTZml4ZWQ2NFN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkSW50NjRTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEZsb2F0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRGbG9hdCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkRG91YmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWREb3VibGUpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEJvb2w9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZEJvb2wpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEVudW09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZEVudW0pfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFZhcmludEhhc2g2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkVmFyaW50SGFzaDY0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRGaXhlZEhhc2g2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkRml4ZWRIYXNoNjQpfSxqc3BiLkJpbmFyeUVuY29kZXI9ZnVuY3Rpb24oKXt0aGlzLmJ1ZmZlcl89W119LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUubGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnVmZmVyXy5sZW5ndGh9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5idWZmZXJfO3JldHVybiB0aGlzLmJ1ZmZlcl89W10sZX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZVNwbGl0VmFyaW50NjQ9ZnVuY3Rpb24oZSx0KXtmb3IoZ29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KHQ9PU1hdGguZmxvb3IodCkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzIpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9dCYmdDxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzIpOzA8dHx8MTI3PGU7KXRoaXMuYnVmZmVyXy5wdXNoKDEyNyZlfDEyOCksZT0oZT4+Pjd8dDw8MjUpPj4+MCx0Pj4+PTc7dGhpcy5idWZmZXJfLnB1c2goZSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVTcGxpdEZpeGVkNjQ9ZnVuY3Rpb24oZSx0KXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQodD09TWF0aC5mbG9vcih0KSksZ29vZy5hc3NlcnRzLmFzc2VydCgwPD1lJiZlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMiksZ29vZy5hc3NlcnRzLmFzc2VydCgwPD10JiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMiksdGhpcy53cml0ZVVpbnQzMihlKSx0aGlzLndyaXRlVWludDMyKHQpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlVW5zaWduZWRWYXJpbnQzMj1mdW5jdGlvbihlKXtmb3IoZ29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PWUmJmU8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMyKTsxMjc8ZTspdGhpcy5idWZmZXJfLnB1c2goMTI3JmV8MTI4KSxlPj4+PTc7dGhpcy5idWZmZXJfLnB1c2goZSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVTaWduZWRWYXJpbnQzMj1mdW5jdGlvbihlKXtpZihnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZT49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEpLDA8PWUpdGhpcy53cml0ZVVuc2lnbmVkVmFyaW50MzIoZSk7ZWxzZXtmb3IodmFyIHQ9MDs5PnQ7dCsrKXRoaXMuYnVmZmVyXy5wdXNoKDEyNyZlfDEyOCksZT4+PTc7dGhpcy5idWZmZXJfLnB1c2goMSl9fSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlVW5zaWduZWRWYXJpbnQ2ND1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjQpLGpzcGIudXRpbHMuc3BsaXRJbnQ2NChlKSx0aGlzLndyaXRlU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVTaWduZWRWYXJpbnQ2ND1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZT49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMpLGpzcGIudXRpbHMuc3BsaXRJbnQ2NChlKSx0aGlzLndyaXRlU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnQzMj1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZT49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEpLHRoaXMud3JpdGVVbnNpZ25lZFZhcmludDMyKChlPDwxXmU+PjMxKT4+PjApfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlWmlnemFnVmFyaW50NjQ9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KGU+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMmJmU8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzYzKSxqc3BiLnV0aWxzLnNwbGl0WmlnemFnNjQoZSksdGhpcy53cml0ZVNwbGl0VmFyaW50NjQoanNwYi51dGlscy5zcGxpdDY0TG93LGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2gpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlWmlnemFnVmFyaW50NjRTdHJpbmc9ZnVuY3Rpb24oZSl7dGhpcy53cml0ZVppZ3phZ1ZhcmludEhhc2g2NChqc3BiLnV0aWxzLmRlY2ltYWxTdHJpbmdUb0hhc2g2NChlKSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztqc3BiLnV0aWxzLnNwbGl0SGFzaDY0KGUpLGpzcGIudXRpbHMudG9aaWd6YWc2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCwoZnVuY3Rpb24oZSxvKXt0LndyaXRlU3BsaXRWYXJpbnQ2NChlPj4+MCxvPj4+MCl9KSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVVaW50OD1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmMjU2PmUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4wJjI1NSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVVaW50MTY9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PWUmJjY1NTM2PmUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4wJjI1NSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjgmMjU1KX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZVVpbnQzMj1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzIpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4wJjI1NSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjgmMjU1KSx0aGlzLmJ1ZmZlcl8ucHVzaChlPj4+MTYmMjU1KSx0aGlzLmJ1ZmZlcl8ucHVzaChlPj4+MjQmMjU1KX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZVVpbnQ2ND1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjQpLGpzcGIudXRpbHMuc3BsaXRVaW50NjQoZSksdGhpcy53cml0ZVVpbnQzMihqc3BiLnV0aWxzLnNwbGl0NjRMb3cpLHRoaXMud3JpdGVVaW50MzIoanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZT09TWF0aC5mbG9vcihlKSksZ29vZy5hc3NlcnRzLmFzc2VydCgtMTI4PD1lJiYxMjg+ZSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjAmMjU1KX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZUludDE2PWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZT09TWF0aC5mbG9vcihlKSksZ29vZy5hc3NlcnRzLmFzc2VydCgtMzI3Njg8PWUmJjMyNzY4PmUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4wJjI1NSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjgmMjU1KX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZUludDMyPWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZT09TWF0aC5mbG9vcihlKSksZ29vZy5hc3NlcnRzLmFzc2VydChlPj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxJiZlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjAmMjU1KSx0aGlzLmJ1ZmZlcl8ucHVzaChlPj4+OCYyNTUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4xNiYyNTUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4yNCYyNTUpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlSW50NjQ9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KGU+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMmJmU8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzYzKSxqc3BiLnV0aWxzLnNwbGl0SW50NjQoZSksdGhpcy53cml0ZVNwbGl0Rml4ZWQ2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVJbnQ2NFN0cmluZz1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoK2U+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMmJitlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyksanNwYi51dGlscy5zcGxpdEhhc2g2NChqc3BiLnV0aWxzLmRlY2ltYWxTdHJpbmdUb0hhc2g2NChlKSksdGhpcy53cml0ZVNwbGl0Rml4ZWQ2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVGbG9hdD1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KDEvMD09PWV8fC0xLzA9PT1lfHxpc05hTihlKXx8ZT49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUMzJfTUFYJiZlPD1qc3BiLkJpbmFyeUNvbnN0YW50cy5GTE9BVDMyX01BWCksanNwYi51dGlscy5zcGxpdEZsb2F0MzIoZSksdGhpcy53cml0ZVVpbnQzMihqc3BiLnV0aWxzLnNwbGl0NjRMb3cpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlRG91YmxlPWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoMS8wPT09ZXx8LTEvMD09PWV8fGlzTmFOKGUpfHxlPj0tanNwYi5CaW5hcnlDb25zdGFudHMuRkxPQVQ2NF9NQVgmJmU8PWpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUNjRfTUFYKSxqc3BiLnV0aWxzLnNwbGl0RmxvYXQ2NChlKSx0aGlzLndyaXRlVWludDMyKGpzcGIudXRpbHMuc3BsaXQ2NExvdyksdGhpcy53cml0ZVVpbnQzMihqc3BiLnV0aWxzLnNwbGl0NjRIaWdoKX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZUJvb2w9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydChcImJvb2xlYW5cIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlKSx0aGlzLmJ1ZmZlcl8ucHVzaChlPzE6MCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVFbnVtPWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZT09TWF0aC5mbG9vcihlKSksZ29vZy5hc3NlcnRzLmFzc2VydChlPj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxJiZlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSksdGhpcy53cml0ZVNpZ25lZFZhcmludDMyKGUpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlQnl0ZXM9ZnVuY3Rpb24oZSl7dGhpcy5idWZmZXJfLnB1c2guYXBwbHkodGhpcy5idWZmZXJfLGUpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlVmFyaW50SGFzaDY0PWZ1bmN0aW9uKGUpe2pzcGIudXRpbHMuc3BsaXRIYXNoNjQoZSksdGhpcy53cml0ZVNwbGl0VmFyaW50NjQoanNwYi51dGlscy5zcGxpdDY0TG93LGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2gpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlRml4ZWRIYXNoNjQ9ZnVuY3Rpb24oZSl7anNwYi51dGlscy5zcGxpdEhhc2g2NChlKSx0aGlzLndyaXRlVWludDMyKGpzcGIudXRpbHMuc3BsaXQ2NExvdyksdGhpcy53cml0ZVVpbnQzMihqc3BiLnV0aWxzLnNwbGl0NjRIaWdoKX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZVN0cmluZz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5idWZmZXJfLmxlbmd0aCxvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciByPWUuY2hhckNvZGVBdChvKTtpZigxMjg+cil0aGlzLmJ1ZmZlcl8ucHVzaChyKTtlbHNlIGlmKDIwNDg+cil0aGlzLmJ1ZmZlcl8ucHVzaChyPj42fDE5MiksdGhpcy5idWZmZXJfLnB1c2goNjMmcnwxMjgpO2Vsc2UgaWYoNjU1MzY+cilpZig1NTI5Njw9ciYmNTYzMTk+PXImJm8rMTxlLmxlbmd0aCl7dmFyIG49ZS5jaGFyQ29kZUF0KG8rMSk7NTYzMjA8PW4mJjU3MzQzPj1uJiYocj0xMDI0KihyLTU1Mjk2KStuLTU2MzIwKzY1NTM2LHRoaXMuYnVmZmVyXy5wdXNoKHI+PjE4fDI0MCksdGhpcy5idWZmZXJfLnB1c2gocj4+MTImNjN8MTI4KSx0aGlzLmJ1ZmZlcl8ucHVzaChyPj42JjYzfDEyOCksdGhpcy5idWZmZXJfLnB1c2goNjMmcnwxMjgpLG8rKyl9ZWxzZSB0aGlzLmJ1ZmZlcl8ucHVzaChyPj4xMnwyMjQpLHRoaXMuYnVmZmVyXy5wdXNoKHI+PjYmNjN8MTI4KSx0aGlzLmJ1ZmZlcl8ucHVzaCg2MyZyfDEyOCl9cmV0dXJuIHRoaXMuYnVmZmVyXy5sZW5ndGgtdH0sanNwYi5hcml0aD17fSxqc3BiLmFyaXRoLlVJbnQ2ND1mdW5jdGlvbihlLHQpe3RoaXMubG89ZSx0aGlzLmhpPXR9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaGk8ZS5oaXx8dGhpcy5oaT09ZS5oaSYmdGhpcy5sbzxlLmxvPy0xOnRoaXMuaGk9PWUuaGkmJnRoaXMubG89PWUubG8/MDoxfSxqc3BiLmFyaXRoLlVJbnQ2NC5wcm90b3R5cGUucmlnaHRTaGlmdD1mdW5jdGlvbigpe3JldHVybiBuZXcganNwYi5hcml0aC5VSW50NjQoKHRoaXMubG8+Pj4xfCgxJnRoaXMuaGkpPDwzMSk+Pj4wLHRoaXMuaGk+Pj4xPj4+MCl9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5sZWZ0U2hpZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGpzcGIuYXJpdGguVUludDY0KHRoaXMubG88PDE+Pj4wLCh0aGlzLmhpPDwxfHRoaXMubG8+Pj4zMSk+Pj4wKX0sanNwYi5hcml0aC5VSW50NjQucHJvdG90eXBlLm1zYj1mdW5jdGlvbigpe3JldHVybiEhKDIxNDc0ODM2NDgmdGhpcy5oaSl9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5sc2I9ZnVuY3Rpb24oKXtyZXR1cm4hISgxJnRoaXMubG8pfSxqc3BiLmFyaXRoLlVJbnQ2NC5wcm90b3R5cGUuemVybz1mdW5jdGlvbigpe3JldHVybiAwPT10aGlzLmxvJiYwPT10aGlzLmhpfSxqc3BiLmFyaXRoLlVJbnQ2NC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcganNwYi5hcml0aC5VSW50NjQoKHRoaXMubG8rZS5sbyY0Mjk0OTY3Mjk1KT4+PjA+Pj4wLCgodGhpcy5oaStlLmhpJjQyOTQ5NjcyOTUpPj4+MCkrKDQyOTQ5NjcyOTY8PXRoaXMubG8rZS5sbz8xOjApPj4+MCl9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBqc3BiLmFyaXRoLlVJbnQ2NCgodGhpcy5sby1lLmxvJjQyOTQ5NjcyOTUpPj4+MD4+PjAsKCh0aGlzLmhpLWUuaGkmNDI5NDk2NzI5NSk+Pj4wKS0oMD50aGlzLmxvLWUubG8/MTowKT4+PjApfSxqc3BiLmFyaXRoLlVJbnQ2NC5tdWwzMngzMj1mdW5jdGlvbihlLHQpe3ZhciBvPTY1NTM1JmUscj02NTUzNSZ0LG49dD4+PjE2O2Zvcih0PW8qcis2NTUzNioobypuJjY1NTM1KSs2NTUzNiooKGU+Pj49MTYpKnImNjU1MzUpLG89ZSpuKyhvKm4+Pj4xNikrKGUqcj4+PjE2KTs0Mjk0OTY3Mjk2PD10Oyl0LT00Mjk0OTY3Mjk2LG8rPTE7cmV0dXJuIG5ldyBqc3BiLmFyaXRoLlVJbnQ2NCh0Pj4+MCxvPj4+MCl9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZSl7dmFyIHQ9anNwYi5hcml0aC5VSW50NjQubXVsMzJ4MzIodGhpcy5sbyxlKTtyZXR1cm4oZT1qc3BiLmFyaXRoLlVJbnQ2NC5tdWwzMngzMih0aGlzLmhpLGUpKS5oaT1lLmxvLGUubG89MCx0LmFkZChlKX0sanNwYi5hcml0aC5VSW50NjQucHJvdG90eXBlLmRpdj1mdW5jdGlvbihlKXtpZigwPT1lKXJldHVybltdO3ZhciB0PW5ldyBqc3BiLmFyaXRoLlVJbnQ2NCgwLDApLG89bmV3IGpzcGIuYXJpdGguVUludDY0KHRoaXMubG8sdGhpcy5oaSk7ZT1uZXcganNwYi5hcml0aC5VSW50NjQoZSwwKTtmb3IodmFyIHI9bmV3IGpzcGIuYXJpdGguVUludDY0KDEsMCk7IWUubXNiKCk7KWU9ZS5sZWZ0U2hpZnQoKSxyPXIubGVmdFNoaWZ0KCk7Zm9yKDshci56ZXJvKCk7KTA+PWUuY21wKG8pJiYodD10LmFkZChyKSxvPW8uc3ViKGUpKSxlPWUucmlnaHRTaGlmdCgpLHI9ci5yaWdodFNoaWZ0KCk7cmV0dXJuW3Qsb119LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2Zvcih2YXIgZT1cIlwiLHQ9dGhpczshdC56ZXJvKCk7KXt2YXIgbz0odD10LmRpdigxMCkpWzBdO2U9dFsxXS5sbytlLHQ9b31yZXR1cm5cIlwiPT1lJiYoZT1cIjBcIiksZX0sanNwYi5hcml0aC5VSW50NjQuZnJvbVN0cmluZz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IGpzcGIuYXJpdGguVUludDY0KDAsMCksbz1uZXcganNwYi5hcml0aC5VSW50NjQoMCwwKSxyPTA7cjxlLmxlbmd0aDtyKyspe2lmKFwiMFwiPmVbcl18fFwiOVwiPGVbcl0pcmV0dXJuIG51bGw7dmFyIG49cGFyc2VJbnQoZVtyXSwxMCk7by5sbz1uLHQ9dC5tdWwoMTApLmFkZChvKX1yZXR1cm4gdH0sanNwYi5hcml0aC5VSW50NjQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBqc3BiLmFyaXRoLlVJbnQ2NCh0aGlzLmxvLHRoaXMuaGkpfSxqc3BiLmFyaXRoLkludDY0PWZ1bmN0aW9uKGUsdCl7dGhpcy5sbz1lLHRoaXMuaGk9dH0sanNwYi5hcml0aC5JbnQ2NC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcganNwYi5hcml0aC5JbnQ2NCgodGhpcy5sbytlLmxvJjQyOTQ5NjcyOTUpPj4+MD4+PjAsKCh0aGlzLmhpK2UuaGkmNDI5NDk2NzI5NSk+Pj4wKSsoNDI5NDk2NzI5Njw9dGhpcy5sbytlLmxvPzE6MCk+Pj4wKX0sanNwYi5hcml0aC5JbnQ2NC5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcganNwYi5hcml0aC5JbnQ2NCgodGhpcy5sby1lLmxvJjQyOTQ5NjcyOTUpPj4+MD4+PjAsKCh0aGlzLmhpLWUuaGkmNDI5NDk2NzI5NSk+Pj4wKS0oMD50aGlzLmxvLWUubG8/MTowKT4+PjApfSxqc3BiLmFyaXRoLkludDY0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcganNwYi5hcml0aC5JbnQ2NCh0aGlzLmxvLHRoaXMuaGkpfSxqc3BiLmFyaXRoLkludDY0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPTAhPSgyMTQ3NDgzNjQ4JnRoaXMuaGkpLHQ9bmV3IGpzcGIuYXJpdGguVUludDY0KHRoaXMubG8sdGhpcy5oaSk7cmV0dXJuIGUmJih0PW5ldyBqc3BiLmFyaXRoLlVJbnQ2NCgwLDApLnN1Yih0KSksKGU/XCItXCI6XCJcIikrdC50b1N0cmluZygpfSxqc3BiLmFyaXRoLkludDY0LmZyb21TdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9MDxlLmxlbmd0aCYmXCItXCI9PWVbMF07cmV0dXJuIHQmJihlPWUuc3Vic3RyaW5nKDEpKSxudWxsPT09KGU9anNwYi5hcml0aC5VSW50NjQuZnJvbVN0cmluZyhlKSk/bnVsbDoodCYmKGU9bmV3IGpzcGIuYXJpdGguVUludDY0KDAsMCkuc3ViKGUpKSxuZXcganNwYi5hcml0aC5JbnQ2NChlLmxvLGUuaGkpKX0sanNwYi5CaW5hcnlXcml0ZXI9ZnVuY3Rpb24oKXt0aGlzLmJsb2Nrc189W10sdGhpcy50b3RhbExlbmd0aF89MCx0aGlzLmVuY29kZXJfPW5ldyBqc3BiLkJpbmFyeUVuY29kZXIsdGhpcy5ib29rbWFya3NfPVtdfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUuYXBwZW5kVWludDhBcnJheV89ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5lbmNvZGVyXy5lbmQoKTt0aGlzLmJsb2Nrc18ucHVzaCh0KSx0aGlzLmJsb2Nrc18ucHVzaChlKSx0aGlzLnRvdGFsTGVuZ3RoXys9dC5sZW5ndGgrZS5sZW5ndGh9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS5iZWdpbkRlbGltaXRlZF89ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLGU9dGhpcy5lbmNvZGVyXy5lbmQoKSx0aGlzLmJsb2Nrc18ucHVzaChlKSx0aGlzLnRvdGFsTGVuZ3RoXys9ZS5sZW5ndGgsZS5wdXNoKHRoaXMudG90YWxMZW5ndGhfKSxlfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUuZW5kRGVsaW1pdGVkXz1mdW5jdGlvbihlKXt2YXIgdD1lLnBvcCgpO2Zvcih0PXRoaXMudG90YWxMZW5ndGhfK3RoaXMuZW5jb2Rlcl8ubGVuZ3RoKCktdCxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXQpOzEyNzx0OyllLnB1c2goMTI3JnR8MTI4KSx0Pj4+PTcsdGhpcy50b3RhbExlbmd0aF8rKztlLnB1c2godCksdGhpcy50b3RhbExlbmd0aF8rK30sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU2VyaWFsaXplZE1lc3NhZ2U9ZnVuY3Rpb24oZSx0LG8pe3RoaXMuYXBwZW5kVWludDhBcnJheV8oZS5zdWJhcnJheSh0LG8pKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLm1heWJlV3JpdGVTZXJpYWxpemVkTWVzc2FnZT1mdW5jdGlvbihlLHQsbyl7bnVsbCE9ZSYmbnVsbCE9dCYmbnVsbCE9byYmdGhpcy53cml0ZVNlcmlhbGl6ZWRNZXNzYWdlKGUsdCxvKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5ibG9ja3NfPVtdLHRoaXMuZW5jb2Rlcl8uZW5kKCksdGhpcy50b3RhbExlbmd0aF89MCx0aGlzLmJvb2ttYXJrc189W119LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS5nZXRSZXN1bHRCdWZmZXI9ZnVuY3Rpb24oKXtnb29nLmFzc2VydHMuYXNzZXJ0KDA9PXRoaXMuYm9va21hcmtzXy5sZW5ndGgpO2Zvcih2YXIgZT1uZXcgVWludDhBcnJheSh0aGlzLnRvdGFsTGVuZ3RoXyt0aGlzLmVuY29kZXJfLmxlbmd0aCgpKSx0PXRoaXMuYmxvY2tzXyxvPXQubGVuZ3RoLHI9MCxuPTA7bjxvO24rKyl7dmFyIHM9dFtuXTtlLnNldChzLHIpLHIrPXMubGVuZ3RofXJldHVybiB0PXRoaXMuZW5jb2Rlcl8uZW5kKCksZS5zZXQodCxyKSxyKz10Lmxlbmd0aCxnb29nLmFzc2VydHMuYXNzZXJ0KHI9PWUubGVuZ3RoKSx0aGlzLmJsb2Nrc189W2VdLGV9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS5nZXRSZXN1bHRCYXNlNjRTdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuY3J5cHQuYmFzZTY0LmVuY29kZUJ5dGVBcnJheSh0aGlzLmdldFJlc3VsdEJ1ZmZlcigpLGUpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUuYmVnaW5TdWJNZXNzYWdlPWZ1bmN0aW9uKGUpe3RoaXMuYm9va21hcmtzXy5wdXNoKHRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLmVuZFN1Yk1lc3NhZ2U9ZnVuY3Rpb24oKXtnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXRoaXMuYm9va21hcmtzXy5sZW5ndGgpLHRoaXMuZW5kRGVsaW1pdGVkXyh0aGlzLmJvb2ttYXJrc18ucG9wKCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVGaWVsZEhlYWRlcl89ZnVuY3Rpb24oZSx0KXtnb29nLmFzc2VydHMuYXNzZXJ0KDE8PWUmJmU9PU1hdGguZmxvb3IoZSkpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDgqZSt0KX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlQW55PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj1qc3BiLkJpbmFyeUNvbnN0YW50cy5GaWVsZFR5cGU7c3dpdGNoKGUpe2Nhc2Ugci5ET1VCTEU6dGhpcy53cml0ZURvdWJsZSh0LG8pO2JyZWFrO2Nhc2Ugci5GTE9BVDp0aGlzLndyaXRlRmxvYXQodCxvKTticmVhaztjYXNlIHIuSU5UNjQ6dGhpcy53cml0ZUludDY0KHQsbyk7YnJlYWs7Y2FzZSByLlVJTlQ2NDp0aGlzLndyaXRlVWludDY0KHQsbyk7YnJlYWs7Y2FzZSByLklOVDMyOnRoaXMud3JpdGVJbnQzMih0LG8pO2JyZWFrO2Nhc2Ugci5GSVhFRDY0OnRoaXMud3JpdGVGaXhlZDY0KHQsbyk7YnJlYWs7Y2FzZSByLkZJWEVEMzI6dGhpcy53cml0ZUZpeGVkMzIodCxvKTticmVhaztjYXNlIHIuQk9PTDp0aGlzLndyaXRlQm9vbCh0LG8pO2JyZWFrO2Nhc2Ugci5TVFJJTkc6dGhpcy53cml0ZVN0cmluZyh0LG8pO2JyZWFrO2Nhc2Ugci5HUk9VUDpnb29nLmFzc2VydHMuZmFpbChcIkdyb3VwIGZpZWxkIHR5cGUgbm90IHN1cHBvcnRlZCBpbiB3cml0ZUFueSgpXCIpO2JyZWFrO2Nhc2Ugci5NRVNTQUdFOmdvb2cuYXNzZXJ0cy5mYWlsKFwiTWVzc2FnZSBmaWVsZCB0eXBlIG5vdCBzdXBwb3J0ZWQgaW4gd3JpdGVBbnkoKVwiKTticmVhaztjYXNlIHIuQllURVM6dGhpcy53cml0ZUJ5dGVzKHQsbyk7YnJlYWs7Y2FzZSByLlVJTlQzMjp0aGlzLndyaXRlVWludDMyKHQsbyk7YnJlYWs7Y2FzZSByLkVOVU06dGhpcy53cml0ZUVudW0odCxvKTticmVhaztjYXNlIHIuU0ZJWEVEMzI6dGhpcy53cml0ZVNmaXhlZDMyKHQsbyk7YnJlYWs7Y2FzZSByLlNGSVhFRDY0OnRoaXMud3JpdGVTZml4ZWQ2NCh0LG8pO2JyZWFrO2Nhc2Ugci5TSU5UMzI6dGhpcy53cml0ZVNpbnQzMih0LG8pO2JyZWFrO2Nhc2Ugci5TSU5UNjQ6dGhpcy53cml0ZVNpbnQ2NCh0LG8pO2JyZWFrO2Nhc2Ugci5GSEFTSDY0OnRoaXMud3JpdGVGaXhlZEhhc2g2NCh0LG8pO2JyZWFrO2Nhc2Ugci5WSEFTSDY0OnRoaXMud3JpdGVWYXJpbnRIYXNoNjQodCxvKTticmVhaztkZWZhdWx0Omdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCBmaWVsZCB0eXBlIGluIHdyaXRlQW55KClcIil9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVVbnNpZ25lZFZhcmludDMyXz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMih0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNpZ25lZFZhcmludDMyXz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlU2lnbmVkVmFyaW50MzIodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVVbnNpZ25lZFZhcmludDY0Xz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQ2NCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNpZ25lZFZhcmludDY0Xz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlU2lnbmVkVmFyaW50NjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnQzMl89ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYodGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVppZ3phZ1ZhcmludDMyKHQpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlWmlnemFnVmFyaW50NjRfPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVaaWd6YWdWYXJpbnQ2NCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVppZ3phZ1ZhcmludDY0U3RyaW5nXz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlWmlnemFnVmFyaW50NjRTdHJpbmcodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjRfPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVJbnQzMj1mdW5jdGlvbihlLHQpe251bGwhPXQmJihnb29nLmFzc2VydHMuYXNzZXJ0KHQ+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxKSx0aGlzLndyaXRlU2lnbmVkVmFyaW50MzJfKGUsdCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVJbnQzMlN0cmluZz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0PXBhcnNlSW50KHQsMTApLGdvb2cuYXNzZXJ0cy5hc3NlcnQodD49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSYmdDxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEpLHRoaXMud3JpdGVTaWduZWRWYXJpbnQzMl8oZSx0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUludDY0PWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQodD49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyYmdDxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMpLHRoaXMud3JpdGVTaWduZWRWYXJpbnQ2NF8oZSx0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUludDY0U3RyaW5nPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKHQ9anNwYi5hcml0aC5JbnQ2NC5mcm9tU3RyaW5nKHQpLHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVTcGxpdFZhcmludDY0KHQubG8sdC5oaSkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVVaW50MzI9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCgwPD10JiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMiksdGhpcy53cml0ZVVuc2lnbmVkVmFyaW50MzJfKGUsdCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVVaW50MzJTdHJpbmc9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYodD1wYXJzZUludCh0LDEwKSxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXQmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMyKSx0aGlzLndyaXRlVW5zaWduZWRWYXJpbnQzMl8oZSx0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVVpbnQ2ND1mdW5jdGlvbihlLHQpe251bGwhPXQmJihnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXQmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzY0KSx0aGlzLndyaXRlVW5zaWduZWRWYXJpbnQ2NF8oZSx0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVVpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0PWpzcGIuYXJpdGguVUludDY0LmZyb21TdHJpbmcodCksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0VmFyaW50NjQodC5sbyx0LmhpKSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNpbnQzMj1mdW5jdGlvbihlLHQpe251bGwhPXQmJihnb29nLmFzc2VydHMuYXNzZXJ0KHQ+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxKSx0aGlzLndyaXRlWmlnemFnVmFyaW50MzJfKGUsdCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVTaW50NjQ9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCh0Pj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzYzJiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyksdGhpcy53cml0ZVppZ3phZ1ZhcmludDY0XyhlLHQpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU2ludEhhc2g2ND1mdW5jdGlvbihlLHQpe251bGwhPXQmJnRoaXMud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjRfKGUsdCl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe251bGwhPXQmJnRoaXMud3JpdGVaaWd6YWdWYXJpbnQ2NFN0cmluZ18oZSx0KX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlRml4ZWQzMj1mdW5jdGlvbihlLHQpe251bGwhPXQmJihnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXQmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMyKSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQzMiksdGhpcy5lbmNvZGVyXy53cml0ZVVpbnQzMih0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUZpeGVkNjQ9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCgwPD10JiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182NCksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVaW50NjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVGaXhlZDY0U3RyaW5nPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKHQ9anNwYi5hcml0aC5VSW50NjQuZnJvbVN0cmluZyh0KSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCksdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0Rml4ZWQ2NCh0LmxvLHQuaGkpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU2ZpeGVkMzI9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCh0Pj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxJiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIpLHRoaXMuZW5jb2Rlcl8ud3JpdGVJbnQzMih0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNmaXhlZDY0PWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQodD49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyYmdDxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMpLHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0KSx0aGlzLmVuY29kZXJfLndyaXRlSW50NjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVTZml4ZWQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0PWpzcGIuYXJpdGguSW50NjQuZnJvbVN0cmluZyh0KSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCksdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0Rml4ZWQ2NCh0LmxvLHQuaGkpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlRmxvYXQ9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYodGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIpLHRoaXMuZW5jb2Rlcl8ud3JpdGVGbG9hdCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZURvdWJsZT1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCksdGhpcy5lbmNvZGVyXy53cml0ZURvdWJsZSh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUJvb2w9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydChcImJvb2xlYW5cIj09dHlwZW9mIHR8fFwibnVtYmVyXCI9PXR5cGVvZiB0KSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlQm9vbCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUVudW09ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCh0Pj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxJiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVNpZ25lZFZhcmludDMyKHQpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU3RyaW5nPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKGU9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSksdGhpcy5lbmNvZGVyXy53cml0ZVN0cmluZyh0KSx0aGlzLmVuZERlbGltaXRlZF8oZSkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVCeXRlcz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0PWpzcGIudXRpbHMuYnl0ZVNvdXJjZVRvVWludDhBcnJheSh0KSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMih0Lmxlbmd0aCksdGhpcy5hcHBlbmRVaW50OEFycmF5Xyh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZU1lc3NhZ2U9ZnVuY3Rpb24oZSx0LG8pe251bGwhPXQmJihlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpLG8odCx0aGlzKSx0aGlzLmVuZERlbGltaXRlZF8oZSkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVNZXNzYWdlU2V0PWZ1bmN0aW9uKGUsdCxvKXtudWxsIT10JiYodGhpcy53cml0ZUZpZWxkSGVhZGVyXygxLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlNUQVJUX0dST1VQKSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKDIsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlU2lnbmVkVmFyaW50MzIoZSksZT10aGlzLmJlZ2luRGVsaW1pdGVkXygzKSxvKHQsdGhpcyksdGhpcy5lbmREZWxpbWl0ZWRfKGUpLHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oMSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5FTkRfR1JPVVApKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlR3JvdXA9ZnVuY3Rpb24oZSx0LG8pe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuU1RBUlRfR1JPVVApLG8odCx0aGlzKSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRU5EX0dST1VQKSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUZpeGVkSGFzaDY0PWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQoOD09dC5sZW5ndGgpLHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0KSx0aGlzLmVuY29kZXJfLndyaXRlRml4ZWRIYXNoNjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVWYXJpbnRIYXNoNjQ9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCg4PT10Lmxlbmd0aCksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVZhcmludEhhc2g2NCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNwbGl0Rml4ZWQ2ND1mdW5jdGlvbihlLHQsbyl7dGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVTcGxpdEZpeGVkNjQodCxvKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU3BsaXRWYXJpbnQ2ND1mdW5jdGlvbihlLHQsbyl7dGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0VmFyaW50NjQodCxvKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU3BsaXRaaWd6YWdWYXJpbnQ2ND1mdW5jdGlvbihlLHQsbyl7dGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCk7dmFyIHI9dGhpcy5lbmNvZGVyXztqc3BiLnV0aWxzLnRvWmlnemFnNjQodCxvLChmdW5jdGlvbihlLHQpe3Iud3JpdGVTcGxpdFZhcmludDY0KGU+Pj4wLHQ+Pj4wKX0pKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRJbnQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVNpZ25lZFZhcmludDMyXyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZEludDMyU3RyaW5nPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dClmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLndyaXRlSW50MzJTdHJpbmcoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRJbnQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVNpZ25lZFZhcmludDY0XyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNwbGl0Rml4ZWQ2ND1mdW5jdGlvbihlLHQsbyxyKXtpZihudWxsIT10KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRoaXMud3JpdGVTcGxpdEZpeGVkNjQoZSxvKHRbbl0pLHIodFtuXSkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNwbGl0VmFyaW50NjQ9ZnVuY3Rpb24oZSx0LG8scil7aWYobnVsbCE9dClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0aGlzLndyaXRlU3BsaXRWYXJpbnQ2NChlLG8odFtuXSkscih0W25dKSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkU3BsaXRaaWd6YWdWYXJpbnQ2ND1mdW5jdGlvbihlLHQsbyxyKXtpZihudWxsIT10KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRoaXMud3JpdGVTcGxpdFppZ3phZ1ZhcmludDY0KGUsbyh0W25dKSxyKHRbbl0pKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRJbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZUludDY0U3RyaW5nKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkVWludDMyPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dClmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLndyaXRlVW5zaWduZWRWYXJpbnQzMl8oZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRVaW50MzJTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVVaW50MzJTdHJpbmcoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRVaW50NjQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVVbnNpZ25lZFZhcmludDY0XyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFVpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVVpbnQ2NFN0cmluZyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNpbnQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVppZ3phZ1ZhcmludDMyXyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNpbnQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVppZ3phZ1ZhcmludDY0XyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVppZ3phZ1ZhcmludDY0U3RyaW5nXyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNpbnRIYXNoNjQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjRfKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRml4ZWQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZUZpeGVkMzIoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRGaXhlZDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dClmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLndyaXRlRml4ZWQ2NChlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZEZpeGVkNjRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVGaXhlZDY0U3RyaW5nKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkU2ZpeGVkMzI9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVTZml4ZWQzMihlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNmaXhlZDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dClmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLndyaXRlU2ZpeGVkNjQoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRTZml4ZWQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVNmaXhlZDY0U3RyaW5nKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRmxvYXQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVGbG9hdChlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZERvdWJsZT1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZURvdWJsZShlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZEJvb2w9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVCb29sKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRW51bT1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZUVudW0oZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVTdHJpbmcoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRCeXRlcz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZUJ5dGVzKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkTWVzc2FnZT1mdW5jdGlvbihlLHQsbyl7aWYobnVsbCE9dClmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7byh0W3JdLHRoaXMpLHRoaXMuZW5kRGVsaW1pdGVkXyhuKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkR3JvdXA9ZnVuY3Rpb24oZSx0LG8pe2lmKG51bGwhPXQpZm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlNUQVJUX0dST1VQKSxvKHRbcl0sdGhpcyksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkVORF9HUk9VUCl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRml4ZWRIYXNoNjQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVGaXhlZEhhc2g2NChlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFZhcmludEhhc2g2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVZhcmludEhhc2g2NChlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRJbnQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVTaWduZWRWYXJpbnQzMih0W29dKTt0aGlzLmVuZERlbGltaXRlZF8oZSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRJbnQzMlN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVTaWduZWRWYXJpbnQzMihwYXJzZUludCh0W29dLDEwKSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkSW50NjQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLmVuY29kZXJfLndyaXRlU2lnbmVkVmFyaW50NjQodFtvXSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkU3BsaXRGaXhlZDY0PWZ1bmN0aW9uKGUsdCxvLHIpe2lmKG51bGwhPXQpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0Rml4ZWQ2NChvKHRbbl0pLHIodFtuXSkpO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFNwbGl0VmFyaW50NjQ9ZnVuY3Rpb24oZSx0LG8scil7aWYobnVsbCE9dCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0aGlzLmVuY29kZXJfLndyaXRlU3BsaXRWYXJpbnQ2NChvKHRbbl0pLHIodFtuXSkpO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFNwbGl0WmlnemFnVmFyaW50NjQ9ZnVuY3Rpb24oZSx0LG8scil7aWYobnVsbCE9dCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG49dGhpcy5lbmNvZGVyXyxzPTA7czx0Lmxlbmd0aDtzKyspanNwYi51dGlscy50b1ppZ3phZzY0KG8odFtzXSkscih0W3NdKSwoZnVuY3Rpb24oZSx0KXtuLndyaXRlU3BsaXRWYXJpbnQ2NChlPj4+MCx0Pj4+MCl9KSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkSW50NjRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHI9anNwYi5hcml0aC5JbnQ2NC5mcm9tU3RyaW5nKHRbb10pO3RoaXMuZW5jb2Rlcl8ud3JpdGVTcGxpdFZhcmludDY0KHIubG8sci5oaSl9dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkVWludDMyPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy5lbmNvZGVyXy53cml0ZVVuc2lnbmVkVmFyaW50MzIodFtvXSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkVWludDMyU3RyaW5nPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy5lbmNvZGVyXy53cml0ZVVuc2lnbmVkVmFyaW50MzIocGFyc2VJbnQodFtvXSwxMCkpO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFVpbnQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDY0KHRbb10pO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFVpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcj1qc3BiLmFyaXRoLlVJbnQ2NC5mcm9tU3RyaW5nKHRbb10pO3RoaXMuZW5jb2Rlcl8ud3JpdGVTcGxpdFZhcmludDY0KHIubG8sci5oaSl9dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkU2ludDMyPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy5lbmNvZGVyXy53cml0ZVppZ3phZ1ZhcmludDMyKHRbb10pO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFNpbnQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVaaWd6YWdWYXJpbnQ2NCh0W29dKTt0aGlzLmVuZERlbGltaXRlZF8oZSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTaW50NjRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLmVuY29kZXJfLndyaXRlWmlnemFnVmFyaW50SGFzaDY0KGpzcGIudXRpbHMuZGVjaW1hbFN0cmluZ1RvSGFzaDY0KHRbb10pKTt0aGlzLmVuZERlbGltaXRlZF8oZSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTaW50SGFzaDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy5lbmNvZGVyXy53cml0ZVppZ3phZ1ZhcmludEhhc2g2NCh0W29dKTt0aGlzLmVuZERlbGltaXRlZF8oZSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRGaXhlZDMyPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpZm9yKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDQqdC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmVuY29kZXJfLndyaXRlVWludDMyKHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRGaXhlZDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpZm9yKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDgqdC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmVuY29kZXJfLndyaXRlVWludDY0KHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRGaXhlZDY0U3RyaW5nPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpZm9yKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDgqdC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG89anNwYi5hcml0aC5VSW50NjQuZnJvbVN0cmluZyh0W2VdKTt0aGlzLmVuY29kZXJfLndyaXRlU3BsaXRGaXhlZDY0KG8ubG8sby5oaSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTZml4ZWQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKWZvcih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMig0KnQubGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5lbmNvZGVyXy53cml0ZUludDMyKHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTZml4ZWQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKWZvcih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMig4KnQubGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5lbmNvZGVyXy53cml0ZUludDY0KHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTZml4ZWQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKWZvcih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMig4KnQubGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5lbmNvZGVyXy53cml0ZUludDY0U3RyaW5nKHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRGbG9hdD1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKWZvcih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMig0KnQubGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5lbmNvZGVyXy53cml0ZUZsb2F0KHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWREb3VibGU9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aClmb3IodGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkRFTElNSVRFRCksdGhpcy5lbmNvZGVyXy53cml0ZVVuc2lnbmVkVmFyaW50MzIoOCp0Lmxlbmd0aCksZT0wO2U8dC5sZW5ndGg7ZSsrKXRoaXMuZW5jb2Rlcl8ud3JpdGVEb3VibGUodFtlXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZEJvb2w9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aClmb3IodGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkRFTElNSVRFRCksdGhpcy5lbmNvZGVyXy53cml0ZVVuc2lnbmVkVmFyaW50MzIodC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmVuY29kZXJfLndyaXRlQm9vbCh0W2VdKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkRW51bT1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVFbnVtKHRbb10pO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZEZpeGVkSGFzaDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpZm9yKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDgqdC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmVuY29kZXJfLndyaXRlRml4ZWRIYXNoNjQodFtlXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFZhcmludEhhc2g2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVWYXJpbnRIYXNoNjQodFtvXSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5NYXA9ZnVuY3Rpb24oZSx0KXt0aGlzLmFycl89ZSx0aGlzLnZhbHVlQ3Rvcl89dCx0aGlzLm1hcF89e30sdGhpcy5hcnJDbGVhbj0hMCwwPHRoaXMuYXJyXy5sZW5ndGgmJnRoaXMubG9hZEZyb21BcnJheV8oKX0sanNwYi5NYXAucHJvdG90eXBlLmxvYWRGcm9tQXJyYXlfPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmFycl8ubGVuZ3RoO2UrKyl7dmFyIHQ9dGhpcy5hcnJfW2VdLG89dFswXTt0aGlzLm1hcF9bby50b1N0cmluZygpXT1uZXcganNwYi5NYXAuRW50cnlfKG8sdFsxXSl9dGhpcy5hcnJDbGVhbj0hMH0sanNwYi5NYXAucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtpZih0aGlzLmFyckNsZWFuKXtpZih0aGlzLnZhbHVlQ3Rvcl8pe3ZhciBlLHQ9dGhpcy5tYXBfO2ZvcihlIGluIHQpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkpe3ZhciBvPXRbZV0udmFsdWVXcmFwcGVyO28mJm8udG9BcnJheSgpfX19ZWxzZXtmb3IodGhpcy5hcnJfLmxlbmd0aD0wLCh0PXRoaXMuc3RyaW5nS2V5c18oKSkuc29ydCgpLGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIHI9dGhpcy5tYXBfW3RbZV1dOyhvPXIudmFsdWVXcmFwcGVyKSYmby50b0FycmF5KCksdGhpcy5hcnJfLnB1c2goW3Iua2V5LHIudmFsdWVdKX10aGlzLmFyckNsZWFuPSEwfXJldHVybiB0aGlzLmFycl99LGpzcGIuTWFwLnByb3RvdHlwZS50b09iamVjdD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbz10aGlzLnRvQXJyYXkoKSxyPVtdLG49MDtuPG8ubGVuZ3RoO24rKyl7dmFyIHM9dGhpcy5tYXBfW29bbl1bMF0udG9TdHJpbmcoKV07dGhpcy53cmFwRW50cnlfKHMpO3ZhciBpPXMudmFsdWVXcmFwcGVyO2k/KGdvb2cuYXNzZXJ0cy5hc3NlcnQodCksci5wdXNoKFtzLmtleSx0KGUsaSldKSk6ci5wdXNoKFtzLmtleSxzLnZhbHVlXSl9cmV0dXJuIHJ9LGpzcGIuTWFwLmZyb21PYmplY3Q9ZnVuY3Rpb24oZSx0LG8pe3Q9bmV3IGpzcGIuTWFwKFtdLHQpO2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdWzBdLHM9byhlW3JdWzFdKTt0LnNldChuLHMpfXJldHVybiB0fSxqc3BiLk1hcC5BcnJheUl0ZXJhdG9ySXRlcmFibGVfPWZ1bmN0aW9uKGUpe3RoaXMuaWR4Xz0wLHRoaXMuYXJyXz1lfSxqc3BiLk1hcC5BcnJheUl0ZXJhdG9ySXRlcmFibGVfLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWR4Xzx0aGlzLmFycl8ubGVuZ3RoP3tkb25lOiExLHZhbHVlOnRoaXMuYXJyX1t0aGlzLmlkeF8rK119Ontkb25lOiEwLHZhbHVlOnZvaWQgMH19LFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJihqc3BiLk1hcC5BcnJheUl0ZXJhdG9ySXRlcmFibGVfLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxqc3BiLk1hcC5wcm90b3R5cGUuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyaW5nS2V5c18oKS5sZW5ndGh9LGpzcGIuTWFwLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMubWFwXz17fSx0aGlzLmFyckNsZWFuPSExfSxqc3BiLk1hcC5wcm90b3R5cGUuZGVsPWZ1bmN0aW9uKGUpe2U9ZS50b1N0cmluZygpO3ZhciB0PXRoaXMubWFwXy5oYXNPd25Qcm9wZXJ0eShlKTtyZXR1cm4gZGVsZXRlIHRoaXMubWFwX1tlXSx0aGlzLmFyckNsZWFuPSExLHR9LGpzcGIuTWFwLnByb3RvdHlwZS5nZXRFbnRyeUxpc3Q9ZnVuY3Rpb24oKXt2YXIgZT1bXSx0PXRoaXMuc3RyaW5nS2V5c18oKTt0LnNvcnQoKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHI9dGhpcy5tYXBfW3Rbb11dO2UucHVzaChbci5rZXksci52YWx1ZV0pfXJldHVybiBlfSxqc3BiLk1hcC5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigpe3ZhciBlPVtdLHQ9dGhpcy5zdHJpbmdLZXlzXygpO3Quc29ydCgpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcj10aGlzLm1hcF9bdFtvXV07ZS5wdXNoKFtyLmtleSx0aGlzLndyYXBFbnRyeV8ocildKX1yZXR1cm4gbmV3IGpzcGIuTWFwLkFycmF5SXRlcmF0b3JJdGVyYWJsZV8oZSl9LGpzcGIuTWFwLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7dmFyIGU9W10sdD10aGlzLnN0cmluZ0tleXNfKCk7dC5zb3J0KCk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspZS5wdXNoKHRoaXMubWFwX1t0W29dXS5rZXkpO3JldHVybiBuZXcganNwYi5NYXAuQXJyYXlJdGVyYXRvckl0ZXJhYmxlXyhlKX0sanNwYi5NYXAucHJvdG90eXBlLnZhbHVlcz1mdW5jdGlvbigpe3ZhciBlPVtdLHQ9dGhpcy5zdHJpbmdLZXlzXygpO3Quc29ydCgpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKWUucHVzaCh0aGlzLndyYXBFbnRyeV8odGhpcy5tYXBfW3Rbb11dKSk7cmV0dXJuIG5ldyBqc3BiLk1hcC5BcnJheUl0ZXJhdG9ySXRlcmFibGVfKGUpfSxqc3BiLk1hcC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlLHQpe3ZhciBvPXRoaXMuc3RyaW5nS2V5c18oKTtvLnNvcnQoKTtmb3IodmFyIHI9MDtyPG8ubGVuZ3RoO3IrKyl7dmFyIG49dGhpcy5tYXBfW29bcl1dO2UuY2FsbCh0LHRoaXMud3JhcEVudHJ5XyhuKSxuLmtleSx0aGlzKX19LGpzcGIuTWFwLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbz1uZXcganNwYi5NYXAuRW50cnlfKGUpO3JldHVybiB0aGlzLnZhbHVlQ3Rvcl8/KG8udmFsdWVXcmFwcGVyPXQsby52YWx1ZT10LnRvQXJyYXkoKSk6by52YWx1ZT10LHRoaXMubWFwX1tlLnRvU3RyaW5nKCldPW8sdGhpcy5hcnJDbGVhbj0hMSx0aGlzfSxqc3BiLk1hcC5wcm90b3R5cGUud3JhcEVudHJ5Xz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy52YWx1ZUN0b3JfPyhlLnZhbHVlV3JhcHBlcnx8KGUudmFsdWVXcmFwcGVyPW5ldyB0aGlzLnZhbHVlQ3Rvcl8oZS52YWx1ZSkpLGUudmFsdWVXcmFwcGVyKTplLnZhbHVlfSxqc3BiLk1hcC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe2lmKGU9dGhpcy5tYXBfW2UudG9TdHJpbmcoKV0pcmV0dXJuIHRoaXMud3JhcEVudHJ5XyhlKX0sanNwYi5NYXAucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gZS50b1N0cmluZygpaW4gdGhpcy5tYXBffSxqc3BiLk1hcC5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKGUsdCxvLHIsbil7dmFyIHM9dGhpcy5zdHJpbmdLZXlzXygpO3Muc29ydCgpO2Zvcih2YXIgaT0wO2k8cy5sZW5ndGg7aSsrKXt2YXIgYT10aGlzLm1hcF9bc1tpXV07dC5iZWdpblN1Yk1lc3NhZ2UoZSksby5jYWxsKHQsMSxhLmtleSksdGhpcy52YWx1ZUN0b3JfP3IuY2FsbCh0LDIsdGhpcy53cmFwRW50cnlfKGEpLG4pOnIuY2FsbCh0LDIsYS52YWx1ZSksdC5lbmRTdWJNZXNzYWdlKCl9fSxqc3BiLk1hcC5kZXNlcmlhbGl6ZUJpbmFyeT1mdW5jdGlvbihlLHQsbyxyLG4scyxpKXtmb3IoO3QubmV4dEZpZWxkKCkmJiF0LmlzRW5kR3JvdXAoKTspe3ZhciBhPXQuZ2V0RmllbGROdW1iZXIoKTsxPT1hP3M9by5jYWxsKHQpOjI9PWEmJihlLnZhbHVlQ3Rvcl8/KGdvb2cuYXNzZXJ0cy5hc3NlcnQobiksaXx8KGk9bmV3IGUudmFsdWVDdG9yXyksci5jYWxsKHQsaSxuKSk6aT1yLmNhbGwodCkpfWdvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9cyksZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1pKSxlLnNldChzLGkpfSxqc3BiLk1hcC5wcm90b3R5cGUuc3RyaW5nS2V5c189ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMubWFwXyxvPVtdO2ZvcihlIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJm8ucHVzaChlKTtyZXR1cm4gb30sanNwYi5NYXAuRW50cnlfPWZ1bmN0aW9uKGUsdCl7dGhpcy5rZXk9ZSx0aGlzLnZhbHVlPXQsdGhpcy52YWx1ZVdyYXBwZXI9dm9pZCAwfSxqc3BiLkV4dGVuc2lvbkZpZWxkSW5mbz1mdW5jdGlvbihlLHQsbyxyLG4pe3RoaXMuZmllbGRJbmRleD1lLHRoaXMuZmllbGROYW1lPXQsdGhpcy5jdG9yPW8sdGhpcy50b09iamVjdEZuPXIsdGhpcy5pc1JlcGVhdGVkPW59LGpzcGIuRXh0ZW5zaW9uRmllbGRCaW5hcnlJbmZvPWZ1bmN0aW9uKGUsdCxvLHIsbixzKXt0aGlzLmZpZWxkSW5mbz1lLHRoaXMuYmluYXJ5UmVhZGVyRm49dCx0aGlzLmJpbmFyeVdyaXRlckZuPW8sdGhpcy5iaW5hcnlNZXNzYWdlU2VyaWFsaXplRm49cix0aGlzLmJpbmFyeU1lc3NhZ2VEZXNlcmlhbGl6ZUZuPW4sdGhpcy5pc1BhY2tlZD1zfSxqc3BiLkV4dGVuc2lvbkZpZWxkSW5mby5wcm90b3R5cGUuaXNNZXNzYWdlVHlwZT1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5jdG9yfSxqc3BiLk1lc3NhZ2U9ZnVuY3Rpb24oKXt9LGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1Q9ITAsanNwYi5NZXNzYWdlLkdFTkVSQVRFX0ZST01fT0JKRUNUPSFnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFLGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19TVFJJTkc9ITAsanNwYi5NZXNzYWdlLkFTU1VNRV9MT0NBTF9BUlJBWVM9ITEsanNwYi5NZXNzYWdlLlNFUklBTElaRV9FTVBUWV9UUkFJTElOR19GSUVMRFM9ITAsanNwYi5NZXNzYWdlLlNVUFBPUlRTX1VJTlQ4QVJSQVlfPVwiZnVuY3Rpb25cIj09dHlwZW9mIFVpbnQ4QXJyYXksanNwYi5NZXNzYWdlLnByb3RvdHlwZS5nZXRKc1BiTWVzc2FnZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZUlkX30sanNwYi5NZXNzYWdlLmdldEluZGV4Xz1mdW5jdGlvbihlLHQpe3JldHVybiB0K2UuYXJyYXlJbmRleE9mZnNldF99LGpzcGIuTWVzc2FnZS5oaWRkZW5FUzZQcm9wZXJ0eV89ZnVuY3Rpb24oKXt9LGpzcGIuTWVzc2FnZS5nZXRGaWVsZE51bWJlcl89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC1lLmFycmF5SW5kZXhPZmZzZXRffSxqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZT1mdW5jdGlvbihlLHQsbyxyLG4scyl7aWYoZS53cmFwcGVyc189bnVsbCx0fHwodD1vP1tvXTpbXSksZS5tZXNzYWdlSWRfPW8/U3RyaW5nKG8pOnZvaWQgMCxlLmFycmF5SW5kZXhPZmZzZXRfPTA9PT1vPy0xOjAsZS5hcnJheT10LGpzcGIuTWVzc2FnZS5pbml0UGl2b3RBbmRFeHRlbnNpb25PYmplY3RfKGUsciksZS5jb252ZXJ0ZWRQcmltaXRpdmVGaWVsZHNfPXt9LGpzcGIuTWVzc2FnZS5TRVJJQUxJWkVfRU1QVFlfVFJBSUxJTkdfRklFTERTfHwoZS5yZXBlYXRlZEZpZWxkcz1uKSxuKWZvcih0PTA7dDxuLmxlbmd0aDt0KyspKG89blt0XSk8ZS5waXZvdF8/KG89anNwYi5NZXNzYWdlLmdldEluZGV4XyhlLG8pLGUuYXJyYXlbb109ZS5hcnJheVtvXXx8anNwYi5NZXNzYWdlLkVNUFRZX0xJU1RfU0VOVElORUxfKTooanNwYi5NZXNzYWdlLm1heWJlSW5pdEVtcHR5RXh0ZW5zaW9uT2JqZWN0XyhlKSxlLmV4dGVuc2lvbk9iamVjdF9bb109ZS5leHRlbnNpb25PYmplY3RfW29dfHxqc3BiLk1lc3NhZ2UuRU1QVFlfTElTVF9TRU5USU5FTF8pO2lmKHMmJnMubGVuZ3RoKWZvcih0PTA7dDxzLmxlbmd0aDt0KyspanNwYi5NZXNzYWdlLmNvbXB1dGVPbmVvZkNhc2UoZSxzW3RdKX0sanNwYi5NZXNzYWdlLkVNUFRZX0xJU1RfU0VOVElORUxfPWdvb2cuREVCVUcmJk9iamVjdC5mcmVlemU/T2JqZWN0LmZyZWV6ZShbXSk6W10sanNwYi5NZXNzYWdlLmlzQXJyYXlfPWZ1bmN0aW9uKGUpe3JldHVybiBqc3BiLk1lc3NhZ2UuQVNTVU1FX0xPQ0FMX0FSUkFZUz9lIGluc3RhbmNlb2YgQXJyYXk6QXJyYXkuaXNBcnJheShlKX0sanNwYi5NZXNzYWdlLmlzRXh0ZW5zaW9uT2JqZWN0Xz1mdW5jdGlvbihlKXtyZXR1cm4hKG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgZXx8anNwYi5NZXNzYWdlLmlzQXJyYXlfKGUpfHxqc3BiLk1lc3NhZ2UuU1VQUE9SVFNfVUlOVDhBUlJBWV8mJmUgaW5zdGFuY2VvZiBVaW50OEFycmF5KX0sanNwYi5NZXNzYWdlLmluaXRQaXZvdEFuZEV4dGVuc2lvbk9iamVjdF89ZnVuY3Rpb24oZSx0KXt2YXIgbz1lLmFycmF5Lmxlbmd0aCxyPS0xO2lmKG8mJihyPW8tMSxvPWUuYXJyYXlbcl0sanNwYi5NZXNzYWdlLmlzRXh0ZW5zaW9uT2JqZWN0XyhvKSkpcmV0dXJuIGUucGl2b3RfPWpzcGIuTWVzc2FnZS5nZXRGaWVsZE51bWJlcl8oZSxyKSx2b2lkKGUuZXh0ZW5zaW9uT2JqZWN0Xz1vKTstMTx0PyhlLnBpdm90Xz1NYXRoLm1heCh0LGpzcGIuTWVzc2FnZS5nZXRGaWVsZE51bWJlcl8oZSxyKzEpKSxlLmV4dGVuc2lvbk9iamVjdF89bnVsbCk6ZS5waXZvdF89TnVtYmVyLk1BWF9WQUxVRX0sanNwYi5NZXNzYWdlLm1heWJlSW5pdEVtcHR5RXh0ZW5zaW9uT2JqZWN0Xz1mdW5jdGlvbihlKXt2YXIgdD1qc3BiLk1lc3NhZ2UuZ2V0SW5kZXhfKGUsZS5waXZvdF8pO2UuYXJyYXlbdF18fChlLmV4dGVuc2lvbk9iamVjdF89ZS5hcnJheVt0XT17fSl9LGpzcGIuTWVzc2FnZS50b09iamVjdExpc3Q9ZnVuY3Rpb24oZSx0LG8pe2Zvcih2YXIgcj1bXSxuPTA7bjxlLmxlbmd0aDtuKyspcltuXT10LmNhbGwoZVtuXSxvLGVbbl0pO3JldHVybiByfSxqc3BiLk1lc3NhZ2UudG9PYmplY3RFeHRlbnNpb249ZnVuY3Rpb24oZSx0LG8scixuKXtmb3IodmFyIHMgaW4gbyl7dmFyIGk9b1tzXSxhPXIuY2FsbChlLGkpO2lmKG51bGwhPWEpe2Zvcih2YXIgZyBpbiBpLmZpZWxkTmFtZSlpZihpLmZpZWxkTmFtZS5oYXNPd25Qcm9wZXJ0eShnKSlicmVhazt0W2ddPWkudG9PYmplY3RGbj9pLmlzUmVwZWF0ZWQ/anNwYi5NZXNzYWdlLnRvT2JqZWN0TGlzdChhLGkudG9PYmplY3RGbixuKTppLnRvT2JqZWN0Rm4obixhKTphfX19LGpzcGIuTWVzc2FnZS5zZXJpYWxpemVCaW5hcnlFeHRlbnNpb25zPWZ1bmN0aW9uKGUsdCxvLHIpe2Zvcih2YXIgbiBpbiBvKXt2YXIgcz1vW25dLGk9cy5maWVsZEluZm87aWYoIXMuYmluYXJ5V3JpdGVyRm4pdGhyb3cgRXJyb3IoXCJNZXNzYWdlIGV4dGVuc2lvbiBwcmVzZW50IHRoYXQgd2FzIGdlbmVyYXRlZCB3aXRob3V0IGJpbmFyeSBzZXJpYWxpemF0aW9uIHN1cHBvcnRcIik7dmFyIGE9ci5jYWxsKGUsaSk7aWYobnVsbCE9YSlpZihpLmlzTWVzc2FnZVR5cGUoKSl7aWYoIXMuYmluYXJ5TWVzc2FnZVNlcmlhbGl6ZUZuKXRocm93IEVycm9yKFwiTWVzc2FnZSBleHRlbnNpb24gcHJlc2VudCBob2xkaW5nIHN1Ym1lc3NhZ2Ugd2l0aG91dCBiaW5hcnkgc3VwcG9ydCBlbmFibGVkLCBhbmQgbWVzc2FnZSBpcyBiZWluZyBzZXJpYWxpemVkIHRvIGJpbmFyeSBmb3JtYXRcIik7cy5iaW5hcnlXcml0ZXJGbi5jYWxsKHQsaS5maWVsZEluZGV4LGEscy5iaW5hcnlNZXNzYWdlU2VyaWFsaXplRm4pfWVsc2Ugcy5iaW5hcnlXcml0ZXJGbi5jYWxsKHQsaS5maWVsZEluZGV4LGEpfX0sanNwYi5NZXNzYWdlLnJlYWRCaW5hcnlFeHRlbnNpb249ZnVuY3Rpb24oZSx0LG8scixuKXt2YXIgcz1vW3QuZ2V0RmllbGROdW1iZXIoKV07aWYocyl7aWYobz1zLmZpZWxkSW5mbywhcy5iaW5hcnlSZWFkZXJGbil0aHJvdyBFcnJvcihcIkRlc2VyaWFsaXppbmcgZXh0ZW5zaW9uIHdob3NlIGdlbmVyYXRlZCBjb2RlIGRvZXMgbm90IHN1cHBvcnQgYmluYXJ5IGZvcm1hdFwiKTtpZihvLmlzTWVzc2FnZVR5cGUoKSl7dmFyIGk9bmV3IG8uY3RvcjtzLmJpbmFyeVJlYWRlckZuLmNhbGwodCxpLHMuYmluYXJ5TWVzc2FnZURlc2VyaWFsaXplRm4pfWVsc2UgaT1zLmJpbmFyeVJlYWRlckZuLmNhbGwodCk7by5pc1JlcGVhdGVkJiYhcy5pc1BhY2tlZD8odD1yLmNhbGwoZSxvKSk/dC5wdXNoKGkpOm4uY2FsbChlLG8sW2ldKTpuLmNhbGwoZSxvLGkpfWVsc2UgdC5za2lwRmllbGQoKX0sanNwYi5NZXNzYWdlLmdldEZpZWxkPWZ1bmN0aW9uKGUsdCl7aWYodDxlLnBpdm90Xyl7dD1qc3BiLk1lc3NhZ2UuZ2V0SW5kZXhfKGUsdCk7dmFyIG89ZS5hcnJheVt0XTtyZXR1cm4gbz09PWpzcGIuTWVzc2FnZS5FTVBUWV9MSVNUX1NFTlRJTkVMXz9lLmFycmF5W3RdPVtdOm99aWYoZS5leHRlbnNpb25PYmplY3RfKXJldHVybihvPWUuZXh0ZW5zaW9uT2JqZWN0X1t0XSk9PT1qc3BiLk1lc3NhZ2UuRU1QVFlfTElTVF9TRU5USU5FTF8/ZS5leHRlbnNpb25PYmplY3RfW3RdPVtdOm99LGpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGpzcGIuTWVzc2FnZS5nZXRGaWVsZChlLHQpfSxqc3BiLk1lc3NhZ2UuZ2V0T3B0aW9uYWxGbG9hdGluZ1BvaW50RmllbGQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09KGU9anNwYi5NZXNzYWdlLmdldEZpZWxkKGUsdCkpP2U6K2V9LGpzcGIuTWVzc2FnZS5nZXRCb29sZWFuRmllbGQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09KGU9anNwYi5NZXNzYWdlLmdldEZpZWxkKGUsdCkpP2U6ISFlfSxqc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRGbG9hdGluZ1BvaW50RmllbGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbz1qc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRGaWVsZChlLHQpO2lmKGUuY29udmVydGVkUHJpbWl0aXZlRmllbGRzX3x8KGUuY29udmVydGVkUHJpbWl0aXZlRmllbGRzXz17fSksIWUuY29udmVydGVkUHJpbWl0aXZlRmllbGRzX1t0XSl7Zm9yKHZhciByPTA7cjxvLmxlbmd0aDtyKyspb1tyXT0rb1tyXTtlLmNvbnZlcnRlZFByaW1pdGl2ZUZpZWxkc19bdF09ITB9cmV0dXJuIG99LGpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEJvb2xlYW5GaWVsZD1mdW5jdGlvbihlLHQpe3ZhciBvPWpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKGUsdCk7aWYoZS5jb252ZXJ0ZWRQcmltaXRpdmVGaWVsZHNffHwoZS5jb252ZXJ0ZWRQcmltaXRpdmVGaWVsZHNfPXt9KSwhZS5jb252ZXJ0ZWRQcmltaXRpdmVGaWVsZHNfW3RdKXtmb3IodmFyIHI9MDtyPG8ubGVuZ3RoO3IrKylvW3JdPSEhb1tyXTtlLmNvbnZlcnRlZFByaW1pdGl2ZUZpZWxkc19bdF09ITB9cmV0dXJuIG99LGpzcGIuTWVzc2FnZS5ieXRlc0FzQjY0PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHxcInN0cmluZ1wiPT10eXBlb2YgZT9lOmpzcGIuTWVzc2FnZS5TVVBQT1JUU19VSU5UOEFSUkFZXyYmZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/Z29vZy5jcnlwdC5iYXNlNjQuZW5jb2RlQnl0ZUFycmF5KGUpOihnb29nLmFzc2VydHMuZmFpbChcIkNhbm5vdCBjb2VyY2UgdG8gYjY0IHN0cmluZzogXCIrZ29vZy50eXBlT2YoZSkpLG51bGwpfSxqc3BiLk1lc3NhZ2UuYnl0ZXNBc1U4PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHxlIGluc3RhbmNlb2YgVWludDhBcnJheT9lOlwic3RyaW5nXCI9PXR5cGVvZiBlP2dvb2cuY3J5cHQuYmFzZTY0LmRlY29kZVN0cmluZ1RvVWludDhBcnJheShlKTooZ29vZy5hc3NlcnRzLmZhaWwoXCJDYW5ub3QgY29lcmNlIHRvIFVpbnQ4QXJyYXk6IFwiK2dvb2cudHlwZU9mKGUpKSxudWxsKX0sanNwYi5NZXNzYWdlLmJ5dGVzTGlzdEFzQjY0PWZ1bmN0aW9uKGUpe3JldHVybiBqc3BiLk1lc3NhZ2UuYXNzZXJ0Q29uc2lzdGVudFR5cGVzXyhlKSxlLmxlbmd0aCYmXCJzdHJpbmdcIiE9dHlwZW9mIGVbMF0/Z29vZy5hcnJheS5tYXAoZSxqc3BiLk1lc3NhZ2UuYnl0ZXNBc0I2NCk6ZX0sanNwYi5NZXNzYWdlLmJ5dGVzTGlzdEFzVTg9ZnVuY3Rpb24oZSl7cmV0dXJuIGpzcGIuTWVzc2FnZS5hc3NlcnRDb25zaXN0ZW50VHlwZXNfKGUpLCFlLmxlbmd0aHx8ZVswXWluc3RhbmNlb2YgVWludDhBcnJheT9lOmdvb2cuYXJyYXkubWFwKGUsanNwYi5NZXNzYWdlLmJ5dGVzQXNVOCl9LGpzcGIuTWVzc2FnZS5hc3NlcnRDb25zaXN0ZW50VHlwZXNfPWZ1bmN0aW9uKGUpe2lmKGdvb2cuREVCVUcmJmUmJjE8ZS5sZW5ndGgpe3ZhciB0PWdvb2cudHlwZU9mKGVbMF0pO2dvb2cuYXJyYXkuZm9yRWFjaChlLChmdW5jdGlvbihlKXtnb29nLnR5cGVPZihlKSE9dCYmZ29vZy5hc3NlcnRzLmZhaWwoXCJJbmNvbnNpc3RlbnQgdHlwZSBpbiBKU1BCIHJlcGVhdGVkIGZpZWxkIGFycmF5LiBHb3QgXCIrZ29vZy50eXBlT2YoZSkrXCIgZXhwZWN0ZWQgXCIrdCl9KSl9fSxqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIG51bGw9PShlPWpzcGIuTWVzc2FnZS5nZXRGaWVsZChlLHQpKT9vOmV9LGpzcGIuTWVzc2FnZS5nZXRCb29sZWFuRmllbGRXaXRoRGVmYXVsdD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIG51bGw9PShlPWpzcGIuTWVzc2FnZS5nZXRCb29sZWFuRmllbGQoZSx0KSk/bzplfSxqc3BiLk1lc3NhZ2UuZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBudWxsPT0oZT1qc3BiLk1lc3NhZ2UuZ2V0T3B0aW9uYWxGbG9hdGluZ1BvaW50RmllbGQoZSx0KSk/bzplfSxqc3BiLk1lc3NhZ2UuZ2V0RmllbGRQcm90bzM9anNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQsanNwYi5NZXNzYWdlLmdldE1hcEZpZWxkPWZ1bmN0aW9uKGUsdCxvLHIpe2lmKGUud3JhcHBlcnNffHwoZS53cmFwcGVyc189e30pLHQgaW4gZS53cmFwcGVyc18pcmV0dXJuIGUud3JhcHBlcnNfW3RdO3ZhciBuPWpzcGIuTWVzc2FnZS5nZXRGaWVsZChlLHQpO2lmKCFuKXtpZihvKXJldHVybjtuPVtdLGpzcGIuTWVzc2FnZS5zZXRGaWVsZChlLHQsbil9cmV0dXJuIGUud3JhcHBlcnNfW3RdPW5ldyBqc3BiLk1hcChuLHIpfSxqc3BiLk1lc3NhZ2Uuc2V0RmllbGQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZihlLGpzcGIuTWVzc2FnZSksdDxlLnBpdm90Xz9lLmFycmF5W2pzcGIuTWVzc2FnZS5nZXRJbmRleF8oZSx0KV09bzooanNwYi5NZXNzYWdlLm1heWJlSW5pdEVtcHR5RXh0ZW5zaW9uT2JqZWN0XyhlKSxlLmV4dGVuc2lvbk9iamVjdF9bdF09byksZX0sanNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4ganNwYi5NZXNzYWdlLnNldEZpZWxkSWdub3JpbmdEZWZhdWx0XyhlLHQsbywwKX0sanNwYi5NZXNzYWdlLnNldFByb3RvM0Zsb2F0RmllbGQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBqc3BiLk1lc3NhZ2Uuc2V0RmllbGRJZ25vcmluZ0RlZmF1bHRfKGUsdCxvLDApfSxqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zQm9vbGVhbkZpZWxkPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4ganNwYi5NZXNzYWdlLnNldEZpZWxkSWdub3JpbmdEZWZhdWx0XyhlLHQsbywhMSl9LGpzcGIuTWVzc2FnZS5zZXRQcm90bzNTdHJpbmdGaWVsZD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRGaWVsZElnbm9yaW5nRGVmYXVsdF8oZSx0LG8sXCJcIil9LGpzcGIuTWVzc2FnZS5zZXRQcm90bzNCeXRlc0ZpZWxkPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4ganNwYi5NZXNzYWdlLnNldEZpZWxkSWdub3JpbmdEZWZhdWx0XyhlLHQsbyxcIlwiKX0sanNwYi5NZXNzYWdlLnNldFByb3RvM0VudW1GaWVsZD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRGaWVsZElnbm9yaW5nRGVmYXVsdF8oZSx0LG8sMCl9LGpzcGIuTWVzc2FnZS5zZXRQcm90bzNTdHJpbmdJbnRGaWVsZD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRGaWVsZElnbm9yaW5nRGVmYXVsdF8oZSx0LG8sXCIwXCIpfSxqc3BiLk1lc3NhZ2Uuc2V0RmllbGRJZ25vcmluZ0RlZmF1bHRfPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZihlLGpzcGIuTWVzc2FnZSksbyE9PXI/anNwYi5NZXNzYWdlLnNldEZpZWxkKGUsdCxvKTp0PGUucGl2b3RfP2UuYXJyYXlbanNwYi5NZXNzYWdlLmdldEluZGV4XyhlLHQpXT1udWxsOihqc3BiLk1lc3NhZ2UubWF5YmVJbml0RW1wdHlFeHRlbnNpb25PYmplY3RfKGUpLGRlbGV0ZSBlLmV4dGVuc2lvbk9iamVjdF9bdF0pLGV9LGpzcGIuTWVzc2FnZS5hZGRUb1JlcGVhdGVkRmllbGQ9ZnVuY3Rpb24oZSx0LG8scil7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnRJbnN0YW5jZW9mKGUsanNwYi5NZXNzYWdlKSx0PWpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKGUsdCksbnVsbCE9cj90LnNwbGljZShyLDAsbyk6dC5wdXNoKG8pLGV9LGpzcGIuTWVzc2FnZS5zZXRPbmVvZkZpZWxkPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZihlLGpzcGIuTWVzc2FnZSksKG89anNwYi5NZXNzYWdlLmNvbXB1dGVPbmVvZkNhc2UoZSxvKSkmJm8hPT10JiZ2b2lkIDAhPT1yJiYoZS53cmFwcGVyc18mJm8gaW4gZS53cmFwcGVyc18mJihlLndyYXBwZXJzX1tvXT12b2lkIDApLGpzcGIuTWVzc2FnZS5zZXRGaWVsZChlLG8sdm9pZCAwKSksanNwYi5NZXNzYWdlLnNldEZpZWxkKGUsdCxyKX0sanNwYi5NZXNzYWdlLmNvbXB1dGVPbmVvZkNhc2U9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG8scixuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBzPXRbbl0saT1qc3BiLk1lc3NhZ2UuZ2V0RmllbGQoZSxzKTtudWxsIT1pJiYobz1zLHI9aSxqc3BiLk1lc3NhZ2Uuc2V0RmllbGQoZSxzLHZvaWQgMCkpfXJldHVybiBvPyhqc3BiLk1lc3NhZ2Uuc2V0RmllbGQoZSxvLHIpLG8pOjB9LGpzcGIuTWVzc2FnZS5nZXRXcmFwcGVyRmllbGQ9ZnVuY3Rpb24oZSx0LG8scil7aWYoZS53cmFwcGVyc198fChlLndyYXBwZXJzXz17fSksIWUud3JhcHBlcnNfW29dKXt2YXIgbj1qc3BiLk1lc3NhZ2UuZ2V0RmllbGQoZSxvKTsocnx8bikmJihlLndyYXBwZXJzX1tvXT1uZXcgdChuKSl9cmV0dXJuIGUud3JhcHBlcnNfW29dfSxqc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRXcmFwcGVyRmllbGQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBqc3BiLk1lc3NhZ2Uud3JhcFJlcGVhdGVkRmllbGRfKGUsdCxvKSwodD1lLndyYXBwZXJzX1tvXSk9PWpzcGIuTWVzc2FnZS5FTVBUWV9MSVNUX1NFTlRJTkVMXyYmKHQ9ZS53cmFwcGVyc19bb109W10pLHR9LGpzcGIuTWVzc2FnZS53cmFwUmVwZWF0ZWRGaWVsZF89ZnVuY3Rpb24oZSx0LG8pe2lmKGUud3JhcHBlcnNffHwoZS53cmFwcGVyc189e30pLCFlLndyYXBwZXJzX1tvXSl7Zm9yKHZhciByPWpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKGUsbyksbj1bXSxzPTA7czxyLmxlbmd0aDtzKyspbltzXT1uZXcgdChyW3NdKTtlLndyYXBwZXJzX1tvXT1ufX0sanNwYi5NZXNzYWdlLnNldFdyYXBwZXJGaWVsZD1mdW5jdGlvbihlLHQsbyl7Z29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2YoZSxqc3BiLk1lc3NhZ2UpLGUud3JhcHBlcnNffHwoZS53cmFwcGVyc189e30pO3ZhciByPW8/by50b0FycmF5KCk6bztyZXR1cm4gZS53cmFwcGVyc19bdF09byxqc3BiLk1lc3NhZ2Uuc2V0RmllbGQoZSx0LHIpfSxqc3BiLk1lc3NhZ2Uuc2V0T25lb2ZXcmFwcGVyRmllbGQ9ZnVuY3Rpb24oZSx0LG8scil7Z29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2YoZSxqc3BiLk1lc3NhZ2UpLGUud3JhcHBlcnNffHwoZS53cmFwcGVyc189e30pO3ZhciBuPXI/ci50b0FycmF5KCk6cjtyZXR1cm4gZS53cmFwcGVyc19bdF09cixqc3BiLk1lc3NhZ2Uuc2V0T25lb2ZGaWVsZChlLHQsbyxuKX0sanNwYi5NZXNzYWdlLnNldFJlcGVhdGVkV3JhcHBlckZpZWxkPWZ1bmN0aW9uKGUsdCxvKXtnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZihlLGpzcGIuTWVzc2FnZSksZS53cmFwcGVyc198fChlLndyYXBwZXJzXz17fSksbz1vfHxbXTtmb3IodmFyIHI9W10sbj0wO248by5sZW5ndGg7bisrKXJbbl09b1tuXS50b0FycmF5KCk7cmV0dXJuIGUud3JhcHBlcnNfW3RdPW8sanNwYi5NZXNzYWdlLnNldEZpZWxkKGUsdCxyKX0sanNwYi5NZXNzYWdlLmFkZFRvUmVwZWF0ZWRXcmFwcGVyRmllbGQ9ZnVuY3Rpb24oZSx0LG8scixuKXtqc3BiLk1lc3NhZ2Uud3JhcFJlcGVhdGVkRmllbGRfKGUscix0KTt2YXIgcz1lLndyYXBwZXJzX1t0XTtyZXR1cm4gc3x8KHM9ZS53cmFwcGVyc19bdF09W10pLG89b3x8bmV3IHIsZT1qc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRGaWVsZChlLHQpLG51bGwhPW4/KHMuc3BsaWNlKG4sMCxvKSxlLnNwbGljZShuLDAsby50b0FycmF5KCkpKToocy5wdXNoKG8pLGUucHVzaChvLnRvQXJyYXkoKSkpLG99LGpzcGIuTWVzc2FnZS50b01hcD1mdW5jdGlvbihlLHQsbyxyKXtmb3IodmFyIG49e30scz0wO3M8ZS5sZW5ndGg7cysrKW5bdC5jYWxsKGVbc10pXT1vP28uY2FsbChlW3NdLHIsZVtzXSk6ZVtzXTtyZXR1cm4gbn0sanNwYi5NZXNzYWdlLnByb3RvdHlwZS5zeW5jTWFwRmllbGRzXz1mdW5jdGlvbigpe2lmKHRoaXMud3JhcHBlcnNfKWZvcih2YXIgZSBpbiB0aGlzLndyYXBwZXJzXyl7dmFyIHQ9dGhpcy53cmFwcGVyc19bZV07aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0W29dJiZ0W29dLnRvQXJyYXkoKTtlbHNlIHQmJnQudG9BcnJheSgpfX0sanNwYi5NZXNzYWdlLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3luY01hcEZpZWxkc18oKSx0aGlzLmFycmF5fSxqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fU1RSSU5HJiYoanNwYi5NZXNzYWdlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN5bmNNYXBGaWVsZHNfKCksdGhpcy5hcnJheS50b1N0cmluZygpfSksanNwYi5NZXNzYWdlLnByb3RvdHlwZS5nZXRFeHRlbnNpb249ZnVuY3Rpb24oZSl7aWYodGhpcy5leHRlbnNpb25PYmplY3RfKXt0aGlzLndyYXBwZXJzX3x8KHRoaXMud3JhcHBlcnNfPXt9KTt2YXIgdD1lLmZpZWxkSW5kZXg7aWYoZS5pc1JlcGVhdGVkKXtpZihlLmlzTWVzc2FnZVR5cGUoKSlyZXR1cm4gdGhpcy53cmFwcGVyc19bdF18fCh0aGlzLndyYXBwZXJzX1t0XT1nb29nLmFycmF5Lm1hcCh0aGlzLmV4dGVuc2lvbk9iamVjdF9bdF18fFtdLChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGUuY3Rvcih0KX0pKSksdGhpcy53cmFwcGVyc19bdF19ZWxzZSBpZihlLmlzTWVzc2FnZVR5cGUoKSlyZXR1cm4hdGhpcy53cmFwcGVyc19bdF0mJnRoaXMuZXh0ZW5zaW9uT2JqZWN0X1t0XSYmKHRoaXMud3JhcHBlcnNfW3RdPW5ldyBlLmN0b3IodGhpcy5leHRlbnNpb25PYmplY3RfW3RdKSksdGhpcy53cmFwcGVyc19bdF07cmV0dXJuIHRoaXMuZXh0ZW5zaW9uT2JqZWN0X1t0XX19LGpzcGIuTWVzc2FnZS5wcm90b3R5cGUuc2V0RXh0ZW5zaW9uPWZ1bmN0aW9uKGUsdCl7dGhpcy53cmFwcGVyc198fCh0aGlzLndyYXBwZXJzXz17fSksanNwYi5NZXNzYWdlLm1heWJlSW5pdEVtcHR5RXh0ZW5zaW9uT2JqZWN0Xyh0aGlzKTt2YXIgbz1lLmZpZWxkSW5kZXg7cmV0dXJuIGUuaXNSZXBlYXRlZD8odD10fHxbXSxlLmlzTWVzc2FnZVR5cGUoKT8odGhpcy53cmFwcGVyc19bb109dCx0aGlzLmV4dGVuc2lvbk9iamVjdF9bb109Z29vZy5hcnJheS5tYXAodCwoZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9BcnJheSgpfSkpKTp0aGlzLmV4dGVuc2lvbk9iamVjdF9bb109dCk6ZS5pc01lc3NhZ2VUeXBlKCk/KHRoaXMud3JhcHBlcnNfW29dPXQsdGhpcy5leHRlbnNpb25PYmplY3RfW29dPXQ/dC50b0FycmF5KCk6dCk6dGhpcy5leHRlbnNpb25PYmplY3RfW29dPXQsdGhpc30sanNwYi5NZXNzYWdlLmRpZmZlcmVuY2U9ZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0LmNvbnN0cnVjdG9yKSl0aHJvdyBFcnJvcihcIk1lc3NhZ2VzIGhhdmUgZGlmZmVyZW50IHR5cGVzLlwiKTt2YXIgbz1lLnRvQXJyYXkoKTt0PXQudG9BcnJheSgpO3ZhciByPVtdLG49MCxzPW8ubGVuZ3RoPnQubGVuZ3RoP28ubGVuZ3RoOnQubGVuZ3RoO2ZvcihlLmdldEpzUGJNZXNzYWdlSWQoKSYmKHJbMF09ZS5nZXRKc1BiTWVzc2FnZUlkKCksbj0xKTtuPHM7bisrKWpzcGIuTWVzc2FnZS5jb21wYXJlRmllbGRzKG9bbl0sdFtuXSl8fChyW25dPXRbbl0pO3JldHVybiBuZXcgZS5jb25zdHJ1Y3RvcihyKX0sanNwYi5NZXNzYWdlLmVxdWFscz1mdW5jdGlvbihlLHQpe3JldHVybiBlPT10fHwhKCFlfHwhdCkmJmUgaW5zdGFuY2VvZiB0LmNvbnN0cnVjdG9yJiZqc3BiLk1lc3NhZ2UuY29tcGFyZUZpZWxkcyhlLnRvQXJyYXkoKSx0LnRvQXJyYXkoKSl9LGpzcGIuTWVzc2FnZS5jb21wYXJlRXh0ZW5zaW9ucz1mdW5jdGlvbihlLHQpe2U9ZXx8e30sdD10fHx7fTt2YXIgbyxyPXt9O2ZvcihvIGluIGUpcltvXT0wO2ZvcihvIGluIHQpcltvXT0wO2ZvcihvIGluIHIpaWYoIWpzcGIuTWVzc2FnZS5jb21wYXJlRmllbGRzKGVbb10sdFtvXSkpcmV0dXJuITE7cmV0dXJuITB9LGpzcGIuTWVzc2FnZS5jb21wYXJlRmllbGRzPWZ1bmN0aW9uKGUsdCl7aWYoZT09dClyZXR1cm4hMDtpZighZ29vZy5pc09iamVjdChlKXx8IWdvb2cuaXNPYmplY3QodCkpcmV0dXJuISEoXCJudW1iZXJcIj09dHlwZW9mIGUmJmlzTmFOKGUpfHxcIm51bWJlclwiPT10eXBlb2YgdCYmaXNOYU4odCkpJiZTdHJpbmcoZSk9PVN0cmluZyh0KTtpZihlLmNvbnN0cnVjdG9yIT10LmNvbnN0cnVjdG9yKXJldHVybiExO2lmKGpzcGIuTWVzc2FnZS5TVVBQT1JUU19VSU5UOEFSUkFZXyYmZS5jb25zdHJ1Y3Rvcj09PVVpbnQ4QXJyYXkpe2lmKGUubGVuZ3RoIT10Lmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZihlW29dIT10W29dKXJldHVybiExO3JldHVybiEwfWlmKGUuY29uc3RydWN0b3I9PT1BcnJheSl7dmFyIHI9dm9pZCAwLG49dm9pZCAwLHM9TWF0aC5tYXgoZS5sZW5ndGgsdC5sZW5ndGgpO2ZvcihvPTA7bzxzO28rKyl7dmFyIGk9ZVtvXSxhPXRbb107aWYoaSYmaS5jb25zdHJ1Y3Rvcj09T2JqZWN0JiYoZ29vZy5hc3NlcnRzLmFzc2VydCh2b2lkIDA9PT1yKSxnb29nLmFzc2VydHMuYXNzZXJ0KG89PT1lLmxlbmd0aC0xKSxyPWksaT12b2lkIDApLGEmJmEuY29uc3RydWN0b3I9PU9iamVjdCYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQodm9pZCAwPT09biksZ29vZy5hc3NlcnRzLmFzc2VydChvPT09dC5sZW5ndGgtMSksbj1hLGE9dm9pZCAwKSwhanNwYi5NZXNzYWdlLmNvbXBhcmVGaWVsZHMoaSxhKSlyZXR1cm4hMX1yZXR1cm4hciYmIW58fChyPXJ8fHt9LG49bnx8e30sanNwYi5NZXNzYWdlLmNvbXBhcmVFeHRlbnNpb25zKHIsbikpfWlmKGUuY29uc3RydWN0b3I9PT1PYmplY3QpcmV0dXJuIGpzcGIuTWVzc2FnZS5jb21wYXJlRXh0ZW5zaW9ucyhlLHQpO3Rocm93IEVycm9yKFwiSW52YWxpZCB0eXBlIGluIEpTUEIgYXJyYXlcIil9LGpzcGIuTWVzc2FnZS5wcm90b3R5cGUuY2xvbmVNZXNzYWdlPWZ1bmN0aW9uKCl7cmV0dXJuIGpzcGIuTWVzc2FnZS5jbG9uZU1lc3NhZ2UodGhpcyl9LGpzcGIuTWVzc2FnZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4ganNwYi5NZXNzYWdlLmNsb25lTWVzc2FnZSh0aGlzKX0sanNwYi5NZXNzYWdlLmNsb25lPWZ1bmN0aW9uKGUpe3JldHVybiBqc3BiLk1lc3NhZ2UuY2xvbmVNZXNzYWdlKGUpfSxqc3BiLk1lc3NhZ2UuY2xvbmVNZXNzYWdlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZS5jb25zdHJ1Y3Rvcihqc3BiLk1lc3NhZ2UuY2xvbmVfKGUudG9BcnJheSgpKSl9LGpzcGIuTWVzc2FnZS5jb3B5SW50bz1mdW5jdGlvbihlLHQpe2dvb2cuYXNzZXJ0cy5hc3NlcnRJbnN0YW5jZW9mKGUsanNwYi5NZXNzYWdlKSxnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZih0LGpzcGIuTWVzc2FnZSksZ29vZy5hc3NlcnRzLmFzc2VydChlLmNvbnN0cnVjdG9yPT10LmNvbnN0cnVjdG9yLFwiQ29weSBzb3VyY2UgYW5kIHRhcmdldCBtZXNzYWdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIHR5cGUuXCIpLGU9anNwYi5NZXNzYWdlLmNsb25lKGUpO2Zvcih2YXIgbz10LnRvQXJyYXkoKSxyPWUudG9BcnJheSgpLG49by5sZW5ndGg9MDtuPHIubGVuZ3RoO24rKylvW25dPXJbbl07dC53cmFwcGVyc189ZS53cmFwcGVyc18sdC5leHRlbnNpb25PYmplY3RfPWUuZXh0ZW5zaW9uT2JqZWN0X30sanNwYi5NZXNzYWdlLmNsb25lXz1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHQ9QXJyYXkoZS5sZW5ndGgpLG89MDtvPGUubGVuZ3RoO28rKyl7dmFyIHI9ZVtvXTtudWxsIT1yJiYodFtvXT1cIm9iamVjdFwiPT10eXBlb2Ygcj9qc3BiLk1lc3NhZ2UuY2xvbmVfKGdvb2cuYXNzZXJ0cy5hc3NlcnQocikpOnIpfXJldHVybiB0fWlmKGpzcGIuTWVzc2FnZS5TVVBQT1JUU19VSU5UOEFSUkFZXyYmZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIG5ldyBVaW50OEFycmF5KGUpO2ZvcihvIGluIHQ9e30sZSludWxsIT0ocj1lW29dKSYmKHRbb109XCJvYmplY3RcIj09dHlwZW9mIHI/anNwYi5NZXNzYWdlLmNsb25lXyhnb29nLmFzc2VydHMuYXNzZXJ0KHIpKTpyKTtyZXR1cm4gdH0sanNwYi5NZXNzYWdlLnJlZ2lzdGVyTWVzc2FnZVR5cGU9ZnVuY3Rpb24oZSx0KXt0Lm1lc3NhZ2VJZD1lfSxqc3BiLk1lc3NhZ2UubWVzc2FnZVNldEV4dGVuc2lvbnM9e30sanNwYi5NZXNzYWdlLm1lc3NhZ2VTZXRFeHRlbnNpb25zQmluYXJ5PXt9LGpzcGIuRXhwb3J0PXt9LGV4cG9ydHMuTWFwPWpzcGIuTWFwLGV4cG9ydHMuTWVzc2FnZT1qc3BiLk1lc3NhZ2UsZXhwb3J0cy5CaW5hcnlSZWFkZXI9anNwYi5CaW5hcnlSZWFkZXIsZXhwb3J0cy5CaW5hcnlXcml0ZXI9anNwYi5CaW5hcnlXcml0ZXIsZXhwb3J0cy5FeHRlbnNpb25GaWVsZEluZm89anNwYi5FeHRlbnNpb25GaWVsZEluZm8sZXhwb3J0cy5FeHRlbnNpb25GaWVsZEJpbmFyeUluZm89anNwYi5FeHRlbnNpb25GaWVsZEJpbmFyeUluZm8sZXhwb3J0cy5leHBvcnRTeW1ib2w9Z29vZy5leHBvcnRTeW1ib2wsZXhwb3J0cy5pbmhlcml0cz1nb29nLmluaGVyaXRzLGV4cG9ydHMub2JqZWN0PXtleHRlbmQ6Z29vZy5vYmplY3QuZXh0ZW5kfSxleHBvcnRzLnR5cGVPZj1nb29nLnR5cGVPZn0sNDA6ZnVuY3Rpb24oZSx0LG8pe3ZhciByO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdDxlLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTplW3QrK119Ontkb25lOiEwfX19dmFyIHM9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxvKXtlIT1BcnJheS5wcm90b3R5cGUmJmUhPU9iamVjdC5wcm90b3R5cGUmJihlW3RdPW8udmFsdWUpfSxpPWZ1bmN0aW9uKGUpe2U9W1wib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyxcIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZixcIm9iamVjdFwiPT10eXBlb2Ygby5nJiZvLmcsZV07Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDsrK3Qpe3ZhciByPWVbdF07aWYociYmci5NYXRoPT1NYXRoKXJldHVybiByfXRocm93IEVycm9yKFwiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdFwiKX0odGhpcyk7ZnVuY3Rpb24gYSgpe2E9ZnVuY3Rpb24oKXt9LGkuU3ltYm9sfHwoaS5TeW1ib2w9dSl9ZnVuY3Rpb24gZyhlLHQpe3RoaXMuYT1lLHModGhpcyxcImRlc2NyaXB0aW9uXCIse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp0fSl9Zy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfTt2YXIgbCx1PShsPTAsZnVuY3Rpb24gZSh0KXtpZih0aGlzIGluc3RhbmNlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yXCIpO3JldHVybiBuZXcgZyhcImpzY29tcF9zeW1ib2xfXCIrKHR8fFwiXCIpK1wiX1wiK2wrKyx0KX0pO2Z1bmN0aW9uIGMoKXthKCk7dmFyIGU9aS5TeW1ib2wuaXRlcmF0b3I7ZXx8KGU9aS5TeW1ib2wuaXRlcmF0b3I9aS5TeW1ib2woXCJTeW1ib2wuaXRlcmF0b3JcIikpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIEFycmF5LnByb3RvdHlwZVtlXSYmcyhBcnJheS5wcm90b3R5cGUsZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBjKCksKGU9e25leHQ6ZX0pW2kuU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlfShuKHRoaXMpKX19KSxjPWZ1bmN0aW9uKCl7fX1mdW5jdGlvbiBwKGUpe3ZhciB0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmZVtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiB0P3QuY2FsbChlKTp7bmV4dDpuKGUpfX12YXIgZixkPVwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5jcmVhdGU/T2JqZWN0LmNyZWF0ZTpmdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZT1lLG5ldyB0fTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2YpZj1PYmplY3Quc2V0UHJvdG90eXBlT2Y7ZWxzZXt2YXIgaDtlOnt2YXIgeT17fTt0cnl7eS5fX3Byb3RvX189e1Y6ITB9LGg9eS5WO2JyZWFrIGV9Y2F0Y2goZWUpe31oPSExfWY9aD9mdW5jdGlvbihlLHQpe2lmKGUuX19wcm90b19fPXQsZS5fX3Byb3RvX18hPT10KXRocm93IG5ldyBUeXBlRXJyb3IoZStcIiBpcyBub3QgZXh0ZW5zaWJsZVwiKTtyZXR1cm4gZX06bnVsbH12YXIgXz1mO2Z1bmN0aW9uIGIoZSx0KXtpZihlLnByb3RvdHlwZT1kKHQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLF8pXyhlLHQpO2Vsc2UgZm9yKHZhciBvIGluIHQpaWYoXCJwcm90b3R5cGVcIiE9bylpZihPYmplY3QuZGVmaW5lUHJvcGVydGllcyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG8pO3ImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG8scil9ZWxzZSBlW29dPXRbb107ZS5PPXQucHJvdG90eXBlfWZ1bmN0aW9uIG0oZSx0KXtpZih0KXt2YXIgbz1pO2U9ZS5zcGxpdChcIi5cIik7Zm9yKHZhciByPTA7cjxlLmxlbmd0aC0xO3IrKyl7dmFyIG49ZVtyXTtuIGluIG98fChvW25dPXt9KSxvPW9bbl19KHQ9dChyPW9bZT1lW2UubGVuZ3RoLTFdXSkpIT1yJiZudWxsIT10JiZzKG8sZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KX19bShcIkFycmF5LnByb3RvdHlwZS5rZXlzXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLHQpe2MoKSxlIGluc3RhbmNlb2YgU3RyaW5nJiYoZSs9XCJcIik7dmFyIG89MCxyPXtuZXh0OmZ1bmN0aW9uKCl7aWYobzxlLmxlbmd0aCl7dmFyIG49bysrO3JldHVybnt2YWx1ZTp0KG4sZVtuXSksZG9uZTohMX19cmV0dXJuIHIubmV4dD1mdW5jdGlvbigpe3JldHVybntkb25lOiEwLHZhbHVlOnZvaWQgMH19LHIubmV4dCgpfX07cmV0dXJuIHJbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiByfSxyfSh0aGlzLChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKX19KSksbShcIkFycmF5LnByb3RvdHlwZS5maW5kXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe2U6e3ZhciBvPXRoaXM7byBpbnN0YW5jZW9mIFN0cmluZyYmKG89U3RyaW5nKG8pKTtmb3IodmFyIHI9by5sZW5ndGgsbj0wO248cjtuKyspe3ZhciBzPW9bbl07aWYoZS5jYWxsKHQscyxuLG8pKXtlPXM7YnJlYWsgZX19ZT12b2lkIDB9cmV0dXJuIGV9fSkpLG0oXCJPYmplY3QuaXNcIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGV8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PTEvdDplIT1lJiZ0IT10fX0pKSxtKFwiQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe3ZhciBvPXRoaXM7byBpbnN0YW5jZW9mIFN0cmluZyYmKG89U3RyaW5nKG8pKTt2YXIgcj1vLmxlbmd0aDtmb3IoMD4odD10fHwwKSYmKHQ9TWF0aC5tYXgodCtyLDApKTt0PHI7dCsrKXt2YXIgbj1vW3RdO2lmKG49PT1lfHxPYmplY3QuaXMobixlKSlyZXR1cm4hMH1yZXR1cm4hMX19KSksbShcIlByb21pc2VcIiwoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLmI9MCx0aGlzLmM9dm9pZCAwLHRoaXMuYT1bXTt2YXIgdD10aGlzLmYoKTt0cnl7ZSh0LnJlc29sdmUsdC5yZWplY3QpfWNhdGNoKGUpe3QucmVqZWN0KGUpfX1mdW5jdGlvbiBvKCl7dGhpcy5hPW51bGx9ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHQ/ZTpuZXcgdCgoZnVuY3Rpb24odCl7dChlKX0pKX1pZihlKXJldHVybiBlO28ucHJvdG90eXBlLmI9ZnVuY3Rpb24oZSl7aWYobnVsbD09dGhpcy5hKXt0aGlzLmE9W107dmFyIHQ9dGhpczt0aGlzLmMoKGZ1bmN0aW9uKCl7dC5nKCl9KSl9dGhpcy5hLnB1c2goZSl9O3ZhciBuPWkuc2V0VGltZW91dDtvLnByb3RvdHlwZS5jPWZ1bmN0aW9uKGUpe24oZSwwKX0sby5wcm90b3R5cGUuZz1mdW5jdGlvbigpe2Zvcig7dGhpcy5hJiZ0aGlzLmEubGVuZ3RoOyl7dmFyIGU9dGhpcy5hO3RoaXMuYT1bXTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoOysrdCl7dmFyIG89ZVt0XTtlW3RdPW51bGw7dHJ5e28oKX1jYXRjaChlKXt0aGlzLmYoZSl9fX10aGlzLmE9bnVsbH0sby5wcm90b3R5cGUuZj1mdW5jdGlvbihlKXt0aGlzLmMoKGZ1bmN0aW9uKCl7dGhyb3cgZX0pKX0sdC5wcm90b3R5cGUuZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe298fChvPSEwLGUuY2FsbCh0LHIpKX19dmFyIHQ9dGhpcyxvPSExO3JldHVybntyZXNvbHZlOmUodGhpcy5zKSxyZWplY3Q6ZSh0aGlzLmcpfX0sdC5wcm90b3R5cGUucz1mdW5jdGlvbihlKXtpZihlPT09dGhpcyl0aGlzLmcobmV3IFR5cGVFcnJvcihcIkEgUHJvbWlzZSBjYW5ub3QgcmVzb2x2ZSB0byBpdHNlbGZcIikpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIHQpdGhpcy52KGUpO2Vsc2V7ZTpzd2l0Y2godHlwZW9mIGUpe2Nhc2VcIm9iamVjdFwiOnZhciBvPW51bGwhPWU7YnJlYWsgZTtjYXNlXCJmdW5jdGlvblwiOm89ITA7YnJlYWsgZTtkZWZhdWx0Om89ITF9bz90aGlzLm0oZSk6dGhpcy5oKGUpfX0sdC5wcm90b3R5cGUubT1mdW5jdGlvbihlKXt2YXIgdD12b2lkIDA7dHJ5e3Q9ZS50aGVufWNhdGNoKGUpe3JldHVybiB2b2lkIHRoaXMuZyhlKX1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3RoaXMudyh0LGUpOnRoaXMuaChlKX0sdC5wcm90b3R5cGUuZz1mdW5jdGlvbihlKXt0aGlzLmkoMixlKX0sdC5wcm90b3R5cGUuaD1mdW5jdGlvbihlKXt0aGlzLmkoMSxlKX0sdC5wcm90b3R5cGUuaT1mdW5jdGlvbihlLHQpe2lmKDAhPXRoaXMuYil0aHJvdyBFcnJvcihcIkNhbm5vdCBzZXR0bGUoXCIrZStcIiwgXCIrdCtcIik6IFByb21pc2UgYWxyZWFkeSBzZXR0bGVkIGluIHN0YXRlXCIrdGhpcy5iKTt0aGlzLmI9ZSx0aGlzLmM9dCx0aGlzLmwoKX0sdC5wcm90b3R5cGUubD1mdW5jdGlvbigpe2lmKG51bGwhPXRoaXMuYSl7Zm9yKHZhciBlPTA7ZTx0aGlzLmEubGVuZ3RoOysrZSlzLmIodGhpcy5hW2VdKTt0aGlzLmE9bnVsbH19O3ZhciBzPW5ldyBvO3JldHVybiB0LnByb3RvdHlwZS52PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZigpO2UuRih0LnJlc29sdmUsdC5yZWplY3QpfSx0LnByb3RvdHlwZS53PWZ1bmN0aW9uKGUsdCl7dmFyIG89dGhpcy5mKCk7dHJ5e2UuY2FsbCh0LG8ucmVzb2x2ZSxvLnJlamVjdCl9Y2F0Y2goZSl7by5yZWplY3QoZSl9fSx0LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGUsbyl7ZnVuY3Rpb24gcihlLHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZnVuY3Rpb24odCl7dHJ5e24oZSh0KSl9Y2F0Y2goZSl7cyhlKX19OnR9dmFyIG4scyxpPW5ldyB0KChmdW5jdGlvbihlLHQpe249ZSxzPXR9KSk7cmV0dXJuIHRoaXMuRihyKGUsbikscihvLHMpKSxpfSx0LnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCxlKX0sdC5wcm90b3R5cGUuRj1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oKXtzd2l0Y2goci5iKXtjYXNlIDE6ZShyLmMpO2JyZWFrO2Nhc2UgMjp0KHIuYyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihcIlVuZXhwZWN0ZWQgc3RhdGU6IFwiK3IuYil9fXZhciByPXRoaXM7bnVsbD09dGhpcy5hP3MuYihvKTp0aGlzLmEucHVzaChvKX0sdC5yZXNvbHZlPXIsdC5yZWplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LG8pe28oZSl9KSl9LHQucmFjZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsbyl7Zm9yKHZhciBuPXAoZSkscz1uLm5leHQoKTshcy5kb25lO3M9bi5uZXh0KCkpcihzLnZhbHVlKS5GKHQsbyl9KSl9LHQuYWxsPWZ1bmN0aW9uKGUpe3ZhciBvPXAoZSksbj1vLm5leHQoKTtyZXR1cm4gbi5kb25lP3IoW10pOm5ldyB0KChmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHModCl7cmV0dXJuIGZ1bmN0aW9uKG8pe2lbdF09bywwPT0tLWEmJmUoaSl9fXZhciBpPVtdLGE9MDtkb3tpLnB1c2godm9pZCAwKSxhKysscihuLnZhbHVlKS5GKHMoaS5sZW5ndGgtMSksdCksbj1vLm5leHQoKX13aGlsZSghbi5kb25lKX0pKX0sdH0pKTt2YXIgUz1TfHx7fSxFPXRoaXN8fHNlbGY7ZnVuY3Rpb24gVChlLHQpe2U9ZS5zcGxpdChcIi5cIiksdD10fHxFO2Zvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKWlmKG51bGw9PSh0PXRbZVtvXV0pKXJldHVybiBudWxsO3JldHVybiB0fWZ1bmN0aW9uIEEoKXt9ZnVuY3Rpb24gdihlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm5cIm9iamVjdFwiPT10JiZudWxsIT1lfHxcImZ1bmN0aW9uXCI9PXR9dmFyIEk9XCJjbG9zdXJlX3VpZF9cIisoMWU5Kk1hdGgucmFuZG9tKCk+Pj4wKSxSPTA7ZnVuY3Rpb24gTyhlLHQsbyl7cmV0dXJuIGUuY2FsbC5hcHBseShlLmJpbmQsYXJndW1lbnRzKX1mdW5jdGlvbiBqKGUsdCxvKXtpZighZSl0aHJvdyBFcnJvcigpO2lmKDI8YXJndW1lbnRzLmxlbmd0aCl7dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KG8sciksZS5hcHBseSh0LG8pfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHcoZSx0LG8pe3JldHVybih3PUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kJiYtMSE9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQudG9TdHJpbmcoKS5pbmRleE9mKFwibmF0aXZlIGNvZGVcIik/TzpqKS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gTihlLHQpe2Z1bmN0aW9uIG8oKXt9by5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5PPXQucHJvdG90eXBlLGUucHJvdG90eXBlPW5ldyBvLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWV9ZnVuY3Rpb24gQygpe3RoaXMuYT17fX1mdW5jdGlvbiBVKGUsdCxvLHIpe3RoaXMuZj1lLHRoaXMuYz10LHRoaXMuYj1vLHRoaXMuYT1yfWZ1bmN0aW9uIE0oZSx0LG8scil7bz12b2lkIDA9PT1vP3t9Om8sdGhpcy5jPWUsdGhpcy5hPW8sdGhpcy5iPXQsdGhpcy5mPXZvaWQgMD09PXI/bnVsbDpyfWZ1bmN0aW9uIEwoZSx0LG8pe289dm9pZCAwPT09bz97fTpvO3ZhciByPXZvaWQgMD09PXI/bmV3IEM6cjtyZXR1cm4gbmV3IFUodCxlLG8scil9ZnVuY3Rpb24gRChlLHQsbyl7bz12b2lkIDA9PT1vP3t9Om8sdD1FcnJvci5jYWxsKHRoaXMsdCksdGhpcy5tZXNzYWdlPXQubWVzc2FnZSxcInN0YWNrXCJpbiB0JiYodGhpcy5zdGFjaz10LnN0YWNrKSx0aGlzLmNvZGU9ZSx0aGlzLm1ldGFkYXRhPW99ZnVuY3Rpb24gQihlKXt0aGlzLmE9ZX1mdW5jdGlvbiBQKGUpe2lmKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKUVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsUCk7ZWxzZXt2YXIgdD1FcnJvcigpLnN0YWNrO3QmJih0aGlzLnN0YWNrPXQpfWUmJih0aGlzLm1lc3NhZ2U9U3RyaW5nKGUpKX1mdW5jdGlvbiBGKGUsdCl7Zm9yKHZhciBvPVwiXCIscj0oZT1lLnNwbGl0KFwiJXNcIikpLmxlbmd0aC0xLG49MDtuPHI7bisrKW8rPWVbbl0rKG48dC5sZW5ndGg/dFtuXTpcIiVzXCIpO1AuY2FsbCh0aGlzLG8rZVtyXSl9ZnVuY3Rpb24geCgpe3RoaXMubD1udWxsLHRoaXMuaT1bXSx0aGlzLm09MCx0aGlzLmI9Vyx0aGlzLmY9dGhpcy5hPXRoaXMuaD0wLHRoaXMuYz1udWxsLHRoaXMuZz0wfUMucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hW2VdfSxDLnByb3RvdHlwZS5HPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuYSl9LFUucHJvdG90eXBlLmdldFJlcXVlc3RNZXNzYWdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZn0sVS5wcm90b3R5cGUuZ2V0TWV0aG9kRGVzY3JpcHRvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN9LFUucHJvdG90eXBlLmdldE1ldGFkYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYn0sVS5wcm90b3R5cGUuZ2V0Q2FsbE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfSxNLnByb3RvdHlwZS5nZXRSZXNwb25zZU1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jfSxNLnByb3RvdHlwZS5nZXRNZXRhZGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF9LE0ucHJvdG90eXBlLmdldE1ldGhvZERlc2NyaXB0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ifSxNLnByb3RvdHlwZS5nZXRTdGF0dXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mfSxiKEQsRXJyb3IpLEQucHJvdG90eXBlLm5hbWU9XCJScGNFcnJvclwiLEIucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJkYXRhXCI9PWV8fFwiZXJyb3JcIj09ZT90aGlzOnRoaXMuYS5vbihlLHQpfSxCLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmEucmVtb3ZlTGlzdGVuZXIoZSx0KX0sQi5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKCl7dGhpcy5hLmNhbmNlbCgpfSxOKFAsRXJyb3IpLFAucHJvdG90eXBlLm5hbWU9XCJDdXN0b21FcnJvclwiLE4oRixQKSxGLnByb3RvdHlwZS5uYW1lPVwiQXNzZXJ0aW9uRXJyb3JcIjt2YXIgVz0wLEg9MTI4O2Z1bmN0aW9uIFYoZSx0LG8scil7dGhyb3cgZS5iPTMsZS5sPVwiVGhlIHN0cmVhbSBpcyBicm9rZW4gQFwiK2UubStcIi9cIitvK1wiLiBFcnJvcjogXCIrcitcIi4gV2l0aCBpbnB1dDpcXG5cIit0LEVycm9yKGUubCl9dmFyIEcsaz1BcnJheS5wcm90b3R5cGUuaW5kZXhPZj9mdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUsdCx2b2lkIDApfTpmdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0fHwxIT10Lmxlbmd0aD8tMTplLmluZGV4T2YodCwwKTtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZihvIGluIGUmJmVbb109PT10KXJldHVybiBvO3JldHVybi0xfSxZPVN0cmluZy5wcm90b3R5cGUudHJpbT9mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9OmZ1bmN0aW9uKGUpe3JldHVybi9eW1xcc1xceGEwXSooW1xcc1xcU10qPylbXFxzXFx4YTBdKiQvLmV4ZWMoZSlbMV19O2Z1bmN0aW9uIHooZSx0KXtyZXR1cm4tMSE9ZS5pbmRleE9mKHQpfWZ1bmN0aW9uIEsoZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOjB9ZTp7dmFyIFg9RS5uYXZpZ2F0b3I7aWYoWCl7dmFyIHE9WC51c2VyQWdlbnQ7aWYocSl7Rz1xO2JyZWFrIGV9fUc9XCJcIn12YXIgJD1cImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZlwiLnNwbGl0KFwiIFwiKTtmdW5jdGlvbiBaKGUpe3ZhciB0PTE7ZT1lLnNwbGl0KFwiOlwiKTtmb3IodmFyIG89W107MDx0JiZlLmxlbmd0aDspby5wdXNoKGUuc2hpZnQoKSksdC0tO3JldHVybiBlLmxlbmd0aCYmby5wdXNoKGUuam9pbihcIjpcIikpLG99ZnVuY3Rpb24gSihlKXtyZXR1cm4gSltcIiBcIl0oZSksZX1KW1wiIFwiXT1BO3ZhciBRLGVlLHRlPXooRyxcIk9wZXJhXCIpLG9lPXooRyxcIlRyaWRlbnRcIil8fHooRyxcIk1TSUVcIikscmU9eihHLFwiRWRnZVwiKSxuZT16KEcsXCJHZWNrb1wiKSYmISh6KEcudG9Mb3dlckNhc2UoKSxcIndlYmtpdFwiKSYmIXooRyxcIkVkZ2VcIikpJiYhKHooRyxcIlRyaWRlbnRcIil8fHooRyxcIk1TSUVcIikpJiYheihHLFwiRWRnZVwiKSxzZT16KEcudG9Mb3dlckNhc2UoKSxcIndlYmtpdFwiKSYmIXooRyxcIkVkZ2VcIik7ZTp7dmFyIGllPVwiXCIsYWU9KGVlPUcsbmU/L3J2OihbXlxcKTtdKykoXFwpfDspLy5leGVjKGVlKTpyZT8vRWRnZVxcLyhbXFxkXFwuXSspLy5leGVjKGVlKTpvZT8vXFxiKD86TVNJRXxydilbOiBdKFteXFwpO10rKShcXCl8OykvLmV4ZWMoZWUpOnNlPy9XZWJLaXRcXC8oXFxTKykvLmV4ZWMoZWUpOnRlPy8oPzpWZXJzaW9uKVsgXFwvXT8oXFxTKykvLmV4ZWMoZWUpOnZvaWQgMCk7aWYoYWUmJihpZT1hZT9hZVsxXTpcIlwiKSxvZSl7dmFyIGdlLGxlPUUuZG9jdW1lbnQ7aWYobnVsbCE9KGdlPWxlP2xlLmRvY3VtZW50TW9kZTp2b2lkIDApJiZnZT5wYXJzZUZsb2F0KGllKSl7UT1TdHJpbmcoZ2UpO2JyZWFrIGV9fVE9aWV9dmFyIHVlPXt9O2Z1bmN0aW9uIGNlKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PXVlO3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCw5KT90WzldOnRbOV09ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PVkoU3RyaW5nKFEpKS5zcGxpdChcIi5cIiksbz1ZKFwiOVwiKS5zcGxpdChcIi5cIikscj1NYXRoLm1heCh0Lmxlbmd0aCxvLmxlbmd0aCksbj0wOzA9PWUmJm48cjtuKyspe3ZhciBzPXRbbl18fFwiXCIsaT1vW25dfHxcIlwiO2Rve2lmKHM9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMocyl8fFtcIlwiLFwiXCIsXCJcIixcIlwiXSxpPS8oXFxkKikoXFxEKikoLiopLy5leGVjKGkpfHxbXCJcIixcIlwiLFwiXCIsXCJcIl0sMD09c1swXS5sZW5ndGgmJjA9PWlbMF0ubGVuZ3RoKWJyZWFrO2U9SygwPT1zWzFdLmxlbmd0aD8wOnBhcnNlSW50KHNbMV0sMTApLDA9PWlbMV0ubGVuZ3RoPzA6cGFyc2VJbnQoaVsxXSwxMCkpfHxLKDA9PXNbMl0ubGVuZ3RoLDA9PWlbMl0ubGVuZ3RoKXx8SyhzWzJdLGlbMl0pLHM9c1szXSxpPWlbM119d2hpbGUoMD09ZSl9cmV0dXJuIDA8PWV9KCl9KCl9ZnVuY3Rpb24gcGUoKXswIT1mZSYmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLEkpJiZ0aGlzW0ldfHwodGhpc1tJXT0rK1IpKSx0aGlzLks9dGhpcy5LfXZhciBmZT0wO3BlLnByb3RvdHlwZS5LPSExO3ZhciBkZT1PYmplY3QuZnJlZXplfHxmdW5jdGlvbihlKXtyZXR1cm4gZX07ZnVuY3Rpb24gaGUoZSx0KXt0aGlzLnR5cGU9ZSx0aGlzLmE9dGhpcy50YXJnZXQ9dCx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITF9aGUucHJvdG90eXBlLmI9ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITB9O3ZhciB5ZT1mdW5jdGlvbigpe2lmKCFFLmFkZEV2ZW50TGlzdGVuZXJ8fCFPYmplY3QuZGVmaW5lUHJvcGVydHkpcmV0dXJuITE7dmFyIGU9ITEsdD1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sXCJwYXNzaXZlXCIse2dldDpmdW5jdGlvbigpe2U9ITB9fSk7dHJ5e0UuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIixBLHQpLEUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRlc3RcIixBLHQpfWNhdGNoKGUpe31yZXR1cm4gZX0oKTtmdW5jdGlvbiBfZShlLHQpe2lmKGhlLmNhbGwodGhpcyxlP2UudHlwZTpcIlwiKSx0aGlzLnJlbGF0ZWRUYXJnZXQ9dGhpcy5hPXRoaXMudGFyZ2V0PW51bGwsdGhpcy5idXR0b249dGhpcy5zY3JlZW5ZPXRoaXMuc2NyZWVuWD10aGlzLmNsaWVudFk9dGhpcy5jbGllbnRYPTAsdGhpcy5rZXk9XCJcIix0aGlzLm1ldGFLZXk9dGhpcy5zaGlmdEtleT10aGlzLmFsdEtleT10aGlzLmN0cmxLZXk9ITEsdGhpcy5wb2ludGVySWQ9MCx0aGlzLnBvaW50ZXJUeXBlPVwiXCIsdGhpcy5jPW51bGwsZSl7dmFyIG89dGhpcy50eXBlPWUudHlwZSxyPWUuY2hhbmdlZFRvdWNoZXMmJmUuY2hhbmdlZFRvdWNoZXMubGVuZ3RoP2UuY2hhbmdlZFRvdWNoZXNbMF06bnVsbDtpZih0aGlzLnRhcmdldD1lLnRhcmdldHx8ZS5zcmNFbGVtZW50LHRoaXMuYT10LHQ9ZS5yZWxhdGVkVGFyZ2V0KXtpZihuZSl7ZTp7dHJ5e0oodC5ub2RlTmFtZSk7dmFyIG49ITA7YnJlYWsgZX1jYXRjaChlKXt9bj0hMX1ufHwodD1udWxsKX19ZWxzZVwibW91c2VvdmVyXCI9PW8/dD1lLmZyb21FbGVtZW50OlwibW91c2VvdXRcIj09byYmKHQ9ZS50b0VsZW1lbnQpO3RoaXMucmVsYXRlZFRhcmdldD10LHI/KHRoaXMuY2xpZW50WD12b2lkIDAhPT1yLmNsaWVudFg/ci5jbGllbnRYOnIucGFnZVgsdGhpcy5jbGllbnRZPXZvaWQgMCE9PXIuY2xpZW50WT9yLmNsaWVudFk6ci5wYWdlWSx0aGlzLnNjcmVlblg9ci5zY3JlZW5YfHwwLHRoaXMuc2NyZWVuWT1yLnNjcmVlbll8fDApOih0aGlzLmNsaWVudFg9dm9pZCAwIT09ZS5jbGllbnRYP2UuY2xpZW50WDplLnBhZ2VYLHRoaXMuY2xpZW50WT12b2lkIDAhPT1lLmNsaWVudFk/ZS5jbGllbnRZOmUucGFnZVksdGhpcy5zY3JlZW5YPWUuc2NyZWVuWHx8MCx0aGlzLnNjcmVlblk9ZS5zY3JlZW5ZfHwwKSx0aGlzLmJ1dHRvbj1lLmJ1dHRvbix0aGlzLmtleT1lLmtleXx8XCJcIix0aGlzLmN0cmxLZXk9ZS5jdHJsS2V5LHRoaXMuYWx0S2V5PWUuYWx0S2V5LHRoaXMuc2hpZnRLZXk9ZS5zaGlmdEtleSx0aGlzLm1ldGFLZXk9ZS5tZXRhS2V5LHRoaXMucG9pbnRlcklkPWUucG9pbnRlcklkfHwwLHRoaXMucG9pbnRlclR5cGU9XCJzdHJpbmdcIj09dHlwZW9mIGUucG9pbnRlclR5cGU/ZS5wb2ludGVyVHlwZTpiZVtlLnBvaW50ZXJUeXBlXXx8XCJcIix0aGlzLmM9ZSxlLmRlZmF1bHRQcmV2ZW50ZWQmJl9lLk8uYi5jYWxsKHRoaXMpfX1OKF9lLGhlKTt2YXIgYmU9ZGUoezI6XCJ0b3VjaFwiLDM6XCJwZW5cIiw0OlwibW91c2VcIn0pO19lLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7X2UuTy5iLmNhbGwodGhpcyk7dmFyIGU9dGhpcy5jO2UucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOmUucmV0dXJuVmFsdWU9ITF9O3ZhciBtZT1cImNsb3N1cmVfbGlzdGVuYWJsZV9cIisoMWU2Kk1hdGgucmFuZG9tKCl8MCksU2U9MDtmdW5jdGlvbiBFZShlLHQsbyxyLG4pe3RoaXMubGlzdGVuZXI9ZSx0aGlzLnByb3h5PW51bGwsdGhpcy5zcmM9dCx0aGlzLnR5cGU9byx0aGlzLmNhcHR1cmU9ISFyLHRoaXMuSD1uLHRoaXMua2V5PSsrU2UsdGhpcy5BPXRoaXMuRD0hMX1mdW5jdGlvbiBUZShlKXtlLkE9ITAsZS5saXN0ZW5lcj1udWxsLGUucHJveHk9bnVsbCxlLnNyYz1udWxsLGUuSD1udWxsfWZ1bmN0aW9uIEFlKGUpe3RoaXMuc3JjPWUsdGhpcy5hPXt9LHRoaXMuYj0wfWZ1bmN0aW9uIHZlKGUsdCl7dmFyIG89dC50eXBlO2lmKG8gaW4gZS5hKXt2YXIgcixuPWUuYVtvXSxzPWsobix0KTsocj0wPD1zKSYmQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKG4scywxKSxyJiYoVGUodCksMD09ZS5hW29dLmxlbmd0aCYmKGRlbGV0ZSBlLmFbb10sZS5iLS0pKX19ZnVuY3Rpb24gSWUoZSx0LG8scil7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDsrK24pe3ZhciBzPWVbbl07aWYoIXMuQSYmcy5saXN0ZW5lcj09dCYmcy5jYXB0dXJlPT0hIW8mJnMuSD09cilyZXR1cm4gbn1yZXR1cm4tMX1BZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUsdCxvLHIsbil7dmFyIHM9ZS50b1N0cmluZygpOyhlPXRoaXMuYVtzXSl8fChlPXRoaXMuYVtzXT1bXSx0aGlzLmIrKyk7dmFyIGk9SWUoZSx0LHIsbik7cmV0dXJuLTE8aT8odD1lW2ldLG98fCh0LkQ9ITEpKTooKHQ9bmV3IEVlKHQsdGhpcy5zcmMscywhIXIsbikpLkQ9byxlLnB1c2godCkpLHR9LEFlLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSx0LG8scil7aWYoISgoZT1lLnRvU3RyaW5nKCkpaW4gdGhpcy5hKSlyZXR1cm4hMTt2YXIgbj10aGlzLmFbZV07cmV0dXJuLTE8KHQ9SWUobix0LG8scikpJiYoVGUoblt0XSksQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKG4sdCwxKSwwPT1uLmxlbmd0aCYmKGRlbGV0ZSB0aGlzLmFbZV0sdGhpcy5iLS0pLCEwKX07dmFyIFJlPVwiY2xvc3VyZV9sbV9cIisoMWU2Kk1hdGgucmFuZG9tKCl8MCksT2U9e307ZnVuY3Rpb24gamUoZSx0LG8scixuKXtpZihyJiZyLm9uY2UpTmUoZSx0LG8scixuKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBzPTA7czx0Lmxlbmd0aDtzKyspamUoZSx0W3NdLG8scixuKTtlbHNlIG89UGUobyksZSYmZVttZV0/ZS5mLmFkZChTdHJpbmcodCksbywhMSx2KHIpPyEhci5jYXB0dXJlOiEhcixuKTp3ZShlLHQsbywhMSxyLG4pfWZ1bmN0aW9uIHdlKGUsdCxvLHIsbixzKXtpZighdCl0aHJvdyBFcnJvcihcIkludmFsaWQgZXZlbnQgdHlwZVwiKTt2YXIgaT12KG4pPyEhbi5jYXB0dXJlOiEhbixhPURlKGUpO2lmKGF8fChlW1JlXT1hPW5ldyBBZShlKSksIShvPWEuYWRkKHQsbyxyLGkscykpLnByb3h5KWlmKHI9ZnVuY3Rpb24oKXt2YXIgZT1MZTtyZXR1cm4gZnVuY3Rpb24gdChvKXtyZXR1cm4gZS5jYWxsKHQuc3JjLHQubGlzdGVuZXIsbyl9fSgpLG8ucHJveHk9cixyLnNyYz1lLHIubGlzdGVuZXI9byxlLmFkZEV2ZW50TGlzdGVuZXIpeWV8fChuPWkpLHZvaWQgMD09PW4mJihuPSExKSxlLmFkZEV2ZW50TGlzdGVuZXIodC50b1N0cmluZygpLHIsbik7ZWxzZSBpZihlLmF0dGFjaEV2ZW50KWUuYXR0YWNoRXZlbnQoTWUodC50b1N0cmluZygpKSxyKTtlbHNle2lmKCFlLmFkZExpc3RlbmVyfHwhZS5yZW1vdmVMaXN0ZW5lcil0aHJvdyBFcnJvcihcImFkZEV2ZW50TGlzdGVuZXIgYW5kIGF0dGFjaEV2ZW50IGFyZSB1bmF2YWlsYWJsZS5cIik7ZS5hZGRMaXN0ZW5lcihyKX19ZnVuY3Rpb24gTmUoZSx0LG8scixuKXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKU5lKGUsdFtzXSxvLHIsbik7ZWxzZSBvPVBlKG8pLGUmJmVbbWVdP2UuZi5hZGQoU3RyaW5nKHQpLG8sITAsdihyKT8hIXIuY2FwdHVyZTohIXIsbik6d2UoZSx0LG8sITAscixuKX1mdW5jdGlvbiBDZShlLHQsbyxyLG4pe2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBzPTA7czx0Lmxlbmd0aDtzKyspQ2UoZSx0W3NdLG8scixuKTtlbHNlIHI9dihyKT8hIXIuY2FwdHVyZTohIXIsbz1QZShvKSxlJiZlW21lXT9lLmYucmVtb3ZlKFN0cmluZyh0KSxvLHIsbik6ZSYmKGU9RGUoZSkpJiYodD1lLmFbdC50b1N0cmluZygpXSxlPS0xLHQmJihlPUllKHQsbyxyLG4pKSwobz0tMTxlP3RbZV06bnVsbCkmJlVlKG8pKX1mdW5jdGlvbiBVZShlKXtpZihcIm51bWJlclwiIT10eXBlb2YgZSYmZSYmIWUuQSl7dmFyIHQ9ZS5zcmM7aWYodCYmdFttZV0pdmUodC5mLGUpO2Vsc2V7dmFyIG89ZS50eXBlLHI9ZS5wcm94eTt0LnJlbW92ZUV2ZW50TGlzdGVuZXI/dC5yZW1vdmVFdmVudExpc3RlbmVyKG8scixlLmNhcHR1cmUpOnQuZGV0YWNoRXZlbnQ/dC5kZXRhY2hFdmVudChNZShvKSxyKTp0LmFkZExpc3RlbmVyJiZ0LnJlbW92ZUxpc3RlbmVyJiZ0LnJlbW92ZUxpc3RlbmVyKHIpLChvPURlKHQpKT8odmUobyxlKSwwPT1vLmImJihvLnNyYz1udWxsLHRbUmVdPW51bGwpKTpUZShlKX19fWZ1bmN0aW9uIE1lKGUpe3JldHVybiBlIGluIE9lP09lW2VdOk9lW2VdPVwib25cIitlfWZ1bmN0aW9uIExlKGUsdCl7aWYoZS5BKWU9ITA7ZWxzZXt0PW5ldyBfZSh0LHRoaXMpO3ZhciBvPWUubGlzdGVuZXIscj1lLkh8fGUuc3JjO2UuRCYmVWUoZSksZT1vLmNhbGwocix0KX1yZXR1cm4gZX1mdW5jdGlvbiBEZShlKXtyZXR1cm4oZT1lW1JlXSlpbnN0YW5jZW9mIEFlP2U6bnVsbH12YXIgQmU9XCJfX2Nsb3N1cmVfZXZlbnRzX2ZuX1wiKygxZTkqTWF0aC5yYW5kb20oKT4+PjApO2Z1bmN0aW9uIFBlKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZTooZVtCZV18fChlW0JlXT1mdW5jdGlvbih0KXtyZXR1cm4gZS5oYW5kbGVFdmVudCh0KX0pLGVbQmVdKX1mdW5jdGlvbiBGZSgpe3BlLmNhbGwodGhpcyksdGhpcy5mPW5ldyBBZSh0aGlzKSx0aGlzLlU9dGhpc31mdW5jdGlvbiB4ZShlLHQpe2U9ZS5VO3ZhciBvPXQudHlwZXx8dDtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl0PW5ldyBoZSh0LGUpO2Vsc2UgaWYodCBpbnN0YW5jZW9mIGhlKXQudGFyZ2V0PXQudGFyZ2V0fHxlO2Vsc2V7dmFyIHI9dDshZnVuY3Rpb24oZSx0KXtmb3IodmFyIG8scixuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7Zm9yKG8gaW4gcj1hcmd1bWVudHNbbl0pZVtvXT1yW29dO2Zvcih2YXIgcz0wO3M8JC5sZW5ndGg7cysrKW89JFtzXSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixvKSYmKGVbb109cltvXSl9fSh0PW5ldyBoZShvLGUpLHIpfVdlKGU9dC5hPWUsbywhMCx0KSxXZShlLG8sITEsdCl9ZnVuY3Rpb24gV2UoZSx0LG8scil7aWYodD1lLmYuYVtTdHJpbmcodCldKXt0PXQuY29uY2F0KCk7Zm9yKHZhciBuPSEwLHM9MDtzPHQubGVuZ3RoOysrcyl7dmFyIGk9dFtzXTtpZihpJiYhaS5BJiZpLmNhcHR1cmU9PW8pe3ZhciBhPWkubGlzdGVuZXIsZz1pLkh8fGkuc3JjO2kuRCYmdmUoZS5mLGkpLG49ITEhPT1hLmNhbGwoZyxyKSYmbn19fX1mdW5jdGlvbiBIZShlLHQsbyl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSlvJiYoZT13KGUsbykpO2Vsc2V7aWYoIWV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUuaGFuZGxlRXZlbnQpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIGxpc3RlbmVyIGFyZ3VtZW50XCIpO2U9dyhlLmhhbmRsZUV2ZW50LGUpfXJldHVybiAyMTQ3NDgzNjQ3PE51bWJlcih0KT8tMTpFLnNldFRpbWVvdXQoZSx0fHwwKX1mdW5jdGlvbiBWZShlLHQpe3RoaXMubmFtZT1lLHRoaXMudmFsdWU9dH1OKEZlLHBlKSxGZS5wcm90b3R5cGVbbWVdPSEwLEZlLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCxvLHIpe2plKHRoaXMsZSx0LG8scil9LEZlLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCxvLHIpe0NlKHRoaXMsZSx0LG8scil9LFZlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWV9O3ZhciBHZSxrZSxZZSx6ZT1uZXcgVmUoXCJPRkZcIiwxLzApLEtlPW5ldyBWZShcIlNFVkVSRVwiLDFlMyksWGU9bmV3IFZlKFwiQ09ORklHXCIsNzAwKSxxZT1uZXcgVmUoXCJGSU5FXCIsNTAwKTtmdW5jdGlvbiAkZSgpe3RoaXMuY2xlYXIoKX1mdW5jdGlvbiBaZShlLHQsbyl7dGhpcy5yZXNldChlfHx6ZSx0LG8sdm9pZCAwLHZvaWQgMCl9ZnVuY3Rpb24gSmUoZSx0KXt0aGlzLmE9bnVsbCx0aGlzLmY9W10sdGhpcy5iPSh2b2lkIDA9PT10P251bGw6dCl8fG51bGwsdGhpcy5jPVtdLHRoaXMuZz17YTpmdW5jdGlvbigpe3JldHVybiBlfX19ZnVuY3Rpb24gUWUoZSl7cmV0dXJuIGUuYT9lLmE6ZS5iP1FlKGUuYik6KGZ1bmN0aW9uKGUsdCl7dGhyb3cgbmV3IEYoXCJGYWlsdXJlXCIrKGU/XCI6IFwiK2U6XCJcIiksQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX0oXCJSb290IGxvZ2dlciBoYXMgbm8gbGV2ZWwgc2V0LlwiKSx6ZSl9ZnVuY3Rpb24gZXQoKXt0aGlzLmVudHJpZXM9e307dmFyIGU9bmV3IEplKFwiXCIpO2UuYT1YZSx0aGlzLmVudHJpZXNbXCJcIl09ZX1mdW5jdGlvbiB0dChlLHQsbyl7dmFyIHI9ZS5lbnRyaWVzW3RdO2lmKHIpcmV0dXJuIHZvaWQgMCE9PW8mJihyLmE9bykscjtyPXR0KGUsdC5zdWJzdHIoMCx0Lmxhc3RJbmRleE9mKFwiLlwiKSkpO3ZhciBuPW5ldyBKZSh0LHIpO3JldHVybiBlLmVudHJpZXNbdF09bixyLmMucHVzaChuKSx2b2lkIDAhPT1vJiYobi5hPW8pLG59ZnVuY3Rpb24gb3QoKXtyZXR1cm4ga2V8fChrZT1uZXcgZXQpLGtlfWZ1bmN0aW9uIHJ0KGUsdCxvKXt2YXIgcjsocj1lKSYmKHI9ZSYmdCkmJihyPShyPXQudmFsdWUpPj0oZT9RZSh0dChvdCgpLGUuYSgpKSk6emUpLnZhbHVlKSxyJiYodD10fHx6ZSxyPXR0KG90KCksZS5hKCkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIG8mJihvPW8oKSksR2V8fChHZT1uZXcgJGUpLGZ1bmN0aW9uKGUsdCl7Zm9yKDtlOyllLmYuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZSh0KX0pKSxlPWUuYn0ocixlPW5ldyBaZSh0LG8sZS5hKCkpKSl9ZnVuY3Rpb24gbnQoZSx0KXtlJiZydChlLHFlLHQpfWZ1bmN0aW9uIHN0KCl7fWZ1bmN0aW9uIGl0KGUpe3ZhciB0O3JldHVybih0PWUuYSl8fCh0PXt9LGx0KGUpJiYodFswXT0hMCx0WzFdPSEwKSx0PWUuYT10KSx0fWZ1bmN0aW9uIGF0KCl7fWZ1bmN0aW9uIGd0KGUpe3JldHVybihlPWx0KGUpKT9uZXcgQWN0aXZlWE9iamVjdChlKTpuZXcgWE1MSHR0cFJlcXVlc3R9ZnVuY3Rpb24gbHQoZSl7aWYoIWUuYiYmXCJ1bmRlZmluZWRcIj09dHlwZW9mIFhNTEh0dHBSZXF1ZXN0JiZcInVuZGVmaW5lZFwiIT10eXBlb2YgQWN0aXZlWE9iamVjdCl7Zm9yKHZhciB0PVtcIk1TWE1MMi5YTUxIVFRQLjYuMFwiLFwiTVNYTUwyLlhNTEhUVFAuMy4wXCIsXCJNU1hNTDIuWE1MSFRUUFwiLFwiTWljcm9zb2Z0LlhNTEhUVFBcIl0sbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcj10W29dO3RyeXtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QociksZS5iPXJ9Y2F0Y2goZSl7fX10aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBjcmVhdGUgQWN0aXZlWE9iamVjdC4gQWN0aXZlWCBtaWdodCBiZSBkaXNhYmxlZCwgb3IgTVNYTUwgbWlnaHQgbm90IGJlIGluc3RhbGxlZFwiKX1yZXR1cm4gZS5ifWZ1bmN0aW9uIHV0KGUsdCl7dGhpcy5iPWVbRS5TeW1ib2wuaXRlcmF0b3JdKCksdGhpcy5jPXQsdGhpcy5mPTB9JGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7fSxaZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt9LHN0LnByb3RvdHlwZS5hPW51bGwsTihhdCxzdCksWWU9bmV3IGF0LGEoKSxjKCksdXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdXQucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmIubmV4dCgpO3JldHVybnt2YWx1ZTplLmRvbmU/dm9pZCAwOnRoaXMuYy5jYWxsKHZvaWQgMCxlLnZhbHVlLHRoaXMuZisrKSxkb25lOmUuZG9uZX19LGEoKSxjKCksYSgpLGMoKTt2YXIgY3Q9XCJTdG9wSXRlcmF0aW9uXCJpbiBFP0UuU3RvcEl0ZXJhdGlvbjp7bWVzc2FnZTpcIlN0b3BJdGVyYXRpb25cIixzdGFjazpcIlwifTtmdW5jdGlvbiBwdCgpe31mdW5jdGlvbiBmdChlKXtpZihlIGluc3RhbmNlb2YgaHR8fGUgaW5zdGFuY2VvZiB5dHx8ZSBpbnN0YW5jZW9mIF90KXJldHVybiBlO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUubmV4dClyZXR1cm4gbmV3IGh0KChmdW5jdGlvbigpe3JldHVybiBkdChlKX0pKTtpZihhKCksYygpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGVbU3ltYm9sLml0ZXJhdG9yXSlyZXR1cm4gYSgpLGMoKSxuZXcgaHQoKGZ1bmN0aW9uKCl7cmV0dXJuIGVbU3ltYm9sLml0ZXJhdG9yXSgpfSkpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUudSlyZXR1cm4gbmV3IGh0KChmdW5jdGlvbigpe3JldHVybiBkdChlLnUoKSl9KSk7dGhyb3cgRXJyb3IoXCJOb3QgYW4gaXRlcmF0b3Igb3IgaXRlcmFibGUuXCIpfWZ1bmN0aW9uIGR0KGUpe2lmKCEoZSBpbnN0YW5jZW9mIHB0KSlyZXR1cm4gZTt2YXIgdD0hMTtyZXR1cm57bmV4dDpmdW5jdGlvbigpe2Zvcih2YXIgbzshdDspdHJ5e289ZS5hKCk7YnJlYWt9Y2F0Y2goZSl7aWYoZSE9PWN0KXRocm93IGU7dD0hMH1yZXR1cm57dmFsdWU6byxkb25lOnR9fX19ZnVuY3Rpb24gaHQoZSl7dGhpcy5iPWV9ZnVuY3Rpb24geXQoZSl7dGhpcy5iPWV9ZnVuY3Rpb24gX3QoZSl7aHQuY2FsbCh0aGlzLChmdW5jdGlvbigpe3JldHVybiBlfSkpLHRoaXMuZj1lfWZ1bmN0aW9uIGJ0KGUsdCl7dGhpcy5vPXt9LHRoaXMuaj1bXSx0aGlzLkI9dGhpcy5zaXplPTA7dmFyIG89YXJndW1lbnRzLmxlbmd0aDtpZigxPG8pe2lmKG8lMil0aHJvdyBFcnJvcihcIlVuZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzXCIpO2Zvcih2YXIgcj0wO3I8bztyKz0yKXRoaXMuc2V0KGFyZ3VtZW50c1tyXSxhcmd1bWVudHNbcisxXSl9ZWxzZSBlJiZ0aGlzLmFkZEFsbChlKX1mdW5jdGlvbiBtdChlKXtpZihlLnNpemUhPWUuai5sZW5ndGgpe2Zvcih2YXIgdD0wLG89MDt0PGUuai5sZW5ndGg7KXt2YXIgcj1lLmpbdF07U3QoZS5vLHIpJiYoZS5qW28rK109ciksdCsrfWUuai5sZW5ndGg9b31pZihlLnNpemUhPWUuai5sZW5ndGgpe3ZhciBuPXt9O2ZvcihvPXQ9MDt0PGUuai5sZW5ndGg7KVN0KG4scj1lLmpbdF0pfHwoZS5qW28rK109cixuW3JdPTEpLHQrKztlLmoubGVuZ3RoPW99fWZ1bmN0aW9uIFN0KGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfXB0LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHB0LnByb3RvdHlwZS5hLmNhbGwodGhpcyl9LHB0LnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7dGhyb3cgY3R9LHB0LnByb3RvdHlwZS51PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGEoKSxjKCksaHQucHJvdG90eXBlLnU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHl0KHRoaXMuYigpKX0saHQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF90KHRoaXMuYigpKX0saHQucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF90KHRoaXMuYigpKX0sYSgpLGMoKSxiKHl0LHB0KSx5dC5wcm90b3R5cGUuYT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYi5uZXh0KCk7aWYoZS5kb25lKXRocm93IGN0O3JldHVybiBlLnZhbHVlfSx5dC5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3JldHVybiB5dC5wcm90b3R5cGUuYS5jYWxsKHRoaXMpfSx5dC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiBuZXcgX3QodGhpcy5iKX0seXQucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF90KHRoaXMuYil9LGIoX3QsaHQpLF90LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZi5uZXh0KCl9LChyPWJ0LnByb3RvdHlwZSkuRz1mdW5jdGlvbigpe3JldHVybiBtdCh0aGlzKSx0aGlzLmouY29uY2F0KCl9LHIuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiBTdCh0aGlzLm8sZSl9LHIuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLm89e30sdGhpcy5CPXRoaXMuc2l6ZT10aGlzLmoubGVuZ3RoPTB9LHIucmVtb3ZlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRlbGV0ZShlKX0sci5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuISFTdCh0aGlzLm8sZSkmJihkZWxldGUgdGhpcy5vW2VdLC0tdGhpcy5zaXplLHRoaXMuQisrLHRoaXMuai5sZW5ndGg+Mip0aGlzLnNpemUmJm10KHRoaXMpLCEwKX0sci5nZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gU3QodGhpcy5vLGUpP3RoaXMub1tlXTp0fSxyLnNldD1mdW5jdGlvbihlLHQpe1N0KHRoaXMubyxlKXx8KHRoaXMuc2l6ZSs9MSx0aGlzLmoucHVzaChlKSx0aGlzLkIrKyksdGhpcy5vW2VdPXR9LHIuYWRkQWxsPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBidClmb3IodmFyIHQ9ZS5HKCksbz0wO288dC5sZW5ndGg7bysrKXRoaXMuc2V0KHRbb10sZS5nZXQodFtvXSkpO2Vsc2UgZm9yKHQgaW4gZSl0aGlzLnNldCh0LGVbdF0pfSxyLmZvckVhY2g9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89dGhpcy5HKCkscj0wO3I8by5sZW5ndGg7cisrKXt2YXIgbj1vW3JdLHM9dGhpcy5nZXQobik7ZS5jYWxsKHQscyxuLHRoaXMpfX0sci5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgYnQodGhpcyl9LHIua2V5cz1mdW5jdGlvbigpe3JldHVybiBmdCh0aGlzLnUoITApKS5jKCl9LHIudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGZ0KHRoaXMudSghMSkpLmMoKX0sci5lbnRyaWVzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHV0KGUsdCl9KHRoaXMua2V5cygpLChmdW5jdGlvbih0KXtyZXR1cm5bdCxlLmdldCh0KV19KSl9LHIudT1mdW5jdGlvbihlKXttdCh0aGlzKTt2YXIgdD0wLG89dGhpcy5CLHI9dGhpcyxuPW5ldyBwdDtyZXR1cm4gbi5hPWZ1bmN0aW9uKCl7aWYobyE9ci5CKXRocm93IEVycm9yKFwiVGhlIG1hcCBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgaXRlcmF0b3Igd2FzIGNyZWF0ZWRcIik7aWYodD49ci5qLmxlbmd0aCl0aHJvdyBjdDt2YXIgbj1yLmpbdCsrXTtyZXR1cm4gZT9uOnIub1tuXX0sbi5uZXh0PW4uYS5iaW5kKG4pLG59O3ZhciBFdD0vXig/OihbXjovPyMuXSspOik/KD86XFwvXFwvKD86KFteXFxcXC8/I10qKUApPyhbXlxcXFwvPyNdKj8pKD86OihbMC05XSspKT8oPz1bXFxcXC8/I118JCkpPyhbXj8jXSspPyg/OlxcPyhbXiNdKikpPyg/OiMoW1xcc1xcU10qKSk/JC87ZnVuY3Rpb24gVHQoZSl7RmUuY2FsbCh0aGlzKSx0aGlzLmhlYWRlcnM9bmV3IGJ0LHRoaXMuQz1lfHxudWxsLHRoaXMuYz0hMSx0aGlzLko9dGhpcy5hPW51bGwsdGhpcy5QPXRoaXMudj1cIlwiLHRoaXMuZz0wLHRoaXMubD1cIlwiLHRoaXMuaT10aGlzLk49dGhpcy5zPXRoaXMuTD0hMSx0aGlzLmg9MCx0aGlzLnc9bnVsbCx0aGlzLm09QXQsdGhpcy5JPXRoaXMuTT0hMX1OKFR0LEZlKTt2YXIgQXQ9XCJcIjtUdC5wcm90b3R5cGUuYj10dChvdCgpLFwiZ29vZy5uZXQuWGhySW9cIix2b2lkIDApLmc7dmFyIHZ0PS9eaHR0cHM/JC9pLEl0PVtcIlBPU1RcIixcIlBVVFwiXTtmdW5jdGlvbiBSdChlLHQpe2UuYz0hMSxlLmEmJihlLmk9ITAsZS5hLmFib3J0KCksZS5pPSExKSxlLmw9dCxlLmc9NSxPdChlKSx3dChlKX1mdW5jdGlvbiBPdChlKXtlLkx8fChlLkw9ITAseGUoZSxcImNvbXBsZXRlXCIpLHhlKGUsXCJlcnJvclwiKSl9ZnVuY3Rpb24ganQoZSl7aWYoZS5jJiZ2b2lkIDAhPT1TKWlmKGUuSlsxXSYmND09Q3QoZSkmJjI9PWUuZ2V0U3RhdHVzKCkpbnQoZS5iLE10KGUsXCJMb2NhbCByZXF1ZXN0IGVycm9yIGRldGVjdGVkIGFuZCBpZ25vcmVkXCIpKTtlbHNlIGlmKGUucyYmND09Q3QoZSkpSGUoZS5SLDAsZSk7ZWxzZSBpZih4ZShlLFwicmVhZHlzdGF0ZWNoYW5nZVwiKSw0PT1DdChlKSl7bnQoZS5iLE10KGUsXCJSZXF1ZXN0IGNvbXBsZXRlXCIpKSxlLmM9ITE7dHJ5e3ZhciB0LG89ZS5nZXRTdGF0dXMoKTtlOnN3aXRjaChvKXtjYXNlIDIwMDpjYXNlIDIwMTpjYXNlIDIwMjpjYXNlIDIwNDpjYXNlIDIwNjpjYXNlIDMwNDpjYXNlIDEyMjM6dmFyIHI9ITA7YnJlYWsgZTtkZWZhdWx0OnI9ITF9aWYoISh0PXIpKXt2YXIgbjtpZihuPTA9PT1vKXt2YXIgcz1TdHJpbmcoZS52KS5tYXRjaChFdClbMV18fG51bGw7aWYoIXMmJkUuc2VsZiYmRS5zZWxmLmxvY2F0aW9uKXt2YXIgaT1FLnNlbGYubG9jYXRpb24ucHJvdG9jb2w7cz1pLnN1YnN0cigwLGkubGVuZ3RoLTEpfW49IXZ0LnRlc3Qocz9zLnRvTG93ZXJDYXNlKCk6XCJcIil9dD1ufWlmKHQpeGUoZSxcImNvbXBsZXRlXCIpLHhlKGUsXCJzdWNjZXNzXCIpO2Vsc2V7ZS5nPTY7dHJ5e3ZhciBhPTI8Q3QoZSk/ZS5hLnN0YXR1c1RleHQ6XCJcIn1jYXRjaCh0KXtudChlLmIsXCJDYW4gbm90IGdldCBzdGF0dXM6IFwiK3QubWVzc2FnZSksYT1cIlwifWUubD1hK1wiIFtcIitlLmdldFN0YXR1cygpK1wiXVwiLE90KGUpfX1maW5hbGx5e3d0KGUpfX19ZnVuY3Rpb24gd3QoZSl7aWYoZS5hKXtOdChlKTt2YXIgdD1lLmEsbz1lLkpbMF0/QTpudWxsO2UuYT1udWxsLGUuSj1udWxsLHhlKGUsXCJyZWFkeVwiKTt0cnl7dC5vbnJlYWR5c3RhdGVjaGFuZ2U9b31jYXRjaCh0KXsoZT1lLmIpJiZydChlLEtlLFwiUHJvYmxlbSBlbmNvdW50ZXJlZCByZXNldHRpbmcgb25yZWFkeXN0YXRlY2hhbmdlOiBcIit0Lm1lc3NhZ2UpfX19ZnVuY3Rpb24gTnQoZSl7ZS5hJiZlLkkmJihlLmEub250aW1lb3V0PW51bGwpLGUudyYmKEUuY2xlYXJUaW1lb3V0KGUudyksZS53PW51bGwpfWZ1bmN0aW9uIEN0KGUpe3JldHVybiBlLmE/ZS5hLnJlYWR5U3RhdGU6MH1mdW5jdGlvbiBVdChlLHQpe2lmKGUuYSYmND09Q3QoZSkpcmV0dXJuIG51bGw9PT0oZT1lLmEuZ2V0UmVzcG9uc2VIZWFkZXIodCkpP3ZvaWQgMDplfWZ1bmN0aW9uIE10KGUsdCl7cmV0dXJuIHQrXCIgW1wiK2UuUCtcIiBcIitlLnYrXCIgXCIrZS5nZXRTdGF0dXMoKStcIl1cIn0ocj1UdC5wcm90b3R5cGUpLlQ9ZnVuY3Rpb24oKXt2b2lkIDAhPT1TJiZ0aGlzLmEmJih0aGlzLmw9XCJUaW1lZCBvdXQgYWZ0ZXIgXCIrdGhpcy5oK1wibXMsIGFib3J0aW5nXCIsdGhpcy5nPTgsbnQodGhpcy5iLE10KHRoaXMsdGhpcy5sKSkseGUodGhpcyxcInRpbWVvdXRcIiksdGhpcy5hYm9ydCg4KSl9LHIuYWJvcnQ9ZnVuY3Rpb24oZSl7dGhpcy5hJiZ0aGlzLmMmJihudCh0aGlzLmIsTXQodGhpcyxcIkFib3J0aW5nXCIpKSx0aGlzLmM9ITEsdGhpcy5pPSEwLHRoaXMuYS5hYm9ydCgpLHRoaXMuaT0hMSx0aGlzLmc9ZXx8Nyx4ZSh0aGlzLFwiY29tcGxldGVcIikseGUodGhpcyxcImFib3J0XCIpLHd0KHRoaXMpKX0sci5SPWZ1bmN0aW9uKCl7dGhpcy5LfHwodGhpcy5OfHx0aGlzLnN8fHRoaXMuaT9qdCh0aGlzKTp0aGlzLlcoKSl9LHIuVz1mdW5jdGlvbigpe2p0KHRoaXMpfSxyLmdldFN0YXR1cz1mdW5jdGlvbigpe3RyeXtyZXR1cm4gMjxDdCh0aGlzKT90aGlzLmEuc3RhdHVzOi0xfWNhdGNoKGUpe3JldHVybi0xfX07dmFyIEx0PXt9LER0PW51bGw7ZnVuY3Rpb24gQnQoKXtpZighRHQpe0R0PXt9O2Zvcih2YXIgZT1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCIuc3BsaXQoXCJcIiksdD1bXCIrLz1cIixcIisvXCIsXCItXz1cIixcIi1fLlwiLFwiLV9cIl0sbz0wOzU+bztvKyspe3ZhciByPWUuY29uY2F0KHRbb10uc3BsaXQoXCJcIikpO0x0W29dPXI7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBzPXJbbl07dm9pZCAwPT09RHRbc10mJihEdFtzXT1uKX19fX12YXIgUHQ9W1wiY29udGVudC10eXBlXCIsXCJncnBjLXN0YXR1c1wiLFwiZ3JwYy1tZXNzYWdlXCJdO2Z1bmN0aW9uIEZ0KGUpe3RoaXMuYT1lLlosdGhpcy5tPW51bGwsdGhpcy5iPVtdLHRoaXMuaD1bXSx0aGlzLmc9W10sdGhpcy5mPVtdLHRoaXMuYz1bXSx0aGlzLmw9ITEsdGhpcy5pPTAsdGhpcy5zPW5ldyB4O3ZhciB0PXRoaXM7amUodGhpcy5hLFwicmVhZHlzdGF0ZWNoYW5nZVwiLChmdW5jdGlvbigpe3ZhciBlPXQuYTtpZihlPWUuYT9lLmEuZ2V0UmVzcG9uc2VIZWFkZXIoXCJDb250ZW50LVR5cGVcIik6bnVsbCl7aWYoMD09KGU9ZS50b0xvd2VyQ2FzZSgpKS5sYXN0SW5kZXhPZihcImFwcGxpY2F0aW9uL2dycGMtd2ViLXRleHRcIiwwKSl7ZT10LmE7dHJ5e3ZhciBvPWUuYT9lLmEucmVzcG9uc2VUZXh0OlwiXCJ9Y2F0Y2godCl7bnQoZS5iLFwiQ2FuIG5vdCBnZXQgcmVzcG9uc2VUZXh0OiBcIit0Lm1lc3NhZ2UpLG89XCJcIn1pZihvPShlPW98fFwiXCIpLmxlbmd0aC1lLmxlbmd0aCU0LDA9PShlPWUuc3Vic3RyKHQuaSxvLXQuaSkpLmxlbmd0aClyZXR1cm47dC5pPW8sZT1mdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aCxvPTMqdC80O28lMz9vPU1hdGguZmxvb3Iobyk6eihcIj0uXCIsZVt0LTFdKSYmKG89eihcIj0uXCIsZVt0LTJdKT9vLTI6by0xKTt2YXIgcj1uZXcgVWludDhBcnJheShvKSxuPTA7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbyh0KXtmb3IoO3I8ZS5sZW5ndGg7KXt2YXIgbz1lLmNoYXJBdChyKyspLG49RHRbb107aWYobnVsbCE9bilyZXR1cm4gbjtpZighL15bXFxzXFx4YTBdKiQvLnRlc3QobykpdGhyb3cgRXJyb3IoXCJVbmtub3duIGJhc2U2NCBlbmNvZGluZyBhdCBjaGFyOiBcIitvKX1yZXR1cm4gdH1CdCgpO2Zvcih2YXIgcj0wOzspe3ZhciBuPW8oLTEpLHM9bygwKSxpPW8oNjQpLGE9byg2NCk7aWYoNjQ9PT1hJiYtMT09PW4pYnJlYWs7dChuPDwyfHM+PjQpLDY0IT1pJiYodChzPDw0JjI0MHxpPj4yKSw2NCE9YSYmdChpPDw2JjE5MnxhKSl9fShlLChmdW5jdGlvbihlKXtyW24rK109ZX0pKSxyLnN1YmFycmF5KDAsbil9KGUpfWVsc2V7aWYoMCE9ZS5sYXN0SW5kZXhPZihcImFwcGxpY2F0aW9uL2dycGNcIiwwKSlyZXR1cm4gdm9pZCBXdCh0LG5ldyBEKDIsXCJVbmtub3duIENvbnRlbnQtdHlwZSByZWNlaXZlZC5cIikpO2U9bmV3IFVpbnQ4QXJyYXkoZnVuY3Rpb24oZSl7dHJ5e2lmKCFlLmEpcmV0dXJuIG51bGw7aWYoXCJyZXNwb25zZVwiaW4gZS5hKXJldHVybiBlLmEucmVzcG9uc2U7c3dpdGNoKGUubSl7Y2FzZSBBdDpjYXNlXCJ0ZXh0XCI6cmV0dXJuIGUuYS5yZXNwb25zZVRleHQ7Y2FzZVwiYXJyYXlidWZmZXJcIjppZihcIm1velJlc3BvbnNlQXJyYXlCdWZmZXJcImluIGUuYSlyZXR1cm4gZS5hLm1velJlc3BvbnNlQXJyYXlCdWZmZXJ9dmFyIHQ9ZS5iO3JldHVybiB0JiZydCh0LEtlLFwiUmVzcG9uc2UgdHlwZSBcIitlLm0rXCIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIGJyb3dzZXJcIiksbnVsbH1jYXRjaCh0KXtyZXR1cm4gbnQoZS5iLFwiQ2FuIG5vdCBnZXQgcmVzcG9uc2U6IFwiK3QubWVzc2FnZSksbnVsbH19KHQuYSkpfW89bnVsbDt0cnl7bz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oZSl7YS5mKyssYS5hPShhLmE8PDgpK2UsND09YS5mJiYoYS5iPTIsYS5nPTAsXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXk/YS5jPW5ldyBVaW50OEFycmF5KGEuYSk6YS5jPUFycmF5KGEuYSksMD09YS5hJiZuKCkpfWZ1bmN0aW9uIHIoZSl7YS5jW2EuZysrXT1lLGEuZz09YS5hJiZuKCl9ZnVuY3Rpb24gbigpe3ZhciBlPXt9O2VbYS5oXT1hLmMsYS5pLnB1c2goZSksYS5iPVd9dmFyIHMsaSxhPWUsZz0wO2ZvcihzPXQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx0IGluc3RhbmNlb2YgQXJyYXk/dDpuZXcgVWludDhBcnJheSh0KTtnPHMubGVuZ3RoOyl7c3dpdGNoKGEuYil7Y2FzZSAzOlYoYSxzLGcsXCJzdHJlYW0gYWxyZWFkeSBicm9rZW5cIik7YnJlYWs7Y2FzZSBXOjA9PShpPXNbZ10pfHxpPT1IP2EuaD1pOlYoYSxzLGcsXCJpbnZhbGlkIGZyYW1lIGJ5dGVcIiksYS5iPTEsYS5hPTAsYS5mPTA7YnJlYWs7Y2FzZSAxOm8oc1tnXSk7YnJlYWs7Y2FzZSAyOnIoc1tnXSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihcInVuZXhwZWN0ZWQgcGFyc2VyIHN0YXRlOiBcIithLmIpfWEubSsrLGcrK31yZXR1cm4gZT1hLmksYS5pPVtdLDA8ZS5sZW5ndGg/ZTpudWxsfSh0LnMsZSl9Y2F0Y2goZSl7V3QodCxuZXcgRCgyLFwiRXJyb3IgaW4gcGFyc2luZyByZXNwb25zZSBib2R5XCIpKX1pZihvKWZvcihlPTA7ZTxvLmxlbmd0aDtlKyspe2lmKDAgaW4gb1tlXSl7dmFyIHI9b1tlXVswXTtpZihyKXt2YXIgbj12b2lkIDA7dHJ5e249dC5tKHIpfWNhdGNoKGUpe1d0KHQsbmV3IEQoMTMsXCJFcnJvciB3aGVuIGRlc2VyaWFsaXppbmcgcmVzcG9uc2UgZGF0YTogXCIrbikpfWlmKG4pe3I9dDtmb3IodmFyIHM9MDtzPHIuYi5sZW5ndGg7cysrKXIuYltzXShuKX19fWlmKEggaW4gb1tlXSYmMDxvW2VdW0hdLmxlbmd0aCl7Zm9yKHI9XCJcIixuPTA7bjxvW2VdW0hdLmxlbmd0aDtuKyspcis9U3RyaW5nLmZyb21DaGFyQ29kZShvW2VdW0hdW25dKTtmb3Iocj1yLnRyaW0oKS5zcGxpdChcIlxcclxcblwiKSxuPXt9LHM9MDtzPHIubGVuZ3RoO3MrKyl7dmFyIGk9cltzXS5pbmRleE9mKFwiOlwiKTtuW3Jbc10uc3Vic3RyaW5nKDAsaSkudHJpbSgpXT1yW3NdLnN1YnN0cmluZyhpKzEpLnRyaW0oKX1yPW4sbj0wLHM9XCJcIixcImdycGMtc3RhdHVzXCJpbiByJiYobj1OdW1iZXIocltcImdycGMtc3RhdHVzXCJdKSxkZWxldGUgcltcImdycGMtc3RhdHVzXCJdKSxcImdycGMtbWVzc2FnZVwiaW4gciYmKHM9cltcImdycGMtbWVzc2FnZVwiXSxkZWxldGUgcltcImdycGMtbWVzc2FnZVwiXSksV3QodCxuZXcgRChuLHMscikpfX19fSkpLGplKHRoaXMuYSxcImNvbXBsZXRlXCIsKGZ1bmN0aW9uKCl7dmFyIGU9dC5hLmcsbz0yLHI9XCJcIixuPXt9LHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307ZT0oZS5hJiY0PT1DdChlKSYmZS5hLmdldEFsbFJlc3BvbnNlSGVhZGVycygpfHxcIlwiKS5zcGxpdChcIlxcclxcblwiKTtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZighL15bXFxzXFx4YTBdKiQvLnRlc3QoZVtvXSkpe3ZhciByPVooZVtvXSksbj1yWzBdO2lmKFwic3RyaW5nXCI9PXR5cGVvZihyPXJbMV0pKXtyPXIudHJpbSgpO3ZhciBzPXRbbl18fFtdO3Rbbl09cyxzLnB1c2gocil9fXJldHVybiBmdW5jdGlvbihlLHQpe3ZhciBvLHI9e307Zm9yKG8gaW4gZSlyW29dPXQuY2FsbCh2b2lkIDAsZVtvXSxvLGUpO3JldHVybiByfSh0LChmdW5jdGlvbihlKXtyZXR1cm4gZS5qb2luKFwiLCBcIil9KSl9KHQuYSk7aWYoT2JqZWN0LmtleXMocykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7UHQuaW5jbHVkZXMoZSl8fChuW2VdPXNbZV0pfSkpLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPTA7bzxlLmcubGVuZ3RoO28rKyllLmdbb10odCl9KHQsbiksMCE9ZSl7c3dpdGNoKGUpe2Nhc2UgNzpvPTEwO2JyZWFrO2Nhc2UgODpvPTQ7YnJlYWs7Y2FzZSA2Om89ZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2UgMjAwOnJldHVybiAwO2Nhc2UgNDAwOnJldHVybiAzO2Nhc2UgNDAxOnJldHVybiAxNjtjYXNlIDQwMzpyZXR1cm4gNztjYXNlIDQwNDpyZXR1cm4gNTtjYXNlIDQwOTpyZXR1cm4gMTA7Y2FzZSA0MTI6cmV0dXJuIDk7Y2FzZSA0Mjk6cmV0dXJuIDg7Y2FzZSA0OTk6cmV0dXJuIDE7Y2FzZSA1MDA6ZGVmYXVsdDpyZXR1cm4gMjtjYXNlIDUwMTpyZXR1cm4gMTI7Y2FzZSA1MDM6cmV0dXJuIDE0O2Nhc2UgNTA0OnJldHVybiA0fX0odC5hLmdldFN0YXR1cygpKTticmVhaztkZWZhdWx0Om89MTR9MTA9PW8mJnQubHx8V3QodCxuZXcgRChvLGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuXCJObyBFcnJvclwiO2Nhc2UgMTpyZXR1cm5cIkFjY2VzcyBkZW5pZWQgdG8gY29udGVudCBkb2N1bWVudFwiO2Nhc2UgMjpyZXR1cm5cIkZpbGUgbm90IGZvdW5kXCI7Y2FzZSAzOnJldHVyblwiRmlyZWZveCBzaWxlbnRseSBlcnJvcmVkXCI7Y2FzZSA0OnJldHVyblwiQXBwbGljYXRpb24gY3VzdG9tIGVycm9yXCI7Y2FzZSA1OnJldHVyblwiQW4gZXhjZXB0aW9uIG9jY3VycmVkXCI7Y2FzZSA2OnJldHVyblwiSHR0cCByZXNwb25zZSBhdCA0MDAgb3IgNTAwIGxldmVsXCI7Y2FzZSA3OnJldHVyblwiUmVxdWVzdCB3YXMgYWJvcnRlZFwiO2Nhc2UgODpyZXR1cm5cIlJlcXVlc3QgdGltZWQgb3V0XCI7Y2FzZSA5OnJldHVyblwiVGhlIHJlc291cmNlIGlzIG5vdCBhdmFpbGFibGUgb2ZmbGluZVwiO2RlZmF1bHQ6cmV0dXJuXCJVbnJlY29nbml6ZWQgZXJyb3IgY29kZVwifX0oZSkpKX1lbHNlIGU9ITEsXCJncnBjLXN0YXR1c1wiaW4gcyYmKG89TnVtYmVyKFV0KHQuYSxcImdycGMtc3RhdHVzXCIpKSxcImdycGMtbWVzc2FnZVwiaW4gcyYmKHI9VXQodC5hLFwiZ3JwYy1tZXNzYWdlXCIpKSwwIT1vJiYoV3QodCxuZXcgRChvLHJ8fFwiXCIscykpLGU9ITApKSxlfHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUuYy5sZW5ndGg7dCsrKWUuY1t0XSgpfSh0KX0pKX1mdW5jdGlvbiB4dChlLHQpey0xPCh0PWUuaW5kZXhPZih0KSkmJmUuc3BsaWNlKHQsMSl9ZnVuY3Rpb24gV3QoZSx0KXtpZigwIT10LmNvZGUpZm9yKHZhciBvPW5ldyBEKHQuY29kZSxkZWNvZGVVUklDb21wb25lbnQodC5tZXNzYWdlfHxcIlwiKSx0Lm1ldGFkYXRhKSxyPTA7cjxlLmYubGVuZ3RoO3IrKyllLmZbcl0obyk7Zm9yKHQ9e2NvZGU6dC5jb2RlLGRldGFpbHM6ZGVjb2RlVVJJQ29tcG9uZW50KHQubWVzc2FnZXx8XCJcIiksbWV0YWRhdGE6dC5tZXRhZGF0YX0sbz0wO288ZS5oLmxlbmd0aDtvKyspZS5oW29dKHQpfWZ1bmN0aW9uIEh0KGUsdCl7ZT12b2lkIDA9PT1lP3t9OmUsdGhpcy5hPWUuZm9ybWF0fHxUKFwiZm9ybWF0XCIsZSl8fFwidGV4dFwiLHRoaXMuZz1lLmFhfHxUKFwic3VwcHJlc3NDb3JzUHJlZmxpZ2h0XCIsZSl8fCExLHRoaXMuZj1lLndpdGhDcmVkZW50aWFsc3x8VChcIndpdGhDcmVkZW50aWFsc1wiLGUpfHwhMSx0aGlzLmI9ZS4kfHxUKFwic3RyZWFtSW50ZXJjZXB0b3JzXCIsZSl8fFtdLHRoaXMuaD1lLmJhfHxUKFwidW5hcnlJbnRlcmNlcHRvcnNcIixlKXx8W10sdGhpcy5jPXR8fG51bGx9ZnVuY3Rpb24gVnQoZSx0LG8pe3ZhciByPXQuZ2V0TWV0aG9kRGVzY3JpcHRvcigpLG49bytyLm5hbWU7KG89ZS5jP2UuYzpuZXcgVHQpLk09ZS5mO3ZhciBzPW5ldyBGdCh7WjpvfSk7cy5tPXIuYjt2YXIgaT10LmdldE1ldGFkYXRhKCk7Zm9yKGEgaW4gaSlvLmhlYWRlcnMuc2V0KGEsaVthXSk7aWYoXCJ0ZXh0XCI9PWUuYT8oby5oZWFkZXJzLnNldChcIkNvbnRlbnQtVHlwZVwiLFwiYXBwbGljYXRpb24vZ3JwYy13ZWItdGV4dFwiKSxvLmhlYWRlcnMuc2V0KFwiQWNjZXB0XCIsXCJhcHBsaWNhdGlvbi9ncnBjLXdlYi10ZXh0XCIpKTpvLmhlYWRlcnMuc2V0KFwiQ29udGVudC1UeXBlXCIsXCJhcHBsaWNhdGlvbi9ncnBjLXdlYitwcm90b1wiKSxvLmhlYWRlcnMuc2V0KFwiWC1Vc2VyLUFnZW50XCIsXCJncnBjLXdlYi1qYXZhc2NyaXB0LzAuMVwiKSxvLmhlYWRlcnMuc2V0KFwiWC1HcnBjLVdlYlwiLFwiMVwiKSxvLmhlYWRlcnMuaGFzKFwiZGVhZGxpbmVcIikpe3ZhciBhPU51bWJlcihvLmhlYWRlcnMuZ2V0KFwiZGVhZGxpbmVcIikpO2E9TWF0aC5jZWlsKGEtKG5ldyBEYXRlKS5nZXRUaW1lKCkpLG8uaGVhZGVycy5kZWxldGUoXCJkZWFkbGluZVwiKSwxLzA9PT1hJiYoYT0wKSwwPGEmJihvLmhlYWRlcnMuc2V0KFwiZ3JwYy10aW1lb3V0XCIsYStcIm1cIiksby5oPU1hdGgubWF4KDAsTWF0aC5tYXgoMWUzLE1hdGguY2VpbCgxLjEqYSkpKSl9aWYoZS5nKXthPXt9O2Zvcih2YXIgZz1wKChpPW8uaGVhZGVycykua2V5cygpKSxsPWcubmV4dCgpOyFsLmRvbmU7bD1nLm5leHQoKSlhW2w9bC52YWx1ZV09aS5nZXQobCk7by5oZWFkZXJzLmNsZWFyKCk7ZTp7Zm9yKHUgaW4gYSl7dmFyIHU9ITE7YnJlYWsgZX11PSEwfXV8fChhPWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCI7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvIGluIGUpdC5jYWxsKHZvaWQgMCxlW29dLG8sZSl9KGUsKGZ1bmN0aW9uKGUsbyl7dCs9byx0Kz1cIjpcIix0Kz1lLHQrPVwiXFxyXFxuXCJ9KSksdH0oYSksXCJzdHJpbmdcIj09dHlwZW9mIG4/KHU9ZW5jb2RlVVJJQ29tcG9uZW50KFwiJGh0dHBIZWFkZXJzXCIpLCh1Kz1hPW51bGwhPWE/XCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhhKSk6XCJcIikmJigwPihhPW4uaW5kZXhPZihcIiNcIikpJiYoYT1uLmxlbmd0aCksMD4oaT1uLmluZGV4T2YoXCI/XCIpKXx8aT5hPyhpPWEsZz1cIlwiKTpnPW4uc3Vic3RyaW5nKGkrMSxhKSxhPShuPVtuLnN1YnN0cigwLGkpLGcsbi5zdWJzdHIoYSldKVsxXSxuWzFdPXU/YT9hK1wiJlwiK3U6dTphLG49blswXSsoblsxXT9cIj9cIituWzFdOlwiXCIpK25bMl0pKTpuLmEoXCIkaHR0cEhlYWRlcnNcIixhKSl9Zm9yKHI9KHQ9KDAsci5hKSh0LmdldFJlcXVlc3RNZXNzYWdlKCkpKS5sZW5ndGgsdT1bMCwwLDAsMF0sYT1uZXcgVWludDhBcnJheSg1K3IpLGk9MzswPD1pO2ktLSl1W2ldPXIlMjU2LHI+Pj49ODtpZihhLnNldChuZXcgVWludDhBcnJheSh1KSwxKSxhLnNldCh0LDUpLHQ9YSxcInRleHRcIj09ZS5hKXt2YXIgYztmb3IoZT10LHZvaWQgMD09PWMmJihjPTApLEJ0KCksYz1MdFtjXSx0PUFycmF5KE1hdGguZmxvb3IoZS5sZW5ndGgvMykpLHI9Y1s2NF18fFwiXCIsdT1hPTA7YTxlLmxlbmd0aC0yO2ErPTMpe2w9ZVthXTt2YXIgZj1lW2ErMV07Zz1lW2ErMl0saT1jW2w+PjJdLGw9Y1soMyZsKTw8NHxmPj40XSxmPWNbKDE1JmYpPDwyfGc+PjZdLGc9Y1s2MyZnXSx0W3UrK109aStsK2YrZ31zd2l0Y2goaT0wLGc9cixlLmxlbmd0aC1hKXtjYXNlIDI6Zz1jWygxNSYoaT1lW2ErMV0pKTw8Ml18fHI7Y2FzZSAxOmU9ZVthXSx0W3VdPWNbZT4+Ml0rY1soMyZlKTw8NHxpPj40XStnK3J9dD10LmpvaW4oXCJcIil9ZWxzZVwiYmluYXJ5XCI9PWUuYSYmKG8ubT1cImFycmF5YnVmZmVyXCIpO3JldHVybiBmdW5jdGlvbihlLHQsbyl7aWYoZS5hKXRocm93IEVycm9yKFwiW2dvb2cubmV0LlhocklvXSBPYmplY3QgaXMgYWN0aXZlIHdpdGggYW5vdGhlciByZXF1ZXN0PVwiK2UuditcIjsgbmV3VXJpPVwiK3QpO2Uudj10LGUubD1cIlwiLGUuZz0wLGUuUD1cIlBPU1RcIixlLkw9ITEsZS5jPSEwLGUuYT1lLkM/Z3QoZS5DKTpndChZZSksZS5KPWUuQz9pdChlLkMpOml0KFllKSxlLmEub25yZWFkeXN0YXRlY2hhbmdlPXcoZS5SLGUpO3RyeXtudChlLmIsTXQoZSxcIk9wZW5pbmcgWGhyXCIpKSxlLk49ITAsZS5hLm9wZW4oXCJQT1NUXCIsU3RyaW5nKHQpLCEwKSxlLk49ITF9Y2F0Y2godCl7cmV0dXJuIG50KGUuYixNdChlLFwiRXJyb3Igb3BlbmluZyBYaHI6IFwiK3QubWVzc2FnZSkpLHZvaWQgUnQoZSx0KX10PW98fFwiXCI7dmFyIHI9KG89ZS5oZWFkZXJzLmNsb25lKCkpLkcoKS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm5cImNvbnRlbnQtdHlwZVwiPT1lLnRvTG93ZXJDYXNlKCl9KSksbj1FLkZvcm1EYXRhJiZ0IGluc3RhbmNlb2YgRS5Gb3JtRGF0YTshKDA8PWsoSXQsXCJQT1NUXCIpKXx8cnx8bnx8by5zZXQoXCJDb250ZW50LVR5cGVcIixcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04XCIpLG8uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXt0aGlzLmEuc2V0UmVxdWVzdEhlYWRlcih0LGUpfSksZSksZS5tJiYoZS5hLnJlc3BvbnNlVHlwZT1lLm0pLFwid2l0aENyZWRlbnRpYWxzXCJpbiBlLmEmJmUuYS53aXRoQ3JlZGVudGlhbHMhPT1lLk0mJihlLmEud2l0aENyZWRlbnRpYWxzPWUuTSk7dHJ5e050KGUpLDA8ZS5oJiYoZS5JPWZ1bmN0aW9uKGUpe3JldHVybiBvZSYmY2UoKSYmXCJudW1iZXJcIj09dHlwZW9mIGUudGltZW91dCYmdm9pZCAwIT09ZS5vbnRpbWVvdXR9KGUuYSksbnQoZS5iLE10KGUsXCJXaWxsIGFib3J0IGFmdGVyIFwiK2UuaCtcIm1zIGlmIGluY29tcGxldGUsIHhocjIgXCIrZS5JKSksZS5JPyhlLmEudGltZW91dD1lLmgsZS5hLm9udGltZW91dD13KGUuVCxlKSk6ZS53PUhlKGUuVCxlLmgsZSkpLG50KGUuYixNdChlLFwiU2VuZGluZyByZXF1ZXN0XCIpKSxlLnM9ITAsZS5hLnNlbmQodCksZS5zPSExfWNhdGNoKHQpe250KGUuYixNdChlLFwiU2VuZCBlcnJvcjogXCIrdC5tZXNzYWdlKSksUnQoZSx0KX19KG8sbix0KSxzfWZ1bmN0aW9uIEd0KGUsdCxvKXt2YXIgcj0hMSxuPW51bGwscz0hMTtlLm9uKFwiZGF0YVwiLChmdW5jdGlvbihlKXtyPSEwLG49ZX0pKSxlLm9uKFwiZXJyb3JcIiwoZnVuY3Rpb24oZSl7MD09ZS5jb2RlfHxzfHwocz0hMCx0KGUsbnVsbCkpfSkpLGUub24oXCJzdGF0dXNcIiwoZnVuY3Rpb24oZSl7MD09ZS5jb2RlfHxzP28mJnQobnVsbCxudWxsLGUpOihzPSEwLHQoe2NvZGU6ZS5jb2RlLG1lc3NhZ2U6ZS5kZXRhaWxzLG1ldGFkYXRhOmUubWV0YWRhdGF9LG51bGwpKX0pKSxvJiZlLm9uKFwibWV0YWRhdGFcIiwoZnVuY3Rpb24oZSl7dChudWxsLG51bGwsbnVsbCxlKX0pKSxlLm9uKFwiZW5kXCIsKGZ1bmN0aW9uKCl7c3x8KHI/dChudWxsLG4pOnQoe2NvZGU6MixtZXNzYWdlOlwiSW5jb21wbGV0ZSByZXNwb25zZVwifSkpLG8mJnQobnVsbCxudWxsKX0pKX1mdW5jdGlvbiBrdChlLHQpe3ZhciBvPWU7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9bztvPWZ1bmN0aW9uKG8pe3JldHVybiBlLmludGVyY2VwdChvLHQpfX0pKSxvfUZ0LnByb3RvdHlwZS5vbj1mdW5jdGlvbihlLHQpe3JldHVyblwiZGF0YVwiPT1lP3RoaXMuYi5wdXNoKHQpOlwic3RhdHVzXCI9PWU/dGhpcy5oLnB1c2godCk6XCJtZXRhZGF0YVwiPT1lP3RoaXMuZy5wdXNoKHQpOlwiZW5kXCI9PWU/dGhpcy5jLnB1c2godCk6XCJlcnJvclwiPT1lJiZ0aGlzLmYucHVzaCh0KSx0aGlzfSxGdC5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm5cImRhdGFcIj09ZT94dCh0aGlzLmIsdCk6XCJzdGF0dXNcIj09ZT94dCh0aGlzLmgsdCk6XCJtZXRhZGF0YVwiPT1lP3h0KHRoaXMuZyx0KTpcImVuZFwiPT1lP3h0KHRoaXMuYyx0KTpcImVycm9yXCI9PWUmJnh0KHRoaXMuZix0KSx0aGlzfSxGdC5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKCl7dGhpcy5sPSEwLHRoaXMuYS5hYm9ydCgpfSxGdC5wcm90b3R5cGUuY2FuY2VsPUZ0LnByb3RvdHlwZS5jYW5jZWwsRnQucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPUZ0LnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcixGdC5wcm90b3R5cGUub249RnQucHJvdG90eXBlLm9uLEh0LnByb3RvdHlwZS5YPWZ1bmN0aW9uKGUsdCxvLHIsbil7dmFyIHM9dGhpcyxpPWUuc3Vic3RyKDAsZS5sZW5ndGgtci5uYW1lLmxlbmd0aCk7cmV0dXJuIEd0KGU9a3QoKGZ1bmN0aW9uKGUpe3JldHVybiBWdChzLGUsaSl9KSx0aGlzLmIpLmNhbGwodGhpcyxMKHIsdCxvKSksbiwhMSksbmV3IEIoZSl9LEh0LnByb3RvdHlwZS5TPWZ1bmN0aW9uKGUsdCxvLHIpe3ZhciBuPXRoaXMscz1lLnN1YnN0cigwLGUubGVuZ3RoLXIubmFtZS5sZW5ndGgpO3JldHVybiBrdCgoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LG8pe3ZhciByLGksYTtHdChWdChuLGUscyksKGZ1bmN0aW9uKG4scyxnLGwpe24/byhuKTpzP2E9czpnP2k9ZzpsP3I9bDoobj1lLmdldE1ldGhvZERlc2NyaXB0b3IoKSx0KG5ldyBNKGEsbixzPXZvaWQgMD09PShzPXIpP3t9OnMsdm9pZCAwPT09aT9udWxsOmkpKSl9KSwhMCl9KSl9KSx0aGlzLmgpLmNhbGwodGhpcyxMKHIsdCxvKSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0UmVzcG9uc2VNZXNzYWdlKCl9KSl9LEh0LnByb3RvdHlwZS51bmFyeUNhbGw9ZnVuY3Rpb24oZSx0LG8scil7cmV0dXJuIHRoaXMuUyhlLHQsbyxyKX0sSHQucHJvdG90eXBlLlk9ZnVuY3Rpb24oZSx0LG8scil7dmFyIG49dGhpcyxzPWUuc3Vic3RyKDAsZS5sZW5ndGgtci5uYW1lLmxlbmd0aCk7cmV0dXJuIGt0KChmdW5jdGlvbihlKXtyZXR1cm4gVnQobixlLHMpfSksdGhpcy5iKS5jYWxsKHRoaXMsTChyLHQsbykpfSxIdC5wcm90b3R5cGUuc2VydmVyU3RyZWFtaW5nPUh0LnByb3RvdHlwZS5ZLEh0LnByb3RvdHlwZS51bmFyeUNhbGw9SHQucHJvdG90eXBlLnVuYXJ5Q2FsbCxIdC5wcm90b3R5cGUudGhlbmFibGVDYWxsPUh0LnByb3RvdHlwZS5TLEh0LnByb3RvdHlwZS5ycGNDYWxsPUh0LnByb3RvdHlwZS5YLGUuZXhwb3J0cy5HcnBjV2ViQ2xpZW50QmFzZT1IdCxlLmV4cG9ydHMuU3RhdHVzQ29kZT17T0s6MCxDQU5DRUxMRUQ6MSxVTktOT1dOOjIsSU5WQUxJRF9BUkdVTUVOVDozLERFQURMSU5FX0VYQ0VFREVEOjQsTk9UX0ZPVU5EOjUsQUxSRUFEWV9FWElTVFM6NixQRVJNSVNTSU9OX0RFTklFRDo3LFVOQVVUSEVOVElDQVRFRDoxNixSRVNPVVJDRV9FWEhBVVNURUQ6OCxGQUlMRURfUFJFQ09ORElUSU9OOjksQUJPUlRFRDoxMCxPVVRfT0ZfUkFOR0U6MTEsVU5JTVBMRU1FTlRFRDoxMixJTlRFUk5BTDoxMyxVTkFWQUlMQUJMRToxNCxEQVRBX0xPU1M6MTV9LGUuZXhwb3J0cy5NZXRob2REZXNjcmlwdG9yPWZ1bmN0aW9uKGUsdCxvLHIsbixzKXt0aGlzLm5hbWU9ZSx0aGlzLmE9bix0aGlzLmI9c30sZS5leHBvcnRzLk1ldGhvZFR5cGU9e1VOQVJZOlwidW5hcnlcIixTRVJWRVJfU1RSRUFNSU5HOlwic2VydmVyX3N0cmVhbWluZ1wiLEJJRElfU1RSRUFNSU5HOlwiYmlkaV9zdHJlYW1pbmdcIn19fSxfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX189e307ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhlKXt2YXIgdD1fX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bZV07aWYodm9pZCAwIT09dClyZXR1cm4gdC5leHBvcnRzO3ZhciBvPV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1tlXT17ZXhwb3J0czp7fX07cmV0dXJuIF9fd2VicGFja19tb2R1bGVzX19bZV0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyksby5leHBvcnRzfV9fd2VicGFja19yZXF1aXJlX18uZD0oZSx0KT0+e2Zvcih2YXIgbyBpbiB0KV9fd2VicGFja19yZXF1aXJlX18ubyh0LG8pJiYhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGUsbykmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG8se2VudW1lcmFibGU6ITAsZ2V0OnRbb119KX0sX193ZWJwYWNrX3JlcXVpcmVfXy5nPWZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfWNhdGNoKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvd319KCksX193ZWJwYWNrX3JlcXVpcmVfXy5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxfX3dlYnBhY2tfcmVxdWlyZV9fLnI9ZT0+e1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9O3ZhciBfX3dlYnBhY2tfZXhwb3J0c19fPXt9O3JldHVybigoKT0+e1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHI9dFtvXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fV9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKSxfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXyx7SW5mb1NlcnZpY2U6KCk9PmMsU2Vzc2lvbkluZm86KCk9PnIsVmVyc2lvbkluZm86KCk9PnR9KTt2YXIgdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIG89ZS5tYWpvcixyPWUubWlub3Isbj1lLnBhdGNoLHM9ZS5wcmVSZWxlYXNlLGk9ZS5idWlsZDshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHQpLHRoaXMubWFqb3I9byx0aGlzLm1pbm9yPXIsdGhpcy5wYXRjaD1uLHRoaXMucHJlUmVsZWFzZT1zLHRoaXMuYnVpbGQ9aX12YXIgbyxyO3JldHVybiBvPXQsKHI9W3trZXk6XCJub0J1aWxkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdCh0aGlzKTtyZXR1cm4gZS5idWlsZD12b2lkIDAsZX19LHtrZXk6XCJub1ByZVJlbGVhc2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB0KHRoaXMpO3JldHVybiBlLnByZVJlbGVhc2U9dm9pZCAwLGV9fSx7a2V5OlwidG9TdHJpbmdcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPVwiXCIuY29uY2F0KHRoaXMubWFqb3IsXCIuXCIpLmNvbmNhdCh0aGlzLm1pbm9yLFwiLlwiKS5jb25jYXQodGhpcy5wYXRjaCk7cmV0dXJuIHRoaXMucHJlUmVsZWFzZSYmKGUrPVwiLVwiLmNvbmNhdCh0aGlzLnByZVJlbGVhc2UpKSx0aGlzLmJ1aWxkJiYoZSs9XCIrXCIuY29uY2F0KHRoaXMuYnVpbGQpKSxlfX1dKSYmZShvLnByb3RvdHlwZSxyKSx0fSgpO2Z1bmN0aW9uIG8oZSx0KXtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHI9dFtvXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt2YXIgbz10LnJlYWxtLHI9dC51c2VybmFtZSxuPXQucm9sZXMscz10LnBlcm1pc3Npb25zLGk9dC5leHBpcmVzOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksdGhpcy5yZWFsbT1vLHRoaXMudXNlcm5hbWU9cix0aGlzLnJvbGVzPW58fFtdLHRoaXMucGVybWlzc2lvbnM9c3x8W10sdGhpcy5leHBpcmVzPWl9dmFyIHQscjtyZXR1cm4gdD1lLChyPVt7a2V5OlwiaW1wbGllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLnBlcm1pc3Npb25zKXJldHVybiExO2Zvcih2YXIgdD1lLnNwbGl0KFwiOlwiKSxvPVtcIipcIixlXSxyPTE7cjx0Lmxlbmd0aDtyKyspby5wdXNoKHQuc2xpY2UoMCxyKS5qb2luKFwiOlwiKStcIipcIik7cmV0dXJuIHRoaXMucGVybWlzc2lvbnMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gby5pbmRleE9mKGUpPi0xfSkpLmxlbmd0aD4wfX1dKSYmbyh0LnByb3RvdHlwZSxyKSxlfSgpLG49X193ZWJwYWNrX3JlcXVpcmVfXyg2NjEpO2Z1bmN0aW9uIHMoZSx0KXt2YXIgbz1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG8ucHVzaC5hcHBseShvLHIpfXJldHVybiBvfWZ1bmN0aW9uIGkoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG89bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/cyhPYmplY3QobyksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2EoZSx0LG9bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobykpOnMoT2JqZWN0KG8pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobyx0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gYShlLHQsbyl7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpvLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1vLGV9ZnVuY3Rpb24gZyhlLHQsbyxyLG4scyxpKXt0cnl7dmFyIGE9ZVtzXShpKSxnPWEudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgbyhlKX1hLmRvbmU/dChnKTpQcm9taXNlLnJlc29sdmUoZykudGhlbihyLG4pfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxvPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbil7dmFyIHM9ZS5hcHBseSh0LG8pO2Z1bmN0aW9uIGkoZSl7ZyhzLHIsbixpLGEsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gYShlKXtnKHMscixuLGksYSxcInRocm93XCIsZSl9aSh2b2lkIDApfSkpfX1mdW5jdGlvbiB1KGUsdCl7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciByPXRbb107ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX12YXIgYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSx0aGlzLnVyaT10fHxcIi9hcGlcIn12YXIgbyxzLGEsZyxjLHAsZjtyZXR1cm4gbz1lLHM9W3trZXk6XCJnZXRWZXJzaW9uSW5mb1wiLHZhbHVlOihmPWwocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgbyxyLHM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gbz1uZXcgbi5oLnYxLkdlbmVyYWxJbmZvU2VydmljZVByb21pc2VDbGllbnQodGhpcy51cmksbnVsbCxudWxsKSxyPW5ldyBuLmgudjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LGUubmV4dD00LG8uZ2V0VmVyc2lvbkluZm8ocix7fSk7Y2FzZSA0OnJldHVybiBzPWUuc2VudCxlLmFicnVwdChcInJldHVyblwiLG5ldyB0KHMuZ2V0VmVyc2lvbkluZm8oKS50b09iamVjdCgpKSk7Y2FzZSA2OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiBmLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OlwiX2dldFNlc3Npb25JbmZvXCIsdmFsdWU6KHA9bChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG8pe3ZhciBzLGEsZyxsO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHM9e30sdCYmKHMuYXV0aGVudGljYXRpb249XCJCYXNpYyBcIitidG9hKFwiXCIuY29uY2F0KHQsXCI6XCIpLmNvbmNhdChvKSkpLGE9bmV3IG4uaC52MS5HZW5lcmFsSW5mb1NlcnZpY2VQcm9taXNlQ2xpZW50KHRoaXMudXJpLG51bGwsbnVsbCksZz1uZXcgbi5oLnYxLkdldFNlc3Npb25JbmZvUmVxdWVzdCxlLm5leHQ9NixhLmdldFNlc3Npb25JbmZvKGcscyk7Y2FzZSA2OnJldHVybiBsPWUuc2VudCxlLmFicnVwdChcInJldHVyblwiLG5ldyByKGkoaSh7fSxsLnRvT2JqZWN0KCkpLHt9LHtyb2xlczpsLmdldFJvbGVzTGlzdCgpLHBlcm1pc3Npb25zOmwuZ2V0UGVybWlzc2lvbnNMaXN0KCl9KSkpO2Nhc2UgODpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleTpcImdldFNlc3Npb25JbmZvXCIsdmFsdWU6KGM9bChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2dldFNlc3Npb25JbmZvKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdChcInJldHVyblwiLGUuc2VudCk7Y2FzZSAzOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiBjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OlwibG9naW5cIix2YWx1ZTooZz1sKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQsbyl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZ2V0U2Vzc2lvbkluZm8odCxvKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KFwicmV0dXJuXCIsZS5zZW50KTtjYXNlIDM6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6XCJsb2dvdXRcIix2YWx1ZTooYT1sKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5wcmV2PTAsZS5uZXh0PTMsdGhpcy5fZ2V0U2Vzc2lvbkluZm8oXCJsb2dvdXRcIixcIlwiKTtjYXNlIDM6dGhyb3cgZS5zZW50LG5ldyBFcnJvcihcIkxvZ291dCBkaWQgbm90IHByb2NlZWQgY29ycmVjdGx5LiBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgaXQgbG9va3MgbGlrZSBhIHByb2dyYW1taW5nIGVycm9yIGluIHRoZSB3ZWJ1aS4gUGxlYXNlIHJlcG9ydFwiKTtjYXNlIDc6aWYoZS5wcmV2PTcsZS50MD1lLmNhdGNoKDApLDE2IT09ZS50MC5jb2RlKXtlLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KFwicmV0dXJuXCIsITApO2Nhc2UgMTI6dGhyb3cgZS50MDtjYXNlIDEzOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMsW1swLDddXSl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9XSxzJiZ1KG8ucHJvdG90eXBlLHMpLGV9KCl9KSgpLF9fd2VicGFja19leHBvcnRzX199KSgpfSkpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///818\n')},799:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\nvar aa=__webpack_require__(526),ca=__webpack_require__(851);function p(a){for(var b="https://reactjs.org/docs/error-decoder.html?invariant="+a,c=1;c<arguments.length;c++)b+="&args[]="+encodeURIComponent(arguments[c]);return"Minified React error #"+a+"; visit "+b+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+"Capture",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!("undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case "function":case "symbol":return!0;case "boolean":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return"data-"!==a&&"aria-"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||"undefined"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n["checked","multiple","muted","selected"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});["capture","download"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});["cols","rows","size","span"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});["rowSpan","start"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||"o"!==b[0]&&"O"!==b[0]||"n"!==b[1]&&"N"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,""+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:"":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?"":""+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for("react.element"),wa=Symbol.for("react.portal"),ya=Symbol.for("react.fragment"),za=Symbol.for("react.strict_mode"),Aa=Symbol.for("react.profiler"),Ba=Symbol.for("react.provider"),Ca=Symbol.for("react.context"),Da=Symbol.for("react.forward_ref"),Ea=Symbol.for("react.suspense"),Fa=Symbol.for("react.suspense_list"),Ga=Symbol.for("react.memo"),Ha=Symbol.for("react.lazy");Symbol.for("react.scope");Symbol.for("react.debug_trace_mode");\nvar Ia=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden");Symbol.for("react.cache");Symbol.for("react.tracing_marker");var Ja=Symbol.iterator;function Ka(a){if(null===a||"object"!==typeof a)return null;a=Ja&&a[Ja]||a["@@iterator"];return"function"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||""}return"\\n"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return"";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,"props",{set:function(){throw Error();}}),"object"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&"string"===typeof l.stack){for(var e=l.stack.split("\\n"),\nf=d.stack.split("\\n"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k="\\n"+e[g].replace(" at new "," at ");a.displayName&&k.includes("<anonymous>")&&(k=k.replace("<anonymous>",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:"")?Ma(a):""}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma("Lazy");case 13:return Ma("Suspense");case 19:return Ma("SuspenseList");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return""}}\nfunction Qa(a){if(null==a)return null;if("function"===typeof a)return a.displayName||a.name||null;if("string"===typeof a)return a;switch(a){case ya:return"Fragment";case wa:return"Portal";case Aa:return"Profiler";case za:return"StrictMode";case Ea:return"Suspense";case Fa:return"SuspenseList"}if("object"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||"Context")+".Consumer";case Ba:return(a._context.displayName||"Context")+".Provider";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||"",a=""!==a?"ForwardRef("+a+")":"ForwardRef");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||"Memo";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return"Cache";case 9:return(b.displayName||"Context")+".Consumer";case 10:return(b._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return a=b.render,a=a.displayName||a.name||"",b.displayName||(""!==a?"ForwardRef("+a+")":"ForwardRef");case 7:return"Fragment";case 5:return b;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Qa(b);case 8:return b===za?"StrictMode":"Mode";case 22:return"Offscreen";\ncase 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"===typeof b)return b.displayName||b.name||null;if("string"===typeof b)return b}return null}function Sa(a){switch(typeof a){case "boolean":case "number":case "string":case "undefined":return a;case "object":return a;default:return""}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&"input"===a.toLowerCase()&&("checkbox"===b||"radio"===b)}\nfunction Ua(a){var b=Ta(a)?"checked":"value",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=""+a[b];if(!a.hasOwnProperty(b)&&"undefined"!==typeof c&&"function"===typeof c.get&&"function"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=""+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=""+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d="";a&&(d=Ta(a)?a.checked?"true":"false":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?"":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:"checkbox"===b.type||"radio"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,"checked",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if("number"===d){if(0===c&&""===a.value||a.value!=c)a.value=""+c}else a.value!==""+c&&(a.value=""+c);else if("submit"===d||"reset"===d){a.removeAttribute("value");return}b.hasOwnProperty("value")?cb(a,b.type,c):b.hasOwnProperty("defaultValue")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty("value")||b.hasOwnProperty("defaultValue")){var d=b.type;if(!("submit"!==d&&"reset"!==d||void 0!==b.value&&null!==b.value))return;b=""+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;""!==c&&(a.name="");a.defaultChecked=!!a._wrapperState.initialChecked;""!==c&&(a.name=c)}\nfunction cb(a,b,c){if("number"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=""+a._wrapperState.initialValue:a.defaultValue!==""+c&&(a.defaultValue=""+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b["$"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty("$"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=""+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:""+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b="");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&""!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";case "math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}\nfunction lb(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?kb(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}\nvar mb,nb=function(a){return"undefined"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if("http://www.w3.org/2000/svg"!==a.namespaceURI||"innerHTML"in a)a.innerHTML=b;else{mb=mb||document.createElement("div");mb.innerHTML="<svg>"+b.valueOf().toString()+"</svg>";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=["Webkit","ms","Moz","O"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(""+b).trim():b+"px"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),e=rb(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if("object"!==typeof b.dangerouslySetInnerHTML||!("__html"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&"object"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if("function"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case "onClick":case "onClickCapture":case "onDoubleClick":case "onDoubleClickCapture":case "onMouseDown":case "onMouseDownCapture":case "onMouseMove":case "onMouseMoveCapture":case "onMouseUp":case "onMouseUpCapture":case "onMouseEnter":(d=!d.disabled)||(a=a.type,d=!("button"===a||"input"===a||"select"===a||"textarea"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&"function"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,"passive",{get:function(){Lb=!0}});window.addEventListener("test",Mb,Mb);window.removeEventListener("test",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&"function"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");\nfunction Sc(a,b){switch(a){case "focusin":case "focusout":Lc=null;break;case "dragenter":case "dragleave":Mc=null;break;case "mouseover":case "mouseout":Nc=null;break;case "pointerover":case "pointerout":Oc.delete(b.pointerId);break;case "gotpointercapture":case "lostpointercapture":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case "focusin":return Lc=Tc(Lc,a,b,c,d,e),!0;case "dragenter":return Mc=Tc(Mc,a,b,c,d,e),!0;case "mouseover":return Nc=Tc(Nc,a,b,c,d,e),!0;case "pointerover":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case "gotpointercapture":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case "cancel":case "click":case "close":case "contextmenu":case "copy":case "cut":case "auxclick":case "dblclick":case "dragend":case "dragstart":case "drop":case "focusin":case "focusout":case "input":case "invalid":case "keydown":case "keypress":case "keyup":case "mousedown":case "mouseup":case "paste":case "pause":case "play":case "pointercancel":case "pointerdown":case "pointerup":case "ratechange":case "reset":case "resize":case "seeked":case "submit":case "touchcancel":case "touchend":case "touchstart":case "volumechange":case "change":case "selectionchange":case "textInput":case "compositionstart":case "compositionend":case "compositionupdate":case "beforeblur":case "afterblur":case "beforeinput":case "blur":case "fullscreenchange":case "focus":case "hashchange":case "popstate":case "select":case "selectstart":return 1;case "drag":case "dragenter":case "dragexit":case "dragleave":case "dragover":case "mousemove":case "mouseout":case "mouseover":case "pointermove":case "pointerout":case "pointerover":case "scroll":case "toggle":case "touchmove":case "wheel":case "mouseenter":case "mouseleave":case "pointerenter":case "pointerleave":return 4;\ncase "message":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e="value"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;"charCode"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():"unknown"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():"unknown"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if("movementX"in\na)return a.movementX;a!==yd&&(yd&&"mousemove"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return"movementY"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return"clipboardData"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:"Escape",\nSpacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Nd={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",\n119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Od={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if("Unidentified"!==b)return b}return"keypress"===a.type?(a=od(a),13===a?"Enter":String.fromCharCode(a)):"keydown"===a.type||"keyup"===a.type?Nd[a.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return"keypress"===a.type?od(a):0},keyCode:function(a){return"keydown"===a.type||"keyup"===a.type?a.keyCode:0},which:function(a){return"keypress"===\na.type?od(a):"keydown"===a.type||"keyup"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return"deltaX"in a?a.deltaX:"wheelDeltaX"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return"deltaY"in a?a.deltaY:"wheelDeltaY"in a?-a.wheelDeltaY:"wheelDelta"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&"CompositionEvent"in window,be=null;ia&&"documentMode"in document&&(be=document.documentMode);var ce=ia&&"TextEvent"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case "keyup":return-1!==$d.indexOf(b.keyCode);case "keydown":return 229!==b.keyCode;case "keypress":case "mousedown":case "focusout":return!0;default:return!1}}function he(a){a=a.detail;return"object"===typeof a&&"data"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case "compositionend":return he(b);case "keypress":if(32!==b.which)return null;fe=!0;return ee;case "textInput":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return"compositionend"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case "paste":return null;case "keypress":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case "compositionend":return de&&"ko"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return"input"===b?!!le[a.type]:"textarea"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,"onChange");0<b.length&&(c=new td("onChange","change",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if("change"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye="oninput"in document;if(!ye){var ze=document.createElement("div");ze.setAttribute("oninput","return;");ye="function"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent("onpropertychange",Be),qe=pe=null)}function Be(a){if("value"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){"focusin"===a?(Ae(),pe=b,qe=c,pe.attachEvent("onpropertychange",Be)):"focusout"===a&&Ae()}function De(a){if("selectionchange"===a||"keyup"===a||"keydown"===a)return te(qe)}function Ee(a,b){if("click"===a)return te(b)}function Fe(a,b){if("input"===a||"change"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He="function"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if("object"!==typeof a||null===a||"object"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});"function"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&"documentMode"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,"selectionStart"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,"onSelect"),0<d.length&&(b=new td("onSelect","select",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c["Webkit"+a]="webkit"+b;c["Moz"+a]="moz"+b;return c}var We={animationend:Ve("Animation","AnimationEnd"),animationiteration:Ve("Animation","AnimationIteration"),animationstart:Ve("Animation","AnimationStart"),transitionend:Ve("Transition","TransitionEnd")},Xe={},Ye={};\nia&&(Ye=document.createElement("div").style,"AnimationEvent"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),"TransitionEvent"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze("animationend"),af=Ze("animationiteration"),bf=Ze("animationstart"),cf=Ze("transitionend"),df=new Map,ef="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,"on"+kf)}ff($e,"onAnimationEnd");ff(af,"onAnimationIteration");ff(bf,"onAnimationStart");ff("dblclick","onDoubleClick");ff("focusin","onFocus");ff("focusout","onBlur");ff(cf,"onTransitionEnd");ha("onMouseEnter",["mouseout","mouseover"]);ha("onMouseLeave",["mouseout","mouseover"]);ha("onPointerEnter",["pointerout","pointerover"]);\nha("onPointerLeave",["pointerout","pointerover"]);fa("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));fa("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));fa("onBeforeInput",["compositionend","keypress","textInput","paste"]);fa("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));fa("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));\nfa("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var lf="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),mf=new Set("cancel close invalid load scroll toggle".split(" ").concat(lf));\nfunction nf(a,b,c){var d=a.type||"unknown-event";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+"__bubble";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf="_reactListening"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){"selectionchange"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf("selectionchange",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||"touchstart"!==b&&"touchmove"!==b&&"wheel"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case "keypress":if(0===od(c))break a;case "keydown":case "keyup":k=Rd;break;case "focusin":n="focus";k=Fd;break;case "focusout":n="blur";k=Fd;break;case "beforeblur":case "afterblur":k=Fd;break;case "click":if(2===c.button)break a;case "auxclick":case "dblclick":case "mousedown":case "mousemove":case "mouseup":case "mouseout":case "mouseover":case "contextmenu":k=Bd;break;case "drag":case "dragend":case "dragenter":case "dragexit":case "dragleave":case "dragover":case "dragstart":case "drop":k=\nDd;break;case "touchcancel":case "touchend":case "touchmove":case "touchstart":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case "scroll":k=vd;break;case "wheel":k=Zd;break;case "copy":case "cut":case "paste":k=Jd;break;case "gotpointercapture":case "lostpointercapture":case "pointercancel":case "pointerdown":case "pointermove":case "pointerout":case "pointerover":case "pointerup":k=Td}var t=0!==(b&4),J=!t&&"scroll"===a,x=t?null!==h?h+"Capture":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h="mouseover"===a||"pointerover"===a;k="mouseout"===a||"pointerout"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F="onMouseLeave";x="onMouseEnter";w="mouse";if("pointerout"===a||"pointerover"===a)t=Td,F="onPointerLeave",x="onPointerEnter",w="pointer";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+"leave",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+"enter",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if("select"===k||"input"===k&&"file"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&"input"===k.toLowerCase()&&("checkbox"===h.type||"radio"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);"focusout"===a&&(xa=h._wrapperState)&&\nxa.controlled&&"number"===h.type&&cb(h,"number",h.value)}xa=d?ue(d):window;switch(a){case "focusin":if(me(xa)||"true"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case "focusout":Se=Re=Qe=null;break;case "mousedown":Te=!0;break;case "contextmenu":case "mouseup":case "dragend":Te=!1;Ue(g,c,e);break;case "selectionchange":if(Pe)break;case "keydown":case "keyup":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case "compositionstart":var ba="onCompositionStart";break b;case "compositionend":ba="onCompositionEnd";\nbreak b;case "compositionupdate":ba="onCompositionUpdate";break b}ba=void 0}else ie?ge(a,c)&&(ba="onCompositionEnd"):"keydown"===a&&229===c.keyCode&&(ba="onCompositionStart");ba&&(de&&"ko"!==c.locale&&(ie||"onCompositionStart"!==ba?"onCompositionEnd"===ba&&ie&&($a=nd()):(kd=e,ld="value"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,"onBeforeInput"),\n0<d.length&&(e=new Ld("onBeforeInput","beforeinput",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+"Capture",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return("string"===typeof a?a:""+a).replace(xf,"\\n").replace(yf,"")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return"textarea"===a||"noscript"===a||"string"===typeof b.children||"number"===typeof b.children||"object"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff="function"===typeof setTimeout?setTimeout:void 0,Gf="function"===typeof clearTimeout?clearTimeout:void 0,Hf="function"===typeof Promise?Promise:void 0,Jf="function"===typeof queueMicrotask?queueMicrotask:"undefined"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,"/$"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else"$"!==c&&"$?"!==c&&"$!"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if("$"===b||"$!"===b||"$?"===b)break;if("/$"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if("$"===c||"$!"===c||"$?"===c){if(0===b)return a;b--}else"/$"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of="__reactFiber$"+Nf,Pf="__reactProps$"+Nf,uf="__reactContainer$"+Nf,of="__reactEvents$"+Nf,Qf="__reactListeners$"+Nf,Rf="__reactHandles$"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if("function"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||"Unknown",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg="";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType="DELETED";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b="head"!==b&&"body"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if("/$"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else"$"!==c&&"$!"!==c&&"$?"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if("function"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r="function"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if("function"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return"function"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;"object"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;"function"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);"function"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;"object"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;"function"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);"function"===typeof b.getDerivedStateFromProps||"function"===typeof e.getSnapshotBeforeUpdate||"function"!==typeof e.UNSAFE_componentWillMount&&"function"!==typeof e.componentWillMount||(b=e.state,\n"function"===typeof e.componentWillMount&&e.componentWillMount(),"function"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);"function"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&"function"!==typeof a&&"object"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=""+a;if(null!==b&&null!==b.ref&&"function"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if("string"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,"[object Object]"===a?"object with keys {"+Object.keys(b).join(", ")+"}":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||"object"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if("string"===typeof b&&""!==b||"number"===typeof b)return b=xh(""+b,a.mode,c),b.return=a,b;if("object"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if("string"===typeof c&&""!==c||"number"===typeof c)return null!==e?null:h(a,b,""+c,d);if("object"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if("string"===typeof d&&""!==d||"number"===typeof d)return a=a.get(c)||null,h(b,a,""+d,e);if("object"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if("function"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){"object"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if("object"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||"object"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return"string"===typeof f&&""!==f||"number"===typeof f?(f=""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,"");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||"$?"===c.data||"$!"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return"function"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if("function"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=":"+b+"R"+c;c=Uh++;0<c&&(b+="H"+c.toString(32));b+=":"}else c=Vh++,b=":"+b+"r"+c.toString(32)+":";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c="",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e="\\nError generating stack: "+f.message+"\\n"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni="function"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if("function"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&"function"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);"function"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:""})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if("function"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if("hidden"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;"object"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q="function"===typeof m||"function"===typeof g.getSnapshotBeforeUpdate;q||"function"!==typeof g.UNSAFE_componentWillReceiveProps&&"function"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?("function"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||"function"!==typeof g.UNSAFE_componentWillMount&&"function"!==typeof g.componentWillMount||("function"===typeof g.componentWillMount&&g.componentWillMount(),"function"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),"function"===typeof g.componentDidMount&&(b.flags|=4194308)):\n("function"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):("function"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;"object"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m="function"===typeof y||"function"===typeof g.getSnapshotBeforeUpdate)||\n"function"!==typeof g.UNSAFE_componentWillReceiveProps&&"function"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?("function"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||"function"!==typeof g.UNSAFE_componentWillUpdate&&"function"!==typeof g.componentWillUpdate||("function"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),"function"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),"function"===typeof g.componentDidUpdate&&(b.flags|=4),"function"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):("function"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),"function"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):("function"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),"function"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&"function"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:"$!"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:"hidden",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:"hidden",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:"visible",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:"visible",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:"visible",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if("$!"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if("$?"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case "forwards":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case "backwards":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case "together":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case "input":e=Ya(a,e);d=Ya(a,d);f=[];break;case "select":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case "textarea":e=gb(a,e);d=gb(a,d);f=[];break;default:"function"!==typeof e.onClick&&"function"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if("style"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]="")}else"dangerouslySetInnerHTML"!==l&&"children"!==l&&"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if("style"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]="");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else"dangerouslySetInnerHTML"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):"children"===l?"string"!==typeof k&&"number"!==typeof k||(f=f||[]).push(l,""+k):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&(ea.hasOwnProperty(l)?(null!=k&&"onScroll"===l&&D("scroll",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push("style",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case "hidden":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case "collapsed":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case "dialog":D("cancel",d);D("close",d);break;case "iframe":case "object":case "embed":D("load",d);break;case "video":case "audio":for(e=0;e<lf.length;e++)D(lf[e],d);break;case "source":D("error",d);break;case "img":case "image":case "link":D("error",\nd);D("load",d);break;case "details":D("toggle",d);break;case "input":Za(d,f);D("invalid",d);break;case "select":d._wrapperState={wasMultiple:!!f.multiple};D("invalid",d);break;case "textarea":hb(d,f),D("invalid",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];"children"===g?"string"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=["children",h]):"number"===typeof h&&d.textContent!==""+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=["children",""+h]):ea.hasOwnProperty(g)&&null!=h&&"onScroll"===g&&D("scroll",d)}switch(c){case "input":Va(d);db(d,f,!0);break;case "textarea":Va(d);jb(d);break;case "select":case "option":break;default:"function"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;"http://www.w3.org/1999/xhtml"===a&&(a=kb(c));"http://www.w3.org/1999/xhtml"===a?"script"===c?(a=g.createElement("div"),a.innerHTML="<script>\\x3c/script>",a=a.removeChild(a.firstChild)):\n"string"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),"select"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case "dialog":D("cancel",a);D("close",a);e=d;break;case "iframe":case "object":case "embed":D("load",a);e=d;break;case "video":case "audio":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case "source":D("error",a);e=d;break;case "img":case "image":case "link":D("error",\na);D("load",a);e=d;break;case "details":D("toggle",a);e=d;break;case "input":Za(a,d);e=Ya(a,d);D("invalid",a);break;case "option":e=d;break;case "select":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D("invalid",a);break;case "textarea":hb(a,d);e=gb(a,d);D("invalid",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];"style"===f?sb(a,k):"dangerouslySetInnerHTML"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):"children"===f?"string"===typeof k?("textarea"!==\nc||""!==k)&&ob(a,k):"number"===typeof k&&ob(a,""+k):"suppressContentEditableWarning"!==f&&"suppressHydrationWarning"!==f&&"autoFocus"!==f&&(ea.hasOwnProperty(f)?null!=k&&"onScroll"===f&&D("scroll",a):null!=k&&ta(a,f,k,g))}switch(c){case "input":Va(a);db(a,d,!1);break;case "textarea":Va(a);jb(a);break;case "option":null!=d.value&&a.setAttribute("value",""+Sa(d.value));break;case "select":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:"function"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case "button":case "input":case "select":case "textarea":d=!!d.autoFocus;break a;case "img":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if("string"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&"hidden"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj="function"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if("function"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if("selectionStart"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent="":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}"function"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&"function"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,"function"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,"")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{"input"===h&&"radio"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];"style"===m?sb(e,q):"dangerouslySetInnerHTML"===m?nb(e,q):"children"===m?ob(e,q):ta(e,m,q,l)}switch(h){case "input":bb(e,f);break;case "textarea":ib(e,f);break;case "select":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:"",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if("function"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,"function"===typeof f.setProperty?f.setProperty("display","none","important"):f.display="none"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty("display")?k.display:null,h.style.display=\nrb("display",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?"":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,""),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case "button":case "input":case "select":case "textarea":k.autoFocus&&c.focus();break;case "img":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if("function"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&"object"===typeof k&&"function"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&("function"===typeof w.getDerivedStateFromError||null!==u&&"function"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&"function"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if("function"===typeof b.type.getDerivedStateFromError||"function"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;"object"===typeof e&&null!==e&&"function"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,""));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if("function"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if("function"===typeof a)bj(a)&&(g=1);else if("string"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if("object"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,""));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:""+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll="function"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||" react-mount-point-unstable "!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if("function"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,"",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if("function"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,"",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if("function"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case "input":bb(a,c);b=c.name;if("radio"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll("input[name="+JSON.stringify(""+b)+\'][type="radio"]\');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case "textarea":ib(a,c);break;case "select":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d="",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if("function"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(",");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f="",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version="18.2.0-next-9e3b772b8-20220608";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QXNELHVLQUF1Syx5Q0FBeUMsZ0JBQWdCLE1BQU0sYUFBYSxXQUFXO0FBQ3RYLEdBQUcsa0JBQWtCLGNBQWMsaUJBQWlCLDhCQUE4QiwwQkFBMEIsOEJBQThCLGFBQWEsNkJBQTZCLDRDQUE0Qyw2QkFBNkIsMkJBQTJCLFdBQVcsRUFBRSxVQUFVLCtCQUErQjtBQUM5VSwyQ0FBMkMsbUJBQW1CLDhCQUE4QiwwREFBMEQsdUJBQXVCLGVBQWUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanM/Yjk1NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuLypcbiBNb2Rlcm5penIgMy4wLjBwcmUgKEN1c3RvbSBCdWlsZCkgfCBNSVRcbiovXG4ndXNlIHN0cmljdCc7dmFyIGFhPXJlcXVpcmUoXCJyZWFjdFwiKSxjYT1yZXF1aXJlKFwic2NoZWR1bGVyXCIpO2Z1bmN0aW9uIHAoYSl7Zm9yKHZhciBiPVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrYSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyliKz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tjXSk7cmV0dXJuXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrYStcIjsgdmlzaXQgXCIrYitcIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCJ9dmFyIGRhPW5ldyBTZXQsZWE9e307ZnVuY3Rpb24gZmEoYSxiKXtoYShhLGIpO2hhKGErXCJDYXB0dXJlXCIsYil9XG5mdW5jdGlvbiBoYShhLGIpe2VhW2FdPWI7Zm9yKGE9MDthPGIubGVuZ3RoO2ErKylkYS5hZGQoYlthXSl9XG52YXIgaWE9IShcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvd3x8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnR8fFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLGphPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksa2E9L15bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRdWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIwNDBdKiQvLGxhPVxue30sbWE9e307ZnVuY3Rpb24gb2EoYSl7aWYoamEuY2FsbChtYSxhKSlyZXR1cm4hMDtpZihqYS5jYWxsKGxhLGEpKXJldHVybiExO2lmKGthLnRlc3QoYSkpcmV0dXJuIG1hW2FdPSEwO2xhW2FdPSEwO3JldHVybiExfWZ1bmN0aW9uIHBhKGEsYixjLGQpe2lmKG51bGwhPT1jJiYwPT09Yy50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgYil7Y2FzZSBcImZ1bmN0aW9uXCI6Y2FzZSBcInN5bWJvbFwiOnJldHVybiEwO2Nhc2UgXCJib29sZWFuXCI6aWYoZClyZXR1cm4hMTtpZihudWxsIT09YylyZXR1cm4hYy5hY2NlcHRzQm9vbGVhbnM7YT1hLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KTtyZXR1cm5cImRhdGEtXCIhPT1hJiZcImFyaWEtXCIhPT1hO2RlZmF1bHQ6cmV0dXJuITF9fVxuZnVuY3Rpb24gcWEoYSxiLGMsZCl7aWYobnVsbD09PWJ8fFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYnx8cGEoYSxiLGMsZCkpcmV0dXJuITA7aWYoZClyZXR1cm4hMTtpZihudWxsIT09Yylzd2l0Y2goYy50eXBlKXtjYXNlIDM6cmV0dXJuIWI7Y2FzZSA0OnJldHVybiExPT09YjtjYXNlIDU6cmV0dXJuIGlzTmFOKGIpO2Nhc2UgNjpyZXR1cm4gaXNOYU4oYil8fDE+Yn1yZXR1cm4hMX1mdW5jdGlvbiB2KGEsYixjLGQsZSxmLGcpe3RoaXMuYWNjZXB0c0Jvb2xlYW5zPTI9PT1ifHwzPT09Ynx8ND09PWI7dGhpcy5hdHRyaWJ1dGVOYW1lPWQ7dGhpcy5hdHRyaWJ1dGVOYW1lc3BhY2U9ZTt0aGlzLm11c3RVc2VQcm9wZXJ0eT1jO3RoaXMucHJvcGVydHlOYW1lPWE7dGhpcy50eXBlPWI7dGhpcy5zYW5pdGl6ZVVSTD1mO3RoaXMucmVtb3ZlRW1wdHlTdHJpbmc9Z312YXIgej17fTtcblwiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDAsITEsYSxudWxsLCExLCExKX0pO1tbXCJhY2NlcHRDaGFyc2V0XCIsXCJhY2NlcHQtY2hhcnNldFwiXSxbXCJjbGFzc05hbWVcIixcImNsYXNzXCJdLFtcImh0bWxGb3JcIixcImZvclwiXSxbXCJodHRwRXF1aXZcIixcImh0dHAtZXF1aXZcIl1dLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YVswXTt6W2JdPW5ldyB2KGIsMSwhMSxhWzFdLG51bGwsITEsITEpfSk7W1wiY29udGVudEVkaXRhYmxlXCIsXCJkcmFnZ2FibGVcIixcInNwZWxsQ2hlY2tcIixcInZhbHVlXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDIsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG5bXCJhdXRvUmV2ZXJzZVwiLFwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFwiLFwiZm9jdXNhYmxlXCIsXCJwcmVzZXJ2ZUFscGhhXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDIsITEsYSxudWxsLCExLCExKX0pO1wiYWxsb3dGdWxsU2NyZWVuIGFzeW5jIGF1dG9Gb2N1cyBhdXRvUGxheSBjb250cm9scyBkZWZhdWx0IGRlZmVyIGRpc2FibGVkIGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIGRpc2FibGVSZW1vdGVQbGF5YmFjayBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwzLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1xuW1wiY2hlY2tlZFwiLFwibXVsdGlwbGVcIixcIm11dGVkXCIsXCJzZWxlY3RlZFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwzLCEwLGEsbnVsbCwhMSwhMSl9KTtbXCJjYXB0dXJlXCIsXCJkb3dubG9hZFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSw0LCExLGEsbnVsbCwhMSwhMSl9KTtbXCJjb2xzXCIsXCJyb3dzXCIsXCJzaXplXCIsXCJzcGFuXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDYsITEsYSxudWxsLCExLCExKX0pO1tcInJvd1NwYW5cIixcInN0YXJ0XCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDUsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7dmFyIHJhPS9bXFwtOl0oW2Etel0pL2c7ZnVuY3Rpb24gc2EoYSl7cmV0dXJuIGFbMV0udG9VcHBlckNhc2UoKX1cblwiYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHRcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsXG5zYSk7eltiXT1uZXcgdihiLDEsITEsYSxudWxsLCExLCExKX0pO1wieGxpbms6YWN0dWF0ZSB4bGluazphcmNyb2xlIHhsaW5rOnJvbGUgeGxpbms6c2hvdyB4bGluazp0aXRsZSB4bGluazp0eXBlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHJhLHNhKTt6W2JdPW5ldyB2KGIsMSwhMSxhLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCExLCExKX0pO1tcInhtbDpiYXNlXCIsXCJ4bWw6bGFuZ1wiLFwieG1sOnNwYWNlXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHJhLHNhKTt6W2JdPW5ldyB2KGIsMSwhMSxhLFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsITEsITEpfSk7W1widGFiSW5kZXhcIixcImNyb3NzT3JpZ2luXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG56LnhsaW5rSHJlZj1uZXcgdihcInhsaW5rSHJlZlwiLDEsITEsXCJ4bGluazpocmVmXCIsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsITAsITEpO1tcInNyY1wiLFwiaHJlZlwiLFwiYWN0aW9uXCIsXCJmb3JtQWN0aW9uXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITAsITApfSk7XG5mdW5jdGlvbiB0YShhLGIsYyxkKXt2YXIgZT16Lmhhc093blByb3BlcnR5KGIpP3pbYl06bnVsbDtpZihudWxsIT09ZT8wIT09ZS50eXBlOmR8fCEoMjxiLmxlbmd0aCl8fFwib1wiIT09YlswXSYmXCJPXCIhPT1iWzBdfHxcIm5cIiE9PWJbMV0mJlwiTlwiIT09YlsxXSlxYShiLGMsZSxkKSYmKGM9bnVsbCksZHx8bnVsbD09PWU/b2EoYikmJihudWxsPT09Yz9hLnJlbW92ZUF0dHJpYnV0ZShiKTphLnNldEF0dHJpYnV0ZShiLFwiXCIrYykpOmUubXVzdFVzZVByb3BlcnR5P2FbZS5wcm9wZXJ0eU5hbWVdPW51bGw9PT1jPzM9PT1lLnR5cGU/ITE6XCJcIjpjOihiPWUuYXR0cmlidXRlTmFtZSxkPWUuYXR0cmlidXRlTmFtZXNwYWNlLG51bGw9PT1jP2EucmVtb3ZlQXR0cmlidXRlKGIpOihlPWUudHlwZSxjPTM9PT1lfHw0PT09ZSYmITA9PT1jP1wiXCI6XCJcIitjLGQ/YS5zZXRBdHRyaWJ1dGVOUyhkLGIsYyk6YS5zZXRBdHRyaWJ1dGUoYixjKSkpfVxudmFyIHVhPWFhLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELHZhPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLHdhPVN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIikseWE9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLHphPVN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxBYT1TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksQmE9U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLENhPVN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLERhPVN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxFYT1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIiksRmE9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIiksR2E9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIiksSGE9U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik7U3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5kZWJ1Z190cmFjZV9tb2RlXCIpO1xudmFyIElhPVN5bWJvbC5mb3IoXCJyZWFjdC5vZmZzY3JlZW5cIik7U3ltYm9sLmZvcihcInJlYWN0LmxlZ2FjeV9oaWRkZW5cIik7U3ltYm9sLmZvcihcInJlYWN0LmNhY2hlXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC50cmFjaW5nX21hcmtlclwiKTt2YXIgSmE9U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIEthKGEpe2lmKG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGEpcmV0dXJuIG51bGw7YT1KYSYmYVtKYV18fGFbXCJAQGl0ZXJhdG9yXCJdO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2E6bnVsbH12YXIgQT1PYmplY3QuYXNzaWduLExhO2Z1bmN0aW9uIE1hKGEpe2lmKHZvaWQgMD09PUxhKXRyeXt0aHJvdyBFcnJvcigpO31jYXRjaChjKXt2YXIgYj1jLnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pO0xhPWImJmJbMV18fFwiXCJ9cmV0dXJuXCJcXG5cIitMYSthfXZhciBOYT0hMTtcbmZ1bmN0aW9uIE9hKGEsYil7aWYoIWF8fE5hKXJldHVyblwiXCI7TmE9ITA7dmFyIGM9RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9dm9pZCAwO3RyeXtpZihiKWlmKGI9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpO30sT2JqZWN0LmRlZmluZVByb3BlcnR5KGIucHJvdG90eXBlLFwicHJvcHNcIix7c2V0OmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKTt9fSksXCJvYmplY3RcIj09PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmNvbnN0cnVjdCl7dHJ5e1JlZmxlY3QuY29uc3RydWN0KGIsW10pfWNhdGNoKGwpe3ZhciBkPWx9UmVmbGVjdC5jb25zdHJ1Y3QoYSxbXSxiKX1lbHNle3RyeXtiLmNhbGwoKX1jYXRjaChsKXtkPWx9YS5jYWxsKGIucHJvdG90eXBlKX1lbHNle3RyeXt0aHJvdyBFcnJvcigpO31jYXRjaChsKXtkPWx9YSgpfX1jYXRjaChsKXtpZihsJiZkJiZcInN0cmluZ1wiPT09dHlwZW9mIGwuc3RhY2spe2Zvcih2YXIgZT1sLnN0YWNrLnNwbGl0KFwiXFxuXCIpLFxuZj1kLnN0YWNrLnNwbGl0KFwiXFxuXCIpLGc9ZS5sZW5ndGgtMSxoPWYubGVuZ3RoLTE7MTw9ZyYmMDw9aCYmZVtnXSE9PWZbaF07KWgtLTtmb3IoOzE8PWcmJjA8PWg7Zy0tLGgtLSlpZihlW2ddIT09ZltoXSl7aWYoMSE9PWd8fDEhPT1oKXtkbyBpZihnLS0saC0tLDA+aHx8ZVtnXSE9PWZbaF0pe3ZhciBrPVwiXFxuXCIrZVtnXS5yZXBsYWNlKFwiIGF0IG5ldyBcIixcIiBhdCBcIik7YS5kaXNwbGF5TmFtZSYmay5pbmNsdWRlcyhcIjxhbm9ueW1vdXM+XCIpJiYoaz1rLnJlcGxhY2UoXCI8YW5vbnltb3VzPlwiLGEuZGlzcGxheU5hbWUpKTtyZXR1cm4ga313aGlsZSgxPD1nJiYwPD1oKX1icmVha319fWZpbmFsbHl7TmE9ITEsRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9Y31yZXR1cm4oYT1hP2EuZGlzcGxheU5hbWV8fGEubmFtZTpcIlwiKT9NYShhKTpcIlwifVxuZnVuY3Rpb24gUGEoYSl7c3dpdGNoKGEudGFnKXtjYXNlIDU6cmV0dXJuIE1hKGEudHlwZSk7Y2FzZSAxNjpyZXR1cm4gTWEoXCJMYXp5XCIpO2Nhc2UgMTM6cmV0dXJuIE1hKFwiU3VzcGVuc2VcIik7Y2FzZSAxOTpyZXR1cm4gTWEoXCJTdXNwZW5zZUxpc3RcIik7Y2FzZSAwOmNhc2UgMjpjYXNlIDE1OnJldHVybiBhPU9hKGEudHlwZSwhMSksYTtjYXNlIDExOnJldHVybiBhPU9hKGEudHlwZS5yZW5kZXIsITEpLGE7Y2FzZSAxOnJldHVybiBhPU9hKGEudHlwZSwhMCksYTtkZWZhdWx0OnJldHVyblwiXCJ9fVxuZnVuY3Rpb24gUWEoYSl7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSlyZXR1cm4gYS5kaXNwbGF5TmFtZXx8YS5uYW1lfHxudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYSlyZXR1cm4gYTtzd2l0Y2goYSl7Y2FzZSB5YTpyZXR1cm5cIkZyYWdtZW50XCI7Y2FzZSB3YTpyZXR1cm5cIlBvcnRhbFwiO2Nhc2UgQWE6cmV0dXJuXCJQcm9maWxlclwiO2Nhc2UgemE6cmV0dXJuXCJTdHJpY3RNb2RlXCI7Y2FzZSBFYTpyZXR1cm5cIlN1c3BlbnNlXCI7Y2FzZSBGYTpyZXR1cm5cIlN1c3BlbnNlTGlzdFwifWlmKFwib2JqZWN0XCI9PT10eXBlb2YgYSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBDYTpyZXR1cm4oYS5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLkNvbnN1bWVyXCI7Y2FzZSBCYTpyZXR1cm4oYS5fY29udGV4dC5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLlByb3ZpZGVyXCI7Y2FzZSBEYTp2YXIgYj1hLnJlbmRlcjthPWEuZGlzcGxheU5hbWU7YXx8KGE9Yi5kaXNwbGF5TmFtZXx8XG5iLm5hbWV8fFwiXCIsYT1cIlwiIT09YT9cIkZvcndhcmRSZWYoXCIrYStcIilcIjpcIkZvcndhcmRSZWZcIik7cmV0dXJuIGE7Y2FzZSBHYTpyZXR1cm4gYj1hLmRpc3BsYXlOYW1lfHxudWxsLG51bGwhPT1iP2I6UWEoYS50eXBlKXx8XCJNZW1vXCI7Y2FzZSBIYTpiPWEuX3BheWxvYWQ7YT1hLl9pbml0O3RyeXtyZXR1cm4gUWEoYShiKSl9Y2F0Y2goYyl7fX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFJhKGEpe3ZhciBiPWEudHlwZTtzd2l0Y2goYS50YWcpe2Nhc2UgMjQ6cmV0dXJuXCJDYWNoZVwiO2Nhc2UgOTpyZXR1cm4oYi5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLkNvbnN1bWVyXCI7Y2FzZSAxMDpyZXR1cm4oYi5fY29udGV4dC5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLlByb3ZpZGVyXCI7Y2FzZSAxODpyZXR1cm5cIkRlaHlkcmF0ZWRGcmFnbWVudFwiO2Nhc2UgMTE6cmV0dXJuIGE9Yi5yZW5kZXIsYT1hLmRpc3BsYXlOYW1lfHxhLm5hbWV8fFwiXCIsYi5kaXNwbGF5TmFtZXx8KFwiXCIhPT1hP1wiRm9yd2FyZFJlZihcIithK1wiKVwiOlwiRm9yd2FyZFJlZlwiKTtjYXNlIDc6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2UgNTpyZXR1cm4gYjtjYXNlIDQ6cmV0dXJuXCJQb3J0YWxcIjtjYXNlIDM6cmV0dXJuXCJSb290XCI7Y2FzZSA2OnJldHVyblwiVGV4dFwiO2Nhc2UgMTY6cmV0dXJuIFFhKGIpO2Nhc2UgODpyZXR1cm4gYj09PXphP1wiU3RyaWN0TW9kZVwiOlwiTW9kZVwiO2Nhc2UgMjI6cmV0dXJuXCJPZmZzY3JlZW5cIjtcbmNhc2UgMTI6cmV0dXJuXCJQcm9maWxlclwiO2Nhc2UgMjE6cmV0dXJuXCJTY29wZVwiO2Nhc2UgMTM6cmV0dXJuXCJTdXNwZW5zZVwiO2Nhc2UgMTk6cmV0dXJuXCJTdXNwZW5zZUxpc3RcIjtjYXNlIDI1OnJldHVyblwiVHJhY2luZ01hcmtlclwiO2Nhc2UgMTpjYXNlIDA6Y2FzZSAxNzpjYXNlIDI6Y2FzZSAxNDpjYXNlIDE1OmlmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiKXJldHVybiBiLmRpc3BsYXlOYW1lfHxiLm5hbWV8fG51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBiKXJldHVybiBifXJldHVybiBudWxsfWZ1bmN0aW9uIFNhKGEpe3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSBcImJvb2xlYW5cIjpjYXNlIFwibnVtYmVyXCI6Y2FzZSBcInN0cmluZ1wiOmNhc2UgXCJ1bmRlZmluZWRcIjpyZXR1cm4gYTtjYXNlIFwib2JqZWN0XCI6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm5cIlwifX1cbmZ1bmN0aW9uIFRhKGEpe3ZhciBiPWEudHlwZTtyZXR1cm4oYT1hLm5vZGVOYW1lKSYmXCJpbnB1dFwiPT09YS50b0xvd2VyQ2FzZSgpJiYoXCJjaGVja2JveFwiPT09Ynx8XCJyYWRpb1wiPT09Yil9XG5mdW5jdGlvbiBVYShhKXt2YXIgYj1UYShhKT9cImNoZWNrZWRcIjpcInZhbHVlXCIsYz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEuY29uc3RydWN0b3IucHJvdG90eXBlLGIpLGQ9XCJcIithW2JdO2lmKCFhLmhhc093blByb3BlcnR5KGIpJiZcInVuZGVmaW5lZFwiIT09dHlwZW9mIGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBjLmdldCYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGMuc2V0KXt2YXIgZT1jLmdldCxmPWMuc2V0O09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oYSl7ZD1cIlwiK2E7Zi5jYWxsKHRoaXMsYSl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7ZW51bWVyYWJsZTpjLmVudW1lcmFibGV9KTtyZXR1cm57Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sc2V0VmFsdWU6ZnVuY3Rpb24oYSl7ZD1cIlwiK2F9LHN0b3BUcmFja2luZzpmdW5jdGlvbigpe2EuX3ZhbHVlVHJhY2tlcj1cbm51bGw7ZGVsZXRlIGFbYl19fX19ZnVuY3Rpb24gVmEoYSl7YS5fdmFsdWVUcmFja2VyfHwoYS5fdmFsdWVUcmFja2VyPVVhKGEpKX1mdW5jdGlvbiBXYShhKXtpZighYSlyZXR1cm4hMTt2YXIgYj1hLl92YWx1ZVRyYWNrZXI7aWYoIWIpcmV0dXJuITA7dmFyIGM9Yi5nZXRWYWx1ZSgpO3ZhciBkPVwiXCI7YSYmKGQ9VGEoYSk/YS5jaGVja2VkP1widHJ1ZVwiOlwiZmFsc2VcIjphLnZhbHVlKTthPWQ7cmV0dXJuIGEhPT1jPyhiLnNldFZhbHVlKGEpLCEwKTohMX1mdW5jdGlvbiBYYShhKXthPWF8fChcInVuZGVmaW5lZFwiIT09dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCk7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBhKXJldHVybiBudWxsO3RyeXtyZXR1cm4gYS5hY3RpdmVFbGVtZW50fHxhLmJvZHl9Y2F0Y2goYil7cmV0dXJuIGEuYm9keX19XG5mdW5jdGlvbiBZYShhLGIpe3ZhciBjPWIuY2hlY2tlZDtyZXR1cm4gQSh7fSxiLHtkZWZhdWx0Q2hlY2tlZDp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCx2YWx1ZTp2b2lkIDAsY2hlY2tlZDpudWxsIT1jP2M6YS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkfSl9ZnVuY3Rpb24gWmEoYSxiKXt2YXIgYz1udWxsPT1iLmRlZmF1bHRWYWx1ZT9cIlwiOmIuZGVmYXVsdFZhbHVlLGQ9bnVsbCE9Yi5jaGVja2VkP2IuY2hlY2tlZDpiLmRlZmF1bHRDaGVja2VkO2M9U2EobnVsbCE9Yi52YWx1ZT9iLnZhbHVlOmMpO2EuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6ZCxpbml0aWFsVmFsdWU6Yyxjb250cm9sbGVkOlwiY2hlY2tib3hcIj09PWIudHlwZXx8XCJyYWRpb1wiPT09Yi50eXBlP251bGwhPWIuY2hlY2tlZDpudWxsIT1iLnZhbHVlfX1mdW5jdGlvbiBhYihhLGIpe2I9Yi5jaGVja2VkO251bGwhPWImJnRhKGEsXCJjaGVja2VkXCIsYiwhMSl9XG5mdW5jdGlvbiBiYihhLGIpe2FiKGEsYik7dmFyIGM9U2EoYi52YWx1ZSksZD1iLnR5cGU7aWYobnVsbCE9YylpZihcIm51bWJlclwiPT09ZCl7aWYoMD09PWMmJlwiXCI9PT1hLnZhbHVlfHxhLnZhbHVlIT1jKWEudmFsdWU9XCJcIitjfWVsc2UgYS52YWx1ZSE9PVwiXCIrYyYmKGEudmFsdWU9XCJcIitjKTtlbHNlIGlmKFwic3VibWl0XCI9PT1kfHxcInJlc2V0XCI9PT1kKXthLnJlbW92ZUF0dHJpYnV0ZShcInZhbHVlXCIpO3JldHVybn1iLmhhc093blByb3BlcnR5KFwidmFsdWVcIik/Y2IoYSxiLnR5cGUsYyk6Yi5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSYmY2IoYSxiLnR5cGUsU2EoYi5kZWZhdWx0VmFsdWUpKTtudWxsPT1iLmNoZWNrZWQmJm51bGwhPWIuZGVmYXVsdENoZWNrZWQmJihhLmRlZmF1bHRDaGVja2VkPSEhYi5kZWZhdWx0Q2hlY2tlZCl9XG5mdW5jdGlvbiBkYihhLGIsYyl7aWYoYi5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpfHxiLmhhc093blByb3BlcnR5KFwiZGVmYXVsdFZhbHVlXCIpKXt2YXIgZD1iLnR5cGU7aWYoIShcInN1Ym1pdFwiIT09ZCYmXCJyZXNldFwiIT09ZHx8dm9pZCAwIT09Yi52YWx1ZSYmbnVsbCE9PWIudmFsdWUpKXJldHVybjtiPVwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTtjfHxiPT09YS52YWx1ZXx8KGEudmFsdWU9Yik7YS5kZWZhdWx0VmFsdWU9Yn1jPWEubmFtZTtcIlwiIT09YyYmKGEubmFtZT1cIlwiKTthLmRlZmF1bHRDaGVja2VkPSEhYS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkO1wiXCIhPT1jJiYoYS5uYW1lPWMpfVxuZnVuY3Rpb24gY2IoYSxiLGMpe2lmKFwibnVtYmVyXCIhPT1ifHxYYShhLm93bmVyRG9jdW1lbnQpIT09YSludWxsPT1jP2EuZGVmYXVsdFZhbHVlPVwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTphLmRlZmF1bHRWYWx1ZSE9PVwiXCIrYyYmKGEuZGVmYXVsdFZhbHVlPVwiXCIrYyl9dmFyIGViPUFycmF5LmlzQXJyYXk7XG5mdW5jdGlvbiBmYihhLGIsYyxkKXthPWEub3B0aW9ucztpZihiKXtiPXt9O2Zvcih2YXIgZT0wO2U8Yy5sZW5ndGg7ZSsrKWJbXCIkXCIrY1tlXV09ITA7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKyllPWIuaGFzT3duUHJvcGVydHkoXCIkXCIrYVtjXS52YWx1ZSksYVtjXS5zZWxlY3RlZCE9PWUmJihhW2NdLnNlbGVjdGVkPWUpLGUmJmQmJihhW2NdLmRlZmF1bHRTZWxlY3RlZD0hMCl9ZWxzZXtjPVwiXCIrU2EoYyk7Yj1udWxsO2ZvcihlPTA7ZTxhLmxlbmd0aDtlKyspe2lmKGFbZV0udmFsdWU9PT1jKXthW2VdLnNlbGVjdGVkPSEwO2QmJihhW2VdLmRlZmF1bHRTZWxlY3RlZD0hMCk7cmV0dXJufW51bGwhPT1ifHxhW2VdLmRpc2FibGVkfHwoYj1hW2VdKX1udWxsIT09YiYmKGIuc2VsZWN0ZWQ9ITApfX1cbmZ1bmN0aW9uIGdiKGEsYil7aWYobnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCl0aHJvdyBFcnJvcihwKDkxKSk7cmV0dXJuIEEoe30sYix7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsY2hpbGRyZW46XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSl9ZnVuY3Rpb24gaGIoYSxiKXt2YXIgYz1iLnZhbHVlO2lmKG51bGw9PWMpe2M9Yi5jaGlsZHJlbjtiPWIuZGVmYXVsdFZhbHVlO2lmKG51bGwhPWMpe2lmKG51bGwhPWIpdGhyb3cgRXJyb3IocCg5MikpO2lmKGViKGMpKXtpZigxPGMubGVuZ3RoKXRocm93IEVycm9yKHAoOTMpKTtjPWNbMF19Yj1jfW51bGw9PWImJihiPVwiXCIpO2M9Yn1hLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZTpTYShjKX19XG5mdW5jdGlvbiBpYihhLGIpe3ZhciBjPVNhKGIudmFsdWUpLGQ9U2EoYi5kZWZhdWx0VmFsdWUpO251bGwhPWMmJihjPVwiXCIrYyxjIT09YS52YWx1ZSYmKGEudmFsdWU9YyksbnVsbD09Yi5kZWZhdWx0VmFsdWUmJmEuZGVmYXVsdFZhbHVlIT09YyYmKGEuZGVmYXVsdFZhbHVlPWMpKTtudWxsIT1kJiYoYS5kZWZhdWx0VmFsdWU9XCJcIitkKX1mdW5jdGlvbiBqYihhKXt2YXIgYj1hLnRleHRDb250ZW50O2I9PT1hLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlJiZcIlwiIT09YiYmbnVsbCE9PWImJihhLnZhbHVlPWIpfWZ1bmN0aW9uIGtiKGEpe3N3aXRjaChhKXtjYXNlIFwic3ZnXCI6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO2Nhc2UgXCJtYXRoXCI6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCI7ZGVmYXVsdDpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIn19XG5mdW5jdGlvbiBsYihhLGIpe3JldHVybiBudWxsPT1hfHxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWE/a2IoYik6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPT09YSYmXCJmb3JlaWduT2JqZWN0XCI9PT1iP1wiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiOmF9XG52YXIgbWIsbmI9ZnVuY3Rpb24oYSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBNU0FwcCYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24/ZnVuY3Rpb24oYixjLGQsZSl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gYShiLGMsZCxlKX0pfTphfShmdW5jdGlvbihhLGIpe2lmKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiE9PWEubmFtZXNwYWNlVVJJfHxcImlubmVySFRNTFwiaW4gYSlhLmlubmVySFRNTD1iO2Vsc2V7bWI9bWJ8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7bWIuaW5uZXJIVE1MPVwiPHN2Zz5cIitiLnZhbHVlT2YoKS50b1N0cmluZygpK1wiPC9zdmc+XCI7Zm9yKGI9bWIuZmlyc3RDaGlsZDthLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTtmb3IoO2IuZmlyc3RDaGlsZDspYS5hcHBlbmRDaGlsZChiLmZpcnN0Q2hpbGQpfX0pO1xuZnVuY3Rpb24gb2IoYSxiKXtpZihiKXt2YXIgYz1hLmZpcnN0Q2hpbGQ7aWYoYyYmYz09PWEubGFzdENoaWxkJiYzPT09Yy5ub2RlVHlwZSl7Yy5ub2RlVmFsdWU9YjtyZXR1cm59fWEudGV4dENvbnRlbnQ9Yn1cbnZhciBwYj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYXNwZWN0UmF0aW86ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLFxuem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSxxYj1bXCJXZWJraXRcIixcIm1zXCIsXCJNb3pcIixcIk9cIl07T2JqZWN0LmtleXMocGIpLmZvckVhY2goZnVuY3Rpb24oYSl7cWIuZm9yRWFjaChmdW5jdGlvbihiKXtiPWIrYS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnN1YnN0cmluZygxKTtwYltiXT1wYlthXX0pfSk7ZnVuY3Rpb24gcmIoYSxiLGMpe3JldHVybiBudWxsPT1ifHxcImJvb2xlYW5cIj09PXR5cGVvZiBifHxcIlwiPT09Yj9cIlwiOmN8fFwibnVtYmVyXCIhPT10eXBlb2YgYnx8MD09PWJ8fHBiLmhhc093blByb3BlcnR5KGEpJiZwYlthXT8oXCJcIitiKS50cmltKCk6YitcInB4XCJ9XG5mdW5jdGlvbiBzYihhLGIpe2E9YS5zdHlsZTtmb3IodmFyIGMgaW4gYilpZihiLmhhc093blByb3BlcnR5KGMpKXt2YXIgZD0wPT09Yy5pbmRleE9mKFwiLS1cIiksZT1yYihjLGJbY10sZCk7XCJmbG9hdFwiPT09YyYmKGM9XCJjc3NGbG9hdFwiKTtkP2Euc2V0UHJvcGVydHkoYyxlKTphW2NdPWV9fXZhciB0Yj1BKHttZW51aXRlbTohMH0se2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0pO1xuZnVuY3Rpb24gdWIoYSxiKXtpZihiKXtpZih0YlthXSYmKG51bGwhPWIuY2hpbGRyZW58fG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKHAoMTM3LGEpKTtpZihudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXtpZihudWxsIT1iLmNoaWxkcmVuKXRocm93IEVycm9yKHAoNjApKTtpZihcIm9iamVjdFwiIT09dHlwZW9mIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUx8fCEoXCJfX2h0bWxcImluIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKHAoNjEpKTt9aWYobnVsbCE9Yi5zdHlsZSYmXCJvYmplY3RcIiE9PXR5cGVvZiBiLnN0eWxlKXRocm93IEVycm9yKHAoNjIpKTt9fVxuZnVuY3Rpb24gdmIoYSxiKXtpZigtMT09PWEuaW5kZXhPZihcIi1cIikpcmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBiLmlzO3N3aXRjaChhKXtjYXNlIFwiYW5ub3RhdGlvbi14bWxcIjpjYXNlIFwiY29sb3ItcHJvZmlsZVwiOmNhc2UgXCJmb250LWZhY2VcIjpjYXNlIFwiZm9udC1mYWNlLXNyY1wiOmNhc2UgXCJmb250LWZhY2UtdXJpXCI6Y2FzZSBcImZvbnQtZmFjZS1mb3JtYXRcIjpjYXNlIFwiZm9udC1mYWNlLW5hbWVcIjpjYXNlIFwibWlzc2luZy1nbHlwaFwiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fXZhciB3Yj1udWxsO2Z1bmN0aW9uIHhiKGEpe2E9YS50YXJnZXR8fGEuc3JjRWxlbWVudHx8d2luZG93O2EuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJihhPWEuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpO3JldHVybiAzPT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YX12YXIgeWI9bnVsbCx6Yj1udWxsLEFiPW51bGw7XG5mdW5jdGlvbiBCYihhKXtpZihhPUNiKGEpKXtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgeWIpdGhyb3cgRXJyb3IocCgyODApKTt2YXIgYj1hLnN0YXRlTm9kZTtiJiYoYj1EYihiKSx5YihhLnN0YXRlTm9kZSxhLnR5cGUsYikpfX1mdW5jdGlvbiBFYihhKXt6Yj9BYj9BYi5wdXNoKGEpOkFiPVthXTp6Yj1hfWZ1bmN0aW9uIEZiKCl7aWYoemIpe3ZhciBhPXpiLGI9QWI7QWI9emI9bnVsbDtCYihhKTtpZihiKWZvcihhPTA7YTxiLmxlbmd0aDthKyspQmIoYlthXSl9fWZ1bmN0aW9uIEdiKGEsYil7cmV0dXJuIGEoYil9ZnVuY3Rpb24gSGIoKXt9dmFyIEliPSExO2Z1bmN0aW9uIEpiKGEsYixjKXtpZihJYilyZXR1cm4gYShiLGMpO0liPSEwO3RyeXtyZXR1cm4gR2IoYSxiLGMpfWZpbmFsbHl7aWYoSWI9ITEsbnVsbCE9PXpifHxudWxsIT09QWIpSGIoKSxGYigpfX1cbmZ1bmN0aW9uIEtiKGEsYil7dmFyIGM9YS5zdGF0ZU5vZGU7aWYobnVsbD09PWMpcmV0dXJuIG51bGw7dmFyIGQ9RGIoYyk7aWYobnVsbD09PWQpcmV0dXJuIG51bGw7Yz1kW2JdO2E6c3dpdGNoKGIpe2Nhc2UgXCJvbkNsaWNrXCI6Y2FzZSBcIm9uQ2xpY2tDYXB0dXJlXCI6Y2FzZSBcIm9uRG91YmxlQ2xpY2tcIjpjYXNlIFwib25Eb3VibGVDbGlja0NhcHR1cmVcIjpjYXNlIFwib25Nb3VzZURvd25cIjpjYXNlIFwib25Nb3VzZURvd25DYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VNb3ZlXCI6Y2FzZSBcIm9uTW91c2VNb3ZlQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlVXBcIjpjYXNlIFwib25Nb3VzZVVwQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlRW50ZXJcIjooZD0hZC5kaXNhYmxlZCl8fChhPWEudHlwZSxkPSEoXCJidXR0b25cIj09PWF8fFwiaW5wdXRcIj09PWF8fFwic2VsZWN0XCI9PT1hfHxcInRleHRhcmVhXCI9PT1hKSk7YT0hZDticmVhayBhO2RlZmF1bHQ6YT0hMX1pZihhKXJldHVybiBudWxsO2lmKGMmJlwiZnVuY3Rpb25cIiE9PVxudHlwZW9mIGMpdGhyb3cgRXJyb3IocCgyMzEsYix0eXBlb2YgYykpO3JldHVybiBjfXZhciBMYj0hMTtpZihpYSl0cnl7dmFyIE1iPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShNYixcInBhc3NpdmVcIix7Z2V0OmZ1bmN0aW9uKCl7TGI9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsTWIsTWIpO3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidGVzdFwiLE1iLE1iKX1jYXRjaChhKXtMYj0hMX1mdW5jdGlvbiBOYihhLGIsYyxkLGUsZixnLGgsayl7dmFyIGw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXtiLmFwcGx5KGMsbCl9Y2F0Y2gobSl7dGhpcy5vbkVycm9yKG0pfX12YXIgT2I9ITEsUGI9bnVsbCxRYj0hMSxSYj1udWxsLFNiPXtvbkVycm9yOmZ1bmN0aW9uKGEpe09iPSEwO1BiPWF9fTtmdW5jdGlvbiBUYihhLGIsYyxkLGUsZixnLGgsayl7T2I9ITE7UGI9bnVsbDtOYi5hcHBseShTYixhcmd1bWVudHMpfVxuZnVuY3Rpb24gVWIoYSxiLGMsZCxlLGYsZyxoLGspe1RiLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihPYil7aWYoT2Ipe3ZhciBsPVBiO09iPSExO1BiPW51bGx9ZWxzZSB0aHJvdyBFcnJvcihwKDE5OCkpO1FifHwoUWI9ITAsUmI9bCl9fWZ1bmN0aW9uIFZiKGEpe3ZhciBiPWEsYz1hO2lmKGEuYWx0ZXJuYXRlKWZvcig7Yi5yZXR1cm47KWI9Yi5yZXR1cm47ZWxzZXthPWI7ZG8gYj1hLDAhPT0oYi5mbGFncyY0MDk4KSYmKGM9Yi5yZXR1cm4pLGE9Yi5yZXR1cm47d2hpbGUoYSl9cmV0dXJuIDM9PT1iLnRhZz9jOm51bGx9ZnVuY3Rpb24gV2IoYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9YS5tZW1vaXplZFN0YXRlO251bGw9PT1iJiYoYT1hLmFsdGVybmF0ZSxudWxsIT09YSYmKGI9YS5tZW1vaXplZFN0YXRlKSk7aWYobnVsbCE9PWIpcmV0dXJuIGIuZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBYYihhKXtpZihWYihhKSE9PWEpdGhyb3cgRXJyb3IocCgxODgpKTt9XG5mdW5jdGlvbiBZYihhKXt2YXIgYj1hLmFsdGVybmF0ZTtpZighYil7Yj1WYihhKTtpZihudWxsPT09Yil0aHJvdyBFcnJvcihwKDE4OCkpO3JldHVybiBiIT09YT9udWxsOmF9Zm9yKHZhciBjPWEsZD1iOzspe3ZhciBlPWMucmV0dXJuO2lmKG51bGw9PT1lKWJyZWFrO3ZhciBmPWUuYWx0ZXJuYXRlO2lmKG51bGw9PT1mKXtkPWUucmV0dXJuO2lmKG51bGwhPT1kKXtjPWQ7Y29udGludWV9YnJlYWt9aWYoZS5jaGlsZD09PWYuY2hpbGQpe2ZvcihmPWUuY2hpbGQ7Zjspe2lmKGY9PT1jKXJldHVybiBYYihlKSxhO2lmKGY9PT1kKXJldHVybiBYYihlKSxiO2Y9Zi5zaWJsaW5nfXRocm93IEVycm9yKHAoMTg4KSk7fWlmKGMucmV0dXJuIT09ZC5yZXR1cm4pYz1lLGQ9ZjtlbHNle2Zvcih2YXIgZz0hMSxoPWUuY2hpbGQ7aDspe2lmKGg9PT1jKXtnPSEwO2M9ZTtkPWY7YnJlYWt9aWYoaD09PWQpe2c9ITA7ZD1lO2M9ZjticmVha31oPWguc2libGluZ31pZighZyl7Zm9yKGg9Zi5jaGlsZDtoOyl7aWYoaD09PVxuYyl7Zz0hMDtjPWY7ZD1lO2JyZWFrfWlmKGg9PT1kKXtnPSEwO2Q9ZjtjPWU7YnJlYWt9aD1oLnNpYmxpbmd9aWYoIWcpdGhyb3cgRXJyb3IocCgxODkpKTt9fWlmKGMuYWx0ZXJuYXRlIT09ZCl0aHJvdyBFcnJvcihwKDE5MCkpO31pZigzIT09Yy50YWcpdGhyb3cgRXJyb3IocCgxODgpKTtyZXR1cm4gYy5zdGF0ZU5vZGUuY3VycmVudD09PWM/YTpifWZ1bmN0aW9uIFpiKGEpe2E9WWIoYSk7cmV0dXJuIG51bGwhPT1hPyRiKGEpOm51bGx9ZnVuY3Rpb24gJGIoYSl7aWYoNT09PWEudGFnfHw2PT09YS50YWcpcmV0dXJuIGE7Zm9yKGE9YS5jaGlsZDtudWxsIT09YTspe3ZhciBiPSRiKGEpO2lmKG51bGwhPT1iKXJldHVybiBiO2E9YS5zaWJsaW5nfXJldHVybiBudWxsfVxudmFyIGFjPWNhLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2ssYmM9Y2EudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2ssY2M9Y2EudW5zdGFibGVfc2hvdWxkWWllbGQsZGM9Y2EudW5zdGFibGVfcmVxdWVzdFBhaW50LEI9Y2EudW5zdGFibGVfbm93LGVjPWNhLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsLGZjPWNhLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5LGdjPWNhLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5LGhjPWNhLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LGljPWNhLnVuc3RhYmxlX0xvd1ByaW9yaXR5LGpjPWNhLnVuc3RhYmxlX0lkbGVQcmlvcml0eSxrYz1udWxsLGxjPW51bGw7ZnVuY3Rpb24gbWMoYSl7aWYobGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBsYy5vbkNvbW1pdEZpYmVyUm9vdCl0cnl7bGMub25Db21taXRGaWJlclJvb3Qoa2MsYSx2b2lkIDAsMTI4PT09KGEuY3VycmVudC5mbGFncyYxMjgpKX1jYXRjaChiKXt9fVxudmFyIG9jPU1hdGguY2x6MzI/TWF0aC5jbHozMjpuYyxwYz1NYXRoLmxvZyxxYz1NYXRoLkxOMjtmdW5jdGlvbiBuYyhhKXthPj4+PTA7cmV0dXJuIDA9PT1hPzMyOjMxLShwYyhhKS9xY3wwKXwwfXZhciByYz02NCxzYz00MTk0MzA0O1xuZnVuY3Rpb24gdGMoYSl7c3dpdGNoKGEmLWEpe2Nhc2UgMTpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDI7Y2FzZSA0OnJldHVybiA0O2Nhc2UgODpyZXR1cm4gODtjYXNlIDE2OnJldHVybiAxNjtjYXNlIDMyOnJldHVybiAzMjtjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiBhJjQxOTQyNDA7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpyZXR1cm4gYSYxMzAwMjM0MjQ7Y2FzZSAxMzQyMTc3Mjg6cmV0dXJuIDEzNDIxNzcyODtjYXNlIDI2ODQzNTQ1NjpyZXR1cm4gMjY4NDM1NDU2O2Nhc2UgNTM2ODcwOTEyOnJldHVybiA1MzY4NzA5MTI7Y2FzZSAxMDczNzQxODI0OnJldHVybiAxMDczNzQxODI0O1xuZGVmYXVsdDpyZXR1cm4gYX19ZnVuY3Rpb24gdWMoYSxiKXt2YXIgYz1hLnBlbmRpbmdMYW5lcztpZigwPT09YylyZXR1cm4gMDt2YXIgZD0wLGU9YS5zdXNwZW5kZWRMYW5lcyxmPWEucGluZ2VkTGFuZXMsZz1jJjI2ODQzNTQ1NTtpZigwIT09Zyl7dmFyIGg9ZyZ+ZTswIT09aD9kPXRjKGgpOihmJj1nLDAhPT1mJiYoZD10YyhmKSkpfWVsc2UgZz1jJn5lLDAhPT1nP2Q9dGMoZyk6MCE9PWYmJihkPXRjKGYpKTtpZigwPT09ZClyZXR1cm4gMDtpZigwIT09YiYmYiE9PWQmJjA9PT0oYiZlKSYmKGU9ZCYtZCxmPWImLWIsZT49Znx8MTY9PT1lJiYwIT09KGYmNDE5NDI0MCkpKXJldHVybiBiOzAhPT0oZCY0KSYmKGR8PWMmMTYpO2I9YS5lbnRhbmdsZWRMYW5lcztpZigwIT09Yilmb3IoYT1hLmVudGFuZ2xlbWVudHMsYiY9ZDswPGI7KWM9MzEtb2MoYiksZT0xPDxjLGR8PWFbY10sYiY9fmU7cmV0dXJuIGR9XG5mdW5jdGlvbiB2YyhhLGIpe3N3aXRjaChhKXtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpyZXR1cm4gYisyNTA7Y2FzZSA4OmNhc2UgMTY6Y2FzZSAzMjpjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiBiKzVFMztjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OnJldHVybi0xO2Nhc2UgMTM0MjE3NzI4OmNhc2UgMjY4NDM1NDU2OmNhc2UgNTM2ODcwOTEyOmNhc2UgMTA3Mzc0MTgyNDpyZXR1cm4tMTtkZWZhdWx0OnJldHVybi0xfX1cbmZ1bmN0aW9uIHdjKGEsYil7Zm9yKHZhciBjPWEuc3VzcGVuZGVkTGFuZXMsZD1hLnBpbmdlZExhbmVzLGU9YS5leHBpcmF0aW9uVGltZXMsZj1hLnBlbmRpbmdMYW5lczswPGY7KXt2YXIgZz0zMS1vYyhmKSxoPTE8PGcsaz1lW2ddO2lmKC0xPT09ayl7aWYoMD09PShoJmMpfHwwIT09KGgmZCkpZVtnXT12YyhoLGIpfWVsc2Ugazw9YiYmKGEuZXhwaXJlZExhbmVzfD1oKTtmJj1+aH19ZnVuY3Rpb24geGMoYSl7YT1hLnBlbmRpbmdMYW5lcyYtMTA3Mzc0MTgyNTtyZXR1cm4gMCE9PWE/YTphJjEwNzM3NDE4MjQ/MTA3Mzc0MTgyNDowfWZ1bmN0aW9uIHljKCl7dmFyIGE9cmM7cmM8PD0xOzA9PT0ocmMmNDE5NDI0MCkmJihyYz02NCk7cmV0dXJuIGF9ZnVuY3Rpb24gemMoYSl7Zm9yKHZhciBiPVtdLGM9MDszMT5jO2MrKyliLnB1c2goYSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBBYyhhLGIsYyl7YS5wZW5kaW5nTGFuZXN8PWI7NTM2ODcwOTEyIT09YiYmKGEuc3VzcGVuZGVkTGFuZXM9MCxhLnBpbmdlZExhbmVzPTApO2E9YS5ldmVudFRpbWVzO2I9MzEtb2MoYik7YVtiXT1jfWZ1bmN0aW9uIEJjKGEsYil7dmFyIGM9YS5wZW5kaW5nTGFuZXMmfmI7YS5wZW5kaW5nTGFuZXM9YjthLnN1c3BlbmRlZExhbmVzPTA7YS5waW5nZWRMYW5lcz0wO2EuZXhwaXJlZExhbmVzJj1iO2EubXV0YWJsZVJlYWRMYW5lcyY9YjthLmVudGFuZ2xlZExhbmVzJj1iO2I9YS5lbnRhbmdsZW1lbnRzO3ZhciBkPWEuZXZlbnRUaW1lcztmb3IoYT1hLmV4cGlyYXRpb25UaW1lczswPGM7KXt2YXIgZT0zMS1vYyhjKSxmPTE8PGU7YltlXT0wO2RbZV09LTE7YVtlXT0tMTtjJj1+Zn19XG5mdW5jdGlvbiBDYyhhLGIpe3ZhciBjPWEuZW50YW5nbGVkTGFuZXN8PWI7Zm9yKGE9YS5lbnRhbmdsZW1lbnRzO2M7KXt2YXIgZD0zMS1vYyhjKSxlPTE8PGQ7ZSZifGFbZF0mYiYmKGFbZF18PWIpO2MmPX5lfX12YXIgQz0wO2Z1bmN0aW9uIERjKGEpe2EmPS1hO3JldHVybiAxPGE/NDxhPzAhPT0oYSYyNjg0MzU0NTUpPzE2OjUzNjg3MDkxMjo0OjF9dmFyIEVjLEZjLEdjLEhjLEljLEpjPSExLEtjPVtdLExjPW51bGwsTWM9bnVsbCxOYz1udWxsLE9jPW5ldyBNYXAsUGM9bmV3IE1hcCxRYz1bXSxSYz1cIm1vdXNlZG93biBtb3VzZXVwIHRvdWNoY2FuY2VsIHRvdWNoZW5kIHRvdWNoc3RhcnQgYXV4Y2xpY2sgZGJsY2xpY2sgcG9pbnRlcmNhbmNlbCBwb2ludGVyZG93biBwb2ludGVydXAgZHJhZ2VuZCBkcmFnc3RhcnQgZHJvcCBjb21wb3NpdGlvbmVuZCBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgaW5wdXQgdGV4dElucHV0IGNvcHkgY3V0IHBhc3RlIGNsaWNrIGNoYW5nZSBjb250ZXh0bWVudSByZXNldCBzdWJtaXRcIi5zcGxpdChcIiBcIik7XG5mdW5jdGlvbiBTYyhhLGIpe3N3aXRjaChhKXtjYXNlIFwiZm9jdXNpblwiOmNhc2UgXCJmb2N1c291dFwiOkxjPW51bGw7YnJlYWs7Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnbGVhdmVcIjpNYz1udWxsO2JyZWFrO2Nhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwibW91c2VvdXRcIjpOYz1udWxsO2JyZWFrO2Nhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJwb2ludGVyb3V0XCI6T2MuZGVsZXRlKGIucG9pbnRlcklkKTticmVhaztjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCI6UGMuZGVsZXRlKGIucG9pbnRlcklkKX19XG5mdW5jdGlvbiBUYyhhLGIsYyxkLGUsZil7aWYobnVsbD09PWF8fGEubmF0aXZlRXZlbnQhPT1mKXJldHVybiBhPXtibG9ja2VkT246Yixkb21FdmVudE5hbWU6YyxldmVudFN5c3RlbUZsYWdzOmQsbmF0aXZlRXZlbnQ6Zix0YXJnZXRDb250YWluZXJzOltlXX0sbnVsbCE9PWImJihiPUNiKGIpLG51bGwhPT1iJiZGYyhiKSksYTthLmV2ZW50U3lzdGVtRmxhZ3N8PWQ7Yj1hLnRhcmdldENvbnRhaW5lcnM7bnVsbCE9PWUmJi0xPT09Yi5pbmRleE9mKGUpJiZiLnB1c2goZSk7cmV0dXJuIGF9XG5mdW5jdGlvbiBVYyhhLGIsYyxkLGUpe3N3aXRjaChiKXtjYXNlIFwiZm9jdXNpblwiOnJldHVybiBMYz1UYyhMYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJkcmFnZW50ZXJcIjpyZXR1cm4gTWM9VGMoTWMsYSxiLGMsZCxlKSwhMDtjYXNlIFwibW91c2VvdmVyXCI6cmV0dXJuIE5jPVRjKE5jLGEsYixjLGQsZSksITA7Y2FzZSBcInBvaW50ZXJvdmVyXCI6dmFyIGY9ZS5wb2ludGVySWQ7T2Muc2V0KGYsVGMoT2MuZ2V0KGYpfHxudWxsLGEsYixjLGQsZSkpO3JldHVybiEwO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOnJldHVybiBmPWUucG9pbnRlcklkLFBjLnNldChmLFRjKFBjLmdldChmKXx8bnVsbCxhLGIsYyxkLGUpKSwhMH1yZXR1cm4hMX1cbmZ1bmN0aW9uIFZjKGEpe3ZhciBiPVdjKGEudGFyZ2V0KTtpZihudWxsIT09Yil7dmFyIGM9VmIoYik7aWYobnVsbCE9PWMpaWYoYj1jLnRhZywxMz09PWIpe2lmKGI9V2IoYyksbnVsbCE9PWIpe2EuYmxvY2tlZE9uPWI7SWMoYS5wcmlvcml0eSxmdW5jdGlvbigpe0djKGMpfSk7cmV0dXJufX1lbHNlIGlmKDM9PT1iJiZjLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXthLmJsb2NrZWRPbj0zPT09Yy50YWc/Yy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO3JldHVybn19YS5ibG9ja2VkT249bnVsbH1cbmZ1bmN0aW9uIFhjKGEpe2lmKG51bGwhPT1hLmJsb2NrZWRPbilyZXR1cm4hMTtmb3IodmFyIGI9YS50YXJnZXRDb250YWluZXJzOzA8Yi5sZW5ndGg7KXt2YXIgYz1ZYyhhLmRvbUV2ZW50TmFtZSxhLmV2ZW50U3lzdGVtRmxhZ3MsYlswXSxhLm5hdGl2ZUV2ZW50KTtpZihudWxsPT09Yyl7Yz1hLm5hdGl2ZUV2ZW50O3ZhciBkPW5ldyBjLmNvbnN0cnVjdG9yKGMudHlwZSxjKTt3Yj1kO2MudGFyZ2V0LmRpc3BhdGNoRXZlbnQoZCk7d2I9bnVsbH1lbHNlIHJldHVybiBiPUNiKGMpLG51bGwhPT1iJiZGYyhiKSxhLmJsb2NrZWRPbj1jLCExO2Iuc2hpZnQoKX1yZXR1cm4hMH1mdW5jdGlvbiBaYyhhLGIsYyl7WGMoYSkmJmMuZGVsZXRlKGIpfWZ1bmN0aW9uICRjKCl7SmM9ITE7bnVsbCE9PUxjJiZYYyhMYykmJihMYz1udWxsKTtudWxsIT09TWMmJlhjKE1jKSYmKE1jPW51bGwpO251bGwhPT1OYyYmWGMoTmMpJiYoTmM9bnVsbCk7T2MuZm9yRWFjaChaYyk7UGMuZm9yRWFjaChaYyl9XG5mdW5jdGlvbiBhZChhLGIpe2EuYmxvY2tlZE9uPT09YiYmKGEuYmxvY2tlZE9uPW51bGwsSmN8fChKYz0hMCxjYS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrKGNhLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LCRjKSkpfVxuZnVuY3Rpb24gYmQoYSl7ZnVuY3Rpb24gYihiKXtyZXR1cm4gYWQoYixhKX1pZigwPEtjLmxlbmd0aCl7YWQoS2NbMF0sYSk7Zm9yKHZhciBjPTE7YzxLYy5sZW5ndGg7YysrKXt2YXIgZD1LY1tjXTtkLmJsb2NrZWRPbj09PWEmJihkLmJsb2NrZWRPbj1udWxsKX19bnVsbCE9PUxjJiZhZChMYyxhKTtudWxsIT09TWMmJmFkKE1jLGEpO251bGwhPT1OYyYmYWQoTmMsYSk7T2MuZm9yRWFjaChiKTtQYy5mb3JFYWNoKGIpO2ZvcihjPTA7YzxRYy5sZW5ndGg7YysrKWQ9UWNbY10sZC5ibG9ja2VkT249PT1hJiYoZC5ibG9ja2VkT249bnVsbCk7Zm9yKDswPFFjLmxlbmd0aCYmKGM9UWNbMF0sbnVsbD09PWMuYmxvY2tlZE9uKTspVmMoYyksbnVsbD09PWMuYmxvY2tlZE9uJiZRYy5zaGlmdCgpfXZhciBjZD11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxkZD0hMDtcbmZ1bmN0aW9uIGVkKGEsYixjLGQpe3ZhciBlPUMsZj1jZC50cmFuc2l0aW9uO2NkLnRyYW5zaXRpb249bnVsbDt0cnl7Qz0xLGZkKGEsYixjLGQpfWZpbmFsbHl7Qz1lLGNkLnRyYW5zaXRpb249Zn19ZnVuY3Rpb24gZ2QoYSxiLGMsZCl7dmFyIGU9QyxmPWNkLnRyYW5zaXRpb247Y2QudHJhbnNpdGlvbj1udWxsO3RyeXtDPTQsZmQoYSxiLGMsZCl9ZmluYWxseXtDPWUsY2QudHJhbnNpdGlvbj1mfX1cbmZ1bmN0aW9uIGZkKGEsYixjLGQpe2lmKGRkKXt2YXIgZT1ZYyhhLGIsYyxkKTtpZihudWxsPT09ZSloZChhLGIsZCxpZCxjKSxTYyhhLGQpO2Vsc2UgaWYoVWMoZSxhLGIsYyxkKSlkLnN0b3BQcm9wYWdhdGlvbigpO2Vsc2UgaWYoU2MoYSxkKSxiJjQmJi0xPFJjLmluZGV4T2YoYSkpe2Zvcig7bnVsbCE9PWU7KXt2YXIgZj1DYihlKTtudWxsIT09ZiYmRWMoZik7Zj1ZYyhhLGIsYyxkKTtudWxsPT09ZiYmaGQoYSxiLGQsaWQsYyk7aWYoZj09PWUpYnJlYWs7ZT1mfW51bGwhPT1lJiZkLnN0b3BQcm9wYWdhdGlvbigpfWVsc2UgaGQoYSxiLGQsbnVsbCxjKX19dmFyIGlkPW51bGw7XG5mdW5jdGlvbiBZYyhhLGIsYyxkKXtpZD1udWxsO2E9eGIoZCk7YT1XYyhhKTtpZihudWxsIT09YSlpZihiPVZiKGEpLG51bGw9PT1iKWE9bnVsbDtlbHNlIGlmKGM9Yi50YWcsMTM9PT1jKXthPVdiKGIpO2lmKG51bGwhPT1hKXJldHVybiBhO2E9bnVsbH1lbHNlIGlmKDM9PT1jKXtpZihiLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXJldHVybiAzPT09Yi50YWc/Yi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO2E9bnVsbH1lbHNlIGIhPT1hJiYoYT1udWxsKTtpZD1hO3JldHVybiBudWxsfVxuZnVuY3Rpb24gamQoYSl7c3dpdGNoKGEpe2Nhc2UgXCJjYW5jZWxcIjpjYXNlIFwiY2xpY2tcIjpjYXNlIFwiY2xvc2VcIjpjYXNlIFwiY29udGV4dG1lbnVcIjpjYXNlIFwiY29weVwiOmNhc2UgXCJjdXRcIjpjYXNlIFwiYXV4Y2xpY2tcIjpjYXNlIFwiZGJsY2xpY2tcIjpjYXNlIFwiZHJhZ2VuZFwiOmNhc2UgXCJkcmFnc3RhcnRcIjpjYXNlIFwiZHJvcFwiOmNhc2UgXCJmb2N1c2luXCI6Y2FzZSBcImZvY3Vzb3V0XCI6Y2FzZSBcImlucHV0XCI6Y2FzZSBcImludmFsaWRcIjpjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXlwcmVzc1wiOmNhc2UgXCJrZXl1cFwiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJwYXN0ZVwiOmNhc2UgXCJwYXVzZVwiOmNhc2UgXCJwbGF5XCI6Y2FzZSBcInBvaW50ZXJjYW5jZWxcIjpjYXNlIFwicG9pbnRlcmRvd25cIjpjYXNlIFwicG9pbnRlcnVwXCI6Y2FzZSBcInJhdGVjaGFuZ2VcIjpjYXNlIFwicmVzZXRcIjpjYXNlIFwicmVzaXplXCI6Y2FzZSBcInNlZWtlZFwiOmNhc2UgXCJzdWJtaXRcIjpjYXNlIFwidG91Y2hjYW5jZWxcIjpjYXNlIFwidG91Y2hlbmRcIjpjYXNlIFwidG91Y2hzdGFydFwiOmNhc2UgXCJ2b2x1bWVjaGFuZ2VcIjpjYXNlIFwiY2hhbmdlXCI6Y2FzZSBcInNlbGVjdGlvbmNoYW5nZVwiOmNhc2UgXCJ0ZXh0SW5wdXRcIjpjYXNlIFwiY29tcG9zaXRpb25zdGFydFwiOmNhc2UgXCJjb21wb3NpdGlvbmVuZFwiOmNhc2UgXCJjb21wb3NpdGlvbnVwZGF0ZVwiOmNhc2UgXCJiZWZvcmVibHVyXCI6Y2FzZSBcImFmdGVyYmx1clwiOmNhc2UgXCJiZWZvcmVpbnB1dFwiOmNhc2UgXCJibHVyXCI6Y2FzZSBcImZ1bGxzY3JlZW5jaGFuZ2VcIjpjYXNlIFwiZm9jdXNcIjpjYXNlIFwiaGFzaGNoYW5nZVwiOmNhc2UgXCJwb3BzdGF0ZVwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwic2VsZWN0c3RhcnRcIjpyZXR1cm4gMTtjYXNlIFwiZHJhZ1wiOmNhc2UgXCJkcmFnZW50ZXJcIjpjYXNlIFwiZHJhZ2V4aXRcIjpjYXNlIFwiZHJhZ2xlYXZlXCI6Y2FzZSBcImRyYWdvdmVyXCI6Y2FzZSBcIm1vdXNlbW92ZVwiOmNhc2UgXCJtb3VzZW91dFwiOmNhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwicG9pbnRlcm1vdmVcIjpjYXNlIFwicG9pbnRlcm91dFwiOmNhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJzY3JvbGxcIjpjYXNlIFwidG9nZ2xlXCI6Y2FzZSBcInRvdWNobW92ZVwiOmNhc2UgXCJ3aGVlbFwiOmNhc2UgXCJtb3VzZWVudGVyXCI6Y2FzZSBcIm1vdXNlbGVhdmVcIjpjYXNlIFwicG9pbnRlcmVudGVyXCI6Y2FzZSBcInBvaW50ZXJsZWF2ZVwiOnJldHVybiA0O1xuY2FzZSBcIm1lc3NhZ2VcIjpzd2l0Y2goZWMoKSl7Y2FzZSBmYzpyZXR1cm4gMTtjYXNlIGdjOnJldHVybiA0O2Nhc2UgaGM6Y2FzZSBpYzpyZXR1cm4gMTY7Y2FzZSBqYzpyZXR1cm4gNTM2ODcwOTEyO2RlZmF1bHQ6cmV0dXJuIDE2fWRlZmF1bHQ6cmV0dXJuIDE2fX12YXIga2Q9bnVsbCxsZD1udWxsLG1kPW51bGw7ZnVuY3Rpb24gbmQoKXtpZihtZClyZXR1cm4gbWQ7dmFyIGEsYj1sZCxjPWIubGVuZ3RoLGQsZT1cInZhbHVlXCJpbiBrZD9rZC52YWx1ZTprZC50ZXh0Q29udGVudCxmPWUubGVuZ3RoO2ZvcihhPTA7YTxjJiZiW2FdPT09ZVthXTthKyspO3ZhciBnPWMtYTtmb3IoZD0xO2Q8PWcmJmJbYy1kXT09PWVbZi1kXTtkKyspO3JldHVybiBtZD1lLnNsaWNlKGEsMTxkPzEtZDp2b2lkIDApfVxuZnVuY3Rpb24gb2QoYSl7dmFyIGI9YS5rZXlDb2RlO1wiY2hhckNvZGVcImluIGE/KGE9YS5jaGFyQ29kZSwwPT09YSYmMTM9PT1iJiYoYT0xMykpOmE9YjsxMD09PWEmJihhPTEzKTtyZXR1cm4gMzI8PWF8fDEzPT09YT9hOjB9ZnVuY3Rpb24gcGQoKXtyZXR1cm4hMH1mdW5jdGlvbiBxZCgpe3JldHVybiExfVxuZnVuY3Rpb24gcmQoYSl7ZnVuY3Rpb24gYihiLGQsZSxmLGcpe3RoaXMuX3JlYWN0TmFtZT1iO3RoaXMuX3RhcmdldEluc3Q9ZTt0aGlzLnR5cGU9ZDt0aGlzLm5hdGl2ZUV2ZW50PWY7dGhpcy50YXJnZXQ9Zzt0aGlzLmN1cnJlbnRUYXJnZXQ9bnVsbDtmb3IodmFyIGMgaW4gYSlhLmhhc093blByb3BlcnR5KGMpJiYoYj1hW2NdLHRoaXNbY109Yj9iKGYpOmZbY10pO3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1mLmRlZmF1bHRQcmV2ZW50ZWQ/Zi5kZWZhdWx0UHJldmVudGVkOiExPT09Zi5yZXR1cm5WYWx1ZSk/cGQ6cWQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1xZDtyZXR1cm4gdGhpc31BKGIucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgYT10aGlzLm5hdGl2ZUV2ZW50O2EmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTpcInVua25vd25cIiE9PXR5cGVvZiBhLnJldHVyblZhbHVlJiZcbihhLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1wZCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEuc3RvcFByb3BhZ2F0aW9uP2Euc3RvcFByb3BhZ2F0aW9uKCk6XCJ1bmtub3duXCIhPT10eXBlb2YgYS5jYW5jZWxCdWJibGUmJihhLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1wZCl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt9LGlzUGVyc2lzdGVudDpwZH0pO3JldHVybiBifVxudmFyIHNkPXtldmVudFBoYXNlOjAsYnViYmxlczowLGNhbmNlbGFibGU6MCx0aW1lU3RhbXA6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOjAsaXNUcnVzdGVkOjB9LHRkPXJkKHNkKSx1ZD1BKHt9LHNkLHt2aWV3OjAsZGV0YWlsOjB9KSx2ZD1yZCh1ZCksd2QseGQseWQsQWQ9QSh7fSx1ZCx7c2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjAsY2xpZW50WTowLHBhZ2VYOjAscGFnZVk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTp6ZCxidXR0b246MCxidXR0b25zOjAscmVsYXRlZFRhcmdldDpmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YS5yZWxhdGVkVGFyZ2V0P2EuZnJvbUVsZW1lbnQ9PT1hLnNyY0VsZW1lbnQ/YS50b0VsZW1lbnQ6YS5mcm9tRWxlbWVudDphLnJlbGF0ZWRUYXJnZXR9LG1vdmVtZW50WDpmdW5jdGlvbihhKXtpZihcIm1vdmVtZW50WFwiaW5cbmEpcmV0dXJuIGEubW92ZW1lbnRYO2EhPT15ZCYmKHlkJiZcIm1vdXNlbW92ZVwiPT09YS50eXBlPyh3ZD1hLnNjcmVlblgteWQuc2NyZWVuWCx4ZD1hLnNjcmVlblkteWQuc2NyZWVuWSk6eGQ9d2Q9MCx5ZD1hKTtyZXR1cm4gd2R9LG1vdmVtZW50WTpmdW5jdGlvbihhKXtyZXR1cm5cIm1vdmVtZW50WVwiaW4gYT9hLm1vdmVtZW50WTp4ZH19KSxCZD1yZChBZCksQ2Q9QSh7fSxBZCx7ZGF0YVRyYW5zZmVyOjB9KSxEZD1yZChDZCksRWQ9QSh7fSx1ZCx7cmVsYXRlZFRhcmdldDowfSksRmQ9cmQoRWQpLEdkPUEoe30sc2Qse2FuaW1hdGlvbk5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pLEhkPXJkKEdkKSxJZD1BKHt9LHNkLHtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGEpe3JldHVyblwiY2xpcGJvYXJkRGF0YVwiaW4gYT9hLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fSksSmQ9cmQoSWQpLEtkPUEoe30sc2Qse2RhdGE6MH0pLExkPXJkKEtkKSxNZD17RXNjOlwiRXNjYXBlXCIsXG5TcGFjZWJhcjpcIiBcIixMZWZ0OlwiQXJyb3dMZWZ0XCIsVXA6XCJBcnJvd1VwXCIsUmlnaHQ6XCJBcnJvd1JpZ2h0XCIsRG93bjpcIkFycm93RG93blwiLERlbDpcIkRlbGV0ZVwiLFdpbjpcIk9TXCIsTWVudTpcIkNvbnRleHRNZW51XCIsQXBwczpcIkNvbnRleHRNZW51XCIsU2Nyb2xsOlwiU2Nyb2xsTG9ja1wiLE1velByaW50YWJsZUtleTpcIlVuaWRlbnRpZmllZFwifSxOZD17ODpcIkJhY2tzcGFjZVwiLDk6XCJUYWJcIiwxMjpcIkNsZWFyXCIsMTM6XCJFbnRlclwiLDE2OlwiU2hpZnRcIiwxNzpcIkNvbnRyb2xcIiwxODpcIkFsdFwiLDE5OlwiUGF1c2VcIiwyMDpcIkNhcHNMb2NrXCIsMjc6XCJFc2NhcGVcIiwzMjpcIiBcIiwzMzpcIlBhZ2VVcFwiLDM0OlwiUGFnZURvd25cIiwzNTpcIkVuZFwiLDM2OlwiSG9tZVwiLDM3OlwiQXJyb3dMZWZ0XCIsMzg6XCJBcnJvd1VwXCIsMzk6XCJBcnJvd1JpZ2h0XCIsNDA6XCJBcnJvd0Rvd25cIiw0NTpcIkluc2VydFwiLDQ2OlwiRGVsZXRlXCIsMTEyOlwiRjFcIiwxMTM6XCJGMlwiLDExNDpcIkYzXCIsMTE1OlwiRjRcIiwxMTY6XCJGNVwiLDExNzpcIkY2XCIsMTE4OlwiRjdcIixcbjExOTpcIkY4XCIsMTIwOlwiRjlcIiwxMjE6XCJGMTBcIiwxMjI6XCJGMTFcIiwxMjM6XCJGMTJcIiwxNDQ6XCJOdW1Mb2NrXCIsMTQ1OlwiU2Nyb2xsTG9ja1wiLDIyNDpcIk1ldGFcIn0sT2Q9e0FsdDpcImFsdEtleVwiLENvbnRyb2w6XCJjdHJsS2V5XCIsTWV0YTpcIm1ldGFLZXlcIixTaGlmdDpcInNoaWZ0S2V5XCJ9O2Z1bmN0aW9uIFBkKGEpe3ZhciBiPXRoaXMubmF0aXZlRXZlbnQ7cmV0dXJuIGIuZ2V0TW9kaWZpZXJTdGF0ZT9iLmdldE1vZGlmaWVyU3RhdGUoYSk6KGE9T2RbYV0pPyEhYlthXTohMX1mdW5jdGlvbiB6ZCgpe3JldHVybiBQZH1cbnZhciBRZD1BKHt9LHVkLHtrZXk6ZnVuY3Rpb24oYSl7aWYoYS5rZXkpe3ZhciBiPU1kW2Eua2V5XXx8YS5rZXk7aWYoXCJVbmlkZW50aWZpZWRcIiE9PWIpcmV0dXJuIGJ9cmV0dXJuXCJrZXlwcmVzc1wiPT09YS50eXBlPyhhPW9kKGEpLDEzPT09YT9cIkVudGVyXCI6U3RyaW5nLmZyb21DaGFyQ29kZShhKSk6XCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9OZFthLmtleUNvZGVdfHxcIlVuaWRlbnRpZmllZFwiOlwiXCJ9LGNvZGU6MCxsb2NhdGlvbjowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxyZXBlYXQ6MCxsb2NhbGU6MCxnZXRNb2RpZmllclN0YXRlOnpkLGNoYXJDb2RlOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5cHJlc3NcIj09PWEudHlwZT9vZChhKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/YS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5cHJlc3NcIj09PVxuYS50eXBlP29kKGEpOlwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/YS5rZXlDb2RlOjB9fSksUmQ9cmQoUWQpLFNkPUEoe30sQWQse3BvaW50ZXJJZDowLHdpZHRoOjAsaGVpZ2h0OjAscHJlc3N1cmU6MCx0YW5nZW50aWFsUHJlc3N1cmU6MCx0aWx0WDowLHRpbHRZOjAsdHdpc3Q6MCxwb2ludGVyVHlwZTowLGlzUHJpbWFyeTowfSksVGQ9cmQoU2QpLFVkPUEoe30sdWQse3RvdWNoZXM6MCx0YXJnZXRUb3VjaGVzOjAsY2hhbmdlZFRvdWNoZXM6MCxhbHRLZXk6MCxtZXRhS2V5OjAsY3RybEtleTowLHNoaWZ0S2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTp6ZH0pLFZkPXJkKFVkKSxXZD1BKHt9LHNkLHtwcm9wZXJ0eU5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pLFhkPXJkKFdkKSxZZD1BKHt9LEFkLHtkZWx0YVg6ZnVuY3Rpb24oYSl7cmV0dXJuXCJkZWx0YVhcImluIGE/YS5kZWx0YVg6XCJ3aGVlbERlbHRhWFwiaW4gYT8tYS53aGVlbERlbHRhWDowfSxcbmRlbHRhWTpmdW5jdGlvbihhKXtyZXR1cm5cImRlbHRhWVwiaW4gYT9hLmRlbHRhWTpcIndoZWVsRGVsdGFZXCJpbiBhPy1hLndoZWVsRGVsdGFZOlwid2hlZWxEZWx0YVwiaW4gYT8tYS53aGVlbERlbHRhOjB9LGRlbHRhWjowLGRlbHRhTW9kZTowfSksWmQ9cmQoWWQpLCRkPVs5LDEzLDI3LDMyXSxhZT1pYSYmXCJDb21wb3NpdGlvbkV2ZW50XCJpbiB3aW5kb3csYmU9bnVsbDtpYSYmXCJkb2N1bWVudE1vZGVcImluIGRvY3VtZW50JiYoYmU9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTt2YXIgY2U9aWEmJlwiVGV4dEV2ZW50XCJpbiB3aW5kb3cmJiFiZSxkZT1pYSYmKCFhZXx8YmUmJjg8YmUmJjExPj1iZSksZWU9U3RyaW5nLmZyb21DaGFyQ29kZSgzMiksZmU9ITE7XG5mdW5jdGlvbiBnZShhLGIpe3N3aXRjaChhKXtjYXNlIFwia2V5dXBcIjpyZXR1cm4tMSE9PSRkLmluZGV4T2YoYi5rZXlDb2RlKTtjYXNlIFwia2V5ZG93blwiOnJldHVybiAyMjkhPT1iLmtleUNvZGU7Y2FzZSBcImtleXByZXNzXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJmb2N1c291dFwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIGhlKGEpe2E9YS5kZXRhaWw7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZcImRhdGFcImluIGE/YS5kYXRhOm51bGx9dmFyIGllPSExO2Z1bmN0aW9uIGplKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiBoZShiKTtjYXNlIFwia2V5cHJlc3NcIjppZigzMiE9PWIud2hpY2gpcmV0dXJuIG51bGw7ZmU9ITA7cmV0dXJuIGVlO2Nhc2UgXCJ0ZXh0SW5wdXRcIjpyZXR1cm4gYT1iLmRhdGEsYT09PWVlJiZmZT9udWxsOmE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19XG5mdW5jdGlvbiBrZShhLGIpe2lmKGllKXJldHVyblwiY29tcG9zaXRpb25lbmRcIj09PWF8fCFhZSYmZ2UoYSxiKT8oYT1uZCgpLG1kPWxkPWtkPW51bGwsaWU9ITEsYSk6bnVsbDtzd2l0Y2goYSl7Y2FzZSBcInBhc3RlXCI6cmV0dXJuIG51bGw7Y2FzZSBcImtleXByZXNzXCI6aWYoIShiLmN0cmxLZXl8fGIuYWx0S2V5fHxiLm1ldGFLZXkpfHxiLmN0cmxLZXkmJmIuYWx0S2V5KXtpZihiLmNoYXImJjE8Yi5jaGFyLmxlbmd0aClyZXR1cm4gYi5jaGFyO2lmKGIud2hpY2gpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYi53aGljaCl9cmV0dXJuIG51bGw7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIGRlJiZcImtvXCIhPT1iLmxvY2FsZT9udWxsOmIuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX1cbnZhciBsZT17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCxcImRhdGV0aW1lLWxvY2FsXCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiBtZShhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCJpbnB1dFwiPT09Yj8hIWxlW2EudHlwZV06XCJ0ZXh0YXJlYVwiPT09Yj8hMDohMX1mdW5jdGlvbiBuZShhLGIsYyxkKXtFYihkKTtiPW9lKGIsXCJvbkNoYW5nZVwiKTswPGIubGVuZ3RoJiYoYz1uZXcgdGQoXCJvbkNoYW5nZVwiLFwiY2hhbmdlXCIsbnVsbCxjLGQpLGEucHVzaCh7ZXZlbnQ6YyxsaXN0ZW5lcnM6Yn0pKX12YXIgcGU9bnVsbCxxZT1udWxsO2Z1bmN0aW9uIHJlKGEpe3NlKGEsMCl9ZnVuY3Rpb24gdGUoYSl7dmFyIGI9dWUoYSk7aWYoV2EoYikpcmV0dXJuIGF9XG5mdW5jdGlvbiB2ZShhLGIpe2lmKFwiY2hhbmdlXCI9PT1hKXJldHVybiBifXZhciB3ZT0hMTtpZihpYSl7dmFyIHhlO2lmKGlhKXt2YXIgeWU9XCJvbmlucHV0XCJpbiBkb2N1bWVudDtpZigheWUpe3ZhciB6ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3plLnNldEF0dHJpYnV0ZShcIm9uaW5wdXRcIixcInJldHVybjtcIik7eWU9XCJmdW5jdGlvblwiPT09dHlwZW9mIHplLm9uaW5wdXR9eGU9eWV9ZWxzZSB4ZT0hMTt3ZT14ZSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fDk8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKX1mdW5jdGlvbiBBZSgpe3BlJiYocGUuZGV0YWNoRXZlbnQoXCJvbnByb3BlcnR5Y2hhbmdlXCIsQmUpLHFlPXBlPW51bGwpfWZ1bmN0aW9uIEJlKGEpe2lmKFwidmFsdWVcIj09PWEucHJvcGVydHlOYW1lJiZ0ZShxZSkpe3ZhciBiPVtdO25lKGIscWUsYSx4YihhKSk7SmIocmUsYil9fVxuZnVuY3Rpb24gQ2UoYSxiLGMpe1wiZm9jdXNpblwiPT09YT8oQWUoKSxwZT1iLHFlPWMscGUuYXR0YWNoRXZlbnQoXCJvbnByb3BlcnR5Y2hhbmdlXCIsQmUpKTpcImZvY3Vzb3V0XCI9PT1hJiZBZSgpfWZ1bmN0aW9uIERlKGEpe2lmKFwic2VsZWN0aW9uY2hhbmdlXCI9PT1hfHxcImtleXVwXCI9PT1hfHxcImtleWRvd25cIj09PWEpcmV0dXJuIHRlKHFlKX1mdW5jdGlvbiBFZShhLGIpe2lmKFwiY2xpY2tcIj09PWEpcmV0dXJuIHRlKGIpfWZ1bmN0aW9uIEZlKGEsYil7aWYoXCJpbnB1dFwiPT09YXx8XCJjaGFuZ2VcIj09PWEpcmV0dXJuIHRlKGIpfWZ1bmN0aW9uIEdlKGEsYil7cmV0dXJuIGE9PT1iJiYoMCE9PWF8fDEvYT09PTEvYil8fGEhPT1hJiZiIT09Yn12YXIgSGU9XCJmdW5jdGlvblwiPT09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6R2U7XG5mdW5jdGlvbiBJZShhLGIpe2lmKEhlKGEsYikpcmV0dXJuITA7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhfHxudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBifHxudWxsPT09YilyZXR1cm4hMTt2YXIgYz1PYmplY3Qua2V5cyhhKSxkPU9iamVjdC5rZXlzKGIpO2lmKGMubGVuZ3RoIT09ZC5sZW5ndGgpcmV0dXJuITE7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXTtpZighamEuY2FsbChiLGUpfHwhSGUoYVtlXSxiW2VdKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBKZShhKXtmb3IoO2EmJmEuZmlyc3RDaGlsZDspYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9XG5mdW5jdGlvbiBLZShhLGIpe3ZhciBjPUplKGEpO2E9MDtmb3IodmFyIGQ7Yzspe2lmKDM9PT1jLm5vZGVUeXBlKXtkPWErYy50ZXh0Q29udGVudC5sZW5ndGg7aWYoYTw9YiYmZD49YilyZXR1cm57bm9kZTpjLG9mZnNldDpiLWF9O2E9ZH1hOntmb3IoO2M7KXtpZihjLm5leHRTaWJsaW5nKXtjPWMubmV4dFNpYmxpbmc7YnJlYWsgYX1jPWMucGFyZW50Tm9kZX1jPXZvaWQgMH1jPUplKGMpfX1mdW5jdGlvbiBMZShhLGIpe3JldHVybiBhJiZiP2E9PT1iPyEwOmEmJjM9PT1hLm5vZGVUeXBlPyExOmImJjM9PT1iLm5vZGVUeXBlP0xlKGEsYi5wYXJlbnROb2RlKTpcImNvbnRhaW5zXCJpbiBhP2EuY29udGFpbnMoYik6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8hIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjE2KTohMTohMX1cbmZ1bmN0aW9uIE1lKCl7Zm9yKHZhciBhPXdpbmRvdyxiPVhhKCk7YiBpbnN0YW5jZW9mIGEuSFRNTElGcmFtZUVsZW1lbnQ7KXt0cnl7dmFyIGM9XCJzdHJpbmdcIj09PXR5cGVvZiBiLmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZn1jYXRjaChkKXtjPSExfWlmKGMpYT1iLmNvbnRlbnRXaW5kb3c7ZWxzZSBicmVhaztiPVhhKGEuZG9jdW1lbnQpfXJldHVybiBifWZ1bmN0aW9uIE5lKGEpe3ZhciBiPWEmJmEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gYiYmKFwiaW5wdXRcIj09PWImJihcInRleHRcIj09PWEudHlwZXx8XCJzZWFyY2hcIj09PWEudHlwZXx8XCJ0ZWxcIj09PWEudHlwZXx8XCJ1cmxcIj09PWEudHlwZXx8XCJwYXNzd29yZFwiPT09YS50eXBlKXx8XCJ0ZXh0YXJlYVwiPT09Ynx8XCJ0cnVlXCI9PT1hLmNvbnRlbnRFZGl0YWJsZSl9XG5mdW5jdGlvbiBPZShhKXt2YXIgYj1NZSgpLGM9YS5mb2N1c2VkRWxlbSxkPWEuc2VsZWN0aW9uUmFuZ2U7aWYoYiE9PWMmJmMmJmMub3duZXJEb2N1bWVudCYmTGUoYy5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxjKSl7aWYobnVsbCE9PWQmJk5lKGMpKWlmKGI9ZC5zdGFydCxhPWQuZW5kLHZvaWQgMD09PWEmJihhPWIpLFwic2VsZWN0aW9uU3RhcnRcImluIGMpYy5zZWxlY3Rpb25TdGFydD1iLGMuc2VsZWN0aW9uRW5kPU1hdGgubWluKGEsYy52YWx1ZS5sZW5ndGgpO2Vsc2UgaWYoYT0oYj1jLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KSYmYi5kZWZhdWx0Vmlld3x8d2luZG93LGEuZ2V0U2VsZWN0aW9uKXthPWEuZ2V0U2VsZWN0aW9uKCk7dmFyIGU9Yy50ZXh0Q29udGVudC5sZW5ndGgsZj1NYXRoLm1pbihkLnN0YXJ0LGUpO2Q9dm9pZCAwPT09ZC5lbmQ/ZjpNYXRoLm1pbihkLmVuZCxlKTshYS5leHRlbmQmJmY+ZCYmKGU9ZCxkPWYsZj1lKTtlPUtlKGMsZik7dmFyIGc9S2UoYyxcbmQpO2UmJmcmJigxIT09YS5yYW5nZUNvdW50fHxhLmFuY2hvck5vZGUhPT1lLm5vZGV8fGEuYW5jaG9yT2Zmc2V0IT09ZS5vZmZzZXR8fGEuZm9jdXNOb2RlIT09Zy5ub2RlfHxhLmZvY3VzT2Zmc2V0IT09Zy5vZmZzZXQpJiYoYj1iLmNyZWF0ZVJhbmdlKCksYi5zZXRTdGFydChlLm5vZGUsZS5vZmZzZXQpLGEucmVtb3ZlQWxsUmFuZ2VzKCksZj5kPyhhLmFkZFJhbmdlKGIpLGEuZXh0ZW5kKGcubm9kZSxnLm9mZnNldCkpOihiLnNldEVuZChnLm5vZGUsZy5vZmZzZXQpLGEuYWRkUmFuZ2UoYikpKX1iPVtdO2ZvcihhPWM7YT1hLnBhcmVudE5vZGU7KTE9PT1hLm5vZGVUeXBlJiZiLnB1c2goe2VsZW1lbnQ6YSxsZWZ0OmEuc2Nyb2xsTGVmdCx0b3A6YS5zY3JvbGxUb3B9KTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5mb2N1cyYmYy5mb2N1cygpO2ZvcihjPTA7YzxiLmxlbmd0aDtjKyspYT1iW2NdLGEuZWxlbWVudC5zY3JvbGxMZWZ0PWEubGVmdCxhLmVsZW1lbnQuc2Nyb2xsVG9wPWEudG9wfX1cbnZhciBQZT1pYSYmXCJkb2N1bWVudE1vZGVcImluIGRvY3VtZW50JiYxMT49ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLFFlPW51bGwsUmU9bnVsbCxTZT1udWxsLFRlPSExO1xuZnVuY3Rpb24gVWUoYSxiLGMpe3ZhciBkPWMud2luZG93PT09Yz9jLmRvY3VtZW50Ojk9PT1jLm5vZGVUeXBlP2M6Yy5vd25lckRvY3VtZW50O1RlfHxudWxsPT1RZXx8UWUhPT1YYShkKXx8KGQ9UWUsXCJzZWxlY3Rpb25TdGFydFwiaW4gZCYmTmUoZCk/ZD17c3RhcnQ6ZC5zZWxlY3Rpb25TdGFydCxlbmQ6ZC5zZWxlY3Rpb25FbmR9OihkPShkLm93bmVyRG9jdW1lbnQmJmQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24oKSxkPXthbmNob3JOb2RlOmQuYW5jaG9yTm9kZSxhbmNob3JPZmZzZXQ6ZC5hbmNob3JPZmZzZXQsZm9jdXNOb2RlOmQuZm9jdXNOb2RlLGZvY3VzT2Zmc2V0OmQuZm9jdXNPZmZzZXR9KSxTZSYmSWUoU2UsZCl8fChTZT1kLGQ9b2UoUmUsXCJvblNlbGVjdFwiKSwwPGQubGVuZ3RoJiYoYj1uZXcgdGQoXCJvblNlbGVjdFwiLFwic2VsZWN0XCIsbnVsbCxiLGMpLGEucHVzaCh7ZXZlbnQ6YixsaXN0ZW5lcnM6ZH0pLGIudGFyZ2V0PVFlKSkpfVxuZnVuY3Rpb24gVmUoYSxiKXt2YXIgYz17fTtjW2EudG9Mb3dlckNhc2UoKV09Yi50b0xvd2VyQ2FzZSgpO2NbXCJXZWJraXRcIithXT1cIndlYmtpdFwiK2I7Y1tcIk1velwiK2FdPVwibW96XCIrYjtyZXR1cm4gY312YXIgV2U9e2FuaW1hdGlvbmVuZDpWZShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uRW5kXCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpWZShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uSXRlcmF0aW9uXCIpLGFuaW1hdGlvbnN0YXJ0OlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25TdGFydFwiKSx0cmFuc2l0aW9uZW5kOlZlKFwiVHJhbnNpdGlvblwiLFwiVHJhbnNpdGlvbkVuZFwiKX0sWGU9e30sWWU9e307XG5pYSYmKFllPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuc3R5bGUsXCJBbmltYXRpb25FdmVudFwiaW4gd2luZG93fHwoZGVsZXRlIFdlLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIFdlLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIFdlLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksXCJUcmFuc2l0aW9uRXZlbnRcImluIHdpbmRvd3x8ZGVsZXRlIFdlLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7ZnVuY3Rpb24gWmUoYSl7aWYoWGVbYV0pcmV0dXJuIFhlW2FdO2lmKCFXZVthXSlyZXR1cm4gYTt2YXIgYj1XZVthXSxjO2ZvcihjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSYmYyBpbiBZZSlyZXR1cm4gWGVbYV09YltjXTtyZXR1cm4gYX12YXIgJGU9WmUoXCJhbmltYXRpb25lbmRcIiksYWY9WmUoXCJhbmltYXRpb25pdGVyYXRpb25cIiksYmY9WmUoXCJhbmltYXRpb25zdGFydFwiKSxjZj1aZShcInRyYW5zaXRpb25lbmRcIiksZGY9bmV3IE1hcCxlZj1cImFib3J0IGF1eENsaWNrIGNhbmNlbCBjYW5QbGF5IGNhblBsYXlUaHJvdWdoIGNsaWNrIGNsb3NlIGNvbnRleHRNZW51IGNvcHkgY3V0IGRyYWcgZHJhZ0VuZCBkcmFnRW50ZXIgZHJhZ0V4aXQgZHJhZ0xlYXZlIGRyYWdPdmVyIGRyYWdTdGFydCBkcm9wIGR1cmF0aW9uQ2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGdvdFBvaW50ZXJDYXB0dXJlIGlucHV0IGludmFsaWQga2V5RG93biBrZXlQcmVzcyBrZXlVcCBsb2FkIGxvYWRlZERhdGEgbG9hZGVkTWV0YWRhdGEgbG9hZFN0YXJ0IGxvc3RQb2ludGVyQ2FwdHVyZSBtb3VzZURvd24gbW91c2VNb3ZlIG1vdXNlT3V0IG1vdXNlT3ZlciBtb3VzZVVwIHBhc3RlIHBhdXNlIHBsYXkgcGxheWluZyBwb2ludGVyQ2FuY2VsIHBvaW50ZXJEb3duIHBvaW50ZXJNb3ZlIHBvaW50ZXJPdXQgcG9pbnRlck92ZXIgcG9pbnRlclVwIHByb2dyZXNzIHJhdGVDaGFuZ2UgcmVzZXQgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VibWl0IHN1c3BlbmQgdGltZVVwZGF0ZSB0b3VjaENhbmNlbCB0b3VjaEVuZCB0b3VjaFN0YXJ0IHZvbHVtZUNoYW5nZSBzY3JvbGwgdG9nZ2xlIHRvdWNoTW92ZSB3YWl0aW5nIHdoZWVsXCIuc3BsaXQoXCIgXCIpO1xuZnVuY3Rpb24gZmYoYSxiKXtkZi5zZXQoYSxiKTtmYShiLFthXSl9Zm9yKHZhciBnZj0wO2dmPGVmLmxlbmd0aDtnZisrKXt2YXIgaGY9ZWZbZ2ZdLGpmPWhmLnRvTG93ZXJDYXNlKCksa2Y9aGZbMF0udG9VcHBlckNhc2UoKStoZi5zbGljZSgxKTtmZihqZixcIm9uXCIra2YpfWZmKCRlLFwib25BbmltYXRpb25FbmRcIik7ZmYoYWYsXCJvbkFuaW1hdGlvbkl0ZXJhdGlvblwiKTtmZihiZixcIm9uQW5pbWF0aW9uU3RhcnRcIik7ZmYoXCJkYmxjbGlja1wiLFwib25Eb3VibGVDbGlja1wiKTtmZihcImZvY3VzaW5cIixcIm9uRm9jdXNcIik7ZmYoXCJmb2N1c291dFwiLFwib25CbHVyXCIpO2ZmKGNmLFwib25UcmFuc2l0aW9uRW5kXCIpO2hhKFwib25Nb3VzZUVudGVyXCIsW1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXSk7aGEoXCJvbk1vdXNlTGVhdmVcIixbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdKTtoYShcIm9uUG9pbnRlckVudGVyXCIsW1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl0pO1xuaGEoXCJvblBvaW50ZXJMZWF2ZVwiLFtcInBvaW50ZXJvdXRcIixcInBvaW50ZXJvdmVyXCJdKTtmYShcIm9uQ2hhbmdlXCIsXCJjaGFuZ2UgY2xpY2sgZm9jdXNpbiBmb2N1c291dCBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKSk7ZmEoXCJvblNlbGVjdFwiLFwiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlXCIuc3BsaXQoXCIgXCIpKTtmYShcIm9uQmVmb3JlSW5wdXRcIixbXCJjb21wb3NpdGlvbmVuZFwiLFwia2V5cHJlc3NcIixcInRleHRJbnB1dFwiLFwicGFzdGVcIl0pO2ZhKFwib25Db21wb3NpdGlvbkVuZFwiLFwiY29tcG9zaXRpb25lbmQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO2ZhKFwib25Db21wb3NpdGlvblN0YXJ0XCIsXCJjb21wb3NpdGlvbnN0YXJ0IGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKTtcbmZhKFwib25Db21wb3NpdGlvblVwZGF0ZVwiLFwiY29tcG9zaXRpb251cGRhdGUgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO3ZhciBsZj1cImFib3J0IGNhbnBsYXkgY2FucGxheXRocm91Z2ggZHVyYXRpb25jaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgbG9hZGVkZGF0YSBsb2FkZWRtZXRhZGF0YSBsb2Fkc3RhcnQgcGF1c2UgcGxheSBwbGF5aW5nIHByb2dyZXNzIHJhdGVjaGFuZ2UgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VzcGVuZCB0aW1ldXBkYXRlIHZvbHVtZWNoYW5nZSB3YWl0aW5nXCIuc3BsaXQoXCIgXCIpLG1mPW5ldyBTZXQoXCJjYW5jZWwgY2xvc2UgaW52YWxpZCBsb2FkIHNjcm9sbCB0b2dnbGVcIi5zcGxpdChcIiBcIikuY29uY2F0KGxmKSk7XG5mdW5jdGlvbiBuZihhLGIsYyl7dmFyIGQ9YS50eXBlfHxcInVua25vd24tZXZlbnRcIjthLmN1cnJlbnRUYXJnZXQ9YztVYihkLGIsdm9pZCAwLGEpO2EuY3VycmVudFRhcmdldD1udWxsfVxuZnVuY3Rpb24gc2UoYSxiKXtiPTAhPT0oYiY0KTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXSxlPWQuZXZlbnQ7ZD1kLmxpc3RlbmVyczthOnt2YXIgZj12b2lkIDA7aWYoYilmb3IodmFyIGc9ZC5sZW5ndGgtMTswPD1nO2ctLSl7dmFyIGg9ZFtnXSxrPWguaW5zdGFuY2UsbD1oLmN1cnJlbnRUYXJnZXQ7aD1oLmxpc3RlbmVyO2lmKGshPT1mJiZlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgYTtuZihlLGgsbCk7Zj1rfWVsc2UgZm9yKGc9MDtnPGQubGVuZ3RoO2crKyl7aD1kW2ddO2s9aC5pbnN0YW5jZTtsPWguY3VycmVudFRhcmdldDtoPWgubGlzdGVuZXI7aWYoayE9PWYmJmUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBhO25mKGUsaCxsKTtmPWt9fX1pZihRYil0aHJvdyBhPVJiLFFiPSExLFJiPW51bGwsYTt9XG5mdW5jdGlvbiBEKGEsYil7dmFyIGM9YltvZl07dm9pZCAwPT09YyYmKGM9YltvZl09bmV3IFNldCk7dmFyIGQ9YStcIl9fYnViYmxlXCI7Yy5oYXMoZCl8fChwZihiLGEsMiwhMSksYy5hZGQoZCkpfWZ1bmN0aW9uIHFmKGEsYixjKXt2YXIgZD0wO2ImJihkfD00KTtwZihjLGEsZCxiKX12YXIgcmY9XCJfcmVhY3RMaXN0ZW5pbmdcIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtmdW5jdGlvbiBzZihhKXtpZighYVtyZl0pe2FbcmZdPSEwO2RhLmZvckVhY2goZnVuY3Rpb24oYil7XCJzZWxlY3Rpb25jaGFuZ2VcIiE9PWImJihtZi5oYXMoYil8fHFmKGIsITEsYSkscWYoYiwhMCxhKSl9KTt2YXIgYj05PT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudDtudWxsPT09Ynx8YltyZl18fChiW3JmXT0hMCxxZihcInNlbGVjdGlvbmNoYW5nZVwiLCExLGIpKX19XG5mdW5jdGlvbiBwZihhLGIsYyxkKXtzd2l0Y2goamQoYikpe2Nhc2UgMTp2YXIgZT1lZDticmVhaztjYXNlIDQ6ZT1nZDticmVhaztkZWZhdWx0OmU9ZmR9Yz1lLmJpbmQobnVsbCxiLGMsYSk7ZT12b2lkIDA7IUxifHxcInRvdWNoc3RhcnRcIiE9PWImJlwidG91Y2htb3ZlXCIhPT1iJiZcIndoZWVsXCIhPT1ifHwoZT0hMCk7ZD92b2lkIDAhPT1lP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMse2NhcHR1cmU6ITAscGFzc2l2ZTplfSk6YS5hZGRFdmVudExpc3RlbmVyKGIsYywhMCk6dm9pZCAwIT09ZT9hLmFkZEV2ZW50TGlzdGVuZXIoYixjLHtwYXNzaXZlOmV9KTphLmFkZEV2ZW50TGlzdGVuZXIoYixjLCExKX1cbmZ1bmN0aW9uIGhkKGEsYixjLGQsZSl7dmFyIGY9ZDtpZigwPT09KGImMSkmJjA9PT0oYiYyKSYmbnVsbCE9PWQpYTpmb3IoOzspe2lmKG51bGw9PT1kKXJldHVybjt2YXIgZz1kLnRhZztpZigzPT09Z3x8ND09PWcpe3ZhciBoPWQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87aWYoaD09PWV8fDg9PT1oLm5vZGVUeXBlJiZoLnBhcmVudE5vZGU9PT1lKWJyZWFrO2lmKDQ9PT1nKWZvcihnPWQucmV0dXJuO251bGwhPT1nOyl7dmFyIGs9Zy50YWc7aWYoMz09PWt8fDQ9PT1rKWlmKGs9Zy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxrPT09ZXx8OD09PWsubm9kZVR5cGUmJmsucGFyZW50Tm9kZT09PWUpcmV0dXJuO2c9Zy5yZXR1cm59Zm9yKDtudWxsIT09aDspe2c9V2MoaCk7aWYobnVsbD09PWcpcmV0dXJuO2s9Zy50YWc7aWYoNT09PWt8fDY9PT1rKXtkPWY9Zztjb250aW51ZSBhfWg9aC5wYXJlbnROb2RlfX1kPWQucmV0dXJufUpiKGZ1bmN0aW9uKCl7dmFyIGQ9ZixlPXhiKGMpLGc9W107XG5hOnt2YXIgaD1kZi5nZXQoYSk7aWYodm9pZCAwIT09aCl7dmFyIGs9dGQsbj1hO3N3aXRjaChhKXtjYXNlIFwia2V5cHJlc3NcIjppZigwPT09b2QoYykpYnJlYWsgYTtjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXl1cFwiOms9UmQ7YnJlYWs7Y2FzZSBcImZvY3VzaW5cIjpuPVwiZm9jdXNcIjtrPUZkO2JyZWFrO2Nhc2UgXCJmb2N1c291dFwiOm49XCJibHVyXCI7az1GZDticmVhaztjYXNlIFwiYmVmb3JlYmx1clwiOmNhc2UgXCJhZnRlcmJsdXJcIjprPUZkO2JyZWFrO2Nhc2UgXCJjbGlja1wiOmlmKDI9PT1jLmJ1dHRvbilicmVhayBhO2Nhc2UgXCJhdXhjbGlja1wiOmNhc2UgXCJkYmxjbGlja1wiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwibW91c2Vtb3ZlXCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwibW91c2VvdXRcIjpjYXNlIFwibW91c2VvdmVyXCI6Y2FzZSBcImNvbnRleHRtZW51XCI6az1CZDticmVhaztjYXNlIFwiZHJhZ1wiOmNhc2UgXCJkcmFnZW5kXCI6Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnZXhpdFwiOmNhc2UgXCJkcmFnbGVhdmVcIjpjYXNlIFwiZHJhZ292ZXJcIjpjYXNlIFwiZHJhZ3N0YXJ0XCI6Y2FzZSBcImRyb3BcIjprPVxuRGQ7YnJlYWs7Y2FzZSBcInRvdWNoY2FuY2VsXCI6Y2FzZSBcInRvdWNoZW5kXCI6Y2FzZSBcInRvdWNobW92ZVwiOmNhc2UgXCJ0b3VjaHN0YXJ0XCI6az1WZDticmVhaztjYXNlICRlOmNhc2UgYWY6Y2FzZSBiZjprPUhkO2JyZWFrO2Nhc2UgY2Y6az1YZDticmVhaztjYXNlIFwic2Nyb2xsXCI6az12ZDticmVhaztjYXNlIFwid2hlZWxcIjprPVpkO2JyZWFrO2Nhc2UgXCJjb3B5XCI6Y2FzZSBcImN1dFwiOmNhc2UgXCJwYXN0ZVwiOms9SmQ7YnJlYWs7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcImxvc3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJwb2ludGVyY2FuY2VsXCI6Y2FzZSBcInBvaW50ZXJkb3duXCI6Y2FzZSBcInBvaW50ZXJtb3ZlXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpjYXNlIFwicG9pbnRlcm92ZXJcIjpjYXNlIFwicG9pbnRlcnVwXCI6az1UZH12YXIgdD0wIT09KGImNCksSj0hdCYmXCJzY3JvbGxcIj09PWEseD10P251bGwhPT1oP2grXCJDYXB0dXJlXCI6bnVsbDpoO3Q9W107Zm9yKHZhciB3PWQsdTtudWxsIT09XG53Oyl7dT13O3ZhciBGPXUuc3RhdGVOb2RlOzU9PT11LnRhZyYmbnVsbCE9PUYmJih1PUYsbnVsbCE9PXgmJihGPUtiKHcseCksbnVsbCE9RiYmdC5wdXNoKHRmKHcsRix1KSkpKTtpZihKKWJyZWFrO3c9dy5yZXR1cm59MDx0Lmxlbmd0aCYmKGg9bmV3IGsoaCxuLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmgsbGlzdGVuZXJzOnR9KSl9fWlmKDA9PT0oYiY3KSl7YTp7aD1cIm1vdXNlb3ZlclwiPT09YXx8XCJwb2ludGVyb3ZlclwiPT09YTtrPVwibW91c2VvdXRcIj09PWF8fFwicG9pbnRlcm91dFwiPT09YTtpZihoJiZjIT09d2ImJihuPWMucmVsYXRlZFRhcmdldHx8Yy5mcm9tRWxlbWVudCkmJihXYyhuKXx8blt1Zl0pKWJyZWFrIGE7aWYoa3x8aCl7aD1lLndpbmRvdz09PWU/ZTooaD1lLm93bmVyRG9jdW1lbnQpP2guZGVmYXVsdFZpZXd8fGgucGFyZW50V2luZG93OndpbmRvdztpZihrKXtpZihuPWMucmVsYXRlZFRhcmdldHx8Yy50b0VsZW1lbnQsaz1kLG49bj9XYyhuKTpudWxsLG51bGwhPT1cbm4mJihKPVZiKG4pLG4hPT1KfHw1IT09bi50YWcmJjYhPT1uLnRhZykpbj1udWxsfWVsc2Ugaz1udWxsLG49ZDtpZihrIT09bil7dD1CZDtGPVwib25Nb3VzZUxlYXZlXCI7eD1cIm9uTW91c2VFbnRlclwiO3c9XCJtb3VzZVwiO2lmKFwicG9pbnRlcm91dFwiPT09YXx8XCJwb2ludGVyb3ZlclwiPT09YSl0PVRkLEY9XCJvblBvaW50ZXJMZWF2ZVwiLHg9XCJvblBvaW50ZXJFbnRlclwiLHc9XCJwb2ludGVyXCI7Sj1udWxsPT1rP2g6dWUoayk7dT1udWxsPT1uP2g6dWUobik7aD1uZXcgdChGLHcrXCJsZWF2ZVwiLGssYyxlKTtoLnRhcmdldD1KO2gucmVsYXRlZFRhcmdldD11O0Y9bnVsbDtXYyhlKT09PWQmJih0PW5ldyB0KHgsdytcImVudGVyXCIsbixjLGUpLHQudGFyZ2V0PXUsdC5yZWxhdGVkVGFyZ2V0PUosRj10KTtKPUY7aWYoayYmbiliOnt0PWs7eD1uO3c9MDtmb3IodT10O3U7dT12Zih1KSl3Kys7dT0wO2ZvcihGPXg7RjtGPXZmKEYpKXUrKztmb3IoOzA8dy11Oyl0PXZmKHQpLHctLTtmb3IoOzA8dS13Oyl4PVxudmYoeCksdS0tO2Zvcig7dy0tOyl7aWYodD09PXh8fG51bGwhPT14JiZ0PT09eC5hbHRlcm5hdGUpYnJlYWsgYjt0PXZmKHQpO3g9dmYoeCl9dD1udWxsfWVsc2UgdD1udWxsO251bGwhPT1rJiZ3ZihnLGgsayx0LCExKTtudWxsIT09biYmbnVsbCE9PUomJndmKGcsSixuLHQsITApfX19YTp7aD1kP3VlKGQpOndpbmRvdztrPWgubm9kZU5hbWUmJmgubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihcInNlbGVjdFwiPT09a3x8XCJpbnB1dFwiPT09ayYmXCJmaWxlXCI9PT1oLnR5cGUpdmFyIG5hPXZlO2Vsc2UgaWYobWUoaCkpaWYod2UpbmE9RmU7ZWxzZXtuYT1EZTt2YXIgeGE9Q2V9ZWxzZShrPWgubm9kZU5hbWUpJiZcImlucHV0XCI9PT1rLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1oLnR5cGV8fFwicmFkaW9cIj09PWgudHlwZSkmJihuYT1FZSk7aWYobmEmJihuYT1uYShhLGQpKSl7bmUoZyxuYSxjLGUpO2JyZWFrIGF9eGEmJnhhKGEsaCxkKTtcImZvY3Vzb3V0XCI9PT1hJiYoeGE9aC5fd3JhcHBlclN0YXRlKSYmXG54YS5jb250cm9sbGVkJiZcIm51bWJlclwiPT09aC50eXBlJiZjYihoLFwibnVtYmVyXCIsaC52YWx1ZSl9eGE9ZD91ZShkKTp3aW5kb3c7c3dpdGNoKGEpe2Nhc2UgXCJmb2N1c2luXCI6aWYobWUoeGEpfHxcInRydWVcIj09PXhhLmNvbnRlbnRFZGl0YWJsZSlRZT14YSxSZT1kLFNlPW51bGw7YnJlYWs7Y2FzZSBcImZvY3Vzb3V0XCI6U2U9UmU9UWU9bnVsbDticmVhaztjYXNlIFwibW91c2Vkb3duXCI6VGU9ITA7YnJlYWs7Y2FzZSBcImNvbnRleHRtZW51XCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwiZHJhZ2VuZFwiOlRlPSExO1VlKGcsYyxlKTticmVhaztjYXNlIFwic2VsZWN0aW9uY2hhbmdlXCI6aWYoUGUpYnJlYWs7Y2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5dXBcIjpVZShnLGMsZSl9dmFyICRhO2lmKGFlKWI6e3N3aXRjaChhKXtjYXNlIFwiY29tcG9zaXRpb25zdGFydFwiOnZhciBiYT1cIm9uQ29tcG9zaXRpb25TdGFydFwiO2JyZWFrIGI7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6YmE9XCJvbkNvbXBvc2l0aW9uRW5kXCI7XG5icmVhayBiO2Nhc2UgXCJjb21wb3NpdGlvbnVwZGF0ZVwiOmJhPVwib25Db21wb3NpdGlvblVwZGF0ZVwiO2JyZWFrIGJ9YmE9dm9pZCAwfWVsc2UgaWU/Z2UoYSxjKSYmKGJhPVwib25Db21wb3NpdGlvbkVuZFwiKTpcImtleWRvd25cIj09PWEmJjIyOT09PWMua2V5Q29kZSYmKGJhPVwib25Db21wb3NpdGlvblN0YXJ0XCIpO2JhJiYoZGUmJlwia29cIiE9PWMubG9jYWxlJiYoaWV8fFwib25Db21wb3NpdGlvblN0YXJ0XCIhPT1iYT9cIm9uQ29tcG9zaXRpb25FbmRcIj09PWJhJiZpZSYmKCRhPW5kKCkpOihrZD1lLGxkPVwidmFsdWVcImluIGtkP2tkLnZhbHVlOmtkLnRleHRDb250ZW50LGllPSEwKSkseGE9b2UoZCxiYSksMDx4YS5sZW5ndGgmJihiYT1uZXcgTGQoYmEsYSxudWxsLGMsZSksZy5wdXNoKHtldmVudDpiYSxsaXN0ZW5lcnM6eGF9KSwkYT9iYS5kYXRhPSRhOigkYT1oZShjKSxudWxsIT09JGEmJihiYS5kYXRhPSRhKSkpKTtpZigkYT1jZT9qZShhLGMpOmtlKGEsYykpZD1vZShkLFwib25CZWZvcmVJbnB1dFwiKSxcbjA8ZC5sZW5ndGgmJihlPW5ldyBMZChcIm9uQmVmb3JlSW5wdXRcIixcImJlZm9yZWlucHV0XCIsbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6ZSxsaXN0ZW5lcnM6ZH0pLGUuZGF0YT0kYSl9c2UoZyxiKX0pfWZ1bmN0aW9uIHRmKGEsYixjKXtyZXR1cm57aW5zdGFuY2U6YSxsaXN0ZW5lcjpiLGN1cnJlbnRUYXJnZXQ6Y319ZnVuY3Rpb24gb2UoYSxiKXtmb3IodmFyIGM9YitcIkNhcHR1cmVcIixkPVtdO251bGwhPT1hOyl7dmFyIGU9YSxmPWUuc3RhdGVOb2RlOzU9PT1lLnRhZyYmbnVsbCE9PWYmJihlPWYsZj1LYihhLGMpLG51bGwhPWYmJmQudW5zaGlmdCh0ZihhLGYsZSkpLGY9S2IoYSxiKSxudWxsIT1mJiZkLnB1c2godGYoYSxmLGUpKSk7YT1hLnJldHVybn1yZXR1cm4gZH1mdW5jdGlvbiB2ZihhKXtpZihudWxsPT09YSlyZXR1cm4gbnVsbDtkbyBhPWEucmV0dXJuO3doaWxlKGEmJjUhPT1hLnRhZyk7cmV0dXJuIGE/YTpudWxsfVxuZnVuY3Rpb24gd2YoYSxiLGMsZCxlKXtmb3IodmFyIGY9Yi5fcmVhY3ROYW1lLGc9W107bnVsbCE9PWMmJmMhPT1kOyl7dmFyIGg9YyxrPWguYWx0ZXJuYXRlLGw9aC5zdGF0ZU5vZGU7aWYobnVsbCE9PWsmJms9PT1kKWJyZWFrOzU9PT1oLnRhZyYmbnVsbCE9PWwmJihoPWwsZT8oaz1LYihjLGYpLG51bGwhPWsmJmcudW5zaGlmdCh0ZihjLGssaCkpKTplfHwoaz1LYihjLGYpLG51bGwhPWsmJmcucHVzaCh0ZihjLGssaCkpKSk7Yz1jLnJldHVybn0wIT09Zy5sZW5ndGgmJmEucHVzaCh7ZXZlbnQ6YixsaXN0ZW5lcnM6Z30pfXZhciB4Zj0vXFxyXFxuPy9nLHlmPS9cXHUwMDAwfFxcdUZGRkQvZztmdW5jdGlvbiB6ZihhKXtyZXR1cm4oXCJzdHJpbmdcIj09PXR5cGVvZiBhP2E6XCJcIithKS5yZXBsYWNlKHhmLFwiXFxuXCIpLnJlcGxhY2UoeWYsXCJcIil9ZnVuY3Rpb24gQWYoYSxiLGMpe2I9emYoYik7aWYoemYoYSkhPT1iJiZjKXRocm93IEVycm9yKHAoNDI1KSk7fWZ1bmN0aW9uIEJmKCl7fVxudmFyIENmPW51bGwsRGY9bnVsbDtmdW5jdGlvbiBFZihhLGIpe3JldHVyblwidGV4dGFyZWFcIj09PWF8fFwibm9zY3JpcHRcIj09PWF8fFwic3RyaW5nXCI9PT10eXBlb2YgYi5jaGlsZHJlbnx8XCJudW1iZXJcIj09PXR5cGVvZiBiLmNoaWxkcmVufHxcIm9iamVjdFwiPT09dHlwZW9mIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbH1cbnZhciBGZj1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OnZvaWQgMCxHZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDp2b2lkIDAsSGY9XCJmdW5jdGlvblwiPT09dHlwZW9mIFByb21pc2U/UHJvbWlzZTp2b2lkIDAsSmY9XCJmdW5jdGlvblwiPT09dHlwZW9mIHF1ZXVlTWljcm90YXNrP3F1ZXVlTWljcm90YXNrOlwidW5kZWZpbmVkXCIhPT10eXBlb2YgSGY/ZnVuY3Rpb24oYSl7cmV0dXJuIEhmLnJlc29sdmUobnVsbCkudGhlbihhKS5jYXRjaChJZil9OkZmO2Z1bmN0aW9uIElmKGEpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBhO30pfVxuZnVuY3Rpb24gS2YoYSxiKXt2YXIgYz1iLGQ9MDtkb3t2YXIgZT1jLm5leHRTaWJsaW5nO2EucmVtb3ZlQ2hpbGQoYyk7aWYoZSYmOD09PWUubm9kZVR5cGUpaWYoYz1lLmRhdGEsXCIvJFwiPT09Yyl7aWYoMD09PWQpe2EucmVtb3ZlQ2hpbGQoZSk7YmQoYik7cmV0dXJufWQtLX1lbHNlXCIkXCIhPT1jJiZcIiQ/XCIhPT1jJiZcIiQhXCIhPT1jfHxkKys7Yz1lfXdoaWxlKGMpO2JkKGIpfWZ1bmN0aW9uIExmKGEpe2Zvcig7bnVsbCE9YTthPWEubmV4dFNpYmxpbmcpe3ZhciBiPWEubm9kZVR5cGU7aWYoMT09PWJ8fDM9PT1iKWJyZWFrO2lmKDg9PT1iKXtiPWEuZGF0YTtpZihcIiRcIj09PWJ8fFwiJCFcIj09PWJ8fFwiJD9cIj09PWIpYnJlYWs7aWYoXCIvJFwiPT09YilyZXR1cm4gbnVsbH19cmV0dXJuIGF9XG5mdW5jdGlvbiBNZihhKXthPWEucHJldmlvdXNTaWJsaW5nO2Zvcih2YXIgYj0wO2E7KXtpZig4PT09YS5ub2RlVHlwZSl7dmFyIGM9YS5kYXRhO2lmKFwiJFwiPT09Y3x8XCIkIVwiPT09Y3x8XCIkP1wiPT09Yyl7aWYoMD09PWIpcmV0dXJuIGE7Yi0tfWVsc2VcIi8kXCI9PT1jJiZiKyt9YT1hLnByZXZpb3VzU2libGluZ31yZXR1cm4gbnVsbH12YXIgTmY9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksT2Y9XCJfX3JlYWN0RmliZXIkXCIrTmYsUGY9XCJfX3JlYWN0UHJvcHMkXCIrTmYsdWY9XCJfX3JlYWN0Q29udGFpbmVyJFwiK05mLG9mPVwiX19yZWFjdEV2ZW50cyRcIitOZixRZj1cIl9fcmVhY3RMaXN0ZW5lcnMkXCIrTmYsUmY9XCJfX3JlYWN0SGFuZGxlcyRcIitOZjtcbmZ1bmN0aW9uIFdjKGEpe3ZhciBiPWFbT2ZdO2lmKGIpcmV0dXJuIGI7Zm9yKHZhciBjPWEucGFyZW50Tm9kZTtjOyl7aWYoYj1jW3VmXXx8Y1tPZl0pe2M9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWIuY2hpbGR8fG51bGwhPT1jJiZudWxsIT09Yy5jaGlsZClmb3IoYT1NZihhKTtudWxsIT09YTspe2lmKGM9YVtPZl0pcmV0dXJuIGM7YT1NZihhKX1yZXR1cm4gYn1hPWM7Yz1hLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gQ2IoYSl7YT1hW09mXXx8YVt1Zl07cmV0dXJuIWF8fDUhPT1hLnRhZyYmNiE9PWEudGFnJiYxMyE9PWEudGFnJiYzIT09YS50YWc/bnVsbDphfWZ1bmN0aW9uIHVlKGEpe2lmKDU9PT1hLnRhZ3x8Nj09PWEudGFnKXJldHVybiBhLnN0YXRlTm9kZTt0aHJvdyBFcnJvcihwKDMzKSk7fWZ1bmN0aW9uIERiKGEpe3JldHVybiBhW1BmXXx8bnVsbH12YXIgU2Y9W10sVGY9LTE7ZnVuY3Rpb24gVWYoYSl7cmV0dXJue2N1cnJlbnQ6YX19XG5mdW5jdGlvbiBFKGEpezA+VGZ8fChhLmN1cnJlbnQ9U2ZbVGZdLFNmW1RmXT1udWxsLFRmLS0pfWZ1bmN0aW9uIEcoYSxiKXtUZisrO1NmW1RmXT1hLmN1cnJlbnQ7YS5jdXJyZW50PWJ9dmFyIFZmPXt9LEg9VWYoVmYpLFdmPVVmKCExKSxYZj1WZjtmdW5jdGlvbiBZZihhLGIpe3ZhciBjPWEudHlwZS5jb250ZXh0VHlwZXM7aWYoIWMpcmV0dXJuIFZmO3ZhciBkPWEuc3RhdGVOb2RlO2lmKGQmJmQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD09PWIpcmV0dXJuIGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ7dmFyIGU9e30sZjtmb3IoZiBpbiBjKWVbZl09YltmXTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9YixhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWUpO3JldHVybiBlfVxuZnVuY3Rpb24gWmYoYSl7YT1hLmNoaWxkQ29udGV4dFR5cGVzO3JldHVybiBudWxsIT09YSYmdm9pZCAwIT09YX1mdW5jdGlvbiAkZigpe0UoV2YpO0UoSCl9ZnVuY3Rpb24gYWcoYSxiLGMpe2lmKEguY3VycmVudCE9PVZmKXRocm93IEVycm9yKHAoMTY4KSk7RyhILGIpO0coV2YsYyl9ZnVuY3Rpb24gYmcoYSxiLGMpe3ZhciBkPWEuc3RhdGVOb2RlO2I9Yi5jaGlsZENvbnRleHRUeXBlcztpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZC5nZXRDaGlsZENvbnRleHQpcmV0dXJuIGM7ZD1kLmdldENoaWxkQ29udGV4dCgpO2Zvcih2YXIgZSBpbiBkKWlmKCEoZSBpbiBiKSl0aHJvdyBFcnJvcihwKDEwOCxSYShhKXx8XCJVbmtub3duXCIsZSkpO3JldHVybiBBKHt9LGMsZCl9XG5mdW5jdGlvbiBjZyhhKXthPShhPWEuc3RhdGVOb2RlKSYmYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dHx8VmY7WGY9SC5jdXJyZW50O0coSCxhKTtHKFdmLFdmLmN1cnJlbnQpO3JldHVybiEwfWZ1bmN0aW9uIGRnKGEsYixjKXt2YXIgZD1hLnN0YXRlTm9kZTtpZighZCl0aHJvdyBFcnJvcihwKDE2OSkpO2M/KGE9YmcoYSxiLFhmKSxkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0PWEsRShXZiksRShIKSxHKEgsYSkpOkUoV2YpO0coV2YsYyl9dmFyIGVnPW51bGwsZmc9ITEsZ2c9ITE7ZnVuY3Rpb24gaGcoYSl7bnVsbD09PWVnP2VnPVthXTplZy5wdXNoKGEpfWZ1bmN0aW9uIGlnKGEpe2ZnPSEwO2hnKGEpfVxuZnVuY3Rpb24gamcoKXtpZighZ2cmJm51bGwhPT1lZyl7Z2c9ITA7dmFyIGE9MCxiPUM7dHJ5e3ZhciBjPWVnO2ZvcihDPTE7YTxjLmxlbmd0aDthKyspe3ZhciBkPWNbYV07ZG8gZD1kKCEwKTt3aGlsZShudWxsIT09ZCl9ZWc9bnVsbDtmZz0hMX1jYXRjaChlKXt0aHJvdyBudWxsIT09ZWcmJihlZz1lZy5zbGljZShhKzEpKSxhYyhmYyxqZyksZTt9ZmluYWxseXtDPWIsZ2c9ITF9fXJldHVybiBudWxsfXZhciBrZz1bXSxsZz0wLG1nPW51bGwsbmc9MCxvZz1bXSxwZz0wLHFnPW51bGwscmc9MSxzZz1cIlwiO2Z1bmN0aW9uIHRnKGEsYil7a2dbbGcrK109bmc7a2dbbGcrK109bWc7bWc9YTtuZz1ifVxuZnVuY3Rpb24gdWcoYSxiLGMpe29nW3BnKytdPXJnO29nW3BnKytdPXNnO29nW3BnKytdPXFnO3FnPWE7dmFyIGQ9cmc7YT1zZzt2YXIgZT0zMi1vYyhkKS0xO2QmPX4oMTw8ZSk7Yys9MTt2YXIgZj0zMi1vYyhiKStlO2lmKDMwPGYpe3ZhciBnPWUtZSU1O2Y9KGQmKDE8PGcpLTEpLnRvU3RyaW5nKDMyKTtkPj49ZztlLT1nO3JnPTE8PDMyLW9jKGIpK2V8Yzw8ZXxkO3NnPWYrYX1lbHNlIHJnPTE8PGZ8Yzw8ZXxkLHNnPWF9ZnVuY3Rpb24gdmcoYSl7bnVsbCE9PWEucmV0dXJuJiYodGcoYSwxKSx1ZyhhLDEsMCkpfWZ1bmN0aW9uIHdnKGEpe2Zvcig7YT09PW1nOyltZz1rZ1stLWxnXSxrZ1tsZ109bnVsbCxuZz1rZ1stLWxnXSxrZ1tsZ109bnVsbDtmb3IoO2E9PT1xZzspcWc9b2dbLS1wZ10sb2dbcGddPW51bGwsc2c9b2dbLS1wZ10sb2dbcGddPW51bGwscmc9b2dbLS1wZ10sb2dbcGddPW51bGx9dmFyIHhnPW51bGwseWc9bnVsbCxJPSExLHpnPW51bGw7XG5mdW5jdGlvbiBBZyhhLGIpe3ZhciBjPUJnKDUsbnVsbCxudWxsLDApO2MuZWxlbWVudFR5cGU9XCJERUxFVEVEXCI7Yy5zdGF0ZU5vZGU9YjtjLnJldHVybj1hO2I9YS5kZWxldGlvbnM7bnVsbD09PWI/KGEuZGVsZXRpb25zPVtjXSxhLmZsYWdzfD0xNik6Yi5wdXNoKGMpfVxuZnVuY3Rpb24gQ2coYSxiKXtzd2l0Y2goYS50YWcpe2Nhc2UgNTp2YXIgYz1hLnR5cGU7Yj0xIT09Yi5ub2RlVHlwZXx8Yy50b0xvd2VyQ2FzZSgpIT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP251bGw6YjtyZXR1cm4gbnVsbCE9PWI/KGEuc3RhdGVOb2RlPWIseGc9YSx5Zz1MZihiLmZpcnN0Q2hpbGQpLCEwKTohMTtjYXNlIDY6cmV0dXJuIGI9XCJcIj09PWEucGVuZGluZ1Byb3BzfHwzIT09Yi5ub2RlVHlwZT9udWxsOmIsbnVsbCE9PWI/KGEuc3RhdGVOb2RlPWIseGc9YSx5Zz1udWxsLCEwKTohMTtjYXNlIDEzOnJldHVybiBiPTghPT1iLm5vZGVUeXBlP251bGw6YixudWxsIT09Yj8oYz1udWxsIT09cWc/e2lkOnJnLG92ZXJmbG93OnNnfTpudWxsLGEubWVtb2l6ZWRTdGF0ZT17ZGVoeWRyYXRlZDpiLHRyZWVDb250ZXh0OmMscmV0cnlMYW5lOjEwNzM3NDE4MjR9LGM9QmcoMTgsbnVsbCxudWxsLDApLGMuc3RhdGVOb2RlPWIsYy5yZXR1cm49YSxhLmNoaWxkPWMseGc9YSx5Zz1cbm51bGwsITApOiExO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIERnKGEpe3JldHVybiAwIT09KGEubW9kZSYxKSYmMD09PShhLmZsYWdzJjEyOCl9ZnVuY3Rpb24gRWcoYSl7aWYoSSl7dmFyIGI9eWc7aWYoYil7dmFyIGM9YjtpZighQ2coYSxiKSl7aWYoRGcoYSkpdGhyb3cgRXJyb3IocCg0MTgpKTtiPUxmKGMubmV4dFNpYmxpbmcpO3ZhciBkPXhnO2ImJkNnKGEsYik/QWcoZCxjKTooYS5mbGFncz1hLmZsYWdzJi00MDk3fDIsST0hMSx4Zz1hKX19ZWxzZXtpZihEZyhhKSl0aHJvdyBFcnJvcihwKDQxOCkpO2EuZmxhZ3M9YS5mbGFncyYtNDA5N3wyO0k9ITE7eGc9YX19fWZ1bmN0aW9uIEZnKGEpe2ZvcihhPWEucmV0dXJuO251bGwhPT1hJiY1IT09YS50YWcmJjMhPT1hLnRhZyYmMTMhPT1hLnRhZzspYT1hLnJldHVybjt4Zz1hfVxuZnVuY3Rpb24gR2coYSl7aWYoYSE9PXhnKXJldHVybiExO2lmKCFJKXJldHVybiBGZyhhKSxJPSEwLCExO3ZhciBiOyhiPTMhPT1hLnRhZykmJiEoYj01IT09YS50YWcpJiYoYj1hLnR5cGUsYj1cImhlYWRcIiE9PWImJlwiYm9keVwiIT09YiYmIUVmKGEudHlwZSxhLm1lbW9pemVkUHJvcHMpKTtpZihiJiYoYj15Zykpe2lmKERnKGEpKXRocm93IEhnKCksRXJyb3IocCg0MTgpKTtmb3IoO2I7KUFnKGEsYiksYj1MZihiLm5leHRTaWJsaW5nKX1GZyhhKTtpZigxMz09PWEudGFnKXthPWEubWVtb2l6ZWRTdGF0ZTthPW51bGwhPT1hP2EuZGVoeWRyYXRlZDpudWxsO2lmKCFhKXRocm93IEVycm9yKHAoMzE3KSk7YTp7YT1hLm5leHRTaWJsaW5nO2ZvcihiPTA7YTspe2lmKDg9PT1hLm5vZGVUeXBlKXt2YXIgYz1hLmRhdGE7aWYoXCIvJFwiPT09Yyl7aWYoMD09PWIpe3lnPUxmKGEubmV4dFNpYmxpbmcpO2JyZWFrIGF9Yi0tfWVsc2VcIiRcIiE9PWMmJlwiJCFcIiE9PWMmJlwiJD9cIiE9PWN8fGIrK31hPWEubmV4dFNpYmxpbmd9eWc9XG5udWxsfX1lbHNlIHlnPXhnP0xmKGEuc3RhdGVOb2RlLm5leHRTaWJsaW5nKTpudWxsO3JldHVybiEwfWZ1bmN0aW9uIEhnKCl7Zm9yKHZhciBhPXlnO2E7KWE9TGYoYS5uZXh0U2libGluZyl9ZnVuY3Rpb24gSWcoKXt5Zz14Zz1udWxsO0k9ITF9ZnVuY3Rpb24gSmcoYSl7bnVsbD09PXpnP3pnPVthXTp6Zy5wdXNoKGEpfXZhciBLZz11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZztmdW5jdGlvbiBMZyhhLGIpe2lmKGEmJmEuZGVmYXVsdFByb3BzKXtiPUEoe30sYik7YT1hLmRlZmF1bHRQcm9wcztmb3IodmFyIGMgaW4gYSl2b2lkIDA9PT1iW2NdJiYoYltjXT1hW2NdKTtyZXR1cm4gYn1yZXR1cm4gYn12YXIgTWc9VWYobnVsbCksTmc9bnVsbCxPZz1udWxsLFBnPW51bGw7ZnVuY3Rpb24gUWcoKXtQZz1PZz1OZz1udWxsfWZ1bmN0aW9uIFJnKGEpe3ZhciBiPU1nLmN1cnJlbnQ7RShNZyk7YS5fY3VycmVudFZhbHVlPWJ9XG5mdW5jdGlvbiBTZyhhLGIsYyl7Zm9yKDtudWxsIT09YTspe3ZhciBkPWEuYWx0ZXJuYXRlOyhhLmNoaWxkTGFuZXMmYikhPT1iPyhhLmNoaWxkTGFuZXN8PWIsbnVsbCE9PWQmJihkLmNoaWxkTGFuZXN8PWIpKTpudWxsIT09ZCYmKGQuY2hpbGRMYW5lcyZiKSE9PWImJihkLmNoaWxkTGFuZXN8PWIpO2lmKGE9PT1jKWJyZWFrO2E9YS5yZXR1cm59fWZ1bmN0aW9uIFRnKGEsYil7Tmc9YTtQZz1PZz1udWxsO2E9YS5kZXBlbmRlbmNpZXM7bnVsbCE9PWEmJm51bGwhPT1hLmZpcnN0Q29udGV4dCYmKDAhPT0oYS5sYW5lcyZiKSYmKFVnPSEwKSxhLmZpcnN0Q29udGV4dD1udWxsKX1cbmZ1bmN0aW9uIFZnKGEpe3ZhciBiPWEuX2N1cnJlbnRWYWx1ZTtpZihQZyE9PWEpaWYoYT17Y29udGV4dDphLG1lbW9pemVkVmFsdWU6YixuZXh0Om51bGx9LG51bGw9PT1PZyl7aWYobnVsbD09PU5nKXRocm93IEVycm9yKHAoMzA4KSk7T2c9YTtOZy5kZXBlbmRlbmNpZXM9e2xhbmVzOjAsZmlyc3RDb250ZXh0OmF9fWVsc2UgT2c9T2cubmV4dD1hO3JldHVybiBifXZhciBXZz1udWxsO2Z1bmN0aW9uIFhnKGEpe251bGw9PT1XZz9XZz1bYV06V2cucHVzaChhKX1mdW5jdGlvbiBZZyhhLGIsYyxkKXt2YXIgZT1iLmludGVybGVhdmVkO251bGw9PT1lPyhjLm5leHQ9YyxYZyhiKSk6KGMubmV4dD1lLm5leHQsZS5uZXh0PWMpO2IuaW50ZXJsZWF2ZWQ9YztyZXR1cm4gWmcoYSxkKX1cbmZ1bmN0aW9uIFpnKGEsYil7YS5sYW5lc3w9Yjt2YXIgYz1hLmFsdGVybmF0ZTtudWxsIT09YyYmKGMubGFuZXN8PWIpO2M9YTtmb3IoYT1hLnJldHVybjtudWxsIT09YTspYS5jaGlsZExhbmVzfD1iLGM9YS5hbHRlcm5hdGUsbnVsbCE9PWMmJihjLmNoaWxkTGFuZXN8PWIpLGM9YSxhPWEucmV0dXJuO3JldHVybiAzPT09Yy50YWc/Yy5zdGF0ZU5vZGU6bnVsbH12YXIgJGc9ITE7ZnVuY3Rpb24gYWgoYSl7YS51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmEubWVtb2l6ZWRTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6bnVsbCxsYXN0QmFzZVVwZGF0ZTpudWxsLHNoYXJlZDp7cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MH0sZWZmZWN0czpudWxsfX1cbmZ1bmN0aW9uIGJoKGEsYil7YT1hLnVwZGF0ZVF1ZXVlO2IudXBkYXRlUXVldWU9PT1hJiYoYi51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmEuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTphLmZpcnN0QmFzZVVwZGF0ZSxsYXN0QmFzZVVwZGF0ZTphLmxhc3RCYXNlVXBkYXRlLHNoYXJlZDphLnNoYXJlZCxlZmZlY3RzOmEuZWZmZWN0c30pfWZ1bmN0aW9uIGNoKGEsYil7cmV0dXJue2V2ZW50VGltZTphLGxhbmU6Yix0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9fVxuZnVuY3Rpb24gZGgoYSxiLGMpe3ZhciBkPWEudXBkYXRlUXVldWU7aWYobnVsbD09PWQpcmV0dXJuIG51bGw7ZD1kLnNoYXJlZDtpZigwIT09KEsmMikpe3ZhciBlPWQucGVuZGluZztudWxsPT09ZT9iLm5leHQ9YjooYi5uZXh0PWUubmV4dCxlLm5leHQ9Yik7ZC5wZW5kaW5nPWI7cmV0dXJuIFpnKGEsYyl9ZT1kLmludGVybGVhdmVkO251bGw9PT1lPyhiLm5leHQ9YixYZyhkKSk6KGIubmV4dD1lLm5leHQsZS5uZXh0PWIpO2QuaW50ZXJsZWF2ZWQ9YjtyZXR1cm4gWmcoYSxjKX1mdW5jdGlvbiBlaChhLGIsYyl7Yj1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1iJiYoYj1iLnNoYXJlZCwwIT09KGMmNDE5NDI0MCkpKXt2YXIgZD1iLmxhbmVzO2QmPWEucGVuZGluZ0xhbmVzO2N8PWQ7Yi5sYW5lcz1jO0NjKGEsYyl9fVxuZnVuY3Rpb24gZmgoYSxiKXt2YXIgYz1hLnVwZGF0ZVF1ZXVlLGQ9YS5hbHRlcm5hdGU7aWYobnVsbCE9PWQmJihkPWQudXBkYXRlUXVldWUsYz09PWQpKXt2YXIgZT1udWxsLGY9bnVsbDtjPWMuZmlyc3RCYXNlVXBkYXRlO2lmKG51bGwhPT1jKXtkb3t2YXIgZz17ZXZlbnRUaW1lOmMuZXZlbnRUaW1lLGxhbmU6Yy5sYW5lLHRhZzpjLnRhZyxwYXlsb2FkOmMucGF5bG9hZCxjYWxsYmFjazpjLmNhbGxiYWNrLG5leHQ6bnVsbH07bnVsbD09PWY/ZT1mPWc6Zj1mLm5leHQ9ZztjPWMubmV4dH13aGlsZShudWxsIT09Yyk7bnVsbD09PWY/ZT1mPWI6Zj1mLm5leHQ9Yn1lbHNlIGU9Zj1iO2M9e2Jhc2VTdGF0ZTpkLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6ZSxsYXN0QmFzZVVwZGF0ZTpmLHNoYXJlZDpkLnNoYXJlZCxlZmZlY3RzOmQuZWZmZWN0c307YS51cGRhdGVRdWV1ZT1jO3JldHVybn1hPWMubGFzdEJhc2VVcGRhdGU7bnVsbD09PWE/Yy5maXJzdEJhc2VVcGRhdGU9YjphLm5leHQ9XG5iO2MubGFzdEJhc2VVcGRhdGU9Yn1cbmZ1bmN0aW9uIGdoKGEsYixjLGQpe3ZhciBlPWEudXBkYXRlUXVldWU7JGc9ITE7dmFyIGY9ZS5maXJzdEJhc2VVcGRhdGUsZz1lLmxhc3RCYXNlVXBkYXRlLGg9ZS5zaGFyZWQucGVuZGluZztpZihudWxsIT09aCl7ZS5zaGFyZWQucGVuZGluZz1udWxsO3ZhciBrPWgsbD1rLm5leHQ7ay5uZXh0PW51bGw7bnVsbD09PWc/Zj1sOmcubmV4dD1sO2c9azt2YXIgbT1hLmFsdGVybmF0ZTtudWxsIT09bSYmKG09bS51cGRhdGVRdWV1ZSxoPW0ubGFzdEJhc2VVcGRhdGUsaCE9PWcmJihudWxsPT09aD9tLmZpcnN0QmFzZVVwZGF0ZT1sOmgubmV4dD1sLG0ubGFzdEJhc2VVcGRhdGU9aykpfWlmKG51bGwhPT1mKXt2YXIgcT1lLmJhc2VTdGF0ZTtnPTA7bT1sPWs9bnVsbDtoPWY7ZG97dmFyIHI9aC5sYW5lLHk9aC5ldmVudFRpbWU7aWYoKGQmcik9PT1yKXtudWxsIT09bSYmKG09bS5uZXh0PXtldmVudFRpbWU6eSxsYW5lOjAsdGFnOmgudGFnLHBheWxvYWQ6aC5wYXlsb2FkLGNhbGxiYWNrOmguY2FsbGJhY2ssXG5uZXh0Om51bGx9KTthOnt2YXIgbj1hLHQ9aDtyPWI7eT1jO3N3aXRjaCh0LnRhZyl7Y2FzZSAxOm49dC5wYXlsb2FkO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBuKXtxPW4uY2FsbCh5LHEscik7YnJlYWsgYX1xPW47YnJlYWsgYTtjYXNlIDM6bi5mbGFncz1uLmZsYWdzJi02NTUzN3wxMjg7Y2FzZSAwOm49dC5wYXlsb2FkO3I9XCJmdW5jdGlvblwiPT09dHlwZW9mIG4/bi5jYWxsKHkscSxyKTpuO2lmKG51bGw9PT1yfHx2b2lkIDA9PT1yKWJyZWFrIGE7cT1BKHt9LHEscik7YnJlYWsgYTtjYXNlIDI6JGc9ITB9fW51bGwhPT1oLmNhbGxiYWNrJiYwIT09aC5sYW5lJiYoYS5mbGFnc3w9NjQscj1lLmVmZmVjdHMsbnVsbD09PXI/ZS5lZmZlY3RzPVtoXTpyLnB1c2goaCkpfWVsc2UgeT17ZXZlbnRUaW1lOnksbGFuZTpyLHRhZzpoLnRhZyxwYXlsb2FkOmgucGF5bG9hZCxjYWxsYmFjazpoLmNhbGxiYWNrLG5leHQ6bnVsbH0sbnVsbD09PW0/KGw9bT15LGs9cSk6bT1tLm5leHQ9eSxnfD1yO1xuaD1oLm5leHQ7aWYobnVsbD09PWgpaWYoaD1lLnNoYXJlZC5wZW5kaW5nLG51bGw9PT1oKWJyZWFrO2Vsc2Ugcj1oLGg9ci5uZXh0LHIubmV4dD1udWxsLGUubGFzdEJhc2VVcGRhdGU9cixlLnNoYXJlZC5wZW5kaW5nPW51bGx9d2hpbGUoMSk7bnVsbD09PW0mJihrPXEpO2UuYmFzZVN0YXRlPWs7ZS5maXJzdEJhc2VVcGRhdGU9bDtlLmxhc3RCYXNlVXBkYXRlPW07Yj1lLnNoYXJlZC5pbnRlcmxlYXZlZDtpZihudWxsIT09Yil7ZT1iO2RvIGd8PWUubGFuZSxlPWUubmV4dDt3aGlsZShlIT09Yil9ZWxzZSBudWxsPT09ZiYmKGUuc2hhcmVkLmxhbmVzPTApO2hofD1nO2EubGFuZXM9ZzthLm1lbW9pemVkU3RhdGU9cX19XG5mdW5jdGlvbiBpaChhLGIsYyl7YT1iLmVmZmVjdHM7Yi5lZmZlY3RzPW51bGw7aWYobnVsbCE9PWEpZm9yKGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGQ9YVtiXSxlPWQuY2FsbGJhY2s7aWYobnVsbCE9PWUpe2QuY2FsbGJhY2s9bnVsbDtkPWM7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGUpdGhyb3cgRXJyb3IocCgxOTEsZSkpO2UuY2FsbChkKX19fXZhciBqaD0obmV3IGFhLkNvbXBvbmVudCkucmVmcztmdW5jdGlvbiBraChhLGIsYyxkKXtiPWEubWVtb2l6ZWRTdGF0ZTtjPWMoZCxiKTtjPW51bGw9PT1jfHx2b2lkIDA9PT1jP2I6QSh7fSxiLGMpO2EubWVtb2l6ZWRTdGF0ZT1jOzA9PT1hLmxhbmVzJiYoYS51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9Yyl9XG52YXIgbmg9e2lzTW91bnRlZDpmdW5jdGlvbihhKXtyZXR1cm4oYT1hLl9yZWFjdEludGVybmFscyk/VmIoYSk9PT1hOiExfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oYSxiLGMpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGQ9TCgpLGU9bGgoYSksZj1jaChkLGUpO2YucGF5bG9hZD1iO3ZvaWQgMCE9PWMmJm51bGwhPT1jJiYoZi5jYWxsYmFjaz1jKTtiPWRoKGEsZixlKTtudWxsIT09YiYmKG1oKGIsYSxlLGQpLGVoKGIsYSxlKSl9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oYSxiLGMpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGQ9TCgpLGU9bGgoYSksZj1jaChkLGUpO2YudGFnPTE7Zi5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihmLmNhbGxiYWNrPWMpO2I9ZGgoYSxmLGUpO251bGwhPT1iJiYobWgoYixhLGUsZCksZWgoYixhLGUpKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGEsYil7YT1hLl9yZWFjdEludGVybmFsczt2YXIgYz1MKCksZD1cbmxoKGEpLGU9Y2goYyxkKTtlLnRhZz0yO3ZvaWQgMCE9PWImJm51bGwhPT1iJiYoZS5jYWxsYmFjaz1iKTtiPWRoKGEsZSxkKTtudWxsIT09YiYmKG1oKGIsYSxkLGMpLGVoKGIsYSxkKSl9fTtmdW5jdGlvbiBvaChhLGIsYyxkLGUsZixnKXthPWEuc3RhdGVOb2RlO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLnNob3VsZENvbXBvbmVudFVwZGF0ZT9hLnNob3VsZENvbXBvbmVudFVwZGF0ZShkLGYsZyk6Yi5wcm90b3R5cGUmJmIucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PyFJZShjLGQpfHwhSWUoZSxmKTohMH1cbmZ1bmN0aW9uIHBoKGEsYixjKXt2YXIgZD0hMSxlPVZmO3ZhciBmPWIuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09Zj9mPVZnKGYpOihlPVpmKGIpP1hmOkguY3VycmVudCxkPWIuY29udGV4dFR5cGVzLGY9KGQ9bnVsbCE9PWQmJnZvaWQgMCE9PWQpP1lmKGEsZSk6VmYpO2I9bmV3IGIoYyxmKTthLm1lbW9pemVkU3RhdGU9bnVsbCE9PWIuc3RhdGUmJnZvaWQgMCE9PWIuc3RhdGU/Yi5zdGF0ZTpudWxsO2IudXBkYXRlcj1uaDthLnN0YXRlTm9kZT1iO2IuX3JlYWN0SW50ZXJuYWxzPWE7ZCYmKGE9YS5zdGF0ZU5vZGUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PWUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1mKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIHFoKGEsYixjLGQpe2E9Yi5zdGF0ZTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZiLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxkKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmYi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGQpO2Iuc3RhdGUhPT1hJiZuaC5lbnF1ZXVlUmVwbGFjZVN0YXRlKGIsYi5zdGF0ZSxudWxsKX1cbmZ1bmN0aW9uIHJoKGEsYixjLGQpe3ZhciBlPWEuc3RhdGVOb2RlO2UucHJvcHM9YztlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtlLnJlZnM9amg7YWgoYSk7dmFyIGY9Yi5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mP2UuY29udGV4dD1WZyhmKTooZj1aZihiKT9YZjpILmN1cnJlbnQsZS5jb250ZXh0PVlmKGEsZikpO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2Y9Yi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XCJmdW5jdGlvblwiPT09dHlwZW9mIGYmJihraChhLGIsZixjKSxlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGUuY29tcG9uZW50V2lsbE1vdW50fHwoYj1lLnN0YXRlLFxuXCJmdW5jdGlvblwiPT09dHlwZW9mIGUuY29tcG9uZW50V2lsbE1vdW50JiZlLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLGIhPT1lLnN0YXRlJiZuaC5lbnF1ZXVlUmVwbGFjZVN0YXRlKGUsZS5zdGF0ZSxudWxsKSxnaChhLGMsZSxkKSxlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGUuY29tcG9uZW50RGlkTW91bnQmJihhLmZsYWdzfD00MTk0MzA4KX1cbmZ1bmN0aW9uIHNoKGEsYixjKXthPWMucmVmO2lmKG51bGwhPT1hJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmXCJvYmplY3RcIiE9PXR5cGVvZiBhKXtpZihjLl9vd25lcil7Yz1jLl9vd25lcjtpZihjKXtpZigxIT09Yy50YWcpdGhyb3cgRXJyb3IocCgzMDkpKTt2YXIgZD1jLnN0YXRlTm9kZX1pZighZCl0aHJvdyBFcnJvcihwKDE0NyxhKSk7dmFyIGU9ZCxmPVwiXCIrYTtpZihudWxsIT09YiYmbnVsbCE9PWIucmVmJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5yZWYmJmIucmVmLl9zdHJpbmdSZWY9PT1mKXJldHVybiBiLnJlZjtiPWZ1bmN0aW9uKGEpe3ZhciBiPWUucmVmcztiPT09amgmJihiPWUucmVmcz17fSk7bnVsbD09PWE/ZGVsZXRlIGJbZl06YltmXT1hfTtiLl9zdHJpbmdSZWY9ZjtyZXR1cm4gYn1pZihcInN0cmluZ1wiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IocCgyODQpKTtpZighYy5fb3duZXIpdGhyb3cgRXJyb3IocCgyOTAsYSkpO31yZXR1cm4gYX1cbmZ1bmN0aW9uIHRoKGEsYil7YT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYik7dGhyb3cgRXJyb3IocCgzMSxcIltvYmplY3QgT2JqZWN0XVwiPT09YT9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKGIpLmpvaW4oXCIsIFwiKStcIn1cIjphKSk7fWZ1bmN0aW9uIHVoKGEpe3ZhciBiPWEuX2luaXQ7cmV0dXJuIGIoYS5fcGF5bG9hZCl9XG5mdW5jdGlvbiB2aChhKXtmdW5jdGlvbiBiKGIsYyl7aWYoYSl7dmFyIGQ9Yi5kZWxldGlvbnM7bnVsbD09PWQ/KGIuZGVsZXRpb25zPVtjXSxiLmZsYWdzfD0xNik6ZC5wdXNoKGMpfX1mdW5jdGlvbiBjKGMsZCl7aWYoIWEpcmV0dXJuIG51bGw7Zm9yKDtudWxsIT09ZDspYihjLGQpLGQ9ZC5zaWJsaW5nO3JldHVybiBudWxsfWZ1bmN0aW9uIGQoYSxiKXtmb3IoYT1uZXcgTWFwO251bGwhPT1iOyludWxsIT09Yi5rZXk/YS5zZXQoYi5rZXksYik6YS5zZXQoYi5pbmRleCxiKSxiPWIuc2libGluZztyZXR1cm4gYX1mdW5jdGlvbiBlKGEsYil7YT13aChhLGIpO2EuaW5kZXg9MDthLnNpYmxpbmc9bnVsbDtyZXR1cm4gYX1mdW5jdGlvbiBmKGIsYyxkKXtiLmluZGV4PWQ7aWYoIWEpcmV0dXJuIGIuZmxhZ3N8PTEwNDg1NzYsYztkPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1kKXJldHVybiBkPWQuaW5kZXgsZDxjPyhiLmZsYWdzfD0yLGMpOmQ7Yi5mbGFnc3w9MjtyZXR1cm4gY31mdW5jdGlvbiBnKGIpe2EmJlxubnVsbD09PWIuYWx0ZXJuYXRlJiYoYi5mbGFnc3w9Mik7cmV0dXJuIGJ9ZnVuY3Rpb24gaChhLGIsYyxkKXtpZihudWxsPT09Ynx8NiE9PWIudGFnKXJldHVybiBiPXhoKGMsYS5tb2RlLGQpLGIucmV0dXJuPWEsYjtiPWUoYixjKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIGsoYSxiLGMsZCl7dmFyIGY9Yy50eXBlO2lmKGY9PT15YSlyZXR1cm4gbShhLGIsYy5wcm9wcy5jaGlsZHJlbixkLGMua2V5KTtpZihudWxsIT09YiYmKGIuZWxlbWVudFR5cGU9PT1mfHxcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZmLiQkdHlwZW9mPT09SGEmJnVoKGYpPT09Yi50eXBlKSlyZXR1cm4gZD1lKGIsYy5wcm9wcyksZC5yZWY9c2goYSxiLGMpLGQucmV0dXJuPWEsZDtkPXloKGMudHlwZSxjLmtleSxjLnByb3BzLG51bGwsYS5tb2RlLGQpO2QucmVmPXNoKGEsYixjKTtkLnJldHVybj1hO3JldHVybiBkfWZ1bmN0aW9uIGwoYSxiLGMsZCl7aWYobnVsbD09PWJ8fDQhPT1iLnRhZ3x8XG5iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvIT09Yy5jb250YWluZXJJbmZvfHxiLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiE9PWMuaW1wbGVtZW50YXRpb24pcmV0dXJuIGI9emgoYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMuY2hpbGRyZW58fFtdKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIG0oYSxiLGMsZCxmKXtpZihudWxsPT09Ynx8NyE9PWIudGFnKXJldHVybiBiPUFoKGMsYS5tb2RlLGQsZiksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gcShhLGIsYyl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBiJiZcIlwiIT09Ynx8XCJudW1iZXJcIj09PXR5cGVvZiBiKXJldHVybiBiPXhoKFwiXCIrYixhLm1vZGUsYyksYi5yZXR1cm49YSxiO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYiYmbnVsbCE9PWIpe3N3aXRjaChiLiQkdHlwZW9mKXtjYXNlIHZhOnJldHVybiBjPXloKGIudHlwZSxiLmtleSxiLnByb3BzLG51bGwsYS5tb2RlLGMpLFxuYy5yZWY9c2goYSxudWxsLGIpLGMucmV0dXJuPWEsYztjYXNlIHdhOnJldHVybiBiPXpoKGIsYS5tb2RlLGMpLGIucmV0dXJuPWEsYjtjYXNlIEhhOnZhciBkPWIuX2luaXQ7cmV0dXJuIHEoYSxkKGIuX3BheWxvYWQpLGMpfWlmKGViKGIpfHxLYShiKSlyZXR1cm4gYj1BaChiLGEubW9kZSxjLG51bGwpLGIucmV0dXJuPWEsYjt0aChhLGIpfXJldHVybiBudWxsfWZ1bmN0aW9uIHIoYSxiLGMsZCl7dmFyIGU9bnVsbCE9PWI/Yi5rZXk6bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGMmJlwiXCIhPT1jfHxcIm51bWJlclwiPT09dHlwZW9mIGMpcmV0dXJuIG51bGwhPT1lP251bGw6aChhLGIsXCJcIitjLGQpO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWMpe3N3aXRjaChjLiQkdHlwZW9mKXtjYXNlIHZhOnJldHVybiBjLmtleT09PWU/ayhhLGIsYyxkKTpudWxsO2Nhc2Ugd2E6cmV0dXJuIGMua2V5PT09ZT9sKGEsYixjLGQpOm51bGw7Y2FzZSBIYTpyZXR1cm4gZT1jLl9pbml0LHIoYSxcbmIsZShjLl9wYXlsb2FkKSxkKX1pZihlYihjKXx8S2EoYykpcmV0dXJuIG51bGwhPT1lP251bGw6bShhLGIsYyxkLG51bGwpO3RoKGEsYyl9cmV0dXJuIG51bGx9ZnVuY3Rpb24geShhLGIsYyxkLGUpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgZCYmXCJcIiE9PWR8fFwibnVtYmVyXCI9PT10eXBlb2YgZClyZXR1cm4gYT1hLmdldChjKXx8bnVsbCxoKGIsYSxcIlwiK2QsZSk7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBkJiZudWxsIT09ZCl7c3dpdGNoKGQuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGE9YS5nZXQobnVsbD09PWQua2V5P2M6ZC5rZXkpfHxudWxsLGsoYixhLGQsZSk7Y2FzZSB3YTpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk/YzpkLmtleSl8fG51bGwsbChiLGEsZCxlKTtjYXNlIEhhOnZhciBmPWQuX2luaXQ7cmV0dXJuIHkoYSxiLGMsZihkLl9wYXlsb2FkKSxlKX1pZihlYihkKXx8S2EoZCkpcmV0dXJuIGE9YS5nZXQoYyl8fG51bGwsbShiLGEsZCxlLG51bGwpO3RoKGIsZCl9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBuKGUsZyxoLGspe2Zvcih2YXIgbD1udWxsLG09bnVsbCx1PWcsdz1nPTAseD1udWxsO251bGwhPT11JiZ3PGgubGVuZ3RoO3crKyl7dS5pbmRleD53Pyh4PXUsdT1udWxsKTp4PXUuc2libGluZzt2YXIgbj1yKGUsdSxoW3ddLGspO2lmKG51bGw9PT1uKXtudWxsPT09dSYmKHU9eCk7YnJlYWt9YSYmdSYmbnVsbD09PW4uYWx0ZXJuYXRlJiZiKGUsdSk7Zz1mKG4sZyx3KTtudWxsPT09bT9sPW46bS5zaWJsaW5nPW47bT1uO3U9eH1pZih3PT09aC5sZW5ndGgpcmV0dXJuIGMoZSx1KSxJJiZ0ZyhlLHcpLGw7aWYobnVsbD09PXUpe2Zvcig7dzxoLmxlbmd0aDt3KyspdT1xKGUsaFt3XSxrKSxudWxsIT09dSYmKGc9Zih1LGcsdyksbnVsbD09PW0/bD11Om0uc2libGluZz11LG09dSk7SSYmdGcoZSx3KTtyZXR1cm4gbH1mb3IodT1kKGUsdSk7dzxoLmxlbmd0aDt3KyspeD15KHUsZSx3LGhbd10sayksbnVsbCE9PXgmJihhJiZudWxsIT09eC5hbHRlcm5hdGUmJnUuZGVsZXRlKG51bGw9PT1cbngua2V5P3c6eC5rZXkpLGc9Zih4LGcsdyksbnVsbD09PW0/bD14Om0uc2libGluZz14LG09eCk7YSYmdS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBiKGUsYSl9KTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZ1bmN0aW9uIHQoZSxnLGgsayl7dmFyIGw9S2EoaCk7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGwpdGhyb3cgRXJyb3IocCgxNTApKTtoPWwuY2FsbChoKTtpZihudWxsPT1oKXRocm93IEVycm9yKHAoMTUxKSk7Zm9yKHZhciB1PWw9bnVsbCxtPWcsdz1nPTAseD1udWxsLG49aC5uZXh0KCk7bnVsbCE9PW0mJiFuLmRvbmU7dysrLG49aC5uZXh0KCkpe20uaW5kZXg+dz8oeD1tLG09bnVsbCk6eD1tLnNpYmxpbmc7dmFyIHQ9cihlLG0sbi52YWx1ZSxrKTtpZihudWxsPT09dCl7bnVsbD09PW0mJihtPXgpO2JyZWFrfWEmJm0mJm51bGw9PT10LmFsdGVybmF0ZSYmYihlLG0pO2c9Zih0LGcsdyk7bnVsbD09PXU/bD10OnUuc2libGluZz10O3U9dDttPXh9aWYobi5kb25lKXJldHVybiBjKGUsXG5tKSxJJiZ0ZyhlLHcpLGw7aWYobnVsbD09PW0pe2Zvcig7IW4uZG9uZTt3Kyssbj1oLm5leHQoKSluPXEoZSxuLnZhbHVlLGspLG51bGwhPT1uJiYoZz1mKG4sZyx3KSxudWxsPT09dT9sPW46dS5zaWJsaW5nPW4sdT1uKTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZvcihtPWQoZSxtKTshbi5kb25lO3crKyxuPWgubmV4dCgpKW49eShtLGUsdyxuLnZhbHVlLGspLG51bGwhPT1uJiYoYSYmbnVsbCE9PW4uYWx0ZXJuYXRlJiZtLmRlbGV0ZShudWxsPT09bi5rZXk/dzpuLmtleSksZz1mKG4sZyx3KSxudWxsPT09dT9sPW46dS5zaWJsaW5nPW4sdT1uKTthJiZtLmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGIoZSxhKX0pO0kmJnRnKGUsdyk7cmV0dXJuIGx9ZnVuY3Rpb24gSihhLGQsZixoKXtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZmLnR5cGU9PT15YSYmbnVsbD09PWYua2V5JiYoZj1mLnByb3BzLmNoaWxkcmVuKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mKXtzd2l0Y2goZi4kJHR5cGVvZil7Y2FzZSB2YTphOntmb3IodmFyIGs9XG5mLmtleSxsPWQ7bnVsbCE9PWw7KXtpZihsLmtleT09PWspe2s9Zi50eXBlO2lmKGs9PT15YSl7aWYoNz09PWwudGFnKXtjKGEsbC5zaWJsaW5nKTtkPWUobCxmLnByb3BzLmNoaWxkcmVuKTtkLnJldHVybj1hO2E9ZDticmVhayBhfX1lbHNlIGlmKGwuZWxlbWVudFR5cGU9PT1rfHxcIm9iamVjdFwiPT09dHlwZW9mIGsmJm51bGwhPT1rJiZrLiQkdHlwZW9mPT09SGEmJnVoKGspPT09bC50eXBlKXtjKGEsbC5zaWJsaW5nKTtkPWUobCxmLnByb3BzKTtkLnJlZj1zaChhLGwsZik7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1jKGEsbCk7YnJlYWt9ZWxzZSBiKGEsbCk7bD1sLnNpYmxpbmd9Zi50eXBlPT09eWE/KGQ9QWgoZi5wcm9wcy5jaGlsZHJlbixhLm1vZGUsaCxmLmtleSksZC5yZXR1cm49YSxhPWQpOihoPXloKGYudHlwZSxmLmtleSxmLnByb3BzLG51bGwsYS5tb2RlLGgpLGgucmVmPXNoKGEsZCxmKSxoLnJldHVybj1hLGE9aCl9cmV0dXJuIGcoYSk7Y2FzZSB3YTphOntmb3IobD1mLmtleTtudWxsIT09XG5kOyl7aWYoZC5rZXk9PT1sKWlmKDQ9PT1kLnRhZyYmZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbz09PWYuY29udGFpbmVySW5mbyYmZC5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb249PT1mLmltcGxlbWVudGF0aW9uKXtjKGEsZC5zaWJsaW5nKTtkPWUoZCxmLmNoaWxkcmVufHxbXSk7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1lbHNle2MoYSxkKTticmVha31lbHNlIGIoYSxkKTtkPWQuc2libGluZ31kPXpoKGYsYS5tb2RlLGgpO2QucmV0dXJuPWE7YT1kfXJldHVybiBnKGEpO2Nhc2UgSGE6cmV0dXJuIGw9Zi5faW5pdCxKKGEsZCxsKGYuX3BheWxvYWQpLGgpfWlmKGViKGYpKXJldHVybiBuKGEsZCxmLGgpO2lmKEthKGYpKXJldHVybiB0KGEsZCxmLGgpO3RoKGEsZil9cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBmJiZcIlwiIT09Znx8XCJudW1iZXJcIj09PXR5cGVvZiBmPyhmPVwiXCIrZixudWxsIT09ZCYmNj09PWQudGFnPyhjKGEsZC5zaWJsaW5nKSxkPWUoZCxmKSxkLnJldHVybj1hLGE9ZCk6XG4oYyhhLGQpLGQ9eGgoZixhLm1vZGUsaCksZC5yZXR1cm49YSxhPWQpLGcoYSkpOmMoYSxkKX1yZXR1cm4gSn12YXIgQmg9dmgoITApLENoPXZoKCExKSxEaD17fSxFaD1VZihEaCksRmg9VWYoRGgpLEdoPVVmKERoKTtmdW5jdGlvbiBIaChhKXtpZihhPT09RGgpdGhyb3cgRXJyb3IocCgxNzQpKTtyZXR1cm4gYX1mdW5jdGlvbiBJaChhLGIpe0coR2gsYik7RyhGaCxhKTtHKEVoLERoKTthPWIubm9kZVR5cGU7c3dpdGNoKGEpe2Nhc2UgOTpjYXNlIDExOmI9KGI9Yi5kb2N1bWVudEVsZW1lbnQpP2IubmFtZXNwYWNlVVJJOmxiKG51bGwsXCJcIik7YnJlYWs7ZGVmYXVsdDphPTg9PT1hP2IucGFyZW50Tm9kZTpiLGI9YS5uYW1lc3BhY2VVUkl8fG51bGwsYT1hLnRhZ05hbWUsYj1sYihiLGEpfUUoRWgpO0coRWgsYil9ZnVuY3Rpb24gSmgoKXtFKEVoKTtFKEZoKTtFKEdoKX1cbmZ1bmN0aW9uIEtoKGEpe0hoKEdoLmN1cnJlbnQpO3ZhciBiPUhoKEVoLmN1cnJlbnQpO3ZhciBjPWxiKGIsYS50eXBlKTtiIT09YyYmKEcoRmgsYSksRyhFaCxjKSl9ZnVuY3Rpb24gTGgoYSl7RmguY3VycmVudD09PWEmJihFKEVoKSxFKEZoKSl9dmFyIE09VWYoMCk7XG5mdW5jdGlvbiBNaChhKXtmb3IodmFyIGI9YTtudWxsIT09Yjspe2lmKDEzPT09Yi50YWcpe3ZhciBjPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YyYmKGM9Yy5kZWh5ZHJhdGVkLG51bGw9PT1jfHxcIiQ/XCI9PT1jLmRhdGF8fFwiJCFcIj09PWMuZGF0YSkpcmV0dXJuIGJ9ZWxzZSBpZigxOT09PWIudGFnJiZ2b2lkIDAhPT1iLm1lbW9pemVkUHJvcHMucmV2ZWFsT3JkZXIpe2lmKDAhPT0oYi5mbGFncyYxMjgpKXJldHVybiBifWVsc2UgaWYobnVsbCE9PWIuY2hpbGQpe2IuY2hpbGQucmV0dXJuPWI7Yj1iLmNoaWxkO2NvbnRpbnVlfWlmKGI9PT1hKWJyZWFrO2Zvcig7bnVsbD09PWIuc2libGluZzspe2lmKG51bGw9PT1iLnJldHVybnx8Yi5yZXR1cm49PT1hKXJldHVybiBudWxsO2I9Yi5yZXR1cm59Yi5zaWJsaW5nLnJldHVybj1iLnJldHVybjtiPWIuc2libGluZ31yZXR1cm4gbnVsbH12YXIgTmg9W107XG5mdW5jdGlvbiBPaCgpe2Zvcih2YXIgYT0wO2E8TmgubGVuZ3RoO2ErKylOaFthXS5fd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeT1udWxsO05oLmxlbmd0aD0wfXZhciBQaD11YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLFFoPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLFJoPTAsTj1udWxsLE89bnVsbCxQPW51bGwsU2g9ITEsVGg9ITEsVWg9MCxWaD0wO2Z1bmN0aW9uIFEoKXt0aHJvdyBFcnJvcihwKDMyMSkpO31mdW5jdGlvbiBXaChhLGIpe2lmKG51bGw9PT1iKXJldHVybiExO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGgmJmM8YS5sZW5ndGg7YysrKWlmKCFIZShhW2NdLGJbY10pKXJldHVybiExO3JldHVybiEwfVxuZnVuY3Rpb24gWGgoYSxiLGMsZCxlLGYpe1JoPWY7Tj1iO2IubWVtb2l6ZWRTdGF0ZT1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtiLmxhbmVzPTA7UGguY3VycmVudD1udWxsPT09YXx8bnVsbD09PWEubWVtb2l6ZWRTdGF0ZT9ZaDpaaDthPWMoZCxlKTtpZihUaCl7Zj0wO2Rve1RoPSExO1VoPTA7aWYoMjU8PWYpdGhyb3cgRXJyb3IocCgzMDEpKTtmKz0xO1A9Tz1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtQaC5jdXJyZW50PSRoO2E9YyhkLGUpfXdoaWxlKFRoKX1QaC5jdXJyZW50PWFpO2I9bnVsbCE9PU8mJm51bGwhPT1PLm5leHQ7Umg9MDtQPU89Tj1udWxsO1NoPSExO2lmKGIpdGhyb3cgRXJyb3IocCgzMDApKTtyZXR1cm4gYX1mdW5jdGlvbiBiaSgpe3ZhciBhPTAhPT1VaDtVaD0wO3JldHVybiBhfVxuZnVuY3Rpb24gY2koKXt2YXIgYT17bWVtb2l6ZWRTdGF0ZTpudWxsLGJhc2VTdGF0ZTpudWxsLGJhc2VRdWV1ZTpudWxsLHF1ZXVlOm51bGwsbmV4dDpudWxsfTtudWxsPT09UD9OLm1lbW9pemVkU3RhdGU9UD1hOlA9UC5uZXh0PWE7cmV0dXJuIFB9ZnVuY3Rpb24gZGkoKXtpZihudWxsPT09Tyl7dmFyIGE9Ti5hbHRlcm5hdGU7YT1udWxsIT09YT9hLm1lbW9pemVkU3RhdGU6bnVsbH1lbHNlIGE9Ty5uZXh0O3ZhciBiPW51bGw9PT1QP04ubWVtb2l6ZWRTdGF0ZTpQLm5leHQ7aWYobnVsbCE9PWIpUD1iLE89YTtlbHNle2lmKG51bGw9PT1hKXRocm93IEVycm9yKHAoMzEwKSk7Tz1hO2E9e21lbW9pemVkU3RhdGU6Ty5tZW1vaXplZFN0YXRlLGJhc2VTdGF0ZTpPLmJhc2VTdGF0ZSxiYXNlUXVldWU6Ty5iYXNlUXVldWUscXVldWU6Ty5xdWV1ZSxuZXh0Om51bGx9O251bGw9PT1QP04ubWVtb2l6ZWRTdGF0ZT1QPWE6UD1QLm5leHQ9YX1yZXR1cm4gUH1cbmZ1bmN0aW9uIGVpKGEsYil7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGI/YihhKTpifVxuZnVuY3Rpb24gZmkoYSl7dmFyIGI9ZGkoKSxjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IocCgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1PLGU9ZC5iYXNlUXVldWUsZj1jLnBlbmRpbmc7aWYobnVsbCE9PWYpe2lmKG51bGwhPT1lKXt2YXIgZz1lLm5leHQ7ZS5uZXh0PWYubmV4dDtmLm5leHQ9Z31kLmJhc2VRdWV1ZT1lPWY7Yy5wZW5kaW5nPW51bGx9aWYobnVsbCE9PWUpe2Y9ZS5uZXh0O2Q9ZC5iYXNlU3RhdGU7dmFyIGg9Zz1udWxsLGs9bnVsbCxsPWY7ZG97dmFyIG09bC5sYW5lO2lmKChSaCZtKT09PW0pbnVsbCE9PWsmJihrPWsubmV4dD17bGFuZTowLGFjdGlvbjpsLmFjdGlvbixoYXNFYWdlclN0YXRlOmwuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOmwuZWFnZXJTdGF0ZSxuZXh0Om51bGx9KSxkPWwuaGFzRWFnZXJTdGF0ZT9sLmVhZ2VyU3RhdGU6YShkLGwuYWN0aW9uKTtlbHNle3ZhciBxPXtsYW5lOm0sYWN0aW9uOmwuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6bC5oYXNFYWdlclN0YXRlLFxuZWFnZXJTdGF0ZTpsLmVhZ2VyU3RhdGUsbmV4dDpudWxsfTtudWxsPT09az8oaD1rPXEsZz1kKTprPWsubmV4dD1xO04ubGFuZXN8PW07aGh8PW19bD1sLm5leHR9d2hpbGUobnVsbCE9PWwmJmwhPT1mKTtudWxsPT09az9nPWQ6ay5uZXh0PWg7SGUoZCxiLm1lbW9pemVkU3RhdGUpfHwoVWc9ITApO2IubWVtb2l6ZWRTdGF0ZT1kO2IuYmFzZVN0YXRlPWc7Yi5iYXNlUXVldWU9aztjLmxhc3RSZW5kZXJlZFN0YXRlPWR9YT1jLmludGVybGVhdmVkO2lmKG51bGwhPT1hKXtlPWE7ZG8gZj1lLmxhbmUsTi5sYW5lc3w9ZixoaHw9ZixlPWUubmV4dDt3aGlsZShlIT09YSl9ZWxzZSBudWxsPT09ZSYmKGMubGFuZXM9MCk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxjLmRpc3BhdGNoXX1cbmZ1bmN0aW9uIGdpKGEpe3ZhciBiPWRpKCksYz1iLnF1ZXVlO2lmKG51bGw9PT1jKXRocm93IEVycm9yKHAoMzExKSk7Yy5sYXN0UmVuZGVyZWRSZWR1Y2VyPWE7dmFyIGQ9Yy5kaXNwYXRjaCxlPWMucGVuZGluZyxmPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZSl7Yy5wZW5kaW5nPW51bGw7dmFyIGc9ZT1lLm5leHQ7ZG8gZj1hKGYsZy5hY3Rpb24pLGc9Zy5uZXh0O3doaWxlKGchPT1lKTtIZShmLGIubWVtb2l6ZWRTdGF0ZSl8fChVZz0hMCk7Yi5tZW1vaXplZFN0YXRlPWY7bnVsbD09PWIuYmFzZVF1ZXVlJiYoYi5iYXNlU3RhdGU9Zik7Yy5sYXN0UmVuZGVyZWRTdGF0ZT1mfXJldHVybltmLGRdfWZ1bmN0aW9uIGhpKCl7fVxuZnVuY3Rpb24gaWkoYSxiKXt2YXIgYz1OLGQ9ZGkoKSxlPWIoKSxmPSFIZShkLm1lbW9pemVkU3RhdGUsZSk7ZiYmKGQubWVtb2l6ZWRTdGF0ZT1lLFVnPSEwKTtkPWQucXVldWU7amkoa2kuYmluZChudWxsLGMsZCxhKSxbYV0pO2lmKGQuZ2V0U25hcHNob3QhPT1ifHxmfHxudWxsIT09UCYmUC5tZW1vaXplZFN0YXRlLnRhZyYxKXtjLmZsYWdzfD0yMDQ4O2xpKDksbWkuYmluZChudWxsLGMsZCxlLGIpLHZvaWQgMCxudWxsKTtpZihudWxsPT09Uil0aHJvdyBFcnJvcihwKDM0OSkpOzAhPT0oUmgmMzApfHxuaShjLGIsZSl9cmV0dXJuIGV9ZnVuY3Rpb24gbmkoYSxiLGMpe2EuZmxhZ3N8PTE2Mzg0O2E9e2dldFNuYXBzaG90OmIsdmFsdWU6Y307Yj1OLnVwZGF0ZVF1ZXVlO251bGw9PT1iPyhiPXtsYXN0RWZmZWN0Om51bGwsc3RvcmVzOm51bGx9LE4udXBkYXRlUXVldWU9YixiLnN0b3Jlcz1bYV0pOihjPWIuc3RvcmVzLG51bGw9PT1jP2Iuc3RvcmVzPVthXTpjLnB1c2goYSkpfVxuZnVuY3Rpb24gbWkoYSxiLGMsZCl7Yi52YWx1ZT1jO2IuZ2V0U25hcHNob3Q9ZDtvaShiKSYmcGkoYSl9ZnVuY3Rpb24ga2koYSxiLGMpe3JldHVybiBjKGZ1bmN0aW9uKCl7b2koYikmJnBpKGEpfSl9ZnVuY3Rpb24gb2koYSl7dmFyIGI9YS5nZXRTbmFwc2hvdDthPWEudmFsdWU7dHJ5e3ZhciBjPWIoKTtyZXR1cm4hSGUoYSxjKX1jYXRjaChkKXtyZXR1cm4hMH19ZnVuY3Rpb24gcGkoYSl7dmFyIGI9WmcoYSwxKTtudWxsIT09YiYmbWgoYixhLDEsLTEpfVxuZnVuY3Rpb24gcWkoYSl7dmFyIGI9Y2koKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSYmKGE9YSgpKTtiLm1lbW9pemVkU3RhdGU9Yi5iYXNlU3RhdGU9YTthPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjplaSxsYXN0UmVuZGVyZWRTdGF0ZTphfTtiLnF1ZXVlPWE7YT1hLmRpc3BhdGNoPXJpLmJpbmQobnVsbCxOLGEpO3JldHVybltiLm1lbW9pemVkU3RhdGUsYV19XG5mdW5jdGlvbiBsaShhLGIsYyxkKXthPXt0YWc6YSxjcmVhdGU6YixkZXN0cm95OmMsZGVwczpkLG5leHQ6bnVsbH07Yj1OLnVwZGF0ZVF1ZXVlO251bGw9PT1iPyhiPXtsYXN0RWZmZWN0Om51bGwsc3RvcmVzOm51bGx9LE4udXBkYXRlUXVldWU9YixiLmxhc3RFZmZlY3Q9YS5uZXh0PWEpOihjPWIubGFzdEVmZmVjdCxudWxsPT09Yz9iLmxhc3RFZmZlY3Q9YS5uZXh0PWE6KGQ9Yy5uZXh0LGMubmV4dD1hLGEubmV4dD1kLGIubGFzdEVmZmVjdD1hKSk7cmV0dXJuIGF9ZnVuY3Rpb24gc2koKXtyZXR1cm4gZGkoKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIHRpKGEsYixjLGQpe3ZhciBlPWNpKCk7Ti5mbGFnc3w9YTtlLm1lbW9pemVkU3RhdGU9bGkoMXxiLGMsdm9pZCAwLHZvaWQgMD09PWQ/bnVsbDpkKX1cbmZ1bmN0aW9uIHVpKGEsYixjLGQpe3ZhciBlPWRpKCk7ZD12b2lkIDA9PT1kP251bGw6ZDt2YXIgZj12b2lkIDA7aWYobnVsbCE9PU8pe3ZhciBnPU8ubWVtb2l6ZWRTdGF0ZTtmPWcuZGVzdHJveTtpZihudWxsIT09ZCYmV2goZCxnLmRlcHMpKXtlLm1lbW9pemVkU3RhdGU9bGkoYixjLGYsZCk7cmV0dXJufX1OLmZsYWdzfD1hO2UubWVtb2l6ZWRTdGF0ZT1saSgxfGIsYyxmLGQpfWZ1bmN0aW9uIHZpKGEsYil7cmV0dXJuIHRpKDgzOTA2NTYsOCxhLGIpfWZ1bmN0aW9uIGppKGEsYil7cmV0dXJuIHVpKDIwNDgsOCxhLGIpfWZ1bmN0aW9uIHdpKGEsYil7cmV0dXJuIHVpKDQsMixhLGIpfWZ1bmN0aW9uIHhpKGEsYil7cmV0dXJuIHVpKDQsNCxhLGIpfVxuZnVuY3Rpb24geWkoYSxiKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYilyZXR1cm4gYT1hKCksYihhKSxmdW5jdGlvbigpe2IobnVsbCl9O2lmKG51bGwhPT1iJiZ2b2lkIDAhPT1iKXJldHVybiBhPWEoKSxiLmN1cnJlbnQ9YSxmdW5jdGlvbigpe2IuY3VycmVudD1udWxsfX1mdW5jdGlvbiB6aShhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIHVpKDQsNCx5aS5iaW5kKG51bGwsYixhKSxjKX1mdW5jdGlvbiBBaSgpe31mdW5jdGlvbiBCaShhLGIpe3ZhciBjPWRpKCk7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgZD1jLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1iJiZXaChiLGRbMV0pKXJldHVybiBkWzBdO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1cbmZ1bmN0aW9uIENpKGEsYil7dmFyIGM9ZGkoKTtiPXZvaWQgMD09PWI/bnVsbDpiO3ZhciBkPWMubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCYmbnVsbCE9PWImJldoKGIsZFsxXSkpcmV0dXJuIGRbMF07YT1hKCk7Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfWZ1bmN0aW9uIERpKGEsYixjKXtpZigwPT09KFJoJjIxKSlyZXR1cm4gYS5iYXNlU3RhdGUmJihhLmJhc2VTdGF0ZT0hMSxVZz0hMCksYS5tZW1vaXplZFN0YXRlPWM7SGUoYyxiKXx8KGM9eWMoKSxOLmxhbmVzfD1jLGhofD1jLGEuYmFzZVN0YXRlPSEwKTtyZXR1cm4gYn1mdW5jdGlvbiBFaShhLGIpe3ZhciBjPUM7Qz0wIT09YyYmND5jP2M6NDthKCEwKTt2YXIgZD1RaC50cmFuc2l0aW9uO1FoLnRyYW5zaXRpb249e307dHJ5e2EoITEpLGIoKX1maW5hbGx5e0M9YyxRaC50cmFuc2l0aW9uPWR9fWZ1bmN0aW9uIEZpKCl7cmV0dXJuIGRpKCkubWVtb2l6ZWRTdGF0ZX1cbmZ1bmN0aW9uIEdpKGEsYixjKXt2YXIgZD1saChhKTtjPXtsYW5lOmQsYWN0aW9uOmMsaGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZihIaShhKSlJaShiLGMpO2Vsc2UgaWYoYz1ZZyhhLGIsYyxkKSxudWxsIT09Yyl7dmFyIGU9TCgpO21oKGMsYSxkLGUpO0ppKGMsYixkKX19XG5mdW5jdGlvbiByaShhLGIsYyl7dmFyIGQ9bGgoYSksZT17bGFuZTpkLGFjdGlvbjpjLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH07aWYoSGkoYSkpSWkoYixlKTtlbHNle3ZhciBmPWEuYWx0ZXJuYXRlO2lmKDA9PT1hLmxhbmVzJiYobnVsbD09PWZ8fDA9PT1mLmxhbmVzKSYmKGY9Yi5sYXN0UmVuZGVyZWRSZWR1Y2VyLG51bGwhPT1mKSl0cnl7dmFyIGc9Yi5sYXN0UmVuZGVyZWRTdGF0ZSxoPWYoZyxjKTtlLmhhc0VhZ2VyU3RhdGU9ITA7ZS5lYWdlclN0YXRlPWg7aWYoSGUoaCxnKSl7dmFyIGs9Yi5pbnRlcmxlYXZlZDtudWxsPT09az8oZS5uZXh0PWUsWGcoYikpOihlLm5leHQ9ay5uZXh0LGsubmV4dD1lKTtiLmludGVybGVhdmVkPWU7cmV0dXJufX1jYXRjaChsKXt9ZmluYWxseXt9Yz1ZZyhhLGIsZSxkKTtudWxsIT09YyYmKGU9TCgpLG1oKGMsYSxkLGUpLEppKGMsYixkKSl9fVxuZnVuY3Rpb24gSGkoYSl7dmFyIGI9YS5hbHRlcm5hdGU7cmV0dXJuIGE9PT1OfHxudWxsIT09YiYmYj09PU59ZnVuY3Rpb24gSWkoYSxiKXtUaD1TaD0hMDt2YXIgYz1hLnBlbmRpbmc7bnVsbD09PWM/Yi5uZXh0PWI6KGIubmV4dD1jLm5leHQsYy5uZXh0PWIpO2EucGVuZGluZz1ifWZ1bmN0aW9uIEppKGEsYixjKXtpZigwIT09KGMmNDE5NDI0MCkpe3ZhciBkPWIubGFuZXM7ZCY9YS5wZW5kaW5nTGFuZXM7Y3w9ZDtiLmxhbmVzPWM7Q2MoYSxjKX19XG52YXIgYWk9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOlEsdXNlQ29udGV4dDpRLHVzZUVmZmVjdDpRLHVzZUltcGVyYXRpdmVIYW5kbGU6USx1c2VJbnNlcnRpb25FZmZlY3Q6USx1c2VMYXlvdXRFZmZlY3Q6USx1c2VNZW1vOlEsdXNlUmVkdWNlcjpRLHVzZVJlZjpRLHVzZVN0YXRlOlEsdXNlRGVidWdWYWx1ZTpRLHVzZURlZmVycmVkVmFsdWU6USx1c2VUcmFuc2l0aW9uOlEsdXNlTXV0YWJsZVNvdXJjZTpRLHVzZVN5bmNFeHRlcm5hbFN0b3JlOlEsdXNlSWQ6USx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LFloPXtyZWFkQ29udGV4dDpWZyx1c2VDYWxsYmFjazpmdW5jdGlvbihhLGIpe2NpKCkubWVtb2l6ZWRTdGF0ZT1bYSx2b2lkIDA9PT1iP251bGw6Yl07cmV0dXJuIGF9LHVzZUNvbnRleHQ6VmcsdXNlRWZmZWN0OnZpLHVzZUltcGVyYXRpdmVIYW5kbGU6ZnVuY3Rpb24oYSxiLGMpe2M9bnVsbCE9PWMmJnZvaWQgMCE9PWM/Yy5jb25jYXQoW2FdKTpudWxsO3JldHVybiB0aSg0MTk0MzA4LFxuNCx5aS5iaW5kKG51bGwsYixhKSxjKX0sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRpKDQxOTQzMDgsNCxhLGIpfSx1c2VJbnNlcnRpb25FZmZlY3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGkoNCwyLGEsYil9LHVzZU1lbW86ZnVuY3Rpb24oYSxiKXt2YXIgYz1jaSgpO2I9dm9pZCAwPT09Yj9udWxsOmI7YT1hKCk7Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jaSgpO2I9dm9pZCAwIT09Yz9jKGIpOmI7ZC5tZW1vaXplZFN0YXRlPWQuYmFzZVN0YXRlPWI7YT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6YSxsYXN0UmVuZGVyZWRTdGF0ZTpifTtkLnF1ZXVlPWE7YT1hLmRpc3BhdGNoPUdpLmJpbmQobnVsbCxOLGEpO3JldHVybltkLm1lbW9pemVkU3RhdGUsYV19LHVzZVJlZjpmdW5jdGlvbihhKXt2YXIgYj1cbmNpKCk7YT17Y3VycmVudDphfTtyZXR1cm4gYi5tZW1vaXplZFN0YXRlPWF9LHVzZVN0YXRlOnFpLHVzZURlYnVnVmFsdWU6QWksdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gY2koKS5tZW1vaXplZFN0YXRlPWF9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1xaSghMSksYj1hWzBdO2E9RWkuYmluZChudWxsLGFbMV0pO2NpKCkubWVtb2l6ZWRTdGF0ZT1hO3JldHVybltiLGFdfSx1c2VNdXRhYmxlU291cmNlOmZ1bmN0aW9uKCl7fSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9TixlPWNpKCk7aWYoSSl7aWYodm9pZCAwPT09Yyl0aHJvdyBFcnJvcihwKDQwNykpO2M9YygpfWVsc2V7Yz1iKCk7aWYobnVsbD09PVIpdGhyb3cgRXJyb3IocCgzNDkpKTswIT09KFJoJjMwKXx8bmkoZCxiLGMpfWUubWVtb2l6ZWRTdGF0ZT1jO3ZhciBmPXt2YWx1ZTpjLGdldFNuYXBzaG90OmJ9O2UucXVldWU9Zjt2aShraS5iaW5kKG51bGwsZCxcbmYsYSksW2FdKTtkLmZsYWdzfD0yMDQ4O2xpKDksbWkuYmluZChudWxsLGQsZixjLGIpLHZvaWQgMCxudWxsKTtyZXR1cm4gY30sdXNlSWQ6ZnVuY3Rpb24oKXt2YXIgYT1jaSgpLGI9Ui5pZGVudGlmaWVyUHJlZml4O2lmKEkpe3ZhciBjPXNnO3ZhciBkPXJnO2M9KGQmfigxPDwzMi1vYyhkKS0xKSkudG9TdHJpbmcoMzIpK2M7Yj1cIjpcIitiK1wiUlwiK2M7Yz1VaCsrOzA8YyYmKGIrPVwiSFwiK2MudG9TdHJpbmcoMzIpKTtiKz1cIjpcIn1lbHNlIGM9VmgrKyxiPVwiOlwiK2IrXCJyXCIrYy50b1N0cmluZygzMikrXCI6XCI7cmV0dXJuIGEubWVtb2l6ZWRTdGF0ZT1ifSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LFpoPXtyZWFkQ29udGV4dDpWZyx1c2VDYWxsYmFjazpCaSx1c2VDb250ZXh0OlZnLHVzZUVmZmVjdDpqaSx1c2VJbXBlcmF0aXZlSGFuZGxlOnppLHVzZUluc2VydGlvbkVmZmVjdDp3aSx1c2VMYXlvdXRFZmZlY3Q6eGksdXNlTWVtbzpDaSx1c2VSZWR1Y2VyOmZpLHVzZVJlZjpzaSx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBmaShlaSl9LFxudXNlRGVidWdWYWx1ZTpBaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPWRpKCk7cmV0dXJuIERpKGIsTy5tZW1vaXplZFN0YXRlLGEpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9ZmkoZWkpWzBdLGI9ZGkoKS5tZW1vaXplZFN0YXRlO3JldHVyblthLGJdfSx1c2VNdXRhYmxlU291cmNlOmhpLHVzZVN5bmNFeHRlcm5hbFN0b3JlOmlpLHVzZUlkOkZpLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sJGg9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOkJpLHVzZUNvbnRleHQ6VmcsdXNlRWZmZWN0OmppLHVzZUltcGVyYXRpdmVIYW5kbGU6emksdXNlSW5zZXJ0aW9uRWZmZWN0OndpLHVzZUxheW91dEVmZmVjdDp4aSx1c2VNZW1vOkNpLHVzZVJlZHVjZXI6Z2ksdXNlUmVmOnNpLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGdpKGVpKX0sdXNlRGVidWdWYWx1ZTpBaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPWRpKCk7cmV0dXJuIG51bGw9PT1cbk8/Yi5tZW1vaXplZFN0YXRlPWE6RGkoYixPLm1lbW9pemVkU3RhdGUsYSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1naShlaSlbMF0sYj1kaSgpLm1lbW9pemVkU3RhdGU7cmV0dXJuW2EsYl19LHVzZU11dGFibGVTb3VyY2U6aGksdXNlU3luY0V4dGVybmFsU3RvcmU6aWksdXNlSWQ6RmksdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfTtmdW5jdGlvbiBLaShhLGIpe3RyeXt2YXIgYz1cIlwiLGQ9YjtkbyBjKz1QYShkKSxkPWQucmV0dXJuO3doaWxlKGQpO3ZhciBlPWN9Y2F0Y2goZil7ZT1cIlxcbkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6IFwiK2YubWVzc2FnZStcIlxcblwiK2Yuc3RhY2t9cmV0dXJue3ZhbHVlOmEsc291cmNlOmIsc3RhY2s6ZSxkaWdlc3Q6bnVsbH19ZnVuY3Rpb24gTGkoYSxiLGMpe3JldHVybnt2YWx1ZTphLHNvdXJjZTpudWxsLHN0YWNrOm51bGwhPWM/YzpudWxsLGRpZ2VzdDpudWxsIT1iP2I6bnVsbH19XG5mdW5jdGlvbiBNaShhLGIpe3RyeXtjb25zb2xlLmVycm9yKGIudmFsdWUpfWNhdGNoKGMpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBjO30pfX12YXIgTmk9XCJmdW5jdGlvblwiPT09dHlwZW9mIFdlYWtNYXA/V2Vha01hcDpNYXA7ZnVuY3Rpb24gT2koYSxiLGMpe2M9Y2goLTEsYyk7Yy50YWc9MztjLnBheWxvYWQ9e2VsZW1lbnQ6bnVsbH07dmFyIGQ9Yi52YWx1ZTtjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7UGl8fChQaT0hMCxRaT1kKTtNaShhLGIpfTtyZXR1cm4gY31cbmZ1bmN0aW9uIFJpKGEsYixjKXtjPWNoKC0xLGMpO2MudGFnPTM7dmFyIGQ9YS50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGU9Yi52YWx1ZTtjLnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZChlKX07Yy5jYWxsYmFjaz1mdW5jdGlvbigpe01pKGEsYil9fXZhciBmPWEuc3RhdGVOb2RlO251bGwhPT1mJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5jb21wb25lbnREaWRDYXRjaCYmKGMuY2FsbGJhY2s9ZnVuY3Rpb24oKXtNaShhLGIpO1wiZnVuY3Rpb25cIiE9PXR5cGVvZiBkJiYobnVsbD09PVNpP1NpPW5ldyBTZXQoW3RoaXNdKTpTaS5hZGQodGhpcykpO3ZhciBjPWIuc3RhY2s7dGhpcy5jb21wb25lbnREaWRDYXRjaChiLnZhbHVlLHtjb21wb25lbnRTdGFjazpudWxsIT09Yz9jOlwiXCJ9KX0pO3JldHVybiBjfVxuZnVuY3Rpb24gVGkoYSxiLGMpe3ZhciBkPWEucGluZ0NhY2hlO2lmKG51bGw9PT1kKXtkPWEucGluZ0NhY2hlPW5ldyBOaTt2YXIgZT1uZXcgU2V0O2Quc2V0KGIsZSl9ZWxzZSBlPWQuZ2V0KGIpLHZvaWQgMD09PWUmJihlPW5ldyBTZXQsZC5zZXQoYixlKSk7ZS5oYXMoYyl8fChlLmFkZChjKSxhPVVpLmJpbmQobnVsbCxhLGIsYyksYi50aGVuKGEsYSkpfWZ1bmN0aW9uIFZpKGEpe2Rve3ZhciBiO2lmKGI9MTM9PT1hLnRhZyliPWEubWVtb2l6ZWRTdGF0ZSxiPW51bGwhPT1iP251bGwhPT1iLmRlaHlkcmF0ZWQ/ITA6ITE6ITA7aWYoYilyZXR1cm4gYTthPWEucmV0dXJufXdoaWxlKG51bGwhPT1hKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFdpKGEsYixjLGQsZSl7aWYoMD09PShhLm1vZGUmMSkpcmV0dXJuIGE9PT1iP2EuZmxhZ3N8PTY1NTM2OihhLmZsYWdzfD0xMjgsYy5mbGFnc3w9MTMxMDcyLGMuZmxhZ3MmPS01MjgwNSwxPT09Yy50YWcmJihudWxsPT09Yy5hbHRlcm5hdGU/Yy50YWc9MTc6KGI9Y2goLTEsMSksYi50YWc9MixkaChjLGIsMSkpKSxjLmxhbmVzfD0xKSxhO2EuZmxhZ3N8PTY1NTM2O2EubGFuZXM9ZTtyZXR1cm4gYX12YXIgWGk9dWEuUmVhY3RDdXJyZW50T3duZXIsVWc9ITE7ZnVuY3Rpb24gWWkoYSxiLGMsZCl7Yi5jaGlsZD1udWxsPT09YT9DaChiLG51bGwsYyxkKTpCaChiLGEuY2hpbGQsYyxkKX1cbmZ1bmN0aW9uIFppKGEsYixjLGQsZSl7Yz1jLnJlbmRlcjt2YXIgZj1iLnJlZjtUZyhiLGUpO2Q9WGgoYSxiLGMsZCxmLGUpO2M9YmkoKTtpZihudWxsIT09YSYmIVVnKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5mbGFncyY9LTIwNTMsYS5sYW5lcyY9fmUsJGkoYSxiLGUpO0kmJmMmJnZnKGIpO2IuZmxhZ3N8PTE7WWkoYSxiLGQsZSk7cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBhaihhLGIsYyxkLGUpe2lmKG51bGw9PT1hKXt2YXIgZj1jLnR5cGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGYmJiFiaihmKSYmdm9pZCAwPT09Zi5kZWZhdWx0UHJvcHMmJm51bGw9PT1jLmNvbXBhcmUmJnZvaWQgMD09PWMuZGVmYXVsdFByb3BzKXJldHVybiBiLnRhZz0xNSxiLnR5cGU9ZixjaihhLGIsZixkLGUpO2E9eWgoYy50eXBlLG51bGwsZCxiLGIubW9kZSxlKTthLnJlZj1iLnJlZjthLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWF9Zj1hLmNoaWxkO2lmKDA9PT0oYS5sYW5lcyZlKSl7dmFyIGc9Zi5tZW1vaXplZFByb3BzO2M9Yy5jb21wYXJlO2M9bnVsbCE9PWM/YzpJZTtpZihjKGcsZCkmJmEucmVmPT09Yi5yZWYpcmV0dXJuICRpKGEsYixlKX1iLmZsYWdzfD0xO2E9d2goZixkKTthLnJlZj1iLnJlZjthLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWF9XG5mdW5jdGlvbiBjaihhLGIsYyxkLGUpe2lmKG51bGwhPT1hKXt2YXIgZj1hLm1lbW9pemVkUHJvcHM7aWYoSWUoZixkKSYmYS5yZWY9PT1iLnJlZilpZihVZz0hMSxiLnBlbmRpbmdQcm9wcz1kPWYsMCE9PShhLmxhbmVzJmUpKTAhPT0oYS5mbGFncyYxMzEwNzIpJiYoVWc9ITApO2Vsc2UgcmV0dXJuIGIubGFuZXM9YS5sYW5lcywkaShhLGIsZSl9cmV0dXJuIGRqKGEsYixjLGQsZSl9XG5mdW5jdGlvbiBlaihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1kLmNoaWxkcmVuLGY9bnVsbCE9PWE/YS5tZW1vaXplZFN0YXRlOm51bGw7aWYoXCJoaWRkZW5cIj09PWQubW9kZSlpZigwPT09KGIubW9kZSYxKSliLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LEcoZmosZ2opLGdqfD1jO2Vsc2V7aWYoMD09PShjJjEwNzM3NDE4MjQpKXJldHVybiBhPW51bGwhPT1mP2YuYmFzZUxhbmVzfGM6YyxiLmxhbmVzPWIuY2hpbGRMYW5lcz0xMDczNzQxODI0LGIubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOmEsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0sYi51cGRhdGVRdWV1ZT1udWxsLEcoZmosZ2opLGdqfD1hLG51bGw7Yi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfTtkPW51bGwhPT1mP2YuYmFzZUxhbmVzOmM7Ryhmaixnaik7Z2p8PWR9ZWxzZSBudWxsIT09XG5mPyhkPWYuYmFzZUxhbmVzfGMsYi5tZW1vaXplZFN0YXRlPW51bGwpOmQ9YyxHKGZqLGdqKSxnanw9ZDtZaShhLGIsZSxjKTtyZXR1cm4gYi5jaGlsZH1mdW5jdGlvbiBoaihhLGIpe3ZhciBjPWIucmVmO2lmKG51bGw9PT1hJiZudWxsIT09Y3x8bnVsbCE9PWEmJmEucmVmIT09YyliLmZsYWdzfD01MTIsYi5mbGFnc3w9MjA5NzE1Mn1mdW5jdGlvbiBkaihhLGIsYyxkLGUpe3ZhciBmPVpmKGMpP1hmOkguY3VycmVudDtmPVlmKGIsZik7VGcoYixlKTtjPVhoKGEsYixjLGQsZixlKTtkPWJpKCk7aWYobnVsbCE9PWEmJiFVZylyZXR1cm4gYi51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGIuZmxhZ3MmPS0yMDUzLGEubGFuZXMmPX5lLCRpKGEsYixlKTtJJiZkJiZ2ZyhiKTtiLmZsYWdzfD0xO1lpKGEsYixjLGUpO3JldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gaWooYSxiLGMsZCxlKXtpZihaZihjKSl7dmFyIGY9ITA7Y2coYil9ZWxzZSBmPSExO1RnKGIsZSk7aWYobnVsbD09PWIuc3RhdGVOb2RlKWpqKGEsYikscGgoYixjLGQpLHJoKGIsYyxkLGUpLGQ9ITA7ZWxzZSBpZihudWxsPT09YSl7dmFyIGc9Yi5zdGF0ZU5vZGUsaD1iLm1lbW9pemVkUHJvcHM7Zy5wcm9wcz1oO3ZhciBrPWcuY29udGV4dCxsPWMuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBsJiZudWxsIT09bD9sPVZnKGwpOihsPVpmKGMpP1hmOkguY3VycmVudCxsPVlmKGIsbCkpO3ZhciBtPWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLHE9XCJmdW5jdGlvblwiPT09dHlwZW9mIG18fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlO3F8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHxcbihoIT09ZHx8ayE9PWwpJiZxaChiLGcsZCxsKTskZz0hMTt2YXIgcj1iLm1lbW9pemVkU3RhdGU7Zy5zdGF0ZT1yO2doKGIsZCxnLGUpO2s9Yi5tZW1vaXplZFN0YXRlO2ghPT1kfHxyIT09a3x8V2YuY3VycmVudHx8JGc/KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBtJiYoa2goYixjLG0sZCksaz1iLm1lbW9pemVkU3RhdGUpLChoPSRnfHxvaChiLGMsaCxkLHIsayxsKSk/KHF8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxNb3VudHx8KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxNb3VudCYmZy5jb21wb25lbnRXaWxsTW91bnQoKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00MTk0MzA4KSk6XG4oXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00MTk0MzA4KSxiLm1lbW9pemVkUHJvcHM9ZCxiLm1lbW9pemVkU3RhdGU9ayksZy5wcm9wcz1kLGcuc3RhdGU9ayxnLmNvbnRleHQ9bCxkPWgpOihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpLGQ9ITEpfWVsc2V7Zz1iLnN0YXRlTm9kZTtiaChhLGIpO2g9Yi5tZW1vaXplZFByb3BzO2w9Yi50eXBlPT09Yi5lbGVtZW50VHlwZT9oOkxnKGIudHlwZSxoKTtnLnByb3BzPWw7cT1iLnBlbmRpbmdQcm9wcztyPWcuY29udGV4dDtrPWMuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBrJiZudWxsIT09az9rPVZnKGspOihrPVpmKGMpP1hmOkguY3VycmVudCxrPVlmKGIsaykpO3ZhciB5PWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOyhtPVwiZnVuY3Rpb25cIj09PXR5cGVvZiB5fHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSl8fFxuXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fChoIT09cXx8ciE9PWspJiZxaChiLGcsZCxrKTskZz0hMTtyPWIubWVtb2l6ZWRTdGF0ZTtnLnN0YXRlPXI7Z2goYixkLGcsZSk7dmFyIG49Yi5tZW1vaXplZFN0YXRlO2ghPT1xfHxyIT09bnx8V2YuY3VycmVudHx8JGc/KFwiZnVuY3Rpb25cIj09PXR5cGVvZiB5JiYoa2goYixjLHksZCksbj1iLm1lbW9pemVkU3RhdGUpLChsPSRnfHxvaChiLGMsbCxkLHIsbixrKXx8ITEpPyhtfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFVwZGF0ZXx8KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxVcGRhdGUmJmcuY29tcG9uZW50V2lsbFVwZGF0ZShkLG4sayksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJlxuZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZShkLG4saykpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZSYmKGIuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYoYi5mbGFnc3w9MTAyNCkpOihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTEwMjQpLGIubWVtb2l6ZWRQcm9wcz1kLGIubWVtb2l6ZWRTdGF0ZT1uKSxnLnByb3BzPWQsZy5zdGF0ZT1uLGcuY29udGV4dD1rLGQ9bCk6KFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PVxuYS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9NCksXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD0xMDI0KSxkPSExKX1yZXR1cm4ga2ooYSxiLGMsZCxmLGUpfVxuZnVuY3Rpb24ga2ooYSxiLGMsZCxlLGYpe2hqKGEsYik7dmFyIGc9MCE9PShiLmZsYWdzJjEyOCk7aWYoIWQmJiFnKXJldHVybiBlJiZkZyhiLGMsITEpLCRpKGEsYixmKTtkPWIuc3RhdGVOb2RlO1hpLmN1cnJlbnQ9Yjt2YXIgaD1nJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYy5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I/bnVsbDpkLnJlbmRlcigpO2IuZmxhZ3N8PTE7bnVsbCE9PWEmJmc/KGIuY2hpbGQ9QmgoYixhLmNoaWxkLG51bGwsZiksYi5jaGlsZD1CaChiLG51bGwsaCxmKSk6WWkoYSxiLGgsZik7Yi5tZW1vaXplZFN0YXRlPWQuc3RhdGU7ZSYmZGcoYixjLCEwKTtyZXR1cm4gYi5jaGlsZH1mdW5jdGlvbiBsaihhKXt2YXIgYj1hLnN0YXRlTm9kZTtiLnBlbmRpbmdDb250ZXh0P2FnKGEsYi5wZW5kaW5nQ29udGV4dCxiLnBlbmRpbmdDb250ZXh0IT09Yi5jb250ZXh0KTpiLmNvbnRleHQmJmFnKGEsYi5jb250ZXh0LCExKTtJaChhLGIuY29udGFpbmVySW5mbyl9XG5mdW5jdGlvbiBtaihhLGIsYyxkLGUpe0lnKCk7SmcoZSk7Yi5mbGFnc3w9MjU2O1lpKGEsYixjLGQpO3JldHVybiBiLmNoaWxkfXZhciBuaj17ZGVoeWRyYXRlZDpudWxsLHRyZWVDb250ZXh0Om51bGwscmV0cnlMYW5lOjB9O2Z1bmN0aW9uIG9qKGEpe3JldHVybntiYXNlTGFuZXM6YSxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfX1cbmZ1bmN0aW9uIHBqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPU0uY3VycmVudCxmPSExLGc9MCE9PShiLmZsYWdzJjEyOCksaDsoaD1nKXx8KGg9bnVsbCE9PWEmJm51bGw9PT1hLm1lbW9pemVkU3RhdGU/ITE6MCE9PShlJjIpKTtpZihoKWY9ITAsYi5mbGFncyY9LTEyOTtlbHNlIGlmKG51bGw9PT1hfHxudWxsIT09YS5tZW1vaXplZFN0YXRlKWV8PTE7RyhNLGUmMSk7aWYobnVsbD09PWEpe0VnKGIpO2E9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiYoYT1hLmRlaHlkcmF0ZWQsbnVsbCE9PWEpKXJldHVybiAwPT09KGIubW9kZSYxKT9iLmxhbmVzPTE6XCIkIVwiPT09YS5kYXRhP2IubGFuZXM9ODpiLmxhbmVzPTEwNzM3NDE4MjQsbnVsbDtnPWQuY2hpbGRyZW47YT1kLmZhbGxiYWNrO3JldHVybiBmPyhkPWIubW9kZSxmPWIuY2hpbGQsZz17bW9kZTpcImhpZGRlblwiLGNoaWxkcmVuOmd9LDA9PT0oZCYxKSYmbnVsbCE9PWY/KGYuY2hpbGRMYW5lcz0wLGYucGVuZGluZ1Byb3BzPVxuZyk6Zj1xaihnLGQsMCxudWxsKSxhPUFoKGEsZCxjLG51bGwpLGYucmV0dXJuPWIsYS5yZXR1cm49YixmLnNpYmxpbmc9YSxiLmNoaWxkPWYsYi5jaGlsZC5tZW1vaXplZFN0YXRlPW9qKGMpLGIubWVtb2l6ZWRTdGF0ZT1uaixhKTpyaihiLGcpfWU9YS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1lJiYoaD1lLmRlaHlkcmF0ZWQsbnVsbCE9PWgpKXJldHVybiBzaihhLGIsZyxkLGgsZSxjKTtpZihmKXtmPWQuZmFsbGJhY2s7Zz1iLm1vZGU7ZT1hLmNoaWxkO2g9ZS5zaWJsaW5nO3ZhciBrPXttb2RlOlwiaGlkZGVuXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn07MD09PShnJjEpJiZiLmNoaWxkIT09ZT8oZD1iLmNoaWxkLGQuY2hpbGRMYW5lcz0wLGQucGVuZGluZ1Byb3BzPWssYi5kZWxldGlvbnM9bnVsbCk6KGQ9d2goZSxrKSxkLnN1YnRyZWVGbGFncz1lLnN1YnRyZWVGbGFncyYxNDY4MDA2NCk7bnVsbCE9PWg/Zj13aChoLGYpOihmPUFoKGYsZyxjLG51bGwpLGYuZmxhZ3N8PTIpO2YucmV0dXJuPVxuYjtkLnJldHVybj1iO2Quc2libGluZz1mO2IuY2hpbGQ9ZDtkPWY7Zj1iLmNoaWxkO2c9YS5jaGlsZC5tZW1vaXplZFN0YXRlO2c9bnVsbD09PWc/b2ooYyk6e2Jhc2VMYW5lczpnLmJhc2VMYW5lc3xjLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOmcudHJhbnNpdGlvbnN9O2YubWVtb2l6ZWRTdGF0ZT1nO2YuY2hpbGRMYW5lcz1hLmNoaWxkTGFuZXMmfmM7Yi5tZW1vaXplZFN0YXRlPW5qO3JldHVybiBkfWY9YS5jaGlsZDthPWYuc2libGluZztkPXdoKGYse21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn0pOzA9PT0oYi5tb2RlJjEpJiYoZC5sYW5lcz1jKTtkLnJldHVybj1iO2Quc2libGluZz1udWxsO251bGwhPT1hJiYoYz1iLmRlbGV0aW9ucyxudWxsPT09Yz8oYi5kZWxldGlvbnM9W2FdLGIuZmxhZ3N8PTE2KTpjLnB1c2goYSkpO2IuY2hpbGQ9ZDtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gZH1cbmZ1bmN0aW9uIHJqKGEsYil7Yj1xaih7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpifSxhLm1vZGUsMCxudWxsKTtiLnJldHVybj1hO3JldHVybiBhLmNoaWxkPWJ9ZnVuY3Rpb24gdGooYSxiLGMsZCl7bnVsbCE9PWQmJkpnKGQpO0JoKGIsYS5jaGlsZCxudWxsLGMpO2E9cmooYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbik7YS5mbGFnc3w9MjtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gYX1cbmZ1bmN0aW9uIHNqKGEsYixjLGQsZSxmLGcpe2lmKGMpe2lmKGIuZmxhZ3MmMjU2KXJldHVybiBiLmZsYWdzJj0tMjU3LGQ9TGkoRXJyb3IocCg0MjIpKSksdGooYSxiLGcsZCk7aWYobnVsbCE9PWIubWVtb2l6ZWRTdGF0ZSlyZXR1cm4gYi5jaGlsZD1hLmNoaWxkLGIuZmxhZ3N8PTEyOCxudWxsO2Y9ZC5mYWxsYmFjaztlPWIubW9kZTtkPXFqKHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOmQuY2hpbGRyZW59LGUsMCxudWxsKTtmPUFoKGYsZSxnLG51bGwpO2YuZmxhZ3N8PTI7ZC5yZXR1cm49YjtmLnJldHVybj1iO2Quc2libGluZz1mO2IuY2hpbGQ9ZDswIT09KGIubW9kZSYxKSYmQmgoYixhLmNoaWxkLG51bGwsZyk7Yi5jaGlsZC5tZW1vaXplZFN0YXRlPW9qKGcpO2IubWVtb2l6ZWRTdGF0ZT1uajtyZXR1cm4gZn1pZigwPT09KGIubW9kZSYxKSlyZXR1cm4gdGooYSxiLGcsbnVsbCk7aWYoXCIkIVwiPT09ZS5kYXRhKXtkPWUubmV4dFNpYmxpbmcmJmUubmV4dFNpYmxpbmcuZGF0YXNldDtcbmlmKGQpdmFyIGg9ZC5kZ3N0O2Q9aDtmPUVycm9yKHAoNDE5KSk7ZD1MaShmLGQsdm9pZCAwKTtyZXR1cm4gdGooYSxiLGcsZCl9aD0wIT09KGcmYS5jaGlsZExhbmVzKTtpZihVZ3x8aCl7ZD1SO2lmKG51bGwhPT1kKXtzd2l0Y2goZyYtZyl7Y2FzZSA0OmU9MjticmVhaztjYXNlIDE2OmU9ODticmVhaztjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOmNhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6ZT0zMjticmVhaztjYXNlIDUzNjg3MDkxMjplPTI2ODQzNTQ1NjticmVhaztkZWZhdWx0OmU9MH1lPTAhPT0oZSYoZC5zdXNwZW5kZWRMYW5lc3xnKSk/MDplO1xuMCE9PWUmJmUhPT1mLnJldHJ5TGFuZSYmKGYucmV0cnlMYW5lPWUsWmcoYSxlKSxtaChkLGEsZSwtMSkpfXVqKCk7ZD1MaShFcnJvcihwKDQyMSkpKTtyZXR1cm4gdGooYSxiLGcsZCl9aWYoXCIkP1wiPT09ZS5kYXRhKXJldHVybiBiLmZsYWdzfD0xMjgsYi5jaGlsZD1hLmNoaWxkLGI9dmouYmluZChudWxsLGEpLGUuX3JlYWN0UmV0cnk9YixudWxsO2E9Zi50cmVlQ29udGV4dDt5Zz1MZihlLm5leHRTaWJsaW5nKTt4Zz1iO0k9ITA7emc9bnVsbDtudWxsIT09YSYmKG9nW3BnKytdPXJnLG9nW3BnKytdPXNnLG9nW3BnKytdPXFnLHJnPWEuaWQsc2c9YS5vdmVyZmxvdyxxZz1iKTtiPXJqKGIsZC5jaGlsZHJlbik7Yi5mbGFnc3w9NDA5NjtyZXR1cm4gYn1mdW5jdGlvbiB3aihhLGIsYyl7YS5sYW5lc3w9Yjt2YXIgZD1hLmFsdGVybmF0ZTtudWxsIT09ZCYmKGQubGFuZXN8PWIpO1NnKGEucmV0dXJuLGIsYyl9XG5mdW5jdGlvbiB4aihhLGIsYyxkLGUpe3ZhciBmPWEubWVtb2l6ZWRTdGF0ZTtudWxsPT09Zj9hLm1lbW9pemVkU3RhdGU9e2lzQmFja3dhcmRzOmIscmVuZGVyaW5nOm51bGwscmVuZGVyaW5nU3RhcnRUaW1lOjAsbGFzdDpkLHRhaWw6Yyx0YWlsTW9kZTplfTooZi5pc0JhY2t3YXJkcz1iLGYucmVuZGVyaW5nPW51bGwsZi5yZW5kZXJpbmdTdGFydFRpbWU9MCxmLmxhc3Q9ZCxmLnRhaWw9YyxmLnRhaWxNb2RlPWUpfVxuZnVuY3Rpb24geWooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9ZC5yZXZlYWxPcmRlcixmPWQudGFpbDtZaShhLGIsZC5jaGlsZHJlbixjKTtkPU0uY3VycmVudDtpZigwIT09KGQmMikpZD1kJjF8MixiLmZsYWdzfD0xMjg7ZWxzZXtpZihudWxsIT09YSYmMCE9PShhLmZsYWdzJjEyOCkpYTpmb3IoYT1iLmNoaWxkO251bGwhPT1hOyl7aWYoMTM9PT1hLnRhZyludWxsIT09YS5tZW1vaXplZFN0YXRlJiZ3aihhLGMsYik7ZWxzZSBpZigxOT09PWEudGFnKXdqKGEsYyxiKTtlbHNlIGlmKG51bGwhPT1hLmNoaWxkKXthLmNoaWxkLnJldHVybj1hO2E9YS5jaGlsZDtjb250aW51ZX1pZihhPT09YilicmVhayBhO2Zvcig7bnVsbD09PWEuc2libGluZzspe2lmKG51bGw9PT1hLnJldHVybnx8YS5yZXR1cm49PT1iKWJyZWFrIGE7YT1hLnJldHVybn1hLnNpYmxpbmcucmV0dXJuPWEucmV0dXJuO2E9YS5zaWJsaW5nfWQmPTF9RyhNLGQpO2lmKDA9PT0oYi5tb2RlJjEpKWIubWVtb2l6ZWRTdGF0ZT1cbm51bGw7ZWxzZSBzd2l0Y2goZSl7Y2FzZSBcImZvcndhcmRzXCI6Yz1iLmNoaWxkO2ZvcihlPW51bGw7bnVsbCE9PWM7KWE9Yy5hbHRlcm5hdGUsbnVsbCE9PWEmJm51bGw9PT1NaChhKSYmKGU9YyksYz1jLnNpYmxpbmc7Yz1lO251bGw9PT1jPyhlPWIuY2hpbGQsYi5jaGlsZD1udWxsKTooZT1jLnNpYmxpbmcsYy5zaWJsaW5nPW51bGwpO3hqKGIsITEsZSxjLGYpO2JyZWFrO2Nhc2UgXCJiYWNrd2FyZHNcIjpjPW51bGw7ZT1iLmNoaWxkO2ZvcihiLmNoaWxkPW51bGw7bnVsbCE9PWU7KXthPWUuYWx0ZXJuYXRlO2lmKG51bGwhPT1hJiZudWxsPT09TWgoYSkpe2IuY2hpbGQ9ZTticmVha31hPWUuc2libGluZztlLnNpYmxpbmc9YztjPWU7ZT1hfXhqKGIsITAsYyxudWxsLGYpO2JyZWFrO2Nhc2UgXCJ0b2dldGhlclwiOnhqKGIsITEsbnVsbCxudWxsLHZvaWQgMCk7YnJlYWs7ZGVmYXVsdDpiLm1lbW9pemVkU3RhdGU9bnVsbH1yZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIGpqKGEsYil7MD09PShiLm1vZGUmMSkmJm51bGwhPT1hJiYoYS5hbHRlcm5hdGU9bnVsbCxiLmFsdGVybmF0ZT1udWxsLGIuZmxhZ3N8PTIpfWZ1bmN0aW9uICRpKGEsYixjKXtudWxsIT09YSYmKGIuZGVwZW5kZW5jaWVzPWEuZGVwZW5kZW5jaWVzKTtoaHw9Yi5sYW5lcztpZigwPT09KGMmYi5jaGlsZExhbmVzKSlyZXR1cm4gbnVsbDtpZihudWxsIT09YSYmYi5jaGlsZCE9PWEuY2hpbGQpdGhyb3cgRXJyb3IocCgxNTMpKTtpZihudWxsIT09Yi5jaGlsZCl7YT1iLmNoaWxkO2M9d2goYSxhLnBlbmRpbmdQcm9wcyk7Yi5jaGlsZD1jO2ZvcihjLnJldHVybj1iO251bGwhPT1hLnNpYmxpbmc7KWE9YS5zaWJsaW5nLGM9Yy5zaWJsaW5nPXdoKGEsYS5wZW5kaW5nUHJvcHMpLGMucmV0dXJuPWI7Yy5zaWJsaW5nPW51bGx9cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiB6aihhLGIsYyl7c3dpdGNoKGIudGFnKXtjYXNlIDM6bGooYik7SWcoKTticmVhaztjYXNlIDU6S2goYik7YnJlYWs7Y2FzZSAxOlpmKGIudHlwZSkmJmNnKGIpO2JyZWFrO2Nhc2UgNDpJaChiLGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO2JyZWFrO2Nhc2UgMTA6dmFyIGQ9Yi50eXBlLl9jb250ZXh0LGU9Yi5tZW1vaXplZFByb3BzLnZhbHVlO0coTWcsZC5fY3VycmVudFZhbHVlKTtkLl9jdXJyZW50VmFsdWU9ZTticmVhaztjYXNlIDEzOmQ9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kKXtpZihudWxsIT09ZC5kZWh5ZHJhdGVkKXJldHVybiBHKE0sTS5jdXJyZW50JjEpLGIuZmxhZ3N8PTEyOCxudWxsO2lmKDAhPT0oYyZiLmNoaWxkLmNoaWxkTGFuZXMpKXJldHVybiBwaihhLGIsYyk7RyhNLE0uY3VycmVudCYxKTthPSRpKGEsYixjKTtyZXR1cm4gbnVsbCE9PWE/YS5zaWJsaW5nOm51bGx9RyhNLE0uY3VycmVudCYxKTticmVhaztjYXNlIDE5OmQ9MCE9PShjJlxuYi5jaGlsZExhbmVzKTtpZigwIT09KGEuZmxhZ3MmMTI4KSl7aWYoZClyZXR1cm4geWooYSxiLGMpO2IuZmxhZ3N8PTEyOH1lPWIubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZSYmKGUucmVuZGVyaW5nPW51bGwsZS50YWlsPW51bGwsZS5sYXN0RWZmZWN0PW51bGwpO0coTSxNLmN1cnJlbnQpO2lmKGQpYnJlYWs7ZWxzZSByZXR1cm4gbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIGIubGFuZXM9MCxlaihhLGIsYyl9cmV0dXJuICRpKGEsYixjKX12YXIgQWosQmosQ2osRGo7XG5Baj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1iLmNoaWxkO251bGwhPT1jOyl7aWYoNT09PWMudGFnfHw2PT09Yy50YWcpYS5hcHBlbmRDaGlsZChjLnN0YXRlTm9kZSk7ZWxzZSBpZig0IT09Yy50YWcmJm51bGwhPT1jLmNoaWxkKXtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX1pZihjPT09YilicmVhaztmb3IoO251bGw9PT1jLnNpYmxpbmc7KXtpZihudWxsPT09Yy5yZXR1cm58fGMucmV0dXJuPT09YilyZXR1cm47Yz1jLnJldHVybn1jLnNpYmxpbmcucmV0dXJuPWMucmV0dXJuO2M9Yy5zaWJsaW5nfX07Qmo9ZnVuY3Rpb24oKXt9O1xuQ2o9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5tZW1vaXplZFByb3BzO2lmKGUhPT1kKXthPWIuc3RhdGVOb2RlO0hoKEVoLmN1cnJlbnQpO3ZhciBmPW51bGw7c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOmU9WWEoYSxlKTtkPVlhKGEsZCk7Zj1bXTticmVhaztjYXNlIFwic2VsZWN0XCI6ZT1BKHt9LGUse3ZhbHVlOnZvaWQgMH0pO2Q9QSh7fSxkLHt2YWx1ZTp2b2lkIDB9KTtmPVtdO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmU9Z2IoYSxlKTtkPWdiKGEsZCk7Zj1bXTticmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlLm9uQ2xpY2smJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLm9uQ2xpY2smJihhLm9uY2xpY2s9QmYpfXViKGMsZCk7dmFyIGc7Yz1udWxsO2ZvcihsIGluIGUpaWYoIWQuaGFzT3duUHJvcGVydHkobCkmJmUuaGFzT3duUHJvcGVydHkobCkmJm51bGwhPWVbbF0paWYoXCJzdHlsZVwiPT09bCl7dmFyIGg9ZVtsXTtmb3IoZyBpbiBoKWguaGFzT3duUHJvcGVydHkoZykmJlxuKGN8fChjPXt9KSxjW2ddPVwiXCIpfWVsc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCIhPT1sJiZcImNoaWxkcmVuXCIhPT1sJiZcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09bCYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWwmJlwiYXV0b0ZvY3VzXCIhPT1sJiYoZWEuaGFzT3duUHJvcGVydHkobCk/Znx8KGY9W10pOihmPWZ8fFtdKS5wdXNoKGwsbnVsbCkpO2ZvcihsIGluIGQpe3ZhciBrPWRbbF07aD1udWxsIT1lP2VbbF06dm9pZCAwO2lmKGQuaGFzT3duUHJvcGVydHkobCkmJmshPT1oJiYobnVsbCE9a3x8bnVsbCE9aCkpaWYoXCJzdHlsZVwiPT09bClpZihoKXtmb3IoZyBpbiBoKSFoLmhhc093blByb3BlcnR5KGcpfHxrJiZrLmhhc093blByb3BlcnR5KGcpfHwoY3x8KGM9e30pLGNbZ109XCJcIik7Zm9yKGcgaW4gaylrLmhhc093blByb3BlcnR5KGcpJiZoW2ddIT09a1tnXSYmKGN8fChjPXt9KSxjW2ddPWtbZ10pfWVsc2UgY3x8KGZ8fChmPVtdKSxmLnB1c2gobCxcbmMpKSxjPWs7ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWw/KGs9az9rLl9faHRtbDp2b2lkIDAsaD1oP2guX19odG1sOnZvaWQgMCxudWxsIT1rJiZoIT09ayYmKGY9Znx8W10pLnB1c2gobCxrKSk6XCJjaGlsZHJlblwiPT09bD9cInN0cmluZ1wiIT09dHlwZW9mIGsmJlwibnVtYmVyXCIhPT10eXBlb2Yga3x8KGY9Znx8W10pLnB1c2gobCxcIlwiK2spOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1sJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09bCYmKGVhLmhhc093blByb3BlcnR5KGwpPyhudWxsIT1rJiZcIm9uU2Nyb2xsXCI9PT1sJiZEKFwic2Nyb2xsXCIsYSksZnx8aD09PWt8fChmPVtdKSk6KGY9Znx8W10pLnB1c2gobCxrKSl9YyYmKGY9Znx8W10pLnB1c2goXCJzdHlsZVwiLGMpO3ZhciBsPWY7aWYoYi51cGRhdGVRdWV1ZT1sKWIuZmxhZ3N8PTR9fTtEaj1mdW5jdGlvbihhLGIsYyxkKXtjIT09ZCYmKGIuZmxhZ3N8PTQpfTtcbmZ1bmN0aW9uIEVqKGEsYil7aWYoIUkpc3dpdGNoKGEudGFpbE1vZGUpe2Nhc2UgXCJoaWRkZW5cIjpiPWEudGFpbDtmb3IodmFyIGM9bnVsbDtudWxsIT09YjspbnVsbCE9PWIuYWx0ZXJuYXRlJiYoYz1iKSxiPWIuc2libGluZztudWxsPT09Yz9hLnRhaWw9bnVsbDpjLnNpYmxpbmc9bnVsbDticmVhaztjYXNlIFwiY29sbGFwc2VkXCI6Yz1hLnRhaWw7Zm9yKHZhciBkPW51bGw7bnVsbCE9PWM7KW51bGwhPT1jLmFsdGVybmF0ZSYmKGQ9YyksYz1jLnNpYmxpbmc7bnVsbD09PWQ/Ynx8bnVsbD09PWEudGFpbD9hLnRhaWw9bnVsbDphLnRhaWwuc2libGluZz1udWxsOmQuc2libGluZz1udWxsfX1cbmZ1bmN0aW9uIFMoYSl7dmFyIGI9bnVsbCE9PWEuYWx0ZXJuYXRlJiZhLmFsdGVybmF0ZS5jaGlsZD09PWEuY2hpbGQsYz0wLGQ9MDtpZihiKWZvcih2YXIgZT1hLmNoaWxkO251bGwhPT1lOyljfD1lLmxhbmVzfGUuY2hpbGRMYW5lcyxkfD1lLnN1YnRyZWVGbGFncyYxNDY4MDA2NCxkfD1lLmZsYWdzJjE0NjgwMDY0LGUucmV0dXJuPWEsZT1lLnNpYmxpbmc7ZWxzZSBmb3IoZT1hLmNoaWxkO251bGwhPT1lOyljfD1lLmxhbmVzfGUuY2hpbGRMYW5lcyxkfD1lLnN1YnRyZWVGbGFncyxkfD1lLmZsYWdzLGUucmV0dXJuPWEsZT1lLnNpYmxpbmc7YS5zdWJ0cmVlRmxhZ3N8PWQ7YS5jaGlsZExhbmVzPWM7cmV0dXJuIGJ9XG5mdW5jdGlvbiBGaihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHM7d2coYik7c3dpdGNoKGIudGFnKXtjYXNlIDI6Y2FzZSAxNjpjYXNlIDE1OmNhc2UgMDpjYXNlIDExOmNhc2UgNzpjYXNlIDg6Y2FzZSAxMjpjYXNlIDk6Y2FzZSAxNDpyZXR1cm4gUyhiKSxudWxsO2Nhc2UgMTpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxTKGIpLG51bGw7Y2FzZSAzOmQ9Yi5zdGF0ZU5vZGU7SmgoKTtFKFdmKTtFKEgpO09oKCk7ZC5wZW5kaW5nQ29udGV4dCYmKGQuY29udGV4dD1kLnBlbmRpbmdDb250ZXh0LGQucGVuZGluZ0NvbnRleHQ9bnVsbCk7aWYobnVsbD09PWF8fG51bGw9PT1hLmNoaWxkKUdnKGIpP2IuZmxhZ3N8PTQ6bnVsbD09PWF8fGEubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJjA9PT0oYi5mbGFncyYyNTYpfHwoYi5mbGFnc3w9MTAyNCxudWxsIT09emcmJihHaih6Zyksemc9bnVsbCkpO0JqKGEsYik7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDU6TGgoYik7dmFyIGU9SGgoR2guY3VycmVudCk7XG5jPWIudHlwZTtpZihudWxsIT09YSYmbnVsbCE9Yi5zdGF0ZU5vZGUpQ2ooYSxiLGMsZCxlKSxhLnJlZiE9PWIucmVmJiYoYi5mbGFnc3w9NTEyLGIuZmxhZ3N8PTIwOTcxNTIpO2Vsc2V7aWYoIWQpe2lmKG51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihwKDE2NikpO1MoYik7cmV0dXJuIG51bGx9YT1IaChFaC5jdXJyZW50KTtpZihHZyhiKSl7ZD1iLnN0YXRlTm9kZTtjPWIudHlwZTt2YXIgZj1iLm1lbW9pemVkUHJvcHM7ZFtPZl09YjtkW1BmXT1mO2E9MCE9PShiLm1vZGUmMSk7c3dpdGNoKGMpe2Nhc2UgXCJkaWFsb2dcIjpEKFwiY2FuY2VsXCIsZCk7RChcImNsb3NlXCIsZCk7YnJlYWs7Y2FzZSBcImlmcmFtZVwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwiZW1iZWRcIjpEKFwibG9hZFwiLGQpO2JyZWFrO2Nhc2UgXCJ2aWRlb1wiOmNhc2UgXCJhdWRpb1wiOmZvcihlPTA7ZTxsZi5sZW5ndGg7ZSsrKUQobGZbZV0sZCk7YnJlYWs7Y2FzZSBcInNvdXJjZVwiOkQoXCJlcnJvclwiLGQpO2JyZWFrO2Nhc2UgXCJpbWdcIjpjYXNlIFwiaW1hZ2VcIjpjYXNlIFwibGlua1wiOkQoXCJlcnJvclwiLFxuZCk7RChcImxvYWRcIixkKTticmVhaztjYXNlIFwiZGV0YWlsc1wiOkQoXCJ0b2dnbGVcIixkKTticmVhaztjYXNlIFwiaW5wdXRcIjpaYShkLGYpO0QoXCJpbnZhbGlkXCIsZCk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmQuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFmLm11bHRpcGxlfTtEKFwiaW52YWxpZFwiLGQpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmhiKGQsZiksRChcImludmFsaWRcIixkKX11YihjLGYpO2U9bnVsbDtmb3IodmFyIGcgaW4gZilpZihmLmhhc093blByb3BlcnR5KGcpKXt2YXIgaD1mW2ddO1wiY2hpbGRyZW5cIj09PWc/XCJzdHJpbmdcIj09PXR5cGVvZiBoP2QudGV4dENvbnRlbnQhPT1oJiYoITAhPT1mLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC50ZXh0Q29udGVudCxoLGEpLGU9W1wiY2hpbGRyZW5cIixoXSk6XCJudW1iZXJcIj09PXR5cGVvZiBoJiZkLnRleHRDb250ZW50IT09XCJcIitoJiYoITAhPT1mLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC50ZXh0Q29udGVudCxcbmgsYSksZT1bXCJjaGlsZHJlblwiLFwiXCIraF0pOmVhLmhhc093blByb3BlcnR5KGcpJiZudWxsIT1oJiZcIm9uU2Nyb2xsXCI9PT1nJiZEKFwic2Nyb2xsXCIsZCl9c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOlZhKGQpO2RiKGQsZiwhMCk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6VmEoZCk7amIoZCk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJvcHRpb25cIjpicmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLm9uQ2xpY2smJihkLm9uY2xpY2s9QmYpfWQ9ZTtiLnVwZGF0ZVF1ZXVlPWQ7bnVsbCE9PWQmJihiLmZsYWdzfD00KX1lbHNle2c9OT09PWUubm9kZVR5cGU/ZTplLm93bmVyRG9jdW1lbnQ7XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hJiYoYT1rYihjKSk7XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hP1wic2NyaXB0XCI9PT1jPyhhPWcuY3JlYXRlRWxlbWVudChcImRpdlwiKSxhLmlubmVySFRNTD1cIjxzY3JpcHQ+XFx4M2Mvc2NyaXB0PlwiLGE9YS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpKTpcblwic3RyaW5nXCI9PT10eXBlb2YgZC5pcz9hPWcuY3JlYXRlRWxlbWVudChjLHtpczpkLmlzfSk6KGE9Zy5jcmVhdGVFbGVtZW50KGMpLFwic2VsZWN0XCI9PT1jJiYoZz1hLGQubXVsdGlwbGU/Zy5tdWx0aXBsZT0hMDpkLnNpemUmJihnLnNpemU9ZC5zaXplKSkpOmE9Zy5jcmVhdGVFbGVtZW50TlMoYSxjKTthW09mXT1iO2FbUGZdPWQ7QWooYSxiLCExLCExKTtiLnN0YXRlTm9kZT1hO2E6e2c9dmIoYyxkKTtzd2l0Y2goYyl7Y2FzZSBcImRpYWxvZ1wiOkQoXCJjYW5jZWxcIixhKTtEKFwiY2xvc2VcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImlmcmFtZVwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwiZW1iZWRcIjpEKFwibG9hZFwiLGEpO2U9ZDticmVhaztjYXNlIFwidmlkZW9cIjpjYXNlIFwiYXVkaW9cIjpmb3IoZT0wO2U8bGYubGVuZ3RoO2UrKylEKGxmW2VdLGEpO2U9ZDticmVhaztjYXNlIFwic291cmNlXCI6RChcImVycm9yXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJpbWdcIjpjYXNlIFwiaW1hZ2VcIjpjYXNlIFwibGlua1wiOkQoXCJlcnJvclwiLFxuYSk7RChcImxvYWRcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImRldGFpbHNcIjpEKFwidG9nZ2xlXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJpbnB1dFwiOlphKGEsZCk7ZT1ZYShhLGQpO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7Y2FzZSBcIm9wdGlvblwiOmU9ZDticmVhaztjYXNlIFwic2VsZWN0XCI6YS5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIWQubXVsdGlwbGV9O2U9QSh7fSxkLHt2YWx1ZTp2b2lkIDB9KTtEKFwiaW52YWxpZFwiLGEpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmhiKGEsZCk7ZT1nYihhLGQpO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7ZGVmYXVsdDplPWR9dWIoYyxlKTtoPWU7Zm9yKGYgaW4gaClpZihoLmhhc093blByb3BlcnR5KGYpKXt2YXIgaz1oW2ZdO1wic3R5bGVcIj09PWY/c2IoYSxrKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1mPyhrPWs/ay5fX2h0bWw6dm9pZCAwLG51bGwhPWsmJm5iKGEsaykpOlwiY2hpbGRyZW5cIj09PWY/XCJzdHJpbmdcIj09PXR5cGVvZiBrPyhcInRleHRhcmVhXCIhPT1cbmN8fFwiXCIhPT1rKSYmb2IoYSxrKTpcIm51bWJlclwiPT09dHlwZW9mIGsmJm9iKGEsXCJcIitrKTpcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09ZiYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWYmJlwiYXV0b0ZvY3VzXCIhPT1mJiYoZWEuaGFzT3duUHJvcGVydHkoZik/bnVsbCE9ayYmXCJvblNjcm9sbFwiPT09ZiYmRChcInNjcm9sbFwiLGEpOm51bGwhPWsmJnRhKGEsZixrLGcpKX1zd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6VmEoYSk7ZGIoYSxkLCExKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpWYShhKTtqYihhKTticmVhaztjYXNlIFwib3B0aW9uXCI6bnVsbCE9ZC52YWx1ZSYmYS5zZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLFwiXCIrU2EoZC52YWx1ZSkpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjphLm11bHRpcGxlPSEhZC5tdWx0aXBsZTtmPWQudmFsdWU7bnVsbCE9Zj9mYihhLCEhZC5tdWx0aXBsZSxmLCExKTpudWxsIT1kLmRlZmF1bHRWYWx1ZSYmZmIoYSwhIWQubXVsdGlwbGUsZC5kZWZhdWx0VmFsdWUsXG4hMCk7YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5vbkNsaWNrJiYoYS5vbmNsaWNrPUJmKX1zd2l0Y2goYyl7Y2FzZSBcImJ1dHRvblwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwidGV4dGFyZWFcIjpkPSEhZC5hdXRvRm9jdXM7YnJlYWsgYTtjYXNlIFwiaW1nXCI6ZD0hMDticmVhayBhO2RlZmF1bHQ6ZD0hMX19ZCYmKGIuZmxhZ3N8PTQpfW51bGwhPT1iLnJlZiYmKGIuZmxhZ3N8PTUxMixiLmZsYWdzfD0yMDk3MTUyKX1TKGIpO3JldHVybiBudWxsO2Nhc2UgNjppZihhJiZudWxsIT1iLnN0YXRlTm9kZSlEaihhLGIsYS5tZW1vaXplZFByb3BzLGQpO2Vsc2V7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBkJiZudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IocCgxNjYpKTtjPUhoKEdoLmN1cnJlbnQpO0hoKEVoLmN1cnJlbnQpO2lmKEdnKGIpKXtkPWIuc3RhdGVOb2RlO2M9Yi5tZW1vaXplZFByb3BzO2RbT2ZdPWI7aWYoZj1kLm5vZGVWYWx1ZSE9PWMpaWYoYT1cbnhnLG51bGwhPT1hKXN3aXRjaChhLnRhZyl7Y2FzZSAzOkFmKGQubm9kZVZhbHVlLGMsMCE9PShhLm1vZGUmMSkpO2JyZWFrO2Nhc2UgNTohMCE9PWEubWVtb2l6ZWRQcm9wcy5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcmJkFmKGQubm9kZVZhbHVlLGMsMCE9PShhLm1vZGUmMSkpfWYmJihiLmZsYWdzfD00KX1lbHNlIGQ9KDk9PT1jLm5vZGVUeXBlP2M6Yy5vd25lckRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShkKSxkW09mXT1iLGIuc3RhdGVOb2RlPWR9UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDEzOkUoTSk7ZD1iLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PWF8fG51bGwhPT1hLm1lbW9pemVkU3RhdGUmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUuZGVoeWRyYXRlZCl7aWYoSSYmbnVsbCE9PXlnJiYwIT09KGIubW9kZSYxKSYmMD09PShiLmZsYWdzJjEyOCkpSGcoKSxJZygpLGIuZmxhZ3N8PTk4NTYwLGY9ITE7ZWxzZSBpZihmPUdnKGIpLG51bGwhPT1kJiZudWxsIT09ZC5kZWh5ZHJhdGVkKXtpZihudWxsPT09XG5hKXtpZighZil0aHJvdyBFcnJvcihwKDMxOCkpO2Y9Yi5tZW1vaXplZFN0YXRlO2Y9bnVsbCE9PWY/Zi5kZWh5ZHJhdGVkOm51bGw7aWYoIWYpdGhyb3cgRXJyb3IocCgzMTcpKTtmW09mXT1ifWVsc2UgSWcoKSwwPT09KGIuZmxhZ3MmMTI4KSYmKGIubWVtb2l6ZWRTdGF0ZT1udWxsKSxiLmZsYWdzfD00O1MoYik7Zj0hMX1lbHNlIG51bGwhPT16ZyYmKEdqKHpnKSx6Zz1udWxsKSxmPSEwO2lmKCFmKXJldHVybiBiLmZsYWdzJjY1NTM2P2I6bnVsbH1pZigwIT09KGIuZmxhZ3MmMTI4KSlyZXR1cm4gYi5sYW5lcz1jLGI7ZD1udWxsIT09ZDtkIT09KG51bGwhPT1hJiZudWxsIT09YS5tZW1vaXplZFN0YXRlKSYmZCYmKGIuY2hpbGQuZmxhZ3N8PTgxOTIsMCE9PShiLm1vZGUmMSkmJihudWxsPT09YXx8MCE9PShNLmN1cnJlbnQmMSk/MD09PVQmJihUPTMpOnVqKCkpKTtudWxsIT09Yi51cGRhdGVRdWV1ZSYmKGIuZmxhZ3N8PTQpO1MoYik7cmV0dXJuIG51bGw7Y2FzZSA0OnJldHVybiBKaCgpLFxuQmooYSxiKSxudWxsPT09YSYmc2YoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksUyhiKSxudWxsO2Nhc2UgMTA6cmV0dXJuIFJnKGIudHlwZS5fY29udGV4dCksUyhiKSxudWxsO2Nhc2UgMTc6cmV0dXJuIFpmKGIudHlwZSkmJiRmKCksUyhiKSxudWxsO2Nhc2UgMTk6RShNKTtmPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09ZilyZXR1cm4gUyhiKSxudWxsO2Q9MCE9PShiLmZsYWdzJjEyOCk7Zz1mLnJlbmRlcmluZztpZihudWxsPT09ZylpZihkKUVqKGYsITEpO2Vsc2V7aWYoMCE9PVR8fG51bGwhPT1hJiYwIT09KGEuZmxhZ3MmMTI4KSlmb3IoYT1iLmNoaWxkO251bGwhPT1hOyl7Zz1NaChhKTtpZihudWxsIT09Zyl7Yi5mbGFnc3w9MTI4O0VqKGYsITEpO2Q9Zy51cGRhdGVRdWV1ZTtudWxsIT09ZCYmKGIudXBkYXRlUXVldWU9ZCxiLmZsYWdzfD00KTtiLnN1YnRyZWVGbGFncz0wO2Q9Yztmb3IoYz1iLmNoaWxkO251bGwhPT1jOylmPWMsYT1kLGYuZmxhZ3MmPTE0NjgwMDY2LFxuZz1mLmFsdGVybmF0ZSxudWxsPT09Zz8oZi5jaGlsZExhbmVzPTAsZi5sYW5lcz1hLGYuY2hpbGQ9bnVsbCxmLnN1YnRyZWVGbGFncz0wLGYubWVtb2l6ZWRQcm9wcz1udWxsLGYubWVtb2l6ZWRTdGF0ZT1udWxsLGYudXBkYXRlUXVldWU9bnVsbCxmLmRlcGVuZGVuY2llcz1udWxsLGYuc3RhdGVOb2RlPW51bGwpOihmLmNoaWxkTGFuZXM9Zy5jaGlsZExhbmVzLGYubGFuZXM9Zy5sYW5lcyxmLmNoaWxkPWcuY2hpbGQsZi5zdWJ0cmVlRmxhZ3M9MCxmLmRlbGV0aW9ucz1udWxsLGYubWVtb2l6ZWRQcm9wcz1nLm1lbW9pemVkUHJvcHMsZi5tZW1vaXplZFN0YXRlPWcubWVtb2l6ZWRTdGF0ZSxmLnVwZGF0ZVF1ZXVlPWcudXBkYXRlUXVldWUsZi50eXBlPWcudHlwZSxhPWcuZGVwZW5kZW5jaWVzLGYuZGVwZW5kZW5jaWVzPW51bGw9PT1hP251bGw6e2xhbmVzOmEubGFuZXMsZmlyc3RDb250ZXh0OmEuZmlyc3RDb250ZXh0fSksYz1jLnNpYmxpbmc7RyhNLE0uY3VycmVudCYxfDIpO3JldHVybiBiLmNoaWxkfWE9XG5hLnNpYmxpbmd9bnVsbCE9PWYudGFpbCYmQigpPkhqJiYoYi5mbGFnc3w9MTI4LGQ9ITAsRWooZiwhMSksYi5sYW5lcz00MTk0MzA0KX1lbHNle2lmKCFkKWlmKGE9TWgoZyksbnVsbCE9PWEpe2lmKGIuZmxhZ3N8PTEyOCxkPSEwLGM9YS51cGRhdGVRdWV1ZSxudWxsIT09YyYmKGIudXBkYXRlUXVldWU9YyxiLmZsYWdzfD00KSxFaihmLCEwKSxudWxsPT09Zi50YWlsJiZcImhpZGRlblwiPT09Zi50YWlsTW9kZSYmIWcuYWx0ZXJuYXRlJiYhSSlyZXR1cm4gUyhiKSxudWxsfWVsc2UgMipCKCktZi5yZW5kZXJpbmdTdGFydFRpbWU+SGomJjEwNzM3NDE4MjQhPT1jJiYoYi5mbGFnc3w9MTI4LGQ9ITAsRWooZiwhMSksYi5sYW5lcz00MTk0MzA0KTtmLmlzQmFja3dhcmRzPyhnLnNpYmxpbmc9Yi5jaGlsZCxiLmNoaWxkPWcpOihjPWYubGFzdCxudWxsIT09Yz9jLnNpYmxpbmc9ZzpiLmNoaWxkPWcsZi5sYXN0PWcpfWlmKG51bGwhPT1mLnRhaWwpcmV0dXJuIGI9Zi50YWlsLGYucmVuZGVyaW5nPVxuYixmLnRhaWw9Yi5zaWJsaW5nLGYucmVuZGVyaW5nU3RhcnRUaW1lPUIoKSxiLnNpYmxpbmc9bnVsbCxjPU0uY3VycmVudCxHKE0sZD9jJjF8MjpjJjEpLGI7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIElqKCksZD1udWxsIT09Yi5tZW1vaXplZFN0YXRlLG51bGwhPT1hJiZudWxsIT09YS5tZW1vaXplZFN0YXRlIT09ZCYmKGIuZmxhZ3N8PTgxOTIpLGQmJjAhPT0oYi5tb2RlJjEpPzAhPT0oZ2omMTA3Mzc0MTgyNCkmJihTKGIpLGIuc3VidHJlZUZsYWdzJjYmJihiLmZsYWdzfD04MTkyKSk6UyhiKSxudWxsO2Nhc2UgMjQ6cmV0dXJuIG51bGw7Y2FzZSAyNTpyZXR1cm4gbnVsbH10aHJvdyBFcnJvcihwKDE1NixiLnRhZykpO31cbmZ1bmN0aW9uIEpqKGEsYil7d2coYik7c3dpdGNoKGIudGFnKXtjYXNlIDE6cmV0dXJuIFpmKGIudHlwZSkmJiRmKCksYT1iLmZsYWdzLGEmNjU1MzY/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSAzOnJldHVybiBKaCgpLEUoV2YpLEUoSCksT2goKSxhPWIuZmxhZ3MsMCE9PShhJjY1NTM2KSYmMD09PShhJjEyOCk/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSA1OnJldHVybiBMaChiKSxudWxsO2Nhc2UgMTM6RShNKTthPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YSYmbnVsbCE9PWEuZGVoeWRyYXRlZCl7aWYobnVsbD09PWIuYWx0ZXJuYXRlKXRocm93IEVycm9yKHAoMzQwKSk7SWcoKX1hPWIuZmxhZ3M7cmV0dXJuIGEmNjU1MzY/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSAxOTpyZXR1cm4gRShNKSxudWxsO2Nhc2UgNDpyZXR1cm4gSmgoKSxudWxsO2Nhc2UgMTA6cmV0dXJuIFJnKGIudHlwZS5fY29udGV4dCksbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIElqKCksXG5udWxsO2Nhc2UgMjQ6cmV0dXJuIG51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbH19dmFyIEtqPSExLFU9ITEsTGo9XCJmdW5jdGlvblwiPT09dHlwZW9mIFdlYWtTZXQ/V2Vha1NldDpTZXQsVj1udWxsO2Z1bmN0aW9uIE1qKGEsYil7dmFyIGM9YS5yZWY7aWYobnVsbCE9PWMpaWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGMpdHJ5e2MobnVsbCl9Y2F0Y2goZCl7VyhhLGIsZCl9ZWxzZSBjLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBOaihhLGIsYyl7dHJ5e2MoKX1jYXRjaChkKXtXKGEsYixkKX19dmFyIE9qPSExO1xuZnVuY3Rpb24gUGooYSxiKXtDZj1kZDthPU1lKCk7aWYoTmUoYSkpe2lmKFwic2VsZWN0aW9uU3RhcnRcImluIGEpdmFyIGM9e3N0YXJ0OmEuc2VsZWN0aW9uU3RhcnQsZW5kOmEuc2VsZWN0aW9uRW5kfTtlbHNlIGE6e2M9KGM9YS5vd25lckRvY3VtZW50KSYmYy5kZWZhdWx0Vmlld3x8d2luZG93O3ZhciBkPWMuZ2V0U2VsZWN0aW9uJiZjLmdldFNlbGVjdGlvbigpO2lmKGQmJjAhPT1kLnJhbmdlQ291bnQpe2M9ZC5hbmNob3JOb2RlO3ZhciBlPWQuYW5jaG9yT2Zmc2V0LGY9ZC5mb2N1c05vZGU7ZD1kLmZvY3VzT2Zmc2V0O3RyeXtjLm5vZGVUeXBlLGYubm9kZVR5cGV9Y2F0Y2goRil7Yz1udWxsO2JyZWFrIGF9dmFyIGc9MCxoPS0xLGs9LTEsbD0wLG09MCxxPWEscj1udWxsO2I6Zm9yKDs7KXtmb3IodmFyIHk7Oyl7cSE9PWN8fDAhPT1lJiYzIT09cS5ub2RlVHlwZXx8KGg9ZytlKTtxIT09Znx8MCE9PWQmJjMhPT1xLm5vZGVUeXBlfHwoaz1nK2QpOzM9PT1xLm5vZGVUeXBlJiYoZys9XG5xLm5vZGVWYWx1ZS5sZW5ndGgpO2lmKG51bGw9PT0oeT1xLmZpcnN0Q2hpbGQpKWJyZWFrO3I9cTtxPXl9Zm9yKDs7KXtpZihxPT09YSlicmVhayBiO3I9PT1jJiYrK2w9PT1lJiYoaD1nKTtyPT09ZiYmKyttPT09ZCYmKGs9Zyk7aWYobnVsbCE9PSh5PXEubmV4dFNpYmxpbmcpKWJyZWFrO3E9cjtyPXEucGFyZW50Tm9kZX1xPXl9Yz0tMT09PWh8fC0xPT09az9udWxsOntzdGFydDpoLGVuZDprfX1lbHNlIGM9bnVsbH1jPWN8fHtzdGFydDowLGVuZDowfX1lbHNlIGM9bnVsbDtEZj17Zm9jdXNlZEVsZW06YSxzZWxlY3Rpb25SYW5nZTpjfTtkZD0hMTtmb3IoVj1iO251bGwhPT1WOylpZihiPVYsYT1iLmNoaWxkLDAhPT0oYi5zdWJ0cmVlRmxhZ3MmMTAyOCkmJm51bGwhPT1hKWEucmV0dXJuPWIsVj1hO2Vsc2UgZm9yKDtudWxsIT09Vjspe2I9Vjt0cnl7dmFyIG49Yi5hbHRlcm5hdGU7aWYoMCE9PShiLmZsYWdzJjEwMjQpKXN3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpicmVhaztcbmNhc2UgMTppZihudWxsIT09bil7dmFyIHQ9bi5tZW1vaXplZFByb3BzLEo9bi5tZW1vaXplZFN0YXRlLHg9Yi5zdGF0ZU5vZGUsdz14LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKGIuZWxlbWVudFR5cGU9PT1iLnR5cGU/dDpMZyhiLnR5cGUsdCksSik7eC5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZT13fWJyZWFrO2Nhc2UgMzp2YXIgdT1iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOzE9PT11Lm5vZGVUeXBlP3UudGV4dENvbnRlbnQ9XCJcIjo5PT09dS5ub2RlVHlwZSYmdS5kb2N1bWVudEVsZW1lbnQmJnUucmVtb3ZlQ2hpbGQodS5kb2N1bWVudEVsZW1lbnQpO2JyZWFrO2Nhc2UgNTpjYXNlIDY6Y2FzZSA0OmNhc2UgMTc6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MykpO319Y2F0Y2goRil7VyhiLGIucmV0dXJuLEYpfWE9Yi5zaWJsaW5nO2lmKG51bGwhPT1hKXthLnJldHVybj1iLnJldHVybjtWPWE7YnJlYWt9Vj1iLnJldHVybn1uPU9qO09qPSExO3JldHVybiBufVxuZnVuY3Rpb24gUWooYSxiLGMpe3ZhciBkPWIudXBkYXRlUXVldWU7ZD1udWxsIT09ZD9kLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09ZCl7dmFyIGU9ZD1kLm5leHQ7ZG97aWYoKGUudGFnJmEpPT09YSl7dmFyIGY9ZS5kZXN0cm95O2UuZGVzdHJveT12b2lkIDA7dm9pZCAwIT09ZiYmTmooYixjLGYpfWU9ZS5uZXh0fXdoaWxlKGUhPT1kKX19ZnVuY3Rpb24gUmooYSxiKXtiPWIudXBkYXRlUXVldWU7Yj1udWxsIT09Yj9iLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09Yil7dmFyIGM9Yj1iLm5leHQ7ZG97aWYoKGMudGFnJmEpPT09YSl7dmFyIGQ9Yy5jcmVhdGU7Yy5kZXN0cm95PWQoKX1jPWMubmV4dH13aGlsZShjIT09Yil9fWZ1bmN0aW9uIFNqKGEpe3ZhciBiPWEucmVmO2lmKG51bGwhPT1iKXt2YXIgYz1hLnN0YXRlTm9kZTtzd2l0Y2goYS50YWcpe2Nhc2UgNTphPWM7YnJlYWs7ZGVmYXVsdDphPWN9XCJmdW5jdGlvblwiPT09dHlwZW9mIGI/YihhKTpiLmN1cnJlbnQ9YX19XG5mdW5jdGlvbiBUaihhKXt2YXIgYj1hLmFsdGVybmF0ZTtudWxsIT09YiYmKGEuYWx0ZXJuYXRlPW51bGwsVGooYikpO2EuY2hpbGQ9bnVsbDthLmRlbGV0aW9ucz1udWxsO2Euc2libGluZz1udWxsOzU9PT1hLnRhZyYmKGI9YS5zdGF0ZU5vZGUsbnVsbCE9PWImJihkZWxldGUgYltPZl0sZGVsZXRlIGJbUGZdLGRlbGV0ZSBiW29mXSxkZWxldGUgYltRZl0sZGVsZXRlIGJbUmZdKSk7YS5zdGF0ZU5vZGU9bnVsbDthLnJldHVybj1udWxsO2EuZGVwZW5kZW5jaWVzPW51bGw7YS5tZW1vaXplZFByb3BzPW51bGw7YS5tZW1vaXplZFN0YXRlPW51bGw7YS5wZW5kaW5nUHJvcHM9bnVsbDthLnN0YXRlTm9kZT1udWxsO2EudXBkYXRlUXVldWU9bnVsbH1mdW5jdGlvbiBVaihhKXtyZXR1cm4gNT09PWEudGFnfHwzPT09YS50YWd8fDQ9PT1hLnRhZ31cbmZ1bmN0aW9uIFZqKGEpe2E6Zm9yKDs7KXtmb3IoO251bGw9PT1hLnNpYmxpbmc7KXtpZihudWxsPT09YS5yZXR1cm58fFVqKGEucmV0dXJuKSlyZXR1cm4gbnVsbDthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47Zm9yKGE9YS5zaWJsaW5nOzUhPT1hLnRhZyYmNiE9PWEudGFnJiYxOCE9PWEudGFnOyl7aWYoYS5mbGFncyYyKWNvbnRpbnVlIGE7aWYobnVsbD09PWEuY2hpbGR8fDQ9PT1hLnRhZyljb250aW51ZSBhO2Vsc2UgYS5jaGlsZC5yZXR1cm49YSxhPWEuY2hpbGR9aWYoIShhLmZsYWdzJjIpKXJldHVybiBhLnN0YXRlTm9kZX19XG5mdW5jdGlvbiBXaihhLGIsYyl7dmFyIGQ9YS50YWc7aWYoNT09PWR8fDY9PT1kKWE9YS5zdGF0ZU5vZGUsYj84PT09Yy5ub2RlVHlwZT9jLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYik6Yy5pbnNlcnRCZWZvcmUoYSxiKTooOD09PWMubm9kZVR5cGU/KGI9Yy5wYXJlbnROb2RlLGIuaW5zZXJ0QmVmb3JlKGEsYykpOihiPWMsYi5hcHBlbmRDaGlsZChhKSksYz1jLl9yZWFjdFJvb3RDb250YWluZXIsbnVsbCE9PWMmJnZvaWQgMCE9PWN8fG51bGwhPT1iLm9uY2xpY2t8fChiLm9uY2xpY2s9QmYpKTtlbHNlIGlmKDQhPT1kJiYoYT1hLmNoaWxkLG51bGwhPT1hKSlmb3IoV2ooYSxiLGMpLGE9YS5zaWJsaW5nO251bGwhPT1hOylXaihhLGIsYyksYT1hLnNpYmxpbmd9XG5mdW5jdGlvbiBYaihhLGIsYyl7dmFyIGQ9YS50YWc7aWYoNT09PWR8fDY9PT1kKWE9YS5zdGF0ZU5vZGUsYj9jLmluc2VydEJlZm9yZShhLGIpOmMuYXBwZW5kQ2hpbGQoYSk7ZWxzZSBpZig0IT09ZCYmKGE9YS5jaGlsZCxudWxsIT09YSkpZm9yKFhqKGEsYixjKSxhPWEuc2libGluZztudWxsIT09YTspWGooYSxiLGMpLGE9YS5zaWJsaW5nfXZhciBYPW51bGwsWWo9ITE7ZnVuY3Rpb24gWmooYSxiLGMpe2ZvcihjPWMuY2hpbGQ7bnVsbCE9PWM7KWFrKGEsYixjKSxjPWMuc2libGluZ31cbmZ1bmN0aW9uIGFrKGEsYixjKXtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uQ29tbWl0RmliZXJVbm1vdW50KXRyeXtsYy5vbkNvbW1pdEZpYmVyVW5tb3VudChrYyxjKX1jYXRjaChoKXt9c3dpdGNoKGMudGFnKXtjYXNlIDU6VXx8TWooYyxiKTtjYXNlIDY6dmFyIGQ9WCxlPVlqO1g9bnVsbDtaaihhLGIsYyk7WD1kO1lqPWU7bnVsbCE9PVgmJihZaj8oYT1YLGM9Yy5zdGF0ZU5vZGUsOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpOmEucmVtb3ZlQ2hpbGQoYykpOlgucmVtb3ZlQ2hpbGQoYy5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDE4Om51bGwhPT1YJiYoWWo/KGE9WCxjPWMuc3RhdGVOb2RlLDg9PT1hLm5vZGVUeXBlP0tmKGEucGFyZW50Tm9kZSxjKToxPT09YS5ub2RlVHlwZSYmS2YoYSxjKSxiZChhKSk6S2YoWCxjLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgNDpkPVg7ZT1ZajtYPWMuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87WWo9ITA7XG5aaihhLGIsYyk7WD1kO1lqPWU7YnJlYWs7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmlmKCFVJiYoZD1jLnVwZGF0ZVF1ZXVlLG51bGwhPT1kJiYoZD1kLmxhc3RFZmZlY3QsbnVsbCE9PWQpKSl7ZT1kPWQubmV4dDtkb3t2YXIgZj1lLGc9Zi5kZXN0cm95O2Y9Zi50YWc7dm9pZCAwIT09ZyYmKDAhPT0oZiYyKT9OaihjLGIsZyk6MCE9PShmJjQpJiZOaihjLGIsZykpO2U9ZS5uZXh0fXdoaWxlKGUhPT1kKX1aaihhLGIsYyk7YnJlYWs7Y2FzZSAxOmlmKCFVJiYoTWooYyxiKSxkPWMuc3RhdGVOb2RlLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudFdpbGxVbm1vdW50KSl0cnl7ZC5wcm9wcz1jLm1lbW9pemVkUHJvcHMsZC5zdGF0ZT1jLm1lbW9pemVkU3RhdGUsZC5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKGgpe1coYyxiLGgpfVpqKGEsYixjKTticmVhaztjYXNlIDIxOlpqKGEsYixjKTticmVhaztjYXNlIDIyOmMubW9kZSYxPyhVPShkPVUpfHxudWxsIT09XG5jLm1lbW9pemVkU3RhdGUsWmooYSxiLGMpLFU9ZCk6WmooYSxiLGMpO2JyZWFrO2RlZmF1bHQ6WmooYSxiLGMpfX1mdW5jdGlvbiBiayhhKXt2YXIgYj1hLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1iKXthLnVwZGF0ZVF1ZXVlPW51bGw7dmFyIGM9YS5zdGF0ZU5vZGU7bnVsbD09PWMmJihjPWEuc3RhdGVOb2RlPW5ldyBMaik7Yi5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPWNrLmJpbmQobnVsbCxhLGIpO2MuaGFzKGIpfHwoYy5hZGQoYiksYi50aGVuKGQsZCkpfSl9fVxuZnVuY3Rpb24gZGsoYSxiKXt2YXIgYz1iLmRlbGV0aW9ucztpZihudWxsIT09Yylmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXTt0cnl7dmFyIGY9YSxnPWIsaD1nO2E6Zm9yKDtudWxsIT09aDspe3N3aXRjaChoLnRhZyl7Y2FzZSA1Olg9aC5zdGF0ZU5vZGU7WWo9ITE7YnJlYWsgYTtjYXNlIDM6WD1oLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1lqPSEwO2JyZWFrIGE7Y2FzZSA0Olg9aC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztZaj0hMDticmVhayBhfWg9aC5yZXR1cm59aWYobnVsbD09PVgpdGhyb3cgRXJyb3IocCgxNjApKTthayhmLGcsZSk7WD1udWxsO1lqPSExO3ZhciBrPWUuYWx0ZXJuYXRlO251bGwhPT1rJiYoay5yZXR1cm49bnVsbCk7ZS5yZXR1cm49bnVsbH1jYXRjaChsKXtXKGUsYixsKX19aWYoYi5zdWJ0cmVlRmxhZ3MmMTI4NTQpZm9yKGI9Yi5jaGlsZDtudWxsIT09YjspZWsoYixhKSxiPWIuc2libGluZ31cbmZ1bmN0aW9uIGVrKGEsYil7dmFyIGM9YS5hbHRlcm5hdGUsZD1hLmZsYWdzO3N3aXRjaChhLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmRrKGIsYSk7ZmsoYSk7aWYoZCY0KXt0cnl7UWooMyxhLGEucmV0dXJuKSxSaigzLGEpfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX10cnl7UWooNSxhLGEucmV0dXJuKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgMTpkayhiLGEpO2ZrKGEpO2QmNTEyJiZudWxsIT09YyYmTWooYyxjLnJldHVybik7YnJlYWs7Y2FzZSA1OmRrKGIsYSk7ZmsoYSk7ZCY1MTImJm51bGwhPT1jJiZNaihjLGMucmV0dXJuKTtpZihhLmZsYWdzJjMyKXt2YXIgZT1hLnN0YXRlTm9kZTt0cnl7b2IoZSxcIlwiKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWlmKGQmNCYmKGU9YS5zdGF0ZU5vZGUsbnVsbCE9ZSkpe3ZhciBmPWEubWVtb2l6ZWRQcm9wcyxnPW51bGwhPT1jP2MubWVtb2l6ZWRQcm9wczpmLGg9YS50eXBlLGs9YS51cGRhdGVRdWV1ZTtcbmEudXBkYXRlUXVldWU9bnVsbDtpZihudWxsIT09ayl0cnl7XCJpbnB1dFwiPT09aCYmXCJyYWRpb1wiPT09Zi50eXBlJiZudWxsIT1mLm5hbWUmJmFiKGUsZik7dmIoaCxnKTt2YXIgbD12YihoLGYpO2ZvcihnPTA7ZzxrLmxlbmd0aDtnKz0yKXt2YXIgbT1rW2ddLHE9a1tnKzFdO1wic3R5bGVcIj09PW0/c2IoZSxxKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1tP25iKGUscSk6XCJjaGlsZHJlblwiPT09bT9vYihlLHEpOnRhKGUsbSxxLGwpfXN3aXRjaChoKXtjYXNlIFwiaW5wdXRcIjpiYihlLGYpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmliKGUsZik7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOnZhciByPWUuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtlLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9ISFmLm11bHRpcGxlO3ZhciB5PWYudmFsdWU7bnVsbCE9eT9mYihlLCEhZi5tdWx0aXBsZSx5LCExKTpyIT09ISFmLm11bHRpcGxlJiYobnVsbCE9Zi5kZWZhdWx0VmFsdWU/ZmIoZSwhIWYubXVsdGlwbGUsXG5mLmRlZmF1bHRWYWx1ZSwhMCk6ZmIoZSwhIWYubXVsdGlwbGUsZi5tdWx0aXBsZT9bXTpcIlwiLCExKSl9ZVtQZl09Zn1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgNjpkayhiLGEpO2ZrKGEpO2lmKGQmNCl7aWYobnVsbD09PWEuc3RhdGVOb2RlKXRocm93IEVycm9yKHAoMTYyKSk7ZT1hLnN0YXRlTm9kZTtmPWEubWVtb2l6ZWRQcm9wczt0cnl7ZS5ub2RlVmFsdWU9Zn1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgMzpkayhiLGEpO2ZrKGEpO2lmKGQmNCYmbnVsbCE9PWMmJmMubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpdHJ5e2JkKGIuY29udGFpbmVySW5mbyl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfWJyZWFrO2Nhc2UgNDpkayhiLGEpO2ZrKGEpO2JyZWFrO2Nhc2UgMTM6ZGsoYixhKTtmayhhKTtlPWEuY2hpbGQ7ZS5mbGFncyY4MTkyJiYoZj1udWxsIT09ZS5tZW1vaXplZFN0YXRlLGUuc3RhdGVOb2RlLmlzSGlkZGVuPWYsIWZ8fFxubnVsbCE9PWUuYWx0ZXJuYXRlJiZudWxsIT09ZS5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZXx8KGdrPUIoKSkpO2QmNCYmYmsoYSk7YnJlYWs7Y2FzZSAyMjptPW51bGwhPT1jJiZudWxsIT09Yy5tZW1vaXplZFN0YXRlO2EubW9kZSYxPyhVPShsPVUpfHxtLGRrKGIsYSksVT1sKTpkayhiLGEpO2ZrKGEpO2lmKGQmODE5Mil7bD1udWxsIT09YS5tZW1vaXplZFN0YXRlO2lmKChhLnN0YXRlTm9kZS5pc0hpZGRlbj1sKSYmIW0mJjAhPT0oYS5tb2RlJjEpKWZvcihWPWEsbT1hLmNoaWxkO251bGwhPT1tOyl7Zm9yKHE9Vj1tO251bGwhPT1WOyl7cj1WO3k9ci5jaGlsZDtzd2l0Y2goci50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpRaig0LHIsci5yZXR1cm4pO2JyZWFrO2Nhc2UgMTpNaihyLHIucmV0dXJuKTt2YXIgbj1yLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygbi5jb21wb25lbnRXaWxsVW5tb3VudCl7ZD1yO2M9ci5yZXR1cm47dHJ5e2I9ZCxuLnByb3BzPVxuYi5tZW1vaXplZFByb3BzLG4uc3RhdGU9Yi5tZW1vaXplZFN0YXRlLG4uY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaCh0KXtXKGQsYyx0KX19YnJlYWs7Y2FzZSA1Ok1qKHIsci5yZXR1cm4pO2JyZWFrO2Nhc2UgMjI6aWYobnVsbCE9PXIubWVtb2l6ZWRTdGF0ZSl7aGsocSk7Y29udGludWV9fW51bGwhPT15Pyh5LnJldHVybj1yLFY9eSk6aGsocSl9bT1tLnNpYmxpbmd9YTpmb3IobT1udWxsLHE9YTs7KXtpZig1PT09cS50YWcpe2lmKG51bGw9PT1tKXttPXE7dHJ5e2U9cS5zdGF0ZU5vZGUsbD8oZj1lLnN0eWxlLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLnNldFByb3BlcnR5P2Yuc2V0UHJvcGVydHkoXCJkaXNwbGF5XCIsXCJub25lXCIsXCJpbXBvcnRhbnRcIik6Zi5kaXNwbGF5PVwibm9uZVwiKTooaD1xLnN0YXRlTm9kZSxrPXEubWVtb2l6ZWRQcm9wcy5zdHlsZSxnPXZvaWQgMCE9PWsmJm51bGwhPT1rJiZrLmhhc093blByb3BlcnR5KFwiZGlzcGxheVwiKT9rLmRpc3BsYXk6bnVsbCxoLnN0eWxlLmRpc3BsYXk9XG5yYihcImRpc3BsYXlcIixnKSl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX19ZWxzZSBpZig2PT09cS50YWcpe2lmKG51bGw9PT1tKXRyeXtxLnN0YXRlTm9kZS5ub2RlVmFsdWU9bD9cIlwiOnEubWVtb2l6ZWRQcm9wc31jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWVsc2UgaWYoKDIyIT09cS50YWcmJjIzIT09cS50YWd8fG51bGw9PT1xLm1lbW9pemVkU3RhdGV8fHE9PT1hKSYmbnVsbCE9PXEuY2hpbGQpe3EuY2hpbGQucmV0dXJuPXE7cT1xLmNoaWxkO2NvbnRpbnVlfWlmKHE9PT1hKWJyZWFrIGE7Zm9yKDtudWxsPT09cS5zaWJsaW5nOyl7aWYobnVsbD09PXEucmV0dXJufHxxLnJldHVybj09PWEpYnJlYWsgYTttPT09cSYmKG09bnVsbCk7cT1xLnJldHVybn1tPT09cSYmKG09bnVsbCk7cS5zaWJsaW5nLnJldHVybj1xLnJldHVybjtxPXEuc2libGluZ319YnJlYWs7Y2FzZSAxOTpkayhiLGEpO2ZrKGEpO2QmNCYmYmsoYSk7YnJlYWs7Y2FzZSAyMTpicmVhaztkZWZhdWx0OmRrKGIsXG5hKSxmayhhKX19ZnVuY3Rpb24gZmsoYSl7dmFyIGI9YS5mbGFncztpZihiJjIpe3RyeXthOntmb3IodmFyIGM9YS5yZXR1cm47bnVsbCE9PWM7KXtpZihVaihjKSl7dmFyIGQ9YzticmVhayBhfWM9Yy5yZXR1cm59dGhyb3cgRXJyb3IocCgxNjApKTt9c3dpdGNoKGQudGFnKXtjYXNlIDU6dmFyIGU9ZC5zdGF0ZU5vZGU7ZC5mbGFncyYzMiYmKG9iKGUsXCJcIiksZC5mbGFncyY9LTMzKTt2YXIgZj1WaihhKTtYaihhLGYsZSk7YnJlYWs7Y2FzZSAzOmNhc2UgNDp2YXIgZz1kLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGg9VmooYSk7V2ooYSxoLGcpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgxNjEpKTt9fWNhdGNoKGspe1coYSxhLnJldHVybixrKX1hLmZsYWdzJj0tM31iJjQwOTYmJihhLmZsYWdzJj0tNDA5Nyl9ZnVuY3Rpb24gaWsoYSxiLGMpe1Y9YTtqayhhLGIsYyl9XG5mdW5jdGlvbiBqayhhLGIsYyl7Zm9yKHZhciBkPTAhPT0oYS5tb2RlJjEpO251bGwhPT1WOyl7dmFyIGU9VixmPWUuY2hpbGQ7aWYoMjI9PT1lLnRhZyYmZCl7dmFyIGc9bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZXx8S2o7aWYoIWcpe3ZhciBoPWUuYWx0ZXJuYXRlLGs9bnVsbCE9PWgmJm51bGwhPT1oLm1lbW9pemVkU3RhdGV8fFU7aD1Lajt2YXIgbD1VO0tqPWc7aWYoKFU9aykmJiFsKWZvcihWPWU7bnVsbCE9PVY7KWc9VixrPWcuY2hpbGQsMjI9PT1nLnRhZyYmbnVsbCE9PWcubWVtb2l6ZWRTdGF0ZT9rayhlKTpudWxsIT09az8oay5yZXR1cm49ZyxWPWspOmtrKGUpO2Zvcig7bnVsbCE9PWY7KVY9ZixqayhmLGIsYyksZj1mLnNpYmxpbmc7Vj1lO0tqPWg7VT1sfWxrKGEsYixjKX1lbHNlIDAhPT0oZS5zdWJ0cmVlRmxhZ3MmODc3MikmJm51bGwhPT1mPyhmLnJldHVybj1lLFY9Zik6bGsoYSxiLGMpfX1cbmZ1bmN0aW9uIGxrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO2lmKDAhPT0oYi5mbGFncyY4NzcyKSl7dmFyIGM9Yi5hbHRlcm5hdGU7dHJ5e2lmKDAhPT0oYi5mbGFncyY4NzcyKSlzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6VXx8UmooNSxiKTticmVhaztjYXNlIDE6dmFyIGQ9Yi5zdGF0ZU5vZGU7aWYoYi5mbGFncyY0JiYhVSlpZihudWxsPT09YylkLmNvbXBvbmVudERpZE1vdW50KCk7ZWxzZXt2YXIgZT1iLmVsZW1lbnRUeXBlPT09Yi50eXBlP2MubWVtb2l6ZWRQcm9wczpMZyhiLnR5cGUsYy5tZW1vaXplZFByb3BzKTtkLmNvbXBvbmVudERpZFVwZGF0ZShlLGMubWVtb2l6ZWRTdGF0ZSxkLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlKX12YXIgZj1iLnVwZGF0ZVF1ZXVlO251bGwhPT1mJiZpaChiLGYsZCk7YnJlYWs7Y2FzZSAzOnZhciBnPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWcpe2M9bnVsbDtpZihudWxsIT09Yi5jaGlsZClzd2l0Y2goYi5jaGlsZC50YWcpe2Nhc2UgNTpjPVxuYi5jaGlsZC5zdGF0ZU5vZGU7YnJlYWs7Y2FzZSAxOmM9Yi5jaGlsZC5zdGF0ZU5vZGV9aWgoYixnLGMpfWJyZWFrO2Nhc2UgNTp2YXIgaD1iLnN0YXRlTm9kZTtpZihudWxsPT09YyYmYi5mbGFncyY0KXtjPWg7dmFyIGs9Yi5tZW1vaXplZFByb3BzO3N3aXRjaChiLnR5cGUpe2Nhc2UgXCJidXR0b25cIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwic2VsZWN0XCI6Y2FzZSBcInRleHRhcmVhXCI6ay5hdXRvRm9jdXMmJmMuZm9jdXMoKTticmVhaztjYXNlIFwiaW1nXCI6ay5zcmMmJihjLnNyYz1rLnNyYyl9fWJyZWFrO2Nhc2UgNjpicmVhaztjYXNlIDQ6YnJlYWs7Y2FzZSAxMjpicmVhaztjYXNlIDEzOmlmKG51bGw9PT1iLm1lbW9pemVkU3RhdGUpe3ZhciBsPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1sKXt2YXIgbT1sLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PW0pe3ZhciBxPW0uZGVoeWRyYXRlZDtudWxsIT09cSYmYmQocSl9fX1icmVhaztjYXNlIDE5OmNhc2UgMTc6Y2FzZSAyMTpjYXNlIDIyOmNhc2UgMjM6Y2FzZSAyNTpicmVhaztcbmRlZmF1bHQ6dGhyb3cgRXJyb3IocCgxNjMpKTt9VXx8Yi5mbGFncyY1MTImJlNqKGIpfWNhdGNoKHIpe1coYixiLnJldHVybixyKX19aWYoYj09PWEpe1Y9bnVsbDticmVha31jPWIuc2libGluZztpZihudWxsIT09Yyl7Yy5yZXR1cm49Yi5yZXR1cm47Vj1jO2JyZWFrfVY9Yi5yZXR1cm59fWZ1bmN0aW9uIGhrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO2lmKGI9PT1hKXtWPW51bGw7YnJlYWt9dmFyIGM9Yi5zaWJsaW5nO2lmKG51bGwhPT1jKXtjLnJldHVybj1iLnJldHVybjtWPWM7YnJlYWt9Vj1iLnJldHVybn19XG5mdW5jdGlvbiBrayhhKXtmb3IoO251bGwhPT1WOyl7dmFyIGI9Vjt0cnl7c3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OnZhciBjPWIucmV0dXJuO3RyeXtSaig0LGIpfWNhdGNoKGspe1coYixjLGspfWJyZWFrO2Nhc2UgMTp2YXIgZD1iLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnREaWRNb3VudCl7dmFyIGU9Yi5yZXR1cm47dHJ5e2QuY29tcG9uZW50RGlkTW91bnQoKX1jYXRjaChrKXtXKGIsZSxrKX19dmFyIGY9Yi5yZXR1cm47dHJ5e1NqKGIpfWNhdGNoKGspe1coYixmLGspfWJyZWFrO2Nhc2UgNTp2YXIgZz1iLnJldHVybjt0cnl7U2ooYil9Y2F0Y2goayl7VyhiLGcsayl9fX1jYXRjaChrKXtXKGIsYi5yZXR1cm4sayl9aWYoYj09PWEpe1Y9bnVsbDticmVha312YXIgaD1iLnNpYmxpbmc7aWYobnVsbCE9PWgpe2gucmV0dXJuPWIucmV0dXJuO1Y9aDticmVha31WPWIucmV0dXJufX1cbnZhciBtaz1NYXRoLmNlaWwsbms9dWEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixvaz11YS5SZWFjdEN1cnJlbnRPd25lcixwaz11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxLPTAsUj1udWxsLFk9bnVsbCxaPTAsZ2o9MCxmaj1VZigwKSxUPTAscWs9bnVsbCxoaD0wLHJrPTAsc2s9MCx0az1udWxsLHVrPW51bGwsZ2s9MCxIaj1JbmZpbml0eSx2az1udWxsLFBpPSExLFFpPW51bGwsU2k9bnVsbCx3az0hMSx4az1udWxsLHlrPTAsems9MCxBaz1udWxsLEJrPS0xLENrPTA7ZnVuY3Rpb24gTCgpe3JldHVybiAwIT09KEsmNik/QigpOi0xIT09Qms/Qms6Qms9QigpfVxuZnVuY3Rpb24gbGgoYSl7aWYoMD09PShhLm1vZGUmMSkpcmV0dXJuIDE7aWYoMCE9PShLJjIpJiYwIT09WilyZXR1cm4gWiYtWjtpZihudWxsIT09S2cudHJhbnNpdGlvbilyZXR1cm4gMD09PUNrJiYoQ2s9eWMoKSksQ2s7YT1DO2lmKDAhPT1hKXJldHVybiBhO2E9d2luZG93LmV2ZW50O2E9dm9pZCAwPT09YT8xNjpqZChhLnR5cGUpO3JldHVybiBhfWZ1bmN0aW9uIG1oKGEsYixjLGQpe2lmKDUwPHprKXRocm93IHprPTAsQWs9bnVsbCxFcnJvcihwKDE4NSkpO0FjKGEsYyxkKTtpZigwPT09KEsmMil8fGEhPT1SKWE9PT1SJiYoMD09PShLJjIpJiYocmt8PWMpLDQ9PT1UJiZEayhhLFopKSxFayhhLGQpLDE9PT1jJiYwPT09SyYmMD09PShiLm1vZGUmMSkmJihIaj1CKCkrNTAwLGZnJiZqZygpKX1cbmZ1bmN0aW9uIEVrKGEsYil7dmFyIGM9YS5jYWxsYmFja05vZGU7d2MoYSxiKTt2YXIgZD11YyhhLGE9PT1SP1o6MCk7aWYoMD09PWQpbnVsbCE9PWMmJmJjKGMpLGEuY2FsbGJhY2tOb2RlPW51bGwsYS5jYWxsYmFja1ByaW9yaXR5PTA7ZWxzZSBpZihiPWQmLWQsYS5jYWxsYmFja1ByaW9yaXR5IT09Yil7bnVsbCE9YyYmYmMoYyk7aWYoMT09PWIpMD09PWEudGFnP2lnKEZrLmJpbmQobnVsbCxhKSk6aGcoRmsuYmluZChudWxsLGEpKSxKZihmdW5jdGlvbigpezA9PT0oSyY2KSYmamcoKX0pLGM9bnVsbDtlbHNle3N3aXRjaChEYyhkKSl7Y2FzZSAxOmM9ZmM7YnJlYWs7Y2FzZSA0OmM9Z2M7YnJlYWs7Y2FzZSAxNjpjPWhjO2JyZWFrO2Nhc2UgNTM2ODcwOTEyOmM9amM7YnJlYWs7ZGVmYXVsdDpjPWhjfWM9R2soYyxIay5iaW5kKG51bGwsYSkpfWEuY2FsbGJhY2tQcmlvcml0eT1iO2EuY2FsbGJhY2tOb2RlPWN9fVxuZnVuY3Rpb24gSGsoYSxiKXtCaz0tMTtDaz0wO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO3ZhciBjPWEuY2FsbGJhY2tOb2RlO2lmKElrKCkmJmEuY2FsbGJhY2tOb2RlIT09YylyZXR1cm4gbnVsbDt2YXIgZD11YyhhLGE9PT1SP1o6MCk7aWYoMD09PWQpcmV0dXJuIG51bGw7aWYoMCE9PShkJjMwKXx8MCE9PShkJmEuZXhwaXJlZExhbmVzKXx8YiliPUprKGEsZCk7ZWxzZXtiPWQ7dmFyIGU9SztLfD0yO3ZhciBmPUtrKCk7aWYoUiE9PWF8fFohPT1iKXZrPW51bGwsSGo9QigpKzUwMCxMayhhLGIpO2RvIHRyeXtNaygpO2JyZWFrfWNhdGNoKGgpe05rKGEsaCl9d2hpbGUoMSk7UWcoKTtuay5jdXJyZW50PWY7Sz1lO251bGwhPT1ZP2I9MDooUj1udWxsLFo9MCxiPVQpfWlmKDAhPT1iKXsyPT09YiYmKGU9eGMoYSksMCE9PWUmJihkPWUsYj1PayhhLGUpKSk7aWYoMT09PWIpdGhyb3cgYz1xayxMayhhLDApLERrKGEsZCksRWsoYSxCKCkpLGM7aWYoNj09PWIpRGsoYSxkKTtcbmVsc2V7ZT1hLmN1cnJlbnQuYWx0ZXJuYXRlO2lmKDA9PT0oZCYzMCkmJiFQayhlKSYmKGI9SmsoYSxkKSwyPT09YiYmKGY9eGMoYSksMCE9PWYmJihkPWYsYj1PayhhLGYpKSksMT09PWIpKXRocm93IGM9cWssTGsoYSwwKSxEayhhLGQpLEVrKGEsQigpKSxjO2EuZmluaXNoZWRXb3JrPWU7YS5maW5pc2hlZExhbmVzPWQ7c3dpdGNoKGIpe2Nhc2UgMDpjYXNlIDE6dGhyb3cgRXJyb3IocCgzNDUpKTtjYXNlIDI6UWsoYSx1ayx2ayk7YnJlYWs7Y2FzZSAzOkRrKGEsZCk7aWYoKGQmMTMwMDIzNDI0KT09PWQmJihiPWdrKzUwMC1CKCksMTA8Yikpe2lmKDAhPT11YyhhLDApKWJyZWFrO2U9YS5zdXNwZW5kZWRMYW5lcztpZigoZSZkKSE9PWQpe0woKTthLnBpbmdlZExhbmVzfD1hLnN1c3BlbmRlZExhbmVzJmU7YnJlYWt9YS50aW1lb3V0SGFuZGxlPUZmKFFrLmJpbmQobnVsbCxhLHVrLHZrKSxiKTticmVha31RayhhLHVrLHZrKTticmVhaztjYXNlIDQ6RGsoYSxkKTtpZigoZCY0MTk0MjQwKT09PVxuZClicmVhaztiPWEuZXZlbnRUaW1lcztmb3IoZT0tMTswPGQ7KXt2YXIgZz0zMS1vYyhkKTtmPTE8PGc7Zz1iW2ddO2c+ZSYmKGU9Zyk7ZCY9fmZ9ZD1lO2Q9QigpLWQ7ZD0oMTIwPmQ/MTIwOjQ4MD5kPzQ4MDoxMDgwPmQ/MTA4MDoxOTIwPmQ/MTkyMDozRTM+ZD8zRTM6NDMyMD5kPzQzMjA6MTk2MCptayhkLzE5NjApKS1kO2lmKDEwPGQpe2EudGltZW91dEhhbmRsZT1GZihRay5iaW5kKG51bGwsYSx1ayx2ayksZCk7YnJlYWt9UWsoYSx1ayx2ayk7YnJlYWs7Y2FzZSA1OlFrKGEsdWssdmspO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgzMjkpKTt9fX1FayhhLEIoKSk7cmV0dXJuIGEuY2FsbGJhY2tOb2RlPT09Yz9Iay5iaW5kKG51bGwsYSk6bnVsbH1cbmZ1bmN0aW9uIE9rKGEsYil7dmFyIGM9dGs7YS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkJiYoTGsoYSxiKS5mbGFnc3w9MjU2KTthPUprKGEsYik7MiE9PWEmJihiPXVrLHVrPWMsbnVsbCE9PWImJkdqKGIpKTtyZXR1cm4gYX1mdW5jdGlvbiBHaihhKXtudWxsPT09dWs/dWs9YTp1ay5wdXNoLmFwcGx5KHVrLGEpfVxuZnVuY3Rpb24gUGsoYSl7Zm9yKHZhciBiPWE7Oyl7aWYoYi5mbGFncyYxNjM4NCl7dmFyIGM9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09YyYmKGM9Yy5zdG9yZXMsbnVsbCE9PWMpKWZvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdLGY9ZS5nZXRTbmFwc2hvdDtlPWUudmFsdWU7dHJ5e2lmKCFIZShmKCksZSkpcmV0dXJuITF9Y2F0Y2goZyl7cmV0dXJuITF9fX1jPWIuY2hpbGQ7aWYoYi5zdWJ0cmVlRmxhZ3MmMTYzODQmJm51bGwhPT1jKWMucmV0dXJuPWIsYj1jO2Vsc2V7aWYoYj09PWEpYnJlYWs7Zm9yKDtudWxsPT09Yi5zaWJsaW5nOyl7aWYobnVsbD09PWIucmV0dXJufHxiLnJldHVybj09PWEpcmV0dXJuITA7Yj1iLnJldHVybn1iLnNpYmxpbmcucmV0dXJuPWIucmV0dXJuO2I9Yi5zaWJsaW5nfX1yZXR1cm4hMH1cbmZ1bmN0aW9uIERrKGEsYil7YiY9fnNrO2ImPX5yazthLnN1c3BlbmRlZExhbmVzfD1iO2EucGluZ2VkTGFuZXMmPX5iO2ZvcihhPWEuZXhwaXJhdGlvblRpbWVzOzA8Yjspe3ZhciBjPTMxLW9jKGIpLGQ9MTw8YzthW2NdPS0xO2ImPX5kfX1mdW5jdGlvbiBGayhhKXtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMjcpKTtJaygpO3ZhciBiPXVjKGEsMCk7aWYoMD09PShiJjEpKXJldHVybiBFayhhLEIoKSksbnVsbDt2YXIgYz1KayhhLGIpO2lmKDAhPT1hLnRhZyYmMj09PWMpe3ZhciBkPXhjKGEpOzAhPT1kJiYoYj1kLGM9T2soYSxkKSl9aWYoMT09PWMpdGhyb3cgYz1xayxMayhhLDApLERrKGEsYiksRWsoYSxCKCkpLGM7aWYoNj09PWMpdGhyb3cgRXJyb3IocCgzNDUpKTthLmZpbmlzaGVkV29yaz1hLmN1cnJlbnQuYWx0ZXJuYXRlO2EuZmluaXNoZWRMYW5lcz1iO1FrKGEsdWssdmspO0VrKGEsQigpKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFJrKGEsYil7dmFyIGM9SztLfD0xO3RyeXtyZXR1cm4gYShiKX1maW5hbGx5e0s9YywwPT09SyYmKEhqPUIoKSs1MDAsZmcmJmpnKCkpfX1mdW5jdGlvbiBTayhhKXtudWxsIT09eGsmJjA9PT14ay50YWcmJjA9PT0oSyY2KSYmSWsoKTt2YXIgYj1LO0t8PTE7dmFyIGM9cGsudHJhbnNpdGlvbixkPUM7dHJ5e2lmKHBrLnRyYW5zaXRpb249bnVsbCxDPTEsYSlyZXR1cm4gYSgpfWZpbmFsbHl7Qz1kLHBrLnRyYW5zaXRpb249YyxLPWIsMD09PShLJjYpJiZqZygpfX1mdW5jdGlvbiBJaigpe2dqPWZqLmN1cnJlbnQ7RShmail9XG5mdW5jdGlvbiBMayhhLGIpe2EuZmluaXNoZWRXb3JrPW51bGw7YS5maW5pc2hlZExhbmVzPTA7dmFyIGM9YS50aW1lb3V0SGFuZGxlOy0xIT09YyYmKGEudGltZW91dEhhbmRsZT0tMSxHZihjKSk7aWYobnVsbCE9PVkpZm9yKGM9WS5yZXR1cm47bnVsbCE9PWM7KXt2YXIgZD1jO3dnKGQpO3N3aXRjaChkLnRhZyl7Y2FzZSAxOmQ9ZC50eXBlLmNoaWxkQ29udGV4dFR5cGVzO251bGwhPT1kJiZ2b2lkIDAhPT1kJiYkZigpO2JyZWFrO2Nhc2UgMzpKaCgpO0UoV2YpO0UoSCk7T2goKTticmVhaztjYXNlIDU6TGgoZCk7YnJlYWs7Y2FzZSA0OkpoKCk7YnJlYWs7Y2FzZSAxMzpFKE0pO2JyZWFrO2Nhc2UgMTk6RShNKTticmVhaztjYXNlIDEwOlJnKGQudHlwZS5fY29udGV4dCk7YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOklqKCl9Yz1jLnJldHVybn1SPWE7WT1hPXdoKGEuY3VycmVudCxudWxsKTtaPWdqPWI7VD0wO3FrPW51bGw7c2s9cms9aGg9MDt1az10az1udWxsO2lmKG51bGwhPT1XZyl7Zm9yKGI9XG4wO2I8V2cubGVuZ3RoO2IrKylpZihjPVdnW2JdLGQ9Yy5pbnRlcmxlYXZlZCxudWxsIT09ZCl7Yy5pbnRlcmxlYXZlZD1udWxsO3ZhciBlPWQubmV4dCxmPWMucGVuZGluZztpZihudWxsIT09Zil7dmFyIGc9Zi5uZXh0O2YubmV4dD1lO2QubmV4dD1nfWMucGVuZGluZz1kfVdnPW51bGx9cmV0dXJuIGF9XG5mdW5jdGlvbiBOayhhLGIpe2Rve3ZhciBjPVk7dHJ5e1FnKCk7UGguY3VycmVudD1haTtpZihTaCl7Zm9yKHZhciBkPU4ubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZDspe3ZhciBlPWQucXVldWU7bnVsbCE9PWUmJihlLnBlbmRpbmc9bnVsbCk7ZD1kLm5leHR9U2g9ITF9Umg9MDtQPU89Tj1udWxsO1RoPSExO1VoPTA7b2suY3VycmVudD1udWxsO2lmKG51bGw9PT1jfHxudWxsPT09Yy5yZXR1cm4pe1Q9MTtxaz1iO1k9bnVsbDticmVha31hOnt2YXIgZj1hLGc9Yy5yZXR1cm4saD1jLGs9YjtiPVo7aC5mbGFnc3w9MzI3Njg7aWYobnVsbCE9PWsmJlwib2JqZWN0XCI9PT10eXBlb2YgayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGsudGhlbil7dmFyIGw9ayxtPWgscT1tLnRhZztpZigwPT09KG0ubW9kZSYxKSYmKDA9PT1xfHwxMT09PXF8fDE1PT09cSkpe3ZhciByPW0uYWx0ZXJuYXRlO3I/KG0udXBkYXRlUXVldWU9ci51cGRhdGVRdWV1ZSxtLm1lbW9pemVkU3RhdGU9ci5tZW1vaXplZFN0YXRlLFxubS5sYW5lcz1yLmxhbmVzKToobS51cGRhdGVRdWV1ZT1udWxsLG0ubWVtb2l6ZWRTdGF0ZT1udWxsKX12YXIgeT1WaShnKTtpZihudWxsIT09eSl7eS5mbGFncyY9LTI1NztXaSh5LGcsaCxmLGIpO3kubW9kZSYxJiZUaShmLGwsYik7Yj15O2s9bDt2YXIgbj1iLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1uKXt2YXIgdD1uZXcgU2V0O3QuYWRkKGspO2IudXBkYXRlUXVldWU9dH1lbHNlIG4uYWRkKGspO2JyZWFrIGF9ZWxzZXtpZigwPT09KGImMSkpe1RpKGYsbCxiKTt1aigpO2JyZWFrIGF9az1FcnJvcihwKDQyNikpfX1lbHNlIGlmKEkmJmgubW9kZSYxKXt2YXIgSj1WaShnKTtpZihudWxsIT09Sil7MD09PShKLmZsYWdzJjY1NTM2KSYmKEouZmxhZ3N8PTI1Nik7V2koSixnLGgsZixiKTtKZyhLaShrLGgpKTticmVhayBhfX1mPWs9S2koayxoKTs0IT09VCYmKFQ9Mik7bnVsbD09PXRrP3RrPVtmXTp0ay5wdXNoKGYpO2Y9Zztkb3tzd2l0Y2goZi50YWcpe2Nhc2UgMzpmLmZsYWdzfD02NTUzNjtcbmImPS1iO2YubGFuZXN8PWI7dmFyIHg9T2koZixrLGIpO2ZoKGYseCk7YnJlYWsgYTtjYXNlIDE6aD1rO3ZhciB3PWYudHlwZSx1PWYuc3RhdGVOb2RlO2lmKDA9PT0oZi5mbGFncyYxMjgpJiYoXCJmdW5jdGlvblwiPT09dHlwZW9mIHcuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxudWxsIT09dSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIHUuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09U2l8fCFTaS5oYXModSkpKSl7Zi5mbGFnc3w9NjU1MzY7YiY9LWI7Zi5sYW5lc3w9Yjt2YXIgRj1SaShmLGgsYik7ZmgoZixGKTticmVhayBhfX1mPWYucmV0dXJufXdoaWxlKG51bGwhPT1mKX1UayhjKX1jYXRjaChuYSl7Yj1uYTtZPT09YyYmbnVsbCE9PWMmJihZPWM9Yy5yZXR1cm4pO2NvbnRpbnVlfWJyZWFrfXdoaWxlKDEpfWZ1bmN0aW9uIEtrKCl7dmFyIGE9bmsuY3VycmVudDtuay5jdXJyZW50PWFpO3JldHVybiBudWxsPT09YT9haTphfVxuZnVuY3Rpb24gdWooKXtpZigwPT09VHx8Mz09PVR8fDI9PT1UKVQ9NDtudWxsPT09Unx8MD09PShoaCYyNjg0MzU0NTUpJiYwPT09KHJrJjI2ODQzNTQ1NSl8fERrKFIsWil9ZnVuY3Rpb24gSmsoYSxiKXt2YXIgYz1LO0t8PTI7dmFyIGQ9S2soKTtpZihSIT09YXx8WiE9PWIpdms9bnVsbCxMayhhLGIpO2RvIHRyeXtVaygpO2JyZWFrfWNhdGNoKGUpe05rKGEsZSl9d2hpbGUoMSk7UWcoKTtLPWM7bmsuY3VycmVudD1kO2lmKG51bGwhPT1ZKXRocm93IEVycm9yKHAoMjYxKSk7Uj1udWxsO1o9MDtyZXR1cm4gVH1mdW5jdGlvbiBVaygpe2Zvcig7bnVsbCE9PVk7KVZrKFkpfWZ1bmN0aW9uIE1rKCl7Zm9yKDtudWxsIT09WSYmIWNjKCk7KVZrKFkpfWZ1bmN0aW9uIFZrKGEpe3ZhciBiPVdrKGEuYWx0ZXJuYXRlLGEsZ2opO2EubWVtb2l6ZWRQcm9wcz1hLnBlbmRpbmdQcm9wcztudWxsPT09Yj9UayhhKTpZPWI7b2suY3VycmVudD1udWxsfVxuZnVuY3Rpb24gVGsoYSl7dmFyIGI9YTtkb3t2YXIgYz1iLmFsdGVybmF0ZTthPWIucmV0dXJuO2lmKDA9PT0oYi5mbGFncyYzMjc2OCkpe2lmKGM9RmooYyxiLGdqKSxudWxsIT09Yyl7WT1jO3JldHVybn19ZWxzZXtjPUpqKGMsYik7aWYobnVsbCE9PWMpe2MuZmxhZ3MmPTMyNzY3O1k9YztyZXR1cm59aWYobnVsbCE9PWEpYS5mbGFnc3w9MzI3NjgsYS5zdWJ0cmVlRmxhZ3M9MCxhLmRlbGV0aW9ucz1udWxsO2Vsc2V7VD02O1k9bnVsbDtyZXR1cm59fWI9Yi5zaWJsaW5nO2lmKG51bGwhPT1iKXtZPWI7cmV0dXJufVk9Yj1hfXdoaWxlKG51bGwhPT1iKTswPT09VCYmKFQ9NSl9ZnVuY3Rpb24gUWsoYSxiLGMpe3ZhciBkPUMsZT1way50cmFuc2l0aW9uO3RyeXtway50cmFuc2l0aW9uPW51bGwsQz0xLFhrKGEsYixjLGQpfWZpbmFsbHl7cGsudHJhbnNpdGlvbj1lLEM9ZH1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFhrKGEsYixjLGQpe2RvIElrKCk7d2hpbGUobnVsbCE9PXhrKTtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMjcpKTtjPWEuZmluaXNoZWRXb3JrO3ZhciBlPWEuZmluaXNoZWRMYW5lcztpZihudWxsPT09YylyZXR1cm4gbnVsbDthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRMYW5lcz0wO2lmKGM9PT1hLmN1cnJlbnQpdGhyb3cgRXJyb3IocCgxNzcpKTthLmNhbGxiYWNrTm9kZT1udWxsO2EuY2FsbGJhY2tQcmlvcml0eT0wO3ZhciBmPWMubGFuZXN8Yy5jaGlsZExhbmVzO0JjKGEsZik7YT09PVImJihZPVI9bnVsbCxaPTApOzA9PT0oYy5zdWJ0cmVlRmxhZ3MmMjA2NCkmJjA9PT0oYy5mbGFncyYyMDY0KXx8d2t8fCh3az0hMCxHayhoYyxmdW5jdGlvbigpe0lrKCk7cmV0dXJuIG51bGx9KSk7Zj0wIT09KGMuZmxhZ3MmMTU5OTApO2lmKDAhPT0oYy5zdWJ0cmVlRmxhZ3MmMTU5OTApfHxmKXtmPXBrLnRyYW5zaXRpb247cGsudHJhbnNpdGlvbj1udWxsO1xudmFyIGc9QztDPTE7dmFyIGg9SztLfD00O29rLmN1cnJlbnQ9bnVsbDtQaihhLGMpO2VrKGMsYSk7T2UoRGYpO2RkPSEhQ2Y7RGY9Q2Y9bnVsbDthLmN1cnJlbnQ9YztpayhjLGEsZSk7ZGMoKTtLPWg7Qz1nO3BrLnRyYW5zaXRpb249Zn1lbHNlIGEuY3VycmVudD1jO3drJiYod2s9ITEseGs9YSx5az1lKTtmPWEucGVuZGluZ0xhbmVzOzA9PT1mJiYoU2k9bnVsbCk7bWMoYy5zdGF0ZU5vZGUsZCk7RWsoYSxCKCkpO2lmKG51bGwhPT1iKWZvcihkPWEub25SZWNvdmVyYWJsZUVycm9yLGM9MDtjPGIubGVuZ3RoO2MrKyllPWJbY10sZChlLnZhbHVlLHtjb21wb25lbnRTdGFjazplLnN0YWNrLGRpZ2VzdDplLmRpZ2VzdH0pO2lmKFBpKXRocm93IFBpPSExLGE9UWksUWk9bnVsbCxhOzAhPT0oeWsmMSkmJjAhPT1hLnRhZyYmSWsoKTtmPWEucGVuZGluZ0xhbmVzOzAhPT0oZiYxKT9hPT09QWs/emsrKzooems9MCxBaz1hKTp6az0wO2pnKCk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBJaygpe2lmKG51bGwhPT14ayl7dmFyIGE9RGMoeWspLGI9cGsudHJhbnNpdGlvbixjPUM7dHJ5e3BrLnRyYW5zaXRpb249bnVsbDtDPTE2PmE/MTY6YTtpZihudWxsPT09eGspdmFyIGQ9ITE7ZWxzZXthPXhrO3hrPW51bGw7eWs9MDtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMzEpKTt2YXIgZT1LO0t8PTQ7Zm9yKFY9YS5jdXJyZW50O251bGwhPT1WOyl7dmFyIGY9VixnPWYuY2hpbGQ7aWYoMCE9PShWLmZsYWdzJjE2KSl7dmFyIGg9Zi5kZWxldGlvbnM7aWYobnVsbCE9PWgpe2Zvcih2YXIgaz0wO2s8aC5sZW5ndGg7aysrKXt2YXIgbD1oW2tdO2ZvcihWPWw7bnVsbCE9PVY7KXt2YXIgbT1WO3N3aXRjaChtLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpRaig4LG0sZil9dmFyIHE9bS5jaGlsZDtpZihudWxsIT09cSlxLnJldHVybj1tLFY9cTtlbHNlIGZvcig7bnVsbCE9PVY7KXttPVY7dmFyIHI9bS5zaWJsaW5nLHk9bS5yZXR1cm47VGoobSk7aWYobT09PVxubCl7Vj1udWxsO2JyZWFrfWlmKG51bGwhPT1yKXtyLnJldHVybj15O1Y9cjticmVha31WPXl9fX12YXIgbj1mLmFsdGVybmF0ZTtpZihudWxsIT09bil7dmFyIHQ9bi5jaGlsZDtpZihudWxsIT09dCl7bi5jaGlsZD1udWxsO2Rve3ZhciBKPXQuc2libGluZzt0LnNpYmxpbmc9bnVsbDt0PUp9d2hpbGUobnVsbCE9PXQpfX1WPWZ9fWlmKDAhPT0oZi5zdWJ0cmVlRmxhZ3MmMjA2NCkmJm51bGwhPT1nKWcucmV0dXJuPWYsVj1nO2Vsc2UgYjpmb3IoO251bGwhPT1WOyl7Zj1WO2lmKDAhPT0oZi5mbGFncyYyMDQ4KSlzd2l0Y2goZi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6UWooOSxmLGYucmV0dXJuKX12YXIgeD1mLnNpYmxpbmc7aWYobnVsbCE9PXgpe3gucmV0dXJuPWYucmV0dXJuO1Y9eDticmVhayBifVY9Zi5yZXR1cm59fXZhciB3PWEuY3VycmVudDtmb3IoVj13O251bGwhPT1WOyl7Zz1WO3ZhciB1PWcuY2hpbGQ7aWYoMCE9PShnLnN1YnRyZWVGbGFncyYyMDY0KSYmbnVsbCE9PVxudSl1LnJldHVybj1nLFY9dTtlbHNlIGI6Zm9yKGc9dztudWxsIT09Vjspe2g9VjtpZigwIT09KGguZmxhZ3MmMjA0OCkpdHJ5e3N3aXRjaChoLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpSaig5LGgpfX1jYXRjaChuYSl7VyhoLGgucmV0dXJuLG5hKX1pZihoPT09Zyl7Vj1udWxsO2JyZWFrIGJ9dmFyIEY9aC5zaWJsaW5nO2lmKG51bGwhPT1GKXtGLnJldHVybj1oLnJldHVybjtWPUY7YnJlYWsgYn1WPWgucmV0dXJufX1LPWU7amcoKTtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uUG9zdENvbW1pdEZpYmVyUm9vdCl0cnl7bGMub25Qb3N0Q29tbWl0RmliZXJSb290KGtjLGEpfWNhdGNoKG5hKXt9ZD0hMH1yZXR1cm4gZH1maW5hbGx5e0M9Yyxway50cmFuc2l0aW9uPWJ9fXJldHVybiExfWZ1bmN0aW9uIFlrKGEsYixjKXtiPUtpKGMsYik7Yj1PaShhLGIsMSk7YT1kaChhLGIsMSk7Yj1MKCk7bnVsbCE9PWEmJihBYyhhLDEsYiksRWsoYSxiKSl9XG5mdW5jdGlvbiBXKGEsYixjKXtpZigzPT09YS50YWcpWWsoYSxhLGMpO2Vsc2UgZm9yKDtudWxsIT09Yjspe2lmKDM9PT1iLnRhZyl7WWsoYixhLGMpO2JyZWFrfWVsc2UgaWYoMT09PWIudGFnKXt2YXIgZD1iLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGQuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09U2l8fCFTaS5oYXMoZCkpKXthPUtpKGMsYSk7YT1SaShiLGEsMSk7Yj1kaChiLGEsMSk7YT1MKCk7bnVsbCE9PWImJihBYyhiLDEsYSksRWsoYixhKSk7YnJlYWt9fWI9Yi5yZXR1cm59fVxuZnVuY3Rpb24gVWkoYSxiLGMpe3ZhciBkPWEucGluZ0NhY2hlO251bGwhPT1kJiZkLmRlbGV0ZShiKTtiPUwoKTthLnBpbmdlZExhbmVzfD1hLnN1c3BlbmRlZExhbmVzJmM7Uj09PWEmJihaJmMpPT09YyYmKDQ9PT1UfHwzPT09VCYmKFomMTMwMDIzNDI0KT09PVomJjUwMD5CKCktZ2s/TGsoYSwwKTpza3w9Yyk7RWsoYSxiKX1mdW5jdGlvbiBaayhhLGIpezA9PT1iJiYoMD09PShhLm1vZGUmMSk/Yj0xOihiPXNjLHNjPDw9MSwwPT09KHNjJjEzMDAyMzQyNCkmJihzYz00MTk0MzA0KSkpO3ZhciBjPUwoKTthPVpnKGEsYik7bnVsbCE9PWEmJihBYyhhLGIsYyksRWsoYSxjKSl9ZnVuY3Rpb24gdmooYSl7dmFyIGI9YS5tZW1vaXplZFN0YXRlLGM9MDtudWxsIT09YiYmKGM9Yi5yZXRyeUxhbmUpO1prKGEsYyl9XG5mdW5jdGlvbiBjayhhLGIpe3ZhciBjPTA7c3dpdGNoKGEudGFnKXtjYXNlIDEzOnZhciBkPWEuc3RhdGVOb2RlO3ZhciBlPWEubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZSYmKGM9ZS5yZXRyeUxhbmUpO2JyZWFrO2Nhc2UgMTk6ZD1hLnN0YXRlTm9kZTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMzE0KSk7fW51bGwhPT1kJiZkLmRlbGV0ZShiKTtaayhhLGMpfXZhciBXaztcbldrPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsIT09YSlpZihhLm1lbW9pemVkUHJvcHMhPT1iLnBlbmRpbmdQcm9wc3x8V2YuY3VycmVudClVZz0hMDtlbHNle2lmKDA9PT0oYS5sYW5lcyZjKSYmMD09PShiLmZsYWdzJjEyOCkpcmV0dXJuIFVnPSExLHpqKGEsYixjKTtVZz0wIT09KGEuZmxhZ3MmMTMxMDcyKT8hMDohMX1lbHNlIFVnPSExLEkmJjAhPT0oYi5mbGFncyYxMDQ4NTc2KSYmdWcoYixuZyxiLmluZGV4KTtiLmxhbmVzPTA7c3dpdGNoKGIudGFnKXtjYXNlIDI6dmFyIGQ9Yi50eXBlO2pqKGEsYik7YT1iLnBlbmRpbmdQcm9wczt2YXIgZT1ZZihiLEguY3VycmVudCk7VGcoYixjKTtlPVhoKG51bGwsYixkLGEsZSxjKTt2YXIgZj1iaSgpO2IuZmxhZ3N8PTE7XCJvYmplY3RcIj09PXR5cGVvZiBlJiZudWxsIT09ZSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGUucmVuZGVyJiZ2b2lkIDA9PT1lLiQkdHlwZW9mPyhiLnRhZz0xLGIubWVtb2l6ZWRTdGF0ZT1udWxsLGIudXBkYXRlUXVldWU9XG5udWxsLFpmKGQpPyhmPSEwLGNnKGIpKTpmPSExLGIubWVtb2l6ZWRTdGF0ZT1udWxsIT09ZS5zdGF0ZSYmdm9pZCAwIT09ZS5zdGF0ZT9lLnN0YXRlOm51bGwsYWgoYiksZS51cGRhdGVyPW5oLGIuc3RhdGVOb2RlPWUsZS5fcmVhY3RJbnRlcm5hbHM9YixyaChiLGQsYSxjKSxiPWtqKG51bGwsYixkLCEwLGYsYykpOihiLnRhZz0wLEkmJmYmJnZnKGIpLFlpKG51bGwsYixlLGMpLGI9Yi5jaGlsZCk7cmV0dXJuIGI7Y2FzZSAxNjpkPWIuZWxlbWVudFR5cGU7YTp7amooYSxiKTthPWIucGVuZGluZ1Byb3BzO2U9ZC5faW5pdDtkPWUoZC5fcGF5bG9hZCk7Yi50eXBlPWQ7ZT1iLnRhZz0kayhkKTthPUxnKGQsYSk7c3dpdGNoKGUpe2Nhc2UgMDpiPWRqKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDE6Yj1paihudWxsLGIsZCxhLGMpO2JyZWFrIGE7Y2FzZSAxMTpiPVppKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDE0OmI9YWoobnVsbCxiLGQsTGcoZC50eXBlLGEpLGMpO2JyZWFrIGF9dGhyb3cgRXJyb3IocCgzMDYsXG5kLFwiXCIpKTt9cmV0dXJuIGI7Y2FzZSAwOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpMZyhkLGUpLGRqKGEsYixkLGUsYyk7Y2FzZSAxOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpMZyhkLGUpLGlqKGEsYixkLGUsYyk7Y2FzZSAzOmE6e2xqKGIpO2lmKG51bGw9PT1hKXRocm93IEVycm9yKHAoMzg3KSk7ZD1iLnBlbmRpbmdQcm9wcztmPWIubWVtb2l6ZWRTdGF0ZTtlPWYuZWxlbWVudDtiaChhLGIpO2doKGIsZCxudWxsLGMpO3ZhciBnPWIubWVtb2l6ZWRTdGF0ZTtkPWcuZWxlbWVudDtpZihmLmlzRGVoeWRyYXRlZClpZihmPXtlbGVtZW50OmQsaXNEZWh5ZHJhdGVkOiExLGNhY2hlOmcuY2FjaGUscGVuZGluZ1N1c3BlbnNlQm91bmRhcmllczpnLnBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXMsdHJhbnNpdGlvbnM6Zy50cmFuc2l0aW9uc30sYi51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9XG5mLGIubWVtb2l6ZWRTdGF0ZT1mLGIuZmxhZ3MmMjU2KXtlPUtpKEVycm9yKHAoNDIzKSksYik7Yj1taihhLGIsZCxjLGUpO2JyZWFrIGF9ZWxzZSBpZihkIT09ZSl7ZT1LaShFcnJvcihwKDQyNCkpLGIpO2I9bWooYSxiLGQsYyxlKTticmVhayBhfWVsc2UgZm9yKHlnPUxmKGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8uZmlyc3RDaGlsZCkseGc9YixJPSEwLHpnPW51bGwsYz1DaChiLG51bGwsZCxjKSxiLmNoaWxkPWM7YzspYy5mbGFncz1jLmZsYWdzJi0zfDQwOTYsYz1jLnNpYmxpbmc7ZWxzZXtJZygpO2lmKGQ9PT1lKXtiPSRpKGEsYixjKTticmVhayBhfVlpKGEsYixkLGMpfWI9Yi5jaGlsZH1yZXR1cm4gYjtjYXNlIDU6cmV0dXJuIEtoKGIpLG51bGw9PT1hJiZFZyhiKSxkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGY9bnVsbCE9PWE/YS5tZW1vaXplZFByb3BzOm51bGwsZz1lLmNoaWxkcmVuLEVmKGQsZSk/Zz1udWxsOm51bGwhPT1mJiZFZihkLGYpJiYoYi5mbGFnc3w9MzIpLFxuaGooYSxiKSxZaShhLGIsZyxjKSxiLmNoaWxkO2Nhc2UgNjpyZXR1cm4gbnVsbD09PWEmJkVnKGIpLG51bGw7Y2FzZSAxMzpyZXR1cm4gcGooYSxiLGMpO2Nhc2UgNDpyZXR1cm4gSWgoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxkPWIucGVuZGluZ1Byb3BzLG51bGw9PT1hP2IuY2hpbGQ9QmgoYixudWxsLGQsYyk6WWkoYSxiLGQsYyksYi5jaGlsZDtjYXNlIDExOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpMZyhkLGUpLFppKGEsYixkLGUsYyk7Y2FzZSA3OnJldHVybiBZaShhLGIsYi5wZW5kaW5nUHJvcHMsYyksYi5jaGlsZDtjYXNlIDg6cmV0dXJuIFlpKGEsYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjKSxiLmNoaWxkO2Nhc2UgMTI6cmV0dXJuIFlpKGEsYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjKSxiLmNoaWxkO2Nhc2UgMTA6YTp7ZD1iLnR5cGUuX2NvbnRleHQ7ZT1iLnBlbmRpbmdQcm9wcztmPWIubWVtb2l6ZWRQcm9wcztcbmc9ZS52YWx1ZTtHKE1nLGQuX2N1cnJlbnRWYWx1ZSk7ZC5fY3VycmVudFZhbHVlPWc7aWYobnVsbCE9PWYpaWYoSGUoZi52YWx1ZSxnKSl7aWYoZi5jaGlsZHJlbj09PWUuY2hpbGRyZW4mJiFXZi5jdXJyZW50KXtiPSRpKGEsYixjKTticmVhayBhfX1lbHNlIGZvcihmPWIuY2hpbGQsbnVsbCE9PWYmJihmLnJldHVybj1iKTtudWxsIT09Zjspe3ZhciBoPWYuZGVwZW5kZW5jaWVzO2lmKG51bGwhPT1oKXtnPWYuY2hpbGQ7Zm9yKHZhciBrPWguZmlyc3RDb250ZXh0O251bGwhPT1rOyl7aWYoay5jb250ZXh0PT09ZCl7aWYoMT09PWYudGFnKXtrPWNoKC0xLGMmLWMpO2sudGFnPTI7dmFyIGw9Zi51cGRhdGVRdWV1ZTtpZihudWxsIT09bCl7bD1sLnNoYXJlZDt2YXIgbT1sLnBlbmRpbmc7bnVsbD09PW0/ay5uZXh0PWs6KGsubmV4dD1tLm5leHQsbS5uZXh0PWspO2wucGVuZGluZz1rfX1mLmxhbmVzfD1jO2s9Zi5hbHRlcm5hdGU7bnVsbCE9PWsmJihrLmxhbmVzfD1jKTtTZyhmLnJldHVybixcbmMsYik7aC5sYW5lc3w9YzticmVha31rPWsubmV4dH19ZWxzZSBpZigxMD09PWYudGFnKWc9Zi50eXBlPT09Yi50eXBlP251bGw6Zi5jaGlsZDtlbHNlIGlmKDE4PT09Zi50YWcpe2c9Zi5yZXR1cm47aWYobnVsbD09PWcpdGhyb3cgRXJyb3IocCgzNDEpKTtnLmxhbmVzfD1jO2g9Zy5hbHRlcm5hdGU7bnVsbCE9PWgmJihoLmxhbmVzfD1jKTtTZyhnLGMsYik7Zz1mLnNpYmxpbmd9ZWxzZSBnPWYuY2hpbGQ7aWYobnVsbCE9PWcpZy5yZXR1cm49ZjtlbHNlIGZvcihnPWY7bnVsbCE9PWc7KXtpZihnPT09Yil7Zz1udWxsO2JyZWFrfWY9Zy5zaWJsaW5nO2lmKG51bGwhPT1mKXtmLnJldHVybj1nLnJldHVybjtnPWY7YnJlYWt9Zz1nLnJldHVybn1mPWd9WWkoYSxiLGUuY2hpbGRyZW4sYyk7Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgOTpyZXR1cm4gZT1iLnR5cGUsZD1iLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixUZyhiLGMpLGU9VmcoZSksZD1kKGUpLGIuZmxhZ3N8PTEsWWkoYSxiLGQsYyksXG5iLmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGQ9Yi50eXBlLGU9TGcoZCxiLnBlbmRpbmdQcm9wcyksZT1MZyhkLnR5cGUsZSksYWooYSxiLGQsZSxjKTtjYXNlIDE1OnJldHVybiBjaihhLGIsYi50eXBlLGIucGVuZGluZ1Byb3BzLGMpO2Nhc2UgMTc6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksamooYSxiKSxiLnRhZz0xLFpmKGQpPyhhPSEwLGNnKGIpKTphPSExLFRnKGIsYykscGgoYixkLGUpLHJoKGIsZCxlLGMpLGtqKG51bGwsYixkLCEwLGEsYyk7Y2FzZSAxOTpyZXR1cm4geWooYSxiLGMpO2Nhc2UgMjI6cmV0dXJuIGVqKGEsYixjKX10aHJvdyBFcnJvcihwKDE1NixiLnRhZykpO307ZnVuY3Rpb24gR2soYSxiKXtyZXR1cm4gYWMoYSxiKX1cbmZ1bmN0aW9uIGFsKGEsYixjLGQpe3RoaXMudGFnPWE7dGhpcy5rZXk9Yzt0aGlzLnNpYmxpbmc9dGhpcy5jaGlsZD10aGlzLnJldHVybj10aGlzLnN0YXRlTm9kZT10aGlzLnR5cGU9dGhpcy5lbGVtZW50VHlwZT1udWxsO3RoaXMuaW5kZXg9MDt0aGlzLnJlZj1udWxsO3RoaXMucGVuZGluZ1Byb3BzPWI7dGhpcy5kZXBlbmRlbmNpZXM9dGhpcy5tZW1vaXplZFN0YXRlPXRoaXMudXBkYXRlUXVldWU9dGhpcy5tZW1vaXplZFByb3BzPW51bGw7dGhpcy5tb2RlPWQ7dGhpcy5zdWJ0cmVlRmxhZ3M9dGhpcy5mbGFncz0wO3RoaXMuZGVsZXRpb25zPW51bGw7dGhpcy5jaGlsZExhbmVzPXRoaXMubGFuZXM9MDt0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIEJnKGEsYixjLGQpe3JldHVybiBuZXcgYWwoYSxiLGMsZCl9ZnVuY3Rpb24gYmooYSl7YT1hLnByb3RvdHlwZTtyZXR1cm4hKCFhfHwhYS5pc1JlYWN0Q29tcG9uZW50KX1cbmZ1bmN0aW9uICRrKGEpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKXJldHVybiBiaihhKT8xOjA7aWYodm9pZCAwIT09YSYmbnVsbCE9PWEpe2E9YS4kJHR5cGVvZjtpZihhPT09RGEpcmV0dXJuIDExO2lmKGE9PT1HYSlyZXR1cm4gMTR9cmV0dXJuIDJ9XG5mdW5jdGlvbiB3aChhLGIpe3ZhciBjPWEuYWx0ZXJuYXRlO251bGw9PT1jPyhjPUJnKGEudGFnLGIsYS5rZXksYS5tb2RlKSxjLmVsZW1lbnRUeXBlPWEuZWxlbWVudFR5cGUsYy50eXBlPWEudHlwZSxjLnN0YXRlTm9kZT1hLnN0YXRlTm9kZSxjLmFsdGVybmF0ZT1hLGEuYWx0ZXJuYXRlPWMpOihjLnBlbmRpbmdQcm9wcz1iLGMudHlwZT1hLnR5cGUsYy5mbGFncz0wLGMuc3VidHJlZUZsYWdzPTAsYy5kZWxldGlvbnM9bnVsbCk7Yy5mbGFncz1hLmZsYWdzJjE0NjgwMDY0O2MuY2hpbGRMYW5lcz1hLmNoaWxkTGFuZXM7Yy5sYW5lcz1hLmxhbmVzO2MuY2hpbGQ9YS5jaGlsZDtjLm1lbW9pemVkUHJvcHM9YS5tZW1vaXplZFByb3BzO2MubWVtb2l6ZWRTdGF0ZT1hLm1lbW9pemVkU3RhdGU7Yy51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlO2I9YS5kZXBlbmRlbmNpZXM7Yy5kZXBlbmRlbmNpZXM9bnVsbD09PWI/bnVsbDp7bGFuZXM6Yi5sYW5lcyxmaXJzdENvbnRleHQ6Yi5maXJzdENvbnRleHR9O1xuYy5zaWJsaW5nPWEuc2libGluZztjLmluZGV4PWEuaW5kZXg7Yy5yZWY9YS5yZWY7cmV0dXJuIGN9XG5mdW5jdGlvbiB5aChhLGIsYyxkLGUsZil7dmFyIGc9MjtkPWE7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpYmooYSkmJihnPTEpO2Vsc2UgaWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKWc9NTtlbHNlIGE6c3dpdGNoKGEpe2Nhc2UgeWE6cmV0dXJuIEFoKGMuY2hpbGRyZW4sZSxmLGIpO2Nhc2UgemE6Zz04O2V8PTg7YnJlYWs7Y2FzZSBBYTpyZXR1cm4gYT1CZygxMixjLGIsZXwyKSxhLmVsZW1lbnRUeXBlPUFhLGEubGFuZXM9ZixhO2Nhc2UgRWE6cmV0dXJuIGE9QmcoMTMsYyxiLGUpLGEuZWxlbWVudFR5cGU9RWEsYS5sYW5lcz1mLGE7Y2FzZSBGYTpyZXR1cm4gYT1CZygxOSxjLGIsZSksYS5lbGVtZW50VHlwZT1GYSxhLmxhbmVzPWYsYTtjYXNlIElhOnJldHVybiBxaihjLGUsZixiKTtkZWZhdWx0OmlmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgQmE6Zz0xMDticmVhayBhO2Nhc2UgQ2E6Zz05O2JyZWFrIGE7Y2FzZSBEYTpnPTExO1xuYnJlYWsgYTtjYXNlIEdhOmc9MTQ7YnJlYWsgYTtjYXNlIEhhOmc9MTY7ZD1udWxsO2JyZWFrIGF9dGhyb3cgRXJyb3IocCgxMzAsbnVsbD09YT9hOnR5cGVvZiBhLFwiXCIpKTt9Yj1CZyhnLGMsYixlKTtiLmVsZW1lbnRUeXBlPWE7Yi50eXBlPWQ7Yi5sYW5lcz1mO3JldHVybiBifWZ1bmN0aW9uIEFoKGEsYixjLGQpe2E9QmcoNyxhLGQsYik7YS5sYW5lcz1jO3JldHVybiBhfWZ1bmN0aW9uIHFqKGEsYixjLGQpe2E9QmcoMjIsYSxkLGIpO2EuZWxlbWVudFR5cGU9SWE7YS5sYW5lcz1jO2Euc3RhdGVOb2RlPXtpc0hpZGRlbjohMX07cmV0dXJuIGF9ZnVuY3Rpb24geGgoYSxiLGMpe2E9QmcoNixhLG51bGwsYik7YS5sYW5lcz1jO3JldHVybiBhfVxuZnVuY3Rpb24gemgoYSxiLGMpe2I9QmcoNCxudWxsIT09YS5jaGlsZHJlbj9hLmNoaWxkcmVuOltdLGEua2V5LGIpO2IubGFuZXM9YztiLnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzphLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246YS5pbXBsZW1lbnRhdGlvbn07cmV0dXJuIGJ9XG5mdW5jdGlvbiBibChhLGIsYyxkLGUpe3RoaXMudGFnPWI7dGhpcy5jb250YWluZXJJbmZvPWE7dGhpcy5maW5pc2hlZFdvcms9dGhpcy5waW5nQ2FjaGU9dGhpcy5jdXJyZW50PXRoaXMucGVuZGluZ0NoaWxkcmVuPW51bGw7dGhpcy50aW1lb3V0SGFuZGxlPS0xO3RoaXMuY2FsbGJhY2tOb2RlPXRoaXMucGVuZGluZ0NvbnRleHQ9dGhpcy5jb250ZXh0PW51bGw7dGhpcy5jYWxsYmFja1ByaW9yaXR5PTA7dGhpcy5ldmVudFRpbWVzPXpjKDApO3RoaXMuZXhwaXJhdGlvblRpbWVzPXpjKC0xKTt0aGlzLmVudGFuZ2xlZExhbmVzPXRoaXMuZmluaXNoZWRMYW5lcz10aGlzLm11dGFibGVSZWFkTGFuZXM9dGhpcy5leHBpcmVkTGFuZXM9dGhpcy5waW5nZWRMYW5lcz10aGlzLnN1c3BlbmRlZExhbmVzPXRoaXMucGVuZGluZ0xhbmVzPTA7dGhpcy5lbnRhbmdsZW1lbnRzPXpjKDApO3RoaXMuaWRlbnRpZmllclByZWZpeD1kO3RoaXMub25SZWNvdmVyYWJsZUVycm9yPWU7dGhpcy5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPVxubnVsbH1mdW5jdGlvbiBjbChhLGIsYyxkLGUsZixnLGgsayl7YT1uZXcgYmwoYSxiLGMsaCxrKTsxPT09Yj8oYj0xLCEwPT09ZiYmKGJ8PTgpKTpiPTA7Zj1CZygzLG51bGwsbnVsbCxiKTthLmN1cnJlbnQ9ZjtmLnN0YXRlTm9kZT1hO2YubWVtb2l6ZWRTdGF0ZT17ZWxlbWVudDpkLGlzRGVoeWRyYXRlZDpjLGNhY2hlOm51bGwsdHJhbnNpdGlvbnM6bnVsbCxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOm51bGx9O2FoKGYpO3JldHVybiBhfWZ1bmN0aW9uIGRsKGEsYixjKXt2YXIgZD0zPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbDtyZXR1cm57JCR0eXBlb2Y6d2Esa2V5Om51bGw9PWQ/bnVsbDpcIlwiK2QsY2hpbGRyZW46YSxjb250YWluZXJJbmZvOmIsaW1wbGVtZW50YXRpb246Y319XG5mdW5jdGlvbiBlbChhKXtpZighYSlyZXR1cm4gVmY7YT1hLl9yZWFjdEludGVybmFsczthOntpZihWYihhKSE9PWF8fDEhPT1hLnRhZyl0aHJvdyBFcnJvcihwKDE3MCkpO3ZhciBiPWE7ZG97c3dpdGNoKGIudGFnKXtjYXNlIDM6Yj1iLnN0YXRlTm9kZS5jb250ZXh0O2JyZWFrIGE7Y2FzZSAxOmlmKFpmKGIudHlwZSkpe2I9Yi5zdGF0ZU5vZGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ7YnJlYWsgYX19Yj1iLnJldHVybn13aGlsZShudWxsIT09Yik7dGhyb3cgRXJyb3IocCgxNzEpKTt9aWYoMT09PWEudGFnKXt2YXIgYz1hLnR5cGU7aWYoWmYoYykpcmV0dXJuIGJnKGEsYyxiKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGZsKGEsYixjLGQsZSxmLGcsaCxrKXthPWNsKGMsZCwhMCxhLGUsZixnLGgsayk7YS5jb250ZXh0PWVsKG51bGwpO2M9YS5jdXJyZW50O2Q9TCgpO2U9bGgoYyk7Zj1jaChkLGUpO2YuY2FsbGJhY2s9dm9pZCAwIT09YiYmbnVsbCE9PWI/YjpudWxsO2RoKGMsZixlKTthLmN1cnJlbnQubGFuZXM9ZTtBYyhhLGUsZCk7RWsoYSxkKTtyZXR1cm4gYX1mdW5jdGlvbiBnbChhLGIsYyxkKXt2YXIgZT1iLmN1cnJlbnQsZj1MKCksZz1saChlKTtjPWVsKGMpO251bGw9PT1iLmNvbnRleHQ/Yi5jb250ZXh0PWM6Yi5wZW5kaW5nQ29udGV4dD1jO2I9Y2goZixnKTtiLnBheWxvYWQ9e2VsZW1lbnQ6YX07ZD12b2lkIDA9PT1kP251bGw6ZDtudWxsIT09ZCYmKGIuY2FsbGJhY2s9ZCk7YT1kaChlLGIsZyk7bnVsbCE9PWEmJihtaChhLGUsZyxmKSxlaChhLGUsZykpO3JldHVybiBnfVxuZnVuY3Rpb24gaGwoYSl7YT1hLmN1cnJlbnQ7aWYoIWEuY2hpbGQpcmV0dXJuIG51bGw7c3dpdGNoKGEuY2hpbGQudGFnKXtjYXNlIDU6cmV0dXJuIGEuY2hpbGQuc3RhdGVOb2RlO2RlZmF1bHQ6cmV0dXJuIGEuY2hpbGQuc3RhdGVOb2RlfX1mdW5jdGlvbiBpbChhLGIpe2E9YS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiZudWxsIT09YS5kZWh5ZHJhdGVkKXt2YXIgYz1hLnJldHJ5TGFuZTthLnJldHJ5TGFuZT0wIT09YyYmYzxiP2M6Yn19ZnVuY3Rpb24gamwoYSxiKXtpbChhLGIpOyhhPWEuYWx0ZXJuYXRlKSYmaWwoYSxiKX1mdW5jdGlvbiBrbCgpe3JldHVybiBudWxsfXZhciBsbD1cImZ1bmN0aW9uXCI9PT10eXBlb2YgcmVwb3J0RXJyb3I/cmVwb3J0RXJyb3I6ZnVuY3Rpb24oYSl7Y29uc29sZS5lcnJvcihhKX07ZnVuY3Rpb24gbWwoYSl7dGhpcy5faW50ZXJuYWxSb290PWF9XG5ubC5wcm90b3R5cGUucmVuZGVyPW1sLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGw9PT1iKXRocm93IEVycm9yKHAoNDA5KSk7Z2woYSxiLG51bGwsbnVsbCl9O25sLnByb3RvdHlwZS51bm1vdW50PW1sLnByb3RvdHlwZS51bm1vdW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGwhPT1hKXt0aGlzLl9pbnRlcm5hbFJvb3Q9bnVsbDt2YXIgYj1hLmNvbnRhaW5lckluZm87U2soZnVuY3Rpb24oKXtnbChudWxsLGEsbnVsbCxudWxsKX0pO2JbdWZdPW51bGx9fTtmdW5jdGlvbiBubChhKXt0aGlzLl9pbnRlcm5hbFJvb3Q9YX1cbm5sLnByb3RvdHlwZS51bnN0YWJsZV9zY2hlZHVsZUh5ZHJhdGlvbj1mdW5jdGlvbihhKXtpZihhKXt2YXIgYj1IYygpO2E9e2Jsb2NrZWRPbjpudWxsLHRhcmdldDphLHByaW9yaXR5OmJ9O2Zvcih2YXIgYz0wO2M8UWMubGVuZ3RoJiYwIT09YiYmYjxRY1tjXS5wcmlvcml0eTtjKyspO1FjLnNwbGljZShjLDAsYSk7MD09PWMmJlZjKGEpfX07ZnVuY3Rpb24gb2woYSl7cmV0dXJuISghYXx8MSE9PWEubm9kZVR5cGUmJjkhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGUpfWZ1bmN0aW9uIHBsKGEpe3JldHVybiEoIWF8fDEhPT1hLm5vZGVUeXBlJiY5IT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlJiYoOCE9PWEubm9kZVR5cGV8fFwiIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlIFwiIT09YS5ub2RlVmFsdWUpKX1mdW5jdGlvbiBxbCgpe31cbmZ1bmN0aW9uIHJsKGEsYixjLGQsZSl7aWYoZSl7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBmPWQ7ZD1mdW5jdGlvbigpe3ZhciBhPWhsKGcpO2YuY2FsbChhKX19dmFyIGc9ZmwoYixkLGEsMCxudWxsLCExLCExLFwiXCIscWwpO2EuX3JlYWN0Um9vdENvbnRhaW5lcj1nO2FbdWZdPWcuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7U2soKTtyZXR1cm4gZ31mb3IoO2U9YS5sYXN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoZSk7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBoPWQ7ZD1mdW5jdGlvbigpe3ZhciBhPWhsKGspO2guY2FsbChhKX19dmFyIGs9Y2woYSwwLCExLG51bGwsbnVsbCwhMSwhMSxcIlwiLHFsKTthLl9yZWFjdFJvb3RDb250YWluZXI9azthW3VmXT1rLmN1cnJlbnQ7c2YoOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmEpO1NrKGZ1bmN0aW9uKCl7Z2woYixrLGMsZCl9KTtyZXR1cm4ga31cbmZ1bmN0aW9uIHNsKGEsYixjLGQsZSl7dmFyIGY9Yy5fcmVhY3RSb290Q29udGFpbmVyO2lmKGYpe3ZhciBnPWY7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGUpe3ZhciBoPWU7ZT1mdW5jdGlvbigpe3ZhciBhPWhsKGcpO2guY2FsbChhKX19Z2woYixnLGEsZSl9ZWxzZSBnPXJsKGMsYixhLGUsZCk7cmV0dXJuIGhsKGcpfUVjPWZ1bmN0aW9uKGEpe3N3aXRjaChhLnRhZyl7Y2FzZSAzOnZhciBiPWEuc3RhdGVOb2RlO2lmKGIuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7dmFyIGM9dGMoYi5wZW5kaW5nTGFuZXMpOzAhPT1jJiYoQ2MoYixjfDEpLEVrKGIsQigpKSwwPT09KEsmNikmJihIaj1CKCkrNTAwLGpnKCkpKX1icmVhaztjYXNlIDEzOlNrKGZ1bmN0aW9uKCl7dmFyIGI9WmcoYSwxKTtpZihudWxsIT09Yil7dmFyIGM9TCgpO21oKGIsYSwxLGMpfX0pLGpsKGEsMSl9fTtcbkZjPWZ1bmN0aW9uKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPVpnKGEsMTM0MjE3NzI4KTtpZihudWxsIT09Yil7dmFyIGM9TCgpO21oKGIsYSwxMzQyMTc3MjgsYyl9amwoYSwxMzQyMTc3MjgpfX07R2M9ZnVuY3Rpb24oYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9bGgoYSksYz1aZyhhLGIpO2lmKG51bGwhPT1jKXt2YXIgZD1MKCk7bWgoYyxhLGIsZCl9amwoYSxiKX19O0hjPWZ1bmN0aW9uKCl7cmV0dXJuIEN9O0ljPWZ1bmN0aW9uKGEsYil7dmFyIGM9Qzt0cnl7cmV0dXJuIEM9YSxiKCl9ZmluYWxseXtDPWN9fTtcbnliPWZ1bmN0aW9uKGEsYixjKXtzd2l0Y2goYil7Y2FzZSBcImlucHV0XCI6YmIoYSxjKTtiPWMubmFtZTtpZihcInJhZGlvXCI9PT1jLnR5cGUmJm51bGwhPWIpe2ZvcihjPWE7Yy5wYXJlbnROb2RlOyljPWMucGFyZW50Tm9kZTtjPWMucXVlcnlTZWxlY3RvckFsbChcImlucHV0W25hbWU9XCIrSlNPTi5zdHJpbmdpZnkoXCJcIitiKSsnXVt0eXBlPVwicmFkaW9cIl0nKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKXt2YXIgZD1jW2JdO2lmKGQhPT1hJiZkLmZvcm09PT1hLmZvcm0pe3ZhciBlPURiKGQpO2lmKCFlKXRocm93IEVycm9yKHAoOTApKTtXYShkKTtiYihkLGUpfX19YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aWIoYSxjKTticmVhaztjYXNlIFwic2VsZWN0XCI6Yj1jLnZhbHVlLG51bGwhPWImJmZiKGEsISFjLm11bHRpcGxlLGIsITEpfX07R2I9Ums7SGI9U2s7XG52YXIgdGw9e3VzaW5nQ2xpZW50RW50cnlQb2ludDohMSxFdmVudHM6W0NiLHVlLERiLEViLEZiLFJrXX0sdWw9e2ZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOldjLGJ1bmRsZVR5cGU6MCx2ZXJzaW9uOlwiMTguMi4wXCIscmVuZGVyZXJQYWNrYWdlTmFtZTpcInJlYWN0LWRvbVwifTtcbnZhciB2bD17YnVuZGxlVHlwZTp1bC5idW5kbGVUeXBlLHZlcnNpb246dWwudmVyc2lvbixyZW5kZXJlclBhY2thZ2VOYW1lOnVsLnJlbmRlcmVyUGFja2FnZU5hbWUscmVuZGVyZXJDb25maWc6dWwucmVuZGVyZXJDb25maWcsb3ZlcnJpZGVIb29rU3RhdGU6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZURlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZVJlbmFtZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzOm51bGwsb3ZlcnJpZGVQcm9wc0RlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzUmVuYW1lUGF0aDpudWxsLHNldEVycm9ySGFuZGxlcjpudWxsLHNldFN1c3BlbnNlSGFuZGxlcjpudWxsLHNjaGVkdWxlVXBkYXRlOm51bGwsY3VycmVudERpc3BhdGNoZXJSZWY6dWEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixmaW5kSG9zdEluc3RhbmNlQnlGaWJlcjpmdW5jdGlvbihhKXthPVpiKGEpO3JldHVybiBudWxsPT09YT9udWxsOmEuc3RhdGVOb2RlfSxmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTp1bC5maW5kRmliZXJCeUhvc3RJbnN0YW5jZXx8XG5rbCxmaW5kSG9zdEluc3RhbmNlc0ZvclJlZnJlc2g6bnVsbCxzY2hlZHVsZVJlZnJlc2g6bnVsbCxzY2hlZHVsZVJvb3Q6bnVsbCxzZXRSZWZyZXNoSGFuZGxlcjpudWxsLGdldEN1cnJlbnRGaWJlcjpudWxsLHJlY29uY2lsZXJWZXJzaW9uOlwiMTguMi4wLW5leHQtOWUzYjc3MmI4LTIwMjIwNjA4XCJ9O2lmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKXt2YXIgd2w9X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO2lmKCF3bC5pc0Rpc2FibGVkJiZ3bC5zdXBwb3J0c0ZpYmVyKXRyeXtrYz13bC5pbmplY3QodmwpLGxjPXdsfWNhdGNoKGEpe319ZXhwb3J0cy5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD10bDtcbmV4cG9ydHMuY3JlYXRlUG9ydGFsPWZ1bmN0aW9uKGEsYil7dmFyIGM9Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7aWYoIW9sKGIpKXRocm93IEVycm9yKHAoMjAwKSk7cmV0dXJuIGRsKGEsYixudWxsLGMpfTtleHBvcnRzLmNyZWF0ZVJvb3Q9ZnVuY3Rpb24oYSxiKXtpZighb2woYSkpdGhyb3cgRXJyb3IocCgyOTkpKTt2YXIgYz0hMSxkPVwiXCIsZT1sbDtudWxsIT09YiYmdm9pZCAwIT09YiYmKCEwPT09Yi51bnN0YWJsZV9zdHJpY3RNb2RlJiYoYz0hMCksdm9pZCAwIT09Yi5pZGVudGlmaWVyUHJlZml4JiYoZD1iLmlkZW50aWZpZXJQcmVmaXgpLHZvaWQgMCE9PWIub25SZWNvdmVyYWJsZUVycm9yJiYoZT1iLm9uUmVjb3ZlcmFibGVFcnJvcikpO2I9Y2woYSwxLCExLG51bGwsbnVsbCxjLCExLGQsZSk7YVt1Zl09Yi5jdXJyZW50O3NmKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtyZXR1cm4gbmV3IG1sKGIpfTtcbmV4cG9ydHMuZmluZERPTU5vZGU9ZnVuY3Rpb24oYSl7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtpZigxPT09YS5ub2RlVHlwZSlyZXR1cm4gYTt2YXIgYj1hLl9yZWFjdEludGVybmFscztpZih2b2lkIDA9PT1iKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5yZW5kZXIpdGhyb3cgRXJyb3IocCgxODgpKTthPU9iamVjdC5rZXlzKGEpLmpvaW4oXCIsXCIpO3Rocm93IEVycm9yKHAoMjY4LGEpKTt9YT1aYihiKTthPW51bGw9PT1hP251bGw6YS5zdGF0ZU5vZGU7cmV0dXJuIGF9O2V4cG9ydHMuZmx1c2hTeW5jPWZ1bmN0aW9uKGEpe3JldHVybiBTayhhKX07ZXhwb3J0cy5oeWRyYXRlPWZ1bmN0aW9uKGEsYixjKXtpZighcGwoYikpdGhyb3cgRXJyb3IocCgyMDApKTtyZXR1cm4gc2wobnVsbCxhLGIsITAsYyl9O1xuZXhwb3J0cy5oeWRyYXRlUm9vdD1mdW5jdGlvbihhLGIsYyl7aWYoIW9sKGEpKXRocm93IEVycm9yKHAoNDA1KSk7dmFyIGQ9bnVsbCE9YyYmYy5oeWRyYXRlZFNvdXJjZXN8fG51bGwsZT0hMSxmPVwiXCIsZz1sbDtudWxsIT09YyYmdm9pZCAwIT09YyYmKCEwPT09Yy51bnN0YWJsZV9zdHJpY3RNb2RlJiYoZT0hMCksdm9pZCAwIT09Yy5pZGVudGlmaWVyUHJlZml4JiYoZj1jLmlkZW50aWZpZXJQcmVmaXgpLHZvaWQgMCE9PWMub25SZWNvdmVyYWJsZUVycm9yJiYoZz1jLm9uUmVjb3ZlcmFibGVFcnJvcikpO2I9ZmwoYixudWxsLGEsMSxudWxsIT1jP2M6bnVsbCxlLCExLGYsZyk7YVt1Zl09Yi5jdXJyZW50O3NmKGEpO2lmKGQpZm9yKGE9MDthPGQubGVuZ3RoO2ErKyljPWRbYV0sZT1jLl9nZXRWZXJzaW9uLGU9ZShjLl9zb3VyY2UpLG51bGw9PWIubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT9iLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9W2MsZV06Yi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhLnB1c2goYyxcbmUpO3JldHVybiBuZXcgbmwoYil9O2V4cG9ydHMucmVuZGVyPWZ1bmN0aW9uKGEsYixjKXtpZighcGwoYikpdGhyb3cgRXJyb3IocCgyMDApKTtyZXR1cm4gc2wobnVsbCxhLGIsITEsYyl9O2V4cG9ydHMudW5tb3VudENvbXBvbmVudEF0Tm9kZT1mdW5jdGlvbihhKXtpZighcGwoYSkpdGhyb3cgRXJyb3IocCg0MCkpO3JldHVybiBhLl9yZWFjdFJvb3RDb250YWluZXI/KFNrKGZ1bmN0aW9uKCl7c2wobnVsbCxudWxsLGEsITEsZnVuY3Rpb24oKXthLl9yZWFjdFJvb3RDb250YWluZXI9bnVsbDthW3VmXT1udWxsfSl9KSwhMCk6ITF9O2V4cG9ydHMudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM9Ums7XG5leHBvcnRzLnVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFwbChjKSl0aHJvdyBFcnJvcihwKDIwMCkpO2lmKG51bGw9PWF8fHZvaWQgMD09PWEuX3JlYWN0SW50ZXJuYWxzKXRocm93IEVycm9yKHAoMzgpKTtyZXR1cm4gc2woYSxiLGMsITEsZCl9O2V4cG9ydHMudmVyc2lvbj1cIjE4LjIuMC1uZXh0LTllM2I3NzJiOC0yMDIyMDYwOFwiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///799\n')},470:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar m = __webpack_require__(961);\nif (true) {\n  exports.createRoot = m.createRoot;\n  exports.hydrateRoot = m.hydrateRoot;\n} else { var i; }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcwLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxHQUFXO0FBQzNCLElBQUksSUFBcUM7QUFDekMsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxLQUFLLFVBa0JOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9jbGllbnQuanM/ZTQ2MyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBtID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBtLmNyZWF0ZVJvb3Q7XG4gIGV4cG9ydHMuaHlkcmF0ZVJvb3QgPSBtLmh5ZHJhdGVSb290O1xufSBlbHNlIHtcbiAgdmFyIGkgPSBtLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBmdW5jdGlvbihjLCBvKSB7XG4gICAgaS51c2luZ0NsaWVudEVudHJ5UG9pbnQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbS5jcmVhdGVSb290KGMsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgZXhwb3J0cy5oeWRyYXRlUm9vdCA9IGZ1bmN0aW9uKGMsIGgsIG8pIHtcbiAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBtLmh5ZHJhdGVSb290KGMsIGgsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///470\n")},961:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (false) {}\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (true) {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = __webpack_require__(799);\n} else {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYxLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQXFDLEVBQUUsRUFTMUM7QUFDSDtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLElBQXFDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLEVBQUUseUNBQTZEO0FBQy9ELEVBQUUsS0FBSyxFQUVOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9pbmRleC5qcz9lZjA3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gY2hlY2tEQ0UoKSB7XG4gIC8qIGdsb2JhbCBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gKi9cbiAgaWYgKFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmluZWQnIHx8XG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRSAhPT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBUaGlzIGJyYW5jaCBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWRcbiAgICAvLyBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIG9ubHkgaW4gZGV2ZWxvcG1lbnQuXG4gICAgLy8gVGhlcmVmb3JlIGlmIHRoZSBicmFuY2ggaXMgc3RpbGwgaGVyZSwgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIHdhc24ndFxuICAgIC8vIHByb3Blcmx5IGFwcGxpZWQuXG4gICAgLy8gRG9uJ3QgY2hhbmdlIHRoZSBtZXNzYWdlLiBSZWFjdCBEZXZUb29scyByZWxpZXMgb24gaXQuIEFsc28gbWFrZSBzdXJlXG4gICAgLy8gdGhpcyBtZXNzYWdlIGRvZXNuJ3Qgb2NjdXIgZWxzZXdoZXJlIGluIHRoaXMgZnVuY3Rpb24sIG9yIGl0IHdpbGwgY2F1c2VcbiAgICAvLyBhIGZhbHNlIHBvc2l0aXZlLlxuICAgIHRocm93IG5ldyBFcnJvcignXl9eJyk7XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyBWZXJpZnkgdGhhdCB0aGUgY29kZSBhYm92ZSBoYXMgYmVlbiBkZWFkIGNvZGUgZWxpbWluYXRlZCAoRENFJ2QpLlxuICAgIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRShjaGVja0RDRSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIERldlRvb2xzIHNob3VsZG4ndCBjcmFzaCBSZWFjdCwgbm8gbWF0dGVyIHdoYXQuXG4gICAgLy8gV2Ugc2hvdWxkIHN0aWxsIHJlcG9ydCBpbiBjYXNlIHdlIGJyZWFrIHRoaXMgY29kZS5cbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgLy8gRENFIGNoZWNrIHNob3VsZCBoYXBwZW4gYmVmb3JlIFJlYWN0RE9NIGJ1bmRsZSBleGVjdXRlcyBzbyB0aGF0XG4gIC8vIERldlRvb2xzIGNhbiByZXBvcnQgYmFkIG1pbmlmaWNhdGlvbiBkdXJpbmcgaW5qZWN0aW9uLlxuICBjaGVja0RDRSgpO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20uZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///961\n")},218:(__unused_webpack_module,exports)=>{"use strict";eval('/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar l=Symbol.for("react.element"),n=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),q=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),t=Symbol.for("react.provider"),u=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),w=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),z=Symbol.iterator;function A(a){if(null===a||"object"!==typeof a)return null;a=z&&a[z]||a["@@iterator"];return"function"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if("object"!==typeof a&&"function"!==typeof a&&null!=a)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,a,b,"setState")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,"forceUpdate")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=""+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return"object"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={"=":"=0",":":"=2"};return"$"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return"object"===typeof a&&null!==a&&null!=a.key?escape(""+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if("undefined"===k||"boolean"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case "string":case "number":h=!0;break;case "object":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=""===d?"."+Q(h,0):d,I(c)?(e="",null!=a&&(e=a.replace(P,"$&/")+"/"),R(c,b,e,"",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?"":(""+c.key).replace(P,"$&/")+"/")+a)),b.push(c)),1;h=0;d=""===d?".":d+":";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),"function"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if("object"===k)throw b=String(a),Error("Objects are not valid as a React child (found: "+("[object Object]"===b?"object with keys {"+Object.keys(a).join(", ")+"}":b)+"). If you meant to render a collection of children, use an array instead.");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,"","",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error("React.Children.only expected to receive a single React element child.");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+a+".");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=""+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error("act(...) is not supported in production builds of React.");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version="18.2.0";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE4LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNhLHFXQUFxVyxjQUFjLDZDQUE2QywyQkFBMkI7QUFDeGMsT0FBTyxxQkFBcUIsU0FBUyxnQ0FBZ0MsaUNBQWlDLDhCQUE4QixzQkFBc0Isa0JBQWtCLGFBQWEsZUFBZSxZQUFZLGtCQUFrQjtBQUN0TyxtQ0FBbUMsNExBQTRMLG1EQUFtRCxvQ0FBb0MsdURBQXVELGNBQWMsd0JBQXdCLGtCQUFrQixhQUFhLGVBQWUsWUFBWSxrQkFBa0I7QUFDL2QsZ0JBQWdCLGlCQUFpQiwwQkFBMEIseURBQXlELGFBQWEsSUFBSTtBQUNySSxrQkFBa0IsVUFBVSxlQUFlLDRIQUE0SCx5QkFBeUIsc0JBQXNCLGFBQWEsdUJBQXVCLElBQUksd0JBQXdCLGFBQWEsNEVBQTRFLE9BQU87QUFDdFgsZ0JBQWdCLE9BQU8sc0VBQXNFLGNBQWMsb0RBQW9ELG1CQUFtQixPQUFPLG1CQUFtQix3Q0FBd0MsWUFBWSxFQUFFLGFBQWEsZ0JBQWdCO0FBQy9SLHNCQUFzQixlQUFlLHlDQUF5QyxTQUFTLGlCQUFpQixlQUFlLGlDQUFpQyxNQUFNLGlDQUFpQyxvQkFBb0IsbUhBQW1ILFNBQVMsMkdBQTJHLElBQUksbUJBQW1CLG9CQUFvQixXQUFXLEtBQUs7QUFDcmYsS0FBSyxlQUFlLGdCQUFnQix5REFBeUQsbUJBQW1CLHdDQUF3Qyx5SUFBeUksOEJBQThCLGtGQUFrRjtBQUNqWixrQkFBa0Isb0JBQW9CLGFBQWEsd0JBQXdCLHVCQUF1QixFQUFFLFNBQVMsY0FBYyxtQkFBbUIsZ0JBQWdCLE1BQU0sbUJBQW1CLHlEQUF5RCxhQUFhLHlEQUF5RCxFQUFFLDBDQUEwQywwQ0FBMEM7QUFDNVksT0FBTyxhQUFhLElBQUksZ0JBQWdCLElBQUksd0VBQXdFLGdCQUFnQixFQUFFLDhCQUE4QixlQUFlLHdCQUF3QixJQUFJLG1CQUFtQixRQUFRLGVBQWUsSUFBSSxFQUFFLFNBQVMscUJBQXFCLHVCQUF1QixTQUFTLE1BQU0sa0JBQWtCLDhGQUE4RixXQUFXLGlCQUFpQixHQUFHLGdCQUFnQjtBQUNsZSxnQkFBZ0IsR0FBRyxxQkFBcUIsR0FBRyxrQkFBa0IsR0FBRyxnQkFBZ0IsR0FBRywwREFBMEQ7QUFDN0ksb0JBQW9CLGlCQUFpQiw0SEFBNEgsVUFBVSxxQ0FBcUMsWUFBWSxzQ0FBc0MsNkJBQTZCLHlEQUF5RCx5RkFBeUYseUJBQXlCLHNCQUFzQixhQUFhO0FBQzdlLFlBQVksSUFBSSx3QkFBd0IsYUFBYSxPQUFPLHNEQUFzRCxxQkFBcUIsYUFBYSxHQUFHLDRIQUE0SCxZQUFZLHVCQUF1QixxQkFBcUIscUJBQXFCLEdBQUcscUJBQXFCLGFBQWEscUJBQXFCLFNBQVMsVUFBVSxpQkFBaUIsWUFBWSxPQUFPO0FBQ2pkLGtCQUFrQixhQUFhLE9BQU8sc0JBQXNCLHNCQUFzQixHQUFHLFlBQVksYUFBYSxPQUFPLHFCQUFxQixxQkFBcUIsV0FBVyxZQUFZLGVBQWUsT0FBTyw4Q0FBOEMsdUJBQXVCLGFBQWEsbUJBQW1CLGdCQUFnQixJQUFJLElBQUksUUFBUSxpQkFBaUIsb0JBQW9CLFlBQVk7QUFDbFksbUJBQW1CLGVBQWUsbUNBQW1DLGtCQUFrQixhQUFhLGdDQUFnQyxxQkFBcUIsY0FBYyx3QkFBd0IsYUFBYSxzQ0FBc0MsaUJBQWlCLGVBQWUsaUNBQWlDLGFBQWEsWUFBWSwwQkFBMEIsMkJBQTJCLGlCQUFpQjtBQUNsWiwwQkFBMEIsZUFBZSwwQ0FBMEMsdUJBQXVCLGVBQWUsdUNBQXVDLGVBQWUsZUFBZSwrQkFBK0Isa0JBQWtCLGlCQUFpQixvQ0FBb0MsY0FBYyxhQUFhLDRCQUE0QixnQkFBZ0IsYUFBYSw4QkFBOEIsNEJBQTRCLGlCQUFpQjtBQUNuYyxxQkFBcUIsWUFBWSxrQ0FBa0MsZUFBZSIsInNvdXJjZXMiOlsid2VicGFjazovL0Nhb3NEQldlYnVpMi8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QucHJvZHVjdGlvbi5taW4uanM/ZDEzOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGw9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbj1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLHA9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLHE9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLHI9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLHQ9U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLHU9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksdj1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksdz1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIikseD1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSx5PVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLHo9U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIEEoYSl7aWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPXomJmFbel18fGFbXCJAQGl0ZXJhdG9yXCJdO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2E6bnVsbH1cbnZhciBCPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxDPU9iamVjdC5hc3NpZ24sRD17fTtmdW5jdGlvbiBFKGEsYixlKXt0aGlzLnByb3BzPWE7dGhpcy5jb250ZXh0PWI7dGhpcy5yZWZzPUQ7dGhpcy51cGRhdGVyPWV8fEJ9RS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fTtcbkUucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGEsYil7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmbnVsbCE9YSl0aHJvdyBFcnJvcihcInNldFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLlwiKTt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsYSxiLFwic2V0U3RhdGVcIil9O0UucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGEpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxhLFwiZm9yY2VVcGRhdGVcIil9O2Z1bmN0aW9uIEYoKXt9Ri5wcm90b3R5cGU9RS5wcm90b3R5cGU7ZnVuY3Rpb24gRyhhLGIsZSl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1EO3RoaXMudXBkYXRlcj1lfHxCfXZhciBIPUcucHJvdG90eXBlPW5ldyBGO1xuSC5jb25zdHJ1Y3Rvcj1HO0MoSCxFLnByb3RvdHlwZSk7SC5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgST1BcnJheS5pc0FycmF5LEo9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxLPXtjdXJyZW50Om51bGx9LEw9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIE0oYSxiLGUpe3ZhciBkLGM9e30saz1udWxsLGg9bnVsbDtpZihudWxsIT1iKWZvcihkIGluIHZvaWQgMCE9PWIucmVmJiYoaD1iLnJlZiksdm9pZCAwIT09Yi5rZXkmJihrPVwiXCIrYi5rZXkpLGIpSi5jYWxsKGIsZCkmJiFMLmhhc093blByb3BlcnR5KGQpJiYoY1tkXT1iW2RdKTt2YXIgZz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWcpYy5jaGlsZHJlbj1lO2Vsc2UgaWYoMTxnKXtmb3IodmFyIGY9QXJyYXkoZyksbT0wO208ZzttKyspZlttXT1hcmd1bWVudHNbbSsyXTtjLmNoaWxkcmVuPWZ9aWYoYSYmYS5kZWZhdWx0UHJvcHMpZm9yKGQgaW4gZz1hLmRlZmF1bHRQcm9wcyxnKXZvaWQgMD09PWNbZF0mJihjW2RdPWdbZF0pO3JldHVybnskJHR5cGVvZjpsLHR5cGU6YSxrZXk6ayxyZWY6aCxwcm9wczpjLF9vd25lcjpLLmN1cnJlbnR9fVxuZnVuY3Rpb24gTihhLGIpe3JldHVybnskJHR5cGVvZjpsLHR5cGU6YS50eXBlLGtleTpiLHJlZjphLnJlZixwcm9wczphLnByb3BzLF9vd25lcjphLl9vd25lcn19ZnVuY3Rpb24gTyhhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09bH1mdW5jdGlvbiBlc2NhcGUoYSl7dmFyIGI9e1wiPVwiOlwiPTBcIixcIjpcIjpcIj0yXCJ9O3JldHVyblwiJFwiK2EucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfSl9dmFyIFA9L1xcLysvZztmdW5jdGlvbiBRKGEsYil7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmbnVsbCE9YS5rZXk/ZXNjYXBlKFwiXCIrYS5rZXkpOmIudG9TdHJpbmcoMzYpfVxuZnVuY3Rpb24gUihhLGIsZSxkLGMpe3ZhciBrPXR5cGVvZiBhO2lmKFwidW5kZWZpbmVkXCI9PT1rfHxcImJvb2xlYW5cIj09PWspYT1udWxsO3ZhciBoPSExO2lmKG51bGw9PT1hKWg9ITA7ZWxzZSBzd2l0Y2goayl7Y2FzZSBcInN0cmluZ1wiOmNhc2UgXCJudW1iZXJcIjpoPSEwO2JyZWFrO2Nhc2UgXCJvYmplY3RcIjpzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBsOmNhc2UgbjpoPSEwfX1pZihoKXJldHVybiBoPWEsYz1jKGgpLGE9XCJcIj09PWQ/XCIuXCIrUShoLDApOmQsSShjKT8oZT1cIlwiLG51bGwhPWEmJihlPWEucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKSxSKGMsYixlLFwiXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGF9KSk6bnVsbCE9YyYmKE8oYykmJihjPU4oYyxlKyghYy5rZXl8fGgmJmgua2V5PT09Yy5rZXk/XCJcIjooXCJcIitjLmtleSkucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKSthKSksYi5wdXNoKGMpKSwxO2g9MDtkPVwiXCI9PT1kP1wiLlwiOmQrXCI6XCI7aWYoSShhKSlmb3IodmFyIGc9MDtnPGEubGVuZ3RoO2crKyl7az1cbmFbZ107dmFyIGY9ZCtRKGssZyk7aCs9UihrLGIsZSxmLGMpfWVsc2UgaWYoZj1BKGEpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmKWZvcihhPWYuY2FsbChhKSxnPTA7IShrPWEubmV4dCgpKS5kb25lOylrPWsudmFsdWUsZj1kK1EoayxnKyspLGgrPVIoayxiLGUsZixjKTtlbHNlIGlmKFwib2JqZWN0XCI9PT1rKXRocm93IGI9U3RyaW5nKGEpLEVycm9yKFwiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiBcIisoXCJbb2JqZWN0IE9iamVjdF1cIj09PWI/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyhhKS5qb2luKFwiLCBcIikrXCJ9XCI6YikrXCIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuXCIpO3JldHVybiBofVxuZnVuY3Rpb24gUyhhLGIsZSl7aWYobnVsbD09YSlyZXR1cm4gYTt2YXIgZD1bXSxjPTA7UihhLGQsXCJcIixcIlwiLGZ1bmN0aW9uKGEpe3JldHVybiBiLmNhbGwoZSxhLGMrKyl9KTtyZXR1cm4gZH1mdW5jdGlvbiBUKGEpe2lmKC0xPT09YS5fc3RhdHVzKXt2YXIgYj1hLl9yZXN1bHQ7Yj1iKCk7Yi50aGVuKGZ1bmN0aW9uKGIpe2lmKDA9PT1hLl9zdGF0dXN8fC0xPT09YS5fc3RhdHVzKWEuX3N0YXR1cz0xLGEuX3Jlc3VsdD1ifSxmdW5jdGlvbihiKXtpZigwPT09YS5fc3RhdHVzfHwtMT09PWEuX3N0YXR1cylhLl9zdGF0dXM9MixhLl9yZXN1bHQ9Yn0pOy0xPT09YS5fc3RhdHVzJiYoYS5fc3RhdHVzPTAsYS5fcmVzdWx0PWIpfWlmKDE9PT1hLl9zdGF0dXMpcmV0dXJuIGEuX3Jlc3VsdC5kZWZhdWx0O3Rocm93IGEuX3Jlc3VsdDt9XG52YXIgVT17Y3VycmVudDpudWxsfSxWPXt0cmFuc2l0aW9uOm51bGx9LFc9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6VSxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzpWLFJlYWN0Q3VycmVudE93bmVyOkt9O2V4cG9ydHMuQ2hpbGRyZW49e21hcDpTLGZvckVhY2g6ZnVuY3Rpb24oYSxiLGUpe1MoYSxmdW5jdGlvbigpe2IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlKX0sY291bnQ6ZnVuY3Rpb24oYSl7dmFyIGI9MDtTKGEsZnVuY3Rpb24oKXtiKyt9KTtyZXR1cm4gYn0sdG9BcnJheTpmdW5jdGlvbihhKXtyZXR1cm4gUyhhLGZ1bmN0aW9uKGEpe3JldHVybiBhfSl8fFtdfSxvbmx5OmZ1bmN0aW9uKGEpe2lmKCFPKGEpKXRocm93IEVycm9yKFwiUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuXCIpO3JldHVybiBhfX07ZXhwb3J0cy5Db21wb25lbnQ9RTtleHBvcnRzLkZyYWdtZW50PXA7XG5leHBvcnRzLlByb2ZpbGVyPXI7ZXhwb3J0cy5QdXJlQ29tcG9uZW50PUc7ZXhwb3J0cy5TdHJpY3RNb2RlPXE7ZXhwb3J0cy5TdXNwZW5zZT13O2V4cG9ydHMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9VztcbmV4cG9ydHMuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGEsYixlKXtpZihudWxsPT09YXx8dm9pZCAwPT09YSl0aHJvdyBFcnJvcihcIlJlYWN0LmNsb25lRWxlbWVudCguLi4pOiBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIFJlYWN0IGVsZW1lbnQsIGJ1dCB5b3UgcGFzc2VkIFwiK2ErXCIuXCIpO3ZhciBkPUMoe30sYS5wcm9wcyksYz1hLmtleSxrPWEucmVmLGg9YS5fb3duZXI7aWYobnVsbCE9Yil7dm9pZCAwIT09Yi5yZWYmJihrPWIucmVmLGg9Sy5jdXJyZW50KTt2b2lkIDAhPT1iLmtleSYmKGM9XCJcIitiLmtleSk7aWYoYS50eXBlJiZhLnR5cGUuZGVmYXVsdFByb3BzKXZhciBnPWEudHlwZS5kZWZhdWx0UHJvcHM7Zm9yKGYgaW4gYilKLmNhbGwoYixmKSYmIUwuaGFzT3duUHJvcGVydHkoZikmJihkW2ZdPXZvaWQgMD09PWJbZl0mJnZvaWQgMCE9PWc/Z1tmXTpiW2ZdKX12YXIgZj1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWYpZC5jaGlsZHJlbj1lO2Vsc2UgaWYoMTxmKXtnPUFycmF5KGYpO1xuZm9yKHZhciBtPTA7bTxmO20rKylnW21dPWFyZ3VtZW50c1ttKzJdO2QuY2hpbGRyZW49Z31yZXR1cm57JCR0eXBlb2Y6bCx0eXBlOmEudHlwZSxrZXk6YyxyZWY6ayxwcm9wczpkLF9vd25lcjpofX07ZXhwb3J0cy5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKGEpe2E9eyQkdHlwZW9mOnUsX2N1cnJlbnRWYWx1ZTphLF9jdXJyZW50VmFsdWUyOmEsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsLF9kZWZhdWx0VmFsdWU6bnVsbCxfZ2xvYmFsTmFtZTpudWxsfTthLlByb3ZpZGVyPXskJHR5cGVvZjp0LF9jb250ZXh0OmF9O3JldHVybiBhLkNvbnN1bWVyPWF9O2V4cG9ydHMuY3JlYXRlRWxlbWVudD1NO2V4cG9ydHMuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbihhKXt2YXIgYj1NLmJpbmQobnVsbCxhKTtiLnR5cGU9YTtyZXR1cm4gYn07ZXhwb3J0cy5jcmVhdGVSZWY9ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX07XG5leHBvcnRzLmZvcndhcmRSZWY9ZnVuY3Rpb24oYSl7cmV0dXJueyQkdHlwZW9mOnYscmVuZGVyOmF9fTtleHBvcnRzLmlzVmFsaWRFbGVtZW50PU87ZXhwb3J0cy5sYXp5PWZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjp5LF9wYXlsb2FkOntfc3RhdHVzOi0xLF9yZXN1bHQ6YX0sX2luaXQ6VH19O2V4cG9ydHMubWVtbz1mdW5jdGlvbihhLGIpe3JldHVybnskJHR5cGVvZjp4LHR5cGU6YSxjb21wYXJlOnZvaWQgMD09PWI/bnVsbDpifX07ZXhwb3J0cy5zdGFydFRyYW5zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGI9Vi50cmFuc2l0aW9uO1YudHJhbnNpdGlvbj17fTt0cnl7YSgpfWZpbmFsbHl7Vi50cmFuc2l0aW9uPWJ9fTtleHBvcnRzLnVuc3RhYmxlX2FjdD1mdW5jdGlvbigpe3Rocm93IEVycm9yKFwiYWN0KC4uLikgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBvZiBSZWFjdC5cIik7fTtcbmV4cG9ydHMudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUNhbGxiYWNrKGEsYil9O2V4cG9ydHMudXNlQ29udGV4dD1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZUNvbnRleHQoYSl9O2V4cG9ydHMudXNlRGVidWdWYWx1ZT1mdW5jdGlvbigpe307ZXhwb3J0cy51c2VEZWZlcnJlZFZhbHVlPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShhKX07ZXhwb3J0cy51c2VFZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUVmZmVjdChhLGIpfTtleHBvcnRzLnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIFUuY3VycmVudC51c2VJZCgpfTtleHBvcnRzLnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlSW1wZXJhdGl2ZUhhbmRsZShhLGIsZSl9O1xuZXhwb3J0cy51c2VJbnNlcnRpb25FZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUluc2VydGlvbkVmZmVjdChhLGIpfTtleHBvcnRzLnVzZUxheW91dEVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlTGF5b3V0RWZmZWN0KGEsYil9O2V4cG9ydHMudXNlTWVtbz1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlTWVtbyhhLGIpfTtleHBvcnRzLnVzZVJlZHVjZXI9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlUmVkdWNlcihhLGIsZSl9O2V4cG9ydHMudXNlUmVmPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlUmVmKGEpfTtleHBvcnRzLnVzZVN0YXRlPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlU3RhdGUoYSl9O2V4cG9ydHMudXNlU3luY0V4dGVybmFsU3RvcmU9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlU3luY0V4dGVybmFsU3RvcmUoYSxiLGUpfTtcbmV4cG9ydHMudXNlVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiBVLmN1cnJlbnQudXNlVHJhbnNpdGlvbigpfTtleHBvcnRzLnZlcnNpb249XCIxOC4yLjBcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///218\n')},526:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nif (true) {\n  module.exports = __webpack_require__(218);\n} else {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTI2LmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksSUFBcUM7QUFDekMsRUFBRSx5Q0FBeUQ7QUFDM0QsRUFBRSxLQUFLLEVBRU4iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvLi9ub2RlX21vZHVsZXMvcmVhY3QvaW5kZXguanM/Y2E3OCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///526\n")},196:(__unused_webpack_module,exports)=>{"use strict";eval('/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nfunction f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if("object"===typeof performance&&"function"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D="function"===typeof setTimeout?setTimeout:null,E="function"===typeof clearTimeout?clearTimeout:null,F="undefined"!==typeof setImmediate?setImmediate:null;\n"undefined"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if("function"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();"function"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if("function"===typeof F)S=function(){F(R)};else if("undefined"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();"object"===typeof c&&null!==c?(c=c.delay,c="number"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk2LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNhLGdCQUFnQixlQUFlLFVBQVUsT0FBTyxJQUFJLEVBQUUscUJBQXFCLDhCQUE4QixjQUFjLGNBQWMsOEJBQThCLGNBQWMsNEJBQTRCLHFCQUFxQixVQUFVLE9BQU8saUNBQWlDLElBQUksRUFBRSxvQ0FBb0Msa0VBQWtFLHdDQUF3QyxjQUFjO0FBQ25jLGdCQUFnQiw4QkFBOEIseUJBQXlCLHVFQUF1RSxrQkFBa0Isb0JBQW9CLFlBQVksZ0JBQWdCLEtBQUsscUJBQXFCLG9CQUFvQixZQUFZLGtCQUFrQjtBQUM1Uiw0S0FBNEssY0FBYyxlQUFlLFNBQVMsRUFBRSwwQkFBMEIsZ0VBQWdFLFdBQVcsUUFBUSxjQUFjLEtBQUssS0FBSywrQkFBK0IsS0FBSyxXQUFXO0FBQ3hZLGdCQUFnQixLQUFLLG9CQUFvQixLQUFLLFFBQVEsSUFBSSxLQUFLLFdBQVcsMkNBQTJDLEVBQUUsaUJBQWlCLDBCQUEwQixnQkFBZ0Isa0JBQWtCLDZCQUE2Qix5QkFBeUIsa0RBQWtELEtBQUssVUFBVSxPQUFPLHFCQUFxQixLQUFLLFdBQVcsNkJBQTZCLEtBQUssU0FBUyxRQUFRLGlCQUFpQjtBQUMzYSxhQUFhLHdDQUF3QyxhQUFhLGFBQWEsNkJBQTZCLElBQUksU0FBUyxJQUFJLFVBQVUsUUFBUSxxQkFBcUIsVUFBVSxNQUFNLHNDQUFzQyxNQUFNLDZDQUE2QyxtQ0FBbUMsb0JBQW9CLGFBQWEscUJBQXFCLGtCQUFrQixRQUFRLGNBQWMsSUFBSSxjQUFjLGdCQUFnQixlQUFlLDBCQUEwQjtBQUN6ZCw2QkFBNkIsR0FBRyxrQ0FBa0MsR0FBRyw0QkFBNEIsR0FBRywrQkFBK0IsR0FBRywwQkFBMEIsTUFBTSxxQ0FBcUMsR0FBRywrQkFBK0IsYUFBYSxpQkFBaUIsa0NBQWtDLFlBQVk7QUFDelQsK0JBQStCLGFBQWEsdUtBQXVLLHdDQUF3QyxZQUFZLFVBQVUscUNBQXFDLFlBQVksYUFBYSxxQkFBcUIsYUFBYSxVQUFVLDZCQUE2QixNQUFNLFlBQVksUUFBUSxJQUFJLElBQUksV0FBVyxRQUFRLE1BQU0sK0JBQStCO0FBQ2xmLDZCQUE2QixjQUFjLGdDQUFnQyxlQUFlLFVBQVUseUNBQXlDLFlBQVksUUFBUSxJQUFJLElBQUksV0FBVyxRQUFRO0FBQzVMLGlDQUFpQyxpQkFBaUIsNkJBQTZCLCtFQUErRSxVQUFVLGdCQUFnQixNQUFNLGFBQWEsTUFBTSxvQkFBb0IsTUFBTSxhQUFhLE1BQU0sY0FBYyxNQUFNLEdBQUcsNkVBQTZFLHlIQUF5SDtBQUMzZCw0QkFBNEIsR0FBRyw2QkFBNkIsYUFBYSxRQUFRLGtCQUFrQixRQUFRLElBQUksSUFBSSwrQkFBK0IsUUFBUSIsInNvdXJjZXMiOlsid2VicGFjazovL0Nhb3NEQldlYnVpMi8uL25vZGVfbW9kdWxlcy9zY2hlZHVsZXIvY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcz9mODE5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHNjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7ZnVuY3Rpb24gZihhLGIpe3ZhciBjPWEubGVuZ3RoO2EucHVzaChiKTthOmZvcig7MDxjOyl7dmFyIGQ9Yy0xPj4+MSxlPWFbZF07aWYoMDxnKGUsYikpYVtkXT1iLGFbY109ZSxjPWQ7ZWxzZSBicmVhayBhfX1mdW5jdGlvbiBoKGEpe3JldHVybiAwPT09YS5sZW5ndGg/bnVsbDphWzBdfWZ1bmN0aW9uIGsoYSl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3ZhciBiPWFbMF0sYz1hLnBvcCgpO2lmKGMhPT1iKXthWzBdPWM7YTpmb3IodmFyIGQ9MCxlPWEubGVuZ3RoLHc9ZT4+PjE7ZDx3Oyl7dmFyIG09MiooZCsxKS0xLEM9YVttXSxuPW0rMSx4PWFbbl07aWYoMD5nKEMsYykpbjxlJiYwPmcoeCxDKT8oYVtkXT14LGFbbl09YyxkPW4pOihhW2RdPUMsYVttXT1jLGQ9bSk7ZWxzZSBpZihuPGUmJjA+Zyh4LGMpKWFbZF09eCxhW25dPWMsZD1uO2Vsc2UgYnJlYWsgYX19cmV0dXJuIGJ9XG5mdW5jdGlvbiBnKGEsYil7dmFyIGM9YS5zb3J0SW5kZXgtYi5zb3J0SW5kZXg7cmV0dXJuIDAhPT1jP2M6YS5pZC1iLmlkfWlmKFwib2JqZWN0XCI9PT10eXBlb2YgcGVyZm9ybWFuY2UmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe3ZhciBsPXBlcmZvcm1hbmNlO2V4cG9ydHMudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIGwubm93KCl9fWVsc2V7dmFyIHA9RGF0ZSxxPXAubm93KCk7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gcC5ub3coKS1xfX12YXIgcj1bXSx0PVtdLHU9MSx2PW51bGwseT0zLHo9ITEsQT0hMSxCPSExLEQ9XCJmdW5jdGlvblwiPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpudWxsLEU9XCJmdW5jdGlvblwiPT09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6bnVsbCxGPVwidW5kZWZpbmVkXCIhPT10eXBlb2Ygc2V0SW1tZWRpYXRlP3NldEltbWVkaWF0ZTpudWxsO1xuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBuYXZpZ2F0b3ImJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nJiZ2b2lkIDAhPT1uYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZyYmbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcuYmluZChuYXZpZ2F0b3Iuc2NoZWR1bGluZyk7ZnVuY3Rpb24gRyhhKXtmb3IodmFyIGI9aCh0KTtudWxsIT09Yjspe2lmKG51bGw9PT1iLmNhbGxiYWNrKWsodCk7ZWxzZSBpZihiLnN0YXJ0VGltZTw9YSlrKHQpLGIuc29ydEluZGV4PWIuZXhwaXJhdGlvblRpbWUsZihyLGIpO2Vsc2UgYnJlYWs7Yj1oKHQpfX1mdW5jdGlvbiBIKGEpe0I9ITE7RyhhKTtpZighQSlpZihudWxsIT09aChyKSlBPSEwLEkoSik7ZWxzZXt2YXIgYj1oKHQpO251bGwhPT1iJiZLKEgsYi5zdGFydFRpbWUtYSl9fVxuZnVuY3Rpb24gSihhLGIpe0E9ITE7QiYmKEI9ITEsRShMKSxMPS0xKTt6PSEwO3ZhciBjPXk7dHJ5e0coYik7Zm9yKHY9aChyKTtudWxsIT09diYmKCEodi5leHBpcmF0aW9uVGltZT5iKXx8YSYmIU0oKSk7KXt2YXIgZD12LmNhbGxiYWNrO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2LmNhbGxiYWNrPW51bGw7eT12LnByaW9yaXR5TGV2ZWw7dmFyIGU9ZCh2LmV4cGlyYXRpb25UaW1lPD1iKTtiPWV4cG9ydHMudW5zdGFibGVfbm93KCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGU/di5jYWxsYmFjaz1lOnY9PT1oKHIpJiZrKHIpO0coYil9ZWxzZSBrKHIpO3Y9aChyKX1pZihudWxsIT09dil2YXIgdz0hMDtlbHNle3ZhciBtPWgodCk7bnVsbCE9PW0mJksoSCxtLnN0YXJ0VGltZS1iKTt3PSExfXJldHVybiB3fWZpbmFsbHl7dj1udWxsLHk9Yyx6PSExfX12YXIgTj0hMSxPPW51bGwsTD0tMSxQPTUsUT0tMTtcbmZ1bmN0aW9uIE0oKXtyZXR1cm4gZXhwb3J0cy51bnN0YWJsZV9ub3coKS1RPFA/ITE6ITB9ZnVuY3Rpb24gUigpe2lmKG51bGwhPT1PKXt2YXIgYT1leHBvcnRzLnVuc3RhYmxlX25vdygpO1E9YTt2YXIgYj0hMDt0cnl7Yj1PKCEwLGEpfWZpbmFsbHl7Yj9TKCk6KE49ITEsTz1udWxsKX19ZWxzZSBOPSExfXZhciBTO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBGKVM9ZnVuY3Rpb24oKXtGKFIpfTtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBUPW5ldyBNZXNzYWdlQ2hhbm5lbCxVPVQucG9ydDI7VC5wb3J0MS5vbm1lc3NhZ2U9UjtTPWZ1bmN0aW9uKCl7VS5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSBTPWZ1bmN0aW9uKCl7RChSLDApfTtmdW5jdGlvbiBJKGEpe089YTtOfHwoTj0hMCxTKCkpfWZ1bmN0aW9uIEsoYSxiKXtMPUQoZnVuY3Rpb24oKXthKGV4cG9ydHMudW5zdGFibGVfbm93KCkpfSxiKX1cbmV4cG9ydHMudW5zdGFibGVfSWRsZVByaW9yaXR5PTU7ZXhwb3J0cy51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eT0xO2V4cG9ydHMudW5zdGFibGVfTG93UHJpb3JpdHk9NDtleHBvcnRzLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5PTM7ZXhwb3J0cy51bnN0YWJsZV9Qcm9maWxpbmc9bnVsbDtleHBvcnRzLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5PTI7ZXhwb3J0cy51bnN0YWJsZV9jYW5jZWxDYWxsYmFjaz1mdW5jdGlvbihhKXthLmNhbGxiYWNrPW51bGx9O2V4cG9ydHMudW5zdGFibGVfY29udGludWVFeGVjdXRpb249ZnVuY3Rpb24oKXtBfHx6fHwoQT0hMCxJKEopKX07XG5leHBvcnRzLnVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlPWZ1bmN0aW9uKGEpezA+YXx8MTI1PGE/Y29uc29sZS5lcnJvcihcImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZFwiKTpQPTA8YT9NYXRoLmZsb29yKDFFMy9hKTo1fTtleHBvcnRzLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHl9O2V4cG9ydHMudW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gaChyKX07ZXhwb3J0cy51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKGEpe3N3aXRjaCh5KXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgYj0zO2JyZWFrO2RlZmF1bHQ6Yj15fXZhciBjPXk7eT1iO3RyeXtyZXR1cm4gYSgpfWZpbmFsbHl7eT1jfX07ZXhwb3J0cy51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe307XG5leHBvcnRzLnVuc3RhYmxlX3JlcXVlc3RQYWludD1mdW5jdGlvbigpe307ZXhwb3J0cy51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhaztkZWZhdWx0OmE9M312YXIgYz15O3k9YTt0cnl7cmV0dXJuIGIoKX1maW5hbGx5e3k9Y319O1xuZXhwb3J0cy51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1leHBvcnRzLnVuc3RhYmxlX25vdygpO1wib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWM/KGM9Yy5kZWxheSxjPVwibnVtYmVyXCI9PT10eXBlb2YgYyYmMDxjP2QrYzpkKTpjPWQ7c3dpdGNoKGEpe2Nhc2UgMTp2YXIgZT0tMTticmVhaztjYXNlIDI6ZT0yNTA7YnJlYWs7Y2FzZSA1OmU9MTA3Mzc0MTgyMzticmVhaztjYXNlIDQ6ZT0xRTQ7YnJlYWs7ZGVmYXVsdDplPTVFM31lPWMrZTthPXtpZDp1KyssY2FsbGJhY2s6Yixwcmlvcml0eUxldmVsOmEsc3RhcnRUaW1lOmMsZXhwaXJhdGlvblRpbWU6ZSxzb3J0SW5kZXg6LTF9O2M+ZD8oYS5zb3J0SW5kZXg9YyxmKHQsYSksbnVsbD09PWgocikmJmE9PT1oKHQpJiYoQj8oRShMKSxMPS0xKTpCPSEwLEsoSCxjLWQpKSk6KGEuc29ydEluZGV4PWUsZihyLGEpLEF8fHp8fChBPSEwLEkoSikpKTtyZXR1cm4gYX07XG5leHBvcnRzLnVuc3RhYmxlX3Nob3VsZFlpZWxkPU07ZXhwb3J0cy51bnN0YWJsZV93cmFwQ2FsbGJhY2s9ZnVuY3Rpb24oYSl7dmFyIGI9eTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz15O3k9Yjt0cnl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7eT1jfX19O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///196\n')},851:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nif (true) {\n  module.exports = __webpack_require__(196);\n} else {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUxLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksSUFBcUM7QUFDekMsRUFBRSx5Q0FBNkQ7QUFDL0QsRUFBRSxLQUFLLEVBRU4iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2luZGV4LmpzPzk1YjYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9zY2hlZHVsZXIuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///851\n")}},__webpack_module_cache__={};function __webpack_require__(F){var Q=__webpack_module_cache__[F];if(void 0!==Q)return Q.exports;var U=__webpack_module_cache__[F]={exports:{}};return __webpack_modules__[F](U,U.exports,__webpack_require__),U.exports}__webpack_require__.n=F=>{var Q=F&&F.__esModule?()=>F.default:()=>F;return __webpack_require__.d(Q,{a:Q}),Q},__webpack_require__.d=(F,Q)=>{for(var U in Q)__webpack_require__.o(Q,U)&&!__webpack_require__.o(F,U)&&Object.defineProperty(F,U,{enumerable:!0,get:Q[U]})},__webpack_require__.o=(F,Q)=>Object.prototype.hasOwnProperty.call(F,Q),__webpack_require__.r=F=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(F,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(F,"__esModule",{value:!0})};var __webpack_exports__=__webpack_require__(445);window.CaosDBWebui2=__webpack_exports__})();
\ No newline at end of file