@phenixrts/sdk 2025.2.4-beta.619 → 2025.2.4-beta.621

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/channels/debug/channels.js +429 -357
  2. package/channels/debug/package.json +1 -1
  3. package/channels/debug.private/channels.js +429 -357
  4. package/channels/debug.private/package.json +1 -1
  5. package/channels/debug.provideGlobalScope/channels.js +429 -357
  6. package/channels/debug.provideGlobalScope/package.json +1 -1
  7. package/channels/es5.debug.private/channels.js +444 -352
  8. package/channels/es5.debug.private/package.json +1 -1
  9. package/channels/min/channels.js +1 -1
  10. package/channels/min/channels.js.map +1 -1
  11. package/channels/min/package.json +1 -1
  12. package/channels/min.private/channels.js +1 -1
  13. package/channels/min.private/channels.js.map +1 -1
  14. package/channels/min.private/package.json +1 -1
  15. package/channels/min.provideGlobalScope/channels.js +1 -1
  16. package/channels/min.provideGlobalScope/channels.js.map +1 -1
  17. package/channels/min.provideGlobalScope/package.json +1 -1
  18. package/channels/package.json +1 -1
  19. package/full/debug/full.js +429 -357
  20. package/full/debug/package.json +1 -1
  21. package/full/debug.private/full.js +429 -357
  22. package/full/debug.private/package.json +1 -1
  23. package/full/min/full.js +1 -1
  24. package/full/min/full.js.map +1 -1
  25. package/full/min/package.json +1 -1
  26. package/full/min.private/full.js +1 -1
  27. package/full/min.private/full.js.map +1 -1
  28. package/full/min.private/package.json +1 -1
  29. package/full/package.json +1 -1
  30. package/package.json +1 -1
  31. package/publish/debug/package.json +1 -1
  32. package/publish/debug/publish.js +429 -357
  33. package/publish/debug.private/package.json +1 -1
  34. package/publish/debug.private/publish.js +429 -357
  35. package/publish/min/package.json +1 -1
  36. package/publish/min/publish.js +1 -1
  37. package/publish/min/publish.js.map +1 -1
  38. package/publish/min.private/package.json +1 -1
  39. package/publish/min.private/publish.js +1 -1
  40. package/publish/min.private/publish.js.map +1 -1
  41. package/publish/package.json +1 -1
  42. package/types/sdk/discovery/EndPoint.d.ts +4 -2
@@ -5420,31 +5420,51 @@ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpe
5420
5420
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
5421
5421
  /* harmony export */ "default": () => (/* binding */ EndPoint)
5422
5422
  /* harmony export */ });
5423
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/toConsumableArray.js */ "./node_modules/@babel/runtime/helpers/toConsumableArray.js");
5424
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_0__);
5425
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/asyncToGenerator.js */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js");
5426
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1__);
5427
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/classCallCheck.js */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
5428
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_2__);
5429
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/createClass.js */ "./node_modules/@babel/runtime/helpers/createClass.js");
5430
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_3__);
5431
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/defineProperty.js */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
5432
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_4__);
5433
- /* harmony import */ var _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../globalScope/GlobalScope */ "./src/globalScope/GlobalScope.ts");
5434
- /* harmony import */ var _logger_LoggerFactory__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../logger/LoggerFactory */ "./src/logger/LoggerFactory.ts");
5435
- /* harmony import */ var _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../edgeAuth/EdgeAuthParser */ "./src/edgeAuth/EdgeAuthParser.ts");
5436
- /* harmony import */ var _version_VersionManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../version/VersionManager */ "./src/sdk/version/VersionManager.ts");
5437
- /* harmony import */ var _environment_Parameters__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../environment/Parameters */ "./src/environment/Parameters.ts");
5438
- /* harmony import */ var _BitrateModeMapping__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./BitrateModeMapping */ "./src/sdk/discovery/BitrateModeMapping.ts");
5439
- /* harmony import */ var _BitrateStateMapping__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./BitrateStateMapping */ "./src/sdk/discovery/BitrateStateMapping.ts");
5423
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js");
5424
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_0__);
5425
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/toConsumableArray.js */ "./node_modules/@babel/runtime/helpers/toConsumableArray.js");
5426
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1__);
5427
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/asyncToGenerator.js */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js");
5428
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2__);
5429
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/defineProperty.js */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
5430
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_3__);
5431
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/createClass.js */ "./node_modules/@babel/runtime/helpers/createClass.js");
5432
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_4__);
5433
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/classCallCheck.js */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
5434
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_5__);
5435
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js");
5436
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_6__);
5437
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/getPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js");
5438
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_7__);
5439
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/inherits.js */ "./node_modules/@babel/runtime/helpers/inherits.js");
5440
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_8__);
5441
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_wrapNativeSuper_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/wrapNativeSuper.js */ "./node_modules/@babel/runtime/helpers/wrapNativeSuper.js");
5442
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_wrapNativeSuper_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_wrapNativeSuper_js__WEBPACK_IMPORTED_MODULE_9__);
5443
+ /* harmony import */ var _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../globalScope/GlobalScope */ "./src/globalScope/GlobalScope.ts");
5444
+ /* harmony import */ var _logger_LoggerFactory__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../logger/LoggerFactory */ "./src/logger/LoggerFactory.ts");
5445
+ /* harmony import */ var _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../edgeAuth/EdgeAuthParser */ "./src/edgeAuth/EdgeAuthParser.ts");
5446
+ /* harmony import */ var _version_VersionManager__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../version/VersionManager */ "./src/sdk/version/VersionManager.ts");
5447
+ /* harmony import */ var _environment_Parameters__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../environment/Parameters */ "./src/environment/Parameters.ts");
5448
+ /* harmony import */ var _BitrateModeMapping__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./BitrateModeMapping */ "./src/sdk/discovery/BitrateModeMapping.ts");
5449
+ /* harmony import */ var _BitrateStateMapping__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./BitrateStateMapping */ "./src/sdk/discovery/BitrateStateMapping.ts");
5440
5450
  /* provided dependency */ var Promise = __webpack_require__(/*! ./src/promise/Promise */ "./src/promise/Promise.ts")["default"];
5441
5451
 
5442
5452
 
5443
5453
 
5444
5454
 
5445
5455
 
5456
+
5457
+
5458
+
5459
+
5460
+
5461
+ var _excluded = ["status", "streamId", "sharedSecret", "lag", "rtcConfiguration", "setRemoteDescriptionResponse", "createAnswerDescriptionResponse", "createOfferDescriptionResponse", "streamResponseContext"];
5462
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5463
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_3___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5446
5464
  function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
5447
5465
  function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
5466
+ function _callSuper(t, o, e) { return o = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_7___default()(o), _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_6___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_7___default()(t).constructor) : o.apply(t, e)); }
5467
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
5448
5468
  /**
5449
5469
  * Copyright 2026 Perform Content Services Limited. Confidential and Proprietary. All Rights Reserved.
5450
5470
  */
@@ -5457,20 +5477,28 @@ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try {
5457
5477
 
5458
5478
 
5459
5479
  var apiVersion = 7;
5480
+ var FetchTimeoutError = /*#__PURE__*/function (_Error) {
5481
+ function FetchTimeoutError() {
5482
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_5___default()(this, FetchTimeoutError);
5483
+ return _callSuper(this, FetchTimeoutError, arguments);
5484
+ }
5485
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_8___default()(FetchTimeoutError, _Error);
5486
+ return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_4___default()(FetchTimeoutError);
5487
+ }(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_wrapNativeSuper_js__WEBPACK_IMPORTED_MODULE_9___default()(Error));
5460
5488
  var EndPoint = /*#__PURE__*/function () {
5461
5489
  function EndPoint(uri, timeout) {
5462
- _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_2___default()(this, EndPoint);
5463
- _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_4___default()(this, "_logger", _logger_LoggerFactory__WEBPACK_IMPORTED_MODULE_6__["default"].getLogger('EndPoint'));
5464
- _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_4___default()(this, "_uri", void 0);
5465
- _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_4___default()(this, "_timeout", void 0);
5466
- _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_4___default()(this, "_roundTripTime", 0);
5490
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_5___default()(this, EndPoint);
5491
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_3___default()(this, "_logger", _logger_LoggerFactory__WEBPACK_IMPORTED_MODULE_11__["default"].getLogger('EndPoint'));
5492
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_3___default()(this, "_uri", void 0);
5493
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_3___default()(this, "_timeoutDuration", void 0);
5494
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_3___default()(this, "_roundTripTime", 0);
5467
5495
  this._uri = uri;
5468
- this._timeout = timeout;
5496
+ this._timeoutDuration = timeout;
5469
5497
  if (!timeout) {
5470
5498
  throw new Error("End point requires a timeout");
5471
5499
  }
5472
5500
  }
5473
- return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_3___default()(EndPoint, [{
5501
+ return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_4___default()(EndPoint, [{
5474
5502
  key: "roundTripTime",
5475
5503
  get: function get() {
5476
5504
  return this._roundTripTime;
@@ -5483,33 +5511,33 @@ var EndPoint = /*#__PURE__*/function () {
5483
5511
  }, {
5484
5512
  key: "ping",
5485
5513
  value: function () {
5486
- var _ping = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee() {
5487
- var _this = this;
5488
- var url, start, response, finished;
5514
+ var _ping = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee() {
5515
+ var url, start, requestOptions, response;
5489
5516
  return _regenerator().w(function (_context) {
5490
5517
  while (1) switch (_context.n) {
5491
5518
  case 0:
5492
5519
  url = this.buildPingUrl();
5493
5520
  start = Date.now();
5494
- _context.n = 1;
5495
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5521
+ requestOptions = {
5496
5522
  method: 'GET',
5497
5523
  cache: 'no-cache'
5498
- }), new Promise(function (_, reject) {
5499
- return _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
5500
- return reject(new Error("Ping timed out [".concat(url, "]")));
5501
- }, _this._timeout);
5502
- })]);
5524
+ };
5525
+ _context.n = 1;
5526
+ return this.fetchWithTimeout(url, requestOptions, this._timeoutDuration).catch(function (error) {
5527
+ if (error instanceof FetchTimeoutError) {
5528
+ throw new Error("Ping timed out [".concat(url, "]"));
5529
+ }
5530
+ throw error;
5531
+ });
5503
5532
  case 1:
5504
5533
  response = _context.v;
5505
- finished = Date.now();
5506
5534
  if (response.ok) {
5507
5535
  _context.n = 2;
5508
5536
  break;
5509
5537
  }
5510
5538
  throw new Error("Ping failed [".concat(url, "] [").concat(response.status, "]"));
5511
5539
  case 2:
5512
- this._roundTripTime = finished - start;
5540
+ this._roundTripTime = Date.now() - start;
5513
5541
  return _context.a(2, this._roundTripTime);
5514
5542
  }
5515
5543
  }, _callee, this);
@@ -5522,10 +5550,8 @@ var EndPoint = /*#__PURE__*/function () {
5522
5550
  }, {
5523
5551
  key: "subscribe",
5524
5552
  value: function () {
5525
- var _subscribe = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee2(token, localSessionDescription, failureCount) {
5526
- var _options$onSubscribeR,
5527
- _this2 = this,
5528
- _options$onSubscribeR4;
5553
+ var _subscribe = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee2(token, localSessionDescription, failureCount) {
5554
+ var _options$onSubscribeR, _options$onSubscribeR4;
5529
5555
  var options,
5530
5556
  tenancy,
5531
5557
  url,
@@ -5533,8 +5559,8 @@ var EndPoint = /*#__PURE__*/function () {
5533
5559
  clientVersion,
5534
5560
  requestBody,
5535
5561
  start,
5562
+ fetchRequestOptions,
5536
5563
  httpResponse,
5537
- timeout,
5538
5564
  jsonResponseBody,
5539
5565
  status,
5540
5566
  _options$onSubscribeR2,
@@ -5543,13 +5569,12 @@ var EndPoint = /*#__PURE__*/function () {
5543
5569
  _response2,
5544
5570
  finished,
5545
5571
  subscribeResponse,
5546
- _args2 = arguments,
5547
- _t;
5572
+ _args2 = arguments;
5548
5573
  return _regenerator().w(function (_context2) {
5549
- while (1) switch (_context2.p = _context2.n) {
5574
+ while (1) switch (_context2.n) {
5550
5575
  case 0:
5551
5576
  options = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : {};
5552
- tenancy = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_7__["default"].parseToken(token).tenancy;
5577
+ tenancy = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_12__["default"].parseToken(token).tenancy;
5553
5578
  if (tenancy) {
5554
5579
  _context2.n = 1;
5555
5580
  break;
@@ -5560,8 +5585,8 @@ var EndPoint = /*#__PURE__*/function () {
5560
5585
  });
5561
5586
  case 1:
5562
5587
  url = this.buildUrl([tenancy, 'stream', 'subscribe']).toString();
5563
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
5564
- clientVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_8__["default"].sdkVersion;
5588
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.FormData();
5589
+ clientVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_13__["default"].sdkVersion;
5565
5590
  if (failureCount === 0 && localSessionDescription) {
5566
5591
  requestBody = {
5567
5592
  apiVersion: apiVersion,
@@ -5597,75 +5622,53 @@ var EndPoint = /*#__PURE__*/function () {
5597
5622
  case 2:
5598
5623
  formData.append('jsonBody', JSON.stringify(requestBody));
5599
5624
  start = Date.now();
5600
- _context2.p = 3;
5601
- timeout = null;
5602
- _context2.n = 4;
5603
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5625
+ fetchRequestOptions = {
5604
5626
  method: 'POST',
5605
5627
  body: formData
5606
- }), new Promise(function (resolve) {
5607
- return timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
5608
- _this2._logger.error('Failed to subscribe', new Error("Subscribe timed out [".concat(url, "]")));
5609
- resolve({
5610
- status: 408
5611
- });
5612
- }, _this2._timeout);
5613
- })]).finally(function () {
5614
- if (timeout) {
5615
- _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(timeout);
5616
- }
5617
- });
5618
- case 4:
5628
+ };
5629
+ _context2.n = 3;
5630
+ return this.executeFetchRequest(url, fetchRequestOptions, 'subscribe');
5631
+ case 3:
5619
5632
  httpResponse = _context2.v;
5620
- _context2.n = 6;
5621
- break;
5622
- case 5:
5623
- _context2.p = 5;
5624
- _t = _context2.v;
5625
- this._logger.error('Failed to subscribe', _t);
5626
- return _context2.a(2, {
5627
- status: 'failed'
5628
- });
5629
- case 6:
5630
- _context2.n = 7;
5633
+ _context2.n = 4;
5631
5634
  return this.parseJsonBody(httpResponse);
5632
- case 7:
5635
+ case 4:
5633
5636
  jsonResponseBody = _context2.v;
5634
5637
  this.handleStreamResponseContext(jsonResponseBody === null || jsonResponseBody === void 0 ? void 0 : jsonResponseBody.streamResponseContext);
5635
5638
  status = this.mapHttpStatusToSubscribeStatus(httpResponse);
5636
5639
  if (!(status !== 'ok')) {
5637
- _context2.n = 9;
5640
+ _context2.n = 6;
5638
5641
  break;
5639
5642
  }
5640
5643
  _response = {
5641
5644
  status: status
5642
5645
  };
5643
- _context2.n = 8;
5646
+ _context2.n = 5;
5644
5647
  return (_options$onSubscribeR2 = options.onSubscribeResponseCallback) === null || _options$onSubscribeR2 === void 0 ? void 0 : _options$onSubscribeR2.call(options, _response);
5645
- case 8:
5648
+ case 5:
5646
5649
  return _context2.a(2, _response);
5647
- case 9:
5650
+ case 6:
5648
5651
  if (jsonResponseBody) {
5649
- _context2.n = 11;
5652
+ _context2.n = 8;
5650
5653
  break;
5651
5654
  }
5652
5655
  _response2 = {
5653
5656
  status: 'failed'
5654
5657
  };
5655
- _context2.n = 10;
5658
+ _context2.n = 7;
5656
5659
  return (_options$onSubscribeR3 = options.onSubscribeResponseCallback) === null || _options$onSubscribeR3 === void 0 ? void 0 : _options$onSubscribeR3.call(options, _response2);
5657
- case 10:
5660
+ case 7:
5658
5661
  return _context2.a(2, _response2);
5659
- case 11:
5662
+ case 8:
5660
5663
  finished = Date.now();
5661
5664
  subscribeResponse = this.normalizeSubscribeResponse(tenancy, jsonResponseBody);
5662
5665
  this._logger.debug('Got subscribe response [%j] in [%s] ms', subscribeResponse, finished - start);
5663
- _context2.n = 12;
5666
+ _context2.n = 9;
5664
5667
  return (_options$onSubscribeR4 = options.onSubscribeResponseCallback) === null || _options$onSubscribeR4 === void 0 ? void 0 : _options$onSubscribeR4.call(options, subscribeResponse);
5665
- case 12:
5668
+ case 9:
5666
5669
  return _context2.a(2, subscribeResponse);
5667
5670
  }
5668
- }, _callee2, this, [[3, 5]]);
5671
+ }, _callee2, this);
5669
5672
  }));
5670
5673
  function subscribe(_x, _x2, _x3) {
5671
5674
  return _subscribe.apply(this, arguments);
@@ -5675,13 +5678,12 @@ var EndPoint = /*#__PURE__*/function () {
5675
5678
  }, {
5676
5679
  key: "publish",
5677
5680
  value: function () {
5678
- var _publish = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee3(name, token, localSessionDescription, failureCount) {
5679
- var _this3 = this;
5680
- var tenancy, url, formData, clientVersion, bodyWithOffer, bodyWithoutOffer, start, httpResponse, timeout, jsonResponseBody, status, finished, publishResponse, _t2;
5681
+ var _publish = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee3(name, token, localSessionDescription, failureCount) {
5682
+ var tenancy, url, formData, clientVersion, bodyWithOffer, bodyWithoutOffer, start, fetchRequestOptions, httpResponse, jsonResponseBody, status, finished, publishResponse;
5681
5683
  return _regenerator().w(function (_context3) {
5682
- while (1) switch (_context3.p = _context3.n) {
5684
+ while (1) switch (_context3.n) {
5683
5685
  case 0:
5684
- tenancy = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_7__["default"].parseToken(token).tenancy;
5686
+ tenancy = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_12__["default"].parseToken(token).tenancy;
5685
5687
  if (tenancy) {
5686
5688
  _context3.n = 1;
5687
5689
  break;
@@ -5692,8 +5694,8 @@ var EndPoint = /*#__PURE__*/function () {
5692
5694
  });
5693
5695
  case 1:
5694
5696
  url = this.buildUrl([tenancy, 'stream', 'publish']).toString();
5695
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
5696
- clientVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_8__["default"].sdkVersion;
5697
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.FormData();
5698
+ clientVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_13__["default"].sdkVersion;
5697
5699
  if (failureCount === 0 && localSessionDescription) {
5698
5700
  bodyWithOffer = {
5699
5701
  apiVersion: apiVersion,
@@ -5731,64 +5733,42 @@ var EndPoint = /*#__PURE__*/function () {
5731
5733
  formData.append('jsonBody', JSON.stringify(bodyWithoutOffer));
5732
5734
  }
5733
5735
  start = Date.now();
5734
- _context3.p = 2;
5735
- timeout = null;
5736
- _context3.n = 3;
5737
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5736
+ fetchRequestOptions = {
5738
5737
  method: 'POST',
5739
5738
  body: formData
5740
- }), new Promise(function (resolve) {
5741
- return timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
5742
- _this3._logger.error('Failed to publish', new Error("Publish timed out [".concat(url, "]")));
5743
- resolve({
5744
- status: 408
5745
- });
5746
- }, _this3._timeout);
5747
- })]).finally(function () {
5748
- if (timeout) {
5749
- _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(timeout);
5750
- }
5751
- });
5752
- case 3:
5739
+ };
5740
+ _context3.n = 2;
5741
+ return this.executeFetchRequest(url, fetchRequestOptions, 'publish');
5742
+ case 2:
5753
5743
  httpResponse = _context3.v;
5754
- _context3.n = 5;
5755
- break;
5756
- case 4:
5757
- _context3.p = 4;
5758
- _t2 = _context3.v;
5759
- this._logger.error('Failed to publish', _t2);
5760
- return _context3.a(2, {
5761
- status: 'failed'
5762
- });
5763
- case 5:
5764
- _context3.n = 6;
5744
+ _context3.n = 3;
5765
5745
  return this.parseJsonBody(httpResponse);
5766
- case 6:
5746
+ case 3:
5767
5747
  jsonResponseBody = _context3.v;
5768
5748
  this.handleStreamResponseContext(jsonResponseBody === null || jsonResponseBody === void 0 ? void 0 : jsonResponseBody.streamResponseContext);
5769
5749
  status = this.mapHttpStatusToPublishStatus(httpResponse);
5770
5750
  if (!(status !== 'ok')) {
5771
- _context3.n = 7;
5751
+ _context3.n = 4;
5772
5752
  break;
5773
5753
  }
5774
5754
  return _context3.a(2, {
5775
5755
  status: status
5776
5756
  });
5777
- case 7:
5757
+ case 4:
5778
5758
  if (jsonResponseBody) {
5779
- _context3.n = 8;
5759
+ _context3.n = 5;
5780
5760
  break;
5781
5761
  }
5782
5762
  return _context3.a(2, {
5783
5763
  status: 'failed'
5784
5764
  });
5785
- case 8:
5765
+ case 5:
5786
5766
  finished = Date.now();
5787
5767
  publishResponse = this.normalizePublishResponse(tenancy, jsonResponseBody);
5788
5768
  this._logger.debug('Got publish response [%j] in [%s] ms', publishResponse, finished - start);
5789
5769
  return _context3.a(2, publishResponse);
5790
5770
  }
5791
- }, _callee3, this, [[2, 4]]);
5771
+ }, _callee3, this);
5792
5772
  }));
5793
5773
  function publish(_x4, _x5, _x6, _x7) {
5794
5774
  return _publish.apply(this, arguments);
@@ -5798,17 +5778,16 @@ var EndPoint = /*#__PURE__*/function () {
5798
5778
  }, {
5799
5779
  key: "setRemoteDescription",
5800
5780
  value: function () {
5801
- var _setRemoteDescription = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee4(stream, sessionDescription) {
5802
- var _this4 = this;
5803
- var url, formData, body, start, httpResponse, timeout, status, finished, setRemoteDescriptionResponse, _t3;
5781
+ var _setRemoteDescription = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee4(stream, sessionDescription) {
5782
+ var url, formData, body, start, fetchRequestOptions, httpResponse, status, finished, setRemoteDescriptionResponse;
5804
5783
  return _regenerator().w(function (_context4) {
5805
- while (1) switch (_context4.p = _context4.n) {
5784
+ while (1) switch (_context4.n) {
5806
5785
  case 0:
5807
5786
  url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'description', 'remote']).toString();
5808
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
5787
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.FormData();
5809
5788
  body = {
5810
5789
  apiVersion: apiVersion,
5811
- sharedSecret: stream === null || stream === void 0 ? void 0 : stream.sharedSecret,
5790
+ sharedSecret: stream.sharedSecret,
5812
5791
  sessionDescription: {
5813
5792
  type: sessionDescription.type,
5814
5793
  sdp: sessionDescription.sdp
@@ -5816,54 +5795,32 @@ var EndPoint = /*#__PURE__*/function () {
5816
5795
  };
5817
5796
  formData.append('jsonBody', JSON.stringify(body));
5818
5797
  start = Date.now();
5819
- _context4.p = 1;
5820
- timeout = null;
5821
- _context4.n = 2;
5822
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5798
+ fetchRequestOptions = {
5823
5799
  method: 'POST',
5824
5800
  body: formData
5825
- }), new Promise(function (resolve) {
5826
- return timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
5827
- _this4._logger.error('Failed to set remote description', new Error("Set remote description timed out [".concat(url, "]")));
5828
- resolve({
5829
- status: 408
5830
- });
5831
- }, _this4._timeout);
5832
- })]).finally(function () {
5833
- if (timeout) {
5834
- _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(timeout);
5835
- }
5836
- });
5837
- case 2:
5801
+ };
5802
+ _context4.n = 1;
5803
+ return this.executeFetchRequest(url, fetchRequestOptions, 'set remote description');
5804
+ case 1:
5838
5805
  httpResponse = _context4.v;
5839
- _context4.n = 4;
5840
- break;
5841
- case 3:
5842
- _context4.p = 3;
5843
- _t3 = _context4.v;
5844
- this._logger.error('Failed to set remote description', _t3);
5845
- return _context4.a(2, {
5846
- status: 'failed'
5847
- });
5848
- case 4:
5849
5806
  status = this.mapHttpStatusToSetRemoteDescriptionStatus(httpResponse);
5850
5807
  if (!(status !== 'ok')) {
5851
- _context4.n = 5;
5808
+ _context4.n = 2;
5852
5809
  break;
5853
5810
  }
5854
5811
  return _context4.a(2, {
5855
5812
  status: status
5856
5813
  });
5857
- case 5:
5814
+ case 2:
5858
5815
  finished = Date.now();
5859
- _context4.n = 6;
5816
+ _context4.n = 3;
5860
5817
  return this.convertHttpResponseToSetRemoteDescription(httpResponse);
5861
- case 6:
5818
+ case 3:
5862
5819
  setRemoteDescriptionResponse = _context4.v;
5863
5820
  this._logger.debug('Got set remote description response [%j] in [%s] ms', setRemoteDescriptionResponse, finished - start);
5864
5821
  return _context4.a(2, setRemoteDescriptionResponse);
5865
5822
  }
5866
- }, _callee4, this, [[1, 3]]);
5823
+ }, _callee4, this);
5867
5824
  }));
5868
5825
  function setRemoteDescription(_x8, _x9) {
5869
5826
  return _setRemoteDescription.apply(this, arguments);
@@ -5873,54 +5830,31 @@ var EndPoint = /*#__PURE__*/function () {
5873
5830
  }, {
5874
5831
  key: "limitBitrate",
5875
5832
  value: function () {
5876
- var _limitBitrate = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee5(stream, elapsedInMilliseconds, bitrateInBitsPerSecond, bitrateState, bitrateMode) {
5877
- var _this5 = this;
5878
- var url, formData, body, start, httpResponse, timeout, status, finished, _t4;
5833
+ var _limitBitrate = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee5(stream, elapsedInMilliseconds, bitrateInBitsPerSecond, bitrateState, bitrateMode) {
5834
+ var url, formData, body, start, fetchRequestOptions, httpResponse, status, finished;
5879
5835
  return _regenerator().w(function (_context5) {
5880
- while (1) switch (_context5.p = _context5.n) {
5836
+ while (1) switch (_context5.n) {
5881
5837
  case 0:
5882
5838
  url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'bitrate']).toString();
5883
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
5839
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.FormData();
5884
5840
  body = {
5885
5841
  apiVersion: apiVersion,
5886
5842
  sharedSecret: stream.sharedSecret,
5887
5843
  elapsedInMilliseconds: elapsedInMilliseconds,
5888
5844
  bitrateInBitsPerSecond: bitrateInBitsPerSecond,
5889
- bitrateState: _BitrateStateMapping__WEBPACK_IMPORTED_MODULE_11__["default"].convertBitrateStateToBitrateStateType(bitrateState),
5890
- bitrateMode: _BitrateModeMapping__WEBPACK_IMPORTED_MODULE_10__["default"].convertBitrateModeToBitrateModeType(bitrateMode)
5845
+ bitrateState: _BitrateStateMapping__WEBPACK_IMPORTED_MODULE_16__["default"].convertBitrateStateToBitrateStateType(bitrateState),
5846
+ bitrateMode: _BitrateModeMapping__WEBPACK_IMPORTED_MODULE_15__["default"].convertBitrateModeToBitrateModeType(bitrateMode)
5891
5847
  };
5892
5848
  formData.append('jsonBody', JSON.stringify(body));
5893
5849
  start = Date.now();
5894
- _context5.p = 1;
5895
- timeout = null;
5896
- _context5.n = 2;
5897
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5850
+ fetchRequestOptions = {
5898
5851
  method: 'POST',
5899
5852
  body: formData
5900
- }), new Promise(function (resolve) {
5901
- return timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
5902
- _this5._logger.error('Failed to set limit bitrate timed', new Error("Set limit bitrate timed out [".concat(url, "]")));
5903
- resolve({
5904
- status: 408
5905
- });
5906
- }, _this5._timeout);
5907
- })]).finally(function () {
5908
- if (timeout) {
5909
- _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(timeout);
5910
- }
5911
- });
5912
- case 2:
5853
+ };
5854
+ _context5.n = 1;
5855
+ return this.executeFetchRequest(url, fetchRequestOptions, 'set limit bitrate');
5856
+ case 1:
5913
5857
  httpResponse = _context5.v;
5914
- _context5.n = 4;
5915
- break;
5916
- case 3:
5917
- _context5.p = 3;
5918
- _t4 = _context5.v;
5919
- this._logger.error('Failed to set limit bitrate timed', _t4);
5920
- return _context5.a(2, {
5921
- status: 'failed'
5922
- });
5923
- case 4:
5924
5858
  status = this.mapHttpStatusToSetTemporaryMaximalBitrateStatus(httpResponse);
5925
5859
  finished = Date.now();
5926
5860
  this._logger.info('Got set limit bitrate response [%s] in [%s] ms', status, finished - start);
@@ -5928,7 +5862,7 @@ var EndPoint = /*#__PURE__*/function () {
5928
5862
  status: status
5929
5863
  });
5930
5864
  }
5931
- }, _callee5, this, [[1, 3]]);
5865
+ }, _callee5, this);
5932
5866
  }));
5933
5867
  function limitBitrate(_x0, _x1, _x10, _x11, _x12) {
5934
5868
  return _limitBitrate.apply(this, arguments);
@@ -5938,26 +5872,24 @@ var EndPoint = /*#__PURE__*/function () {
5938
5872
  }, {
5939
5873
  key: "addIceCandidates",
5940
5874
  value: function () {
5941
- var _addIceCandidates = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee6(stream, candidates, discoveryCompleted) {
5942
- var _this6 = this;
5875
+ var _addIceCandidates = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee6(stream, candidates, discoveryCompleted) {
5943
5876
  var options,
5944
5877
  url,
5945
5878
  formData,
5946
5879
  body,
5947
5880
  start,
5881
+ fetchRequestOptions,
5948
5882
  httpResponse,
5949
- timeout,
5950
5883
  status,
5951
5884
  finished,
5952
5885
  addIceCandidatesResponse,
5953
- _args6 = arguments,
5954
- _t5;
5886
+ _args6 = arguments;
5955
5887
  return _regenerator().w(function (_context6) {
5956
- while (1) switch (_context6.p = _context6.n) {
5888
+ while (1) switch (_context6.n) {
5957
5889
  case 0:
5958
5890
  options = _args6.length > 3 && _args6[3] !== undefined ? _args6[3] : [];
5959
5891
  url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'ice', 'candidates']).toString();
5960
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
5892
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.FormData();
5961
5893
  body = {
5962
5894
  apiVersion: apiVersion,
5963
5895
  sharedSecret: stream.sharedSecret,
@@ -5967,54 +5899,32 @@ var EndPoint = /*#__PURE__*/function () {
5967
5899
  };
5968
5900
  formData.append('jsonBody', JSON.stringify(body));
5969
5901
  start = Date.now();
5970
- _context6.p = 1;
5971
- timeout = null;
5972
- _context6.n = 2;
5973
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5902
+ fetchRequestOptions = {
5974
5903
  method: 'POST',
5975
5904
  body: formData
5976
- }), new Promise(function (resolve) {
5977
- return timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
5978
- _this6._logger.error('Failed to add ice candidates', new Error("Add ice candidates timed out [".concat(url, "]")));
5979
- resolve({
5980
- status: 408
5981
- });
5982
- }, _this6._timeout);
5983
- })]).finally(function () {
5984
- if (timeout) {
5985
- _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(timeout);
5986
- }
5987
- });
5988
- case 2:
5905
+ };
5906
+ _context6.n = 1;
5907
+ return this.executeFetchRequest(url, fetchRequestOptions, 'add ice candidates');
5908
+ case 1:
5989
5909
  httpResponse = _context6.v;
5990
- _context6.n = 4;
5991
- break;
5992
- case 3:
5993
- _context6.p = 3;
5994
- _t5 = _context6.v;
5995
- this._logger.error('Failed to add ice candidates', _t5);
5996
- return _context6.a(2, {
5997
- status: 'failed'
5998
- });
5999
- case 4:
6000
5910
  status = this.mapHttpStatusToAddIceCandidatesStatus(httpResponse);
6001
5911
  if (!(status !== 'ok')) {
6002
- _context6.n = 5;
5912
+ _context6.n = 2;
6003
5913
  break;
6004
5914
  }
6005
5915
  return _context6.a(2, {
6006
5916
  status: status
6007
5917
  });
6008
- case 5:
5918
+ case 2:
6009
5919
  finished = Date.now();
6010
- _context6.n = 6;
5920
+ _context6.n = 3;
6011
5921
  return this.convertHttpResponseToAddIceCandidates(httpResponse);
6012
- case 6:
5922
+ case 3:
6013
5923
  addIceCandidatesResponse = _context6.v;
6014
5924
  this._logger.info('Got add ICE candidates response [%j] in [%s] ms', addIceCandidatesResponse, finished - start);
6015
5925
  return _context6.a(2, addIceCandidatesResponse);
6016
5926
  }
6017
- }, _callee6, this, [[1, 3]]);
5927
+ }, _callee6, this);
6018
5928
  }));
6019
5929
  function addIceCandidates(_x13, _x14, _x15) {
6020
5930
  return _addIceCandidates.apply(this, arguments);
@@ -6024,71 +5934,48 @@ var EndPoint = /*#__PURE__*/function () {
6024
5934
  }, {
6025
5935
  key: "destroyStream",
6026
5936
  value: function () {
6027
- var _destroyStream = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee7(stream, reason) {
6028
- var _this7 = this;
6029
- var url, formData, body, start, httpResponse, timeout, status, finished, destroyStreamResponse, _t6;
5937
+ var _destroyStream = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee7(stream, reason) {
5938
+ var url, formData, body, fetchRequestOptions, start, httpResponse, status, finished, destroyStreamResponse;
6030
5939
  return _regenerator().w(function (_context7) {
6031
- while (1) switch (_context7.p = _context7.n) {
5940
+ while (1) switch (_context7.n) {
6032
5941
  case 0:
6033
5942
  url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'destroy']).toString();
6034
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
5943
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.FormData();
6035
5944
  body = {
6036
5945
  apiVersion: apiVersion,
6037
5946
  sharedSecret: stream.sharedSecret,
6038
5947
  reason: reason,
6039
5948
  options: []
6040
5949
  };
6041
- formData.append('jsonBody', JSON.stringify(body));
6042
- start = Date.now();
6043
- _context7.p = 1;
6044
- timeout = null;
6045
- _context7.n = 2;
6046
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5950
+ fetchRequestOptions = {
6047
5951
  method: 'POST',
6048
5952
  body: formData,
6049
5953
  cache: 'no-cache'
6050
- }), new Promise(function (resolve) {
6051
- return timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
6052
- _this7._logger.error('Failed to subscribe', new Error("Delete stream timed out [".concat(url, "]")));
6053
- resolve({
6054
- status: 408
6055
- });
6056
- }, _this7._timeout);
6057
- })]).finally(function () {
6058
- if (timeout) {
6059
- _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(timeout);
6060
- }
6061
- });
6062
- case 2:
5954
+ };
5955
+ formData.append('jsonBody', JSON.stringify(body));
5956
+ start = Date.now();
5957
+ _context7.n = 1;
5958
+ return this.executeFetchRequest(url, fetchRequestOptions, 'destroy stream');
5959
+ case 1:
6063
5960
  httpResponse = _context7.v;
6064
- _context7.n = 4;
6065
- break;
6066
- case 3:
6067
- _context7.p = 3;
6068
- _t6 = _context7.v;
6069
- this._logger.error('Failed to delete stream', _t6);
6070
- return _context7.a(2, {
6071
- status: 'failed'
6072
- });
6073
- case 4:
6074
5961
  status = this.mapHttpStatusToSetDestroyStreamStatus(httpResponse);
6075
5962
  if (!(status !== 'ok')) {
6076
- _context7.n = 5;
5963
+ _context7.n = 2;
6077
5964
  break;
6078
5965
  }
6079
5966
  return _context7.a(2, {
6080
5967
  status: status
6081
5968
  });
6082
- case 5:
5969
+ case 2:
6083
5970
  finished = Date.now();
6084
- _context7.n = 6;
5971
+ _context7.n = 3;
6085
5972
  return this.convertHttpResponseToDestroyStream(httpResponse);
6086
- case 6:
5973
+ case 3:
6087
5974
  destroyStreamResponse = _context7.v;
6088
5975
  this._logger.info('Got destroy stream response [%j] in [%s] ms', destroyStreamResponse, finished - start);
6089
5976
  return _context7.a(2, destroyStreamResponse);
6090
5977
  }
6091
- }, _callee7, this, [[1, 3]]);
5978
+ }, _callee7, this);
6092
5979
  }));
6093
5980
  function destroyStream(_x16, _x17) {
6094
5981
  return _destroyStream.apply(this, arguments);
@@ -6098,24 +5985,24 @@ var EndPoint = /*#__PURE__*/function () {
6098
5985
  }, {
6099
5986
  key: "destroyStreamOnUnmount",
6100
5987
  value: function () {
6101
- var _destroyStreamOnUnmount = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee8(stream, reason) {
6102
- var _this8 = this;
5988
+ var _destroyStreamOnUnmount = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee8(stream, reason) {
5989
+ var _this = this;
6103
5990
  var sendBeacon, url, formData, body;
6104
5991
  return _regenerator().w(function (_context8) {
6105
5992
  while (1) switch (_context8.n) {
6106
5993
  case 0:
6107
- sendBeacon = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.sendBeacon;
5994
+ sendBeacon = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.sendBeacon;
6108
5995
  if (sendBeacon) {
6109
5996
  _context8.n = 1;
6110
5997
  break;
6111
5998
  }
6112
5999
  this.destroyStream(stream, reason).catch(function (err) {
6113
- _this8._logger.error('Failed to destroy stream on unmount', err);
6000
+ _this._logger.error('Failed to destroy stream on unmount', err);
6114
6001
  });
6115
6002
  return _context8.a(2);
6116
6003
  case 1:
6117
6004
  url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'destroy']).toString();
6118
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
6005
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.FormData();
6119
6006
  body = {
6120
6007
  apiVersion: apiVersion,
6121
6008
  sharedSecret: stream.sharedSecret,
@@ -6134,21 +6021,87 @@ var EndPoint = /*#__PURE__*/function () {
6134
6021
  }
6135
6022
  return destroyStreamOnUnmount;
6136
6023
  }()
6024
+ }, {
6025
+ key: "fetchWithTimeout",
6026
+ value: function () {
6027
+ var _fetchWithTimeout = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee9(url, requestOptions, timeoutDuration) {
6028
+ var controller, timeout;
6029
+ return _regenerator().w(function (_context9) {
6030
+ while (1) switch (_context9.p = _context9.n) {
6031
+ case 0:
6032
+ controller = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.AbortController();
6033
+ timeout = null;
6034
+ _context9.p = 1;
6035
+ _context9.n = 2;
6036
+ return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.fetch(url, _objectSpread(_objectSpread({}, requestOptions), {}, {
6037
+ signal: controller.signal
6038
+ })), new Promise(function (_, reject) {
6039
+ timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.setTimeout(function () {
6040
+ controller.abort();
6041
+ reject(new FetchTimeoutError("Timed out [".concat(url, "]")));
6042
+ }, timeoutDuration);
6043
+ })]);
6044
+ case 2:
6045
+ return _context9.a(2, _context9.v);
6046
+ case 3:
6047
+ _context9.p = 3;
6048
+ if (timeout) {
6049
+ _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.clearTimeout(timeout);
6050
+ }
6051
+ return _context9.f(3);
6052
+ case 4:
6053
+ return _context9.a(2);
6054
+ }
6055
+ }, _callee9, null, [[1,, 3, 4]]);
6056
+ }));
6057
+ function fetchWithTimeout(_x20, _x21, _x22) {
6058
+ return _fetchWithTimeout.apply(this, arguments);
6059
+ }
6060
+ return fetchWithTimeout;
6061
+ }()
6062
+ }, {
6063
+ key: "executeFetchRequest",
6064
+ value: function () {
6065
+ var _executeFetchRequest = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee0(url, requestOptions, operation) {
6066
+ var _t;
6067
+ return _regenerator().w(function (_context0) {
6068
+ while (1) switch (_context0.p = _context0.n) {
6069
+ case 0:
6070
+ _context0.p = 0;
6071
+ _context0.n = 1;
6072
+ return this.fetchWithTimeout(url, requestOptions, this._timeoutDuration);
6073
+ case 1:
6074
+ return _context0.a(2, _context0.v);
6075
+ case 2:
6076
+ _context0.p = 2;
6077
+ _t = _context0.v;
6078
+ this._logger.error("Failed to ".concat(operation, " [").concat(requestOptions.method || 'GET', "] [").concat(url, "]"), _t);
6079
+ return _context0.a(2, {
6080
+ status: _t instanceof FetchTimeoutError ? 408 : 500
6081
+ });
6082
+ }
6083
+ }, _callee0, this, [[0, 2]]);
6084
+ }));
6085
+ function executeFetchRequest(_x23, _x24, _x25) {
6086
+ return _executeFetchRequest.apply(this, arguments);
6087
+ }
6088
+ return executeFetchRequest;
6089
+ }()
6137
6090
  }, {
6138
6091
  key: "buildUrl",
6139
6092
  value: function buildUrl(path) {
6140
- var uri = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.URL(this._uri);
6093
+ var uri = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.URL(this._uri);
6141
6094
  var pathAsArray = uri.pathname.split('/');
6142
6095
  pathAsArray.length = pathAsArray.length - 1;
6143
- uri.pathname = pathAsArray.concat.apply(pathAsArray, _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_0___default()(path)).join('/');
6096
+ uri.pathname = pathAsArray.concat.apply(pathAsArray, _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1___default()(path)).join('/');
6144
6097
  return uri;
6145
6098
  }
6146
6099
  }, {
6147
6100
  key: "buildPingUrl",
6148
6101
  value: function buildPingUrl() {
6149
- var uri = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.URL(this._uri);
6150
- var sdkVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_8__["default"].sdkVersion;
6151
- var intentions = _environment_Parameters__WEBPACK_IMPORTED_MODULE_9__["default"].discoveryParameters.intentions;
6102
+ var uri = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_10__["default"].value.URL(this._uri);
6103
+ var sdkVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_13__["default"].sdkVersion;
6104
+ var intentions = _environment_Parameters__WEBPACK_IMPORTED_MODULE_14__["default"].discoveryParameters.intentions;
6152
6105
  uri.searchParams.set('type', 'http');
6153
6106
  uri.searchParams.set('version', sdkVersion);
6154
6107
  uri.searchParams.set('intentions', intentions);
@@ -6158,24 +6111,24 @@ var EndPoint = /*#__PURE__*/function () {
6158
6111
  }, {
6159
6112
  key: "parseJsonBody",
6160
6113
  value: function () {
6161
- var _parseJsonBody = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee9(response) {
6162
- var _t7;
6163
- return _regenerator().w(function (_context9) {
6164
- while (1) switch (_context9.p = _context9.n) {
6114
+ var _parseJsonBody = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee1(response) {
6115
+ var _t2;
6116
+ return _regenerator().w(function (_context1) {
6117
+ while (1) switch (_context1.p = _context1.n) {
6165
6118
  case 0:
6166
- _context9.p = 0;
6167
- _context9.n = 1;
6119
+ _context1.p = 0;
6120
+ _context1.n = 1;
6168
6121
  return response.json();
6169
6122
  case 1:
6170
- return _context9.a(2, _context9.v);
6123
+ return _context1.a(2, _context1.v);
6171
6124
  case 2:
6172
- _context9.p = 2;
6173
- _t7 = _context9.v;
6174
- return _context9.a(2, undefined);
6125
+ _context1.p = 2;
6126
+ _t2 = _context1.v;
6127
+ return _context1.a(2, undefined);
6175
6128
  }
6176
- }, _callee9, null, [[0, 2]]);
6129
+ }, _callee1, null, [[0, 2]]);
6177
6130
  }));
6178
- function parseJsonBody(_x20) {
6131
+ function parseJsonBody(_x26) {
6179
6132
  return _parseJsonBody.apply(this, arguments);
6180
6133
  }
6181
6134
  return parseJsonBody;
@@ -6191,9 +6144,6 @@ var EndPoint = /*#__PURE__*/function () {
6191
6144
  }, {
6192
6145
  key: "mapHttpStatusToPublishStatus",
6193
6146
  value: function mapHttpStatusToPublishStatus(response) {
6194
- if (!response) {
6195
- return 'failed';
6196
- }
6197
6147
  switch (response.status) {
6198
6148
  case 200:
6199
6149
  return 'ok';
@@ -6222,9 +6172,6 @@ var EndPoint = /*#__PURE__*/function () {
6222
6172
  }, {
6223
6173
  key: "mapHttpStatusToSubscribeStatus",
6224
6174
  value: function mapHttpStatusToSubscribeStatus(response) {
6225
- if (!response) {
6226
- return 'failed';
6227
- }
6228
6175
  switch (response.status) {
6229
6176
  case 200:
6230
6177
  return 'ok';
@@ -6251,9 +6198,6 @@ var EndPoint = /*#__PURE__*/function () {
6251
6198
  }, {
6252
6199
  key: "mapHttpStatusToSetRemoteDescriptionStatus",
6253
6200
  value: function mapHttpStatusToSetRemoteDescriptionStatus(response) {
6254
- if (!response) {
6255
- return 'failed';
6256
- }
6257
6201
  switch (response.status) {
6258
6202
  case 200:
6259
6203
  return 'ok';
@@ -6272,9 +6216,6 @@ var EndPoint = /*#__PURE__*/function () {
6272
6216
  }, {
6273
6217
  key: "mapHttpStatusToSetTemporaryMaximalBitrateStatus",
6274
6218
  value: function mapHttpStatusToSetTemporaryMaximalBitrateStatus(response) {
6275
- if (!response) {
6276
- return 'failed';
6277
- }
6278
6219
  switch (response.status) {
6279
6220
  case 200:
6280
6221
  return 'ok';
@@ -6293,9 +6234,6 @@ var EndPoint = /*#__PURE__*/function () {
6293
6234
  }, {
6294
6235
  key: "mapHttpStatusToAddIceCandidatesStatus",
6295
6236
  value: function mapHttpStatusToAddIceCandidatesStatus(response) {
6296
- if (!response) {
6297
- return 'failed';
6298
- }
6299
6237
  switch (response.status) {
6300
6238
  case 200:
6301
6239
  return 'ok';
@@ -6314,9 +6252,6 @@ var EndPoint = /*#__PURE__*/function () {
6314
6252
  }, {
6315
6253
  key: "mapHttpStatusToSetDestroyStreamStatus",
6316
6254
  value: function mapHttpStatusToSetDestroyStreamStatus(response) {
6317
- if (!response) {
6318
- return 'failed';
6319
- }
6320
6255
  switch (response.status) {
6321
6256
  case 200:
6322
6257
  return 'ok';
@@ -6342,8 +6277,11 @@ var EndPoint = /*#__PURE__*/function () {
6342
6277
  rtcConfiguration = data.rtcConfiguration,
6343
6278
  setRemoteDescriptionResponse = data.setRemoteDescriptionResponse,
6344
6279
  createAnswerDescriptionResponse = data.createAnswerDescriptionResponse,
6345
- createOfferDescriptionResponse = data.createOfferDescriptionResponse;
6346
- var subscribeResponse = {
6280
+ createOfferDescriptionResponse = data.createOfferDescriptionResponse,
6281
+ ignoredStreamResponseContext = data.streamResponseContext,
6282
+ otherProperties = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_0___default()(data, _excluded);
6283
+ var subscribeResponse = _objectSpread(_objectSpread({}, otherProperties), {}, {
6284
+ // Spread first so that it cannot overwrite the properties normalized below.
6347
6285
  status: status,
6348
6286
  stream: {
6349
6287
  tenancy: tenancy,
@@ -6351,7 +6289,7 @@ var EndPoint = /*#__PURE__*/function () {
6351
6289
  sharedSecret: sharedSecret
6352
6290
  },
6353
6291
  lag: lag
6354
- };
6292
+ });
6355
6293
  if (rtcConfiguration) {
6356
6294
  subscribeResponse.rtcConfiguration = this.convertIRtcConfigurationToRTCConfiguration(rtcConfiguration);
6357
6295
  }
@@ -6437,26 +6375,27 @@ var EndPoint = /*#__PURE__*/function () {
6437
6375
  }, {
6438
6376
  key: "convertHttpResponseToSetRemoteDescription",
6439
6377
  value: function () {
6440
- var _convertHttpResponseToSetRemoteDescription = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee0(response) {
6441
- var data, setRemoteDescriptionResponse;
6442
- return _regenerator().w(function (_context0) {
6443
- while (1) switch (_context0.n) {
6378
+ var _convertHttpResponseToSetRemoteDescription = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee10(response) {
6379
+ var data, status, setRemoteDescriptionResponse;
6380
+ return _regenerator().w(function (_context10) {
6381
+ while (1) switch (_context10.n) {
6444
6382
  case 0:
6445
- _context0.n = 1;
6446
- return response.json();
6383
+ _context10.n = 1;
6384
+ return this.parseJsonBody(response);
6447
6385
  case 1:
6448
- data = _context0.v;
6386
+ data = _context10.v;
6387
+ status = data ? data.status : this.mapHttpStatusToSetRemoteDescriptionStatus(response);
6449
6388
  setRemoteDescriptionResponse = {
6450
- status: data.status
6389
+ status: status
6451
6390
  };
6452
6391
  if (data && data.sessionDescription) {
6453
6392
  setRemoteDescriptionResponse.sessionDescription = data.sessionDescription;
6454
6393
  }
6455
- return _context0.a(2, setRemoteDescriptionResponse);
6394
+ return _context10.a(2, setRemoteDescriptionResponse);
6456
6395
  }
6457
- }, _callee0);
6396
+ }, _callee10, this);
6458
6397
  }));
6459
- function convertHttpResponseToSetRemoteDescription(_x21) {
6398
+ function convertHttpResponseToSetRemoteDescription(_x27) {
6460
6399
  return _convertHttpResponseToSetRemoteDescription.apply(this, arguments);
6461
6400
  }
6462
6401
  return convertHttpResponseToSetRemoteDescription;
@@ -6464,17 +6403,18 @@ var EndPoint = /*#__PURE__*/function () {
6464
6403
  }, {
6465
6404
  key: "convertHttpResponseToAddIceCandidates",
6466
6405
  value: function () {
6467
- var _convertHttpResponseToAddIceCandidates = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee1(response) {
6468
- var data, addIceCandidatesResponse;
6469
- return _regenerator().w(function (_context1) {
6470
- while (1) switch (_context1.n) {
6406
+ var _convertHttpResponseToAddIceCandidates = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee11(response) {
6407
+ var data, status, addIceCandidatesResponse;
6408
+ return _regenerator().w(function (_context11) {
6409
+ while (1) switch (_context11.n) {
6471
6410
  case 0:
6472
- _context1.n = 1;
6473
- return response.json();
6411
+ _context11.n = 1;
6412
+ return this.parseJsonBody(response);
6474
6413
  case 1:
6475
- data = _context1.v;
6414
+ data = _context11.v;
6415
+ status = data ? data.status : this.mapHttpStatusToAddIceCandidatesStatus(response);
6476
6416
  addIceCandidatesResponse = {
6477
- status: data.status,
6417
+ status: status,
6478
6418
  options: []
6479
6419
  };
6480
6420
  if (data) {
@@ -6482,11 +6422,11 @@ var EndPoint = /*#__PURE__*/function () {
6482
6422
  addIceCandidatesResponse.options = data.options;
6483
6423
  }
6484
6424
  }
6485
- return _context1.a(2, addIceCandidatesResponse);
6425
+ return _context11.a(2, addIceCandidatesResponse);
6486
6426
  }
6487
- }, _callee1);
6427
+ }, _callee11, this);
6488
6428
  }));
6489
- function convertHttpResponseToAddIceCandidates(_x22) {
6429
+ function convertHttpResponseToAddIceCandidates(_x28) {
6490
6430
  return _convertHttpResponseToAddIceCandidates.apply(this, arguments);
6491
6431
  }
6492
6432
  return convertHttpResponseToAddIceCandidates;
@@ -6494,23 +6434,24 @@ var EndPoint = /*#__PURE__*/function () {
6494
6434
  }, {
6495
6435
  key: "convertHttpResponseToDestroyStream",
6496
6436
  value: function () {
6497
- var _convertHttpResponseToDestroyStream = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee10(response) {
6498
- var data, destroyStream;
6499
- return _regenerator().w(function (_context10) {
6500
- while (1) switch (_context10.n) {
6437
+ var _convertHttpResponseToDestroyStream = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_regenerator().m(function _callee12(response) {
6438
+ var data, status, destroyStream;
6439
+ return _regenerator().w(function (_context12) {
6440
+ while (1) switch (_context12.n) {
6501
6441
  case 0:
6502
- _context10.n = 1;
6503
- return response.json();
6442
+ _context12.n = 1;
6443
+ return this.parseJsonBody(response);
6504
6444
  case 1:
6505
- data = _context10.v;
6445
+ data = _context12.v;
6446
+ status = data ? data.status : this.mapHttpStatusToSetDestroyStreamStatus(response);
6506
6447
  destroyStream = {
6507
- status: data.status
6448
+ status: status
6508
6449
  };
6509
- return _context10.a(2, destroyStream);
6450
+ return _context12.a(2, destroyStream);
6510
6451
  }
6511
- }, _callee10);
6452
+ }, _callee12, this);
6512
6453
  }));
6513
- function convertHttpResponseToDestroyStream(_x23) {
6454
+ function convertHttpResponseToDestroyStream(_x29) {
6514
6455
  return _convertHttpResponseToDestroyStream.apply(this, arguments);
6515
6456
  }
6516
6457
  return convertHttpResponseToDestroyStream;
@@ -7827,7 +7768,7 @@ var VersionManager = /*#__PURE__*/function () {
7827
7768
  key: "sdkVersion",
7828
7769
  get: function get() {
7829
7770
  try {
7830
- return "2026-07-08T19:42:41.636Z (2025.2.4-beta.619)";
7771
+ return "2026-07-14T17:28:59.842Z (2025.2.4-beta.621)";
7831
7772
  } catch (e) {
7832
7773
  return this._defaultVersion;
7833
7774
  }
@@ -8569,6 +8510,25 @@ module.exports = _classCallCheck, module.exports.__esModule = true, module.expor
8569
8510
 
8570
8511
  /***/ }),
8571
8512
 
8513
+ /***/ "./node_modules/@babel/runtime/helpers/construct.js":
8514
+ /*!**********************************************************!*\
8515
+ !*** ./node_modules/@babel/runtime/helpers/construct.js ***!
8516
+ \**********************************************************/
8517
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
8518
+
8519
+ var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ "./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js");
8520
+ var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js");
8521
+ function _construct(t, e, r) {
8522
+ if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
8523
+ var o = [null];
8524
+ o.push.apply(o, e);
8525
+ var p = new (t.bind.apply(t, o))();
8526
+ return r && setPrototypeOf(p, r.prototype), p;
8527
+ }
8528
+ module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports;
8529
+
8530
+ /***/ }),
8531
+
8572
8532
  /***/ "./node_modules/@babel/runtime/helpers/createClass.js":
8573
8533
  /*!************************************************************!*\
8574
8534
  !*** ./node_modules/@babel/runtime/helpers/createClass.js ***!
@@ -8648,6 +8608,41 @@ module.exports = _inherits, module.exports.__esModule = true, module.exports["de
8648
8608
 
8649
8609
  /***/ }),
8650
8610
 
8611
+ /***/ "./node_modules/@babel/runtime/helpers/isNativeFunction.js":
8612
+ /*!*****************************************************************!*\
8613
+ !*** ./node_modules/@babel/runtime/helpers/isNativeFunction.js ***!
8614
+ \*****************************************************************/
8615
+ /***/ ((module) => {
8616
+
8617
+ function _isNativeFunction(t) {
8618
+ try {
8619
+ return -1 !== Function.toString.call(t).indexOf("[native code]");
8620
+ } catch (n) {
8621
+ return "function" == typeof t;
8622
+ }
8623
+ }
8624
+ module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports;
8625
+
8626
+ /***/ }),
8627
+
8628
+ /***/ "./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js":
8629
+ /*!*************************************************************************!*\
8630
+ !*** ./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***!
8631
+ \*************************************************************************/
8632
+ /***/ ((module) => {
8633
+
8634
+ function _isNativeReflectConstruct() {
8635
+ try {
8636
+ var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
8637
+ } catch (t) {}
8638
+ return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {
8639
+ return !!t;
8640
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports)();
8641
+ }
8642
+ module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports;
8643
+
8644
+ /***/ }),
8645
+
8651
8646
  /***/ "./node_modules/@babel/runtime/helpers/iterableToArray.js":
8652
8647
  /*!****************************************************************!*\
8653
8648
  !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***!
@@ -8724,6 +8719,47 @@ module.exports = _nonIterableSpread, module.exports.__esModule = true, module.ex
8724
8719
 
8725
8720
  /***/ }),
8726
8721
 
8722
+ /***/ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js":
8723
+ /*!************************************************************************!*\
8724
+ !*** ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***!
8725
+ \************************************************************************/
8726
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
8727
+
8728
+ var objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose.js */ "./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js");
8729
+ function _objectWithoutProperties(e, t) {
8730
+ if (null == e) return {};
8731
+ var o,
8732
+ r,
8733
+ i = objectWithoutPropertiesLoose(e, t);
8734
+ if (Object.getOwnPropertySymbols) {
8735
+ var n = Object.getOwnPropertySymbols(e);
8736
+ for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
8737
+ }
8738
+ return i;
8739
+ }
8740
+ module.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports["default"] = module.exports;
8741
+
8742
+ /***/ }),
8743
+
8744
+ /***/ "./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js":
8745
+ /*!*****************************************************************************!*\
8746
+ !*** ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***!
8747
+ \*****************************************************************************/
8748
+ /***/ ((module) => {
8749
+
8750
+ function _objectWithoutPropertiesLoose(r, e) {
8751
+ if (null == r) return {};
8752
+ var t = {};
8753
+ for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
8754
+ if (e.indexOf(n) >= 0) continue;
8755
+ t[n] = r[n];
8756
+ }
8757
+ return t;
8758
+ }
8759
+ module.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
8760
+
8761
+ /***/ }),
8762
+
8727
8763
  /***/ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js":
8728
8764
  /*!**************************************************************************!*\
8729
8765
  !*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***!
@@ -8862,6 +8898,42 @@ function _unsupportedIterableToArray(r, a) {
8862
8898
  }
8863
8899
  module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
8864
8900
 
8901
+ /***/ }),
8902
+
8903
+ /***/ "./node_modules/@babel/runtime/helpers/wrapNativeSuper.js":
8904
+ /*!****************************************************************!*\
8905
+ !*** ./node_modules/@babel/runtime/helpers/wrapNativeSuper.js ***!
8906
+ \****************************************************************/
8907
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
8908
+
8909
+ var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js");
8910
+ var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js");
8911
+ var isNativeFunction = __webpack_require__(/*! ./isNativeFunction.js */ "./node_modules/@babel/runtime/helpers/isNativeFunction.js");
8912
+ var construct = __webpack_require__(/*! ./construct.js */ "./node_modules/@babel/runtime/helpers/construct.js");
8913
+ function _wrapNativeSuper(t) {
8914
+ var r = "function" == typeof Map ? new Map() : void 0;
8915
+ return (module.exports = _wrapNativeSuper = function _wrapNativeSuper(t) {
8916
+ if (null === t || !isNativeFunction(t)) return t;
8917
+ if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function");
8918
+ if (void 0 !== r) {
8919
+ if (r.has(t)) return r.get(t);
8920
+ r.set(t, Wrapper);
8921
+ }
8922
+ function Wrapper() {
8923
+ return construct(t, arguments, getPrototypeOf(this).constructor);
8924
+ }
8925
+ return Wrapper.prototype = Object.create(t.prototype, {
8926
+ constructor: {
8927
+ value: Wrapper,
8928
+ enumerable: !1,
8929
+ writable: !0,
8930
+ configurable: !0
8931
+ }
8932
+ }), setPrototypeOf(Wrapper, t);
8933
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports), _wrapNativeSuper(t);
8934
+ }
8935
+ module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
8936
+
8865
8937
  /***/ })
8866
8938
 
8867
8939
  /******/ });
@@ -8967,4 +9039,4 @@ __webpack_require__.r(__webpack_exports__);
8967
9039
  /******/ })()
8968
9040
  ;
8969
9041
  });
8970
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QSxJQUFJO0FBQ0o7QUFDQSxHQUFHLEVBQUUseUJBQXlCLFNBQVMseUJBQXlCO0FBQ2hFO0FBQ0EsMEJBQTBCLHlCQUF5QixTQUFTLHlCQUF5QixrQjs7Ozs7Ozs7OztBQ1RyRix1QkFBdUIsbUJBQU8sQ0FBQyx3RkFBdUI7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLDhDQUE4Qyx5QkFBeUIsU0FBUyx5QkFBeUIsa0I7Ozs7OztVQ1J6RztVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3RCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQSxFOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0EsRTs7Ozs7V0NQQSx3Rjs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0QsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7O0FBRXlCO0FBQ2E7QUFDUTtBQUs5QjtBQUdoQiwrREFBZTtFQUNidm1DLEdBQUcsRUFBSEEsNENBQUc7RUFDSHkvQixVQUFVLEVBQVZBLG1EQUFVO0VBQ1Y1RixjQUFjLEVBQWRBLHVEQUFjQTtBQUNoQixDQUFDLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9Ccm93c2VyRGV0ZWN0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9OZXR3b3JrTW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1N0cmVhbVNldHVwTGlzdGVuZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlVG9rZW4udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9nbG9iYWxTY29wZS9HbG9iYWxTY29wZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL0Rpc3Bvc2FibGVMaXN0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL051bWJlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvU3RyaW5ncy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0FwcGVuZGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0NvbnNvbGVBcHBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckRlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nVGhyZXNob2xkLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0ZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1NlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9wcm9taXNlL1Byb21pc2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Byb21pc2UvUHJvbWlzZUhhbmRsZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9SdGNDb25maWd1cmF0aW9uTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y1B1Ymxpc2hNb25pdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvU2RwUGFyc2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvVmFuaWxsYVBlZXJDb25uZWN0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcngvUmVhZE9ubHlTdWJqZWN0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9TdWJqZWN0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvRW52aXJvbm1lbnQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9TREsudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9UZWxlbWV0cnlVcmwudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RhdGVDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9Ub2tlbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlTW9kZU1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvQml0cmF0ZVN0YXRlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5U2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRW5kUG9pbnQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVyQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVyU3RhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1JlYWxUaW1lUHVibGlzaGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5U2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGltZS9EdXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGltZS9FeHBvbmVudGlhbEJhY2tvZmYudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlMaWtlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhvdXRIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVSZXN0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1ByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCAoKSA9PiB7XG5yZXR1cm4gIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge01pbGxpc2Vjb25kfSBmcm9tICcuLi91bml0cy9Vbml0cyc7XG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG5jb25zdCB2aXNpYmlsaXR5Q2hhbmdlRXZlbnQgPSAndmlzaWJpbGl0eWNoYW5nZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5SXNGb3JlZ3JvdW5kOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRm9yZWdyb3VuZDogU3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlOiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBwcml2YXRlIF9sYXN0QmFja2dyb3VuZER1cmF0aW9uOiBNaWxsaXNlY29uZCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2lzRm9yZWdyb3VuZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kID0gbmV3IFJlYWRPbmx5U3ViamVjdCh0aGlzLl9pc0ZvcmVncm91bmQpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IGlzRm9yZWdyb3VuZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUaW1lU2luY2VMYXN0Q2hhbmdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIERhdGUubm93KCkgLSB0aGlzLl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbigpOiBNaWxsaXNlY29uZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGxldCBiYWNrZ3JvdW5kRW50cnlUaW1lOiBNaWxsaXNlY29uZCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpc05vd0ZvcmVncm91bmQgPSAhR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRJc0hpZGRlbjtcblxuICAgICAgaWYgKCFpc05vd0ZvcmVncm91bmQpIHtcbiAgICAgICAgYmFja2dyb3VuZEVudHJ5VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChiYWNrZ3JvdW5kRW50cnlUaW1lKSB7XG4gICAgICAgIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPSBEYXRlLm5vdygpIC0gYmFja2dyb3VuZEVudHJ5VGltZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNGb3JlZ3JvdW5kLnZhbHVlID0gaXNOb3dGb3JlZ3JvdW5kO1xuICAgIH07XG5cbiAgICBjb25zdCB1c2VFdmVudENhcHR1cmVQaGFzZSA9IGZhbHNlO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUuYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKSkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyRGV0ZWN0b3Ige1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXggPSAvKE1TSUV8KD8hR2Vja28uKylGaXJlZm94fCg/IUFwcGxlV2ViS2l0LitDaHJvbWUuKylTYWZhcml8KD8hQXBwbGVXZWJLaXQuKylDaHJvbWV8QXBwbGVXZWJLaXQoPyEuK0Nocm9tZXwuK1NhZmFyaSl8R2Vja28oPyEuK0ZpcmVmb3gpKSg/OiB8XFwvKShbXFxkLmFwcmVdKykvZztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWUgPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck1ham9yVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNNb2JpbGUgPSAoL0FuZHJvaWR8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fE9wZXJhIE1pbmkvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0FuZHJvaWQgPSAoL0FuZHJvaWQvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNjkgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzY5LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzAuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcxID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzIgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcyLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzQuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc1ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzYgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc2LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NyA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzcuJyk7XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJOYW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJNYWpvclZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQW5kcm9pZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0FuZHJvaWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNjkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU2OTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcwO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcxKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzE7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc0O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc1KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzYoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzTW9iaWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCk7XG5cbiAgICBpZiAoYnJvd3Nlck5hbWVBbmRWZXJzaW9uICYmIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXSkge1xuICAgICAgcmV0dXJuIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVMaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3Nlck5hbWVMaXN0IHx8ICFicm93c2VyTmFtZUxpc3RbMF0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYnJvd3Nlck5hbWVMaXN0WzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3NlclZlcnNpb25MaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3NlclZlcnNpb25MaXN0IHx8ICFicm93c2VyVmVyc2lvbkxpc3RbMV0pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxWZXJzaW9uID0gYnJvd3NlclZlcnNpb25MaXN0WzFdO1xuXG4gICAgaWYgKCFmdWxsVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcihmdWxsVmVyc2lvbi5zcGxpdCgnLicpWzBdKSB8fCAwO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBjb25zdCBtc2llID0gdXNlckFnZW50LmluZGV4T2YoJ01TSUUgJyk7XG5cbiAgICBpZiAobXNpZSA+IDApIHtcbiAgICAgIC8vIElFIDEwIG9yIG9sZGVyID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcobXNpZSArIDUsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgbXNpZSkpLCAxMCl9YDtcbiAgICB9XG5cbiAgICBjb25zdCB0cmlkZW50ID0gdXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQvJyk7XG5cbiAgICBpZiAodHJpZGVudCA+IDApIHtcbiAgICAgIC8vIElFIDExID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgY29uc3QgdmVyc2lvbiA9IHVzZXJBZ2VudC5pbmRleE9mKCdydjonKTtcblxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcodmVyc2lvbiArIDMsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgdmVyc2lvbikpLCAxMCl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckRlZmF1bHRzJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIge1xuICBwdWJsaWMgc3RhdGljIGdldFN0cmluZ1ZhbHVlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIucmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJWYWx1ZShuYW1lKSB8fFxuICAgICAgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5yZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclVSSVZhbHVlKGAke25hbWV9LXVyaS1wYXJhbWV0ZXItbmFtZWApIHx8XG4gICAgICBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmRlZmF1bHRTdHJpbmdWYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Qm9vbGVhblZhbHVlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5yZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclZhbHVlKG5hbWUpO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJzEnIHx8IHZhbHVlID09PSAnT24nO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlRnJvbVVyaSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIucmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJVUklWYWx1ZShgJHtuYW1lfS11cmktcGFyYW1ldGVyLW5hbWVgKTtcblxuICAgIGlmICh2YWx1ZUZyb21VcmkpIHtcbiAgICAgIHJldHVybiB2YWx1ZUZyb21VcmkgPT09ICd0cnVlJyB8fCB2YWx1ZUZyb21VcmkgPT09ICcxJyB8fCB2YWx1ZUZyb21VcmkgPT09ICdPbic7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdEJvb2xlYW5WYWx1ZVtuYW1lXSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0U3RyaW5nVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtbWV0cmljcy1sZXZlbCc6IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCksXG4gICAgICAncGhlbml4LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNvbnNvbGUtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LXRlbGVtZXRyeS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jaGFubmVsLXRva2VuJzogJycsXG4gICAgICAncGhlbml4LXVyaSc6ICcnLFxuICAgICAgJ3BoZW5peC1iYXNlLXVyaSc6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0Qm9vbGVhblZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcyc6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1ldGFWYWx1ZSA9IEdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50UXVlcnlTZWxlY3RvcihgbWV0YVtuYW1lPScke25hbWV9J11gKTtcblxuICAgIGlmICghbWV0YVZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBtZXRhVmFsdWUuZ2V0QXR0cmlidXRlKCd2YWx1ZScpO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVVJJVmFsdWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB2YWx1ZVVSSVBhcmFtZXRlck5hbWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLnJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVmFsdWUobmFtZSk7XG5cbiAgICBpZiAoIXZhbHVlVVJJUGFyYW1ldGVyTmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTFNlYXJjaFBhcmFtcyhHbG9iYWxTY29wZS52YWx1ZS5sb2NhdGlvblNlYXJjaCkuZ2V0KHZhbHVlVVJJUGFyYW1ldGVyTmFtZSkgfHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciB7XG4gIHN0YXRpYyBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5mb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucXVldWVNaWNyb3Rhc2sodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgb3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsID0gR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRDcmVhdGVFbGVtZW50PEhUTUxJbWFnZUVsZW1lbnQ+KCdpbWcnKTtcblxuICAgIGltZy5zcmMgPSBHbG9iYWxTY29wZS52YWx1ZS5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoMTBlKzcpXSkpOyAvLyAxMDBNYiBvciBsZXNzIG9yIG1vcmUgZGVwZW5kaW5nIG9uIGFzIHlvdSB3aXNoIHRvIGZvcmNlL2ludm9rZSBHQyBjeWNsZSBydW5cbiAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLnNyYyk7XG5cbiAgICAgIGltZyA9IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNTdXBwb3J0ZWQ6IGJvb2xlYW4gPSBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uICE9PSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0dDogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgfVxuXG4gIGdldCBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBnZXQgcnR0KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0dDtcbiAgfVxuXG4gIGdldCBlZmZlY3RpdmVUeXBlKCk6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVR5cGU7XG4gIH1cblxuICBnZXQgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmsgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmtNYXggPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZWZmZWN0aXZlVHlwZSA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy50eXBlID8/ICdVbmtub3duJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5ydHQgPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpOiB2b2lkID0+IHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcblxuZXhwb3J0IGNsYXNzIFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtU2V0dXBMaXN0ZW5lcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1ldHJpY3NTZXJ2aWNlID0gU0RLLm1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX21ldHJpY1N1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdWNjZXNzKHN0cmVhbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZCwgc3RyZWFtSWQpO1xuICB9XG5cbiAgZmFpbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZFN0cmVhbU1ldHJpYyhtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZSwgc3RyZWFtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWV0cmljU3VibWl0dGVkKSB7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY1N1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldHVwVGltZSA9IG5vdyAtIHRoaXMuX3N0YXJ0VGltZTtcbiAgICBjb25zdCBtZXRyaWNOYW1lID0gbmV3IE1ldHJpY1R5cGUobWV0cmljVHlwZSkuZ2V0TmFtZSgpO1xuXG4gICAgdGhpcy5tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogc2V0dXBUaW1lfSxcbiAgICAgIHN0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gU3RyZWFtIG1ldHJpYyBbJXNdIGluIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBuZXcgRHVyYXRpb25zKHNldHVwVGltZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRWRnZVRva2VuIGZyb20gJy4vRWRnZVRva2VuJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi9FbmNvZGVkRWRnZVRva2VuJztcblxuY29uc3QgZWRnZUF1dGhUb2tlblByZWZpeCA9ICdESUdFU1Q6JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZUF1dGhQYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VkZ2VBdXRoUGFyc2VyJyk7XG5cbiAgc3RhdGljIHBhcnNlVG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBFZGdlVG9rZW4ge1xuICAgIGlmICghdGhpcy5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ1Rva2VuIGlzIG5vdCB2YWxpZCBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gYXRvYih0b2tlbi5zdWJzdHIoZWRnZUF1dGhUb2tlblByZWZpeC5sZW5ndGgpKTtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEpTT04ucGFyc2UoZGVjb2RlZFRva2VuKTtcblxuICAgICAgZWRnZVRva2VuLnRva2VuID0gSlNPTi5wYXJzZShlZGdlVG9rZW4udG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihlZGdlVG9rZW4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBwYXJzZSB0b2tlbiB2YWx1ZScsIGUpO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0b2tlbiAmJiB0b2tlbi5zdGFydHNXaXRoKGVkZ2VBdXRoVG9rZW5QcmVmaXgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5pbnRlcmZhY2UgSVRva2VuIHtcbiAgdXJpOiBVUkwgfCBudWxsO1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUVkZ2VUb2tlbiB7XG4gIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgdG9rZW46IElUb2tlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZVRva2VuIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbjogSVRva2VuO1xuXG4gIGNvbnN0cnVjdG9yKGVkZ2VUb2tlbjogSUVkZ2VUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0xvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5kZWNsYXJlIGNvbnN0IF9fRkVBVFVSRVNfXzoge1xuICBzZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBzZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRGZWF0dXJlcyB7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvZ3MoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2dzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTWV0cmljcygpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWV0cmljcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nVG9Db25zb2xlKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9sb2dUb0NvbnNvbGU7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGZWF0dXJlcygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBfX0ZFQVRVUkVTX187XG5cbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSAnc2VuZExvY2FsQ2FuZGlkYXRlcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzIDogdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ3NlbmRMb2dzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2dzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdzZW5kTWV0cmljcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTWV0cmljcyA6ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ2xvZ1RvQ29uc29sZScgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5sb2dUb0NvbnNvbGUgOiAnQWxsJztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ0FsbCc7XG4gICAgfVxuICB9XG59XG5cbkJ1aWxkRmVhdHVyZXMuYXBwbHlGZWF0dXJlcygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZlYXR1cmVFbmFibGVtZW50IHtcbiAgc3RhdGljIGdldCBjbGllbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENsaWVudCBvZmZlciB3b3JrZmxvdyBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSBpbiB0aGUgZm9sbG93aW5nIGJyb3dzZXJzXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc0IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzYgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBhZGRUcmFuY2VpdmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hyb21lIDY5LCA3MCwgNzEsIDcyIGV4cG9zZXMgYGFkZFRyYW5jZWl2ZXJgIGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseVxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzAgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU2O1xuICB9XG5cbiAgc3RhdGljIGdldCBvblRyYWNrRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjMgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hvdWxkVXNlTmF0aXZlSGxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYW1zdW5nQnJvd3Nlcic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUHJlY2FjaGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0lFJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8uZG9jdW1lbnRDcmVhdGVFbGVtZW50ID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc01vYmlsZSgpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IgPT09ICd1bmRlZmluZWQnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBSZWNlaXZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFJUQ1J0cFJlY2VpdmVyLnByb3RvdHlwZS5jcmVhdGVFbmNvZGVkU3RyZWFtcyAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwU2NyaXB0VHJhbnNmb3JtICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LkhUTUxWaWRlb0VsZW1lbnQucHJvdG90eXBlLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JlcXVlc3RBbmltYXRpb25GcmFtZVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZFxuICAgICAgJiYgKEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIHx8IEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ1NhZmFyaSc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19QQVJBTUVURVJTX186IHtcbiAgZGlzY292ZXJ5OiBJRGlzY292ZXJ5UGFyYW1ldGVyO1xufTtcblxuaW50ZXJmYWNlIElEaXNjb3ZlcnlQYXJhbWV0ZXJ7XG4gIGludGVudGlvbnM6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyYW1ldGVycyB7XG4gIHByaXZhdGUgc3RhdGljIF9kaXNjb3ZlcnlQYXJhbWV0ZXJzOiBJRGlzY292ZXJ5UGFyYW1ldGVyIDtcblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVBhcmFtZXRlcnMoKTogSURpc2NvdmVyeVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnM7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlQYXJhbWV0ZXJzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gX19QQVJBTUVURVJTX187XG5cbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSAnZGlzY292ZXJ5JyBpbiBwYXJhbWV0ZXJzID8gcGFyYW1ldGVycy5kaXNjb3ZlcnkgOiB7aW50ZW50aW9uczogJyd9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSB7aW50ZW50aW9uczogJyd9O1xuICAgIH1cbiAgfVxufVxuXG5QYXJhbWV0ZXJzLmFwcGx5UGFyYW1ldGVycygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQgSURvY3VtZW50IGZyb20gJy4vSURvY3VtZW50JztcbmltcG9ydCBJTG9jYXRpb24gZnJvbSAnLi9JTG9jYXRpb24nO1xuaW1wb3J0IElOZXR3b3JrSW5mb3JtYXRpb24gZnJvbSAnLi9JTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCBJTmF2aWdhdG9yIGZyb20gJy4vSU5hdmlnYXRvcic7XG5pbXBvcnQgSVdpbmRvdyBmcm9tICcuL0lXaW5kb3cnO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4vSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbnR5cGUgQnJvd3Nlckdsb2JhbFNjb3BlID0gSVByb3ZpZGVkR2xvYmFsU2NvcGU7XG5cbmNvbnN0IGJyb3dzZXJHbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlID0ge1xuICBkb2N1bWVudCxcbiAgbG9jYXRpb24sXG4gIG5hdmlnYXRvcixcbiAgd2luZG93XG59O1xuXG5leHBvcnQgY2xhc3MgR2xvYmFsU2NvcGUgaW1wbGVtZW50cyBJR2xvYmFsU2NvcGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5zdGFuY2UgPSBuZXcgU3ViamVjdDxJR2xvYmFsU2NvcGU+KG5ldyBHbG9iYWxTY29wZShicm93c2VyR2xvYmFsU2NvcGUpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5zdGFuY2U6IFJlYWRPbmx5U3ViamVjdDxJR2xvYmFsU2NvcGU+ID0gbmV3IFJlYWRPbmx5U3ViamVjdChHbG9iYWxTY29wZS5faW5zdGFuY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogSURvY3VtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NhdGlvbjogSUxvY2F0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0b3I6IElOYXZpZ2F0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dpbmRvdzogSVdpbmRvdztcblxuICBjb25zdHJ1Y3RvcihnbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlKSB7XG4gICAgdGhpcy5fZG9jdW1lbnQgPSBnbG9iYWxTY29wZS5kb2N1bWVudDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IGdsb2JhbFNjb3BlLmxvY2F0aW9uO1xuICAgIHRoaXMuX25hdmlnYXRvciA9IGdsb2JhbFNjb3BlLm5hdmlnYXRvcjtcbiAgICB0aGlzLl93aW5kb3cgPSBnbG9iYWxTY29wZS53aW5kb3c7XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCB0byBtYWludGFpbiBBUEkgY29uc2lzdGVuY3kgd2l0aCBQcm92aWRlZEdsb2JhbFNjb3BlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1YmxpYyBzdGF0aWMgc2V0SW5zdGFuY2UocHJvdmlkZWRHbG9iYWxTY29wZTogSVByb3ZpZGVkR2xvYmFsU2NvcGUpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIHRoZSBHbG9iYWxTY29wZScpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZSgpOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzdWJzY3JpYmUoY2FsbGJhY2s6ICh2YWx1ZTogSUdsb2JhbFNjb3BlIHwgbnVsbCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUuX3JlYWRPbmx5SW5zdGFuY2Uuc3Vic2NyaWJlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGdldCBBYm9ydENvbnRyb2xsZXIoKTogdHlwZW9mIEFib3J0Q29udHJvbGxlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5BYm9ydENvbnRyb2xsZXI7XG4gIH1cblxuICBnZXQgRm9ybURhdGEoKTogdHlwZW9mIEZvcm1EYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkZvcm1EYXRhO1xuICB9XG5cbiAgZ2V0IEhUTUxWaWRlb0VsZW1lbnQoKTogdHlwZW9mIEhUTUxWaWRlb0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuSFRNTFZpZGVvRWxlbWVudDtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbSgpOiB0eXBlb2YgTWVkaWFTdHJlYW0ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTdHJlYW07XG4gIH1cblxuICBnZXQgTWVkaWFTdHJlYW1UcmFjaygpOiB0eXBlb2YgTWVkaWFTdHJlYW1UcmFjayB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbVRyYWNrO1xuICB9XG5cbiAgZ2V0IE1lZGlhU291cmNlKCk6IHR5cGVvZiBNZWRpYVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVNvdXJjZTtcbiAgfVxuXG4gIGdldCBSVENQZWVyQ29ubmVjdGlvbigpOiB0eXBlb2YgUlRDUGVlckNvbm5lY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKCk6IHR5cGVvZiBSVENTZXNzaW9uRGVzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDU2Vzc2lvbkRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IFJUQ0ljZUNhbmRpZGF0ZSgpOiB0eXBlb2YgUlRDSWNlQ2FuZGlkYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ0ljZUNhbmRpZGF0ZTtcbiAgfVxuXG4gIGdldCBVUkwoKTogdHlwZW9mIFVSTCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkw7XG4gIH1cblxuICBnZXQgVVJMU2VhcmNoUGFyYW1zKCk6IHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuVVJMU2VhcmNoUGFyYW1zO1xuICB9XG5cbiAgZ2V0IGFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgYWRkV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5hZGRFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhckludGVydmFsKCk6IChpZD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5jbGVhckludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhclRpbWVvdXQoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFyVGltZW91dC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRDcmVhdGVFbGVtZW50KCk6IDxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHRhZzogc3RyaW5nKSA9PiBFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudC5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudEhhc0ZvY3VzKCk6ICgpID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5oYXNGb2N1cy5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudElzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2RvY3VtZW50LmhpZGRlbjtcbiAgfVxuXG4gIGdldCBkb2N1bWVudFF1ZXJ5U2VsZWN0b3IoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3Rvci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBmZXRjaCgpOiAoaW5wdXQ6IHN0cmluZyB8IFVSTCB8IFJlcXVlc3QsIGluaXQ/OiBSZXF1ZXN0SW5pdCkgPT4gUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuZmV0Y2guYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uSG9zdG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uaG9zdG5hbWU7XG4gIH1cblxuICBnZXQgbG9jYXRpb25TZWFyY2goKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uc2VhcmNoO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvckNvbm5lY3Rpb24oKTogSU5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5jb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvcklzT25MaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3Iub25MaW5lO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3dbJ19fcGhlbml4UGFnZUxvYWRUaW1lJ10gfHwgdGhpcy5fd2luZG93WydfX3BhZ2VMb2FkVGltZSddO1xuICB9XG5cbiAgZ2V0IHNlbmRCZWFjb24oKTogKCh1cmw6IHN0cmluZyB8IFVSTCwgZGF0YT86IEJvZHlJbml0IHwgbnVsbCkgPT4gYm9vbGVhbikgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3Iuc2VuZEJlYWNvblxuICAgICAgPyAodXJsLCBkYXRhKSA9PiB0aGlzLl9uYXZpZ2F0b3Iuc2VuZEJlYWNvbiEodXJsLCBkYXRhID09PSB1bmRlZmluZWQgPyBudWxsIDogZGF0YSlcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IHF1ZXVlTWljcm90YXNrKCk6IChtaWNyb3Rhc2s6ICgpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucXVldWVNaWNyb3Rhc2suYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk6IChjYWxsYmFjazogRnJhbWVSZXF1ZXN0Q2FsbGJhY2spID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgc2V0SW50ZXJ2YWwoKTogKGhhbmRsZXI6IHN0cmluZyB8IEZ1bmN0aW9uLCB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuc2V0SW50ZXJ2YWwuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHNldFRpbWVvdXQoKTogKGhhbmRsZXI6IHN0cmluZyB8IEZ1bmN0aW9uLCB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuc2V0VGltZW91dC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSBfZGlzcG9zZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2Rpc3Bvc2FibGU6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoZGlzcG9zYWJsZTogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuX2Rpc3Bvc2VkID0gZmFsc2U7XG4gICAgdGhpcy5fZGlzcG9zYWJsZSA9IGRpc3Bvc2FibGU7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kaXNwb3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2VkID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLl9kaXNwb3NhYmxlLmNhbGwodGhpcyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZUxpc3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0OiBJRGlzcG9zYWJsZVtdID0gW107XG5cbiAgYWRkKGRpc3Bvc2FibGU6IElEaXNwb3NhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5wdXNoKGRpc3Bvc2FibGUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LmZvckVhY2goZGlzcG9zYWJsZSA9PiBkaXNwb3NhYmxlLmRpc3Bvc2UoKSk7XG4gICAgdGhpcy5fbGlzdC5sZW5ndGggPSAwO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYERpc3Bvc2FibGVMaXN0W2Rpc3Bvc2FibGVzPSR7dGhpcy5fbGlzdC5sZW5ndGh9XWA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8vIEFzIGZsb2F0IGluIEVDTUFTY3JpcHQgdXNlIDY0LWJpdCBmb3JtYXQgaXQgY2Fubm90IGhhdmUvaGFuZGxlIG1vcmUgdGhhbiAxNSBzeW1ib2xzIGFmdGVyIGRvdC5cbmNvbnN0IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCA9IDE1O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOdW1iZXJzIHtcbiAgc3RhdGljIGNvdW50TnVtYmVyTGVuZ3RoKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlID0gMDtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgbnVtYmVyICo9IC0xO1xuICAgICAgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSsrO1xuICAgIH1cblxuICAgIHJldHVybiBOdW1iZXJzLmNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbChudW1iZXIpICsgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSArIChudW1iZXIgIT09IE1hdGguZmxvb3IobnVtYmVyKSA/IE51bWJlcnMuY291bnREaWdpdHNBZnRlckRlY2ltYWwobnVtYmVyKSArIDEgOiAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZpeFJvdW5kaW5nKHZhbHVlOiBudW1iZXIsIHByZWNpc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBwb3dlciA9IE1hdGgucG93KDEwLCBwcmVjaXNpb24pO1xuXG4gICAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBwb3dlcikgLyBwb3dlcjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgZGlnaXRzQmVmb3JlRGVjaW1hbCA9IDE7XG4gICAgbGV0IG51bWJlciA9IHZhbHVlO1xuXG4gICAgd2hpbGUgKG51bWJlciA+PSAxMCkge1xuICAgICAgbnVtYmVyID0gbnVtYmVyIC8gMTA7XG4gICAgICBkaWdpdHNCZWZvcmVEZWNpbWFsKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZ2l0c0JlZm9yZURlY2ltYWw7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gdmFsdWU7XG4gICAgbGV0IG1vZGlmaWVkVmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKTtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgd2hpbGUgKG1vZGlmaWVkVmFsdWUgIT09IG9yaWdpbmFsVmFsdWUgJiYgY291bnQgPCBtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgICBtb2RpZmllZFZhbHVlID0gTnVtYmVycy5maXhSb3VuZGluZyhvcmlnaW5hbFZhbHVlLCBjb3VudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ051bWJlcnMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJpbmdzIHtcbiAgc3RhdGljIHJhbmRvbShsZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgcmFuZG9tMTNDaGFyYWN0ZXJzID0gKCk6IHN0cmluZyA9PiB7XG4gICAgICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDIsIDE1KTtcbiAgICB9O1xuXG4gICAgY29uc3QgbG9vcHM6IG51bWJlciA9IE1hdGguY2VpbChsZW5ndGggLyAxMyk7XG5cbiAgICByZXR1cm4gbmV3IEFycmF5KGxvb3BzKS5maWxsKHJhbmRvbTEzQ2hhcmFjdGVycykucmVkdWNlKChzdHJpbmcsIGZ1bmMpID0+IHtcbiAgICAgIHJldHVybiBzdHJpbmcgKyBmdW5jKCk7XG4gICAgfSwgJycpLnN1YnN0cmluZygwLCBsZW5ndGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0cmluZ3MgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUoeDogbmV2ZXIpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSBbJHt4fV0uIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWRgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzZXJ0VW5yZWFjaGFibGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBlbmRlcnMge1xuICBwcml2YXRlIF9hcHBlbmRlcnM6IEFycmF5PElBcHBlbmRlcj4gPSBbXTtcblxuICBnZXQgdmFsdWUoKTogQXJyYXk8SUFwcGVuZGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVuZGVycztcbiAgfVxuXG4gIGFkZChhcHBlbmRlcjogSUFwcGVuZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLnB1c2goYXBwZW5kZXIpO1xuICB9XG5cbiAgcmVtb3ZlKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMgPSB0aGlzLl9hcHBlbmRlcnMucmVkdWNlKChpdGVtcywgaXRlbSkgPT4ge1xuICAgICAgaWYgKCEoaXRlbSA9PT0gYXBwZW5kZXIpKSB7XG4gICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9LCBbXSBhcyBBcnJheTxJQXBwZW5kZXI+KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnNvbGVBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsTWVzc2FnZSA9IGAke2RhdGUudG9JU09TdHJpbmcoKX0gWyR7Y2F0ZWdvcnl9XSBbJHtMb2dnaW5nTGV2ZWxbbG9nTGV2ZWxdfV0gJHttZXNzYWdlfWA7XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgY29uc29sZS5sb2coZnVsbE1lc3NhZ2UpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcihmdWxsTWVzc2FnZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBlbnVtIExvZ2dpbmdMZXZlbCB7XG4gIEFsbCA9IC0xLFxuICBUcmFjZSA9IDEwLFxuICBEZWJ1ZyA9IDIwLFxuICBJbmZvID0gMzAsXG4gIFdhcm4gPSA0MCxcbiAgRXJyb3IgPSA1MCxcbiAgRmF0YWwgPSA2MCxcbiAgT2ZmID0gMTAwLFxufVxuXG5leHBvcnQgdHlwZSBMb2dnaW5nTGV2ZWxUeXBlID0gJ09mZicgfCAnVHJhY2UnIHwgJ0RlYnVnJyB8ICdJbmZvJyB8ICdXYXJuJyB8ICdFcnJvcicgfCAnRmF0YWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhdGVnb3J5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGVuZGVyczogQXBwZW5kZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQ7XG5cbiAgZ2V0IGNhdGVnb3J5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NhdGVnb3J5O1xuICB9XG5cbiAgZ2V0IGFwcGVuZGVycygpOiBBcHBlbmRlcnMge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdUaHJlc2hvbGQge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICB0cmFjZSguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuVHJhY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuVHJhY2UsIGFyZ3MpO1xuICB9XG5cbiAgZGVidWcoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkRlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkRlYnVnLCBhcmdzKTtcbiAgfVxuXG4gIGluZm8oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuSW5mbywgYXJncyk7XG4gIH1cblxuICB3YXJuKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLldhcm4sIGFyZ3MpO1xuICB9XG5cbiAgZXJyb3IoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkVycm9yLCBhcmdzKTtcbiAgfVxuXG4gIGZhdGFsKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5GYXRhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5GYXRhbCwgYXJncyk7XG4gIH1cblxuICBwcml2YXRlIGxvZyhsZXZlbDogbnVtYmVyLCBhcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5yZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3MpO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLnZhbHVlLmZvckVhY2goKGFwcGVuZGVyOiBJQXBwZW5kZXIpID0+IHtcbiAgICAgIGFwcGVuZGVyLmxvZyhsZXZlbCwgbWVzc2FnZSwgdGhpcy5jYXRlZ29yeSwgZGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VQbGFjZWhvbGRlcnMoYXJnczogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IGFyZ3NbMF07XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIHdoaWxlIChyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YgJiYgYXJncy5sZW5ndGggPiAxICYmIGluZGV4ID49IDApIHtcbiAgICAgIGluZGV4ID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mKCclJywgaW5kZXgpO1xuXG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4ICsgMik7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICAvLyBFc2NhcGVkICclJScgdHVybnMgaW50byAnJSdcbiAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEpO1xuICAgICAgICAgICAgaW5kZXgrKztcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICclZCcgb3IgJyVzJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy50b1N0cmluZyhhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaic6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICVqJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBhcmdzID0gYXJncy5yZWR1Y2UoKGFjY3VtdWxhdG9yOiBzdHJpbmcsIGN1cnJlbnRWYWx1ZTogc3RyaW5nIHwgRXJyb3IsIGluZGV4OiBudW1iZXIsIGFycmF5OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBhcnJheS5sZW5ndGggJiYgY3VycmVudFZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUubWVzc2FnZSkgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArIGBbJHt0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XWA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnkoYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhY2hlOiBvYmplY3RbXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgYXJnIGluc3RhbmNlb2YgRXJyb3IgPyB0aGlzLnRvU3RyaW5nKGFyZykgOiBhcmcsXG4gICAgICAgIChfLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnPHJlY3Vyc2l2ZT4nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYWNoZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIDJcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICdbb2JqZWN0IGludmFsaWQgSlNPTi5zdHJpbmdpZnldJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VBcmd1bWVudChhcmd1bWVudDogYW55LCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyB0aGlzLnRvU3RyaW5nKGFyZ3VtZW50KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMik7XG4gIH1cblxuICBwcml2YXRlIHRvU3RyaW5nKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBkYXRhID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCB0b1N0cmluZ1N0ciA9ICcnO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSAnW29iamVjdCBpbnZhbGlkIHRvU3RyaW5nKCldJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b1N0cmluZ1N0cjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNhdGVnb3J5OiBzdHJpbmcsIGFwcGVuZGVyczogQXBwZW5kZXJzLCB0aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQpIHtcbiAgICB0aGlzLl9jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IGFwcGVuZGVycztcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJEZWZhdWx0cyB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdExvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTG9nc107XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLmxvZ1RvQ29uc29sZV07XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlciwge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJGYWN0b3J5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcnM6IHtbY2F0ZWdvcnk6IHN0cmluZ106IElMb2dnZXJ9ID0ge307XG4gIHByaXZhdGUgc3RhdGljIF9hcHBlbmRlcnM6IEFwcGVuZGVycyA9IG5ldyBBcHBlbmRlcnMoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCA9IG5ldyBMb2dnaW5nVGhyZXNob2xkKCk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uID0gbmV3IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0TG9nZ2VyKGNhdGVnb3J5OiBzdHJpbmcpOiBJTG9nZ2VyIHtcbiAgICBpZiAodHlwZW9mIGNhdGVnb3J5ICE9PSAnc3RyaW5nJykge1xuICAgICAgY2F0ZWdvcnkgPSAnU0RLJztcbiAgICB9XG5cbiAgICBjb25zdCBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgIHJldHVybiBsb2dnZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX2xvZ2dlcnNbY2F0ZWdvcnldID0gbmV3IExvZ2dlcihjYXRlZ29yeSwgdGhpcy5fYXBwZW5kZXJzLCB0aGlzLl90aHJlc2hvbGQpO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dpbmdMZXZlbCgpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgnY29uc29sZScsIExvZ2dlckZhY3RvcnkuYXBwbHlDb25zb2xlTG9nZ2VyLmJpbmQodGhpcykpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgndGVsZW1ldHJ5JywgTG9nZ2VyRmFjdG9yeS5hcHBseVRlbGVtZXRyeUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5TG9nZ2luZ0xldmVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWxvZ2dpbmctbGV2ZWwnKSBhcyBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gICAgaWYgKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pIHtcbiAgICAgIHRoaXMuX3RocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbChuYW1lOiBzdHJpbmcsIGFwcGx5QXBwZW5kZXI6IChsZXZlbDogTG9nZ2luZ0xldmVsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKGBwaGVuaXgtJHtuYW1lfS1sb2dnaW5nLWxldmVsYCkgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChwYXJhbWV0ZXJWYWx1ZSA9PT0gJ09mZicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhcHBseUFwcGVuZGVyKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlDb25zb2xlTG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIobGV2ZWwgfHwgTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5VGVsZW1ldHJ5TG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWw7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTG9nZ2VyRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nTGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUobG9nZ2luZ0xldmVsOiBMb2dnaW5nTGV2ZWwpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbCkge1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5UcmFjZTpcbiAgICAgICAgcmV0dXJuICdUcmFjZSc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5EZWJ1ZzpcbiAgICAgICAgcmV0dXJuICdEZWJ1Zyc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5JbmZvOlxuICAgICAgICByZXR1cm4gJ0luZm8nO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuV2FybjpcbiAgICAgICAgcmV0dXJuICdXYXJuJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkVycm9yOlxuICAgICAgICByZXR1cm4gJ0Vycm9yJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkZhdGFsOlxuICAgICAgICByZXR1cm4gJ0ZhdGFsJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUobG9nZ2luZ0xldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChsb2dnaW5nTGV2ZWxUeXBlOiBMb2dnaW5nTGV2ZWxUeXBlKTogTG9nZ2luZ0xldmVsIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnVHJhY2UnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLlRyYWNlO1xuICAgICAgY2FzZSAnRGVidWcnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkRlYnVnO1xuICAgICAgY2FzZSAnSW5mbyc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgICAgIGNhc2UgJ1dhcm4nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLldhcm47XG4gICAgICBjYXNlICdFcnJvcic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRXJyb3I7XG4gICAgICBjYXNlICdGYXRhbCc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRmF0YWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ1RocmVzaG9sZCB7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbDtcblxuICBnZXQgdmFsdWUoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0VGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljVHlwZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3M6IE1ldHJpY3NUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3M6IE1ldHJpY3NUeXBlKSB7XG4gICAgdGhpcy5fbWV0cmljcyA9IG1ldHJpY3M7XG4gIH1cblxuICBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE1ldHJpY3NUeXBlW3RoaXMuX21ldHJpY3NdO1xuICB9XG5cbiAgZ2V0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGhpcy5fbWV0cmljcykge1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5DaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TdGFsbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5CdWZmZXJpbmc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLk5ldHdvcmtUeXBlOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5SZXNvbHV0aW9uQ2hhbmdlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9tZXRyaWNzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuL1RlbGVtZXRyeURlZmF1bHQnO1xuXG5leHBvcnQgZW51bSBUZWxlbWV0cnlMZXZlbCB7XG4gIE9mZiA9IDEwMCxcbiAgRXNzZW50aWFsID0gMTAsXG4gIEFsbCA9IC0xXG59XG5cbmV4cG9ydCB0eXBlIFRlbGVtZXRyeUxldmVsVHlwZSA9ICdPZmYnIHwgJ0Vzc2VudGlhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbWV0cmljcyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwgPSBUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZXRyaWNzVXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgbWV0cmljc1VybC5wYXRobmFtZSA9IG1ldHJpY3NVcmwucGF0aG5hbWUgKyAnL21ldHJpY3MnO1xuXG4gICAgdGhpcy5fdXJsID0gbWV0cmljc1VybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgc2V0IGVudmlyb25tZW50KGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHNldCB0ZW5hbmN5KHRlbmFuY3k6IHN0cmluZykge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZW5hbmN5O1xuICB9XG5cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSWQ7XG4gIH1cblxuICBzZXQgc2Vzc2lvbklkKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBUZWxlbWV0cnlMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4vTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi4vc2RrL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vc2RrL0Vudmlyb25tZW50JztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0ZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2VzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBNZXRyaWNzU2VydmljZX0gPSB7fTtcblxuICBzdGF0aWMgZ2V0TWV0cmljc1NlcnZpY2UodXJsOiBzdHJpbmcpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVybCBtdXN0IGJlIGEgc3RyaW5nIGluc3RlYWQgcmVjZWl2ZWQgWyR7dHlwZW9mIHVybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcykge1xuICAgICAgcmV0dXJuIG1ldHJpY3NTZXJ2aWNlcztcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG5ldyBNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwoU0RLLnRlbGVtZXRyeUxldmVsKTtcblxuICAgIHJldHVybiBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF0gPSBuZXcgTWV0cmljc1NlcnZpY2UobWV0cmljc0NvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc3RhdGljIHNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE9iamVjdC52YWx1ZXMoTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlcyk7XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzICYmIG1ldHJpY3NTZXJ2aWNlcy5sZW5ndGgpIHtcbiAgICAgIG1ldHJpY3NTZXJ2aWNlcy5mb3JFYWNoKG1ldHJpY3NTZXJ2aWNlID0+IHtcbiAgICAgICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgICAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSB0ZWxlbWV0cnlMZXZlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRyaWNzRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEV4cG9uZW50aWFsQmFja29mZiBmcm9tICcuLi90aW1lL0V4cG9uZW50aWFsQmFja29mZic7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi9NZXRyaWNUeXBlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDEwMjQ7XG5jb25zdCBtYXhCdWZmZXJlZFJlY29yZHMgPSAyMDQ4O1xuXG5pbnRlcmZhY2UgSVZhbHVlIHtcbiAgc3RyaW5nPzogc3RyaW5nO1xuICB1aW50NjQ/OiBudW1iZXI7XG4gIGZsb2F0PzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpY1JlY29yZCB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBzdHJlYW1JZD86IHN0cmluZztcbiAgbWV0cmljOiBzdHJpbmc7XG4gIHZhbHVlPzogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlPzogSVZhbHVlO1xuICBmdWxsUXVhbGlmaWVkTmFtZTogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJTWV0cmljIHtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignTWV0cmljc1NlcnZpY2UnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHBvbmVudGlhbEJhY2tvZmY6IEV4cG9uZW50aWFsQmFja29mZjtcbiAgcHJpdmF0ZSBfbWV0cmljczogQXJyYXk8SU1ldHJpY1JlY29yZD4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZhaWx1cmVDb3VudCA9IDA7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uID0gbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpLnRoZW4obG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICB0aGlzLl9kb21haW4gPSBsb2NhdGlvbkhvc3RuYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG1ldHJpY3NDb25maWd1cmF0aW9uKCk6IE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwdXNoKG1ldHJpYzogSU1ldHJpYyk6IHZvaWQge1xuICAgIGNvbnN0IHtzdHJlYW1JZCwgdmFsdWUsIHByZXZpb3VzVmFsdWUsIHJ1bnRpbWUsIHJlc291cmNlLCBraW5kfSA9IG1ldHJpYztcbiAgICBjb25zdCBtZXRyaWNUeXBlID0gbmV3IE1ldHJpY1R5cGUobWV0cmljLm1ldHJpY1R5cGUpO1xuXG4gICAgaWYgKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA+IG1ldHJpY1R5cGUuZ2V0VGVsZW1ldHJ5TGV2ZWwoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBtZXRyaWM6IG1ldHJpY1R5cGUuZ2V0TmFtZSgpLFxuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlLFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgIHZlcnNpb246IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb24sXG4gICAgICBydW50aW1lLFxuICAgICAgcmVzb3VyY2UsXG4gICAgICBraW5kXG4gICAgfTtcblxuICAgIHRoaXMuX21ldHJpY3MucHVzaChtZXRyaWNSZWNvcmQpO1xuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lKGdsb2JhbFNjb3BlLmxvY2F0aW9uSG9zdG5hbWUpO1xuICAgICAgICBnbG9iYWxTY29wZS5zZXRUaW1lb3V0KCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSwgMCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzOiBBcnJheTxJTWV0cmljUmVjb3JkPik6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBtZXRyaWNzTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzSWZBYmxlKCk6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IDAgfHwgdGhpcy5faXNTZW5kaW5nIHx8ICFHbG9iYWxTY29wZS52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2VuZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBtZXRyaWNzTWVzc2FnZXMgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKDAsIHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgdGhpcy5fbWV0cmljcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UocmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUocmVzcG9uc2UpKSB7XG4gICAgICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSBtYXhCdWZmZXJlZFJlY29yZHMpIHtcbiAgICAgICAgICB0aGlzLl9mYWlsdXJlQ291bnQrKztcblxuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbWV0cmljcyA9IFsuLi5tZXRyaWNzTWVzc2FnZXMsIC4uLnRoaXMuX21ldHJpY3NdO1xuXG4gICAgICAgICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICAgICAgICB9LCB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9mYWlsdXJlQ291bnQpKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignVG9vIG1hbnkgY2FjaGVkIG1ldHJpYyByZWNvcmRzIFslc10sIGRyb3BwaW5nIFslc10gcmVjb3JkcycsIHRoaXMuX21ldHJpY3MubGVuZ3RoLCBtZXRyaWNzTWVzc2FnZXMubGVuZ3RoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl9mYWlsdXJlQ291bnQgPSAwO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHtzdGF0dXN9OiBSZXNwb25zZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXjVcXGR7Mn0kLy50ZXN0KHN0YXR1cy50b1N0cmluZygpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZW51bSBNZXRyaWNzVHlwZSB7XG4gIFRpbWVUb0ZpcnN0RnJhbWUsXG4gIENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUsXG4gIFN0YWxsZWQsXG4gIEJ1ZmZlcmluZyxcbiAgU2V0dXBDb21wbGV0ZWQsXG4gIFNldHVwRmFpbGVkLFxuICBSb3VuZFRyaXBUaW1lLFxuICBEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgTmV0d29ya1R5cGUsXG4gIFJlc29sdXRpb25DaGFuZ2VkLFxuICBBcHBsaWNhdGlvbkZvcmVncm91bmQsXG4gIEFwcGxpY2F0aW9uQmFja2dyb3VuZFxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXRyaWNzVHlwZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUxldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDpcbiAgICAgICAgcmV0dXJuICdFc3NlbnRpYWwnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWxUeXBlOiBUZWxlbWV0cnlMZXZlbFR5cGUpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5PZmY7XG4gICAgICBjYXNlICdFc3NlbnRpYWwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlEZWZhdWx0IHtcbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRNZXRyaWNzXTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLy8gTm90ZTogVGhpcyBQcm9taXNlIHBvbHlmaWxsIGlzIGluY2x1ZGVkIGZvciBicm93c2VyIGJ1aWxkcyBvbmx5IHRvIGFkZHJlc3MgY29tcGF0aWJpbGl0eSBpc3N1ZXNcbi8vIHdpdGggb2xkZXIgYnJvd3NlcnMgd2hvc2UgbmF0aXZlIFByb21pc2U8VD5pbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IC5maW5hbGx5LlxuXG5pbXBvcnQgUHJvbWlzZUhhbmRsZXIgZnJvbSAnLi9Qcm9taXNlSGFuZGxlcic7XG5cbmNsYXNzIFByb21pc2U8VD4ge1xuICBfc3RhdGU6IG51bWJlcjtcbiAgX2hhbmRsZWQ6IGJvb2xlYW47XG4gIF92YWx1ZTogVCB8IHVua25vd247XG4gIF9kZWZlcnJlZHM6IEFycmF5PFByb21pc2VIYW5kbGVyPFQ+PjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlXG4gIHRoZW4ob25GdWxmaWxsZWQ6IEZ1bmN0aW9uIHwgbnVsbCwgb25SZWplY3RlZDogRnVuY3Rpb24gfCBudWxsKTogUHJvbWlzZTxUPnwgdm9pZDtcblxuICBjb25zdHJ1Y3RvcihjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUHJvbWlzZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldycpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25vdCBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGUgPSAwO1xuICAgIHRoaXMuX2hhbmRsZWQgPSBmYWxzZTtcbiAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fZGVmZXJyZWRzID0gW107XG5cbiAgICB0aGlzLmRvUmVzb2x2ZShjYWxsYmFjayk7XG4gIH1cblxuICBkb1Jlc29sdmUoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgbGV0IGRvbmUgPSBmYWxzZTtcblxuICAgIHRyeSB7XG4gICAgICBjYWxsYmFjayhcbiAgICAgICAgKHZhbHVlOiBQcm9taXNlPFQ+fCBudWxsKSA9PiB7XG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgKHJlYXNvbjogUHJvbWlzZTxUPnwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcm9taXNlUmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZG9uZSA9IHRydWU7XG4gICAgICB0aGlzLnByb21pc2VSZWplY3QoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb21pc2VSZXNvbHZlKG5ld1ZhbHVlOiBQcm9taXNlPFQ+fCBudWxsIHwgdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHByb21pc2UgPSB0aGlzIGFzIFByb21pc2U8VD47XG5cbiAgICB0cnkge1xuICAgICAgLy8gUHJvbWlzZTxUPlJlc29sdXRpb24gUHJvY2VkdXJlOiBodHRwczovL2dpdGh1Yi5jb20vUHJvbWlzZXMtYXBsdXMvUHJvbWlzZXMtc3BlYyN0aGUtUHJvbWlzZS1yZXNvbHV0aW9uLXByb2NlZHVyZVxuICAgICAgaWYgKG5ld1ZhbHVlID09PSBwcm9taXNlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0EgUHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdCBzZWxmLicpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV3VmFsdWUgJiYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG5ld1ZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICAvLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgbmV4dCBsaW5lIHRvIG5vdCBkbyBleHRyYSBpZiBzdGF0ZW1lbnRzXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCB0aGVuID0gbmV3VmFsdWUudGhlbjtcblxuICAgICAgICBpZiAobmV3VmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgcHJvbWlzZS5fc3RhdGUgPSAzO1xuICAgICAgICAgIHByb21pc2UuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgcHJvbWlzZS5maW5hbGUoKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHByb21pc2UuZG9SZXNvbHZlKGZ1bmN0aW9uKCk6IHZvaWQge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuICAgICAgICAgICAgdGhlbi5hcHBseShuZXdWYWx1ZSwgYXJndW1lbnRzIGFzIHVua25vd24gYXMgW29uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb25dKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwcm9taXNlLl9zdGF0ZSA9IDE7XG4gICAgICBwcm9taXNlLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgcHJvbWlzZS5maW5hbGUoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBwcm9taXNlLnByb21pc2VSZWplY3QoZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvbWlzZVJlamVjdChuZXdWYWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gMjtcbiAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMuZmluYWxlKCk7XG4gIH1cblxuICBmaW5hbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3N0YXRlID09PSAyICYmIHRoaXMuX2RlZmVycmVkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIFByb21pc2UuX2ltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5faGFuZGxlZCkge1xuICAgICAgICAgIFByb21pc2UuX3VuaGFuZGxlZFJlamVjdGlvbih0aGlzLl92YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLl9kZWZlcnJlZHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHRoaXMuaGFuZGxlKHRoaXMuX2RlZmVycmVkc1tpXSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVmZXJyZWRzID0gW107XG4gIH1cblxuICBoYW5kbGUoZGVmZXJyZWQ6IFByb21pc2VIYW5kbGVyPFQ+KTogdm9pZCB7XG4gICAgbGV0IHByb21pc2UgPSB0aGlzIGFzIFByb21pc2U8VD47XG5cbiAgICB3aGlsZSAocHJvbWlzZS5fc3RhdGUgPT09IDMpIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLl92YWx1ZSBhcyBQcm9taXNlPFQ+O1xuICAgIH1cblxuICAgIGlmIChwcm9taXNlLl9zdGF0ZSA9PT0gMCkge1xuICAgICAgcHJvbWlzZS5fZGVmZXJyZWRzLnB1c2goZGVmZXJyZWQpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvbWlzZS5faGFuZGxlZCA9IHRydWU7XG4gICAgUHJvbWlzZS5faW1tZWRpYXRlKCgpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gcHJvbWlzZS5fc3RhdGUgPT09IDEgPyBkZWZlcnJlZC5vbkZ1bGZpbGxlZCA6IGRlZmVycmVkLm9uUmVqZWN0ZWQ7XG5cbiAgICAgIGlmIChjYWxsYmFjayA9PT0gbnVsbCkge1xuICAgICAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IDEpIHtcbiAgICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZXNvbHZlKHByb21pc2UuX3ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZWplY3QocHJvbWlzZS5fdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhwcm9taXNlLl92YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlamVjdChlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlc29sdmUocmVzdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhbGwoYXJyOiBBcnJheTxQcm9taXNlPHVua25vd24+Pik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS5hbGwgYWNjZXB0cyBhbiBhcnJheScpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycik7XG5cbiAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgICB9XG5cbiAgICAgIGxldCByZW1haW5pbmcgPSBhcmdzLmxlbmd0aDtcbiAgICAgIGNvbnN0IG1hbmFnZVJlc3BvbnNlID0gKGk6IG51bWJlciwgdmFsdWU6IFByb21pc2U8dW5rbm93bj4pOiB2b2lkID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICAgICAgY29uc3QgdGhlbiA9IHZhbHVlLnRoZW47XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGVuLmNhbGwoXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgKHZhbHVlOiBQcm9taXNlPHVua25vd24+KSA9PiBtYW5hZ2VSZXNwb25zZShpLCB2YWx1ZSksXG4gICAgICAgICAgICAgICAgcmVqZWN0XG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGFyZ3NbaV0gPSB2YWx1ZTtcblxuICAgICAgICAgIGlmICgtLXJlbWFpbmluZyA9PT0gMCkge1xuICAgICAgICAgICAgcmVzb2x2ZShhcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG1hbmFnZVJlc3BvbnNlKGksIGFyZ3NbaV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHJlc29sdmUodmFsdWU6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHJlc29sdmUodmFsdWUpKTtcbiAgfVxuXG4gIHN0YXRpYyByZWplY3QodmFsdWU6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKF86IHVuZGVmaW5lZCwgcmVqZWN0OiBGdW5jdGlvbikgPT4gcmVqZWN0KHZhbHVlKSk7XG4gIH1cblxuICBzdGF0aWMgcmFjZShhcnI6IEFycmF5PFByb21pc2U8dW5rbm93bj4+KTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgVHlwZUVycm9yKCdQcm9taXNlLnJhY2UgYWNjZXB0cyBhbiBhcnJheScpKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGFyci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoYXJyW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgX2ltbWVkaWF0ZShjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBpZ25vcmVkID0gd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIDApO1xuICB9XG5cbiAgc3RhdGljIF91bmhhbmRsZWRSZWplY3Rpb24oZXJyb3I6IFByb21pc2U8dW5rbm93bj58IG51bGwgfCB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1Bvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjonLCBlcnJvcik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgIH1cbiAgfVxufVxuXG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZVxuUHJvbWlzZS5wcm90b3R5cGVbJ2NhdGNoJ10gPSBmdW5jdGlvbihvblJlamVjdGVkOiBGdW5jdGlvbik6IHVua25vd24ge1xuICByZXR1cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0ZWQpO1xufTtcbi8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBwcm90b3R5cGUgY2hhbmdlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5Qcm9taXNlLnByb3RvdHlwZVsndGhlbiddID0gZnVuY3Rpb24ob25GdWxmaWxsZWQ6IEZ1bmN0aW9uLCBvblJlamVjdGVkOiBGdW5jdGlvbik6IFByb21pc2U8dW5rbm93bj58IHZvaWQge1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKCk6IG51bGwgPT4gbnVsbCk7XG5cbiAgdGhpcy5oYW5kbGUobmV3IFByb21pc2VIYW5kbGVyPHVua25vd24+KG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBwcm9taXNlKSk7XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHByb3RvdHlwZSBjaGFuZ2Vcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcblByb21pc2UucHJvdG90eXBlWydmaW5hbGx5J10gPSBmdW5jdGlvbihjYWxsYmFjazogRnVuY3Rpb24pOiBQcm9taXNlPHVua25vd24+fCB2b2lkIHtcbiAgcmV0dXJuIHRoaXMudGhlbihcbiAgICAodmFsdWU6IFByb21pc2U8dW5rbm93bj58IHVuZGVmaW5lZCkgPT4gUHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrKCkpLnRoZW4oKCkgPT4gdmFsdWUsICgpOiBudWxsID0+IG51bGwpLFxuICAgIChyZWFzb246IEVycm9yIHwgc3RyaW5nKSA9PiBQcm9taXNlLnJlc29sdmUoY2FsbGJhY2soKSkudGhlbigoKSA9PiBQcm9taXNlLnJlamVjdChyZWFzb24pLCAoKTogbnVsbCA9PiBudWxsKVxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbWlzZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBQcm9taXNlIGZyb20gJy4vUHJvbWlzZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb21pc2VIYW5kbGVyPFQ+IHtcbiAgb25GdWxmaWxsZWQ6IEZ1bmN0aW9uIHwgbnVsbDtcbiAgb25SZWplY3RlZDogRnVuY3Rpb24gfCBudWxsO1xuICBwcm9taXNlOiBQcm9taXNlPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb24sIHByb21pc2U6IFByb21pc2U8VD4pIHtcbiAgICB0aGlzLm9uRnVsZmlsbGVkID0gdHlwZW9mIG9uRnVsZmlsbGVkID09PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiBudWxsO1xuICAgIHRoaXMub25SZWplY3RlZCA9IHR5cGVvZiBvblJlamVjdGVkID09PSAnZnVuY3Rpb24nID8gb25SZWplY3RlZCA6IG51bGw7XG4gICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHtcbiAgYXVkaW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICB2aWRlb1RyYW5zY2VpdmVycz86IFJUQ1J0cFRyYW5zY2VpdmVyW107XG4gIHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb247XG4gIGxvY2FsT2ZmZXI6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmV4cG9ydCBlbnVtIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIERpc2FibGVkLFxuICBFbmFibGVkXG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHJhY2tLaW5kczogKCdhdWRpbycgfCAndmlkZW8nKVtdID0gWydhdWRpbycsICd2aWRlbyddO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1BlZXJDb25uZWN0aW9uU2VydmljZScpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcGVlckNvbm5lY3Rpb25GYWN0b3J5OiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4obmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSk7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZWQ6IHtcbiAgICBkaXJlY3Rpb24/OiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjtcbiAgICBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+O1xuICB9IHwgbnVsbDtcblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNQcmVjYWNoaW5nRW5hYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHByZS1jYWNoZSBwZWVyIGNvbm5lY3Rpb24gb2ZmZXInLCBlKSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpOiBQcm9taXNlPHsgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHwgdm9pZD47IGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gfT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyxcbiAgICAgIHBlZXJDb25uZWN0aW9uOiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9KVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcihkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uID0gJ3JlY3Zvbmx5JywgdHJhY2tLaW5kcyA9IGRlZmF1bHRUcmFja0tpbmRzLCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCk6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PiB7XG4gICAgaWYgKFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkICYmIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLmRpcmVjdGlvbiA9PT0gZGlyZWN0aW9uICYmIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkICYmIHRoaXMuaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tLaW5kcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQucGVlckNvbm5lY3Rpb247XG5cbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCA/IHtlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkVuYWJsZWR9IDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pXG4gICAgICAudGhlbihhc3luYyBwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0FkZFRyYW5zY2VpdmVyO1xuICAgICAgICBjb25zdCBhdWRpb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuICAgICAgICBjb25zdCB2aWRlb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuXG4gICAgICAgIGlmIChzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKSB7XG4gICAgICAgICAgdHJhY2tLaW5kcy5mb3JFYWNoKGtpbmQgPT4ge1xuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgdmlkZW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIodW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gZGlyZWN0aW9uID09PSAncmVjdm9ubHknID8ge1xuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICB9IDoge307XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tzS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSk6IGJvb2xlYW4ge1xuICAgIGlmICh0cmFja3NLaW5kcy5sZW5ndGggIT09IGRlZmF1bHRUcmFja0tpbmRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50VHJhY2tLaW5kcyA9IChhcnJheTogKCdhdWRpbycgfCAndmlkZW8nKVtdKSA9PiBhcnJheS5yZWR1Y2UoKHRyYWNrS2luZENvdW50LCBraW5kKSA9PiB7XG4gICAgICB0cmFja0tpbmRDb3VudFtraW5kXSA9ICh0cmFja0tpbmRDb3VudFtraW5kXSB8fCAwKSArIDE7XG5cbiAgICAgIHJldHVybiB0cmFja0tpbmRDb3VudDtcbiAgICB9LCB7XG4gICAgICBhdWRpbzogMCxcbiAgICAgIHZpZGVvOiAwXG4gICAgfSk7XG4gICAgY29uc3QgY291bnRlZFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHModHJhY2tzS2luZHMpO1xuICAgIGNvbnN0IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyA9IGNvdW50VHJhY2tLaW5kcyhkZWZhdWx0VHJhY2tLaW5kcyk7XG5cbiAgICByZXR1cm4gY291bnRlZFRyYWNrS2luZHMuYXVkaW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy5hdWRpbyAmJiBjb3VudGVkVHJhY2tLaW5kcy52aWRlbyA9PT0gY291bnRlZERlZmF1bHRUcmFja0tpbmRzLnZpZGVvO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BlZXJDb25uZWN0aW9uU2VydmljZSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIHtcbiAgc3RhdGljIHRydW5jYXRlSWNlU2VydmVycyhjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgIGlmICghY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdXJsczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDI7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgdXJsID0gY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdO1xuXG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICB1cmxzLnB1c2goY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICB1cmxzOiB1cmxzLFxuICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcblxuICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi9TZHBQYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB7XG4gIFtraW5kOiBzdHJpbmddOiBJUnRjUHVibGlzaFN0YXRpc3RpYztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnQge1xuICByZXN1bHQ6ICgpID0+IElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtIGV4dGVuZHMgUlRDU3RhdHNSZXBvcnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWVzOiAoKSA9PiBzdHJpbmdbXTtcbiAgc3RhdDogKG5hbWU6IHN0cmluZykgPT4gbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNQdWJsaXNoU3RhdGlzdGljIHtcbiAgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA/OiBudW1iZXI7XG4gIHNzcmM6IHN0cmluZztcbiAgbWVkaWFUeXBlOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBiaXRyYXRlPzogbnVtYmVyO1xuICBieXRlc1NlbnQ6IG51bWJlcjtcbiAgcGFja2V0c1NlbnQ6IG51bWJlcjtcbiAgcmV0cmFuc21pdHRlZEJ5dGVzU2VudD86IG51bWJlcjtcbiAgZmlyQ291bnQ/OiBudW1iZXI7XG4gIGZyYW1lSGVpZ2h0PzogbnVtYmVyO1xuICBmcmFtZVdpZHRoPzogbnVtYmVyO1xuICBmcmFtZXNFbmNvZGVkPzogbnVtYmVyO1xuICBmcmFtZXNTZW50PzogbnVtYmVyO1xuICBoZWFkZXJCeXRlc1NlbnQ/OiBudW1iZXI7XG4gIGh1Z2VGcmFtZXNTZW50PzogbnVtYmVyO1xuICBwbGlDb3VudD86IG51bWJlcjtcbiAgcXBTdW0/OiBudW1iZXI7XG4gIHRvdGFsRW5jb2RlVGltZT86IG51bWJlcjtcbiAgdG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQ/OiBudW1iZXI7XG4gIGNvZGVjOiBzdHJpbmc7XG4gIGZwcz86IG51bWJlcjtcbiAgcm91bmRUcmlwVGltZTogbnVtYmVyO1xufVxuXG5jb25zdCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0ID0gMTAwMDtcbmNvbnN0IGdldFN0YXRzVGltZW91dER1cmF0aW9uID0gNTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjUHVibGlzaE1vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdSdGNQdWJsaXNoTW9uaXRvcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFZpZGVvQ29kZWM6IHN0cmluZyA9ICd1bmtub3duJztcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkQXVkaW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydGNTdGF0aXN0aWM6IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljPiA9IG5ldyBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4oe30pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiB8IG51bGw7XG4gIHByaXZhdGUgX2lzTW9uaXRvclJ1bm5pbmcgPSB0cnVlO1xuICBwcml2YXRlIF91cGRhdGVUaW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX21vbml0b3JHZW5lcmF0aW9uID0gMDtcbiAgcHJpdmF0ZSBfYXZhaWxhYmxlVHJhY2tzOiB7XG4gICAgYXVkaW86IGJvb2xlYW47XG4gICAgdmlkZW86IGJvb2xlYW47XG4gIH0gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXIsIGlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBwZWVyQ29ubmVjdGlvbjtcbiAgICB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lID0gZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbiAmJiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudExvY2FsRGVzY3JpcHRpb24/LnNkcCAmJiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uPy5zZHApIHtcbiAgICAgIGNvbnN0IHBhcnNlZExvY2FsRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uLnNkcCk7XG4gICAgICBjb25zdCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiA9IG5ldyBTZHBQYXJzZXIodGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgPSBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5hdWRpb0NvZGVjO1xuICAgICAgdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyA9IHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLnZpZGVvQ29kZWM7XG5cbiAgICAgIHRoaXMuX2F2YWlsYWJsZVRyYWNrcyA9IHtcbiAgICAgICAgYXVkaW86IHBhcnNlZExvY2FsRGVzY3JpcHRpb24uaXNBdWRpb1RyYWNrRW5hYmxlZCAmJiBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5pc0F1ZGlvVHJhY2tFbmFibGVkLFxuICAgICAgICB2aWRlbzogcGFyc2VkTG9jYWxEZXNjcmlwdGlvbi5pc1ZpZGVvVHJhY2tFbmFibGVkICYmIHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLmlzVmlkZW9UcmFja0VuYWJsZWRcbiAgICAgIH07XG5cbiAgICAgIGxldCBpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayA9IHRydWU7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChcbiAgICAgICAgaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShmb3JlZ3JvdW5kID0+IHtcbiAgICAgICAgICBpZiAoaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWZvcmVncm91bmQgfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJbnZhbGlkYXRlIGFueSBpbi1mbGlnaHQgcG9sbCBmcm9tIGJlZm9yZSB0aGUgZnJlZXplXG4gICAgICAgICAgdGhpcy5fbW9uaXRvckdlbmVyYXRpb24rKztcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZW91dCk7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1Jlc3RhcnRpbmcgc3RhdHMgcG9sbGluZyBhZnRlciBmb3JlZ3JvdW5kIHRyYW5zaXRpb24nKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpO1xuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljKCk6IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0Y1N0YXRpc3RpYztcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKys7XG4gICAgdGhpcy5faXNNb25pdG9yUnVubmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHtcbiAgICAgICAgYXVkaW86IDAsXG4gICAgICAgIHZpZGVvOiAwXG4gICAgICB9O1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZ2VuZXJhdGlvbiA9IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uO1xuICAgIC8vIFNhZmFyaSAxMSBkb2VzbnQgaGF2ZSBraW5kIG9yIG1lZGlhVHlwZSBzbyB3ZSBuZWVkIHRvIHRha2UgaXQgZnJvbSB0aGUgaW5ib3VuZC1ydHAgb2JqZWN0IGlkXG4gICAgY29uc3QgZ2V0S2luZEZvclNhZmFyaTExID0gKGl0ZW06IHtpZDogc3RyaW5nfSk6IHN0cmluZyA9PiBpdGVtLmlkLmluY2x1ZGVzKCdBdWRpbycpID8gJ2F1ZGlvJyA6IGl0ZW0uaWQuaW5jbHVkZXMoJ1ZpZGVvJykgPyAndmlkZW8nIDogJyc7XG4gICAgbGV0IHRpbWVvdXRIYW5kbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGF0c1Byb21pc2UgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHMobnVsbCk7XG5cbiAgICAgIGlmICghc3RhdHNQcm9taXNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZTx1bmRlZmluZWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICB0aW1lb3V0SGFuZGxlID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKHVuZGVmaW5lZCksIGdldFN0YXRzVGltZW91dER1cmF0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBQcm9taXNlLnJhY2UoW3N0YXRzUHJvbWlzZSwgdGltZW91dFByb21pc2VdKTtcblxuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdGF0cykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ2dldFN0YXRzKCkgdGltZWQgb3V0LCBza2lwcGluZyBzdGF0cyBwcm9jZXNzaW5nJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBydGNTdGF0aXN0aWNzOiBJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgPSB7fTtcbiAgICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgICAgICBsZXQgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgICAgICBzdGF0cy5mb3JFYWNoKHJlcG9ydCA9PiB7XG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSkge1xuICAgICAgICAgICAgcm91bmRUcmlwVGltZSA9IHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSAqIDEwMDA7XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWydhdWRpbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFNlbnRUaW1lc3RhbXA7XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWydhdWRpbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ291dGJvdW5kLXJ0cCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGtpbmQ6ICd2aWRlbycgfCAnYXVkaW8nIHwgdW5kZWZpbmVkID0gcmVwb3J0LmtpbmQgfHwgcmVwb3J0Lm1lZGlhVHlwZSB8fCBnZXRLaW5kRm9yU2FmYXJpMTEocmVwb3J0KTtcbiAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICBzdGF0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gcmVwb3J0LmNvZGVjSWQpIHtcbiAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl9hdmFpbGFibGVUcmFja3M/LltraW5kXSkge1xuICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcG9ydC5ieXRlc1NlbnQgfHwgMDtcbiAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNCeXRlc1NlbnQgPSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8uYnl0ZXNTZW50ID8/IDA7XG4gICAgICAgICAgICAgIGNvbnN0IGJ5dGVzRGVsdGEgPSBieXRlcyAtIHByZXZpb3VzQnl0ZXNTZW50O1xuICAgICAgICAgICAgICBjb25zdCB0aW1lRGVsdGEgPSByZXBvcnQudGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LnRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgY29uc3QgYml0cmF0ZSA9IGJ5dGVzRGVsdGEgJiYgdGltZURlbHRhID8gTWF0aC5mbG9vcig4ICogYnl0ZXNEZWx0YSAvXG4gICAgICAgICAgICAgICAgdGltZURlbHRhICogMTAwMCkgOiAwO1xuXG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0gPSB7XG4gICAgICAgICAgICAgICAgc3NyYzogcmVwb3J0LnNzcmMsXG4gICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBraW5kLFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogcmVwb3J0LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICBiaXRyYXRlLFxuICAgICAgICAgICAgICAgIGJ5dGVzU2VudDogcmVwb3J0LmJ5dGVzU2VudCxcbiAgICAgICAgICAgICAgICBwYWNrZXRzU2VudDogcmVwb3J0LnBhY2tldHNTZW50LFxuICAgICAgICAgICAgICAgIHJldHJhbnNtaXR0ZWRCeXRlc1NlbnQ6IHJlcG9ydC5yZXRyYW5zbWl0dGVkQnl0ZXNTZW50LFxuICAgICAgICAgICAgICAgIGNvZGVjOiBjb2RlYyB8fCB0aGlzLmdldENvZGVjQnlUeXBlKGtpbmQpLFxuICAgICAgICAgICAgICAgIHJvdW5kVHJpcFRpbWVcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBpZiAocmVwb3J0Lmxhc3RQYWNrZXRTZW50VGltZXN0YW1wIHx8IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXS5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZmlyQ291bnQnXSA9IHJlcG9ydC5maXJDb3VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZUhlaWdodCddID0gcmVwb3J0LmZyYW1lSGVpZ2h0O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lV2lkdGgnXSA9IHJlcG9ydC5mcmFtZVdpZHRoO1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lc0VuY29kZWQnXSA9IHJlcG9ydC5mcmFtZXNFbmNvZGVkO1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lc1NlbnQnXSA9IHJlcG9ydC5mcmFtZXNTZW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2hlYWRlckJ5dGVzU2VudCddID0gcmVwb3J0LmhlYWRlckJ5dGVzU2VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydodWdlRnJhbWVzU2VudCddID0gcmVwb3J0Lmh1Z2VGcmFtZXNTZW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3BsaUNvdW50J10gPSByZXBvcnQucGxpQ291bnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsncXBTdW0nXSA9IHJlcG9ydC5xcFN1bTtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWyd0b3RhbEVuY29kZVRpbWUnXSA9IHJlcG9ydC50b3RhbEVuY29kZVRpbWU7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsndG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQnXSA9IHJlcG9ydC50b3RhbEVuY29kZWRCeXRlc1RhcmdldDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LnZpZGVvPy5mcmFtZXNFbmNvZGVkKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmcHMgPSAocmVwb3J0LmZyYW1lc0VuY29kZWQgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8uZnJhbWVzRW5jb2RlZCkgL1xuICAgICAgICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW2tpbmRdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgICAgICAgICAxMDAwO1xuXG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcHMnXSA9IGZwcyA/IE1hdGgucm91bmQoZnBzICogMTAwKSAvIDEwMCA6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgPSBydGNTdGF0aXN0aWNzO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24gfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIud2FybignZ2V0U3RhdHMoKSByZWplY3RlZCcsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc01vbml0b3JSdW5uaW5nICYmIGdlbmVyYXRpb24gPT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKSB7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWMoKSwgdXBkYXRlU3RhdGlzdGljVGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2RlY0J5VHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkQXVkaW9Db2RlYyB8fCAndW5rbm93bic7XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRWaWRlb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZHBQYXJzZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZHA6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXVkaW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzQXVkaW9UcmFja0VuYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzVmlkZW9UcmFja0VuYWJsZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2RwOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZHAgPSBzZHA7XG5cbiAgICBjb25zdCBzZHBTcGxpdEJ5TGluZXMgPSB0aGlzLl9zZHAuc3BsaXQoLyhcXHJcXG58XFxyfFxcbikvKTtcbiAgICBjb25zdCBzZHBTcGxpdEJ5VHJhY2tzID0gdGhpcy5fc2RwLnNwbGl0KC8oPzpefFtcXHJcXG5dKW09Lyk7XG5cbiAgICB0aGlzLl9hdWRpb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCdhdWRpbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5fdmlkZW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygndmlkZW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQgPSB0aGlzLmlzVHJhY2tCeVR5cGVFbmFibGVkKCdhdWRpbycsIHNkcFNwbGl0QnlUcmFja3MpO1xuICAgIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQgPSB0aGlzLmlzVHJhY2tCeVR5cGVFbmFibGVkKCd2aWRlbycsIHNkcFNwbGl0QnlUcmFja3MpO1xuICB9XG5cbiAgZ2V0IGF1ZGlvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXVkaW9Db2RlYztcbiAgfVxuXG4gIGdldCB2aWRlb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZGVvQ29kZWM7XG4gIH1cblxuICBnZXQgaXNBdWRpb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpc1ZpZGVvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RyYWNrQnlUeXBlRW5hYmxlZCh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlUcmFja3M6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2RwU2VjdGlvbkZvclR5cGUgPSBzZHBTcGxpdEJ5VHJhY2tzLmZpbmQoc2RwVHJhY2sgPT4gc2RwVHJhY2suc3RhcnRzV2l0aCh0eXBlKSk7XG5cbiAgICBpZiAoIXNkcFNlY3Rpb25Gb3JUeXBlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICFzZHBTZWN0aW9uRm9yVHlwZS5pbmNsdWRlcyhgYT1pbmFjdGl2ZWApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvZGVjKHR5cGU6IHN0cmluZywgc2RwU3BsaXRCeUxpbmVzOiBzdHJpbmcgW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ0bWFwID0gc2RwU3BsaXRCeUxpbmVzLmZpbmQoc2RwTGluZSA9PiBzZHBMaW5lLmluY2x1ZGVzKGBtPSR7dHlwZX1gKSk/LnNwbGl0KCcgJylbM10gfHwgJyc7XG4gICAgY29uc3QgdXNlZENvZGVjTGluZSA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgYT1ydHBtYXA6JHtydG1hcH1gKSk7XG4gICAgY29uc3QgdXNlZENvZGVjID0gdXNlZENvZGVjTGluZT8uc3BsaXQoJyAnKVsxXSB8fCAnJztcbiAgICBjb25zdCBjb2RlY05hbWUgPSB1c2VkQ29kZWMuc3BsaXQoJy8nKVswXTtcblxuICAgIHJldHVybiBjb2RlY05hbWU7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IHtJTGVnYWN5UlRDU3RhdHNSZXBvcnR9IGZyb20gJy4vUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuXG5jbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb24gaW1wbGVtZW50cyBJUGVlckNvbm5lY3Rpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignVmFuaWxsYVBlZXJDb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb24pIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQud2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbiBjbGFzcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvblxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuUlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBnZXQgbmF0aXZlKCk6IFJUQ1BlZXJDb25uZWN0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudExvY2FsRGVzY3JpcHRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBjb25uZWN0aW9uU3RhdGUoKTogUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY29ubmVjdGlvblN0YXRlIHx8IG51bGw7XG4gIH1cblxuICBnZXQgaWNlQ29ubmVjdGlvblN0YXRlKCk6IFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uaWNlQ29ubmVjdGlvblN0YXRlIHx8IG51bGw7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldENvbmZpZ3VyYXRpb24gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LnNldENvbmZpZ3VyYXRpb24gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNHZXRUcmFuc2NlaXZlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFGZWF0dXJlRW5hYmxlbWVudC5nZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFRyYW5zY2VpdmVycyA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkICYmIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uYWRkVHJhbnNjZWl2ZXIgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBhc3luYyBjcmVhdGVPZmZlcihvcHRpb25zPzogUlRDT2ZmZXJPcHRpb25zKTogUHJvbWlzZTxSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgY3JlYXRlT2ZmZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlQW5zd2VyKG9wdGlvbnM/OiBSVENBbnN3ZXJPcHRpb25zKTogUHJvbWlzZTxSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgY3JlYXRlQW5zd2VyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihyZXNvbHZlLCByZWplY3QsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgc2V0TG9jYWxEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCA/XG4gICAgICBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSA6IGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc0NyeXB0byA9IGRlc2NyaXB0aW9uLnNkcD8ubWF0Y2goL2E9Y3J5cHRvOi9pKTtcblxuICAgIGlmIChoYXNDcnlwdG8pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTRFAgYT1jcnlwdG8gaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCA/XG4gICAgICBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSA6IGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIGdldFNlbmRlcnMoKTogUlRDUnRwU2VuZGVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U2VuZGVycygpO1xuICB9XG5cbiAgZ2V0UmVjZWl2ZXJzKCk6IFJUQ1J0cFJlY2VpdmVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0UmVjZWl2ZXJzKCk7XG4gIH1cblxuICBnZXRTdGF0cyhzZWxlY3Rvcj86IE1lZGlhU3RyZWFtVHJhY2sgfCBudWxsKTogUHJvbWlzZTxSVENTdGF0c1JlcG9ydD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMoc2VsZWN0b3IpO1xuICB9XG5cbiAgZ2V0U3RhdHNMZWdhY3koKTogUHJvbWlzZTxJTGVnYWN5UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgLy8gSWdub3JlZCBkdWUgdG8gdHlwZXNjcmlwdCBub3QgaGF2aW5nIGxlZ2FjeSAnZ2V0U3RhdHMnIG1ldGhvZCB0eXBlIGRlZmluaXRpb25cbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSAnZ2V0U3RhdHMnIG1ldGhvZCBmb3JcbiAgICAgIC8vIENocm9tZUA8PSA2NiBkZXRhaWxlZCBoZXJlOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02Mjc4MTZcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMocmVzb2x2ZSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRFdmVudExpc3RlbmVyPFQgZXh0ZW5kcyBrZXlvZiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwPih0eXBlOiBULCBsaXN0ZW5lcjogKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFtUXSkgPT4gdW5rbm93biwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXI8VCBleHRlbmRzIGtleW9mIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXA+KHR5cGU6IFQsIGxpc3RlbmVyOiAodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwW1RdKSA9PiB1bmtub3duLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0VHJhbnNjZWl2ZXJzKCk6IFJUQ1J0cFRyYW5zY2VpdmVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCk7XG4gIH1cblxuICBhZGRUcmFuc2NlaXZlcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCk6IFJUQ1J0cFRyYW5zY2VpdmVyIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKG5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgYWRkU3RyZWFtKG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSk6IHZvaWQge1xuICAgIG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYWNrKHRyYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENvbmZpZ3VyYXRpb24oKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRDb25maWd1cmF0aW9uKCk7XG4gIH1cblxuICBzZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHNldCBvbnRyYWNrKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub250cmFjayA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb250cmFjaygpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2s7XG4gIH1cblxuICBzZXQgb25pY2VjYW5kaWRhdGUoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2VjYW5kaWRhdGUoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZTtcbiAgfVxuXG4gIHNldCBvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBzZXQgb25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmNsb3NlKCk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBWYW5pbGxhUGVlckNvbm5lY3Rpb247IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbiBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkgaW1wbGVtZW50cyBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IHtcbiAgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+KHJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZShuZXcgVmFuaWxsYVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4vU3ViamVjdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWRPbmx5U3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YmplY3Q6IFN1YmplY3Q8VD47XG5cbiAgY29uc3RydWN0b3Ioc3ViamVjdDogU3ViamVjdDxUPikge1xuICAgIHRoaXMuX3N1YmplY3QgPSBzdWJqZWN0O1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAodmFsdWU6IFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBJQ29tcGFyYWJsZSBmcm9tICcuLi9sYW5nL0lDb21wYXJhYmxlJztcblxuY2xhc3MgRGlzcG9zYWJsZUxpc3RlbmVyPFQ+IGV4dGVuZHMgRGlzcG9zYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGxpc3RlbmVyczogVFtdLCBsaXN0ZW5lcjogVCkge1xuICAgIHN1cGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGlkeCA9IGxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcblxuICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiAoKHZhbHVlOiBUKSA9PiB2b2lkKVtdO1xuICBwcml2YXRlIF92YWx1ZTogVDtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCkge1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IFQpIHtcbiAgICBsZXQgY2hhbmdlZCA9IHRoaXMuX3ZhbHVlICE9PSB2YWx1ZTtcblxuICAgIGlmIChjaGFuZ2VkICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBjb21wYXJhYmxlID0gdmFsdWUgYXMgdW5rbm93biBhcyBJQ29tcGFyYWJsZTxUPjtcblxuICAgICAgaWYgKHR5cGVvZiBjb21wYXJhYmxlLmVxdWFscyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjaGFuZ2VkID0gIWNvbXBhcmFibGUuZXF1YWxzKHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWNoYW5nZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBbLi4udGhpcy5fbGlzdGVuZXJzXSkge1xuICAgICAgbGlzdGVuZXIodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG5cbiAgICBsaXN0ZW5lcih0aGlzLl92YWx1ZSk7XG5cbiAgICByZXR1cm4gbmV3IERpc3Bvc2FibGVMaXN0ZW5lcjwodmFsdWU6IFQpID0+IHZvaWQ+KHRoaXMuX2xpc3RlbmVycywgbGlzdGVuZXIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHN0YXRpYyBnZXRFbnZpcm9ubWVudEZyb21VcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgICByZXR1cm4gYmFzZVVSTC5vcmlnaW47XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9JR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtHbG9iYWxTY29wZX0gZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IFN0cmluZ3MgZnJvbSAnLi4vbGFuZy9TdHJpbmdzJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgQ29uc29sZUFwcGVuZGVyIGZyb20gJy4uL2xvZ2dlci9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiwge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuaW1wb3J0IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIGZyb20gJy4uL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcic7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuLi9ydGMvSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIGZyb20gJy4uL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeVVybCBmcm9tICcuL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi9FbnZpcm9ubWVudCc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IHtTaGFrYVBsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lTaGFrYVBsYXllcic7XG5pbXBvcnQge0hsc1BsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lIbHNQbGF5ZXInO1xuaW1wb3J0IHtXZWJQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JV2ViUGxheWVyJztcbmltcG9ydCBJUHJvdmlkZWRHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9JUHJvdmlkZWRHbG9iYWxTY29wZSc7XG5cbmNvbnN0IHBhZ2VMb2FkVGltZSA9IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCkudmFsdWU/LnBhZ2VMb2FkVGltZSB8fCBEYXRlLm5vdygpO1xuXG5pbnRlcmZhY2UgSUluaXRPcHRpb25zIHtcbiAgZGlzY292ZXJ5VXJpPzogc3RyaW5nO1xuICBwZWVyQ29ubmVjdGlvbkZhY3Rvcnk/OiBJUGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB0ZWxlbWV0cnlMZXZlbD86IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nZ2luZ0xldmVsPzogTG9nZ2luZ0xldmVsVHlwZTtcbiAgY29uc29sZUxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0/OiBib29sZWFuO1xuICBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZT86IGJvb2xlYW47XG4gIHdlYlBsYXllckxvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgc2hha2FQbGF5ZXJMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgaGxzSnNMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNESyB7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZScpO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3dlYlBsYXllckxvYWRlcjogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfc2hha2FQbGF5ZXJMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfaGxzSnNMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yOiBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB8IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIF9lbnZpcm9ubWVudDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlVcmw6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gODtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeUxldmVsOiBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPiA9IG5ldyBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPihUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCk7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoQnVpbGRGZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3RlbmFuY3k6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfY2xpZW50U2Vzc2lvbklkOiBzdHJpbmcgPSBTdHJpbmdzLnJhbmRvbSgzMik7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2FkZWRUaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1NESycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5pdGlhbGl6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluaXRpYWxpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KFNESy5faW5pdGlhbGl6ZWQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlEaXNjb3ZlcnlVcmk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+KERpc2NvdmVyeVVyaS51cmkpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4oUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeSk7XG5cbiAgc3RhdGljIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IFN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZW5hbmN5KCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGNsaWVudFNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTREsuX2NsaWVudFNlc3Npb25JZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9hZGVkVGltZXN0YW1wKCk6IERhdGUge1xuICAgIHJldHVybiBTREsuX2xvYWRlZFRpbWVzdGFtcDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaW5pdGlhbGl6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seUluaXRpYWxpemVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlVcmkoKTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5RGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljUmV0cnlPbkZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0O1xuICB9XG5cbiAgc3RhdGljIGdldCBza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2ViUGxheWVyTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dlYlBsYXllckxvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hha2FQbGF5ZXJMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9zaGFrYVBsYXllckxvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaGxzSnNMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5faGxzSnNMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG1ldHJpY3NTZXJ2aWNlKCk6IE1ldHJpY3NTZXJ2aWNlIHtcbiAgICByZXR1cm4gU0RLLl9tZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IoKTogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeVVybCgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZWxlbWV0cnlVcmw7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cztcbiAgfVxuXG4gIHN0YXRpYyBzZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyhyZXRyaWVzQW1vdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gcmV0cmllc0Ftb3VudDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUodGhpcy5fbG9nZ2VyLnRocmVzaG9sZC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShTREsuX3RlbGVtZXRyeUxldmVsLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3NlckRldGVjdG9yKCk6IEJyb3dzZXJEZXRlY3RvciB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IExvZ2dlckZhY3RvcnkudGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSA9IFNESy5wYWdlTG9hZFRpbWU7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIpIHtcbiAgICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZSh0ZWxlbWV0cnlBcHBlbmRlcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdUZWxlbWV0cnkgVVJMIHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyICYmIHRlbmFuY3kpIHtcbiAgICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZSh0ZWxlbWV0cnlBcHBlbmRlcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdUZWxlbWV0cnkgdGVuYW5jeSB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgU0RLLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKERpc2NvdmVyeVVyaS51cmkudmFsdWUpO1xuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBTREsuX21ldHJpY3NTZXJ2aWNlLm1ldHJpY3NDb25maWd1cmF0aW9uO1xuXG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtbWV0cmljcy1sZXZlbCcpIGFzIFRlbGVtZXRyeUxldmVsVHlwZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwoVGVsZW1ldHJ5TGV2ZWxbdmFsdWVdKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwgPSBTREsuX3RlbGVtZXRyeUxldmVsLnN1YnNjcmliZSh0ZWxlbWV0cnlMZXZlbCA9PiB7XG4gICAgICBNZXRyaWNzRmFjdG9yeS5zZXRUZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZScpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJldHJ5IG9uIGZhaWx1cmUgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcycpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdTa2lwIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBtb2JpbGUgZGV2aWNlcyBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgU0RLLmRpc2NvdmVyeVVyaS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLnRlbGVtZXRyeVVybC52YWx1ZSA9IFNESy5nZXRUZWxlbWV0cnlVcmwodmFsdWUpO1xuICAgICAgU0RLLl9lbnZpcm9ubWVudC52YWx1ZSA9IEVudmlyb25tZW50LmdldEVudmlyb25tZW50RnJvbVVybCh2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjaGFubmVsVG9rZW4gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtY2hhbm5lbC10b2tlbicpO1xuXG4gICAgaWYgKGNoYW5uZWxUb2tlbikge1xuICAgICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbihjaGFubmVsVG9rZW4pO1xuXG4gICAgICBTREsuX3RlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeTtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1cmlWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC11cmknKTtcblxuICAgIGlmICh1cmlWYWx1ZSkge1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaVZhbHVlO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtdXJpXCIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGFnIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VVUklWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1iYXNlLXVyaScpO1xuXG4gICAgaWYgKGJhc2VVUklWYWx1ZSkge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGUgPSBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpLnZhbHVlO1xuICAgICAgY29uc3QgdXJpID0gbmV3IGdsb2JhbFNjb3BlLlVSTChiYXNlVVJJVmFsdWUpO1xuXG4gICAgICB1cmkucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gdXJpLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBcInBoZW5peC1iYXNlLXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgb25Mb2FkKGdsb2JhbFNjb3BlOiBJR2xvYmFsU2NvcGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pbml0aWFsaXplZC52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1NESyBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZ2xvYmFsU2NvcGUuYWRkV2luZG93RXZlbnRMaXN0ZW5lcigndW5sb2FkJywgKCkgPT4ge1xuICAgICAgU0RLLmRpc3Bvc2UoKTtcbiAgICB9KTtcblxuICAgIFNESy5hcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpO1xuICAgIFNESy5hcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk7XG4gICAgU0RLLmFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpO1xuXG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBuZXcgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IoKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJldHJ5IG9uIGZhaWx1cmUgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdTa2lwIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBtb2JpbGUgZGV2aWNlcyBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyk7XG5cbiAgICB0aGlzLl9pbml0aWFsaXplZC52YWx1ZSA9IHRydWU7XG4gIH1cblxuICBzdGF0aWMgaW5pdChvcHRpb25zPzogSUluaXRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlOiBJSW5pdE9wdGlvbnMgJiB7Z2xvYmFsU2NvcGU/OiBJUHJvdmlkZWRHbG9iYWxTY29wZX0gPSBvcHRpb25zO1xuXG4gICAgaWYgKG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZS5nbG9iYWxTY29wZSkge1xuICAgICAgR2xvYmFsU2NvcGUuc2V0SW5zdGFuY2Uob3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlLmdsb2JhbFNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5kaXNjb3ZlcnlVcmkpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBvcHRpb25zLmRpc2NvdmVyeVVyaTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpIHtcbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUgPSBvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCAmJiBUZWxlbWV0cnlMZXZlbFtvcHRpb25zLnRlbGVtZXRyeUxldmVsXSkge1xuICAgICAgU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSA9IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbChvcHRpb25zLnRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5sb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMubG9nZ2luZ0xldmVsXSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLnRocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMubG9nZ2luZ0xldmVsKSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAmJiBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsXSkge1xuICAgICAgY29uc3QgY29uc29sZUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgQ29uc29sZUFwcGVuZGVyKTtcblxuICAgICAgaWYgKGNvbnNvbGVBcHBlbmRlcikge1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZShjb25zb2xlQXBwZW5kZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICE9PSAnT2ZmJykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwpKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9IG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLndlYlBsYXllckxvYWRlcikge1xuICAgICAgdGhpcy5fd2ViUGxheWVyTG9hZGVyID0gb3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXIpIHtcbiAgICAgIHRoaXMuX3NoYWthUGxheWVyTG9hZGVyID0gb3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5obHNKc0xvYWRlcikge1xuICAgICAgdGhpcy5faGxzSnNMb2FkZXIgPSBvcHRpb25zLmhsc0pzTG9hZGVyO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIFNESy5faW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcj8uZGlzcG9zZSgpO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRUZWxlbWV0cnlVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBUZWxlbWV0cnlVcmwuZ2V0VGVsZW1ldHJ5VXJsKHVybCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5HbG9iYWxTY29wZS5zdWJzY3JpYmUoU0RLLm9uTG9hZC5iaW5kKFNESykpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5VXJsIHtcbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG4gICAgICBjb25zdCBzZWdtZW50cyA9IGJhc2VVUkwuaG9zdG5hbWUuc3BsaXQoJy4nKTtcblxuICAgICAgc3dpdGNoIChiYXNlVVJMLnByb3RvY29sKSB7XG4gICAgICAgIGNhc2UgJ3dzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwOic7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd3NzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwczonO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMiB8fFxuICAgICAgICAgIChzZWdtZW50cy5sZW5ndGggPT09IDMgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMl0ubGVuZ3RoIDw9IDIgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV0ubGVuZ3RoIDw9IDMpXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudHMudW5zaGlmdCgndGVsZW1ldHJ5Jyk7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ3N0Zy0nKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLXN0ZycpIHx8IHNlZ21lbnRzWzBdLmluY2x1ZGVzKCctc3RnLScpIHx8IHNlZ21lbnRzWzBdID09PSAnc3RnJykge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnktc3RnJztcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnbG9jYWwnKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLWxvY2FsJykpIHtcbiAgICAgICAgLy8gTGVhdmUgVVJMIHVuY2hhbmdlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5JztcbiAgICAgIH1cblxuICAgICAgYmFzZVVSTC5ob3N0bmFtZSA9IHNlZ21lbnRzLmpvaW4oJy4nKTtcblxuICAgICAgcmV0dXJuIGAke2Jhc2VVUkwub3JpZ2lufS90ZWxlbWV0cnlgO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgdHlwZSBCaXRyYXRlU3RhdGVUeXBlID0gJ0tlZXAnIHwgJ1Jlc2V0JztcbmV4cG9ydCB0eXBlIEJpdHJhdGVNb2RlVHlwZSA9ICdOb3JtYWwnIHwgJ0ZvcmNlJyB8ICdSZXNldCc7XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVTdGF0ZSB7XG4gIEtlZXAsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVNb2RlIHtcbiAgTm9ybWFsLFxuICBGb3JjZSxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUge1xuICBhcGlWZXJzaW9uOiBudW1iZXI7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbiAgYml0cmF0ZUluQml0c1BlclNlY29uZDogbnVtYmVyO1xuICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZVR5cGU7XG4gIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZVR5cGU7XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcblxuZXhwb3J0IHR5cGUgUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyA9IHtcbiAgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlZXJDb25uZWN0aW9uQ29udGV4dCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ6IGJvb2xlYW47XG4gIG1lZGlhU3RyZWFtOiBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBvcHRpb25zLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ7XG4gICAgdGhpcy5tZWRpYVN0cmVhbSA9IG5ldyBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZVBlZXJDb25uZWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHBlZXJDb25uZWN0aW9uID0gdGhpcy5wZWVyQ29ubmVjdGlvbi52YWx1ZTtcblxuICAgIGlmICghcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgIGlmICh0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KSB7XG4gICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRpc3Bvc2VNZWRpYVN0cmVhbSgpOiB2b2lkIHtcbiAgICB0aGlzLm1lZGlhU3RyZWFtLnZhbHVlPy5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgdGhpcy5tZWRpYVN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0ZUNvbnRleHQge1xuICBpc1N0YXJ0aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBpc0Rpc3Bvc2VkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNTdGFydGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRGlzcG9zZWQgPSBmYWxzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2tlbkNvbnRleHQge1xuICB0b2tlbjogU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPjtcbiAgdG9rZW5FeHBpcmluZzogU3ViamVjdDxib29sZWFuPjtcblxuICBjb25zdHJ1Y3Rvcih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMudG9rZW4gPSBuZXcgU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPih0b2tlbik7XG4gICAgdGhpcy50b2tlbkV4cGlyaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0RGlzY292ZXJ5VXJpID0gJ2h0dHBzOi8vcGNhc3QucGhlbml4cnRzLmNvbS9wY2FzdC9lbmRQb2ludHMnO1xuXG5leHBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZU1vZGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlTW9kZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlKTogQml0cmF0ZU1vZGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVNb2RlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLk5vcm1hbDpcbiAgICAgICAgcmV0dXJuICdOb3JtYWwnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Gb3JjZTpcbiAgICAgICAgcmV0dXJuICdGb3JjZSc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVNb2RlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Qml0cmF0ZVN0YXRlLCBCaXRyYXRlU3RhdGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlU3RhdGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUpOiBCaXRyYXRlU3RhdGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVTdGF0ZSkge1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuS2VlcDpcbiAgICAgICAgcmV0dXJuICdLZWVwJztcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVTdGF0ZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc2NvdmVyeVNlcnZpY2UgZnJvbSAnLi9EaXNjb3ZlcnlTZXJ2aWNlJztcbmltcG9ydCBFbmRQb2ludCBmcm9tICcuL0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcblxuY29uc3QgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCA9IDYwMDAwO1xuXG5pbnRlcmZhY2UgSVBlclVSSUVuZHBvaW50IHsgW3g6IHN0cmluZ106IFByb21pc2U8RW5kUG9pbnQ+IH1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlOiBJUGVyVVJJRW5kcG9pbnQgPSB7fTtcblxuICBzdGF0aWMgYXN5bmMgcHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxFbmRQb2ludD4ocmVzb2x2ZUVuZFBvaW50UHJvbWlzZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgZ2xvYmFsU2NvcGUuVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpXG4gICAgICAgICAgLnRoZW4ocmVzb2x2ZUVuZFBvaW50UHJvbWlzZSlcbiAgICAgICAgICAudGhlbigoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmk6IFVSTCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmICh1cmwgaW4gRGlzY292ZXJ5Ll9jYWNoZSkge1xuICAgICAgcmV0dXJuIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG5cbiAgICBjb25zdCBkaXNjb3ZlcnlTZXJ2aWNlID0gbmV3IERpc2NvdmVyeVNlcnZpY2UodXJpKTtcbiAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9IGRpc2NvdmVyeVNlcnZpY2UuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQoKTtcbiAgICBjb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3QgaWdub3JlZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID09PSBjYWNoZWRWYWx1ZSkge1xuICAgICAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgICAgIH1cbiAgICAgIH0sIGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwpO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gIH1cblxuICBzdGF0aWMgY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpOiBVUkwpOiB2b2lkIHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmICh1cmwgaW4gRGlzY292ZXJ5Ll9jYWNoZSkge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5jb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5LnByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkZWZhdWx0VGltZW91dCA9IDIwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0Rpc2NvdmVyeScpO1xuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgX3VyaTogVVJMO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogVVJMKSB7XG4gICAgaWYgKCF1cmkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHVyaScpO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UodXJpLnRvU3RyaW5nKCkpO1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKHVyaTogVVJMLCB0aW1lb3V0OiBudW1iZXIpOiBQcm9taXNlPEVuZFBvaW50W10+IHtcbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHRpbWVvdXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRGlzY292ZXJ5IHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGltZW91dCkpXG4gICAgXSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UuYm9keSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIHdpdGggbm8gZGF0YSBbJHt1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzU3RyaW5nID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGFzU3RyaW5nLnNwbGl0KCcsJyk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBuZXcgRW5kUG9pbnQoZW5kUG9pbnQsIHRpbWVvdXQpKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KHRpbWVvdXQ6IG51bWJlciA9IGRlZmF1bHRUaW1lb3V0KTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IERpc2NvdmVyeVVyaS5idWlsZERpc2NvdmVyeVVybCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGF3YWl0IHRoaXMuZGlzY292ZXJOZWFyYnlFbmRQb2ludHMobmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpLCB0aW1lb3V0KTtcbiAgICBsZXQgZmFpbGVkUmVxdWVzdHMgPSAwO1xuICAgIGNvbnN0IHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkID0gKCk6IFByb21pc2U8dm9pZD4gPT4gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKGZhaWxlZFJlcXVlc3RzID49IGVuZFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmVqZWN0KGBEaXNjb3Zlcnkgb2YgWyR7ZW5kUG9pbnRzLmxlbmd0aH1dIGVuZHBvaW50cyBmcm9tIFske3VybH1dIGZhaWxlZCwgcHJldmVudGluZyBpdCBmcm9tIGNvbXBsZXRpbmdgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBlbmRQb2ludCA9IGF3YWl0IFByb21pc2UucmFjZShlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IGVuZFBvaW50XG4gICAgICAucGluZygpXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdGYWlsZWQgdG8gcGluZyBlbmQgcG9pbnQgWyVzXScsIGVuZFBvaW50LCBlKTtcblxuICAgICAgICBmYWlsZWRSZXF1ZXN0cysrO1xuXG4gICAgICAgIHJldHVybiBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCgpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHRpbWUgPT4ge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcmVkIGVuZCBwb2ludCBbJXNdIHdpdGggdGltZSBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSwgdGltZSk7XG4gICAgICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICAgICAgcnVudGltZTogKG5vdyAtIFNESy5wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgICAgICB2YWx1ZToge3VpbnQ2NDogdGltZSB8fCAwfSxcbiAgICAgICAgICByZXNvdXJjZTogZW5kUG9pbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBraW5kOiAncGluZydcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50O1xuICAgICAgfSkpKTtcblxuICAgIHJldHVybiBlbmRQb2ludDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9IGZyb20gJy4uL2RlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5VXJpIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Rpc2NvdmVyeVVyaTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPihkZWZhdWx0RGlzY292ZXJ5VXJpKTtcblxuICBzdGF0aWMgZ2V0IHVyaSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBEaXNjb3ZlcnlVcmkuX2Rpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZERpc2NvdmVyeVVybCh1cmk6IFVSTCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmkudG9TdHJpbmcoKSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIGlmICh1cmwucGF0aG5hbWUgPT09ICcvJykge1xuICAgICAgdXJsLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgIH1cblxuICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnlVcmkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5pbXBvcnQge1xuICBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlLFxuICBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Rcbn0gZnJvbSAnLi4vYXBpL1N1YnNjcmliZSc7XG5pbXBvcnQge0lTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QsIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlfSBmcm9tICcuLi9hcGkvU2V0UmVtb3RlRGVzY3JpcHRpb24nO1xuaW1wb3J0IHtJRGVzdHJveVN0cmVhbVJlcXVlc3QsIElEZXN0cm95U3RyZWFtUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9EZXN0cm95U3RyZWFtJztcbmltcG9ydCB7SUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0LCBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlfSBmcm9tICcuLi9hcGkvQWRkSWNlQ2FuZGlkYXRlcyc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVTdGF0ZSwgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEJpdHJhdGVNb2RlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVNb2RlTWFwcGluZyc7XG5pbXBvcnQgQml0cmF0ZVN0YXRlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVTdGF0ZU1hcHBpbmcnO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IHtcbiAgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2UsXG4gIElQdWJsaXNoV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVB1Ymxpc2hXaXRob3V0T2ZmZXJSZXF1ZXN0LFxuICBQdWJsaXNoU3RhdHVzXG59IGZyb20gJy4uL2FwaS9QdWJsaXNoJztcblxuY29uc3QgYXBpVmVyc2lvbiA9IDc7XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZVN0YXR1cyA9ICdvaycgfCAnbm8tc3RyZWFtJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFJlbW92ZVRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgRGVzdHJveVN0cmVhbVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW0ge1xuICBzdHJlYW1JZDogc3RyaW5nO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiAnb2snO1xuICBzdHJlYW06IElTdHJlYW07XG4gIGxhZzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sge1xuICAocmVxdWVzdDogSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QgfCBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sge1xuICAocmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVPcHRpb25zID0ge1xuICBvblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnPzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ25vdC1mb3VuZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbn07XG5cbmludGVyZmFjZSBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzO1xuICBzZXNzaW9uRGVzY3JpcHRpb24/OiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5pbnRlcmZhY2UgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXM7XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXM7XG59XG5cbmludGVyZmFjZSBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5kUG9pbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRW5kUG9pbnQnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXJpOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVvdXQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfcm91bmRUcmlwVGltZTogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcih1cmk6IHN0cmluZywgdGltZW91dDogbnVtYmVyKSB7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICAgIHRoaXMuX3RpbWVvdXQgPSB0aW1lb3V0O1xuXG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVuZCBwb2ludCByZXF1aXJlcyBhIHRpbWVvdXRgKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcm91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEVuZFBvaW50W3VyaT0ke3RoaXMuX3VyaX1dYDtcbiAgfVxuXG4gIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkUGluZ1VybCgpO1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+XG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgUGluZyB0aW1lZCBvdXQgWyR7dXJsfV1gKSksIHRoaXMuX3RpbWVvdXQpKVxuICAgIF0pO1xuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHsgLyogSGFuZGxlICovXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBpbmcgZmFpbGVkIFske3VybH1dIFske3Jlc3BvbnNlLnN0YXR1c31dYCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcm91bmRUcmlwVGltZSA9IGZpbmlzaGVkIC0gc3RhcnQ7XG5cbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIGFzeW5jIHN1YnNjcmliZSh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQgfCBudWxsLCBmYWlsdXJlQ291bnQ6IG51bWJlciwgb3B0aW9uczogU3Vic2NyaWJlT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdGVuYW5jeSA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnRlbmFuY3k7XG5cbiAgICBpZiAoIXRlbmFuY3kpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAndW5hdXRob3JpemVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbdGVuYW5jeSwgJ3N0cmVhbScsICdzdWJzY3JpYmUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGxldCByZXF1ZXN0Qm9keTogSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QgfCBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdDtcblxuICAgIGlmIChmYWlsdXJlQ291bnQgPT09IDAgJiYgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuICAgIH1cblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/LihyZXF1ZXN0Qm9keSk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkocmVxdWVzdEJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIG5ldyBFcnJvcihgU3Vic2NyaWJlIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IGpzb25SZXNwb25zZUJvZHkgPSBhd2FpdCB0aGlzLnBhcnNlSnNvbkJvZHk8SVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZT4oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0KGpzb25SZXNwb25zZUJvZHk/LnN0cmVhbVJlc3BvbnNlQ29udGV4dCk7XG5cbiAgICBjb25zdCBzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICBjb25zdCByZXNwb25zZTogSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQgPSB7c3RhdHVzfTtcblxuICAgICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihyZXNwb25zZSk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBpZiAoIWpzb25SZXNwb25zZUJvZHkpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6ICdmYWlsZWQnfTtcblxuICAgICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihyZXNwb25zZSk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2UgPSB0aGlzLm5vcm1hbGl6ZVN1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3ksIGpzb25SZXNwb25zZUJvZHkpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc3Vic2NyaWJlIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHN1YnNjcmliZVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4oc3Vic2NyaWJlUmVzcG9uc2UpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgcHVibGlzaChuYW1lOiBzdHJpbmcsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyKTogUHJvbWlzZTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3B1Ymxpc2gnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgYm9keVdpdGhPZmZlcjogSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhPZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBib2R5V2l0aG91dE9mZmVyOiBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aG91dE9mZmVyKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHVibGlzaCcsIG5ldyBFcnJvcihgUHVibGlzaCB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3QganNvblJlc3BvbnNlQm9keSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZT4oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0KGpzb25SZXNwb25zZUJvZHk/LnN0cmVhbVJlc3BvbnNlQ29udGV4dCk7XG5cbiAgICBjb25zdCBzdGF0dXM6IFB1Ymxpc2hTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBpZiAoIWpzb25SZXNwb25zZUJvZHkpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHB1Ymxpc2hSZXNwb25zZSA9IHRoaXMubm9ybWFsaXplUHVibGlzaFJlc3BvbnNlKHRlbmFuY3ksIGpzb25SZXNwb25zZUJvZHkpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3QgcHVibGlzaCByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBwdWJsaXNoUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHB1Ymxpc2hSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbTogSVN0cmVhbSwgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc2NyaXB0aW9uJywgJ3JlbW90ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbT8uc2hhcmVkU2VjcmV0LFxuICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHR5cGU6IHNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICBzZHA6IHNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24nLCBuZXcgRXJyb3IoYFNldCByZW1vdGUgZGVzY3JpcHRpb24gdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBsaW1pdEJpdHJhdGUoXG4gICAgc3RyZWFtOiBJU3RyZWFtLFxuICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyLFxuICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IEJpdHNQZXJTZWNvbmQsXG4gICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUsXG4gICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlLFxuICApOiBQcm9taXNlPElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnYml0cmF0ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZU1hcHBpbmcuY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGUpLFxuICAgICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZSlcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCBsaW1pdCBiaXRyYXRlIHRpbWVkJywgbmV3IEVycm9yKGBTZXQgbGltaXQgYml0cmF0ZSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgbGltaXQgYml0cmF0ZSB0aW1lZCcsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBzZXQgbGltaXQgYml0cmF0ZSByZXNwb25zZSBbJXNdIGluIFslc10gbXMnLCBzdGF0dXMsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHtzdGF0dXN9O1xuICB9XG5cbiAgYXN5bmMgYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW06IElTdHJlYW0sIGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdLCBkaXNjb3ZlcnlDb21wbGV0ZWQ6IGJvb2xlYW4sIG9wdGlvbnM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdpY2UnLCAnY2FuZGlkYXRlcyddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGNhbmRpZGF0ZXMsXG4gICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQsXG4gICAgICBvcHRpb25zXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgaWNlIGNhbmRpZGF0ZXMnLCBuZXcgRXJyb3IoYEFkZCBpY2UgY2FuZGlkYXRlcyB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgaWNlIGNhbmRpZGF0ZXMnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGFkZCBJQ0UgY2FuZGlkYXRlcyByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3lTdHJlYW0oc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBEZWxldGUgc3RyZWFtIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRlbGV0ZSBzdHJlYW0nLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGRlc3Ryb3kgc3RyZWFtIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGRlc3Ryb3lTdHJlYW1SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveVN0cmVhbU9uVW5tb3VudChzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VuZEJlYWNvbiA9IEdsb2JhbFNjb3BlLnZhbHVlLnNlbmRCZWFjb247XG5cbiAgICBpZiAoIXNlbmRCZWFjb24pIHtcbiAgICAgIHRoaXMuZGVzdHJveVN0cmVhbShzdHJlYW0sIHJlYXNvbikuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gb24gdW5tb3VudCcsIGVycik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBzZW5kQmVhY29uKHVybCwgZm9ybURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFVybChwYXRoOiBzdHJpbmdbXSk6IFVSTCB7XG4gICAgY29uc3QgdXJpID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHBhdGhBc0FycmF5ID0gdXJpLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICBwYXRoQXNBcnJheS5sZW5ndGggPSBwYXRoQXNBcnJheS5sZW5ndGggLSAxO1xuXG4gICAgdXJpLnBhdGhuYW1lID0gcGF0aEFzQXJyYXkuY29uY2F0KC4uLnBhdGgpLmpvaW4oJy8nKTtcblxuICAgIHJldHVybiB1cmk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGluZ1VybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndHlwZScsICdodHRwJyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIHJldHVybiB1cmkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcGFyc2VKc29uQm9keTxUPihyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEV4cGVjdGVkIGZvciByZXNwb25zZXMgd2l0aG91dCBhIEpTT04gYm9keSAodGltZW91dCwgZW1wdHkgZXJyb3IgcmVzcG9uc2VzKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVN0cmVhbVJlc3BvbnNlQ29udGV4dChjb250ZXh0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnc3RyZWFtIHJlc3BvbnNlIGNvbnRleHQgWyVqXScsIGNvbnRleHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFB1Ymxpc2hTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA2OlxuICAgICAgICByZXR1cm4gJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFN1YnNjcmliZVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBEZXN0cm95U3RyZWFtU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVTdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIGRhdGE6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2UpOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB7XG4gICAgY29uc3Qge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBzaGFyZWRTZWNyZXQsXG4gICAgICBsYWcsXG4gICAgICBydGNDb25maWd1cmF0aW9uLFxuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2VcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldFxuICAgICAgfSxcbiAgICAgIGxhZ1xuICAgIH07XG5cbiAgICBpZiAocnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGlmIChzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplUHVibGlzaFJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgZGF0YTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2UpOiBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICAgIGNvbnN0IHB1Ymxpc2hSZXNwb25zZTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIHN0cmVhbToge1xuICAgICAgICB0ZW5hbmN5LFxuICAgICAgICBzdHJlYW1JZDogZGF0YS5zdHJlYW1JZCxcbiAgICAgICAgc2hhcmVkU2VjcmV0OiBkYXRhLnNoYXJlZFNlY3JldFxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoZGF0YS5ydGNDb25maWd1cmF0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGRhdGEucnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2Uuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHVibGlzaFJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gPSB7aWNlU2VydmVyczogW119O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSA9IGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPSBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgICAgdXJsczogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHMsXG4gICAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5ID0gY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5ID0gY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5O1xuICAgIH1cblxuICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uO1xuICB9XG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24ocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIGlmIChkYXRhICYmIGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiA9IGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlOiBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEub3B0aW9ucykge1xuICAgICAgICBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2Uub3B0aW9ucyA9IGRhdGEub3B0aW9ucztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElEZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbTogSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbX0gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpY30gZnJvbSAnLi4vLi4vcnRjL1J0Y1B1Ymxpc2hNb25pdG9yJztcbmltcG9ydCBQdWJsaXNoZXJTdGF0ZSBmcm9tICcuL1B1Ymxpc2hlclN0YXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNlc3Npb25UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vU2Vzc2lvblRlbGVtZXRyeSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuXG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuaW1wb3J0IFRva2VuQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1Rva2VuQ29udGV4dCc7XG5pbXBvcnQgUHVibGlzaGVyQ29udGV4dCBmcm9tICcuL1B1Ymxpc2hlckNvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCwge1BlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnN9IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdGF0ZUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdGF0ZUNvbnRleHQnO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgUmVhbFRpbWVQdWJsaXNoZXIgZnJvbSAnLi9SZWFsVGltZVB1Ymxpc2hlcic7XG5cbmNvbnN0IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiA9ICdjbGllbnQ6dGVybWluYXRpb24nO1xuY29uc3QgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMgPSAzMDAwO1xuY29uc3Qgc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMTUwMDA7XG5jb25zdCBvbmVIb3VySW5NaWxsaXNlY29uZHMgPSAzNjAwICogMTAwMDtcbmNvbnN0IG1heFJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDIgKiBvbmVIb3VySW5NaWxsaXNlY29uZHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1Ymxpc2hlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1B1Ymxpc2hlcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbkNvbnRleHQ6IFRva2VuQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHVibGlzaGVyQ29udGV4dDogUHVibGlzaGVyQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlQ29udGV4dDogU3RhdGVDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHBvbmVudGlhbEJhY2tvZmY6IEV4cG9uZW50aWFsQmFja29mZjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHVibGlzaGVyU3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5VG9rZW46IFJlYWRPbmx5U3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YXRlOiBSZWFkT25seVN1YmplY3Q8UHVibGlzaGVyU3RhdGU+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuRXhwaXJpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRob3JpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5T25saW5lOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TG9hZGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVB1Ymxpc2hpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGFuZGJ5OiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RvcHBlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUZhaWx1cmVDb3VudDogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RW5kUG9pbnQ6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSdGNTdGF0aXN0aWNzOiBSZWFkT25seVN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TWVkaWFTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+O1xuXG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvblRlbGVtZXRyeTogU2Vzc2lvblRlbGVtZXRyeTtcblxuICBjb25zdHJ1Y3RvcihtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0sIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBuYW1lPzogc3RyaW5nKSB7XG4gICAgY29uc3QgcGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9uczogUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyA9IHtmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0OiBTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydH07XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQgPSBuZXcgVG9rZW5Db250ZXh0KHRva2VuKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0ID0gbmV3IFB1Ymxpc2hlckNvbnRleHQobmFtZSk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gbmV3IFBlZXJDb25uZWN0aW9uQ29udGV4dChwZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQgPSBuZXcgU3RhdGVDb250ZXh0KCk7XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuX3B1Ymxpc2hlclN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8c3RyaW5nPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4pO1xuICAgIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGF0ZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8UHVibGlzaGVyU3RhdGU+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUpO1xuICAgIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5hdXRob3JpemVkKTtcbiAgICB0aGlzLl9yZWFkT25seU9ubGluZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5vbmxpbmUpO1xuICAgIHRoaXMuX3JlYWRPbmx5TG9hZGluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVB1Ymxpc2hpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGFuZGJ5ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YW5kYnkpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RvcHBlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdG9wcGVkKTtcbiAgICB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudCA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudCk7XG4gICAgdGhpcy5fcmVhZE9ubHlFbmRQb2ludCA9IG5ldyBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50KTtcbiAgICB0aGlzLl9yZWFkT25seVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtKTtcbiAgICB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucnRjU3RhdGlzdGljcyk7XG4gICAgdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0pO1xuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbWVkaWFTdHJlYW07XG5cbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSk7XG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG4gICAgdGhpcy5fc2Vzc2lvblRlbGVtZXRyeSA9IG5ldyBTZXNzaW9uVGVsZW1ldHJ5KFNESy5wYWdlTG9hZFRpbWUsIHRoaXMuX21ldHJpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmFkZCh0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5KTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpIHtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fcHVibGlzaGVyQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZSAhPT0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB9LCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyk7XG4gICAgICB9KSk7XG5cbiAgICBjb25zdCBkZXN0cm95U3RyZWFtT25Vbm1vdW50ID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUpIHtcbiAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbU9uVW5tb3VudCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSwgJ2NsaWVudDp0ZXJtaW5hdGlvbi1vbi13aW5kb3ctdW5sb2FkJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgZ2V0IHRva2VuKCk6IEVuY29kZWRFZGdlVG9rZW4ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gIH1cblxuICBzZXQgdG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSA9IHRva2VuO1xuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSk7XG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoZGlzY292ZXJ5VXJpKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCBwZWVyQ29ubmVjdGlvbigpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IFJlYWRPbmx5U3ViamVjdDxQdWJsaXNoZXJTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YXRlO1xuICB9XG5cbiAgZ2V0IHRva2VuRXhwaXJpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nO1xuICB9XG5cbiAgZ2V0IGF1dGhvcml6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkO1xuICB9XG5cbiAgZ2V0IG9ubGluZSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seU9ubGluZTtcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TG9hZGluZztcbiAgfVxuXG4gIGdldCBwdWJsaXNoaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UHVibGlzaGluZztcbiAgfVxuXG4gIGdldCBzdGFuZGJ5KCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhbmRieTtcbiAgfVxuXG4gIGdldCBzdG9wcGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RvcHBlZDtcbiAgfVxuXG4gIGdldCBmYWlsdXJlQ291bnQoKTogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudDtcbiAgfVxuXG4gIGdldCBlbmRQb2ludCgpOiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQ7XG4gIH1cblxuICBnZXQgc3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0cmVhbTtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkO1xuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpY3MoKTogUmVhZE9ubHlTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzO1xuICB9XG5cbiAgZ2V0IG1lZGlhU3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AocmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcblxuICAgICAgICByZXNvbHZlKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZCh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy5zdWJzY3JpYmUoaXNTdGFydGluZyA9PiB7XG4gICAgICAgIGlmICghaXNTdGFydGluZykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N0b3AocmVhc29uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMocmVhc29uKTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUpIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZS5jbG9zZSgpO1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuU3RvcHBlZDtcbiAgfVxuXG4gIGFzeW5jIGRpc3Bvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcCgnY2xpZW50OmNoYW5uZWwtZGlzcG9zZScpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRVcmkodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBVUkwge1xuICAgIGNvbnN0IHVybCA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnVyaTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBkaXNjb3ZlciBVUkkgWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG4gIH1cblxuICBhc3luYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBhbHJlYWR5IHN0YXJ0aW5nLCBza2lwcGluZyBzdGFydCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc1N0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NTdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6c3RhcnQnKTtcblxuICAgIGNvbnN0IHRva2VuOiBFbmNvZGVkRWRnZVRva2VuID0gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICAgIGNvbnN0IGxpc3Rlbk9uU3RyZWFtU2V0dXAgPSB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5Lmxpc3Rlbk9uU3RyZWFtU2V0dXAoKTtcblxuICAgIGlmICghRWRnZUF1dGhQYXJzZXIuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICBjb25zdCB1cmkgPSB0aGlzLmdldFVyaSh0b2tlbik7XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHN0YXRlID09PSBQdWJsaXNoZXJTdGF0ZS5FcnJvciB8fCBzdGF0ZSA9PT0gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZykge1xuICAgICAgICAgIERpc2NvdmVyeS5jbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmkpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2s6ICgpID0+IFByb21pc2U8dm9pZD4gPSAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk6IHZvaWQgPT4ge1xuICAgICAgLy8gTmVlZCB0byBzZXQgaXNTdGFydGluZyB0byBmYWxzZSBhbmQgY2FsbCBoYW5kbGVTdHJlYW1GYWlsdXJlIGlmIHN0cmVhbSBtb25pdG9ycyBmb3VuZCBhbiBpc3N1ZVxuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKCkpO1xuICAgIH0pO1xuICAgIGNvbnN0IHN0cmVhbVB1Ymxpc2hlciA9IG5ldyBSZWFsVGltZVB1Ymxpc2hlcih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayk7XG5cbiAgICByZXR1cm4gc3RyZWFtUHVibGlzaGVyLnN0YXJ0KFxuICAgICAgdXJpLFxuICAgICAgdG9rZW4sXG4gICAgICBsaXN0ZW5PblN0cmVhbVNldHVwKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAuZmFpbCgpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKys7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5vbmxpbmUudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMoJ2NsaWVudDpjbGVhbnVwLWFmdGVyLWZhaWxlZC1zZXR1cCcpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5DbGllbnRTdGFydEVycm9yO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IHB1Ymxpc2hpbmcnLCBlKTtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPT09IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmcgfHwgIVNESy5hdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSkge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyA9IDA7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCB0aGlzLmdldFJldHJ5SW50ZXJ2YWwoKSk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldE1lZGlhU3RyZWFtKG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSkge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG1lZGlhU3RyZWFtO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSkge1xuICAgICAgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaChtZWRpYVRyYWNrID0+IHtcbiAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlPy5nZXRTZW5kZXJzKCkuZm9yRWFjaChzZW5kZXIgPT4ge1xuICAgICAgICAgIGlmIChtZWRpYVRyYWNrLmtpbmQgPT09IHNlbmRlcj8udHJhY2s/LmtpbmQgJiYgbWVkaWFUcmFjay5pZCAhPT0gc2VuZGVyLnRyYWNrLmlkKSB7XG4gICAgICAgICAgICBzZW5kZXIucmVwbGFjZVRyYWNrKG1lZGlhVHJhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFJldHJ5SW50ZXJ2YWwoKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuT2ZmbGluZTpcbiAgICAgICAgcmV0dXJuIHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcztcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RvcHBlZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICAvLyBGaXJzdCBhbmQgc2Vjb25kIGF0dGVtcHQgZmFzdCwgYWZ0ZXIgdGhhdCBleHBvbmVudGlhbCB3aXRoIGJhY2tvZmYgaW50ZXJ2YWxcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTdHJlYW1GYWlsdXJlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCByZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsID0gMDtcblxuICAgIHN3aXRjaCAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5PZmZsaW5lOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgaWYgKCF0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMpIHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCA9IERhdGUubm93KCkgLSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHM7XG5cbiAgICAgICAgaWYgKG1heFJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA8PSByZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBzdG9wcGVkIHdpdGggc3RhdGUgWyVzXSBbJXNdIGFmdGVyIGV4Y2VlZGluZyB0aW1lb3V0JywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSwgUHVibGlzaGVyU3RhdGVbdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JldHJ5IHN0YXJ0IHdpdGggaW5pdGlhbCBzdGF0ZSBbJXNdIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlLCBQdWJsaXNoZXJTdGF0ZVt0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyB1bmF1dGhvcml6ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgZ2VvIHJlc3RyaWN0ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgZ2VvIGJsb2NrZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0b3BwZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHB1Ymxpc2hpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgaW5pdGlhbGl6aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkIGR1ZSB0byB1bnN1cHBvcnRlZCBmZWF0dXJlLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHN0b3BwZWQgZHVlIHRvIGNoYW5uZWwgbm90IGZvdW5kLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkIGR1ZSB0byBjb25maWd1cmF0aW9uIGVycm9yLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhblVwUmVzb3VyY2VzKHJlYXNvbjogc3RyaW5nID0gZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uKTogdm9pZCB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LmRpc3Bvc2VQZWVyQ29ubmVjdGlvbigpO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdG9wcGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YW5kYnkudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlLCByZWFzb24pXG4gICAgICAgIC50aGVuKCh7c3RhdHVzfSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIERlc3Ryb3llZCBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtJywgdGhpcy5zdHJlYW1JZCwgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuaW1wb3J0IEVuZFBvaW50LCB7XG4gIElTdHJlYW0sXG4gIEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMsXG4gIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzXG59IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgU3RyaW5ncyBmcm9tICcuLi8uLi9sYW5nL1N0cmluZ3MnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IHtJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNQdWJsaXNoTW9uaXRvcic7XG5pbXBvcnQge1B1Ymxpc2hTdGF0dXN9IGZyb20gJy4uL2FwaS9QdWJsaXNoJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHVibGlzaGVyQ29udGV4dCB7XG4gIHB1Ymxpc2hlckluaXRpYWxpemF0aW9uOiBEYXRlO1xuICBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHB1Ymxpc2hlckRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgc3RhdGU6IFN1YmplY3Q8UHVibGlzaGVyU3RhdGU+O1xuICBhdXRob3JpemVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBvbmxpbmU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGxvYWRpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1Ymxpc2hpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0YW5kYnk6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0b3BwZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGZhaWx1cmVDb3VudDogU3ViamVjdDxudW1iZXI+O1xuICBlbmRQb2ludDogU3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBzdHJlYW06IFN1YmplY3Q8SVN0cmVhbSB8IG51bGw+O1xuICBydGNTdGF0aXN0aWNzOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+O1xuICBjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQ6IG51bWJlcjtcbiAgc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZT86IHN0cmluZykge1xuICAgIHRoaXMuZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLnB1Ymxpc2hlckRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5wdWJsaXNoZXJJbml0aWFsaXphdGlvbiA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5zdGF0ZSA9IG5ldyBTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPihQdWJsaXNoZXJTdGF0ZS5Jbml0aWFsaXppbmcpO1xuICAgIHRoaXMuYXV0aG9yaXplZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMub25saW5lID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5sb2FkaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMucHVibGlzaGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnN0YW5kYnkgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdG9wcGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuZmFpbHVyZUNvdW50ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigwKTtcbiAgICB0aGlzLmVuZFBvaW50ID0gbmV3IFN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnN0cmVhbSA9IG5ldyBTdWJqZWN0PElTdHJlYW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnJ0Y1N0YXRpc3RpY3MgPSBuZXcgU3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCA9IDA7XG4gICAgdGhpcy5uYW1lID0gbmFtZSAmJiBuYW1lLmxlbmd0aCA/IG5hbWUgOiB0aGlzLmdlbmVyYXRlU2NyZWVuTmFtZSgpO1xuICAgIHRoaXMuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyA9IDA7XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLnN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghc3RyZWFtKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJlYW0uc3RyZWFtSWQ7XG4gIH1cblxuICBhcHBseVB1Ymxpc2hTdGF0dXMoc3RhdHVzOiBQdWJsaXNoU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgdGhpcy5hcHBseVVuYXV0aG9yaXplZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuYXBwbHlOb3RGb3VuZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhcHBseVNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICB0aGlzLmFwcGx5VW5hdXRob3JpemVkKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgdGhpcy5hcHBseU5vdEZvdW5kKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5hcHBseVVuaGFuZGxlZEVycm9yKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICB0aGlzLmFwcGx5VW5hdXRob3JpemVkKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgdGhpcy5hcHBseU5vdEZvdW5kKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5hcHBseVVuaGFuZGxlZEVycm9yKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIG1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXM6IFB1Ymxpc2hTdGF0dXMpOiBQdWJsaXNoZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kO1xuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuR2VvUmVzdHJpY3RlZDtcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkdlb0Jsb2NrZWQ7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJzpcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBhcHBseVVuaGFuZGxlZEVycm9yKCk6IHZvaWQge1xuICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlKys7XG4gICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBhcHBseVVuYXV0aG9yaXplZCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBhcHBseU5vdEZvdW5kKCk6IHZvaWQge1xuICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICB0aGlzLnB1Ymxpc2hpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVTY3JlZW5OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZ3MucmFuZG9tKDEyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZW51bSBQdWJsaXNoZXJTdGF0ZSB7XG4gIEluaXRpYWxpemluZyA9IDAsXG4gIE9mZmxpbmUgPSAxLFxuICBTdGFydGluZyA9IDIsXG4gIFB1Ymxpc2hpbmcgPSAzLFxuICBSZWNvdmVyaW5nID0gNCxcbiAgUmVjb25uZWN0aW5nID0gNSxcbiAgU3RvcHBlZCA9IDYsXG4gIFVuYXV0aG9yaXplZCA9IDcsXG4gIEdlb1Jlc3RyaWN0ZWQgPSA4LFxuICBHZW9CbG9ja2VkID0gOSxcbiAgVW5zdXBwb3J0ZWRGZWF0dXJlID0gMTAsXG4gIE5vdEZvdW5kID0gMTEsXG4gIENvbmZpZ3VyYXRpb25FcnJvciA9IDEyLFxuICBUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IgPSAxMyxcbiAgQ29ubmVjdGlvbkVycm9yID0gMTQsXG4gIENsaWVudFN0YXJ0RXJyb3IgPSAxNSxcbiAgRXJyb3IgPSAxNlxufVxuXG5leHBvcnQgZGVmYXVsdCBQdWJsaXNoZXJTdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQgUHVibGlzaGVyIGZyb20gJy4vUHVibGlzaGVyJztcblxudHlwZSBDcmVhdGVQdWJsaXNoZXJPcHRpb25zID0ge1xuICBtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW07XG4gIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuO1xuICBuYW1lPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHVibGlzaGVycyB7XG4gIHN0YXRpYyBjcmVhdGVQdWJsaXNoZXIob3B0aW9uczogQ3JlYXRlUHVibGlzaGVyT3B0aW9ucyk6IFB1Ymxpc2hlciB7XG4gICAgaWYgKCFTREsuaW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIG5vdCBsb2FkZWQuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQdWJsaXNoZXIob3B0aW9ucy5tZWRpYVN0cmVhbSwgb3B0aW9ucy50b2tlbiwgb3B0aW9ucy5uYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQdWJsaXNoZXJzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtTdHJlYW1TZXR1cExpc3RlbmVyfSBmcm9tICcuLi8uLi9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lcic7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IHtBZGRJY2VDYW5kaWRhdGVzU3RhdHVzLCBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi8uLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFJ0Y1B1Ymxpc2hNb25pdG9yIGZyb20gJy4uLy4uL3J0Yy9SdGNQdWJsaXNoTW9uaXRvcic7XG5cbmltcG9ydCBSdGNDb25maWd1cmF0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXInO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuaW1wb3J0IFB1Ymxpc2hlckNvbnRleHQgZnJvbSAnLi9QdWJsaXNoZXJDb250ZXh0JztcblxuY29uc3QgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwgPSAxMDA7XG5jb25zdCBzb2Z0UmVzdGFydEludGVydmFsID0gMTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVQdWJsaXNoZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUmVhbFRpbWVQdWJsaXNoZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHVibGlzaGVyQ29udGV4dDogUHVibGlzaGVyQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD47XG5cbiAgY29uc3RydWN0b3IocHVibGlzaGVyQ29udGV4dDogUHVibGlzaGVyQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0ID0gcHVibGlzaGVyQ29udGV4dDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBwZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSA9IGhhbmRsZVN0cmVhbUZhaWx1cmU7XG4gIH1cblxuICBzdGFydCh1cmk6IFVSTCwgdG9rZW46IHN0cmluZywgbGlzdGVuT25TdHJlYW1TZXR1cDogU3RyZWFtU2V0dXBMaXN0ZW5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5PZmZsaW5lO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFTdHJlYW0gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIW1lZGlhU3RyZWFtKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1B1Ymxpc2ggZmFpbGVkIG5vIG1lZGlhIHN0cmVhbSBwcm92aWRlZCcpO1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IG1lZGlhVHJhY2tzID0gbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCk7XG4gICAgY29uc3QgdHJhY2tLaW5kcyA9IG1lZGlhVHJhY2tzLnJlZHVjZSgoYWNjdW11bGF0b3I6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSwgdHJhY2spID0+IHtcbiAgICAgIGlmICh0cmFjay5raW5kID09PSAnYXVkaW8nIHx8IHRyYWNrLmtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgYWNjdW11bGF0b3IucHVzaCh0cmFjay5raW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFRyYWNrIGtpbmQgaXMgbm90IHN1cHBvcnRlZCcsIHRyYWNrLmtpbmQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSksXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcignc2VuZG9ubHknLCB0cmFja0tpbmRzKVxuICAgICAgICAudGhlbigoe2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvY2FsT2ZmZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvblxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgXSlcbiAgICAgIC50aGVuKChbZW5kUG9pbnQsIHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn1dKSA9PiB7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQub25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IGVuZFBvaW50O1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ29ubmVjdGluZyB0byBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdMb2NhbCBvZmZlcjpcXG4nICsgbG9jYWxPZmZlci5zZHApO1xuXG4gICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiB8fCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA+IDApIHtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQuZGlzcG9zZVBlZXJDb25uZWN0aW9uKCk7XG5cbiAgICAgICAgICByZXR1cm4gZW5kUG9pbnQucHVibGlzaCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm5hbWUsIHRva2VuLCBudWxsLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQucHVibGlzaCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm5hbWUsIHRva2VuLCBsb2NhbE9mZmVyLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICB9KVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zdCB7c3RhdHVzfSA9IHJlc3BvbnNlO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlQdWJsaXNoU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgJ1slc10gUHVibGlzaCBmYWlsZWQgd2l0aCBzdGF0dXMgWyVzXScsXG4gICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtzdHJlYW0sIHJ0Y0NvbmZpZ3VyYXRpb24sIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZX0gPSByZXNwb25zZTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSA9IHN0cmVhbTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoXG4gICAgICAgICAgJ1slc10gUHVibGlzaCBjb21wbGV0ZWQgWyVzXSBbJWpdIFslal0gWyVqXSBbJWpdJyxcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICBydGNDb25maWd1cmF0aW9uLFxuICAgICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2VcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5tYXBQdWJsaXNoU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5UHVibGlzaFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5UnRjQ29uZmlndXJhdGlvbih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUsIHJ0Y0NvbmZpZ3VyYXRpb24gYXMgUlRDQ29uZmlndXJhdGlvbilcbiAgICAgICAgICAudGhlbihwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgICAgICBsZXQgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQ6IHVuZGVmaW5lZCB8IG51bWJlcjtcbiAgICAgICAgICAgIGxldCBjYW5jZWxEaXNjb3ZlcnkgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBkaXNjb3ZlcnlDb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdID0gW107XG5cbiAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRTdHJlYW0odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlIGFzIE1lZGlhU3RyZWFtKTtcblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghU0RLLnNlbmRMb2NhbENhbmRpZGF0ZXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZS5jYW5kaWRhdGUgJiYgZS5jYW5kaWRhdGUuY2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGUuY2FuZGlkYXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFzdWJtaXRDYW5kaWRhdGVzVGltZW91dCkge1xuICAgICAgICAgICAgICAgIHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZT8uYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW0sIGNhbmRpZGF0ZXMsIGRpc2NvdmVyeUNvbXBsZXRlZClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHtzdGF0dXMsIG9wdGlvbnN9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLm1hcEFkZEljZUNhbmRpZGF0ZXNTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseUFkZEljZUNhbmRpZGF0ZXNTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHBlZXIgY29ubmVjdGlvbiBmYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zPy5pbmNsdWRlcygnY2FuY2VsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbERpc2NvdmVyeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gQWRkZWQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXSBhbmQgb3B0aW9ucyBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcycsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVVuaGFuZGxlZEVycm9yKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIGZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sIGljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCByZXRyeUNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIHN0b3Agbm9ybWFsbHkgdGhlIHBlZXIgY29ubmVjdGlvbiBpcyB1bnJlZ2lzdGVyZWQgZmlyc3QuXG4gICAgICAgICAgICAgICAgLy8gVGh1cyBhbnl0aW1lIHdlIHNlZSBhIGNsb3NlZCBwZWVyIGNvbm5lY3Rpb24gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaXQgaXMgYW4gZXJyb3IuXG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHBlZXIgY29ubmVjdGlvbiBzdG9wcGVkIHdpdGggc3RhdGUgWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgc3dpdGNoIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2luZyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ25ldyc6XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBjYXNlICdkaXNjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHRyeWluZyB0byByZWNvbm5lY3QnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdjbG9zZWQnOlxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCByZXRyeWluZyB0byBjb25uZWN0JywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgYXMgbmV2ZXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIGFuc3dlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uPy5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IHJlbW90ZSBTRFAgb2ZmZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcih7XG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihhbnN3ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBhbnN3ZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGFuc3dlci5zZHApO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgIGlmICghZW5kUG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiwgRW5kUG9pbnQgaXMgbm90IHNldCcpO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gZW5kUG9pbnQuc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtLCBhbnN3ZXIpO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHtzdGF0dXMsIHNlc3Npb25EZXNjcmlwdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLm1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24/LnNkcCk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNlc3Npb25EZXNjcmlwdGlvbiBhcyBSVENTZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLnN1Y2Nlc3ModGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCk7XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgIT09IFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc7XG5cbiAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICBjb25zdCBydGNQdWJsaXNoTW9uaXRvciA9IG5ldyBSdGNQdWJsaXNoTW9uaXRvcihcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5yb3VuZFRyaXBUaW1lID8gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5yb3VuZFRyaXBUaW1lIC8gNCA6IDAsXG4gICAgICAgICAgICAgICAgU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIS5pc0ZvcmVncm91bmRcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChydGNQdWJsaXNoTW9uaXRvcik7XG5cbiAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHJ0Y1B1Ymxpc2hNb25pdG9yLnJ0Y1N0YXRpc3RpYy5zdWJzY3JpYmUoc3RhdGlzdGljcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5ydGNTdGF0aXN0aWNzLnZhbHVlID0gc3RhdGlzdGljcztcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXBwbHlSdGNDb25maWd1cmF0aW9uKFxuICAgIG9wdGlvbmFsUGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiB8IG51bGwsXG4gICAgcnRjQ29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgaWYgKCFvcHRpb25hbFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uID0gUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHJ1bmNhdGVJY2VTZXJ2ZXJzKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgICByZXR1cm4gU0RLLnBlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdSdGNDb25maWd1cmF0aW9uID0ge1xuICAgICAgLi4ub3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5nZXRDb25maWd1cmF0aW9uKCksXG4gICAgICAuLi5ydGNDb25maWd1cmF0aW9uXG4gICAgfTtcblxuICAgIG9wdGlvbmFsUGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbihuZXdSdGNDb25maWd1cmF0aW9uKTtcblxuICAgIHJldHVybiBvcHRpb25hbFBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuUmVjb25uZWN0aW5nO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIDwgU0RLLm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgfHwgIVNESy5hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKys7XG5cbiAgICAgIGNvbnN0IGlzQ2xpZW50T2ZmZXJGbG93ID0gcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb24/LnR5cGUgPT09ICdvZmZlcic7XG5cbiAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhaXNDbGllbnRPZmZlckZsb3dcbiAgICAgICkge1xuICAgICAgICBjb25zdCByZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgfSwgc29mdFJlc3RhcnRJbnRlcnZhbCk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCkpKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZWNvbm5lY3RpbmcgcGVlciBjb25uZWN0aW9uIGJ5IHJlc3RhcnRpbmcgSUNFJyk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uID0gcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb247XG4gICAgICBjb25zdCBpZ25vcmVkID0gcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoe2ljZVJlc3RhcnQ6IHRydWV9KS50aGVuKG9mZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnZGlzY29ubmVjdGVkJyB8fCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdmYWlsZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICB9LCBzb2Z0UmVzdGFydEludGVydmFsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dChyZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQpKSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uJywgZSk7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gYWZ0ZXIgWyVzXSBhdHRlbXB0cywgcGVyZm9ybWluZyBmdWxsIHJlY292ZXJ5JywgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICByZXRyeUNhbGxiYWNrKCk7XG4gIH1cblxuICBwcml2YXRlIG1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyk6IFB1Ymxpc2hlclN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzKTogUHVibGlzaGVyU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZGVjbGFyZSBjb25zdCBfX0JVSUxEX1ZFUlNJT05fXzogc3RyaW5nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZXJzaW9uTWFuYWdlciB7XG4gIHByaXZhdGUgc3RhdGljIF9kZWZhdWx0VmVyc2lvbiA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcblxuICBzdGF0aWMgZ2V0IHNka1ZlcnNpb24oKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIF9fQlVJTERfVkVSU0lPTl9fO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmVyc2lvbjtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBUZWxlbWV0cnlTZXJ2aWNlIGZyb20gJy4vVGVsZW1ldHJ5U2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4uL2xvZ2dlci9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5O1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkO1xuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UgPSBuZXcgVGVsZW1ldHJ5U2VydmljZSh0ZWxlbWV0cnlDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlLnB1c2gobG9nTGV2ZWwsIG1lc3NhZ2UsIGNhdGVnb3J5LCBkYXRlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L2xvZ3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9wYWdlTG9hZFRpbWU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3RocmVzaG9sZCA9IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgdGVsZW1ldHJ5VXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgdGVsZW1ldHJ5VXJsLnBhdGhuYW1lID0gdGVsZW1ldHJ5VXJsLnBhdGhuYW1lICsgJy9sb2dzJztcblxuICAgIHRoaXMuX3VybCA9IHRlbGVtZXRyeVVybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgc2V0IGVudmlyb25tZW50KGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHNldCB0ZW5hbmN5KHRlbmFuY3k6IHN0cmluZykge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZW5hbmN5O1xuICB9XG5cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSWQ7XG4gIH1cblxuICBzZXQgc2Vzc2lvbklkKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzZXQgcGFnZUxvYWRUaW1lKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKSB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IE51bWJlcnMgZnJvbSAnLi4vbGFuZy9OdW1iZXJzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4vVGVsZW1ldHJ5Q29uZmlndXJhdGlvbic7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuXG5jb25zdCByZXF1ZXN0U2l6ZUxpbWl0ID0gODE5MjtcblxuaW50ZXJmYWNlIElMb2dJdGVtIHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbiAgbGV2ZWw6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICBmdWxsUXVhbGlmaWVkTmFtZTogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gIHByaXZhdGUgX2xvZ3M6IEFycmF5PElMb2dJdGVtPiA9IFtdO1xuICBwcml2YXRlIF9pc1NlbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZG9tYWluID0gJyc7XG5cbiAgY29uc3RydWN0b3IodGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuICAgIHRoaXMuZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpLnRoZW4obG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICB0aGlzLl9kb21haW4gPSBsb2NhdGlvbkhvc3RuYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgcHVzaChsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIHRpbWVzdGFtcDogRGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHJ1bnRpbWUgPSAodGltZXN0YW1wLnZhbHVlT2YoKSAtIHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24ucGFnZUxvYWRUaW1lKSAvIDEwMDA7XG4gICAgY29uc3QgbG9nUmVjb3JkID0ge1xuICAgICAgdGltZXN0YW1wOiB0aW1lc3RhbXAudG9JU09TdHJpbmcoKSxcbiAgICAgIHRlbmFuY3k6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSxcbiAgICAgIGxldmVsOiBMb2dnaW5nTGV2ZWxbbG9nTGV2ZWxdLFxuICAgICAgY2F0ZWdvcnksXG4gICAgICBtZXNzYWdlLFxuICAgICAgc2Vzc2lvbklkOiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZCxcbiAgICAgIHZlcnNpb246IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb24sXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgIGZ1bGxRdWFsaWZpZWROYW1lOiB0aGlzLl9kb21haW4sXG4gICAgICBydW50aW1lXG4gICAgfTtcblxuICAgIGlmIChsb2dMZXZlbCA8IExvZ2dpbmdMZXZlbC5FcnJvcikge1xuICAgICAgdGhpcy5fbG9ncy5wdXNoKGxvZ1JlY29yZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xvZ3MudW5zaGlmdChsb2dSZWNvcmQpO1xuICAgIH1cblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPihyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlTG9jYXRpb25Ib3N0bmFtZShnbG9iYWxTY29wZS5sb2NhdGlvbkhvc3RuYW1lKTtcbiAgICAgICAgZ2xvYmFsU2NvcGUuc2V0VGltZW91dCgoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCksIDApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRMb2dzKGxvZ01lc3NhZ2VzOiBBcnJheTxJTG9nSXRlbT4pOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoe3JlY29yZHM6IGxvZ01lc3NhZ2VzfSkpO1xuXG4gICAgcmV0dXJuIGF3YWl0IEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRMb2dzSWZBYmxlKCk6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgaWYgKHRoaXMuX2xvZ3MubGVuZ3RoIDw9IDAgfHwgdGhpcy5faXNTZW5kaW5nIHx8ICFHbG9iYWxTY29wZS52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBudW1iZXJPZkxvZ3NUb1NlbmQgPSAwO1xuICAgIGxldCBzaXplT2ZMb2dzVG9TZW5kID0gMDtcblxuICAgIHRoaXMuX2lzU2VuZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBnZXRJdGVtU2l6ZSA9IChpdGVtOiBudW1iZXIgfCBzdHJpbmcpID0+IHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJyA/IE51bWJlcnMuY291bnROdW1iZXJMZW5ndGgoaXRlbSkgOiBpdGVtLmxlbmd0aDtcbiAgICBjb25zdCBnZXRMb2dTaXplID0gKGxvZzogSUxvZ0l0ZW0pOiBudW1iZXIgPT4gT2JqZWN0LnZhbHVlcyhsb2cpXG4gICAgICAucmVkdWNlKChzdW0sIGl0ZW0pID0+IHN1bSArIChpdGVtID8gZ2V0SXRlbVNpemUoaXRlbSkgOiAwKSwgMCk7XG5cbiAgICB3aGlsZSAodGhpcy5fbG9ncy5sZW5ndGggPiBudW1iZXJPZkxvZ3NUb1NlbmQgJiYgZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pICsgc2l6ZU9mTG9nc1RvU2VuZCA8IHJlcXVlc3RTaXplTGltaXQpIHtcbiAgICAgIHNpemVPZkxvZ3NUb1NlbmQgKz0gZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kKys7XG4gICAgfVxuXG4gICAgaWYgKCFudW1iZXJPZkxvZ3NUb1NlbmQpIHtcbiAgICAgIHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlID0gdGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsXG4gICAgICAgIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIChyZXF1ZXN0U2l6ZUxpbWl0IC0gZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pKSk7XG4gICAgICBudW1iZXJPZkxvZ3NUb1NlbmQgPSAxO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ01lc3NhZ2VzID0gdGhpcy5fbG9ncy5zbGljZSgwLCBudW1iZXJPZkxvZ3NUb1NlbmQpO1xuXG4gICAgdGhpcy5fbG9ncyA9IHRoaXMuX2xvZ3Muc2xpY2UobnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHJldHVybiB0aGlzLnNlbmRMb2dzKGxvZ01lc3NhZ2VzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER1cmF0aW9ucyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2R1cmF0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZHVyYXRpb24gPSAwKSB7XG4gICAgdGhpcy5fZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgfVxuXG4gIHRvSXNvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2R1cmF0aW9uID09PSAwKSB7XG4gICAgICByZXR1cm4gJ1AwUyc7XG4gICAgfVxuXG4gICAgY29uc3QgaXNOZWdhdGl2ZSA9IHRoaXMuX2R1cmF0aW9uIDwgMDtcbiAgICBjb25zdCBkdXJhdGlvbiA9IGlzTmVnYXRpdmUgPyBNYXRoLmFicyh0aGlzLl9kdXJhdGlvbikgOiB0aGlzLl9kdXJhdGlvbjtcbiAgICBsZXQgb2Zmc2V0ID0gTWF0aC5mbG9vcihkdXJhdGlvbik7XG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gb2Zmc2V0ICUgMTAwMDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gMTAwMCk7XG5cbiAgICBjb25zdCBzZWNvbmRzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IG1pbnV0ZXMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgaG91cnMgPSBvZmZzZXQgJSAyNDtcbiAgICBjb25zdCBwYXJ0cyA9IFsnUFQnXTtcblxuICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KCctJyk7XG4gICAgfVxuXG4gICAgaWYgKGhvdXJzKSB7XG4gICAgICBwYXJ0cy5wdXNoKGhvdXJzICsgJ0gnKTtcbiAgICB9XG5cbiAgICBpZiAobWludXRlcykge1xuICAgICAgcGFydHMucHVzaChtaW51dGVzICsgJ00nKTtcbiAgICB9XG5cbiAgICBpZiAoc2Vjb25kcyB8fCBtaWxsaXNlY29uZHMpIHtcbiAgICAgIHBhcnRzLnB1c2goU3RyaW5nKHNlY29uZHMpKTtcblxuICAgICAgaWYgKG1pbGxpc2Vjb25kcykge1xuICAgICAgICBwYXJ0cy5wdXNoKCcuJyArIHRoaXMucGFkU3RhcnQobWlsbGlzZWNvbmRzLnRvU3RyaW5nKCksIDMsICcwJykpO1xuICAgICAgfVxuXG4gICAgICBwYXJ0cy5wdXNoKCdTJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xuICB9XG5cbiAgcGFkU3RhcnQoaXRlbTogc3RyaW5nLCB0YXJnZXRMZW5ndGg6IG51bWJlciwgcGFkU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCA+PiAwO1xuICAgIHBhZFN0cmluZyA9IFN0cmluZygodHlwZW9mIHBhZFN0cmluZyAhPT0gJ3VuZGVmaW5lZCcgPyBwYWRTdHJpbmcgOiAnICcpKTtcblxuICAgIGlmIChpdGVtLmxlbmd0aCA+IHRhcmdldExlbmd0aCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoIC0gaXRlbS5sZW5ndGg7XG5cbiAgICBpZiAodGFyZ2V0TGVuZ3RoID4gcGFkU3RyaW5nLmxlbmd0aCkge1xuICAgICAgcGFkU3RyaW5nICs9IHBhZFN0cmluZy5yZXBlYXQodGFyZ2V0TGVuZ3RoIC8gcGFkU3RyaW5nLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZFN0cmluZy5zbGljZSgwLCB0YXJnZXRMZW5ndGgpICsgaXRlbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAyMDAwO1xuY29uc3QgZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAxO1xuY29uc3QgZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAzMDAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4cG9uZW50aWFsQmFja29mZiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmRcbiAgKSB7XG4gICAgdGhpcy5fYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IGJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gIH1cblxuICBnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KGZhaWx1cmVDb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMgPSB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIC8gMTAwMDtcbiAgICBjb25zdCByYW5kb21pemF0aW9uID0gMC41ICsgKDAuNSAqIE1hdGgucmFuZG9tKCkpOyAvLyBbMC41LCAxKVxuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZiA9IE1hdGgucG93KGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcywgZmFpbHVyZUNvdW50IC0gMik7IC8vICBbMS80IDEvMiAxIDIgNCA4IC4uLi5dXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24gPSBNYXRoLmZsb29yKGV4cG9uZW50aWFsQmFja29mZikgKiByYW5kb21pemF0aW9uO1xuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCA9IE1hdGguY2VpbChNYXRoLm1heChleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiAqIDEwMDAsIHRoaXMuX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpKTtcblxuICAgIHJldHVybiBNYXRoLm1pbihleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQsIHRoaXMuX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1N0cmVhbVNldHVwTGlzdGVuZXJ9IGZyb20gJy4uL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgTmV0d29ya01vbml0b3IgZnJvbSAnLi4vZG9tL05ldHdvcmtNb25pdG9yJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuXG5pbnRlcmZhY2UgSU5ldHdvcmtTdGF0aXN0aWNzIHtcbiAgcnR0PzogbnVtYmVyO1xuICBlZmZlY3RpdmVUeXBlPzogc3RyaW5nO1xuICBkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Vzc2lvblRlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1Nlc3Npb25UZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmV0d29ya01vbml0b3I6IE5ldHdvcmtNb25pdG9yID0gbmV3IE5ldHdvcmtNb25pdG9yKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfbGFzdE5ldHdvcmtTdGF0aXN0aWNzOiBJTmV0d29ya1N0YXRpc3RpY3MgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihwYWdlTG9hZFRpbWU6IG51bWJlciwgbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlKSB7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvcik7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcblxuICAgIGlmICghdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2Vzc2lvblRlbGVtZXRyeSBGYWlsZWQ6IE5vIGFwcGxpY2F0aW9uIG1vbml0b3IgaW5pdGlhbGl6ZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9uZXR3b3JrTW9uaXRvci5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci5pc0ZvcmVncm91bmQuc3Vic2NyaWJlKGlzRm9yZWdyb3VuZCA9PiB7XG4gICAgICB0aGlzLnJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLnJ0dC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1JUVFVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5lZmZlY3RpdmVUeXBlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gIH1cblxuICBsaXN0ZW5PblN0cmVhbVNldHVwKCk6IFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICAgIHJldHVybiBuZXcgU3RyZWFtU2V0dXBMaXN0ZW5lcih0aGlzLl9wYWdlTG9hZFRpbWUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0Q2hhbmdlID0gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTtcblxuICAgIGlmICghdGltZVNpbmNlTGFzdENoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogaXNGb3JlZ3JvdW5kID8gTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kIDogTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWVTaW5jZUxhc3RDaGFuZ2V9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdBcHBsaWNhdGlvbiBoYXMgZ29uZSBpbnRvIHRoZSBbJXNdIGFmdGVyIFslc10gbXMnLFxuICAgICAgaXNGb3JlZ3JvdW5kID8gJ2ZvcmVncm91bmQnIDogJ2JhY2tncm91bmQnLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aW1lU2luY2VMYXN0Q2hhbmdlKS50b0lzb1N0cmluZygpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtSVFRVcGRhdGUobmV3UlRUOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZFJ0dCA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQ7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MucnR0ID0gbmV3UlRUO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IG5ld1JUVH0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRSdHQgPyB7dWludDY0OiBvbGRSdHR9IDogdW5kZWZpbmVkLFxuICAgICAgcmVzb3VyY2U6ICduYXZpZ2F0b3InXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgUlRUIGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdSVFQsXG4gICAgICBvbGRSdHRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZShuZXdOZXR3b3JrVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGROZXR3b3JrVHlwZSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5lZmZlY3RpdmVUeXBlO1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGUgPSBuZXdOZXR3b3JrVHlwZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuTmV0d29ya1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3N0cmluZzogbmV3TmV0d29ya1R5cGV9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkTmV0d29ya1R5cGUgPyB7c3RyaW5nOiBvbGROZXR3b3JrVHlwZX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBlZmZlY3RpdmUgdHlwZSBoYXMgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld05ldHdvcmtUeXBlLFxuICAgICAgb2xkTmV0d29ya1R5cGVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUobmV3Q2FwYWNpdHk6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkQ2FwYWNpdHkgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkgPSBuZXdDYXBhY2l0eTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge2Zsb2F0OiBuZXdDYXBhY2l0eX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRDYXBhY2l0eSA/IHtmbG9hdDogb2xkQ2FwYWNpdHl9IDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgZG93bmxpbmsgdGhyb3VnaHB1dCBjYXBhY2l0eSBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3Q2FwYWNpdHksXG4gICAgICBvbGRDYXBhY2l0eVxuICAgICk7XG4gIH1cbn0iLCJmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7XG4gIChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTtcbiAgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07XG4gIHJldHVybiBuO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlMaWtlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGUpIHtcbiAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICByZXR1cm4gZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChuLCB0LCBlLCByLCBvLCBhLCBjKSB7XG4gIHRyeSB7XG4gICAgdmFyIGkgPSBuW2FdKGMpLFxuICAgICAgdSA9IGkudmFsdWU7XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xuICB9XG4gIGkuZG9uZSA/IHQodSkgOiBQcm9taXNlLnJlc29sdmUodSkudGhlbihyLCBvKTtcbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdCA9IHRoaXMsXG4gICAgICBlID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAociwgbykge1xuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xuICAgICAgZnVuY3Rpb24gX25leHQobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIG4pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3Rocm93KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgbik7XG4gICAgICB9XG4gICAgICBfbmV4dCh2b2lkIDApO1xuICAgIH0pO1xuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXN5bmNUb0dlbmVyYXRvciwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhhLCBuKSB7XG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NsYXNzQ2FsbENoZWNrLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXMoZSwgcikge1xuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcbiAgICB2YXIgbyA9IHJbdF07XG4gICAgby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExLCBvLmNvbmZpZ3VyYWJsZSA9ICEwLCBcInZhbHVlXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRvUHJvcGVydHlLZXkoby5rZXkpLCBvKTtcbiAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcbiAgcmV0dXJuIChyID0gdG9Qcm9wZXJ0eUtleShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XG4gICAgdmFsdWU6IHQsXG4gICAgZW51bWVyYWJsZTogITAsXG4gICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITBcbiAgfSkgOiBlW3JdID0gdCwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2RlZmluZVByb3BlcnR5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKHQpIHtcbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF9nZXRQcm90b3R5cGVPZih0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5mdW5jdGlvbiBfaW5oZXJpdHModCwgZSkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHQsXG4gICAgICB3cml0YWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfVxuICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGUgJiYgc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pbmhlcml0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkocikge1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIG51bGwgIT0gcltTeW1ib2wuaXRlcmF0b3JdIHx8IG51bGwgIT0gcltcIkBAaXRlcmF0b3JcIl0pIHJldHVybiBBcnJheS5mcm9tKHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5TGltaXQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVSZXN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlU3ByZWFkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIGFzc2VydFRoaXNJbml0aWFsaXplZCA9IHJlcXVpcmUoXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiKTtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZih0LCBlKSB7XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheUxpbWl0ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVJlc3QgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIik7XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShyLCBlKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBlKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBlKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NsaWNlZFRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRob3V0SG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVNwcmVhZCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCIpO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdG9Db25zdW1hYmxlQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1ByaW1pdGl2ZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoXCIuL3RvUHJpbWl0aXZlLmpzXCIpO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJvcGVydHlLZXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIG87XG4gIH0gOiBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfdHlwZW9mKG8pO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHtcbiAgaWYgKHIpIHtcbiAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgcikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkociwgYSk7XG4gICAgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTtcbiAgICByZXR1cm4gXCJPYmplY3RcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXCJNYXBcIiA9PT0gdCB8fCBcIlNldFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFwiQXJndW1lbnRzXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBhcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBQdWJsaXNoZXJzIGZyb20gJy4vUHVibGlzaGVycyc7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5cbmV4cG9ydCB7XG4gIFNESyxcbiAgUHVibGlzaGVycyxcbiAgUHVibGlzaGVyU3RhdGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0RLLFxuICBQdWJsaXNoZXJzLFxuICBQdWJsaXNoZXJTdGF0ZVxufTsiXSwibmFtZXMiOlsiR2xvYmFsU2NvcGUiLCJEaXNwb3NhYmxlIiwiRGlzcG9zYWJsZUxpc3QiLCJTdWJqZWN0IiwiUmVhZE9ubHlTdWJqZWN0IiwidmlzaWJpbGl0eUNoYW5nZUV2ZW50IiwiQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJEYXRlIiwibm93IiwiX2lzRm9yZWdyb3VuZCIsIl9yZWFkT25seUlzRm9yZWdyb3VuZCIsImluaXRpYWxpemUiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJnZXQiLCJ2YWx1ZSIsImdldFRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlIiwiZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbiIsIl9sYXN0QmFja2dyb3VuZER1cmF0aW9uIiwiZGlzcG9zZSIsIl9kaXNwb3NhYmxlcyIsIl90aGlzIiwiYmFja2dyb3VuZEVudHJ5VGltZSIsImhhbmRsZVZpc2liaWxpdHlDaGFuZ2UiLCJpc05vd0ZvcmVncm91bmQiLCJkb2N1bWVudElzSGlkZGVuIiwidXNlRXZlbnRDYXB0dXJlUGhhc2UiLCJhZGREb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJhZGQiLCJyZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJkZWZhdWx0IiwiQnJvd3NlckRldGVjdG9yIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIl9icm93c2VyTmFtZSIsIl9icm93c2VyTWFqb3JWZXJzaW9uIiwiX2lzQW5kcm9pZCIsIl9pc0Nocm9tZTY5IiwiX2lzQ2hyb21lNzAiLCJfaXNDaHJvbWU3MSIsIl9pc0Nocm9tZTcyIiwiX2lzQ2hyb21lNzQiLCJfaXNDaHJvbWU3NSIsIl9pc0Nocm9tZTc2IiwiX2lzQ2hyb21lNzciLCJpc01vYmlsZSIsIl9pc01vYmlsZSIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibWF0Y2giLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFIiwicGFyc2VCcm93c2VyTmFtZSIsImJyb3dzZXJOYW1lTGlzdCIsInNwbGl0IiwicGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uIiwiYnJvd3NlclZlcnNpb25MaXN0IiwiZnVsbFZlcnNpb24iLCJOdW1iZXIiLCJtc2llIiwiaW5kZXhPZiIsImNvbmNhdCIsInBhcnNlSW50Iiwic3Vic3RyaW5nIiwidHJpZGVudCIsInZlcnNpb24iLCJfQnJvd3NlckRldGVjdG9yIiwidGVzdCIsIl9uYXZpZ2F0b3IiLCJfbmF2aWdhdG9yMiIsImluY2x1ZGVzIiwiTG9nZ2VyRGVmYXVsdHMiLCJMb2dnaW5nTGV2ZWxNYXBwaW5nIiwiVGVsZW1ldHJ5RGVmYXVsdCIsIlRlbGVtZXRyeUxldmVsTWFwcGluZyIsIkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJnZXRTdHJpbmdWYWx1ZSIsIm5hbWUiLCJyZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclZhbHVlIiwicmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJVUklWYWx1ZSIsImRlZmF1bHRTdHJpbmdWYWx1ZSIsImdldEJvb2xlYW5WYWx1ZSIsInZhbHVlRnJvbVVyaSIsImRlZmF1bHRCb29sZWFuVmFsdWUiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSIsImRlZmF1bHRUZWxlbWV0cnlMZXZlbCIsImNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUiLCJkZWZhdWx0TG9nZ2luZ0xldmVsIiwiZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsIiwibWV0YVZhbHVlIiwiZG9jdW1lbnRRdWVyeVNlbGVjdG9yIiwiZ2V0QXR0cmlidXRlIiwidmFsdWVVUklQYXJhbWV0ZXJOYW1lIiwiVVJMU2VhcmNoUGFyYW1zIiwibG9jYXRpb25TZWFyY2giLCJ1bmRlZmluZWQiLCJGZWF0dXJlRW5hYmxlbWVudCIsIlNESyIsIkdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIiwiRXJyb3IiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uIiwic2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzIiwiaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkIiwiZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbiIsImlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsIm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbiIsImJpbmQiLCJzZXRUaW1lb3V0IiwiaW1nIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50Iiwic3JjIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwib25lcnJvciIsInJldm9rZU9iamVjdFVSTCIsIk5ldHdvcmtNb25pdG9yIiwibmF2aWdhdG9yQ29ubmVjdGlvbiIsImlzU3VwcG9ydGVkIiwic2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzIiwidXBkYXRlU3RhdGlzdGljcyIsIl9pc1N1cHBvcnRlZCIsIl9ydHQiLCJfZWZmZWN0aXZlVHlwZSIsIl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsImdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiX3JlZiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEzIiwiZG93bmxpbmsiLCJkb3dubGlua01heCIsImdldEVmZmVjdGl2ZVR5cGUiLCJfcmVmMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE1IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNiIsImVmZmVjdGl2ZVR5cGUiLCJ0eXBlIiwiZ2V0Um91bmRUcmlwVGltZSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTciLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE4IiwicnR0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOSIsImxpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTAiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiTWV0cmljc1R5cGUiLCJNZXRyaWNUeXBlIiwiRHVyYXRpb25zIiwiTG9nZ2VyRmFjdG9yeSIsIlN0cmVhbVNldHVwTGlzdGVuZXIiLCJwYWdlTG9hZFRpbWUiLCJnZXRMb2dnZXIiLCJtZXRyaWNzU2VydmljZSIsIl9zdGFydFRpbWUiLCJfcGFnZUxvYWRUaW1lIiwic3VjY2VzcyIsInN0cmVhbUlkIiwicmVjb3JkU3RyZWFtTWV0cmljIiwiU2V0dXBDb21wbGV0ZWQiLCJmYWlsIiwiU2V0dXBGYWlsZWQiLCJtZXRyaWNUeXBlIiwiX21ldHJpY1N1Ym1pdHRlZCIsInNldHVwVGltZSIsIm1ldHJpY05hbWUiLCJnZXROYW1lIiwicHVzaCIsInJ1bnRpbWUiLCJ1aW50NjQiLCJfbG9nZ2VyIiwiaW5mbyIsInRvSXNvU3RyaW5nIiwiRWRnZVRva2VuIiwiZWRnZUF1dGhUb2tlblByZWZpeCIsIkVkZ2VBdXRoUGFyc2VyIiwicGFyc2VUb2tlbiIsInRva2VuIiwiaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQiLCJlcnJvciIsImRlY29kZWRUb2tlbiIsImF0b2IiLCJzdWJzdHIiLCJsZW5ndGgiLCJlZGdlVG9rZW4iLCJKU09OIiwicGFyc2UiLCJlIiwic3RhcnRzV2l0aCIsIl9lZGdlVG9rZW4kdG9rZW4iLCJfZWRnZVRva2VuJHRva2VuMiIsIl9hcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25JZCIsIl90b2tlbiIsInVyaSIsImNhcGFiaWxpdGllcyIsIkJ1aWxkRmVhdHVyZXMiLCJfc2VuZExvY2FsQ2FuZGlkYXRlcyIsIl9zZW5kTG9ncyIsIl9zZW5kTWV0cmljcyIsIl9sb2dUb0NvbnNvbGUiLCJhcHBseUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJfX0ZFQVRVUkVTX18iLCJzZW5kTG9jYWxDYW5kaWRhdGVzIiwic2VuZExvZ3MiLCJzZW5kTWV0cmljcyIsImxvZ1RvQ29uc29sZSIsImlzQ2hyb21lNzQiLCJpc0Nocm9tZTc1IiwiaXNDaHJvbWU3NiIsImlzQ2hyb21lNzciLCJhZGRUcmFuY2VpdmVyRGlzYWJsZWQiLCJpc0Nocm9tZTY5IiwiaXNDaHJvbWU3MCIsImlzQ2hyb21lNzEiLCJpc0Nocm9tZTcyIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyTWFqb3JWZXJzaW9uIiwiX0dsb2JhbFNjb3BlJHZhbHVlIiwiTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciIsIk1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IiLCJSVENSdHBSZWNlaXZlciIsInByb3RvdHlwZSIsImNyZWF0ZUVuY29kZWRTdHJlYW1zIiwiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiX0dsb2JhbFNjb3BlJHZhbHVlMiIsIkhUTUxWaWRlb0VsZW1lbnQiLCJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIiwiX0dsb2JhbFNjb3BlJHZhbHVlMyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCIsImlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIiwiaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQiLCJQYXJhbWV0ZXJzIiwiX2Rpc2NvdmVyeVBhcmFtZXRlcnMiLCJhcHBseVBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzIiwiX19QQVJBTUVURVJTX18iLCJkaXNjb3ZlcnkiLCJpbnRlbnRpb25zIiwiYnJvd3Nlckdsb2JhbFNjb3BlIiwiZG9jdW1lbnQiLCJsb2NhdGlvbiIsIndpbmRvdyIsImdsb2JhbFNjb3BlIiwiX2RvY3VtZW50IiwiX2xvY2F0aW9uIiwiX3dpbmRvdyIsIkFib3J0Q29udHJvbGxlciIsIkZvcm1EYXRhIiwiTWVkaWFTdHJlYW0iLCJNZWRpYVN0cmVhbVRyYWNrIiwiTWVkaWFTb3VyY2UiLCJSVENQZWVyQ29ubmVjdGlvbiIsIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiIsIlJUQ0ljZUNhbmRpZGF0ZSIsImNsZWFySW50ZXJ2YWwiLCJjbGVhclRpbWVvdXQiLCJjcmVhdGVFbGVtZW50IiwiaGFzRm9jdXMiLCJoaWRkZW4iLCJxdWVyeVNlbGVjdG9yIiwiZmV0Y2giLCJob3N0bmFtZSIsInNlYXJjaCIsImNvbm5lY3Rpb24iLCJvbkxpbmUiLCJzZW5kQmVhY29uIiwidXJsIiwiZGF0YSIsInNldEludGVydmFsIiwic2V0SW5zdGFuY2UiLCJwcm92aWRlZEdsb2JhbFNjb3BlIiwiZ2V0SW5zdGFuY2UiLCJfcmVhZE9ubHlJbnN0YW5jZSIsInN1YnNjcmliZSIsImNhbGxiYWNrIiwiX0dsb2JhbFNjb3BlIiwiX2luc3RhbmNlIiwiZGlzcG9zYWJsZSIsIl9kaXNwb3NlZCIsIl9kaXNwb3NhYmxlIiwiY2FsbCIsIl9saXN0IiwiZm9yRWFjaCIsInRvU3RyaW5nIiwibWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90IiwiTnVtYmVycyIsImNvdW50TnVtYmVyTGVuZ3RoIiwiaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSIsIm51bWJlciIsImNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbCIsIk1hdGgiLCJmbG9vciIsImNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsIiwiZml4Um91bmRpbmciLCJwcmVjaXNpb24iLCJwb3dlciIsInBvdyIsInJvdW5kIiwiZGlnaXRzQmVmb3JlRGVjaW1hbCIsIm9yaWdpbmFsVmFsdWUiLCJtb2RpZmllZFZhbHVlIiwiY291bnQiLCJTdHJpbmdzIiwicmFuZG9tIiwicmFuZG9tMTNDaGFyYWN0ZXJzIiwibG9vcHMiLCJjZWlsIiwiQXJyYXkiLCJmaWxsIiwicmVkdWNlIiwic3RyaW5nIiwiZnVuYyIsImFzc2VydFVucmVhY2hhYmxlIiwieCIsIkFwcGVuZGVycyIsIl9hcHBlbmRlcnMiLCJhcHBlbmRlciIsInJlbW92ZSIsIml0ZW1zIiwiaXRlbSIsIkxvZ2dpbmdMZXZlbCIsIkNvbnNvbGVBcHBlbmRlciIsInRocmVzaG9sZCIsIl90aHJlc2hvbGQiLCJsb2ciLCJsb2dMZXZlbCIsIm1lc3NhZ2UiLCJjYXRlZ29yeSIsImRhdGUiLCJmdWxsTWVzc2FnZSIsInRvSVNPU3RyaW5nIiwiV2FybiIsImNvbnNvbGUiLCJMb2dnZXIiLCJhcHBlbmRlcnMiLCJfY2F0ZWdvcnkiLCJ0cmFjZSIsIlRyYWNlIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJfa2V5IiwiZGVidWciLCJEZWJ1ZyIsIl9sZW4yIiwiX2tleTIiLCJJbmZvIiwiX2xlbjMiLCJfa2V5MyIsIndhcm4iLCJfbGVuNCIsIl9rZXk0IiwiX2xlbjUiLCJfa2V5NSIsImZhdGFsIiwiRmF0YWwiLCJfbGVuNiIsIl9rZXk2IiwibGV2ZWwiLCJyZXBsYWNlUGxhY2Vob2xkZXJzIiwiX3RoaXMyIiwicmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyIsImluZGV4IiwicmVwbGFjZUFyZ3VtZW50Iiwic3BsaWNlIiwic3RyaW5naWZ5IiwiYWNjdW11bGF0b3IiLCJjdXJyZW50VmFsdWUiLCJhcnJheSIsImVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlIiwic3RhY2siLCJhcmciLCJjYWNoZSIsIl8iLCJPYmplY3QiLCJhcmd1bWVudCIsInRvU3RyaW5nU3RyIiwiTG9nZ2luZ1RocmVzaG9sZCIsIlRlbGVtZXRyeUFwcGVuZGVyIiwiVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsIl90ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwibG9nZ2VyIiwiX2xvZ2dlcnMiLCJhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlMb2dnaW5nTGV2ZWwiLCJhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsIiwiYXBwbHlDb25zb2xlTG9nZ2VyIiwiYXBwbHlUZWxlbWV0cnlMb2dnZXIiLCJwYXJhbWV0ZXJWYWx1ZSIsInNldFRocmVzaG9sZCIsImFwcGx5QXBwZW5kZXIiLCJsb2dnaW5nTGV2ZWwiLCJPZmYiLCJBbGwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsIiwibG9nZ2luZ0xldmVsVHlwZSIsIlRlbGVtZXRyeUxldmVsIiwibWV0cmljcyIsIl9tZXRyaWNzIiwiZ2V0VGVsZW1ldHJ5TGV2ZWwiLCJUaW1lVG9GaXJzdEZyYW1lIiwiRXNzZW50aWFsIiwiQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIlN0YWxsZWQiLCJCdWZmZXJpbmciLCJSb3VuZFRyaXBUaW1lIiwiRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJOZXR3b3JrVHlwZSIsIlJlc29sdXRpb25DaGFuZ2VkIiwiQXBwbGljYXRpb25Gb3JlZ3JvdW5kIiwiQXBwbGljYXRpb25CYWNrZ3JvdW5kIiwiTWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfdXJsIiwic2V0IiwibWV0cmljc1VybCIsInBhdGhuYW1lIiwiX2Vudmlyb25tZW50IiwiZW52aXJvbm1lbnQiLCJfdGVuYW5jeSIsInRlbmFuY3kiLCJfc2Vzc2lvbklkIiwic2Vzc2lvbklkIiwiTWV0cmljc1NlcnZpY2UiLCJUZWxlbWV0cnlVcmwiLCJFbnZpcm9ubWVudCIsIk1ldHJpY3NGYWN0b3J5IiwiZ2V0TWV0cmljc1NlcnZpY2UiLCJfdHlwZW9mIiwibWV0cmljc1NlcnZpY2VzIiwiX21ldHJpY3NTZXJ2aWNlcyIsIm1ldHJpY3NDb25maWd1cmF0aW9uIiwiY2xpZW50U2Vzc2lvbklkIiwiZ2V0VGVsZW1ldHJ5VXJsIiwiZ2V0RW52aXJvbm1lbnRGcm9tVXJsIiwiY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwiLCJ0ZWxlbWV0cnlMZXZlbCIsInNldFRlbGVtZXRyeUxldmVsIiwidmFsdWVzIiwidCIsInIiLCJTeW1ib2wiLCJuIiwiaXRlcmF0b3IiLCJvIiwidG9TdHJpbmdUYWciLCJpIiwiYyIsIkdlbmVyYXRvciIsInUiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsInYiLCJhIiwiZCIsImwiLCJUeXBlRXJyb3IiLCJkb25lIiwicmV0dXJuIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImdldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJkaXNwbGF5TmFtZSIsIl9yZWdlbmVyYXRvciIsInciLCJtIiwiZGVmaW5lUHJvcGVydHkiLCJfcmVnZW5lcmF0b3JEZWZpbmUiLCJfaW52b2tlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiRXhwb25lbnRpYWxCYWNrb2ZmIiwiVmVyc2lvbk1hbmFnZXIiLCJyZXF1ZXN0U2l6ZUxpbWl0IiwibWF4QnVmZmVyZWRSZWNvcmRzIiwiX21ldHJpY3NDb25maWd1cmF0aW9uIiwiX2V4cG9uZW50aWFsQmFja29mZiIsImdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUiLCJ0aGVuIiwibG9jYXRpb25Ib3N0bmFtZSIsIl9kb21haW4iLCJtZXRyaWMiLCJwcmV2aW91c1ZhbHVlIiwicmVzb3VyY2UiLCJraW5kIiwibWV0cmljUmVjb3JkIiwidGltZXN0YW1wIiwiZnVsbFF1YWxpZmllZE5hbWUiLCJzZGtWZXJzaW9uIiwiaWdub3JlZCIsInNlbmRNZXRyaWNzSWZBYmxlIiwiUHJvbWlzZSIsInJlc29sdmVMb2NhdGlvbkhvc3RuYW1lIiwiZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24iLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9jYWxsZWUiLCJtZXRyaWNzTWVzc2FnZXMiLCJmb3JtRGF0YSIsIl9jb250ZXh0IiwiYXBwZW5kIiwicmVjb3JkcyIsIm1ldGhvZCIsImJvZHkiLCJfeCIsImFwcGx5IiwiX3NlbmRNZXRyaWNzSWZBYmxlIiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJfaXNTZW5kaW5nIiwic2xpY2UiLCJyZXNwb25zZSIsImlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlIiwiX2ZhaWx1cmVDb3VudCIsIl90b0NvbnN1bWFibGVBcnJheSIsImdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQiLCJjYXRjaCIsInN0YXR1cyIsInRlbGVtZXRyeUxldmVsVHlwZSIsIlByb21pc2VIYW5kbGVyIiwiX3N0YXRlIiwiX2hhbmRsZWQiLCJfdmFsdWUiLCJfZGVmZXJyZWRzIiwiZG9SZXNvbHZlIiwicHJvbWlzZVJlc29sdmUiLCJyZWFzb24iLCJwcm9taXNlUmVqZWN0IiwibmV3VmFsdWUiLCJwcm9taXNlIiwiZmluYWxlIiwiX2ltbWVkaWF0ZSIsIl91bmhhbmRsZWRSZWplY3Rpb24iLCJsZW4iLCJoYW5kbGUiLCJkZWZlcnJlZCIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInJlc3VsdCIsImFsbCIsImFyciIsInJlc29sdmUiLCJyZWplY3QiLCJpc0FycmF5IiwicmVtYWluaW5nIiwibWFuYWdlUmVzcG9uc2UiLCJjb25zdHJ1Y3RvciIsInJhY2UiLCJWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiZGVmYXVsdFRyYWNrS2luZHMiLCJQZWVyQ29ubmVjdGlvblNlcnZpY2UiLCJfcGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZyIsImlzUHJlY2FjaGluZ0VuYWJsZWQiLCJwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfcHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhY2hlZCIsImRpcmVjdGlvbiIsInBlZXJDb25uZWN0aW9uIiwiY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhbGxlZTMiLCJ0cmFja0tpbmRzIiwiZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiY29uZmlndXJhdGlvbiIsIl9hcmdzMyIsIl9jb250ZXh0MyIsIkRpc2FibGVkIiwiaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQiLCJFbmFibGVkIiwiY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJzdXBwb3J0c0FkZFRyYW5zY2VpdmVyIiwiYXVkaW9UcmFuc2NlaXZlcnMiLCJ2aWRlb1RyYW5zY2VpdmVycyIsIm9wdGlvbnMiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl90NSIsIl90NiIsImFkZFRyYW5zY2VpdmVyIiwiY3JlYXRlT2ZmZXIiLCJsb2NhbE9mZmVyIiwib2ZmZXJUb1JlY2VpdmVBdWRpbyIsIm9mZmVyVG9SZWNlaXZlVmlkZW8iLCJ0cmFja3NLaW5kcyIsImNvdW50VHJhY2tLaW5kcyIsInRyYWNrS2luZENvdW50IiwiYXVkaW8iLCJ2aWRlbyIsImNvdW50ZWRUcmFja0tpbmRzIiwiY291bnRlZERlZmF1bHRUcmFja0tpbmRzIiwiUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIiLCJ0cnVuY2F0ZUljZVNlcnZlcnMiLCJpY2VTZXJ2ZXJzIiwidXJscyIsInVzZXJuYW1lIiwiY3JlZGVudGlhbCIsIlNkcFBhcnNlciIsInVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQiLCJnZXRTdGF0c1RpbWVvdXREdXJhdGlvbiIsIlJ0Y1B1Ymxpc2hNb25pdG9yIiwiZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsImlzRm9yZWdyb3VuZCIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjIiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24zIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNCIsIl9wZWVyQ29ubmVjdGlvbiIsIl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiY3VycmVudExvY2FsRGVzY3JpcHRpb24iLCJzZHAiLCJjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24iLCJwYXJzZWRMb2NhbERlc2NyaXB0aW9uIiwicGFyc2VkUmVtb3RlRGVzY3JpcHRpb24iLCJfZXN0aW1hdGVkQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWMiLCJfZXN0aW1hdGVkVmlkZW9Db2RlYyIsInZpZGVvQ29kZWMiLCJfYXZhaWxhYmxlVHJhY2tzIiwiaXNBdWRpb1RyYWNrRW5hYmxlZCIsImlzVmlkZW9UcmFja0VuYWJsZWQiLCJpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayIsImZvcmVncm91bmQiLCJfaXNNb25pdG9yUnVubmluZyIsIl9tb25pdG9yR2VuZXJhdGlvbiIsIl91cGRhdGVUaW1lb3V0IiwidXBkYXRlU3RhdGlzdGljIiwiX3J0Y1N0YXRpc3RpYyIsIl91cGRhdGVTdGF0aXN0aWMiLCJnZW5lcmF0aW9uIiwiZ2V0S2luZEZvclNhZmFyaTExIiwidGltZW91dEhhbmRsZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjUiLCJzdGF0c1Byb21pc2UiLCJ0aW1lb3V0UHJvbWlzZSIsInN0YXRzIiwicnRjU3RhdGlzdGljcyIsInJvdW5kVHJpcFRpbWUiLCJsYXN0UGFja2V0U2VudFRpbWVzdGFtcCIsImdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQiLCJpZCIsImdldFN0YXRzIiwicmVwb3J0IiwiY3VycmVudFJvdW5kVHJpcFRpbWUiLCJfdGhpczIkX2F2YWlsYWJsZVRyYWMiLCJtZWRpYVR5cGUiLCJjb2RlYyIsImNvZGVjSWQiLCJtaW1lVHlwZSIsIl90aGlzMiRfcnRjU3RhdGlzdGljJCIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDIiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQzIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNCIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDUiLCJieXRlcyIsImJ5dGVzU2VudCIsInByZXZpb3VzQnl0ZXNTZW50IiwiYnl0ZXNEZWx0YSIsInRpbWVEZWx0YSIsImJpdHJhdGUiLCJzc3JjIiwicGFja2V0c1NlbnQiLCJyZXRyYW5zbWl0dGVkQnl0ZXNTZW50IiwiZ2V0Q29kZWNCeVR5cGUiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ2IiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNyIsImZpckNvdW50IiwiZnJhbWVIZWlnaHQiLCJmcmFtZVdpZHRoIiwiZnJhbWVzRW5jb2RlZCIsImZyYW1lc1NlbnQiLCJoZWFkZXJCeXRlc1NlbnQiLCJodWdlRnJhbWVzU2VudCIsInBsaUNvdW50IiwicXBTdW0iLCJ0b3RhbEVuY29kZVRpbWUiLCJ0b3RhbEVuY29kZWRCeXRlc1RhcmdldCIsImZwcyIsIl9zZHAiLCJzZHBTcGxpdEJ5TGluZXMiLCJzZHBTcGxpdEJ5VHJhY2tzIiwiX2F1ZGlvQ29kZWMiLCJhcHBseUNvZGVjIiwiX3ZpZGVvQ29kZWMiLCJfaXNBdWRpb1RyYWNrRW5hYmxlZCIsImlzVHJhY2tCeVR5cGVFbmFibGVkIiwiX2lzVmlkZW9UcmFja0VuYWJsZWQiLCJzZHBTZWN0aW9uRm9yVHlwZSIsImZpbmQiLCJzZHBUcmFjayIsIl9zZHBTcGxpdEJ5TGluZXMkZmluZCIsInJ0bWFwIiwic2RwTGluZSIsInVzZWRDb2RlY0xpbmUiLCJ1c2VkQ29kZWMiLCJjb2RlY05hbWUiLCJWYW5pbGxhUGVlckNvbm5lY3Rpb24iLCJ3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQiLCJ3ZWJraXRSVENQZWVyQ29ubmVjdGlvbiIsImNvbm5lY3Rpb25TdGF0ZSIsImljZUNvbm5lY3Rpb25TdGF0ZSIsImdldENvbmZpZ3VyYXRpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb242Iiwic2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjciLCJnZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCIsImdldFRyYW5zY2VpdmVycyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjgiLCJfY3JlYXRlT2ZmZXIiLCJwcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCIsIl9jcmVhdGVBbnN3ZXIiLCJjcmVhdGVBbnN3ZXIiLCJfeDIiLCJfc2V0TG9jYWxEZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwic2V0TG9jYWxEZXNjcmlwdGlvbiIsIl94MyIsIl9zZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWU0IiwiX2Rlc2NyaXB0aW9uJHNkcCIsImhhc0NyeXB0byIsIl9jb250ZXh0NCIsInNldFJlbW90ZURlc2NyaXB0aW9uIiwiX3g0IiwiZ2V0U2VuZGVycyIsImdldFJlY2VpdmVycyIsInNlbGVjdG9yIiwiZ2V0U3RhdHNMZWdhY3kiLCJfdGhpczMiLCJhZGRTdHJlYW0iLCJtZWRpYVN0cmVhbSIsIl90aGlzNCIsImdldFRyYWNrcyIsInRyYWNrIiwiYWRkVHJhY2siLCJvbnRyYWNrIiwiaGFuZGxlciIsIm9uaWNlY2FuZGlkYXRlIiwib25jb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsImNsb3NlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOSIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbiIsInJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UiLCJzdWJqZWN0IiwiX3N1YmplY3QiLCJEaXNwb3NhYmxlTGlzdGVuZXIiLCJfRGlzcG9zYWJsZSIsImxpc3RlbmVycyIsIl9jYWxsU3VwZXIiLCJpZHgiLCJfaW5oZXJpdHMiLCJfbGlzdGVuZXJzIiwiY2hhbmdlZCIsImNvbXBhcmFibGUiLCJlcXVhbHMiLCJfaSIsIl9hcnIiLCJiYXNlVVJMIiwib3JpZ2luIiwiRGlzY292ZXJ5VXJpIiwiX0dsb2JhbFNjb3BlJGdldEluc3RhIiwiX2NsaWVudFNlc3Npb25JZCIsIl9sb2FkZWRUaW1lc3RhbXAiLCJfcmVhZE9ubHlJbml0aWFsaXplZCIsIl9yZWFkT25seURpc2NvdmVyeVVyaSIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUiLCJfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsIl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJfd2ViUGxheWVyTG9hZGVyIiwiX3NoYWthUGxheWVyTG9hZGVyIiwiX2hsc0pzTG9hZGVyIiwiX21ldHJpY3NTZXJ2aWNlIiwiX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX3RlbGVtZXRyeVVybCIsIl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwicmV0cmllc0Ftb3VudCIsIl90ZWxlbWV0cnlMZXZlbCIsImFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsInRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJpZ25vcmVkRW52aXJvbm1lbnQiLCJpZ25vcmVkRGlzY292ZXJ5VXJpIiwidGVsZW1ldHJ5VXJsIiwidGVsZW1ldHJ5QXBwZW5kZXIiLCJpZ25vcmVkVGVuYW5jeSIsImFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24iLCJpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwiLCJhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiZGlzY292ZXJ5VXJpIiwiY2hhbm5lbFRva2VuIiwidXJpVmFsdWUiLCJiYXNlVVJJVmFsdWUiLCJvbkxvYWQiLCJfaW5pdGlhbGl6ZWQiLCJhZGRXaW5kb3dFdmVudExpc3RlbmVyIiwiaW5pdCIsIm9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZSIsInBlZXJDb25uZWN0aW9uRmFjdG9yeSIsImNvbnNvbGVMb2dnaW5nTGV2ZWwiLCJjb25zb2xlQXBwZW5kZXIiLCJhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJ3ZWJQbGF5ZXJMb2FkZXIiLCJzaGFrYVBsYXllckxvYWRlciIsImhsc0pzTG9hZGVyIiwiX3RoaXMkX2FwcGxpY2F0aW9uQWN0IiwiX1NESyIsInNlZ21lbnRzIiwicHJvdG9jb2wiLCJ1bnNoaWZ0IiwiZW5kc1dpdGgiLCJqb2luIiwiQml0cmF0ZVN0YXRlIiwiQml0cmF0ZU1vZGUiLCJQZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0IiwicGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsImRpc3Bvc2VQZWVyQ29ubmVjdGlvbiIsImRpc3Bvc2VNZWRpYVN0cmVhbSIsIl90aGlzJG1lZGlhU3RyZWFtJHZhbCIsInN0b3AiLCJTdGF0ZUNvbnRleHQiLCJpc1N0YXJ0aW5nIiwiaXNEaXNwb3NlZCIsIlRva2VuQ29udGV4dCIsInRva2VuRXhwaXJpbmciLCJkZWZhdWx0RGlzY292ZXJ5VXJpIiwiQml0cmF0ZU1vZGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUiLCJiaXRyYXRlTW9kZSIsIk5vcm1hbCIsIkZvcmNlIiwiUmVzZXQiLCJCaXRyYXRlU3RhdGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZSIsImJpdHJhdGVTdGF0ZSIsIktlZXAiLCJEaXNjb3ZlcnlTZXJ2aWNlIiwiZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCIsIkRpc2NvdmVyeSIsIl9wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsInJlc29sdmVFbmRQb2ludFByb21pc2UiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwicHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsImRpc2NvdmVyeVNlcnZpY2UiLCJjYWNoZWRWYWx1ZSIsIl9jYWNoZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQiLCJFbmRQb2ludCIsImRlZmF1bHRUaW1lb3V0IiwiX3VyaSIsIl9kaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsInRpbWVvdXQiLCJhc1N0cmluZyIsImVuZFBvaW50cyIsIm9rIiwidGV4dCIsIm1hcCIsImVuZFBvaW50IiwiZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJmYWlsZWRSZXF1ZXN0cyIsInByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkIiwiX2FyZ3MyIiwiYnVpbGREaXNjb3ZlcnlVcmwiLCJwaW5nIiwidGltZSIsIl9kaXNjb3ZlcnlVcmkiLCJkaXNjb3ZlcnlQYXJhbWV0ZXJzIiwic2VhcmNoUGFyYW1zIiwiYXBpVmVyc2lvbiIsIl90aW1lb3V0IiwiX3JvdW5kVHJpcFRpbWUiLCJfcGluZyIsInN0YXJ0IiwiZmluaXNoZWQiLCJidWlsZFBpbmdVcmwiLCJfc3Vic2NyaWJlIiwibG9jYWxTZXNzaW9uRGVzY3JpcHRpb24iLCJmYWlsdXJlQ291bnQiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIiLCJfb3B0aW9ucyRvblN1YnNjcmliZVI0IiwiY2xpZW50VmVyc2lvbiIsInJlcXVlc3RCb2R5IiwiaHR0cFJlc3BvbnNlIiwianNvblJlc3BvbnNlQm9keSIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjIiLCJfcmVzcG9uc2UiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIzIiwiX3Jlc3BvbnNlMiIsInN1YnNjcmliZVJlc3BvbnNlIiwiYnVpbGRVcmwiLCJiZWFyZXJUb2tlbiIsImh0dHBSb3VuZFRyaXBUaW1lIiwic2Vzc2lvbkRlc2NyaXB0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb24iLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uIiwib25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2siLCJmaW5hbGx5IiwicGFyc2VKc29uQm9keSIsImhhbmRsZVN0cmVhbVJlc3BvbnNlQ29udGV4dCIsInN0cmVhbVJlc3BvbnNlQ29udGV4dCIsIm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyIsIm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayIsIm5vcm1hbGl6ZVN1YnNjcmliZVJlc3BvbnNlIiwiX3B1Ymxpc2giLCJib2R5V2l0aE9mZmVyIiwiYm9keVdpdGhvdXRPZmZlciIsInB1Ymxpc2hSZXNwb25zZSIsIm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMiLCJub3JtYWxpemVQdWJsaXNoUmVzcG9uc2UiLCJwdWJsaXNoIiwiX3g1IiwiX3g2IiwiX3g3Iiwic3RyZWFtIiwic2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsInNoYXJlZFNlY3JldCIsIm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDgiLCJfeDkiLCJfbGltaXRCaXRyYXRlIiwiX2NhbGxlZTUiLCJlbGFwc2VkSW5NaWxsaXNlY29uZHMiLCJiaXRyYXRlSW5CaXRzUGVyU2Vjb25kIiwiX3RoaXM1IiwiX2NvbnRleHQ1IiwibWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMiLCJsaW1pdEJpdHJhdGUiLCJfeDAiLCJfeDEiLCJfeDEwIiwiX3gxMSIsIl94MTIiLCJfYWRkSWNlQ2FuZGlkYXRlcyIsIl9jYWxsZWU2IiwiY2FuZGlkYXRlcyIsImRpc2NvdmVyeUNvbXBsZXRlZCIsIl90aGlzNiIsImFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsIl9hcmdzNiIsIl9jb250ZXh0NiIsIm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzIiwiYWRkSWNlQ2FuZGlkYXRlcyIsIl94MTMiLCJfeDE0IiwiX3gxNSIsIl9kZXN0cm95U3RyZWFtIiwiX2NhbGxlZTciLCJfdGhpczciLCJkZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfY29udGV4dDciLCJtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbSIsImRlc3Ryb3lTdHJlYW0iLCJfeDE2IiwiX3gxNyIsIl9kZXN0cm95U3RyZWFtT25Vbm1vdW50IiwiX2NhbGxlZTgiLCJfdGhpczgiLCJfY29udGV4dDgiLCJlcnIiLCJkZXN0cm95U3RyZWFtT25Vbm1vdW50IiwiX3gxOCIsIl94MTkiLCJwYXRoIiwicGF0aEFzQXJyYXkiLCJfcGFyc2VKc29uQm9keSIsIl9jYWxsZWU5IiwiX3Q3IiwiX2NvbnRleHQ5IiwianNvbiIsIl94MjAiLCJjb250ZXh0IiwibGFnIiwicnRjQ29uZmlndXJhdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24iLCJidW5kbGVQb2xpY3kiLCJpY2VDYW5kaWRhdGVQb29sU2l6ZSIsImljZVRyYW5zcG9ydFBvbGljeSIsInJ0Y3BNdXhQb2xpY3kiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfY2FsbGVlMCIsIl9jb250ZXh0MCIsIl94MjEiLCJfY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlcyIsIl9jYWxsZWUxIiwiX2NvbnRleHQxIiwiX3gyMiIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtIiwiX2NhbGxlZTEwIiwiX2NvbnRleHQxMCIsIl94MjMiLCJQdWJsaXNoZXJTdGF0ZSIsIlNlc3Npb25UZWxlbWV0cnkiLCJQdWJsaXNoZXJDb250ZXh0IiwiUmVhbFRpbWVQdWJsaXNoZXIiLCJkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24iLCJmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIm9uZUhvdXJJbk1pbGxpc2Vjb25kcyIsIm1heFJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIlB1Ymxpc2hlciIsInBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMiLCJfdG9rZW5Db250ZXh0IiwiX3B1Ymxpc2hlckNvbnRleHQiLCJfcGVlckNvbm5lY3Rpb25Db250ZXh0IiwiX3N0YXRlQ29udGV4dCIsIl9wdWJsaXNoZXJTdGFydFRpbWUiLCJfcmVhZE9ubHlUb2tlbiIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uIiwiX3JlYWRPbmx5U3RhdGUiLCJzdGF0ZSIsIl9yZWFkT25seVRva2VuRXhwaXJpbmciLCJfcmVhZE9ubHlBdXRob3JpemVkIiwiYXV0aG9yaXplZCIsIl9yZWFkT25seU9ubGluZSIsIm9ubGluZSIsIl9yZWFkT25seUxvYWRpbmciLCJsb2FkaW5nIiwiX3JlYWRPbmx5UHVibGlzaGluZyIsInB1Ymxpc2hpbmciLCJfcmVhZE9ubHlTdGFuZGJ5Iiwic3RhbmRieSIsIl9yZWFkT25seVN0b3BwZWQiLCJzdG9wcGVkIiwiX3JlYWRPbmx5RmFpbHVyZUNvdW50IiwiX3JlYWRPbmx5RW5kUG9pbnQiLCJfcmVhZE9ubHlTdHJlYW0iLCJfcmVhZE9ubHlSdGNTdGF0aXN0aWNzIiwiX3JlYWRPbmx5TWVkaWFTdHJlYW0iLCJfc2Vzc2lvblRlbGVtZXRyeSIsInB1Ymxpc2hlckRpc3Bvc2FibGVzIiwiY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0IiwiUHVibGlzaGluZyIsInJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIiLCJkaXNwb3NhYmxlcyIsIl9zdG9wIiwicHJvY2Vzc1N0b3AiLCJjbGVhblVwUmVzb3VyY2VzIiwiU3RvcHBlZCIsIl9kaXNwb3NlIiwiZ2V0VXJpIiwiX3N0YXJ0IiwicHJvY2Vzc1N0YXJ0IiwiX3Byb2Nlc3NTdGFydCIsImxpc3Rlbk9uU3RyZWFtU2V0dXAiLCJoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2siLCJzdHJlYW1QdWJsaXNoZXIiLCJTdGFydGluZyIsIlVuYXV0aG9yaXplZCIsIlJlY292ZXJpbmciLCJoYW5kbGVTdHJlYW1GYWlsdXJlIiwiQ2xpZW50U3RhcnRFcnJvciIsImF1dG9tYXRpY1JldHJ5T25GYWlsdXJlIiwic3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyIsInRpbWVvdXRJZCIsImdldFJldHJ5SW50ZXJ2YWwiLCJzZXRNZWRpYVN0cmVhbSIsIm1lZGlhVHJhY2siLCJfdGhpczUkX3BlZXJDb25uZWN0aW8iLCJzZW5kZXIiLCJfc2VuZGVyJHRyYWNrIiwicmVwbGFjZVRyYWNrIiwiT2ZmbGluZSIsIkluaXRpYWxpemluZyIsIk5vdEZvdW5kIiwiR2VvUmVzdHJpY3RlZCIsIkdlb0Jsb2NrZWQiLCJSZWNvbm5lY3RpbmciLCJVbnN1cHBvcnRlZEZlYXR1cmUiLCJDb25maWd1cmF0aW9uRXJyb3IiLCJUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IiLCJDb25uZWN0aW9uRXJyb3IiLCJfaGFuZGxlU3RyZWFtRmFpbHVyZSIsInJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwiLCJwdWJsaXNoZXJJbml0aWFsaXphdGlvbiIsImdlbmVyYXRlU2NyZWVuTmFtZSIsImFwcGx5UHVibGlzaFN0YXR1cyIsImFwcGx5VW5hdXRob3JpemVkIiwiYXBwbHlOb3RGb3VuZCIsImFwcGx5VW5oYW5kbGVkRXJyb3IiLCJhcHBseVNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIiwiYXBwbHlBZGRJY2VDYW5kaWRhdGVzU3RhdHVzIiwibWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzIiwiUHVibGlzaGVycyIsImNyZWF0ZVB1Ymxpc2hlciIsImluaXRpYWxpemVkIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfb2JqZWN0U3ByZWFkIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCIsInNvZnRSZXN0YXJ0SW50ZXJ2YWwiLCJwdWJsaXNoZXJDb250ZXh0IiwicGVlckNvbm5lY3Rpb25Db250ZXh0IiwibmF2aWdhdG9ySXNPbkxpbmUiLCJtZWRpYVRyYWNrcyIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkiLCJfcmVmMyQiLCJjbGllbnRPZmZlckRpc2FibGVkIiwic3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIiwic3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIiwiYXBwbHlSdGNDb25maWd1cmF0aW9uIiwic3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQiLCJjYW5jZWxEaXNjb3ZlcnkiLCJjYW5kaWRhdGUiLCJfdGhpcyRfcHVibGlzaGVyQ29udGUiLCJfcmVmNCIsIm1hcEFkZEljZUNhbmRpZGF0ZXNTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsInJldHJ5Q2FsbGJhY2siLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9jcmVhdGVBbnN3ZXJEZXNjcmlwdCIsImFuc3dlciIsIl9yZWY1IiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsIl90aGlzJF9wdWJsaXNoZXJDb250ZTIiLCJydGNQdWJsaXNoTW9uaXRvciIsImFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwicnRjU3RhdGlzdGljIiwic3RhdGlzdGljcyIsIl9hcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJvcHRpb25hbFBlZXJDb25uZWN0aW9uIiwibmV3UnRjQ29uZmlndXJhdGlvbiIsIm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfcGVlckNvbm5lY3Rpb24kY3VycmUiLCJpc0NsaWVudE9mZmVyRmxvdyIsInJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCIsImljZVJlc3RhcnQiLCJvZmZlciIsIl9fQlVJTERfVkVSU0lPTl9fIiwiX2RlZmF1bHRWZXJzaW9uIiwiVGVsZW1ldHJ5U2VydmljZSIsIl90ZWxlbWV0cnlTZXJ2aWNlIiwidmFsdWVPZiIsImxvZ1JlY29yZCIsIl9sb2dzIiwic2VuZExvZ3NJZkFibGUiLCJsb2dNZXNzYWdlcyIsIl9zZW5kTG9nc0lmQWJsZSIsIm51bWJlck9mTG9nc1RvU2VuZCIsInNpemVPZkxvZ3NUb1NlbmQiLCJnZXRJdGVtU2l6ZSIsImdldExvZ1NpemUiLCJzdW0iLCJkdXJhdGlvbiIsIl9kdXJhdGlvbiIsImlzTmVnYXRpdmUiLCJhYnMiLCJvZmZzZXQiLCJtaWxsaXNlY29uZHMiLCJzZWNvbmRzIiwibWludXRlcyIsImhvdXJzIiwicGFydHMiLCJTdHJpbmciLCJwYWRTdGFydCIsInRhcmdldExlbmd0aCIsInBhZFN0cmluZyIsInJlcGVhdCIsImRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyIsInJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmYiLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCIsIm1heCIsIm1pbiIsIl9uZXR3b3JrTW9uaXRvciIsInJlY29yZEZvcmVncm91bmRDaGFuZ2UiLCJyZWNvcmROZXR3b3JrUlRUVXBkYXRlIiwicmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUiLCJkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsInJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSIsInRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJuZXdSVFQiLCJvbGRSdHQiLCJfbGFzdE5ldHdvcmtTdGF0aXN0aWNzIiwibmV3TmV0d29ya1R5cGUiLCJvbGROZXR3b3JrVHlwZSIsIm5ld0NhcGFjaXR5Iiwib2xkQ2FwYWNpdHkiLCJmbG9hdCJdLCJzb3VyY2VSb290IjoiIn0=
9042
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7Ozs7QUNSekcscUJBQXFCLG1CQUFPLENBQUMsb0ZBQXFCO0FBQ2xELHFCQUFxQixtQkFBTyxDQUFDLG9GQUFxQjtBQUNsRCx1QkFBdUIsbUJBQU8sQ0FBQyx3RkFBdUI7QUFDdEQsZ0JBQWdCLG1CQUFPLENBQUMsMEVBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUcsRUFBRSx5QkFBeUIsU0FBUyx5QkFBeUI7QUFDaEU7QUFDQSxtQ0FBbUMseUJBQXlCLFNBQVMseUJBQXlCLGtCOzs7Ozs7VUMxQjlGO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQ0FBaUMsV0FBVztXQUM1QztXQUNBLEU7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQSxFOzs7OztXQ1BBLHdGOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RCxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTs7QUFFeUI7QUFDYTtBQUNRO0FBSzlCO0FBR2hCLCtEQUFlO0VBQ2J0b0MsR0FBRyxFQUFIQSw0Q0FBRztFQUNIMGhDLFVBQVUsRUFBVkEsbURBQVU7RUFDVi9GLGNBQWMsRUFBZEEsdURBQWNBO0FBQ2hCLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL05ldHdvcmtNb25pdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2VkZ2VBdXRoL0VkZ2VUb2tlbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2Vudmlyb25tZW50L1BhcmFtZXRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL0Rpc3Bvc2FibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZUxpc3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvTnVtYmVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9TdHJpbmdzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvQXBwZW5kZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvQ29uc29sZUFwcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dpbmdUaHJlc2hvbGQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljVHlwZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzVHlwZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Byb21pc2UvUHJvbWlzZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcHJvbWlzZS9Qcm9taXNlSGFuZGxlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjUHVibGlzaE1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9TZHBQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9SZWFkT25seVN1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1N1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1NESy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1RlbGVtZXRyeVVybC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9TdGF0ZUNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1Rva2VuQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVNb2RlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlU3RhdGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9FbmRQb2ludC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXJDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXJTdGF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUmVhbFRpbWVQdWJsaXNoZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0R1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0V4cG9uZW50aWFsQmFja29mZi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vU2Vzc2lvblRlbGVtZXRyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NvbnN0cnVjdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pc05hdGl2ZUZ1bmN0aW9uLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVSZXN0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3dyYXBOYXRpdmVTdXBlci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCAoKSA9PiB7XG5yZXR1cm4gIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge01pbGxpc2Vjb25kfSBmcm9tICcuLi91bml0cy9Vbml0cyc7XG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG5jb25zdCB2aXNpYmlsaXR5Q2hhbmdlRXZlbnQgPSAndmlzaWJpbGl0eWNoYW5nZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5SXNGb3JlZ3JvdW5kOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRm9yZWdyb3VuZDogU3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlOiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBwcml2YXRlIF9sYXN0QmFja2dyb3VuZER1cmF0aW9uOiBNaWxsaXNlY29uZCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2lzRm9yZWdyb3VuZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kID0gbmV3IFJlYWRPbmx5U3ViamVjdCh0aGlzLl9pc0ZvcmVncm91bmQpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IGlzRm9yZWdyb3VuZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUaW1lU2luY2VMYXN0Q2hhbmdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIERhdGUubm93KCkgLSB0aGlzLl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbigpOiBNaWxsaXNlY29uZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGxldCBiYWNrZ3JvdW5kRW50cnlUaW1lOiBNaWxsaXNlY29uZCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpc05vd0ZvcmVncm91bmQgPSAhR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRJc0hpZGRlbjtcblxuICAgICAgaWYgKCFpc05vd0ZvcmVncm91bmQpIHtcbiAgICAgICAgYmFja2dyb3VuZEVudHJ5VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChiYWNrZ3JvdW5kRW50cnlUaW1lKSB7XG4gICAgICAgIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPSBEYXRlLm5vdygpIC0gYmFja2dyb3VuZEVudHJ5VGltZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNGb3JlZ3JvdW5kLnZhbHVlID0gaXNOb3dGb3JlZ3JvdW5kO1xuICAgIH07XG5cbiAgICBjb25zdCB1c2VFdmVudENhcHR1cmVQaGFzZSA9IGZhbHNlO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUuYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKSkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyRGV0ZWN0b3Ige1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXggPSAvKE1TSUV8KD8hR2Vja28uKylGaXJlZm94fCg/IUFwcGxlV2ViS2l0LitDaHJvbWUuKylTYWZhcml8KD8hQXBwbGVXZWJLaXQuKylDaHJvbWV8QXBwbGVXZWJLaXQoPyEuK0Nocm9tZXwuK1NhZmFyaSl8R2Vja28oPyEuK0ZpcmVmb3gpKSg/OiB8XFwvKShbXFxkLmFwcmVdKykvZztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWUgPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck1ham9yVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNNb2JpbGUgPSAoL0FuZHJvaWR8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fE9wZXJhIE1pbmkvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0FuZHJvaWQgPSAoL0FuZHJvaWQvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNjkgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzY5LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzAuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcxID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzIgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcyLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzQuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc1ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzYgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc2LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NyA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzcuJyk7XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJOYW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJNYWpvclZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQW5kcm9pZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0FuZHJvaWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNjkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU2OTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcwO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcxKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzE7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc0O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc1KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzYoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzTW9iaWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCk7XG5cbiAgICBpZiAoYnJvd3Nlck5hbWVBbmRWZXJzaW9uICYmIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXSkge1xuICAgICAgcmV0dXJuIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVMaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3Nlck5hbWVMaXN0IHx8ICFicm93c2VyTmFtZUxpc3RbMF0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYnJvd3Nlck5hbWVMaXN0WzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3NlclZlcnNpb25MaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3NlclZlcnNpb25MaXN0IHx8ICFicm93c2VyVmVyc2lvbkxpc3RbMV0pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxWZXJzaW9uID0gYnJvd3NlclZlcnNpb25MaXN0WzFdO1xuXG4gICAgaWYgKCFmdWxsVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcihmdWxsVmVyc2lvbi5zcGxpdCgnLicpWzBdKSB8fCAwO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBjb25zdCBtc2llID0gdXNlckFnZW50LmluZGV4T2YoJ01TSUUgJyk7XG5cbiAgICBpZiAobXNpZSA+IDApIHtcbiAgICAgIC8vIElFIDEwIG9yIG9sZGVyID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcobXNpZSArIDUsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgbXNpZSkpLCAxMCl9YDtcbiAgICB9XG5cbiAgICBjb25zdCB0cmlkZW50ID0gdXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQvJyk7XG5cbiAgICBpZiAodHJpZGVudCA+IDApIHtcbiAgICAgIC8vIElFIDExID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgY29uc3QgdmVyc2lvbiA9IHVzZXJBZ2VudC5pbmRleE9mKCdydjonKTtcblxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcodmVyc2lvbiArIDMsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgdmVyc2lvbikpLCAxMCl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckRlZmF1bHRzJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIge1xuICBwdWJsaWMgc3RhdGljIGdldFN0cmluZ1ZhbHVlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIucmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJWYWx1ZShuYW1lKSB8fFxuICAgICAgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5yZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclVSSVZhbHVlKGAke25hbWV9LXVyaS1wYXJhbWV0ZXItbmFtZWApIHx8XG4gICAgICBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmRlZmF1bHRTdHJpbmdWYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Qm9vbGVhblZhbHVlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5yZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclZhbHVlKG5hbWUpO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJzEnIHx8IHZhbHVlID09PSAnT24nO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlRnJvbVVyaSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIucmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJVUklWYWx1ZShgJHtuYW1lfS11cmktcGFyYW1ldGVyLW5hbWVgKTtcblxuICAgIGlmICh2YWx1ZUZyb21VcmkpIHtcbiAgICAgIHJldHVybiB2YWx1ZUZyb21VcmkgPT09ICd0cnVlJyB8fCB2YWx1ZUZyb21VcmkgPT09ICcxJyB8fCB2YWx1ZUZyb21VcmkgPT09ICdPbic7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdEJvb2xlYW5WYWx1ZVtuYW1lXSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0U3RyaW5nVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtbWV0cmljcy1sZXZlbCc6IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCksXG4gICAgICAncGhlbml4LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNvbnNvbGUtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LXRlbGVtZXRyeS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jaGFubmVsLXRva2VuJzogJycsXG4gICAgICAncGhlbml4LXVyaSc6ICcnLFxuICAgICAgJ3BoZW5peC1iYXNlLXVyaSc6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0Qm9vbGVhblZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcyc6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1ldGFWYWx1ZSA9IEdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50UXVlcnlTZWxlY3RvcihgbWV0YVtuYW1lPScke25hbWV9J11gKTtcblxuICAgIGlmICghbWV0YVZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBtZXRhVmFsdWUuZ2V0QXR0cmlidXRlKCd2YWx1ZScpO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVVJJVmFsdWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB2YWx1ZVVSSVBhcmFtZXRlck5hbWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLnJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVmFsdWUobmFtZSk7XG5cbiAgICBpZiAoIXZhbHVlVVJJUGFyYW1ldGVyTmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTFNlYXJjaFBhcmFtcyhHbG9iYWxTY29wZS52YWx1ZS5sb2NhdGlvblNlYXJjaCkuZ2V0KHZhbHVlVVJJUGFyYW1ldGVyTmFtZSkgfHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciB7XG4gIHN0YXRpYyBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5mb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucXVldWVNaWNyb3Rhc2sodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgb3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsID0gR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRDcmVhdGVFbGVtZW50PEhUTUxJbWFnZUVsZW1lbnQ+KCdpbWcnKTtcblxuICAgIGltZy5zcmMgPSBHbG9iYWxTY29wZS52YWx1ZS5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoMTBlKzcpXSkpOyAvLyAxMDBNYiBvciBsZXNzIG9yIG1vcmUgZGVwZW5kaW5nIG9uIGFzIHlvdSB3aXNoIHRvIGZvcmNlL2ludm9rZSBHQyBjeWNsZSBydW5cbiAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLnNyYyk7XG5cbiAgICAgIGltZyA9IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNTdXBwb3J0ZWQ6IGJvb2xlYW4gPSBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uICE9PSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0dDogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgfVxuXG4gIGdldCBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBnZXQgcnR0KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0dDtcbiAgfVxuXG4gIGdldCBlZmZlY3RpdmVUeXBlKCk6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVR5cGU7XG4gIH1cblxuICBnZXQgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmsgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmtNYXggPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZWZmZWN0aXZlVHlwZSA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy50eXBlID8/ICdVbmtub3duJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5ydHQgPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpOiB2b2lkID0+IHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcblxuZXhwb3J0IGNsYXNzIFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtU2V0dXBMaXN0ZW5lcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1ldHJpY3NTZXJ2aWNlID0gU0RLLm1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX21ldHJpY1N1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdWNjZXNzKHN0cmVhbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZCwgc3RyZWFtSWQpO1xuICB9XG5cbiAgZmFpbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZFN0cmVhbU1ldHJpYyhtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZSwgc3RyZWFtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWV0cmljU3VibWl0dGVkKSB7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY1N1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldHVwVGltZSA9IG5vdyAtIHRoaXMuX3N0YXJ0VGltZTtcbiAgICBjb25zdCBtZXRyaWNOYW1lID0gbmV3IE1ldHJpY1R5cGUobWV0cmljVHlwZSkuZ2V0TmFtZSgpO1xuXG4gICAgdGhpcy5tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogc2V0dXBUaW1lfSxcbiAgICAgIHN0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gU3RyZWFtIG1ldHJpYyBbJXNdIGluIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBuZXcgRHVyYXRpb25zKHNldHVwVGltZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRWRnZVRva2VuIGZyb20gJy4vRWRnZVRva2VuJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi9FbmNvZGVkRWRnZVRva2VuJztcblxuY29uc3QgZWRnZUF1dGhUb2tlblByZWZpeCA9ICdESUdFU1Q6JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZUF1dGhQYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VkZ2VBdXRoUGFyc2VyJyk7XG5cbiAgc3RhdGljIHBhcnNlVG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBFZGdlVG9rZW4ge1xuICAgIGlmICghdGhpcy5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ1Rva2VuIGlzIG5vdCB2YWxpZCBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gYXRvYih0b2tlbi5zdWJzdHIoZWRnZUF1dGhUb2tlblByZWZpeC5sZW5ndGgpKTtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEpTT04ucGFyc2UoZGVjb2RlZFRva2VuKTtcblxuICAgICAgZWRnZVRva2VuLnRva2VuID0gSlNPTi5wYXJzZShlZGdlVG9rZW4udG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihlZGdlVG9rZW4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBwYXJzZSB0b2tlbiB2YWx1ZScsIGUpO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0b2tlbiAmJiB0b2tlbi5zdGFydHNXaXRoKGVkZ2VBdXRoVG9rZW5QcmVmaXgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5pbnRlcmZhY2UgSVRva2VuIHtcbiAgdXJpOiBVUkwgfCBudWxsO1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUVkZ2VUb2tlbiB7XG4gIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgdG9rZW46IElUb2tlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZVRva2VuIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbjogSVRva2VuO1xuXG4gIGNvbnN0cnVjdG9yKGVkZ2VUb2tlbjogSUVkZ2VUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0xvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5kZWNsYXJlIGNvbnN0IF9fRkVBVFVSRVNfXzoge1xuICBzZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBzZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRGZWF0dXJlcyB7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvZ3MoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2dzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTWV0cmljcygpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWV0cmljcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nVG9Db25zb2xlKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9sb2dUb0NvbnNvbGU7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGZWF0dXJlcygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBfX0ZFQVRVUkVTX187XG5cbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSAnc2VuZExvY2FsQ2FuZGlkYXRlcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzIDogdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ3NlbmRMb2dzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2dzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdzZW5kTWV0cmljcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTWV0cmljcyA6ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ2xvZ1RvQ29uc29sZScgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5sb2dUb0NvbnNvbGUgOiAnQWxsJztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ0FsbCc7XG4gICAgfVxuICB9XG59XG5cbkJ1aWxkRmVhdHVyZXMuYXBwbHlGZWF0dXJlcygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZlYXR1cmVFbmFibGVtZW50IHtcbiAgc3RhdGljIGdldCBjbGllbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENsaWVudCBvZmZlciB3b3JrZmxvdyBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSBpbiB0aGUgZm9sbG93aW5nIGJyb3dzZXJzXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc0IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzYgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBhZGRUcmFuY2VpdmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hyb21lIDY5LCA3MCwgNzEsIDcyIGV4cG9zZXMgYGFkZFRyYW5jZWl2ZXJgIGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseVxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzAgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU2O1xuICB9XG5cbiAgc3RhdGljIGdldCBvblRyYWNrRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjMgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hvdWxkVXNlTmF0aXZlSGxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYW1zdW5nQnJvd3Nlcic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUHJlY2FjaGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0lFJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8uZG9jdW1lbnRDcmVhdGVFbGVtZW50ID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc01vYmlsZSgpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IgPT09ICd1bmRlZmluZWQnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBSZWNlaXZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFJUQ1J0cFJlY2VpdmVyLnByb3RvdHlwZS5jcmVhdGVFbmNvZGVkU3RyZWFtcyAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwU2NyaXB0VHJhbnNmb3JtICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LkhUTUxWaWRlb0VsZW1lbnQucHJvdG90eXBlLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JlcXVlc3RBbmltYXRpb25GcmFtZVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZFxuICAgICAgJiYgKEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIHx8IEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ1NhZmFyaSc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19QQVJBTUVURVJTX186IHtcbiAgZGlzY292ZXJ5OiBJRGlzY292ZXJ5UGFyYW1ldGVyO1xufTtcblxuaW50ZXJmYWNlIElEaXNjb3ZlcnlQYXJhbWV0ZXJ7XG4gIGludGVudGlvbnM6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyYW1ldGVycyB7XG4gIHByaXZhdGUgc3RhdGljIF9kaXNjb3ZlcnlQYXJhbWV0ZXJzOiBJRGlzY292ZXJ5UGFyYW1ldGVyIDtcblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVBhcmFtZXRlcnMoKTogSURpc2NvdmVyeVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnM7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlQYXJhbWV0ZXJzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gX19QQVJBTUVURVJTX187XG5cbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSAnZGlzY292ZXJ5JyBpbiBwYXJhbWV0ZXJzID8gcGFyYW1ldGVycy5kaXNjb3ZlcnkgOiB7aW50ZW50aW9uczogJyd9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSB7aW50ZW50aW9uczogJyd9O1xuICAgIH1cbiAgfVxufVxuXG5QYXJhbWV0ZXJzLmFwcGx5UGFyYW1ldGVycygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQgSURvY3VtZW50IGZyb20gJy4vSURvY3VtZW50JztcbmltcG9ydCBJTG9jYXRpb24gZnJvbSAnLi9JTG9jYXRpb24nO1xuaW1wb3J0IElOZXR3b3JrSW5mb3JtYXRpb24gZnJvbSAnLi9JTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCBJTmF2aWdhdG9yIGZyb20gJy4vSU5hdmlnYXRvcic7XG5pbXBvcnQgSVdpbmRvdyBmcm9tICcuL0lXaW5kb3cnO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4vSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbnR5cGUgQnJvd3Nlckdsb2JhbFNjb3BlID0gSVByb3ZpZGVkR2xvYmFsU2NvcGU7XG5cbmNvbnN0IGJyb3dzZXJHbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlID0ge1xuICBkb2N1bWVudCxcbiAgbG9jYXRpb24sXG4gIG5hdmlnYXRvcixcbiAgd2luZG93XG59O1xuXG5leHBvcnQgY2xhc3MgR2xvYmFsU2NvcGUgaW1wbGVtZW50cyBJR2xvYmFsU2NvcGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5zdGFuY2UgPSBuZXcgU3ViamVjdDxJR2xvYmFsU2NvcGU+KG5ldyBHbG9iYWxTY29wZShicm93c2VyR2xvYmFsU2NvcGUpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5zdGFuY2U6IFJlYWRPbmx5U3ViamVjdDxJR2xvYmFsU2NvcGU+ID0gbmV3IFJlYWRPbmx5U3ViamVjdChHbG9iYWxTY29wZS5faW5zdGFuY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogSURvY3VtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NhdGlvbjogSUxvY2F0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0b3I6IElOYXZpZ2F0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dpbmRvdzogSVdpbmRvdztcblxuICBjb25zdHJ1Y3RvcihnbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlKSB7XG4gICAgdGhpcy5fZG9jdW1lbnQgPSBnbG9iYWxTY29wZS5kb2N1bWVudDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IGdsb2JhbFNjb3BlLmxvY2F0aW9uO1xuICAgIHRoaXMuX25hdmlnYXRvciA9IGdsb2JhbFNjb3BlLm5hdmlnYXRvcjtcbiAgICB0aGlzLl93aW5kb3cgPSBnbG9iYWxTY29wZS53aW5kb3c7XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCB0byBtYWludGFpbiBBUEkgY29uc2lzdGVuY3kgd2l0aCBQcm92aWRlZEdsb2JhbFNjb3BlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1YmxpYyBzdGF0aWMgc2V0SW5zdGFuY2UocHJvdmlkZWRHbG9iYWxTY29wZTogSVByb3ZpZGVkR2xvYmFsU2NvcGUpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIHRoZSBHbG9iYWxTY29wZScpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZSgpOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzdWJzY3JpYmUoY2FsbGJhY2s6ICh2YWx1ZTogSUdsb2JhbFNjb3BlIHwgbnVsbCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUuX3JlYWRPbmx5SW5zdGFuY2Uuc3Vic2NyaWJlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGdldCBBYm9ydENvbnRyb2xsZXIoKTogdHlwZW9mIEFib3J0Q29udHJvbGxlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5BYm9ydENvbnRyb2xsZXI7XG4gIH1cblxuICBnZXQgRm9ybURhdGEoKTogdHlwZW9mIEZvcm1EYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkZvcm1EYXRhO1xuICB9XG5cbiAgZ2V0IEhUTUxWaWRlb0VsZW1lbnQoKTogdHlwZW9mIEhUTUxWaWRlb0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuSFRNTFZpZGVvRWxlbWVudDtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbSgpOiB0eXBlb2YgTWVkaWFTdHJlYW0ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTdHJlYW07XG4gIH1cblxuICBnZXQgTWVkaWFTdHJlYW1UcmFjaygpOiB0eXBlb2YgTWVkaWFTdHJlYW1UcmFjayB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbVRyYWNrO1xuICB9XG5cbiAgZ2V0IE1lZGlhU291cmNlKCk6IHR5cGVvZiBNZWRpYVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVNvdXJjZTtcbiAgfVxuXG4gIGdldCBSVENQZWVyQ29ubmVjdGlvbigpOiB0eXBlb2YgUlRDUGVlckNvbm5lY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKCk6IHR5cGVvZiBSVENTZXNzaW9uRGVzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDU2Vzc2lvbkRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IFJUQ0ljZUNhbmRpZGF0ZSgpOiB0eXBlb2YgUlRDSWNlQ2FuZGlkYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ0ljZUNhbmRpZGF0ZTtcbiAgfVxuXG4gIGdldCBVUkwoKTogdHlwZW9mIFVSTCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkw7XG4gIH1cblxuICBnZXQgVVJMU2VhcmNoUGFyYW1zKCk6IHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuVVJMU2VhcmNoUGFyYW1zO1xuICB9XG5cbiAgZ2V0IGFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgYWRkV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5hZGRFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhckludGVydmFsKCk6IChpZD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5jbGVhckludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhclRpbWVvdXQoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFyVGltZW91dC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRDcmVhdGVFbGVtZW50KCk6IDxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHRhZzogc3RyaW5nKSA9PiBFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudC5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudEhhc0ZvY3VzKCk6ICgpID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5oYXNGb2N1cy5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudElzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2RvY3VtZW50LmhpZGRlbjtcbiAgfVxuXG4gIGdldCBkb2N1bWVudFF1ZXJ5U2VsZWN0b3IoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3Rvci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBmZXRjaCgpOiAoaW5wdXQ6IHN0cmluZyB8IFVSTCB8IFJlcXVlc3QsIGluaXQ/OiBSZXF1ZXN0SW5pdCkgPT4gUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuZmV0Y2guYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uSG9zdG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uaG9zdG5hbWU7XG4gIH1cblxuICBnZXQgbG9jYXRpb25TZWFyY2goKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uc2VhcmNoO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvckNvbm5lY3Rpb24oKTogSU5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5jb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvcklzT25MaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3Iub25MaW5lO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3dbJ19fcGhlbml4UGFnZUxvYWRUaW1lJ10gfHwgdGhpcy5fd2luZG93WydfX3BhZ2VMb2FkVGltZSddO1xuICB9XG5cbiAgZ2V0IHNlbmRCZWFjb24oKTogKCh1cmw6IHN0cmluZyB8IFVSTCwgZGF0YT86IEJvZHlJbml0IHwgbnVsbCkgPT4gYm9vbGVhbikgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3Iuc2VuZEJlYWNvblxuICAgICAgPyAodXJsLCBkYXRhKSA9PiB0aGlzLl9uYXZpZ2F0b3Iuc2VuZEJlYWNvbiEodXJsLCBkYXRhID09PSB1bmRlZmluZWQgPyBudWxsIDogZGF0YSlcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IHF1ZXVlTWljcm90YXNrKCk6IChtaWNyb3Rhc2s6ICgpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucXVldWVNaWNyb3Rhc2suYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk6IChjYWxsYmFjazogRnJhbWVSZXF1ZXN0Q2FsbGJhY2spID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgc2V0SW50ZXJ2YWwoKTogKGhhbmRsZXI6IHN0cmluZyB8IEZ1bmN0aW9uLCB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuc2V0SW50ZXJ2YWwuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHNldFRpbWVvdXQoKTogKGhhbmRsZXI6IHN0cmluZyB8IEZ1bmN0aW9uLCB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuc2V0VGltZW91dC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSBfZGlzcG9zZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2Rpc3Bvc2FibGU6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoZGlzcG9zYWJsZTogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuX2Rpc3Bvc2VkID0gZmFsc2U7XG4gICAgdGhpcy5fZGlzcG9zYWJsZSA9IGRpc3Bvc2FibGU7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kaXNwb3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2VkID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLl9kaXNwb3NhYmxlLmNhbGwodGhpcyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZUxpc3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0OiBJRGlzcG9zYWJsZVtdID0gW107XG5cbiAgYWRkKGRpc3Bvc2FibGU6IElEaXNwb3NhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5wdXNoKGRpc3Bvc2FibGUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LmZvckVhY2goZGlzcG9zYWJsZSA9PiBkaXNwb3NhYmxlLmRpc3Bvc2UoKSk7XG4gICAgdGhpcy5fbGlzdC5sZW5ndGggPSAwO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYERpc3Bvc2FibGVMaXN0W2Rpc3Bvc2FibGVzPSR7dGhpcy5fbGlzdC5sZW5ndGh9XWA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8vIEFzIGZsb2F0IGluIEVDTUFTY3JpcHQgdXNlIDY0LWJpdCBmb3JtYXQgaXQgY2Fubm90IGhhdmUvaGFuZGxlIG1vcmUgdGhhbiAxNSBzeW1ib2xzIGFmdGVyIGRvdC5cbmNvbnN0IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCA9IDE1O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOdW1iZXJzIHtcbiAgc3RhdGljIGNvdW50TnVtYmVyTGVuZ3RoKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlID0gMDtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgbnVtYmVyICo9IC0xO1xuICAgICAgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSsrO1xuICAgIH1cblxuICAgIHJldHVybiBOdW1iZXJzLmNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbChudW1iZXIpICsgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSArIChudW1iZXIgIT09IE1hdGguZmxvb3IobnVtYmVyKSA/IE51bWJlcnMuY291bnREaWdpdHNBZnRlckRlY2ltYWwobnVtYmVyKSArIDEgOiAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZpeFJvdW5kaW5nKHZhbHVlOiBudW1iZXIsIHByZWNpc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBwb3dlciA9IE1hdGgucG93KDEwLCBwcmVjaXNpb24pO1xuXG4gICAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBwb3dlcikgLyBwb3dlcjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgZGlnaXRzQmVmb3JlRGVjaW1hbCA9IDE7XG4gICAgbGV0IG51bWJlciA9IHZhbHVlO1xuXG4gICAgd2hpbGUgKG51bWJlciA+PSAxMCkge1xuICAgICAgbnVtYmVyID0gbnVtYmVyIC8gMTA7XG4gICAgICBkaWdpdHNCZWZvcmVEZWNpbWFsKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZ2l0c0JlZm9yZURlY2ltYWw7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gdmFsdWU7XG4gICAgbGV0IG1vZGlmaWVkVmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKTtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgd2hpbGUgKG1vZGlmaWVkVmFsdWUgIT09IG9yaWdpbmFsVmFsdWUgJiYgY291bnQgPCBtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgICBtb2RpZmllZFZhbHVlID0gTnVtYmVycy5maXhSb3VuZGluZyhvcmlnaW5hbFZhbHVlLCBjb3VudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ051bWJlcnMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJpbmdzIHtcbiAgc3RhdGljIHJhbmRvbShsZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgcmFuZG9tMTNDaGFyYWN0ZXJzID0gKCk6IHN0cmluZyA9PiB7XG4gICAgICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDIsIDE1KTtcbiAgICB9O1xuXG4gICAgY29uc3QgbG9vcHM6IG51bWJlciA9IE1hdGguY2VpbChsZW5ndGggLyAxMyk7XG5cbiAgICByZXR1cm4gbmV3IEFycmF5KGxvb3BzKS5maWxsKHJhbmRvbTEzQ2hhcmFjdGVycykucmVkdWNlKChzdHJpbmcsIGZ1bmMpID0+IHtcbiAgICAgIHJldHVybiBzdHJpbmcgKyBmdW5jKCk7XG4gICAgfSwgJycpLnN1YnN0cmluZygwLCBsZW5ndGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0cmluZ3MgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUoeDogbmV2ZXIpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSBbJHt4fV0uIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWRgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzZXJ0VW5yZWFjaGFibGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBlbmRlcnMge1xuICBwcml2YXRlIF9hcHBlbmRlcnM6IEFycmF5PElBcHBlbmRlcj4gPSBbXTtcblxuICBnZXQgdmFsdWUoKTogQXJyYXk8SUFwcGVuZGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVuZGVycztcbiAgfVxuXG4gIGFkZChhcHBlbmRlcjogSUFwcGVuZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLnB1c2goYXBwZW5kZXIpO1xuICB9XG5cbiAgcmVtb3ZlKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMgPSB0aGlzLl9hcHBlbmRlcnMucmVkdWNlKChpdGVtcywgaXRlbSkgPT4ge1xuICAgICAgaWYgKCEoaXRlbSA9PT0gYXBwZW5kZXIpKSB7XG4gICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9LCBbXSBhcyBBcnJheTxJQXBwZW5kZXI+KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnNvbGVBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsTWVzc2FnZSA9IGAke2RhdGUudG9JU09TdHJpbmcoKX0gWyR7Y2F0ZWdvcnl9XSBbJHtMb2dnaW5nTGV2ZWxbbG9nTGV2ZWxdfV0gJHttZXNzYWdlfWA7XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgY29uc29sZS5sb2coZnVsbE1lc3NhZ2UpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcihmdWxsTWVzc2FnZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBlbnVtIExvZ2dpbmdMZXZlbCB7XG4gIEFsbCA9IC0xLFxuICBUcmFjZSA9IDEwLFxuICBEZWJ1ZyA9IDIwLFxuICBJbmZvID0gMzAsXG4gIFdhcm4gPSA0MCxcbiAgRXJyb3IgPSA1MCxcbiAgRmF0YWwgPSA2MCxcbiAgT2ZmID0gMTAwLFxufVxuXG5leHBvcnQgdHlwZSBMb2dnaW5nTGV2ZWxUeXBlID0gJ09mZicgfCAnVHJhY2UnIHwgJ0RlYnVnJyB8ICdJbmZvJyB8ICdXYXJuJyB8ICdFcnJvcicgfCAnRmF0YWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhdGVnb3J5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGVuZGVyczogQXBwZW5kZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQ7XG5cbiAgZ2V0IGNhdGVnb3J5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NhdGVnb3J5O1xuICB9XG5cbiAgZ2V0IGFwcGVuZGVycygpOiBBcHBlbmRlcnMge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdUaHJlc2hvbGQge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICB0cmFjZSguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuVHJhY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuVHJhY2UsIGFyZ3MpO1xuICB9XG5cbiAgZGVidWcoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkRlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkRlYnVnLCBhcmdzKTtcbiAgfVxuXG4gIGluZm8oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuSW5mbywgYXJncyk7XG4gIH1cblxuICB3YXJuKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLldhcm4sIGFyZ3MpO1xuICB9XG5cbiAgZXJyb3IoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkVycm9yLCBhcmdzKTtcbiAgfVxuXG4gIGZhdGFsKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5GYXRhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5GYXRhbCwgYXJncyk7XG4gIH1cblxuICBwcml2YXRlIGxvZyhsZXZlbDogbnVtYmVyLCBhcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5yZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3MpO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLnZhbHVlLmZvckVhY2goKGFwcGVuZGVyOiBJQXBwZW5kZXIpID0+IHtcbiAgICAgIGFwcGVuZGVyLmxvZyhsZXZlbCwgbWVzc2FnZSwgdGhpcy5jYXRlZ29yeSwgZGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VQbGFjZWhvbGRlcnMoYXJnczogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IGFyZ3NbMF07XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIHdoaWxlIChyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YgJiYgYXJncy5sZW5ndGggPiAxICYmIGluZGV4ID49IDApIHtcbiAgICAgIGluZGV4ID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mKCclJywgaW5kZXgpO1xuXG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4ICsgMik7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICAvLyBFc2NhcGVkICclJScgdHVybnMgaW50byAnJSdcbiAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEpO1xuICAgICAgICAgICAgaW5kZXgrKztcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICclZCcgb3IgJyVzJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy50b1N0cmluZyhhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaic6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICVqJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBhcmdzID0gYXJncy5yZWR1Y2UoKGFjY3VtdWxhdG9yOiBzdHJpbmcsIGN1cnJlbnRWYWx1ZTogc3RyaW5nIHwgRXJyb3IsIGluZGV4OiBudW1iZXIsIGFycmF5OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBhcnJheS5sZW5ndGggJiYgY3VycmVudFZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUubWVzc2FnZSkgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArIGBbJHt0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XWA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnkoYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhY2hlOiBvYmplY3RbXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgYXJnIGluc3RhbmNlb2YgRXJyb3IgPyB0aGlzLnRvU3RyaW5nKGFyZykgOiBhcmcsXG4gICAgICAgIChfLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnPHJlY3Vyc2l2ZT4nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYWNoZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIDJcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICdbb2JqZWN0IGludmFsaWQgSlNPTi5zdHJpbmdpZnldJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VBcmd1bWVudChhcmd1bWVudDogYW55LCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyB0aGlzLnRvU3RyaW5nKGFyZ3VtZW50KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMik7XG4gIH1cblxuICBwcml2YXRlIHRvU3RyaW5nKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBkYXRhID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCB0b1N0cmluZ1N0ciA9ICcnO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSAnW29iamVjdCBpbnZhbGlkIHRvU3RyaW5nKCldJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b1N0cmluZ1N0cjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNhdGVnb3J5OiBzdHJpbmcsIGFwcGVuZGVyczogQXBwZW5kZXJzLCB0aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQpIHtcbiAgICB0aGlzLl9jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IGFwcGVuZGVycztcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJEZWZhdWx0cyB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdExvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTG9nc107XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLmxvZ1RvQ29uc29sZV07XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlciwge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJGYWN0b3J5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcnM6IHtbY2F0ZWdvcnk6IHN0cmluZ106IElMb2dnZXJ9ID0ge307XG4gIHByaXZhdGUgc3RhdGljIF9hcHBlbmRlcnM6IEFwcGVuZGVycyA9IG5ldyBBcHBlbmRlcnMoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCA9IG5ldyBMb2dnaW5nVGhyZXNob2xkKCk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uID0gbmV3IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0TG9nZ2VyKGNhdGVnb3J5OiBzdHJpbmcpOiBJTG9nZ2VyIHtcbiAgICBpZiAodHlwZW9mIGNhdGVnb3J5ICE9PSAnc3RyaW5nJykge1xuICAgICAgY2F0ZWdvcnkgPSAnU0RLJztcbiAgICB9XG5cbiAgICBjb25zdCBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgIHJldHVybiBsb2dnZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX2xvZ2dlcnNbY2F0ZWdvcnldID0gbmV3IExvZ2dlcihjYXRlZ29yeSwgdGhpcy5fYXBwZW5kZXJzLCB0aGlzLl90aHJlc2hvbGQpO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dpbmdMZXZlbCgpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgnY29uc29sZScsIExvZ2dlckZhY3RvcnkuYXBwbHlDb25zb2xlTG9nZ2VyLmJpbmQodGhpcykpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgndGVsZW1ldHJ5JywgTG9nZ2VyRmFjdG9yeS5hcHBseVRlbGVtZXRyeUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5TG9nZ2luZ0xldmVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWxvZ2dpbmctbGV2ZWwnKSBhcyBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gICAgaWYgKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pIHtcbiAgICAgIHRoaXMuX3RocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbChuYW1lOiBzdHJpbmcsIGFwcGx5QXBwZW5kZXI6IChsZXZlbDogTG9nZ2luZ0xldmVsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKGBwaGVuaXgtJHtuYW1lfS1sb2dnaW5nLWxldmVsYCkgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChwYXJhbWV0ZXJWYWx1ZSA9PT0gJ09mZicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhcHBseUFwcGVuZGVyKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlDb25zb2xlTG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIobGV2ZWwgfHwgTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5VGVsZW1ldHJ5TG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWw7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTG9nZ2VyRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nTGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUobG9nZ2luZ0xldmVsOiBMb2dnaW5nTGV2ZWwpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbCkge1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5UcmFjZTpcbiAgICAgICAgcmV0dXJuICdUcmFjZSc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5EZWJ1ZzpcbiAgICAgICAgcmV0dXJuICdEZWJ1Zyc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5JbmZvOlxuICAgICAgICByZXR1cm4gJ0luZm8nO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuV2FybjpcbiAgICAgICAgcmV0dXJuICdXYXJuJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkVycm9yOlxuICAgICAgICByZXR1cm4gJ0Vycm9yJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkZhdGFsOlxuICAgICAgICByZXR1cm4gJ0ZhdGFsJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUobG9nZ2luZ0xldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChsb2dnaW5nTGV2ZWxUeXBlOiBMb2dnaW5nTGV2ZWxUeXBlKTogTG9nZ2luZ0xldmVsIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnVHJhY2UnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLlRyYWNlO1xuICAgICAgY2FzZSAnRGVidWcnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkRlYnVnO1xuICAgICAgY2FzZSAnSW5mbyc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgICAgIGNhc2UgJ1dhcm4nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLldhcm47XG4gICAgICBjYXNlICdFcnJvcic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRXJyb3I7XG4gICAgICBjYXNlICdGYXRhbCc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRmF0YWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ1RocmVzaG9sZCB7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbDtcblxuICBnZXQgdmFsdWUoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0VGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljVHlwZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3M6IE1ldHJpY3NUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3M6IE1ldHJpY3NUeXBlKSB7XG4gICAgdGhpcy5fbWV0cmljcyA9IG1ldHJpY3M7XG4gIH1cblxuICBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE1ldHJpY3NUeXBlW3RoaXMuX21ldHJpY3NdO1xuICB9XG5cbiAgZ2V0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGhpcy5fbWV0cmljcykge1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5DaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TdGFsbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5CdWZmZXJpbmc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLk5ldHdvcmtUeXBlOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5SZXNvbHV0aW9uQ2hhbmdlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9tZXRyaWNzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuL1RlbGVtZXRyeURlZmF1bHQnO1xuXG5leHBvcnQgZW51bSBUZWxlbWV0cnlMZXZlbCB7XG4gIE9mZiA9IDEwMCxcbiAgRXNzZW50aWFsID0gMTAsXG4gIEFsbCA9IC0xXG59XG5cbmV4cG9ydCB0eXBlIFRlbGVtZXRyeUxldmVsVHlwZSA9ICdPZmYnIHwgJ0Vzc2VudGlhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbWV0cmljcyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwgPSBUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZXRyaWNzVXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgbWV0cmljc1VybC5wYXRobmFtZSA9IG1ldHJpY3NVcmwucGF0aG5hbWUgKyAnL21ldHJpY3MnO1xuXG4gICAgdGhpcy5fdXJsID0gbWV0cmljc1VybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgc2V0IGVudmlyb25tZW50KGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHNldCB0ZW5hbmN5KHRlbmFuY3k6IHN0cmluZykge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZW5hbmN5O1xuICB9XG5cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSWQ7XG4gIH1cblxuICBzZXQgc2Vzc2lvbklkKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBUZWxlbWV0cnlMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4vTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi4vc2RrL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vc2RrL0Vudmlyb25tZW50JztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0ZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2VzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBNZXRyaWNzU2VydmljZX0gPSB7fTtcblxuICBzdGF0aWMgZ2V0TWV0cmljc1NlcnZpY2UodXJsOiBzdHJpbmcpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVybCBtdXN0IGJlIGEgc3RyaW5nIGluc3RlYWQgcmVjZWl2ZWQgWyR7dHlwZW9mIHVybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcykge1xuICAgICAgcmV0dXJuIG1ldHJpY3NTZXJ2aWNlcztcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG5ldyBNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwoU0RLLnRlbGVtZXRyeUxldmVsKTtcblxuICAgIHJldHVybiBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF0gPSBuZXcgTWV0cmljc1NlcnZpY2UobWV0cmljc0NvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc3RhdGljIHNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE9iamVjdC52YWx1ZXMoTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlcyk7XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzICYmIG1ldHJpY3NTZXJ2aWNlcy5sZW5ndGgpIHtcbiAgICAgIG1ldHJpY3NTZXJ2aWNlcy5mb3JFYWNoKG1ldHJpY3NTZXJ2aWNlID0+IHtcbiAgICAgICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgICAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSB0ZWxlbWV0cnlMZXZlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRyaWNzRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEV4cG9uZW50aWFsQmFja29mZiBmcm9tICcuLi90aW1lL0V4cG9uZW50aWFsQmFja29mZic7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi9NZXRyaWNUeXBlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDEwMjQ7XG5jb25zdCBtYXhCdWZmZXJlZFJlY29yZHMgPSAyMDQ4O1xuXG5pbnRlcmZhY2UgSVZhbHVlIHtcbiAgc3RyaW5nPzogc3RyaW5nO1xuICB1aW50NjQ/OiBudW1iZXI7XG4gIGZsb2F0PzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpY1JlY29yZCB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBzdHJlYW1JZD86IHN0cmluZztcbiAgbWV0cmljOiBzdHJpbmc7XG4gIHZhbHVlPzogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlPzogSVZhbHVlO1xuICBmdWxsUXVhbGlmaWVkTmFtZTogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJTWV0cmljIHtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignTWV0cmljc1NlcnZpY2UnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHBvbmVudGlhbEJhY2tvZmY6IEV4cG9uZW50aWFsQmFja29mZjtcbiAgcHJpdmF0ZSBfbWV0cmljczogQXJyYXk8SU1ldHJpY1JlY29yZD4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZhaWx1cmVDb3VudCA9IDA7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uID0gbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpLnRoZW4obG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICB0aGlzLl9kb21haW4gPSBsb2NhdGlvbkhvc3RuYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG1ldHJpY3NDb25maWd1cmF0aW9uKCk6IE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwdXNoKG1ldHJpYzogSU1ldHJpYyk6IHZvaWQge1xuICAgIGNvbnN0IHtzdHJlYW1JZCwgdmFsdWUsIHByZXZpb3VzVmFsdWUsIHJ1bnRpbWUsIHJlc291cmNlLCBraW5kfSA9IG1ldHJpYztcbiAgICBjb25zdCBtZXRyaWNUeXBlID0gbmV3IE1ldHJpY1R5cGUobWV0cmljLm1ldHJpY1R5cGUpO1xuXG4gICAgaWYgKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA+IG1ldHJpY1R5cGUuZ2V0VGVsZW1ldHJ5TGV2ZWwoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBtZXRyaWM6IG1ldHJpY1R5cGUuZ2V0TmFtZSgpLFxuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlLFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgIHZlcnNpb246IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb24sXG4gICAgICBydW50aW1lLFxuICAgICAgcmVzb3VyY2UsXG4gICAgICBraW5kXG4gICAgfTtcblxuICAgIHRoaXMuX21ldHJpY3MucHVzaChtZXRyaWNSZWNvcmQpO1xuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lKGdsb2JhbFNjb3BlLmxvY2F0aW9uSG9zdG5hbWUpO1xuICAgICAgICBnbG9iYWxTY29wZS5zZXRUaW1lb3V0KCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSwgMCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzOiBBcnJheTxJTWV0cmljUmVjb3JkPik6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBtZXRyaWNzTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzSWZBYmxlKCk6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IDAgfHwgdGhpcy5faXNTZW5kaW5nIHx8ICFHbG9iYWxTY29wZS52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2VuZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBtZXRyaWNzTWVzc2FnZXMgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKDAsIHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgdGhpcy5fbWV0cmljcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UocmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUocmVzcG9uc2UpKSB7XG4gICAgICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSBtYXhCdWZmZXJlZFJlY29yZHMpIHtcbiAgICAgICAgICB0aGlzLl9mYWlsdXJlQ291bnQrKztcblxuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbWV0cmljcyA9IFsuLi5tZXRyaWNzTWVzc2FnZXMsIC4uLnRoaXMuX21ldHJpY3NdO1xuXG4gICAgICAgICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICAgICAgICB9LCB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9mYWlsdXJlQ291bnQpKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignVG9vIG1hbnkgY2FjaGVkIG1ldHJpYyByZWNvcmRzIFslc10sIGRyb3BwaW5nIFslc10gcmVjb3JkcycsIHRoaXMuX21ldHJpY3MubGVuZ3RoLCBtZXRyaWNzTWVzc2FnZXMubGVuZ3RoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl9mYWlsdXJlQ291bnQgPSAwO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHtzdGF0dXN9OiBSZXNwb25zZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXjVcXGR7Mn0kLy50ZXN0KHN0YXR1cy50b1N0cmluZygpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZW51bSBNZXRyaWNzVHlwZSB7XG4gIFRpbWVUb0ZpcnN0RnJhbWUsXG4gIENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUsXG4gIFN0YWxsZWQsXG4gIEJ1ZmZlcmluZyxcbiAgU2V0dXBDb21wbGV0ZWQsXG4gIFNldHVwRmFpbGVkLFxuICBSb3VuZFRyaXBUaW1lLFxuICBEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgTmV0d29ya1R5cGUsXG4gIFJlc29sdXRpb25DaGFuZ2VkLFxuICBBcHBsaWNhdGlvbkZvcmVncm91bmQsXG4gIEFwcGxpY2F0aW9uQmFja2dyb3VuZFxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXRyaWNzVHlwZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUxldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDpcbiAgICAgICAgcmV0dXJuICdFc3NlbnRpYWwnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWxUeXBlOiBUZWxlbWV0cnlMZXZlbFR5cGUpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5PZmY7XG4gICAgICBjYXNlICdFc3NlbnRpYWwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlEZWZhdWx0IHtcbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRNZXRyaWNzXTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLy8gTm90ZTogVGhpcyBQcm9taXNlIHBvbHlmaWxsIGlzIGluY2x1ZGVkIGZvciBicm93c2VyIGJ1aWxkcyBvbmx5IHRvIGFkZHJlc3MgY29tcGF0aWJpbGl0eSBpc3N1ZXNcbi8vIHdpdGggb2xkZXIgYnJvd3NlcnMgd2hvc2UgbmF0aXZlIFByb21pc2U8VD5pbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IC5maW5hbGx5LlxuXG5pbXBvcnQgUHJvbWlzZUhhbmRsZXIgZnJvbSAnLi9Qcm9taXNlSGFuZGxlcic7XG5cbmNsYXNzIFByb21pc2U8VD4ge1xuICBfc3RhdGU6IG51bWJlcjtcbiAgX2hhbmRsZWQ6IGJvb2xlYW47XG4gIF92YWx1ZTogVCB8IHVua25vd247XG4gIF9kZWZlcnJlZHM6IEFycmF5PFByb21pc2VIYW5kbGVyPFQ+PjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlXG4gIHRoZW4ob25GdWxmaWxsZWQ6IEZ1bmN0aW9uIHwgbnVsbCwgb25SZWplY3RlZDogRnVuY3Rpb24gfCBudWxsKTogUHJvbWlzZTxUPnwgdm9pZDtcblxuICBjb25zdHJ1Y3RvcihjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUHJvbWlzZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldycpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25vdCBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGUgPSAwO1xuICAgIHRoaXMuX2hhbmRsZWQgPSBmYWxzZTtcbiAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fZGVmZXJyZWRzID0gW107XG5cbiAgICB0aGlzLmRvUmVzb2x2ZShjYWxsYmFjayk7XG4gIH1cblxuICBkb1Jlc29sdmUoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgbGV0IGRvbmUgPSBmYWxzZTtcblxuICAgIHRyeSB7XG4gICAgICBjYWxsYmFjayhcbiAgICAgICAgKHZhbHVlOiBQcm9taXNlPFQ+fCBudWxsKSA9PiB7XG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgKHJlYXNvbjogUHJvbWlzZTxUPnwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcm9taXNlUmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZG9uZSA9IHRydWU7XG4gICAgICB0aGlzLnByb21pc2VSZWplY3QoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb21pc2VSZXNvbHZlKG5ld1ZhbHVlOiBQcm9taXNlPFQ+fCBudWxsIHwgdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHByb21pc2UgPSB0aGlzIGFzIFByb21pc2U8VD47XG5cbiAgICB0cnkge1xuICAgICAgLy8gUHJvbWlzZTxUPlJlc29sdXRpb24gUHJvY2VkdXJlOiBodHRwczovL2dpdGh1Yi5jb20vUHJvbWlzZXMtYXBsdXMvUHJvbWlzZXMtc3BlYyN0aGUtUHJvbWlzZS1yZXNvbHV0aW9uLXByb2NlZHVyZVxuICAgICAgaWYgKG5ld1ZhbHVlID09PSBwcm9taXNlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0EgUHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdCBzZWxmLicpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV3VmFsdWUgJiYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG5ld1ZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICAvLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgbmV4dCBsaW5lIHRvIG5vdCBkbyBleHRyYSBpZiBzdGF0ZW1lbnRzXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCB0aGVuID0gbmV3VmFsdWUudGhlbjtcblxuICAgICAgICBpZiAobmV3VmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgcHJvbWlzZS5fc3RhdGUgPSAzO1xuICAgICAgICAgIHByb21pc2UuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgcHJvbWlzZS5maW5hbGUoKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHByb21pc2UuZG9SZXNvbHZlKGZ1bmN0aW9uKCk6IHZvaWQge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuICAgICAgICAgICAgdGhlbi5hcHBseShuZXdWYWx1ZSwgYXJndW1lbnRzIGFzIHVua25vd24gYXMgW29uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb25dKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwcm9taXNlLl9zdGF0ZSA9IDE7XG4gICAgICBwcm9taXNlLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgcHJvbWlzZS5maW5hbGUoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBwcm9taXNlLnByb21pc2VSZWplY3QoZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvbWlzZVJlamVjdChuZXdWYWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gMjtcbiAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMuZmluYWxlKCk7XG4gIH1cblxuICBmaW5hbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3N0YXRlID09PSAyICYmIHRoaXMuX2RlZmVycmVkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIFByb21pc2UuX2ltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5faGFuZGxlZCkge1xuICAgICAgICAgIFByb21pc2UuX3VuaGFuZGxlZFJlamVjdGlvbih0aGlzLl92YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLl9kZWZlcnJlZHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHRoaXMuaGFuZGxlKHRoaXMuX2RlZmVycmVkc1tpXSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVmZXJyZWRzID0gW107XG4gIH1cblxuICBoYW5kbGUoZGVmZXJyZWQ6IFByb21pc2VIYW5kbGVyPFQ+KTogdm9pZCB7XG4gICAgbGV0IHByb21pc2UgPSB0aGlzIGFzIFByb21pc2U8VD47XG5cbiAgICB3aGlsZSAocHJvbWlzZS5fc3RhdGUgPT09IDMpIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLl92YWx1ZSBhcyBQcm9taXNlPFQ+O1xuICAgIH1cblxuICAgIGlmIChwcm9taXNlLl9zdGF0ZSA9PT0gMCkge1xuICAgICAgcHJvbWlzZS5fZGVmZXJyZWRzLnB1c2goZGVmZXJyZWQpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvbWlzZS5faGFuZGxlZCA9IHRydWU7XG4gICAgUHJvbWlzZS5faW1tZWRpYXRlKCgpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gcHJvbWlzZS5fc3RhdGUgPT09IDEgPyBkZWZlcnJlZC5vbkZ1bGZpbGxlZCA6IGRlZmVycmVkLm9uUmVqZWN0ZWQ7XG5cbiAgICAgIGlmIChjYWxsYmFjayA9PT0gbnVsbCkge1xuICAgICAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IDEpIHtcbiAgICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZXNvbHZlKHByb21pc2UuX3ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZWplY3QocHJvbWlzZS5fdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhwcm9taXNlLl92YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlamVjdChlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlc29sdmUocmVzdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhbGwoYXJyOiBBcnJheTxQcm9taXNlPHVua25vd24+Pik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS5hbGwgYWNjZXB0cyBhbiBhcnJheScpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycik7XG5cbiAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgICB9XG5cbiAgICAgIGxldCByZW1haW5pbmcgPSBhcmdzLmxlbmd0aDtcbiAgICAgIGNvbnN0IG1hbmFnZVJlc3BvbnNlID0gKGk6IG51bWJlciwgdmFsdWU6IFByb21pc2U8dW5rbm93bj4pOiB2b2lkID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICAgICAgY29uc3QgdGhlbiA9IHZhbHVlLnRoZW47XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGVuLmNhbGwoXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgKHZhbHVlOiBQcm9taXNlPHVua25vd24+KSA9PiBtYW5hZ2VSZXNwb25zZShpLCB2YWx1ZSksXG4gICAgICAgICAgICAgICAgcmVqZWN0XG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGFyZ3NbaV0gPSB2YWx1ZTtcblxuICAgICAgICAgIGlmICgtLXJlbWFpbmluZyA9PT0gMCkge1xuICAgICAgICAgICAgcmVzb2x2ZShhcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG1hbmFnZVJlc3BvbnNlKGksIGFyZ3NbaV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHJlc29sdmUodmFsdWU6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHJlc29sdmUodmFsdWUpKTtcbiAgfVxuXG4gIHN0YXRpYyByZWplY3QodmFsdWU6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKF86IHVuZGVmaW5lZCwgcmVqZWN0OiBGdW5jdGlvbikgPT4gcmVqZWN0KHZhbHVlKSk7XG4gIH1cblxuICBzdGF0aWMgcmFjZShhcnI6IEFycmF5PFByb21pc2U8dW5rbm93bj4+KTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgVHlwZUVycm9yKCdQcm9taXNlLnJhY2UgYWNjZXB0cyBhbiBhcnJheScpKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGFyci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoYXJyW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgX2ltbWVkaWF0ZShjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBpZ25vcmVkID0gd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIDApO1xuICB9XG5cbiAgc3RhdGljIF91bmhhbmRsZWRSZWplY3Rpb24oZXJyb3I6IFByb21pc2U8dW5rbm93bj58IG51bGwgfCB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1Bvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjonLCBlcnJvcik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgIH1cbiAgfVxufVxuXG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZVxuUHJvbWlzZS5wcm90b3R5cGVbJ2NhdGNoJ10gPSBmdW5jdGlvbihvblJlamVjdGVkOiBGdW5jdGlvbik6IHVua25vd24ge1xuICByZXR1cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0ZWQpO1xufTtcbi8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBwcm90b3R5cGUgY2hhbmdlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5Qcm9taXNlLnByb3RvdHlwZVsndGhlbiddID0gZnVuY3Rpb24ob25GdWxmaWxsZWQ6IEZ1bmN0aW9uLCBvblJlamVjdGVkOiBGdW5jdGlvbik6IFByb21pc2U8dW5rbm93bj58IHZvaWQge1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKCk6IG51bGwgPT4gbnVsbCk7XG5cbiAgdGhpcy5oYW5kbGUobmV3IFByb21pc2VIYW5kbGVyPHVua25vd24+KG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBwcm9taXNlKSk7XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHByb3RvdHlwZSBjaGFuZ2Vcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcblByb21pc2UucHJvdG90eXBlWydmaW5hbGx5J10gPSBmdW5jdGlvbihjYWxsYmFjazogRnVuY3Rpb24pOiBQcm9taXNlPHVua25vd24+fCB2b2lkIHtcbiAgcmV0dXJuIHRoaXMudGhlbihcbiAgICAodmFsdWU6IFByb21pc2U8dW5rbm93bj58IHVuZGVmaW5lZCkgPT4gUHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrKCkpLnRoZW4oKCkgPT4gdmFsdWUsICgpOiBudWxsID0+IG51bGwpLFxuICAgIChyZWFzb246IEVycm9yIHwgc3RyaW5nKSA9PiBQcm9taXNlLnJlc29sdmUoY2FsbGJhY2soKSkudGhlbigoKSA9PiBQcm9taXNlLnJlamVjdChyZWFzb24pLCAoKTogbnVsbCA9PiBudWxsKVxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbWlzZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBQcm9taXNlIGZyb20gJy4vUHJvbWlzZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb21pc2VIYW5kbGVyPFQ+IHtcbiAgb25GdWxmaWxsZWQ6IEZ1bmN0aW9uIHwgbnVsbDtcbiAgb25SZWplY3RlZDogRnVuY3Rpb24gfCBudWxsO1xuICBwcm9taXNlOiBQcm9taXNlPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb24sIHByb21pc2U6IFByb21pc2U8VD4pIHtcbiAgICB0aGlzLm9uRnVsZmlsbGVkID0gdHlwZW9mIG9uRnVsZmlsbGVkID09PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiBudWxsO1xuICAgIHRoaXMub25SZWplY3RlZCA9IHR5cGVvZiBvblJlamVjdGVkID09PSAnZnVuY3Rpb24nID8gb25SZWplY3RlZCA6IG51bGw7XG4gICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHtcbiAgYXVkaW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICB2aWRlb1RyYW5zY2VpdmVycz86IFJUQ1J0cFRyYW5zY2VpdmVyW107XG4gIHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb247XG4gIGxvY2FsT2ZmZXI6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmV4cG9ydCBlbnVtIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIERpc2FibGVkLFxuICBFbmFibGVkXG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHJhY2tLaW5kczogKCdhdWRpbycgfCAndmlkZW8nKVtdID0gWydhdWRpbycsICd2aWRlbyddO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1BlZXJDb25uZWN0aW9uU2VydmljZScpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcGVlckNvbm5lY3Rpb25GYWN0b3J5OiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4obmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSk7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZWQ6IHtcbiAgICBkaXJlY3Rpb24/OiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjtcbiAgICBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+O1xuICB9IHwgbnVsbDtcblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNQcmVjYWNoaW5nRW5hYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHByZS1jYWNoZSBwZWVyIGNvbm5lY3Rpb24gb2ZmZXInLCBlKSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpOiBQcm9taXNlPHsgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHwgdm9pZD47IGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gfT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyxcbiAgICAgIHBlZXJDb25uZWN0aW9uOiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9KVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcihkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uID0gJ3JlY3Zvbmx5JywgdHJhY2tLaW5kcyA9IGRlZmF1bHRUcmFja0tpbmRzLCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCk6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PiB7XG4gICAgaWYgKFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkICYmIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLmRpcmVjdGlvbiA9PT0gZGlyZWN0aW9uICYmIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkICYmIHRoaXMuaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tLaW5kcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQucGVlckNvbm5lY3Rpb247XG5cbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCA/IHtlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkVuYWJsZWR9IDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pXG4gICAgICAudGhlbihhc3luYyBwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0FkZFRyYW5zY2VpdmVyO1xuICAgICAgICBjb25zdCBhdWRpb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuICAgICAgICBjb25zdCB2aWRlb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuXG4gICAgICAgIGlmIChzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKSB7XG4gICAgICAgICAgdHJhY2tLaW5kcy5mb3JFYWNoKGtpbmQgPT4ge1xuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgdmlkZW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIodW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gZGlyZWN0aW9uID09PSAncmVjdm9ubHknID8ge1xuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICB9IDoge307XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tzS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSk6IGJvb2xlYW4ge1xuICAgIGlmICh0cmFja3NLaW5kcy5sZW5ndGggIT09IGRlZmF1bHRUcmFja0tpbmRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50VHJhY2tLaW5kcyA9IChhcnJheTogKCdhdWRpbycgfCAndmlkZW8nKVtdKSA9PiBhcnJheS5yZWR1Y2UoKHRyYWNrS2luZENvdW50LCBraW5kKSA9PiB7XG4gICAgICB0cmFja0tpbmRDb3VudFtraW5kXSA9ICh0cmFja0tpbmRDb3VudFtraW5kXSB8fCAwKSArIDE7XG5cbiAgICAgIHJldHVybiB0cmFja0tpbmRDb3VudDtcbiAgICB9LCB7XG4gICAgICBhdWRpbzogMCxcbiAgICAgIHZpZGVvOiAwXG4gICAgfSk7XG4gICAgY29uc3QgY291bnRlZFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHModHJhY2tzS2luZHMpO1xuICAgIGNvbnN0IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyA9IGNvdW50VHJhY2tLaW5kcyhkZWZhdWx0VHJhY2tLaW5kcyk7XG5cbiAgICByZXR1cm4gY291bnRlZFRyYWNrS2luZHMuYXVkaW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy5hdWRpbyAmJiBjb3VudGVkVHJhY2tLaW5kcy52aWRlbyA9PT0gY291bnRlZERlZmF1bHRUcmFja0tpbmRzLnZpZGVvO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BlZXJDb25uZWN0aW9uU2VydmljZSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIHtcbiAgc3RhdGljIHRydW5jYXRlSWNlU2VydmVycyhjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgIGlmICghY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdXJsczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDI7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgdXJsID0gY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdO1xuXG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICB1cmxzLnB1c2goY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICB1cmxzOiB1cmxzLFxuICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcblxuICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi9TZHBQYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB7XG4gIFtraW5kOiBzdHJpbmddOiBJUnRjUHVibGlzaFN0YXRpc3RpYztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnQge1xuICByZXN1bHQ6ICgpID0+IElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtIGV4dGVuZHMgUlRDU3RhdHNSZXBvcnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWVzOiAoKSA9PiBzdHJpbmdbXTtcbiAgc3RhdDogKG5hbWU6IHN0cmluZykgPT4gbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNQdWJsaXNoU3RhdGlzdGljIHtcbiAgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA/OiBudW1iZXI7XG4gIHNzcmM6IHN0cmluZztcbiAgbWVkaWFUeXBlOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBiaXRyYXRlPzogbnVtYmVyO1xuICBieXRlc1NlbnQ6IG51bWJlcjtcbiAgcGFja2V0c1NlbnQ6IG51bWJlcjtcbiAgcmV0cmFuc21pdHRlZEJ5dGVzU2VudD86IG51bWJlcjtcbiAgZmlyQ291bnQ/OiBudW1iZXI7XG4gIGZyYW1lSGVpZ2h0PzogbnVtYmVyO1xuICBmcmFtZVdpZHRoPzogbnVtYmVyO1xuICBmcmFtZXNFbmNvZGVkPzogbnVtYmVyO1xuICBmcmFtZXNTZW50PzogbnVtYmVyO1xuICBoZWFkZXJCeXRlc1NlbnQ/OiBudW1iZXI7XG4gIGh1Z2VGcmFtZXNTZW50PzogbnVtYmVyO1xuICBwbGlDb3VudD86IG51bWJlcjtcbiAgcXBTdW0/OiBudW1iZXI7XG4gIHRvdGFsRW5jb2RlVGltZT86IG51bWJlcjtcbiAgdG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQ/OiBudW1iZXI7XG4gIGNvZGVjOiBzdHJpbmc7XG4gIGZwcz86IG51bWJlcjtcbiAgcm91bmRUcmlwVGltZTogbnVtYmVyO1xufVxuXG5jb25zdCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0ID0gMTAwMDtcbmNvbnN0IGdldFN0YXRzVGltZW91dER1cmF0aW9uID0gNTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjUHVibGlzaE1vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdSdGNQdWJsaXNoTW9uaXRvcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFZpZGVvQ29kZWM6IHN0cmluZyA9ICd1bmtub3duJztcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkQXVkaW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydGNTdGF0aXN0aWM6IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljPiA9IG5ldyBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4oe30pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiB8IG51bGw7XG4gIHByaXZhdGUgX2lzTW9uaXRvclJ1bm5pbmcgPSB0cnVlO1xuICBwcml2YXRlIF91cGRhdGVUaW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX21vbml0b3JHZW5lcmF0aW9uID0gMDtcbiAgcHJpdmF0ZSBfYXZhaWxhYmxlVHJhY2tzOiB7XG4gICAgYXVkaW86IGJvb2xlYW47XG4gICAgdmlkZW86IGJvb2xlYW47XG4gIH0gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXIsIGlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBwZWVyQ29ubmVjdGlvbjtcbiAgICB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lID0gZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbiAmJiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudExvY2FsRGVzY3JpcHRpb24/LnNkcCAmJiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uPy5zZHApIHtcbiAgICAgIGNvbnN0IHBhcnNlZExvY2FsRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uLnNkcCk7XG4gICAgICBjb25zdCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiA9IG5ldyBTZHBQYXJzZXIodGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgPSBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5hdWRpb0NvZGVjO1xuICAgICAgdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyA9IHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLnZpZGVvQ29kZWM7XG5cbiAgICAgIHRoaXMuX2F2YWlsYWJsZVRyYWNrcyA9IHtcbiAgICAgICAgYXVkaW86IHBhcnNlZExvY2FsRGVzY3JpcHRpb24uaXNBdWRpb1RyYWNrRW5hYmxlZCAmJiBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5pc0F1ZGlvVHJhY2tFbmFibGVkLFxuICAgICAgICB2aWRlbzogcGFyc2VkTG9jYWxEZXNjcmlwdGlvbi5pc1ZpZGVvVHJhY2tFbmFibGVkICYmIHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLmlzVmlkZW9UcmFja0VuYWJsZWRcbiAgICAgIH07XG5cbiAgICAgIGxldCBpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayA9IHRydWU7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChcbiAgICAgICAgaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShmb3JlZ3JvdW5kID0+IHtcbiAgICAgICAgICBpZiAoaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWZvcmVncm91bmQgfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJbnZhbGlkYXRlIGFueSBpbi1mbGlnaHQgcG9sbCBmcm9tIGJlZm9yZSB0aGUgZnJlZXplXG4gICAgICAgICAgdGhpcy5fbW9uaXRvckdlbmVyYXRpb24rKztcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZW91dCk7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1Jlc3RhcnRpbmcgc3RhdHMgcG9sbGluZyBhZnRlciBmb3JlZ3JvdW5kIHRyYW5zaXRpb24nKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpO1xuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljKCk6IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0Y1N0YXRpc3RpYztcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKys7XG4gICAgdGhpcy5faXNNb25pdG9yUnVubmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHtcbiAgICAgICAgYXVkaW86IDAsXG4gICAgICAgIHZpZGVvOiAwXG4gICAgICB9O1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZ2VuZXJhdGlvbiA9IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uO1xuICAgIC8vIFNhZmFyaSAxMSBkb2VzbnQgaGF2ZSBraW5kIG9yIG1lZGlhVHlwZSBzbyB3ZSBuZWVkIHRvIHRha2UgaXQgZnJvbSB0aGUgaW5ib3VuZC1ydHAgb2JqZWN0IGlkXG4gICAgY29uc3QgZ2V0S2luZEZvclNhZmFyaTExID0gKGl0ZW06IHtpZDogc3RyaW5nfSk6IHN0cmluZyA9PiBpdGVtLmlkLmluY2x1ZGVzKCdBdWRpbycpID8gJ2F1ZGlvJyA6IGl0ZW0uaWQuaW5jbHVkZXMoJ1ZpZGVvJykgPyAndmlkZW8nIDogJyc7XG4gICAgbGV0IHRpbWVvdXRIYW5kbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGF0c1Byb21pc2UgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHMobnVsbCk7XG5cbiAgICAgIGlmICghc3RhdHNQcm9taXNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZTx1bmRlZmluZWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICB0aW1lb3V0SGFuZGxlID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKHVuZGVmaW5lZCksIGdldFN0YXRzVGltZW91dER1cmF0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBQcm9taXNlLnJhY2UoW3N0YXRzUHJvbWlzZSwgdGltZW91dFByb21pc2VdKTtcblxuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdGF0cykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ2dldFN0YXRzKCkgdGltZWQgb3V0LCBza2lwcGluZyBzdGF0cyBwcm9jZXNzaW5nJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBydGNTdGF0aXN0aWNzOiBJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgPSB7fTtcbiAgICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgICAgICBsZXQgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgICAgICBzdGF0cy5mb3JFYWNoKHJlcG9ydCA9PiB7XG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSkge1xuICAgICAgICAgICAgcm91bmRUcmlwVGltZSA9IHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSAqIDEwMDA7XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWydhdWRpbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFNlbnRUaW1lc3RhbXA7XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWydhdWRpbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ291dGJvdW5kLXJ0cCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGtpbmQ6ICd2aWRlbycgfCAnYXVkaW8nIHwgdW5kZWZpbmVkID0gcmVwb3J0LmtpbmQgfHwgcmVwb3J0Lm1lZGlhVHlwZSB8fCBnZXRLaW5kRm9yU2FmYXJpMTEocmVwb3J0KTtcbiAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICBzdGF0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gcmVwb3J0LmNvZGVjSWQpIHtcbiAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl9hdmFpbGFibGVUcmFja3M/LltraW5kXSkge1xuICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcG9ydC5ieXRlc1NlbnQgfHwgMDtcbiAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNCeXRlc1NlbnQgPSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8uYnl0ZXNTZW50ID8/IDA7XG4gICAgICAgICAgICAgIGNvbnN0IGJ5dGVzRGVsdGEgPSBieXRlcyAtIHByZXZpb3VzQnl0ZXNTZW50O1xuICAgICAgICAgICAgICBjb25zdCB0aW1lRGVsdGEgPSByZXBvcnQudGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LnRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgY29uc3QgYml0cmF0ZSA9IGJ5dGVzRGVsdGEgJiYgdGltZURlbHRhID8gTWF0aC5mbG9vcig4ICogYnl0ZXNEZWx0YSAvXG4gICAgICAgICAgICAgICAgdGltZURlbHRhICogMTAwMCkgOiAwO1xuXG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0gPSB7XG4gICAgICAgICAgICAgICAgc3NyYzogcmVwb3J0LnNzcmMsXG4gICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBraW5kLFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogcmVwb3J0LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICBiaXRyYXRlLFxuICAgICAgICAgICAgICAgIGJ5dGVzU2VudDogcmVwb3J0LmJ5dGVzU2VudCxcbiAgICAgICAgICAgICAgICBwYWNrZXRzU2VudDogcmVwb3J0LnBhY2tldHNTZW50LFxuICAgICAgICAgICAgICAgIHJldHJhbnNtaXR0ZWRCeXRlc1NlbnQ6IHJlcG9ydC5yZXRyYW5zbWl0dGVkQnl0ZXNTZW50LFxuICAgICAgICAgICAgICAgIGNvZGVjOiBjb2RlYyB8fCB0aGlzLmdldENvZGVjQnlUeXBlKGtpbmQpLFxuICAgICAgICAgICAgICAgIHJvdW5kVHJpcFRpbWVcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBpZiAocmVwb3J0Lmxhc3RQYWNrZXRTZW50VGltZXN0YW1wIHx8IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXS5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZmlyQ291bnQnXSA9IHJlcG9ydC5maXJDb3VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZUhlaWdodCddID0gcmVwb3J0LmZyYW1lSGVpZ2h0O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lV2lkdGgnXSA9IHJlcG9ydC5mcmFtZVdpZHRoO1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lc0VuY29kZWQnXSA9IHJlcG9ydC5mcmFtZXNFbmNvZGVkO1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lc1NlbnQnXSA9IHJlcG9ydC5mcmFtZXNTZW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2hlYWRlckJ5dGVzU2VudCddID0gcmVwb3J0LmhlYWRlckJ5dGVzU2VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydodWdlRnJhbWVzU2VudCddID0gcmVwb3J0Lmh1Z2VGcmFtZXNTZW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3BsaUNvdW50J10gPSByZXBvcnQucGxpQ291bnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsncXBTdW0nXSA9IHJlcG9ydC5xcFN1bTtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWyd0b3RhbEVuY29kZVRpbWUnXSA9IHJlcG9ydC50b3RhbEVuY29kZVRpbWU7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsndG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQnXSA9IHJlcG9ydC50b3RhbEVuY29kZWRCeXRlc1RhcmdldDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LnZpZGVvPy5mcmFtZXNFbmNvZGVkKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmcHMgPSAocmVwb3J0LmZyYW1lc0VuY29kZWQgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8uZnJhbWVzRW5jb2RlZCkgL1xuICAgICAgICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW2tpbmRdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgICAgICAgICAxMDAwO1xuXG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcHMnXSA9IGZwcyA/IE1hdGgucm91bmQoZnBzICogMTAwKSAvIDEwMCA6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgPSBydGNTdGF0aXN0aWNzO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24gfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIud2FybignZ2V0U3RhdHMoKSByZWplY3RlZCcsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc01vbml0b3JSdW5uaW5nICYmIGdlbmVyYXRpb24gPT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKSB7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWMoKSwgdXBkYXRlU3RhdGlzdGljVGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2RlY0J5VHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkQXVkaW9Db2RlYyB8fCAndW5rbm93bic7XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRWaWRlb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZHBQYXJzZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZHA6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXVkaW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzQXVkaW9UcmFja0VuYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzVmlkZW9UcmFja0VuYWJsZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2RwOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZHAgPSBzZHA7XG5cbiAgICBjb25zdCBzZHBTcGxpdEJ5TGluZXMgPSB0aGlzLl9zZHAuc3BsaXQoLyhcXHJcXG58XFxyfFxcbikvKTtcbiAgICBjb25zdCBzZHBTcGxpdEJ5VHJhY2tzID0gdGhpcy5fc2RwLnNwbGl0KC8oPzpefFtcXHJcXG5dKW09Lyk7XG5cbiAgICB0aGlzLl9hdWRpb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCdhdWRpbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5fdmlkZW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygndmlkZW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQgPSB0aGlzLmlzVHJhY2tCeVR5cGVFbmFibGVkKCdhdWRpbycsIHNkcFNwbGl0QnlUcmFja3MpO1xuICAgIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQgPSB0aGlzLmlzVHJhY2tCeVR5cGVFbmFibGVkKCd2aWRlbycsIHNkcFNwbGl0QnlUcmFja3MpO1xuICB9XG5cbiAgZ2V0IGF1ZGlvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXVkaW9Db2RlYztcbiAgfVxuXG4gIGdldCB2aWRlb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZGVvQ29kZWM7XG4gIH1cblxuICBnZXQgaXNBdWRpb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpc1ZpZGVvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RyYWNrQnlUeXBlRW5hYmxlZCh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlUcmFja3M6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2RwU2VjdGlvbkZvclR5cGUgPSBzZHBTcGxpdEJ5VHJhY2tzLmZpbmQoc2RwVHJhY2sgPT4gc2RwVHJhY2suc3RhcnRzV2l0aCh0eXBlKSk7XG5cbiAgICBpZiAoIXNkcFNlY3Rpb25Gb3JUeXBlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICFzZHBTZWN0aW9uRm9yVHlwZS5pbmNsdWRlcyhgYT1pbmFjdGl2ZWApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvZGVjKHR5cGU6IHN0cmluZywgc2RwU3BsaXRCeUxpbmVzOiBzdHJpbmcgW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ0bWFwID0gc2RwU3BsaXRCeUxpbmVzLmZpbmQoc2RwTGluZSA9PiBzZHBMaW5lLmluY2x1ZGVzKGBtPSR7dHlwZX1gKSk/LnNwbGl0KCcgJylbM10gfHwgJyc7XG4gICAgY29uc3QgdXNlZENvZGVjTGluZSA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgYT1ydHBtYXA6JHtydG1hcH1gKSk7XG4gICAgY29uc3QgdXNlZENvZGVjID0gdXNlZENvZGVjTGluZT8uc3BsaXQoJyAnKVsxXSB8fCAnJztcbiAgICBjb25zdCBjb2RlY05hbWUgPSB1c2VkQ29kZWMuc3BsaXQoJy8nKVswXTtcblxuICAgIHJldHVybiBjb2RlY05hbWU7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IHtJTGVnYWN5UlRDU3RhdHNSZXBvcnR9IGZyb20gJy4vUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuXG5jbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb24gaW1wbGVtZW50cyBJUGVlckNvbm5lY3Rpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignVmFuaWxsYVBlZXJDb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb24pIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQud2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbiBjbGFzcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvblxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuUlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBnZXQgbmF0aXZlKCk6IFJUQ1BlZXJDb25uZWN0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudExvY2FsRGVzY3JpcHRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBjb25uZWN0aW9uU3RhdGUoKTogUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY29ubmVjdGlvblN0YXRlIHx8IG51bGw7XG4gIH1cblxuICBnZXQgaWNlQ29ubmVjdGlvblN0YXRlKCk6IFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uaWNlQ29ubmVjdGlvblN0YXRlIHx8IG51bGw7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldENvbmZpZ3VyYXRpb24gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LnNldENvbmZpZ3VyYXRpb24gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNHZXRUcmFuc2NlaXZlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFGZWF0dXJlRW5hYmxlbWVudC5nZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFRyYW5zY2VpdmVycyA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkICYmIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uYWRkVHJhbnNjZWl2ZXIgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBhc3luYyBjcmVhdGVPZmZlcihvcHRpb25zPzogUlRDT2ZmZXJPcHRpb25zKTogUHJvbWlzZTxSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgY3JlYXRlT2ZmZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlQW5zd2VyKG9wdGlvbnM/OiBSVENBbnN3ZXJPcHRpb25zKTogUHJvbWlzZTxSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgY3JlYXRlQW5zd2VyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihyZXNvbHZlLCByZWplY3QsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgc2V0TG9jYWxEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCA/XG4gICAgICBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSA6IGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc0NyeXB0byA9IGRlc2NyaXB0aW9uLnNkcD8ubWF0Y2goL2E9Y3J5cHRvOi9pKTtcblxuICAgIGlmIChoYXNDcnlwdG8pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTRFAgYT1jcnlwdG8gaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCA/XG4gICAgICBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSA6IGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIGdldFNlbmRlcnMoKTogUlRDUnRwU2VuZGVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U2VuZGVycygpO1xuICB9XG5cbiAgZ2V0UmVjZWl2ZXJzKCk6IFJUQ1J0cFJlY2VpdmVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0UmVjZWl2ZXJzKCk7XG4gIH1cblxuICBnZXRTdGF0cyhzZWxlY3Rvcj86IE1lZGlhU3RyZWFtVHJhY2sgfCBudWxsKTogUHJvbWlzZTxSVENTdGF0c1JlcG9ydD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMoc2VsZWN0b3IpO1xuICB9XG5cbiAgZ2V0U3RhdHNMZWdhY3koKTogUHJvbWlzZTxJTGVnYWN5UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgLy8gSWdub3JlZCBkdWUgdG8gdHlwZXNjcmlwdCBub3QgaGF2aW5nIGxlZ2FjeSAnZ2V0U3RhdHMnIG1ldGhvZCB0eXBlIGRlZmluaXRpb25cbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSAnZ2V0U3RhdHMnIG1ldGhvZCBmb3JcbiAgICAgIC8vIENocm9tZUA8PSA2NiBkZXRhaWxlZCBoZXJlOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02Mjc4MTZcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMocmVzb2x2ZSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRFdmVudExpc3RlbmVyPFQgZXh0ZW5kcyBrZXlvZiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwPih0eXBlOiBULCBsaXN0ZW5lcjogKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFtUXSkgPT4gdW5rbm93biwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXI8VCBleHRlbmRzIGtleW9mIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXA+KHR5cGU6IFQsIGxpc3RlbmVyOiAodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwW1RdKSA9PiB1bmtub3duLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0VHJhbnNjZWl2ZXJzKCk6IFJUQ1J0cFRyYW5zY2VpdmVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCk7XG4gIH1cblxuICBhZGRUcmFuc2NlaXZlcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCk6IFJUQ1J0cFRyYW5zY2VpdmVyIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKG5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgYWRkU3RyZWFtKG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSk6IHZvaWQge1xuICAgIG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYWNrKHRyYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENvbmZpZ3VyYXRpb24oKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRDb25maWd1cmF0aW9uKCk7XG4gIH1cblxuICBzZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHNldCBvbnRyYWNrKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub250cmFjayA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb250cmFjaygpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2s7XG4gIH1cblxuICBzZXQgb25pY2VjYW5kaWRhdGUoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2VjYW5kaWRhdGUoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZTtcbiAgfVxuXG4gIHNldCBvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBzZXQgb25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmNsb3NlKCk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBWYW5pbGxhUGVlckNvbm5lY3Rpb247IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbiBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkgaW1wbGVtZW50cyBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IHtcbiAgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+KHJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZShuZXcgVmFuaWxsYVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4vU3ViamVjdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWRPbmx5U3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YmplY3Q6IFN1YmplY3Q8VD47XG5cbiAgY29uc3RydWN0b3Ioc3ViamVjdDogU3ViamVjdDxUPikge1xuICAgIHRoaXMuX3N1YmplY3QgPSBzdWJqZWN0O1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAodmFsdWU6IFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBJQ29tcGFyYWJsZSBmcm9tICcuLi9sYW5nL0lDb21wYXJhYmxlJztcblxuY2xhc3MgRGlzcG9zYWJsZUxpc3RlbmVyPFQ+IGV4dGVuZHMgRGlzcG9zYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGxpc3RlbmVyczogVFtdLCBsaXN0ZW5lcjogVCkge1xuICAgIHN1cGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGlkeCA9IGxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcblxuICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiAoKHZhbHVlOiBUKSA9PiB2b2lkKVtdO1xuICBwcml2YXRlIF92YWx1ZTogVDtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCkge1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IFQpIHtcbiAgICBsZXQgY2hhbmdlZCA9IHRoaXMuX3ZhbHVlICE9PSB2YWx1ZTtcblxuICAgIGlmIChjaGFuZ2VkICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBjb21wYXJhYmxlID0gdmFsdWUgYXMgdW5rbm93biBhcyBJQ29tcGFyYWJsZTxUPjtcblxuICAgICAgaWYgKHR5cGVvZiBjb21wYXJhYmxlLmVxdWFscyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjaGFuZ2VkID0gIWNvbXBhcmFibGUuZXF1YWxzKHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWNoYW5nZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBbLi4udGhpcy5fbGlzdGVuZXJzXSkge1xuICAgICAgbGlzdGVuZXIodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG5cbiAgICBsaXN0ZW5lcih0aGlzLl92YWx1ZSk7XG5cbiAgICByZXR1cm4gbmV3IERpc3Bvc2FibGVMaXN0ZW5lcjwodmFsdWU6IFQpID0+IHZvaWQ+KHRoaXMuX2xpc3RlbmVycywgbGlzdGVuZXIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHN0YXRpYyBnZXRFbnZpcm9ubWVudEZyb21VcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgICByZXR1cm4gYmFzZVVSTC5vcmlnaW47XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9JR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtHbG9iYWxTY29wZX0gZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IFN0cmluZ3MgZnJvbSAnLi4vbGFuZy9TdHJpbmdzJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgQ29uc29sZUFwcGVuZGVyIGZyb20gJy4uL2xvZ2dlci9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiwge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuaW1wb3J0IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIGZyb20gJy4uL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcic7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuLi9ydGMvSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIGZyb20gJy4uL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeVVybCBmcm9tICcuL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi9FbnZpcm9ubWVudCc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IHtTaGFrYVBsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lTaGFrYVBsYXllcic7XG5pbXBvcnQge0hsc1BsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lIbHNQbGF5ZXInO1xuaW1wb3J0IHtXZWJQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JV2ViUGxheWVyJztcbmltcG9ydCBJUHJvdmlkZWRHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9JUHJvdmlkZWRHbG9iYWxTY29wZSc7XG5cbmNvbnN0IHBhZ2VMb2FkVGltZSA9IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCkudmFsdWU/LnBhZ2VMb2FkVGltZSB8fCBEYXRlLm5vdygpO1xuXG5pbnRlcmZhY2UgSUluaXRPcHRpb25zIHtcbiAgZGlzY292ZXJ5VXJpPzogc3RyaW5nO1xuICBwZWVyQ29ubmVjdGlvbkZhY3Rvcnk/OiBJUGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB0ZWxlbWV0cnlMZXZlbD86IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nZ2luZ0xldmVsPzogTG9nZ2luZ0xldmVsVHlwZTtcbiAgY29uc29sZUxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0/OiBib29sZWFuO1xuICBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZT86IGJvb2xlYW47XG4gIHdlYlBsYXllckxvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgc2hha2FQbGF5ZXJMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgaGxzSnNMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNESyB7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZScpO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3dlYlBsYXllckxvYWRlcjogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfc2hha2FQbGF5ZXJMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfaGxzSnNMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yOiBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB8IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIF9lbnZpcm9ubWVudDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlVcmw6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gODtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeUxldmVsOiBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPiA9IG5ldyBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPihUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCk7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoQnVpbGRGZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3RlbmFuY3k6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfY2xpZW50U2Vzc2lvbklkOiBzdHJpbmcgPSBTdHJpbmdzLnJhbmRvbSgzMik7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2FkZWRUaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1NESycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5pdGlhbGl6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluaXRpYWxpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KFNESy5faW5pdGlhbGl6ZWQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlEaXNjb3ZlcnlVcmk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+KERpc2NvdmVyeVVyaS51cmkpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4oUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeSk7XG5cbiAgc3RhdGljIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IFN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZW5hbmN5KCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGNsaWVudFNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTREsuX2NsaWVudFNlc3Npb25JZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9hZGVkVGltZXN0YW1wKCk6IERhdGUge1xuICAgIHJldHVybiBTREsuX2xvYWRlZFRpbWVzdGFtcDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaW5pdGlhbGl6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seUluaXRpYWxpemVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlVcmkoKTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5RGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljUmV0cnlPbkZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0O1xuICB9XG5cbiAgc3RhdGljIGdldCBza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2ViUGxheWVyTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dlYlBsYXllckxvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hha2FQbGF5ZXJMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9zaGFrYVBsYXllckxvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaGxzSnNMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5faGxzSnNMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG1ldHJpY3NTZXJ2aWNlKCk6IE1ldHJpY3NTZXJ2aWNlIHtcbiAgICByZXR1cm4gU0RLLl9tZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IoKTogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeVVybCgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZWxlbWV0cnlVcmw7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cztcbiAgfVxuXG4gIHN0YXRpYyBzZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyhyZXRyaWVzQW1vdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gcmV0cmllc0Ftb3VudDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUodGhpcy5fbG9nZ2VyLnRocmVzaG9sZC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShTREsuX3RlbGVtZXRyeUxldmVsLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3NlckRldGVjdG9yKCk6IEJyb3dzZXJEZXRlY3RvciB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IExvZ2dlckZhY3RvcnkudGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSA9IFNESy5wYWdlTG9hZFRpbWU7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIpIHtcbiAgICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZSh0ZWxlbWV0cnlBcHBlbmRlcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdUZWxlbWV0cnkgVVJMIHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyICYmIHRlbmFuY3kpIHtcbiAgICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZSh0ZWxlbWV0cnlBcHBlbmRlcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdUZWxlbWV0cnkgdGVuYW5jeSB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgU0RLLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKERpc2NvdmVyeVVyaS51cmkudmFsdWUpO1xuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBTREsuX21ldHJpY3NTZXJ2aWNlLm1ldHJpY3NDb25maWd1cmF0aW9uO1xuXG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtbWV0cmljcy1sZXZlbCcpIGFzIFRlbGVtZXRyeUxldmVsVHlwZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwoVGVsZW1ldHJ5TGV2ZWxbdmFsdWVdKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwgPSBTREsuX3RlbGVtZXRyeUxldmVsLnN1YnNjcmliZSh0ZWxlbWV0cnlMZXZlbCA9PiB7XG4gICAgICBNZXRyaWNzRmFjdG9yeS5zZXRUZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZScpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJldHJ5IG9uIGZhaWx1cmUgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcycpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdTa2lwIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBtb2JpbGUgZGV2aWNlcyBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgU0RLLmRpc2NvdmVyeVVyaS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLnRlbGVtZXRyeVVybC52YWx1ZSA9IFNESy5nZXRUZWxlbWV0cnlVcmwodmFsdWUpO1xuICAgICAgU0RLLl9lbnZpcm9ubWVudC52YWx1ZSA9IEVudmlyb25tZW50LmdldEVudmlyb25tZW50RnJvbVVybCh2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjaGFubmVsVG9rZW4gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtY2hhbm5lbC10b2tlbicpO1xuXG4gICAgaWYgKGNoYW5uZWxUb2tlbikge1xuICAgICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbihjaGFubmVsVG9rZW4pO1xuXG4gICAgICBTREsuX3RlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeTtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1cmlWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC11cmknKTtcblxuICAgIGlmICh1cmlWYWx1ZSkge1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaVZhbHVlO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtdXJpXCIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGFnIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VVUklWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1iYXNlLXVyaScpO1xuXG4gICAgaWYgKGJhc2VVUklWYWx1ZSkge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGUgPSBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpLnZhbHVlO1xuICAgICAgY29uc3QgdXJpID0gbmV3IGdsb2JhbFNjb3BlLlVSTChiYXNlVVJJVmFsdWUpO1xuXG4gICAgICB1cmkucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gdXJpLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBcInBoZW5peC1iYXNlLXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgb25Mb2FkKGdsb2JhbFNjb3BlOiBJR2xvYmFsU2NvcGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pbml0aWFsaXplZC52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1NESyBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZ2xvYmFsU2NvcGUuYWRkV2luZG93RXZlbnRMaXN0ZW5lcigndW5sb2FkJywgKCkgPT4ge1xuICAgICAgU0RLLmRpc3Bvc2UoKTtcbiAgICB9KTtcblxuICAgIFNESy5hcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpO1xuICAgIFNESy5hcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk7XG4gICAgU0RLLmFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpO1xuXG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBuZXcgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IoKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJldHJ5IG9uIGZhaWx1cmUgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdTa2lwIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBtb2JpbGUgZGV2aWNlcyBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyk7XG5cbiAgICB0aGlzLl9pbml0aWFsaXplZC52YWx1ZSA9IHRydWU7XG4gIH1cblxuICBzdGF0aWMgaW5pdChvcHRpb25zPzogSUluaXRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlOiBJSW5pdE9wdGlvbnMgJiB7Z2xvYmFsU2NvcGU/OiBJUHJvdmlkZWRHbG9iYWxTY29wZX0gPSBvcHRpb25zO1xuXG4gICAgaWYgKG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZS5nbG9iYWxTY29wZSkge1xuICAgICAgR2xvYmFsU2NvcGUuc2V0SW5zdGFuY2Uob3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlLmdsb2JhbFNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5kaXNjb3ZlcnlVcmkpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBvcHRpb25zLmRpc2NvdmVyeVVyaTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpIHtcbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUgPSBvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCAmJiBUZWxlbWV0cnlMZXZlbFtvcHRpb25zLnRlbGVtZXRyeUxldmVsXSkge1xuICAgICAgU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSA9IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbChvcHRpb25zLnRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5sb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMubG9nZ2luZ0xldmVsXSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLnRocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMubG9nZ2luZ0xldmVsKSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAmJiBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsXSkge1xuICAgICAgY29uc3QgY29uc29sZUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgQ29uc29sZUFwcGVuZGVyKTtcblxuICAgICAgaWYgKGNvbnNvbGVBcHBlbmRlcikge1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZShjb25zb2xlQXBwZW5kZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICE9PSAnT2ZmJykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwpKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9IG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLndlYlBsYXllckxvYWRlcikge1xuICAgICAgdGhpcy5fd2ViUGxheWVyTG9hZGVyID0gb3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXIpIHtcbiAgICAgIHRoaXMuX3NoYWthUGxheWVyTG9hZGVyID0gb3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5obHNKc0xvYWRlcikge1xuICAgICAgdGhpcy5faGxzSnNMb2FkZXIgPSBvcHRpb25zLmhsc0pzTG9hZGVyO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIFNESy5faW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcj8uZGlzcG9zZSgpO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRUZWxlbWV0cnlVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBUZWxlbWV0cnlVcmwuZ2V0VGVsZW1ldHJ5VXJsKHVybCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5HbG9iYWxTY29wZS5zdWJzY3JpYmUoU0RLLm9uTG9hZC5iaW5kKFNESykpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5VXJsIHtcbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG4gICAgICBjb25zdCBzZWdtZW50cyA9IGJhc2VVUkwuaG9zdG5hbWUuc3BsaXQoJy4nKTtcblxuICAgICAgc3dpdGNoIChiYXNlVVJMLnByb3RvY29sKSB7XG4gICAgICAgIGNhc2UgJ3dzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwOic7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd3NzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwczonO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMiB8fFxuICAgICAgICAgIChzZWdtZW50cy5sZW5ndGggPT09IDMgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMl0ubGVuZ3RoIDw9IDIgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV0ubGVuZ3RoIDw9IDMpXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudHMudW5zaGlmdCgndGVsZW1ldHJ5Jyk7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ3N0Zy0nKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLXN0ZycpIHx8IHNlZ21lbnRzWzBdLmluY2x1ZGVzKCctc3RnLScpIHx8IHNlZ21lbnRzWzBdID09PSAnc3RnJykge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnktc3RnJztcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnbG9jYWwnKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLWxvY2FsJykpIHtcbiAgICAgICAgLy8gTGVhdmUgVVJMIHVuY2hhbmdlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5JztcbiAgICAgIH1cblxuICAgICAgYmFzZVVSTC5ob3N0bmFtZSA9IHNlZ21lbnRzLmpvaW4oJy4nKTtcblxuICAgICAgcmV0dXJuIGAke2Jhc2VVUkwub3JpZ2lufS90ZWxlbWV0cnlgO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgdHlwZSBCaXRyYXRlU3RhdGVUeXBlID0gJ0tlZXAnIHwgJ1Jlc2V0JztcbmV4cG9ydCB0eXBlIEJpdHJhdGVNb2RlVHlwZSA9ICdOb3JtYWwnIHwgJ0ZvcmNlJyB8ICdSZXNldCc7XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVTdGF0ZSB7XG4gIEtlZXAsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVNb2RlIHtcbiAgTm9ybWFsLFxuICBGb3JjZSxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUge1xuICBhcGlWZXJzaW9uOiBudW1iZXI7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbiAgYml0cmF0ZUluQml0c1BlclNlY29uZDogbnVtYmVyO1xuICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZVR5cGU7XG4gIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZVR5cGU7XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcblxuZXhwb3J0IHR5cGUgUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyA9IHtcbiAgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlZXJDb25uZWN0aW9uQ29udGV4dCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ6IGJvb2xlYW47XG4gIG1lZGlhU3RyZWFtOiBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBvcHRpb25zLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ7XG4gICAgdGhpcy5tZWRpYVN0cmVhbSA9IG5ldyBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZVBlZXJDb25uZWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHBlZXJDb25uZWN0aW9uID0gdGhpcy5wZWVyQ29ubmVjdGlvbi52YWx1ZTtcblxuICAgIGlmICghcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgIGlmICh0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KSB7XG4gICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRpc3Bvc2VNZWRpYVN0cmVhbSgpOiB2b2lkIHtcbiAgICB0aGlzLm1lZGlhU3RyZWFtLnZhbHVlPy5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgdGhpcy5tZWRpYVN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0ZUNvbnRleHQge1xuICBpc1N0YXJ0aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBpc0Rpc3Bvc2VkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNTdGFydGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRGlzcG9zZWQgPSBmYWxzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2tlbkNvbnRleHQge1xuICB0b2tlbjogU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPjtcbiAgdG9rZW5FeHBpcmluZzogU3ViamVjdDxib29sZWFuPjtcblxuICBjb25zdHJ1Y3Rvcih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMudG9rZW4gPSBuZXcgU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPih0b2tlbik7XG4gICAgdGhpcy50b2tlbkV4cGlyaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0RGlzY292ZXJ5VXJpID0gJ2h0dHBzOi8vcGNhc3QucGhlbml4cnRzLmNvbS9wY2FzdC9lbmRQb2ludHMnO1xuXG5leHBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZU1vZGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlTW9kZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlKTogQml0cmF0ZU1vZGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVNb2RlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLk5vcm1hbDpcbiAgICAgICAgcmV0dXJuICdOb3JtYWwnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Gb3JjZTpcbiAgICAgICAgcmV0dXJuICdGb3JjZSc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVNb2RlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Qml0cmF0ZVN0YXRlLCBCaXRyYXRlU3RhdGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlU3RhdGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUpOiBCaXRyYXRlU3RhdGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVTdGF0ZSkge1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuS2VlcDpcbiAgICAgICAgcmV0dXJuICdLZWVwJztcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVTdGF0ZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc2NvdmVyeVNlcnZpY2UgZnJvbSAnLi9EaXNjb3ZlcnlTZXJ2aWNlJztcbmltcG9ydCBFbmRQb2ludCBmcm9tICcuL0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcblxuY29uc3QgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCA9IDYwMDAwO1xuXG5pbnRlcmZhY2UgSVBlclVSSUVuZHBvaW50IHsgW3g6IHN0cmluZ106IFByb21pc2U8RW5kUG9pbnQ+IH1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlOiBJUGVyVVJJRW5kcG9pbnQgPSB7fTtcblxuICBzdGF0aWMgYXN5bmMgcHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxFbmRQb2ludD4ocmVzb2x2ZUVuZFBvaW50UHJvbWlzZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgZ2xvYmFsU2NvcGUuVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpXG4gICAgICAgICAgLnRoZW4ocmVzb2x2ZUVuZFBvaW50UHJvbWlzZSlcbiAgICAgICAgICAudGhlbigoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmk6IFVSTCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmICh1cmwgaW4gRGlzY292ZXJ5Ll9jYWNoZSkge1xuICAgICAgcmV0dXJuIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG5cbiAgICBjb25zdCBkaXNjb3ZlcnlTZXJ2aWNlID0gbmV3IERpc2NvdmVyeVNlcnZpY2UodXJpKTtcbiAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9IGRpc2NvdmVyeVNlcnZpY2UuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQoKTtcbiAgICBjb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3QgaWdub3JlZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID09PSBjYWNoZWRWYWx1ZSkge1xuICAgICAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgICAgIH1cbiAgICAgIH0sIGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwpO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gIH1cblxuICBzdGF0aWMgY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpOiBVUkwpOiB2b2lkIHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmICh1cmwgaW4gRGlzY292ZXJ5Ll9jYWNoZSkge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5jb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5LnByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkZWZhdWx0VGltZW91dCA9IDIwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0Rpc2NvdmVyeScpO1xuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgX3VyaTogVVJMO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogVVJMKSB7XG4gICAgaWYgKCF1cmkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHVyaScpO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UodXJpLnRvU3RyaW5nKCkpO1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKHVyaTogVVJMLCB0aW1lb3V0OiBudW1iZXIpOiBQcm9taXNlPEVuZFBvaW50W10+IHtcbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHRpbWVvdXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRGlzY292ZXJ5IHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGltZW91dCkpXG4gICAgXSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UuYm9keSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIHdpdGggbm8gZGF0YSBbJHt1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzU3RyaW5nID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGFzU3RyaW5nLnNwbGl0KCcsJyk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBuZXcgRW5kUG9pbnQoZW5kUG9pbnQsIHRpbWVvdXQpKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KHRpbWVvdXQ6IG51bWJlciA9IGRlZmF1bHRUaW1lb3V0KTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IERpc2NvdmVyeVVyaS5idWlsZERpc2NvdmVyeVVybCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGF3YWl0IHRoaXMuZGlzY292ZXJOZWFyYnlFbmRQb2ludHMobmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpLCB0aW1lb3V0KTtcbiAgICBsZXQgZmFpbGVkUmVxdWVzdHMgPSAwO1xuICAgIGNvbnN0IHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkID0gKCk6IFByb21pc2U8dm9pZD4gPT4gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKGZhaWxlZFJlcXVlc3RzID49IGVuZFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmVqZWN0KGBEaXNjb3Zlcnkgb2YgWyR7ZW5kUG9pbnRzLmxlbmd0aH1dIGVuZHBvaW50cyBmcm9tIFske3VybH1dIGZhaWxlZCwgcHJldmVudGluZyBpdCBmcm9tIGNvbXBsZXRpbmdgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBlbmRQb2ludCA9IGF3YWl0IFByb21pc2UucmFjZShlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IGVuZFBvaW50XG4gICAgICAucGluZygpXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdGYWlsZWQgdG8gcGluZyBlbmQgcG9pbnQgWyVzXScsIGVuZFBvaW50LCBlKTtcblxuICAgICAgICBmYWlsZWRSZXF1ZXN0cysrO1xuXG4gICAgICAgIHJldHVybiBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCgpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHRpbWUgPT4ge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcmVkIGVuZCBwb2ludCBbJXNdIHdpdGggdGltZSBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSwgdGltZSk7XG4gICAgICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICAgICAgcnVudGltZTogKG5vdyAtIFNESy5wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgICAgICB2YWx1ZToge3VpbnQ2NDogdGltZSB8fCAwfSxcbiAgICAgICAgICByZXNvdXJjZTogZW5kUG9pbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBraW5kOiAncGluZydcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50O1xuICAgICAgfSkpKTtcblxuICAgIHJldHVybiBlbmRQb2ludDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9IGZyb20gJy4uL2RlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5VXJpIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Rpc2NvdmVyeVVyaTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPihkZWZhdWx0RGlzY292ZXJ5VXJpKTtcblxuICBzdGF0aWMgZ2V0IHVyaSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBEaXNjb3ZlcnlVcmkuX2Rpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZERpc2NvdmVyeVVybCh1cmk6IFVSTCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmkudG9TdHJpbmcoKSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIGlmICh1cmwucGF0aG5hbWUgPT09ICcvJykge1xuICAgICAgdXJsLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgIH1cblxuICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnlVcmkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5pbXBvcnQge1xuICBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlLFxuICBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Rcbn0gZnJvbSAnLi4vYXBpL1N1YnNjcmliZSc7XG5pbXBvcnQge0lTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QsIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlfSBmcm9tICcuLi9hcGkvU2V0UmVtb3RlRGVzY3JpcHRpb24nO1xuaW1wb3J0IHtJRGVzdHJveVN0cmVhbVJlcXVlc3QsIElEZXN0cm95U3RyZWFtUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9EZXN0cm95U3RyZWFtJztcbmltcG9ydCB7SUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0LCBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlfSBmcm9tICcuLi9hcGkvQWRkSWNlQ2FuZGlkYXRlcyc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVTdGF0ZSwgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEJpdHJhdGVNb2RlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVNb2RlTWFwcGluZyc7XG5pbXBvcnQgQml0cmF0ZVN0YXRlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVTdGF0ZU1hcHBpbmcnO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IHtcbiAgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2UsXG4gIElQdWJsaXNoV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVB1Ymxpc2hXaXRob3V0T2ZmZXJSZXF1ZXN0LFxuICBQdWJsaXNoU3RhdHVzXG59IGZyb20gJy4uL2FwaS9QdWJsaXNoJztcblxuY29uc3QgYXBpVmVyc2lvbiA9IDc7XG5cbmNsYXNzIEZldGNoVGltZW91dEVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlU3RhdHVzID0gJ29rJyB8ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgUmVtb3ZlVGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBEZXN0cm95U3RyZWFtU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbSB7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnOiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjsgLy8gSW50ZW50aW9uYWxseSBvcGVuOiB0aGUgc2VydmVyIG1heSBpbmNsdWRlIHByb3BlcnRpZXMgKGUuZy4gZHJtQ29uZmlndXJhdGlvbikgbm90IGRlY2xhcmVkIGluIHRoaXMgaW50ZXJmYWNlIHRoYXQgY2FsbGVycyByZWx5IG9uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sge1xuICAocmVxdWVzdDogSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QgfCBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sge1xuICAocmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVPcHRpb25zID0ge1xuICBvblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnPzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ25vdC1mb3VuZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbn07XG5cbmludGVyZmFjZSBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzO1xuICBzZXNzaW9uRGVzY3JpcHRpb24/OiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5pbnRlcmZhY2UgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXM7XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXM7XG59XG5cbmludGVyZmFjZSBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5kUG9pbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRW5kUG9pbnQnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXJpOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVvdXREdXJhdGlvbjogTWlsbGlzZWNvbmQ7XG4gIHByaXZhdGUgX3JvdW5kVHJpcFRpbWU6IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IodXJpOiBzdHJpbmcsIHRpbWVvdXQ6IE1pbGxpc2Vjb25kKSB7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICAgIHRoaXMuX3RpbWVvdXREdXJhdGlvbiA9IHRpbWVvdXQ7XG5cbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5kIHBvaW50IHJlcXVpcmVzIGEgdGltZW91dGApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBFbmRQb2ludFt1cmk9JHt0aGlzLl91cml9XWA7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGluZygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRQaW5nVXJsKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgIH07XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZldGNoV2l0aFRpbWVvdXQodXJsLCByZXF1ZXN0T3B0aW9ucywgdGhpcy5fdGltZW91dER1cmF0aW9uKVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRmV0Y2hUaW1lb3V0RXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBpbmcgdGltZWQgb3V0IFske3VybH1dYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQaW5nIGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIHRoaXMuX3JvdW5kVHJpcFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnQ7XG5cbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdWJzY3JpYmUodG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0IHwgbnVsbCwgZmFpbHVyZUNvdW50OiBudW1iZXIsIG9wdGlvbnM6IFN1YnNjcmliZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8SVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHRlbmFuY3kgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS50ZW5hbmN5O1xuXG4gICAgaWYgKCF0ZW5hbmN5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ3VuYXV0aG9yaXplZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3RlbmFuY3ksICdzdHJlYW0nLCAnc3Vic2NyaWJlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBjbGllbnRWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBsZXQgcmVxdWVzdEJvZHk6IElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0IHwgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Q7XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPy4ocmVxdWVzdEJvZHkpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHJlcXVlc3RCb2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZmV0Y2hSZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfTtcbiAgICBjb25zdCBodHRwUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVGZXRjaFJlcXVlc3QodXJsLCBmZXRjaFJlcXVlc3RPcHRpb25zLCAnc3Vic2NyaWJlJyk7XG4gICAgY29uc3QganNvblJlc3BvbnNlQm9keSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlPihodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5oYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQoanNvblJlc3BvbnNlQm9keT8uc3RyZWFtUmVzcG9uc2VDb250ZXh0KTtcblxuICAgIGNvbnN0IHN0YXR1czogU3Vic2NyaWJlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtzdGF0dXN9O1xuXG4gICAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz8uKHJlc3BvbnNlKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIGlmICghanNvblJlc3BvbnNlQm9keSkge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0ID0ge3N0YXR1czogJ2ZhaWxlZCd9O1xuXG4gICAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz8uKHJlc3BvbnNlKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZSA9IHRoaXMubm9ybWFsaXplU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeSwganNvblJlc3BvbnNlQm9keSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzdWJzY3JpYmUgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihzdWJzY3JpYmVSZXNwb25zZSk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHVibGlzaChuYW1lOiBzdHJpbmcsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyKTogUHJvbWlzZTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3B1Ymxpc2gnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgYm9keVdpdGhPZmZlcjogSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhPZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBib2R5V2l0aG91dE9mZmVyOiBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aG91dE9mZmVyKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH07XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ3B1Ymxpc2gnKTtcbiAgICBjb25zdCBqc29uUmVzcG9uc2VCb2R5ID0gYXdhaXQgdGhpcy5wYXJzZUpzb25Cb2R5PElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlPihodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5oYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQoanNvblJlc3BvbnNlQm9keT8uc3RyZWFtUmVzcG9uc2VDb250ZXh0KTtcblxuICAgIGNvbnN0IHN0YXR1czogUHVibGlzaFN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGlmICghanNvblJlc3BvbnNlQm9keSkge1xuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcHVibGlzaFJlc3BvbnNlID0gdGhpcy5ub3JtYWxpemVQdWJsaXNoUmVzcG9uc2UodGVuYW5jeSwganNvblJlc3BvbnNlQm9keSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBwdWJsaXNoIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHB1Ymxpc2hSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gcHVibGlzaFJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbTogSVN0cmVhbSwgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc2NyaXB0aW9uJywgJ3JlbW90ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgdHlwZTogc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgIHNkcDogc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH07XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ3NldCByZW1vdGUgZGVzY3JpcHRpb24nKTtcbiAgICBjb25zdCBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbihodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxpbWl0Qml0cmF0ZShcbiAgICBzdHJlYW06IElTdHJlYW0sXG4gICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXIsXG4gICAgYml0cmF0ZUluQml0c1BlclNlY29uZDogQml0c1BlclNlY29uZCxcbiAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSxcbiAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUsXG4gICk6IFByb21pc2U8SVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdiaXRyYXRlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgYml0cmF0ZUluQml0c1BlclNlY29uZCxcbiAgICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlKGJpdHJhdGVTdGF0ZSksXG4gICAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlKVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH07XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ3NldCBsaW1pdCBiaXRyYXRlJyk7XG4gICAgY29uc3Qgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IHNldCBsaW1pdCBiaXRyYXRlIHJlc3BvbnNlIFslc10gaW4gWyVzXSBtcycsIHN0YXR1cywgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4ge3N0YXR1c307XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW06IElTdHJlYW0sIGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdLCBkaXNjb3ZlcnlDb21wbGV0ZWQ6IGJvb2xlYW4sIG9wdGlvbnM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdpY2UnLCAnY2FuZGlkYXRlcyddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGNhbmRpZGF0ZXMsXG4gICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQsXG4gICAgICBvcHRpb25zXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZmV0Y2hSZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfTtcbiAgICBjb25zdCBodHRwUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVGZXRjaFJlcXVlc3QodXJsLCBmZXRjaFJlcXVlc3RPcHRpb25zLCAnYWRkIGljZSBjYW5kaWRhdGVzJyk7XG4gICAgY29uc3Qgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlcyhodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBhZGQgSUNFIGNhbmRpZGF0ZXMgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzdHJveVN0cmVhbShzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcbiAgICBjb25zdCBmZXRjaFJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGh0dHBSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZUZldGNoUmVxdWVzdCh1cmwsIGZldGNoUmVxdWVzdE9wdGlvbnMsICdkZXN0cm95IHN0cmVhbScpO1xuICAgIGNvbnN0IHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW0oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgZGVzdHJveSBzdHJlYW0gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgZGVzdHJveVN0cmVhbVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzdHJveVN0cmVhbU9uVW5tb3VudChzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VuZEJlYWNvbiA9IEdsb2JhbFNjb3BlLnZhbHVlLnNlbmRCZWFjb247XG5cbiAgICBpZiAoIXNlbmRCZWFjb24pIHtcbiAgICAgIHRoaXMuZGVzdHJveVN0cmVhbShzdHJlYW0sIHJlYXNvbikuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gb24gdW5tb3VudCcsIGVycik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBzZW5kQmVhY29uKHVybCwgZm9ybURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFdpdGhUaW1lb3V0KHVybDogc3RyaW5nLCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQsIHRpbWVvdXREdXJhdGlvbjogTWlsbGlzZWNvbmQpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5BYm9ydENvbnRyb2xsZXIoKTtcbiAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIC4uLnJlcXVlc3RPcHRpb25zLFxuICAgICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29udHJvbGxlci5hYm9ydCgpO1xuXG4gICAgICAgICAgICByZWplY3QobmV3IEZldGNoVGltZW91dEVycm9yKGBUaW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgfSwgdGltZW91dER1cmF0aW9uKTtcbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAodGltZW91dCkge1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlRmV0Y2hSZXF1ZXN0KHVybDogc3RyaW5nLCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQsIG9wZXJhdGlvbjogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5mZXRjaFdpdGhUaW1lb3V0KHVybCwgcmVxdWVzdE9wdGlvbnMsIHRoaXMuX3RpbWVvdXREdXJhdGlvbik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYEZhaWxlZCB0byAke29wZXJhdGlvbn0gWyR7cmVxdWVzdE9wdGlvbnMubWV0aG9kIHx8ICdHRVQnfV0gWyR7dXJsfV1gLCBlcnIgYXMgRXJyb3IpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogZXJyIGluc3RhbmNlb2YgRmV0Y2hUaW1lb3V0RXJyb3IgPyA0MDggOiA1MDB9IGFzIFJlc3BvbnNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRVcmwocGF0aDogc3RyaW5nW10pOiBVUkwge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBwYXRoQXNBcnJheSA9IHVyaS5wYXRobmFtZS5zcGxpdCgnLycpO1xuXG4gICAgcGF0aEFzQXJyYXkubGVuZ3RoID0gcGF0aEFzQXJyYXkubGVuZ3RoIC0gMTtcblxuICAgIHVyaS5wYXRobmFtZSA9IHBhdGhBc0FycmF5LmNvbmNhdCguLi5wYXRoKS5qb2luKCcvJyk7XG5cbiAgICByZXR1cm4gdXJpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBpbmdVcmwoKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmkgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHRoaXMuX3VyaSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3R5cGUnLCAnaHR0cCcpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCd2ZXJzaW9uJywgc2RrVmVyc2lvbik7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ2ludGVudGlvbnMnLCBpbnRlbnRpb25zKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnXycsIGAke0RhdGUubm93KCl9YCk7XG5cbiAgICByZXR1cm4gdXJpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBhcnNlSnNvbkJvZHk8VD4ocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBFeHBlY3RlZCBmb3IgcmVzcG9uc2VzIHdpdGhvdXQgYSBKU09OIGJvZHkgKHRpbWVvdXQsIGVtcHR5IGVycm9yIHJlc3BvbnNlcylcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQoY29udGV4dD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ3N0cmVhbSByZXNwb25zZSBjb250ZXh0IFslal0nLCBjb250ZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBQdWJsaXNoU3RhdHVzIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA2OlxuICAgICAgICByZXR1cm4gJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFN1YnNjcmliZVN0YXR1cyB7XG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyB7XG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IERlc3Ryb3lTdHJlYW1TdGF0dXMge1xuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeTogc3RyaW5nLCBkYXRhOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlKTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICAgIGNvbnN0IHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgc2hhcmVkU2VjcmV0LFxuICAgICAgbGFnLFxuICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgLy8gRGVzdHJ1Y3R1cmVkIHRoZSB0ZWxlbWV0cnkgYmFnZ2FnZSBcInN0cmVhbVJlc3BvbnNlQ29udGV4dFwiIHRvIGV4Y2x1ZGUgaXQgZnJvbSBvdGhlclByb3BlcnRpZXNcbiAgICAgIC8vIGl0IGlzICBoYW5kbGVkIHNlcGFyYXRlbHkgYnkgaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0IGFuZCBtdXN0IG5ldmVyIGJlIGZvcndhcmRlZCB0byBjYWxsZXJzLlxuICAgICAgc3RyZWFtUmVzcG9uc2VDb250ZXh0OiBpZ25vcmVkU3RyZWFtUmVzcG9uc2VDb250ZXh0LFxuICAgICAgLi4ub3RoZXJQcm9wZXJ0aWVzXG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgLi4ub3RoZXJQcm9wZXJ0aWVzLCAvLyBTcHJlYWQgZmlyc3Qgc28gdGhhdCBpdCBjYW5ub3Qgb3ZlcndyaXRlIHRoZSBwcm9wZXJ0aWVzIG5vcm1hbGl6ZWQgYmVsb3cuXG4gICAgICBzdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldFxuICAgICAgfSxcbiAgICAgIGxhZ1xuICAgIH07XG5cbiAgICBpZiAocnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGlmIChzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplUHVibGlzaFJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgZGF0YTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2UpOiBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICAgIGNvbnN0IHB1Ymxpc2hSZXNwb25zZTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIHN0cmVhbToge1xuICAgICAgICB0ZW5hbmN5LFxuICAgICAgICBzdHJlYW1JZDogZGF0YS5zdHJlYW1JZCxcbiAgICAgICAgc2hhcmVkU2VjcmV0OiBkYXRhLnNoYXJlZFNlY3JldFxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoZGF0YS5ydGNDb25maWd1cmF0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGRhdGEucnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2Uuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHVibGlzaFJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gPSB7aWNlU2VydmVyczogW119O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSA9IGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPSBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgICAgdXJsczogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHMsXG4gICAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5ID0gY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5ID0gY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5O1xuICAgIH1cblxuICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbihyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnBhcnNlSnNvbkJvZHk8SVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U+KHJlc3BvbnNlKTtcbiAgICBjb25zdCBzdGF0dXMgPSBkYXRhID8gZGF0YS5zdGF0dXMgOiB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHJlc3BvbnNlKTtcbiAgICBjb25zdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlOiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQgPSB7c3RhdHVzfTtcblxuICAgIGlmIChkYXRhICYmIGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiA9IGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5wYXJzZUpzb25Cb2R5PElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U+KHJlc3BvbnNlKTtcbiAgICBjb25zdCBzdGF0dXMgPSBkYXRhID8gZGF0YS5zdGF0dXMgOiB0aGlzLm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMocmVzcG9uc2UpO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTogSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXMsXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEub3B0aW9ucykge1xuICAgICAgICBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2Uub3B0aW9ucyA9IGRhdGEub3B0aW9ucztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5wYXJzZUpzb25Cb2R5PElEZXN0cm95U3RyZWFtUmVzcG9uc2U+KHJlc3BvbnNlKTtcbiAgICBjb25zdCBzdGF0dXMgPSBkYXRhID8gZGF0YS5zdGF0dXMgOiB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMocmVzcG9uc2UpO1xuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW06IElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0ID0ge3N0YXR1c307XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbX0gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpY30gZnJvbSAnLi4vLi4vcnRjL1J0Y1B1Ymxpc2hNb25pdG9yJztcbmltcG9ydCBQdWJsaXNoZXJTdGF0ZSBmcm9tICcuL1B1Ymxpc2hlclN0YXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNlc3Npb25UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vU2Vzc2lvblRlbGVtZXRyeSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuXG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuaW1wb3J0IFRva2VuQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1Rva2VuQ29udGV4dCc7XG5pbXBvcnQgUHVibGlzaGVyQ29udGV4dCBmcm9tICcuL1B1Ymxpc2hlckNvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCwge1BlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnN9IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdGF0ZUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdGF0ZUNvbnRleHQnO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgUmVhbFRpbWVQdWJsaXNoZXIgZnJvbSAnLi9SZWFsVGltZVB1Ymxpc2hlcic7XG5cbmNvbnN0IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiA9ICdjbGllbnQ6dGVybWluYXRpb24nO1xuY29uc3QgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMgPSAzMDAwO1xuY29uc3Qgc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMTUwMDA7XG5jb25zdCBvbmVIb3VySW5NaWxsaXNlY29uZHMgPSAzNjAwICogMTAwMDtcbmNvbnN0IG1heFJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDIgKiBvbmVIb3VySW5NaWxsaXNlY29uZHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1Ymxpc2hlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1B1Ymxpc2hlcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbkNvbnRleHQ6IFRva2VuQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHVibGlzaGVyQ29udGV4dDogUHVibGlzaGVyQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlQ29udGV4dDogU3RhdGVDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHBvbmVudGlhbEJhY2tvZmY6IEV4cG9uZW50aWFsQmFja29mZjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHVibGlzaGVyU3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5VG9rZW46IFJlYWRPbmx5U3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YXRlOiBSZWFkT25seVN1YmplY3Q8UHVibGlzaGVyU3RhdGU+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuRXhwaXJpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRob3JpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5T25saW5lOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TG9hZGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVB1Ymxpc2hpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGFuZGJ5OiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RvcHBlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUZhaWx1cmVDb3VudDogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RW5kUG9pbnQ6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSdGNTdGF0aXN0aWNzOiBSZWFkT25seVN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TWVkaWFTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+O1xuXG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvblRlbGVtZXRyeTogU2Vzc2lvblRlbGVtZXRyeTtcblxuICBjb25zdHJ1Y3RvcihtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0sIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBuYW1lPzogc3RyaW5nKSB7XG4gICAgY29uc3QgcGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9uczogUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyA9IHtmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0OiBTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydH07XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQgPSBuZXcgVG9rZW5Db250ZXh0KHRva2VuKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0ID0gbmV3IFB1Ymxpc2hlckNvbnRleHQobmFtZSk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gbmV3IFBlZXJDb25uZWN0aW9uQ29udGV4dChwZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQgPSBuZXcgU3RhdGVDb250ZXh0KCk7XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuX3B1Ymxpc2hlclN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8c3RyaW5nPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4pO1xuICAgIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGF0ZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8UHVibGlzaGVyU3RhdGU+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUpO1xuICAgIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5hdXRob3JpemVkKTtcbiAgICB0aGlzLl9yZWFkT25seU9ubGluZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5vbmxpbmUpO1xuICAgIHRoaXMuX3JlYWRPbmx5TG9hZGluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVB1Ymxpc2hpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGFuZGJ5ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YW5kYnkpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RvcHBlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdG9wcGVkKTtcbiAgICB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudCA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudCk7XG4gICAgdGhpcy5fcmVhZE9ubHlFbmRQb2ludCA9IG5ldyBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50KTtcbiAgICB0aGlzLl9yZWFkT25seVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtKTtcbiAgICB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucnRjU3RhdGlzdGljcyk7XG4gICAgdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0pO1xuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbWVkaWFTdHJlYW07XG5cbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSk7XG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG4gICAgdGhpcy5fc2Vzc2lvblRlbGVtZXRyeSA9IG5ldyBTZXNzaW9uVGVsZW1ldHJ5KFNESy5wYWdlTG9hZFRpbWUsIHRoaXMuX21ldHJpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmFkZCh0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5KTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpIHtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fcHVibGlzaGVyQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZSAhPT0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB9LCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyk7XG4gICAgICB9KSk7XG5cbiAgICBjb25zdCBkZXN0cm95U3RyZWFtT25Vbm1vdW50ID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUpIHtcbiAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbU9uVW5tb3VudCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSwgJ2NsaWVudDp0ZXJtaW5hdGlvbi1vbi13aW5kb3ctdW5sb2FkJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgZ2V0IHRva2VuKCk6IEVuY29kZWRFZGdlVG9rZW4ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gIH1cblxuICBzZXQgdG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSA9IHRva2VuO1xuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSk7XG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoZGlzY292ZXJ5VXJpKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCBwZWVyQ29ubmVjdGlvbigpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IFJlYWRPbmx5U3ViamVjdDxQdWJsaXNoZXJTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YXRlO1xuICB9XG5cbiAgZ2V0IHRva2VuRXhwaXJpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nO1xuICB9XG5cbiAgZ2V0IGF1dGhvcml6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkO1xuICB9XG5cbiAgZ2V0IG9ubGluZSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seU9ubGluZTtcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TG9hZGluZztcbiAgfVxuXG4gIGdldCBwdWJsaXNoaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UHVibGlzaGluZztcbiAgfVxuXG4gIGdldCBzdGFuZGJ5KCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhbmRieTtcbiAgfVxuXG4gIGdldCBzdG9wcGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RvcHBlZDtcbiAgfVxuXG4gIGdldCBmYWlsdXJlQ291bnQoKTogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudDtcbiAgfVxuXG4gIGdldCBlbmRQb2ludCgpOiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQ7XG4gIH1cblxuICBnZXQgc3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0cmVhbTtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkO1xuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpY3MoKTogUmVhZE9ubHlTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzO1xuICB9XG5cbiAgZ2V0IG1lZGlhU3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AocmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcblxuICAgICAgICByZXNvbHZlKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZCh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy5zdWJzY3JpYmUoaXNTdGFydGluZyA9PiB7XG4gICAgICAgIGlmICghaXNTdGFydGluZykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N0b3AocmVhc29uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMocmVhc29uKTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUpIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZS5jbG9zZSgpO1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuU3RvcHBlZDtcbiAgfVxuXG4gIGFzeW5jIGRpc3Bvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcCgnY2xpZW50OmNoYW5uZWwtZGlzcG9zZScpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRVcmkodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBVUkwge1xuICAgIGNvbnN0IHVybCA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnVyaTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBkaXNjb3ZlciBVUkkgWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG4gIH1cblxuICBhc3luYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBhbHJlYWR5IHN0YXJ0aW5nLCBza2lwcGluZyBzdGFydCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc1N0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NTdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6c3RhcnQnKTtcblxuICAgIGNvbnN0IHRva2VuOiBFbmNvZGVkRWRnZVRva2VuID0gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICAgIGNvbnN0IGxpc3Rlbk9uU3RyZWFtU2V0dXAgPSB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5Lmxpc3Rlbk9uU3RyZWFtU2V0dXAoKTtcblxuICAgIGlmICghRWRnZUF1dGhQYXJzZXIuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICBjb25zdCB1cmkgPSB0aGlzLmdldFVyaSh0b2tlbik7XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHN0YXRlID09PSBQdWJsaXNoZXJTdGF0ZS5FcnJvciB8fCBzdGF0ZSA9PT0gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZykge1xuICAgICAgICAgIERpc2NvdmVyeS5jbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmkpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2s6ICgpID0+IFByb21pc2U8dm9pZD4gPSAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk6IHZvaWQgPT4ge1xuICAgICAgLy8gTmVlZCB0byBzZXQgaXNTdGFydGluZyB0byBmYWxzZSBhbmQgY2FsbCBoYW5kbGVTdHJlYW1GYWlsdXJlIGlmIHN0cmVhbSBtb25pdG9ycyBmb3VuZCBhbiBpc3N1ZVxuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKCkpO1xuICAgIH0pO1xuICAgIGNvbnN0IHN0cmVhbVB1Ymxpc2hlciA9IG5ldyBSZWFsVGltZVB1Ymxpc2hlcih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayk7XG5cbiAgICByZXR1cm4gc3RyZWFtUHVibGlzaGVyLnN0YXJ0KFxuICAgICAgdXJpLFxuICAgICAgdG9rZW4sXG4gICAgICBsaXN0ZW5PblN0cmVhbVNldHVwKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAuZmFpbCgpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKys7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5vbmxpbmUudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMoJ2NsaWVudDpjbGVhbnVwLWFmdGVyLWZhaWxlZC1zZXR1cCcpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5DbGllbnRTdGFydEVycm9yO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IHB1Ymxpc2hpbmcnLCBlKTtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPT09IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmcgfHwgIVNESy5hdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSkge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyA9IDA7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCB0aGlzLmdldFJldHJ5SW50ZXJ2YWwoKSk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldE1lZGlhU3RyZWFtKG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSkge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG1lZGlhU3RyZWFtO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSkge1xuICAgICAgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaChtZWRpYVRyYWNrID0+IHtcbiAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlPy5nZXRTZW5kZXJzKCkuZm9yRWFjaChzZW5kZXIgPT4ge1xuICAgICAgICAgIGlmIChtZWRpYVRyYWNrLmtpbmQgPT09IHNlbmRlcj8udHJhY2s/LmtpbmQgJiYgbWVkaWFUcmFjay5pZCAhPT0gc2VuZGVyLnRyYWNrLmlkKSB7XG4gICAgICAgICAgICBzZW5kZXIucmVwbGFjZVRyYWNrKG1lZGlhVHJhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFJldHJ5SW50ZXJ2YWwoKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuT2ZmbGluZTpcbiAgICAgICAgcmV0dXJuIHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcztcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RvcHBlZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICAvLyBGaXJzdCBhbmQgc2Vjb25kIGF0dGVtcHQgZmFzdCwgYWZ0ZXIgdGhhdCBleHBvbmVudGlhbCB3aXRoIGJhY2tvZmYgaW50ZXJ2YWxcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTdHJlYW1GYWlsdXJlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCByZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsID0gMDtcblxuICAgIHN3aXRjaCAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5PZmZsaW5lOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgaWYgKCF0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMpIHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCA9IERhdGUubm93KCkgLSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHM7XG5cbiAgICAgICAgaWYgKG1heFJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA8PSByZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBzdG9wcGVkIHdpdGggc3RhdGUgWyVzXSBbJXNdIGFmdGVyIGV4Y2VlZGluZyB0aW1lb3V0JywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSwgUHVibGlzaGVyU3RhdGVbdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JldHJ5IHN0YXJ0IHdpdGggaW5pdGlhbCBzdGF0ZSBbJXNdIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlLCBQdWJsaXNoZXJTdGF0ZVt0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyB1bmF1dGhvcml6ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgZ2VvIHJlc3RyaWN0ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgZ2VvIGJsb2NrZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0b3BwZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHB1Ymxpc2hpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgaW5pdGlhbGl6aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkIGR1ZSB0byB1bnN1cHBvcnRlZCBmZWF0dXJlLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHN0b3BwZWQgZHVlIHRvIGNoYW5uZWwgbm90IGZvdW5kLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkIGR1ZSB0byBjb25maWd1cmF0aW9uIGVycm9yLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhblVwUmVzb3VyY2VzKHJlYXNvbjogc3RyaW5nID0gZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uKTogdm9pZCB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LmRpc3Bvc2VQZWVyQ29ubmVjdGlvbigpO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdG9wcGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YW5kYnkudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlLCByZWFzb24pXG4gICAgICAgIC50aGVuKCh7c3RhdHVzfSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIERlc3Ryb3llZCBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtJywgdGhpcy5zdHJlYW1JZCwgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuaW1wb3J0IEVuZFBvaW50LCB7XG4gIElTdHJlYW0sXG4gIEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMsXG4gIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzXG59IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgU3RyaW5ncyBmcm9tICcuLi8uLi9sYW5nL1N0cmluZ3MnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IHtJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNQdWJsaXNoTW9uaXRvcic7XG5pbXBvcnQge1B1Ymxpc2hTdGF0dXN9IGZyb20gJy4uL2FwaS9QdWJsaXNoJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHVibGlzaGVyQ29udGV4dCB7XG4gIHB1Ymxpc2hlckluaXRpYWxpemF0aW9uOiBEYXRlO1xuICBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHB1Ymxpc2hlckRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgc3RhdGU6IFN1YmplY3Q8UHVibGlzaGVyU3RhdGU+O1xuICBhdXRob3JpemVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBvbmxpbmU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGxvYWRpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1Ymxpc2hpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0YW5kYnk6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0b3BwZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGZhaWx1cmVDb3VudDogU3ViamVjdDxudW1iZXI+O1xuICBlbmRQb2ludDogU3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBzdHJlYW06IFN1YmplY3Q8SVN0cmVhbSB8IG51bGw+O1xuICBydGNTdGF0aXN0aWNzOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+O1xuICBjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQ6IG51bWJlcjtcbiAgc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZT86IHN0cmluZykge1xuICAgIHRoaXMuZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLnB1Ymxpc2hlckRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5wdWJsaXNoZXJJbml0aWFsaXphdGlvbiA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5zdGF0ZSA9IG5ldyBTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPihQdWJsaXNoZXJTdGF0ZS5Jbml0aWFsaXppbmcpO1xuICAgIHRoaXMuYXV0aG9yaXplZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMub25saW5lID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5sb2FkaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMucHVibGlzaGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnN0YW5kYnkgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdG9wcGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuZmFpbHVyZUNvdW50ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigwKTtcbiAgICB0aGlzLmVuZFBvaW50ID0gbmV3IFN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnN0cmVhbSA9IG5ldyBTdWJqZWN0PElTdHJlYW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnJ0Y1N0YXRpc3RpY3MgPSBuZXcgU3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCA9IDA7XG4gICAgdGhpcy5uYW1lID0gbmFtZSAmJiBuYW1lLmxlbmd0aCA/IG5hbWUgOiB0aGlzLmdlbmVyYXRlU2NyZWVuTmFtZSgpO1xuICAgIHRoaXMuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyA9IDA7XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLnN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghc3RyZWFtKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJlYW0uc3RyZWFtSWQ7XG4gIH1cblxuICBhcHBseVB1Ymxpc2hTdGF0dXMoc3RhdHVzOiBQdWJsaXNoU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgdGhpcy5hcHBseVVuYXV0aG9yaXplZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuYXBwbHlOb3RGb3VuZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhcHBseVNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICB0aGlzLmFwcGx5VW5hdXRob3JpemVkKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgdGhpcy5hcHBseU5vdEZvdW5kKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5hcHBseVVuaGFuZGxlZEVycm9yKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICB0aGlzLmFwcGx5VW5hdXRob3JpemVkKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgdGhpcy5hcHBseU5vdEZvdW5kKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5hcHBseVVuaGFuZGxlZEVycm9yKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIG1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXM6IFB1Ymxpc2hTdGF0dXMpOiBQdWJsaXNoZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kO1xuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuR2VvUmVzdHJpY3RlZDtcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkdlb0Jsb2NrZWQ7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJzpcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBhcHBseVVuaGFuZGxlZEVycm9yKCk6IHZvaWQge1xuICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlKys7XG4gICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBhcHBseVVuYXV0aG9yaXplZCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBhcHBseU5vdEZvdW5kKCk6IHZvaWQge1xuICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICB0aGlzLnB1Ymxpc2hpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVTY3JlZW5OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZ3MucmFuZG9tKDEyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZW51bSBQdWJsaXNoZXJTdGF0ZSB7XG4gIEluaXRpYWxpemluZyA9IDAsXG4gIE9mZmxpbmUgPSAxLFxuICBTdGFydGluZyA9IDIsXG4gIFB1Ymxpc2hpbmcgPSAzLFxuICBSZWNvdmVyaW5nID0gNCxcbiAgUmVjb25uZWN0aW5nID0gNSxcbiAgU3RvcHBlZCA9IDYsXG4gIFVuYXV0aG9yaXplZCA9IDcsXG4gIEdlb1Jlc3RyaWN0ZWQgPSA4LFxuICBHZW9CbG9ja2VkID0gOSxcbiAgVW5zdXBwb3J0ZWRGZWF0dXJlID0gMTAsXG4gIE5vdEZvdW5kID0gMTEsXG4gIENvbmZpZ3VyYXRpb25FcnJvciA9IDEyLFxuICBUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IgPSAxMyxcbiAgQ29ubmVjdGlvbkVycm9yID0gMTQsXG4gIENsaWVudFN0YXJ0RXJyb3IgPSAxNSxcbiAgRXJyb3IgPSAxNlxufVxuXG5leHBvcnQgZGVmYXVsdCBQdWJsaXNoZXJTdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQgUHVibGlzaGVyIGZyb20gJy4vUHVibGlzaGVyJztcblxudHlwZSBDcmVhdGVQdWJsaXNoZXJPcHRpb25zID0ge1xuICBtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW07XG4gIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuO1xuICBuYW1lPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHVibGlzaGVycyB7XG4gIHN0YXRpYyBjcmVhdGVQdWJsaXNoZXIob3B0aW9uczogQ3JlYXRlUHVibGlzaGVyT3B0aW9ucyk6IFB1Ymxpc2hlciB7XG4gICAgaWYgKCFTREsuaW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIG5vdCBsb2FkZWQuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQdWJsaXNoZXIob3B0aW9ucy5tZWRpYVN0cmVhbSwgb3B0aW9ucy50b2tlbiwgb3B0aW9ucy5uYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQdWJsaXNoZXJzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtTdHJlYW1TZXR1cExpc3RlbmVyfSBmcm9tICcuLi8uLi9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lcic7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IHtBZGRJY2VDYW5kaWRhdGVzU3RhdHVzLCBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi8uLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFJ0Y1B1Ymxpc2hNb25pdG9yIGZyb20gJy4uLy4uL3J0Yy9SdGNQdWJsaXNoTW9uaXRvcic7XG5cbmltcG9ydCBSdGNDb25maWd1cmF0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXInO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuaW1wb3J0IFB1Ymxpc2hlckNvbnRleHQgZnJvbSAnLi9QdWJsaXNoZXJDb250ZXh0JztcblxuY29uc3QgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwgPSAxMDA7XG5jb25zdCBzb2Z0UmVzdGFydEludGVydmFsID0gMTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVQdWJsaXNoZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUmVhbFRpbWVQdWJsaXNoZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHVibGlzaGVyQ29udGV4dDogUHVibGlzaGVyQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD47XG5cbiAgY29uc3RydWN0b3IocHVibGlzaGVyQ29udGV4dDogUHVibGlzaGVyQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0ID0gcHVibGlzaGVyQ29udGV4dDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBwZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSA9IGhhbmRsZVN0cmVhbUZhaWx1cmU7XG4gIH1cblxuICBzdGFydCh1cmk6IFVSTCwgdG9rZW46IHN0cmluZywgbGlzdGVuT25TdHJlYW1TZXR1cDogU3RyZWFtU2V0dXBMaXN0ZW5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5PZmZsaW5lO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFTdHJlYW0gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIW1lZGlhU3RyZWFtKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1B1Ymxpc2ggZmFpbGVkIG5vIG1lZGlhIHN0cmVhbSBwcm92aWRlZCcpO1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IG1lZGlhVHJhY2tzID0gbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCk7XG4gICAgY29uc3QgdHJhY2tLaW5kcyA9IG1lZGlhVHJhY2tzLnJlZHVjZSgoYWNjdW11bGF0b3I6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSwgdHJhY2spID0+IHtcbiAgICAgIGlmICh0cmFjay5raW5kID09PSAnYXVkaW8nIHx8IHRyYWNrLmtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgYWNjdW11bGF0b3IucHVzaCh0cmFjay5raW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFRyYWNrIGtpbmQgaXMgbm90IHN1cHBvcnRlZCcsIHRyYWNrLmtpbmQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSksXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcignc2VuZG9ubHknLCB0cmFja0tpbmRzKVxuICAgICAgICAudGhlbigoe2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvY2FsT2ZmZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvblxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgXSlcbiAgICAgIC50aGVuKChbZW5kUG9pbnQsIHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn1dKSA9PiB7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQub25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IGVuZFBvaW50O1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ29ubmVjdGluZyB0byBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdMb2NhbCBvZmZlcjpcXG4nICsgbG9jYWxPZmZlci5zZHApO1xuXG4gICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiB8fCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA+IDApIHtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQuZGlzcG9zZVBlZXJDb25uZWN0aW9uKCk7XG5cbiAgICAgICAgICByZXR1cm4gZW5kUG9pbnQucHVibGlzaCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm5hbWUsIHRva2VuLCBudWxsLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQucHVibGlzaCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm5hbWUsIHRva2VuLCBsb2NhbE9mZmVyLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICB9KVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zdCB7c3RhdHVzfSA9IHJlc3BvbnNlO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlQdWJsaXNoU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgJ1slc10gUHVibGlzaCBmYWlsZWQgd2l0aCBzdGF0dXMgWyVzXScsXG4gICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtzdHJlYW0sIHJ0Y0NvbmZpZ3VyYXRpb24sIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZX0gPSByZXNwb25zZTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSA9IHN0cmVhbTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoXG4gICAgICAgICAgJ1slc10gUHVibGlzaCBjb21wbGV0ZWQgWyVzXSBbJWpdIFslal0gWyVqXSBbJWpdJyxcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICBydGNDb25maWd1cmF0aW9uLFxuICAgICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2VcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5tYXBQdWJsaXNoU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5UHVibGlzaFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5UnRjQ29uZmlndXJhdGlvbih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUsIHJ0Y0NvbmZpZ3VyYXRpb24gYXMgUlRDQ29uZmlndXJhdGlvbilcbiAgICAgICAgICAudGhlbihwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgICAgICBsZXQgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQ6IHVuZGVmaW5lZCB8IG51bWJlcjtcbiAgICAgICAgICAgIGxldCBjYW5jZWxEaXNjb3ZlcnkgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBkaXNjb3ZlcnlDb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdID0gW107XG5cbiAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRTdHJlYW0odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlIGFzIE1lZGlhU3RyZWFtKTtcblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghU0RLLnNlbmRMb2NhbENhbmRpZGF0ZXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZS5jYW5kaWRhdGUgJiYgZS5jYW5kaWRhdGUuY2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGUuY2FuZGlkYXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFzdWJtaXRDYW5kaWRhdGVzVGltZW91dCkge1xuICAgICAgICAgICAgICAgIHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZT8uYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW0sIGNhbmRpZGF0ZXMsIGRpc2NvdmVyeUNvbXBsZXRlZClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHtzdGF0dXMsIG9wdGlvbnN9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLm1hcEFkZEljZUNhbmRpZGF0ZXNTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseUFkZEljZUNhbmRpZGF0ZXNTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHBlZXIgY29ubmVjdGlvbiBmYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zPy5pbmNsdWRlcygnY2FuY2VsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbERpc2NvdmVyeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gQWRkZWQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXSBhbmQgb3B0aW9ucyBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcycsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVVuaGFuZGxlZEVycm9yKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIGZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sIGljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCByZXRyeUNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIHN0b3Agbm9ybWFsbHkgdGhlIHBlZXIgY29ubmVjdGlvbiBpcyB1bnJlZ2lzdGVyZWQgZmlyc3QuXG4gICAgICAgICAgICAgICAgLy8gVGh1cyBhbnl0aW1lIHdlIHNlZSBhIGNsb3NlZCBwZWVyIGNvbm5lY3Rpb24gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaXQgaXMgYW4gZXJyb3IuXG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHBlZXIgY29ubmVjdGlvbiBzdG9wcGVkIHdpdGggc3RhdGUgWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgc3dpdGNoIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2luZyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ25ldyc6XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBjYXNlICdkaXNjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHRyeWluZyB0byByZWNvbm5lY3QnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdjbG9zZWQnOlxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCByZXRyeWluZyB0byBjb25uZWN0JywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgYXMgbmV2ZXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIGFuc3dlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uPy5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IHJlbW90ZSBTRFAgb2ZmZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcih7XG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihhbnN3ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBhbnN3ZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGFuc3dlci5zZHApO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgIGlmICghZW5kUG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiwgRW5kUG9pbnQgaXMgbm90IHNldCcpO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gZW5kUG9pbnQuc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtLCBhbnN3ZXIpO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHtzdGF0dXMsIHNlc3Npb25EZXNjcmlwdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLm1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24/LnNkcCk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNlc3Npb25EZXNjcmlwdGlvbiBhcyBSVENTZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLnN1Y2Nlc3ModGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCk7XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgIT09IFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc7XG5cbiAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICBjb25zdCBydGNQdWJsaXNoTW9uaXRvciA9IG5ldyBSdGNQdWJsaXNoTW9uaXRvcihcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5yb3VuZFRyaXBUaW1lID8gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5yb3VuZFRyaXBUaW1lIC8gNCA6IDAsXG4gICAgICAgICAgICAgICAgU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIS5pc0ZvcmVncm91bmRcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChydGNQdWJsaXNoTW9uaXRvcik7XG5cbiAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHJ0Y1B1Ymxpc2hNb25pdG9yLnJ0Y1N0YXRpc3RpYy5zdWJzY3JpYmUoc3RhdGlzdGljcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5ydGNTdGF0aXN0aWNzLnZhbHVlID0gc3RhdGlzdGljcztcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXBwbHlSdGNDb25maWd1cmF0aW9uKFxuICAgIG9wdGlvbmFsUGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiB8IG51bGwsXG4gICAgcnRjQ29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgaWYgKCFvcHRpb25hbFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uID0gUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHJ1bmNhdGVJY2VTZXJ2ZXJzKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgICByZXR1cm4gU0RLLnBlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdSdGNDb25maWd1cmF0aW9uID0ge1xuICAgICAgLi4ub3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5nZXRDb25maWd1cmF0aW9uKCksXG4gICAgICAuLi5ydGNDb25maWd1cmF0aW9uXG4gICAgfTtcblxuICAgIG9wdGlvbmFsUGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbihuZXdSdGNDb25maWd1cmF0aW9uKTtcblxuICAgIHJldHVybiBvcHRpb25hbFBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuUmVjb25uZWN0aW5nO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIDwgU0RLLm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgfHwgIVNESy5hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKys7XG5cbiAgICAgIGNvbnN0IGlzQ2xpZW50T2ZmZXJGbG93ID0gcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb24/LnR5cGUgPT09ICdvZmZlcic7XG5cbiAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhaXNDbGllbnRPZmZlckZsb3dcbiAgICAgICkge1xuICAgICAgICBjb25zdCByZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgfSwgc29mdFJlc3RhcnRJbnRlcnZhbCk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCkpKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZWNvbm5lY3RpbmcgcGVlciBjb25uZWN0aW9uIGJ5IHJlc3RhcnRpbmcgSUNFJyk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uID0gcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb247XG4gICAgICBjb25zdCBpZ25vcmVkID0gcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoe2ljZVJlc3RhcnQ6IHRydWV9KS50aGVuKG9mZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnZGlzY29ubmVjdGVkJyB8fCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdmYWlsZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICB9LCBzb2Z0UmVzdGFydEludGVydmFsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dChyZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQpKSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uJywgZSk7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gYWZ0ZXIgWyVzXSBhdHRlbXB0cywgcGVyZm9ybWluZyBmdWxsIHJlY292ZXJ5JywgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICByZXRyeUNhbGxiYWNrKCk7XG4gIH1cblxuICBwcml2YXRlIG1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyk6IFB1Ymxpc2hlclN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzKTogUHVibGlzaGVyU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZGVjbGFyZSBjb25zdCBfX0JVSUxEX1ZFUlNJT05fXzogc3RyaW5nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZXJzaW9uTWFuYWdlciB7XG4gIHByaXZhdGUgc3RhdGljIF9kZWZhdWx0VmVyc2lvbiA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcblxuICBzdGF0aWMgZ2V0IHNka1ZlcnNpb24oKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIF9fQlVJTERfVkVSU0lPTl9fO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmVyc2lvbjtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBUZWxlbWV0cnlTZXJ2aWNlIGZyb20gJy4vVGVsZW1ldHJ5U2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4uL2xvZ2dlci9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5O1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkO1xuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UgPSBuZXcgVGVsZW1ldHJ5U2VydmljZSh0ZWxlbWV0cnlDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlLnB1c2gobG9nTGV2ZWwsIG1lc3NhZ2UsIGNhdGVnb3J5LCBkYXRlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L2xvZ3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9wYWdlTG9hZFRpbWU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3RocmVzaG9sZCA9IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgdGVsZW1ldHJ5VXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgdGVsZW1ldHJ5VXJsLnBhdGhuYW1lID0gdGVsZW1ldHJ5VXJsLnBhdGhuYW1lICsgJy9sb2dzJztcblxuICAgIHRoaXMuX3VybCA9IHRlbGVtZXRyeVVybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgc2V0IGVudmlyb25tZW50KGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHNldCB0ZW5hbmN5KHRlbmFuY3k6IHN0cmluZykge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZW5hbmN5O1xuICB9XG5cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSWQ7XG4gIH1cblxuICBzZXQgc2Vzc2lvbklkKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzZXQgcGFnZUxvYWRUaW1lKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKSB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IE51bWJlcnMgZnJvbSAnLi4vbGFuZy9OdW1iZXJzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4vVGVsZW1ldHJ5Q29uZmlndXJhdGlvbic7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuXG5jb25zdCByZXF1ZXN0U2l6ZUxpbWl0ID0gODE5MjtcblxuaW50ZXJmYWNlIElMb2dJdGVtIHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbiAgbGV2ZWw6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICBmdWxsUXVhbGlmaWVkTmFtZTogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gIHByaXZhdGUgX2xvZ3M6IEFycmF5PElMb2dJdGVtPiA9IFtdO1xuICBwcml2YXRlIF9pc1NlbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZG9tYWluID0gJyc7XG5cbiAgY29uc3RydWN0b3IodGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuICAgIHRoaXMuZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpLnRoZW4obG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICB0aGlzLl9kb21haW4gPSBsb2NhdGlvbkhvc3RuYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgcHVzaChsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIHRpbWVzdGFtcDogRGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHJ1bnRpbWUgPSAodGltZXN0YW1wLnZhbHVlT2YoKSAtIHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24ucGFnZUxvYWRUaW1lKSAvIDEwMDA7XG4gICAgY29uc3QgbG9nUmVjb3JkID0ge1xuICAgICAgdGltZXN0YW1wOiB0aW1lc3RhbXAudG9JU09TdHJpbmcoKSxcbiAgICAgIHRlbmFuY3k6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSxcbiAgICAgIGxldmVsOiBMb2dnaW5nTGV2ZWxbbG9nTGV2ZWxdLFxuICAgICAgY2F0ZWdvcnksXG4gICAgICBtZXNzYWdlLFxuICAgICAgc2Vzc2lvbklkOiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZCxcbiAgICAgIHZlcnNpb246IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb24sXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgIGZ1bGxRdWFsaWZpZWROYW1lOiB0aGlzLl9kb21haW4sXG4gICAgICBydW50aW1lXG4gICAgfTtcblxuICAgIGlmIChsb2dMZXZlbCA8IExvZ2dpbmdMZXZlbC5FcnJvcikge1xuICAgICAgdGhpcy5fbG9ncy5wdXNoKGxvZ1JlY29yZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xvZ3MudW5zaGlmdChsb2dSZWNvcmQpO1xuICAgIH1cblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPihyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlTG9jYXRpb25Ib3N0bmFtZShnbG9iYWxTY29wZS5sb2NhdGlvbkhvc3RuYW1lKTtcbiAgICAgICAgZ2xvYmFsU2NvcGUuc2V0VGltZW91dCgoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCksIDApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRMb2dzKGxvZ01lc3NhZ2VzOiBBcnJheTxJTG9nSXRlbT4pOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoe3JlY29yZHM6IGxvZ01lc3NhZ2VzfSkpO1xuXG4gICAgcmV0dXJuIGF3YWl0IEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRMb2dzSWZBYmxlKCk6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgaWYgKHRoaXMuX2xvZ3MubGVuZ3RoIDw9IDAgfHwgdGhpcy5faXNTZW5kaW5nIHx8ICFHbG9iYWxTY29wZS52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBudW1iZXJPZkxvZ3NUb1NlbmQgPSAwO1xuICAgIGxldCBzaXplT2ZMb2dzVG9TZW5kID0gMDtcblxuICAgIHRoaXMuX2lzU2VuZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBnZXRJdGVtU2l6ZSA9IChpdGVtOiBudW1iZXIgfCBzdHJpbmcpID0+IHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJyA/IE51bWJlcnMuY291bnROdW1iZXJMZW5ndGgoaXRlbSkgOiBpdGVtLmxlbmd0aDtcbiAgICBjb25zdCBnZXRMb2dTaXplID0gKGxvZzogSUxvZ0l0ZW0pOiBudW1iZXIgPT4gT2JqZWN0LnZhbHVlcyhsb2cpXG4gICAgICAucmVkdWNlKChzdW0sIGl0ZW0pID0+IHN1bSArIChpdGVtID8gZ2V0SXRlbVNpemUoaXRlbSkgOiAwKSwgMCk7XG5cbiAgICB3aGlsZSAodGhpcy5fbG9ncy5sZW5ndGggPiBudW1iZXJPZkxvZ3NUb1NlbmQgJiYgZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pICsgc2l6ZU9mTG9nc1RvU2VuZCA8IHJlcXVlc3RTaXplTGltaXQpIHtcbiAgICAgIHNpemVPZkxvZ3NUb1NlbmQgKz0gZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kKys7XG4gICAgfVxuXG4gICAgaWYgKCFudW1iZXJPZkxvZ3NUb1NlbmQpIHtcbiAgICAgIHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlID0gdGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsXG4gICAgICAgIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIChyZXF1ZXN0U2l6ZUxpbWl0IC0gZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pKSk7XG4gICAgICBudW1iZXJPZkxvZ3NUb1NlbmQgPSAxO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ01lc3NhZ2VzID0gdGhpcy5fbG9ncy5zbGljZSgwLCBudW1iZXJPZkxvZ3NUb1NlbmQpO1xuXG4gICAgdGhpcy5fbG9ncyA9IHRoaXMuX2xvZ3Muc2xpY2UobnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHJldHVybiB0aGlzLnNlbmRMb2dzKGxvZ01lc3NhZ2VzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER1cmF0aW9ucyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2R1cmF0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZHVyYXRpb24gPSAwKSB7XG4gICAgdGhpcy5fZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgfVxuXG4gIHRvSXNvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2R1cmF0aW9uID09PSAwKSB7XG4gICAgICByZXR1cm4gJ1AwUyc7XG4gICAgfVxuXG4gICAgY29uc3QgaXNOZWdhdGl2ZSA9IHRoaXMuX2R1cmF0aW9uIDwgMDtcbiAgICBjb25zdCBkdXJhdGlvbiA9IGlzTmVnYXRpdmUgPyBNYXRoLmFicyh0aGlzLl9kdXJhdGlvbikgOiB0aGlzLl9kdXJhdGlvbjtcbiAgICBsZXQgb2Zmc2V0ID0gTWF0aC5mbG9vcihkdXJhdGlvbik7XG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gb2Zmc2V0ICUgMTAwMDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gMTAwMCk7XG5cbiAgICBjb25zdCBzZWNvbmRzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IG1pbnV0ZXMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgaG91cnMgPSBvZmZzZXQgJSAyNDtcbiAgICBjb25zdCBwYXJ0cyA9IFsnUFQnXTtcblxuICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KCctJyk7XG4gICAgfVxuXG4gICAgaWYgKGhvdXJzKSB7XG4gICAgICBwYXJ0cy5wdXNoKGhvdXJzICsgJ0gnKTtcbiAgICB9XG5cbiAgICBpZiAobWludXRlcykge1xuICAgICAgcGFydHMucHVzaChtaW51dGVzICsgJ00nKTtcbiAgICB9XG5cbiAgICBpZiAoc2Vjb25kcyB8fCBtaWxsaXNlY29uZHMpIHtcbiAgICAgIHBhcnRzLnB1c2goU3RyaW5nKHNlY29uZHMpKTtcblxuICAgICAgaWYgKG1pbGxpc2Vjb25kcykge1xuICAgICAgICBwYXJ0cy5wdXNoKCcuJyArIHRoaXMucGFkU3RhcnQobWlsbGlzZWNvbmRzLnRvU3RyaW5nKCksIDMsICcwJykpO1xuICAgICAgfVxuXG4gICAgICBwYXJ0cy5wdXNoKCdTJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xuICB9XG5cbiAgcGFkU3RhcnQoaXRlbTogc3RyaW5nLCB0YXJnZXRMZW5ndGg6IG51bWJlciwgcGFkU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCA+PiAwO1xuICAgIHBhZFN0cmluZyA9IFN0cmluZygodHlwZW9mIHBhZFN0cmluZyAhPT0gJ3VuZGVmaW5lZCcgPyBwYWRTdHJpbmcgOiAnICcpKTtcblxuICAgIGlmIChpdGVtLmxlbmd0aCA+IHRhcmdldExlbmd0aCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoIC0gaXRlbS5sZW5ndGg7XG5cbiAgICBpZiAodGFyZ2V0TGVuZ3RoID4gcGFkU3RyaW5nLmxlbmd0aCkge1xuICAgICAgcGFkU3RyaW5nICs9IHBhZFN0cmluZy5yZXBlYXQodGFyZ2V0TGVuZ3RoIC8gcGFkU3RyaW5nLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZFN0cmluZy5zbGljZSgwLCB0YXJnZXRMZW5ndGgpICsgaXRlbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAyMDAwO1xuY29uc3QgZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAxO1xuY29uc3QgZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAzMDAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4cG9uZW50aWFsQmFja29mZiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmRcbiAgKSB7XG4gICAgdGhpcy5fYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IGJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gIH1cblxuICBnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KGZhaWx1cmVDb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMgPSB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIC8gMTAwMDtcbiAgICBjb25zdCByYW5kb21pemF0aW9uID0gMC41ICsgKDAuNSAqIE1hdGgucmFuZG9tKCkpOyAvLyBbMC41LCAxKVxuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZiA9IE1hdGgucG93KGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcywgZmFpbHVyZUNvdW50IC0gMik7IC8vICBbMS80IDEvMiAxIDIgNCA4IC4uLi5dXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24gPSBNYXRoLmZsb29yKGV4cG9uZW50aWFsQmFja29mZikgKiByYW5kb21pemF0aW9uO1xuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCA9IE1hdGguY2VpbChNYXRoLm1heChleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiAqIDEwMDAsIHRoaXMuX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpKTtcblxuICAgIHJldHVybiBNYXRoLm1pbihleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQsIHRoaXMuX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1N0cmVhbVNldHVwTGlzdGVuZXJ9IGZyb20gJy4uL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgTmV0d29ya01vbml0b3IgZnJvbSAnLi4vZG9tL05ldHdvcmtNb25pdG9yJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuXG5pbnRlcmZhY2UgSU5ldHdvcmtTdGF0aXN0aWNzIHtcbiAgcnR0PzogbnVtYmVyO1xuICBlZmZlY3RpdmVUeXBlPzogc3RyaW5nO1xuICBkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Vzc2lvblRlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1Nlc3Npb25UZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmV0d29ya01vbml0b3I6IE5ldHdvcmtNb25pdG9yID0gbmV3IE5ldHdvcmtNb25pdG9yKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfbGFzdE5ldHdvcmtTdGF0aXN0aWNzOiBJTmV0d29ya1N0YXRpc3RpY3MgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihwYWdlTG9hZFRpbWU6IG51bWJlciwgbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlKSB7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvcik7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcblxuICAgIGlmICghdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2Vzc2lvblRlbGVtZXRyeSBGYWlsZWQ6IE5vIGFwcGxpY2F0aW9uIG1vbml0b3IgaW5pdGlhbGl6ZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9uZXR3b3JrTW9uaXRvci5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci5pc0ZvcmVncm91bmQuc3Vic2NyaWJlKGlzRm9yZWdyb3VuZCA9PiB7XG4gICAgICB0aGlzLnJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLnJ0dC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1JUVFVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5lZmZlY3RpdmVUeXBlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gIH1cblxuICBsaXN0ZW5PblN0cmVhbVNldHVwKCk6IFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICAgIHJldHVybiBuZXcgU3RyZWFtU2V0dXBMaXN0ZW5lcih0aGlzLl9wYWdlTG9hZFRpbWUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0Q2hhbmdlID0gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTtcblxuICAgIGlmICghdGltZVNpbmNlTGFzdENoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogaXNGb3JlZ3JvdW5kID8gTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kIDogTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWVTaW5jZUxhc3RDaGFuZ2V9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdBcHBsaWNhdGlvbiBoYXMgZ29uZSBpbnRvIHRoZSBbJXNdIGFmdGVyIFslc10gbXMnLFxuICAgICAgaXNGb3JlZ3JvdW5kID8gJ2ZvcmVncm91bmQnIDogJ2JhY2tncm91bmQnLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aW1lU2luY2VMYXN0Q2hhbmdlKS50b0lzb1N0cmluZygpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtSVFRVcGRhdGUobmV3UlRUOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZFJ0dCA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQ7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MucnR0ID0gbmV3UlRUO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IG5ld1JUVH0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRSdHQgPyB7dWludDY0OiBvbGRSdHR9IDogdW5kZWZpbmVkLFxuICAgICAgcmVzb3VyY2U6ICduYXZpZ2F0b3InXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgUlRUIGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdSVFQsXG4gICAgICBvbGRSdHRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZShuZXdOZXR3b3JrVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGROZXR3b3JrVHlwZSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5lZmZlY3RpdmVUeXBlO1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGUgPSBuZXdOZXR3b3JrVHlwZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuTmV0d29ya1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3N0cmluZzogbmV3TmV0d29ya1R5cGV9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkTmV0d29ya1R5cGUgPyB7c3RyaW5nOiBvbGROZXR3b3JrVHlwZX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBlZmZlY3RpdmUgdHlwZSBoYXMgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld05ldHdvcmtUeXBlLFxuICAgICAgb2xkTmV0d29ya1R5cGVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUobmV3Q2FwYWNpdHk6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkQ2FwYWNpdHkgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkgPSBuZXdDYXBhY2l0eTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge2Zsb2F0OiBuZXdDYXBhY2l0eX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRDYXBhY2l0eSA/IHtmbG9hdDogb2xkQ2FwYWNpdHl9IDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgZG93bmxpbmsgdGhyb3VnaHB1dCBjYXBhY2l0eSBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3Q2FwYWNpdHksXG4gICAgICBvbGRDYXBhY2l0eVxuICAgICk7XG4gIH1cbn0iLCJmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7XG4gIChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTtcbiAgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07XG4gIHJldHVybiBuO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlMaWtlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGUpIHtcbiAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICByZXR1cm4gZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChuLCB0LCBlLCByLCBvLCBhLCBjKSB7XG4gIHRyeSB7XG4gICAgdmFyIGkgPSBuW2FdKGMpLFxuICAgICAgdSA9IGkudmFsdWU7XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xuICB9XG4gIGkuZG9uZSA/IHQodSkgOiBQcm9taXNlLnJlc29sdmUodSkudGhlbihyLCBvKTtcbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdCA9IHRoaXMsXG4gICAgICBlID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAociwgbykge1xuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xuICAgICAgZnVuY3Rpb24gX25leHQobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIG4pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3Rocm93KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgbik7XG4gICAgICB9XG4gICAgICBfbmV4dCh2b2lkIDApO1xuICAgIH0pO1xuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXN5bmNUb0dlbmVyYXRvciwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhhLCBuKSB7XG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NsYXNzQ2FsbENoZWNrLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IHJlcXVpcmUoXCIuL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qc1wiKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL3NldFByb3RvdHlwZU9mLmpzXCIpO1xuZnVuY3Rpb24gX2NvbnN0cnVjdCh0LCBlLCByKSB7XG4gIGlmIChpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSkgcmV0dXJuIFJlZmxlY3QuY29uc3RydWN0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gIHZhciBvID0gW251bGxdO1xuICBvLnB1c2guYXBwbHkobywgZSk7XG4gIHZhciBwID0gbmV3ICh0LmJpbmQuYXBwbHkodCwgbykpKCk7XG4gIHJldHVybiByICYmIHNldFByb3RvdHlwZU9mKHAsIHIucHJvdG90eXBlKSwgcDtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NvbnN0cnVjdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZShcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiKTtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHIpIHtcbiAgZm9yICh2YXIgdCA9IDA7IHQgPCByLmxlbmd0aDsgdCsrKSB7XG4gICAgdmFyIG8gPSByW3RdO1xuICAgIG8uZW51bWVyYWJsZSA9IG8uZW51bWVyYWJsZSB8fCAhMSwgby5jb25maWd1cmFibGUgPSAhMCwgXCJ2YWx1ZVwiIGluIG8gJiYgKG8ud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0b1Byb3BlcnR5S2V5KG8ua2V5KSwgbyk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhlLCByLCB0KSB7XG4gIHJldHVybiByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLCByKSwgdCAmJiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jcmVhdGVDbGFzcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZShcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiKTtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XG4gIHJldHVybiAociA9IHRvUHJvcGVydHlLZXkocikpIGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwge1xuICAgIHZhbHVlOiB0LFxuICAgIGVudW1lcmFibGU6ICEwLFxuICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgd3JpdGFibGU6ICEwXG4gIH0pIDogZVtyXSA9IHQsIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9kZWZpbmVQcm9wZXJ0eSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZih0KSB7XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfZ2V0UHJvdG90eXBlT2YodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL3NldFByb3RvdHlwZU9mLmpzXCIpO1xuZnVuY3Rpb24gX2luaGVyaXRzKHQsIGUpIHtcbiAgaWYgKFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgZSAmJiBudWxsICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlICYmIGUucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiB0LFxuICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH1cbiAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlICYmIHNldFByb3RvdHlwZU9mKHQsIGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaW5oZXJpdHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXNOYXRpdmVGdW5jdGlvbih0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIC0xICE9PSBGdW5jdGlvbi50b1N0cmluZy5jYWxsKHQpLmluZGV4T2YoXCJbbmF0aXZlIGNvZGVdXCIpO1xuICB9IGNhdGNoIChuKSB7XG4gICAgcmV0dXJuIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgdDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXNOYXRpdmVGdW5jdGlvbiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIHRyeSB7XG4gICAgdmFyIHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpO1xuICB9IGNhdGNoICh0KSB7fVxuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gICAgcmV0dXJuICEhdDtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShyKSB7XG4gIGlmIChcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgbnVsbCAhPSByW1N5bWJvbC5pdGVyYXRvcl0gfHwgbnVsbCAhPSByW1wiQEBpdGVyYXRvclwiXSkgcmV0dXJuIEFycmF5LmZyb20ocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkge1xuICB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdO1xuICBpZiAobnVsbCAhPSB0KSB7XG4gICAgdmFyIGUsXG4gICAgICBuLFxuICAgICAgaSxcbiAgICAgIHUsXG4gICAgICBhID0gW10sXG4gICAgICBmID0gITAsXG4gICAgICBvID0gITE7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHtcbiAgICAgICAgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuO1xuICAgICAgICBmID0gITE7XG4gICAgICB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7XG4gICAgfSBjYXRjaCAocikge1xuICAgICAgbyA9ICEwLCBuID0gcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKG8pIHRocm93IG47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXlMaW1pdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVJlc3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVTcHJlYWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSA9IHJlcXVpcmUoXCIuL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanNcIik7XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoZSwgdCkge1xuICBpZiAobnVsbCA9PSBlKSByZXR1cm4ge307XG4gIHZhciBvLFxuICAgIHIsXG4gICAgaSA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoZSwgdCk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIG4gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIGZvciAociA9IDA7IHIgPCBuLmxlbmd0aDsgcisrKSBvID0gbltyXSwgdC5pbmRleE9mKG8pID49IDAgfHwge30ucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLCBvKSAmJiAoaVtvXSA9IGVbb10pO1xuICB9XG4gIHJldHVybiBpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShyLCBlKSB7XG4gIGlmIChudWxsID09IHIpIHJldHVybiB7fTtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgbiBpbiByKSBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChyLCBuKSkge1xuICAgIGlmIChlLmluZGV4T2YobikgPj0gMCkgY29udGludWU7XG4gICAgdFtuXSA9IHJbbl07XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIGFzc2VydFRoaXNJbml0aWFsaXplZCA9IHJlcXVpcmUoXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiKTtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZih0LCBlKSB7XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheUxpbWl0ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVJlc3QgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIik7XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShyLCBlKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBlKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBlKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NsaWNlZFRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRob3V0SG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVNwcmVhZCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCIpO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdG9Db25zdW1hYmxlQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1ByaW1pdGl2ZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoXCIuL3RvUHJpbWl0aXZlLmpzXCIpO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJvcGVydHlLZXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIG87XG4gIH0gOiBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfdHlwZW9mKG8pO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHtcbiAgaWYgKHIpIHtcbiAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgcikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkociwgYSk7XG4gICAgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTtcbiAgICByZXR1cm4gXCJPYmplY3RcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXCJNYXBcIiA9PT0gdCB8fCBcIlNldFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFwiQXJndW1lbnRzXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBhcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL2dldFByb3RvdHlwZU9mLmpzXCIpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG52YXIgaXNOYXRpdmVGdW5jdGlvbiA9IHJlcXVpcmUoXCIuL2lzTmF0aXZlRnVuY3Rpb24uanNcIik7XG52YXIgY29uc3RydWN0ID0gcmVxdWlyZShcIi4vY29uc3RydWN0LmpzXCIpO1xuZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcih0KSB7XG4gIHZhciByID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBNYXAgPyBuZXcgTWFwKCkgOiB2b2lkIDA7XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfd3JhcE5hdGl2ZVN1cGVyID0gZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcih0KSB7XG4gICAgaWYgKG51bGwgPT09IHQgfHwgIWlzTmF0aXZlRnVuY3Rpb24odCkpIHJldHVybiB0O1xuICAgIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIHQpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgICBpZiAodm9pZCAwICE9PSByKSB7XG4gICAgICBpZiAoci5oYXModCkpIHJldHVybiByLmdldCh0KTtcbiAgICAgIHIuc2V0KHQsIFdyYXBwZXIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBXcmFwcGVyKCkge1xuICAgICAgcmV0dXJuIGNvbnN0cnVjdCh0LCBhcmd1bWVudHMsIGdldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIFdyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IFdyYXBwZXIsXG4gICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICAgIH1cbiAgICB9KSwgc2V0UHJvdG90eXBlT2YoV3JhcHBlciwgdCk7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF93cmFwTmF0aXZlU3VwZXIodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF93cmFwTmF0aXZlU3VwZXIsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgUHVibGlzaGVycyBmcm9tICcuL1B1Ymxpc2hlcnMnO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuXG5leHBvcnQge1xuICBTREssXG4gIFB1Ymxpc2hlcnMsXG4gIFB1Ymxpc2hlclN0YXRlXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFNESyxcbiAgUHVibGlzaGVycyxcbiAgUHVibGlzaGVyU3RhdGVcbn07Il0sIm5hbWVzIjpbIkdsb2JhbFNjb3BlIiwiRGlzcG9zYWJsZSIsIkRpc3Bvc2FibGVMaXN0IiwiU3ViamVjdCIsIlJlYWRPbmx5U3ViamVjdCIsInZpc2liaWxpdHlDaGFuZ2VFdmVudCIsIkFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2RlZmluZVByb3BlcnR5IiwiRGF0ZSIsIm5vdyIsIl9pc0ZvcmVncm91bmQiLCJfcmVhZE9ubHlJc0ZvcmVncm91bmQiLCJpbml0aWFsaXplIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwiZ2V0IiwidmFsdWUiLCJnZXRUaW1lU2luY2VMYXN0Q2hhbmdlIiwiX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZSIsImdldExhc3RCYWNrZ3JvdW5kRHVyYXRpb24iLCJfbGFzdEJhY2tncm91bmREdXJhdGlvbiIsImRpc3Bvc2UiLCJfZGlzcG9zYWJsZXMiLCJfdGhpcyIsImJhY2tncm91bmRFbnRyeVRpbWUiLCJoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlIiwiaXNOb3dGb3JlZ3JvdW5kIiwiZG9jdW1lbnRJc0hpZGRlbiIsInVzZUV2ZW50Q2FwdHVyZVBoYXNlIiwiYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyIiwiYWRkIiwicmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyIiwiZGVmYXVsdCIsIkJyb3dzZXJEZXRlY3RvciIsIl9icm93c2VyTmFtZUFuZFZlcnNpb24iLCJfYnJvd3Nlck5hbWUiLCJfYnJvd3Nlck1ham9yVmVyc2lvbiIsIl9pc0FuZHJvaWQiLCJfaXNDaHJvbWU2OSIsIl9pc0Nocm9tZTcwIiwiX2lzQ2hyb21lNzEiLCJfaXNDaHJvbWU3MiIsIl9pc0Nocm9tZTc0IiwiX2lzQ2hyb21lNzUiLCJfaXNDaHJvbWU3NiIsIl9pc0Nocm9tZTc3IiwiaXNNb2JpbGUiLCJfaXNNb2JpbGUiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm1hdGNoIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4IiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSIsInBhcnNlQnJvd3Nlck5hbWUiLCJicm93c2VyTmFtZUxpc3QiLCJzcGxpdCIsInBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbiIsImJyb3dzZXJWZXJzaW9uTGlzdCIsImZ1bGxWZXJzaW9uIiwiTnVtYmVyIiwibXNpZSIsImluZGV4T2YiLCJjb25jYXQiLCJwYXJzZUludCIsInN1YnN0cmluZyIsInRyaWRlbnQiLCJ2ZXJzaW9uIiwiX0Jyb3dzZXJEZXRlY3RvciIsInRlc3QiLCJfbmF2aWdhdG9yIiwiX25hdmlnYXRvcjIiLCJpbmNsdWRlcyIsIkxvZ2dlckRlZmF1bHRzIiwiTG9nZ2luZ0xldmVsTWFwcGluZyIsIlRlbGVtZXRyeURlZmF1bHQiLCJUZWxlbWV0cnlMZXZlbE1hcHBpbmciLCJDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIiwiZ2V0U3RyaW5nVmFsdWUiLCJuYW1lIiwicmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJWYWx1ZSIsInJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVVJJVmFsdWUiLCJkZWZhdWx0U3RyaW5nVmFsdWUiLCJnZXRCb29sZWFuVmFsdWUiLCJ2YWx1ZUZyb21VcmkiLCJkZWZhdWx0Qm9vbGVhblZhbHVlIiwiY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUiLCJkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlIiwiZGVmYXVsdExvZ2dpbmdMZXZlbCIsImRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsIiwiZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCIsIm1ldGFWYWx1ZSIsImRvY3VtZW50UXVlcnlTZWxlY3RvciIsImdldEF0dHJpYnV0ZSIsInZhbHVlVVJJUGFyYW1ldGVyTmFtZSIsIlVSTFNlYXJjaFBhcmFtcyIsImxvY2F0aW9uU2VhcmNoIiwidW5kZWZpbmVkIiwiRmVhdHVyZUVuYWJsZW1lbnQiLCJTREsiLCJHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciIsIkVycm9yIiwiZm9yY2VHYXJiYWdlQ29sbGVjdGlvbiIsInNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsImlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCIsImZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24iLCJpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkIiwicXVldWVNaWNyb3Rhc2siLCJvdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24iLCJiaW5kIiwic2V0VGltZW91dCIsImltZyIsImRvY3VtZW50Q3JlYXRlRWxlbWVudCIsInNyYyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIkJsb2IiLCJBcnJheUJ1ZmZlciIsIm9uZXJyb3IiLCJyZXZva2VPYmplY3RVUkwiLCJOZXR3b3JrTW9uaXRvciIsIm5hdmlnYXRvckNvbm5lY3Rpb24iLCJpc1N1cHBvcnRlZCIsInNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycyIsInVwZGF0ZVN0YXRpc3RpY3MiLCJfaXNTdXBwb3J0ZWQiLCJfcnR0IiwiX2VmZmVjdGl2ZVR5cGUiLCJfZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJnZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsIl9yZWYiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMyIsImRvd25saW5rIiwiZG93bmxpbmtNYXgiLCJnZXRFZmZlY3RpdmVUeXBlIiwiX3JlZjIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTYiLCJlZmZlY3RpdmVUeXBlIiwidHlwZSIsImdldFJvdW5kVHJpcFRpbWUiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE3IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOCIsInJ0dCIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTkiLCJsaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEwIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIk1ldHJpY3NUeXBlIiwiTWV0cmljVHlwZSIsIkR1cmF0aW9ucyIsIkxvZ2dlckZhY3RvcnkiLCJTdHJlYW1TZXR1cExpc3RlbmVyIiwicGFnZUxvYWRUaW1lIiwiZ2V0TG9nZ2VyIiwibWV0cmljc1NlcnZpY2UiLCJfc3RhcnRUaW1lIiwiX3BhZ2VMb2FkVGltZSIsInN1Y2Nlc3MiLCJzdHJlYW1JZCIsInJlY29yZFN0cmVhbU1ldHJpYyIsIlNldHVwQ29tcGxldGVkIiwiZmFpbCIsIlNldHVwRmFpbGVkIiwibWV0cmljVHlwZSIsIl9tZXRyaWNTdWJtaXR0ZWQiLCJzZXR1cFRpbWUiLCJtZXRyaWNOYW1lIiwiZ2V0TmFtZSIsInB1c2giLCJydW50aW1lIiwidWludDY0IiwiX2xvZ2dlciIsImluZm8iLCJ0b0lzb1N0cmluZyIsIkVkZ2VUb2tlbiIsImVkZ2VBdXRoVG9rZW5QcmVmaXgiLCJFZGdlQXV0aFBhcnNlciIsInBhcnNlVG9rZW4iLCJ0b2tlbiIsImlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkIiwiZXJyb3IiLCJkZWNvZGVkVG9rZW4iLCJhdG9iIiwic3Vic3RyIiwibGVuZ3RoIiwiZWRnZVRva2VuIiwiSlNPTiIsInBhcnNlIiwiZSIsInN0YXJ0c1dpdGgiLCJfZWRnZVRva2VuJHRva2VuIiwiX2VkZ2VUb2tlbiR0b2tlbjIiLCJfYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uSWQiLCJfdG9rZW4iLCJ1cmkiLCJjYXBhYmlsaXRpZXMiLCJCdWlsZEZlYXR1cmVzIiwiX3NlbmRMb2NhbENhbmRpZGF0ZXMiLCJfc2VuZExvZ3MiLCJfc2VuZE1ldHJpY3MiLCJfbG9nVG9Db25zb2xlIiwiYXBwbHlGZWF0dXJlcyIsImZlYXR1cmVzIiwiX19GRUFUVVJFU19fIiwic2VuZExvY2FsQ2FuZGlkYXRlcyIsInNlbmRMb2dzIiwic2VuZE1ldHJpY3MiLCJsb2dUb0NvbnNvbGUiLCJpc0Nocm9tZTc0IiwiaXNDaHJvbWU3NSIsImlzQ2hyb21lNzYiLCJpc0Nocm9tZTc3IiwiYWRkVHJhbmNlaXZlckRpc2FibGVkIiwiaXNDaHJvbWU2OSIsImlzQ2hyb21lNzAiLCJpc0Nocm9tZTcxIiwiaXNDaHJvbWU3MiIsImJyb3dzZXJOYW1lIiwiYnJvd3Nlck1ham9yVmVyc2lvbiIsIl9HbG9iYWxTY29wZSR2YWx1ZSIsIk1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3IiLCJNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yIiwiUlRDUnRwUmVjZWl2ZXIiLCJwcm90b3R5cGUiLCJjcmVhdGVFbmNvZGVkU3RyZWFtcyIsIlJUQ1J0cFNjcmlwdFRyYW5zZm9ybSIsIl9HbG9iYWxTY29wZSR2YWx1ZTIiLCJIVE1MVmlkZW9FbGVtZW50IiwicmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayIsIl9HbG9iYWxTY29wZSR2YWx1ZTMiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWQiLCJpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCIsImlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkIiwiUGFyYW1ldGVycyIsIl9kaXNjb3ZlcnlQYXJhbWV0ZXJzIiwiYXBwbHlQYXJhbWV0ZXJzIiwicGFyYW1ldGVycyIsIl9fUEFSQU1FVEVSU19fIiwiZGlzY292ZXJ5IiwiaW50ZW50aW9ucyIsImJyb3dzZXJHbG9iYWxTY29wZSIsImRvY3VtZW50IiwibG9jYXRpb24iLCJ3aW5kb3ciLCJnbG9iYWxTY29wZSIsIl9kb2N1bWVudCIsIl9sb2NhdGlvbiIsIl93aW5kb3ciLCJBYm9ydENvbnRyb2xsZXIiLCJGb3JtRGF0YSIsIk1lZGlhU3RyZWFtIiwiTWVkaWFTdHJlYW1UcmFjayIsIk1lZGlhU291cmNlIiwiUlRDUGVlckNvbm5lY3Rpb24iLCJSVENTZXNzaW9uRGVzY3JpcHRpb24iLCJSVENJY2VDYW5kaWRhdGUiLCJjbGVhckludGVydmFsIiwiY2xlYXJUaW1lb3V0IiwiY3JlYXRlRWxlbWVudCIsImhhc0ZvY3VzIiwiaGlkZGVuIiwicXVlcnlTZWxlY3RvciIsImZldGNoIiwiaG9zdG5hbWUiLCJzZWFyY2giLCJjb25uZWN0aW9uIiwib25MaW5lIiwic2VuZEJlYWNvbiIsInVybCIsImRhdGEiLCJzZXRJbnRlcnZhbCIsInNldEluc3RhbmNlIiwicHJvdmlkZWRHbG9iYWxTY29wZSIsImdldEluc3RhbmNlIiwiX3JlYWRPbmx5SW5zdGFuY2UiLCJzdWJzY3JpYmUiLCJjYWxsYmFjayIsIl9HbG9iYWxTY29wZSIsIl9pbnN0YW5jZSIsImRpc3Bvc2FibGUiLCJfZGlzcG9zZWQiLCJfZGlzcG9zYWJsZSIsImNhbGwiLCJfbGlzdCIsImZvckVhY2giLCJ0b1N0cmluZyIsIm1heERpZ2l0c0luRmxvYXRBZnRlckRvdCIsIk51bWJlcnMiLCJjb3VudE51bWJlckxlbmd0aCIsImluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUiLCJudW1iZXIiLCJjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwiLCJNYXRoIiwiZmxvb3IiLCJjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCIsImZpeFJvdW5kaW5nIiwicHJlY2lzaW9uIiwicG93ZXIiLCJwb3ciLCJyb3VuZCIsImRpZ2l0c0JlZm9yZURlY2ltYWwiLCJvcmlnaW5hbFZhbHVlIiwibW9kaWZpZWRWYWx1ZSIsImNvdW50IiwiU3RyaW5ncyIsInJhbmRvbSIsInJhbmRvbTEzQ2hhcmFjdGVycyIsImxvb3BzIiwiY2VpbCIsIkFycmF5IiwiZmlsbCIsInJlZHVjZSIsInN0cmluZyIsImZ1bmMiLCJhc3NlcnRVbnJlYWNoYWJsZSIsIngiLCJBcHBlbmRlcnMiLCJfYXBwZW5kZXJzIiwiYXBwZW5kZXIiLCJyZW1vdmUiLCJpdGVtcyIsIml0ZW0iLCJMb2dnaW5nTGV2ZWwiLCJDb25zb2xlQXBwZW5kZXIiLCJ0aHJlc2hvbGQiLCJfdGhyZXNob2xkIiwibG9nIiwibG9nTGV2ZWwiLCJtZXNzYWdlIiwiY2F0ZWdvcnkiLCJkYXRlIiwiZnVsbE1lc3NhZ2UiLCJ0b0lTT1N0cmluZyIsIldhcm4iLCJjb25zb2xlIiwiTG9nZ2VyIiwiYXBwZW5kZXJzIiwiX2NhdGVnb3J5IiwidHJhY2UiLCJUcmFjZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiX2tleSIsImRlYnVnIiwiRGVidWciLCJfbGVuMiIsIl9rZXkyIiwiSW5mbyIsIl9sZW4zIiwiX2tleTMiLCJ3YXJuIiwiX2xlbjQiLCJfa2V5NCIsIl9sZW41IiwiX2tleTUiLCJmYXRhbCIsIkZhdGFsIiwiX2xlbjYiLCJfa2V5NiIsImxldmVsIiwicmVwbGFjZVBsYWNlaG9sZGVycyIsIl90aGlzMiIsInJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmciLCJpbmRleCIsInJlcGxhY2VBcmd1bWVudCIsInNwbGljZSIsInN0cmluZ2lmeSIsImFjY3VtdWxhdG9yIiwiY3VycmVudFZhbHVlIiwiYXJyYXkiLCJlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSIsInN0YWNrIiwiYXJnIiwiY2FjaGUiLCJfIiwiT2JqZWN0IiwiYXJndW1lbnQiLCJ0b1N0cmluZ1N0ciIsIkxvZ2dpbmdUaHJlc2hvbGQiLCJUZWxlbWV0cnlBcHBlbmRlciIsIlRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImxvZ2dlciIsIl9sb2dnZXJzIiwiYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5TG9nZ2luZ0xldmVsIiwiYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCIsImFwcGx5Q29uc29sZUxvZ2dlciIsImFwcGx5VGVsZW1ldHJ5TG9nZ2VyIiwicGFyYW1ldGVyVmFsdWUiLCJzZXRUaHJlc2hvbGQiLCJhcHBseUFwcGVuZGVyIiwibG9nZ2luZ0xldmVsIiwiT2ZmIiwiQWxsIiwiY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbCIsImxvZ2dpbmdMZXZlbFR5cGUiLCJUZWxlbWV0cnlMZXZlbCIsIm1ldHJpY3MiLCJfbWV0cmljcyIsImdldFRlbGVtZXRyeUxldmVsIiwiVGltZVRvRmlyc3RGcmFtZSIsIkVzc2VudGlhbCIsIkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJTdGFsbGVkIiwiQnVmZmVyaW5nIiwiUm91bmRUcmlwVGltZSIsIkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiTmV0d29ya1R5cGUiLCJSZXNvbHV0aW9uQ2hhbmdlZCIsIkFwcGxpY2F0aW9uRm9yZWdyb3VuZCIsIkFwcGxpY2F0aW9uQmFja2dyb3VuZCIsIk1ldHJpY3NDb25maWd1cmF0aW9uIiwiX3VybCIsInNldCIsIm1ldHJpY3NVcmwiLCJwYXRobmFtZSIsIl9lbnZpcm9ubWVudCIsImVudmlyb25tZW50IiwiX3RlbmFuY3kiLCJ0ZW5hbmN5IiwiX3Nlc3Npb25JZCIsInNlc3Npb25JZCIsIk1ldHJpY3NTZXJ2aWNlIiwiVGVsZW1ldHJ5VXJsIiwiRW52aXJvbm1lbnQiLCJNZXRyaWNzRmFjdG9yeSIsImdldE1ldHJpY3NTZXJ2aWNlIiwiX3R5cGVvZiIsIm1ldHJpY3NTZXJ2aWNlcyIsIl9tZXRyaWNzU2VydmljZXMiLCJtZXRyaWNzQ29uZmlndXJhdGlvbiIsImNsaWVudFNlc3Npb25JZCIsImdldFRlbGVtZXRyeVVybCIsImdldEVudmlyb25tZW50RnJvbVVybCIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsIiwidGVsZW1ldHJ5TGV2ZWwiLCJzZXRUZWxlbWV0cnlMZXZlbCIsInZhbHVlcyIsInQiLCJyIiwiU3ltYm9sIiwibiIsIml0ZXJhdG9yIiwibyIsInRvU3RyaW5nVGFnIiwiaSIsImMiLCJHZW5lcmF0b3IiLCJ1IiwiY3JlYXRlIiwiX3JlZ2VuZXJhdG9yRGVmaW5lMiIsImYiLCJwIiwieSIsIkciLCJ2IiwiYSIsImQiLCJsIiwiVHlwZUVycm9yIiwiZG9uZSIsInJldHVybiIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJnZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZGlzcGxheU5hbWUiLCJfcmVnZW5lcmF0b3IiLCJ3IiwibSIsImRlZmluZVByb3BlcnR5IiwiX3JlZ2VuZXJhdG9yRGVmaW5lIiwiX2ludm9rZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIkV4cG9uZW50aWFsQmFja29mZiIsIlZlcnNpb25NYW5hZ2VyIiwicmVxdWVzdFNpemVMaW1pdCIsIm1heEJ1ZmZlcmVkUmVjb3JkcyIsIl9tZXRyaWNzQ29uZmlndXJhdGlvbiIsIl9leHBvbmVudGlhbEJhY2tvZmYiLCJnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlIiwidGhlbiIsImxvY2F0aW9uSG9zdG5hbWUiLCJfZG9tYWluIiwibWV0cmljIiwicHJldmlvdXNWYWx1ZSIsInJlc291cmNlIiwia2luZCIsIm1ldHJpY1JlY29yZCIsInRpbWVzdGFtcCIsImZ1bGxRdWFsaWZpZWROYW1lIiwic2RrVmVyc2lvbiIsImlnbm9yZWQiLCJzZW5kTWV0cmljc0lmQWJsZSIsIlByb21pc2UiLCJyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSIsImdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfY2FsbGVlIiwibWV0cmljc01lc3NhZ2VzIiwiZm9ybURhdGEiLCJfY29udGV4dCIsImFwcGVuZCIsInJlY29yZHMiLCJtZXRob2QiLCJib2R5IiwiX3giLCJhcHBseSIsIl9zZW5kTWV0cmljc0lmQWJsZSIsIl9jYWxsZWUyIiwiX2NvbnRleHQyIiwiX2lzU2VuZGluZyIsInNsaWNlIiwicmVzcG9uc2UiLCJpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSIsIl9mYWlsdXJlQ291bnQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50IiwiY2F0Y2giLCJzdGF0dXMiLCJ0ZWxlbWV0cnlMZXZlbFR5cGUiLCJQcm9taXNlSGFuZGxlciIsIl9zdGF0ZSIsIl9oYW5kbGVkIiwiX3ZhbHVlIiwiX2RlZmVycmVkcyIsImRvUmVzb2x2ZSIsInByb21pc2VSZXNvbHZlIiwicmVhc29uIiwicHJvbWlzZVJlamVjdCIsIm5ld1ZhbHVlIiwicHJvbWlzZSIsImZpbmFsZSIsIl9pbW1lZGlhdGUiLCJfdW5oYW5kbGVkUmVqZWN0aW9uIiwibGVuIiwiaGFuZGxlIiwiZGVmZXJyZWQiLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJyZXN1bHQiLCJhbGwiLCJhcnIiLCJyZXNvbHZlIiwicmVqZWN0IiwiaXNBcnJheSIsInJlbWFpbmluZyIsIm1hbmFnZVJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJyYWNlIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIkVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImRlZmF1bHRUcmFja0tpbmRzIiwiUGVlckNvbm5lY3Rpb25TZXJ2aWNlIiwiX3BlZXJDb25uZWN0aW9uRmFjdG9yeSIsImluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmciLCJpc1ByZWNhY2hpbmdFbmFibGVkIiwicHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX3ByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWNoZWQiLCJkaXJlY3Rpb24iLCJwZWVyQ29ubmVjdGlvbiIsImNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWxsZWUzIiwidHJhY2tLaW5kcyIsImVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImNvbmZpZ3VyYXRpb24iLCJfYXJnczMiLCJfY29udGV4dDMiLCJEaXNhYmxlZCIsImlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0IiwiRW5hYmxlZCIsImNyZWF0ZVBlZXJDb25uZWN0aW9uIiwic3VwcG9ydHNBZGRUcmFuc2NlaXZlciIsImF1ZGlvVHJhbnNjZWl2ZXJzIiwidmlkZW9UcmFuc2NlaXZlcnMiLCJvcHRpb25zIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfdDUiLCJfdDYiLCJhZGRUcmFuc2NlaXZlciIsImNyZWF0ZU9mZmVyIiwibG9jYWxPZmZlciIsIm9mZmVyVG9SZWNlaXZlQXVkaW8iLCJvZmZlclRvUmVjZWl2ZVZpZGVvIiwidHJhY2tzS2luZHMiLCJjb3VudFRyYWNrS2luZHMiLCJ0cmFja0tpbmRDb3VudCIsImF1ZGlvIiwidmlkZW8iLCJjb3VudGVkVHJhY2tLaW5kcyIsImNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyIsIlJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIiwidHJ1bmNhdGVJY2VTZXJ2ZXJzIiwiaWNlU2VydmVycyIsInVybHMiLCJ1c2VybmFtZSIsImNyZWRlbnRpYWwiLCJTZHBQYXJzZXIiLCJ1cGRhdGVTdGF0aXN0aWNUaW1lb3V0IiwiZ2V0U3RhdHNUaW1lb3V0RHVyYXRpb24iLCJSdGNQdWJsaXNoTW9uaXRvciIsImVzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJpc0ZvcmVncm91bmQiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24yIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uMyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjQiLCJfcGVlckNvbm5lY3Rpb24iLCJfZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsImN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIiwic2RwIiwiY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIiwicGFyc2VkTG9jYWxEZXNjcmlwdGlvbiIsInBhcnNlZFJlbW90ZURlc2NyaXB0aW9uIiwiX2VzdGltYXRlZEF1ZGlvQ29kZWMiLCJhdWRpb0NvZGVjIiwiX2VzdGltYXRlZFZpZGVvQ29kZWMiLCJ2aWRlb0NvZGVjIiwiX2F2YWlsYWJsZVRyYWNrcyIsImlzQXVkaW9UcmFja0VuYWJsZWQiLCJpc1ZpZGVvVHJhY2tFbmFibGVkIiwiaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2siLCJmb3JlZ3JvdW5kIiwiX2lzTW9uaXRvclJ1bm5pbmciLCJfbW9uaXRvckdlbmVyYXRpb24iLCJfdXBkYXRlVGltZW91dCIsInVwZGF0ZVN0YXRpc3RpYyIsIl9ydGNTdGF0aXN0aWMiLCJfdXBkYXRlU3RhdGlzdGljIiwiZ2VuZXJhdGlvbiIsImdldEtpbmRGb3JTYWZhcmkxMSIsInRpbWVvdXRIYW5kbGUiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb241Iiwic3RhdHNQcm9taXNlIiwidGltZW91dFByb21pc2UiLCJzdGF0cyIsInJ0Y1N0YXRpc3RpY3MiLCJyb3VuZFRyaXBUaW1lIiwibGFzdFBhY2tldFNlbnRUaW1lc3RhbXAiLCJnZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkIiwiaWQiLCJnZXRTdGF0cyIsInJlcG9ydCIsImN1cnJlbnRSb3VuZFRyaXBUaW1lIiwiX3RoaXMyJF9hdmFpbGFibGVUcmFjIiwibWVkaWFUeXBlIiwiY29kZWMiLCJjb2RlY0lkIiwibWltZVR5cGUiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQyIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkMyIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ1IiwiYnl0ZXMiLCJieXRlc1NlbnQiLCJwcmV2aW91c0J5dGVzU2VudCIsImJ5dGVzRGVsdGEiLCJ0aW1lRGVsdGEiLCJiaXRyYXRlIiwic3NyYyIsInBhY2tldHNTZW50IiwicmV0cmFuc21pdHRlZEJ5dGVzU2VudCIsImdldENvZGVjQnlUeXBlIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNiIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDciLCJmaXJDb3VudCIsImZyYW1lSGVpZ2h0IiwiZnJhbWVXaWR0aCIsImZyYW1lc0VuY29kZWQiLCJmcmFtZXNTZW50IiwiaGVhZGVyQnl0ZXNTZW50IiwiaHVnZUZyYW1lc1NlbnQiLCJwbGlDb3VudCIsInFwU3VtIiwidG90YWxFbmNvZGVUaW1lIiwidG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQiLCJmcHMiLCJfc2RwIiwic2RwU3BsaXRCeUxpbmVzIiwic2RwU3BsaXRCeVRyYWNrcyIsIl9hdWRpb0NvZGVjIiwiYXBwbHlDb2RlYyIsIl92aWRlb0NvZGVjIiwiX2lzQXVkaW9UcmFja0VuYWJsZWQiLCJpc1RyYWNrQnlUeXBlRW5hYmxlZCIsIl9pc1ZpZGVvVHJhY2tFbmFibGVkIiwic2RwU2VjdGlvbkZvclR5cGUiLCJmaW5kIiwic2RwVHJhY2siLCJfc2RwU3BsaXRCeUxpbmVzJGZpbmQiLCJydG1hcCIsInNkcExpbmUiLCJ1c2VkQ29kZWNMaW5lIiwidXNlZENvZGVjIiwiY29kZWNOYW1lIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uIiwid2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkIiwid2Via2l0UlRDUGVlckNvbm5lY3Rpb24iLCJjb25uZWN0aW9uU3RhdGUiLCJpY2VDb25uZWN0aW9uU3RhdGUiLCJnZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNiIsInNldENvbmZpZ3VyYXRpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb243IiwiZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQiLCJnZXRUcmFuc2NlaXZlcnMiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb244IiwiX2NyZWF0ZU9mZmVyIiwicHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQiLCJfY3JlYXRlQW5zd2VyIiwiY3JlYXRlQW5zd2VyIiwiX3gyIiwiX3NldExvY2FsRGVzY3JpcHRpb24iLCJkZXNjcmlwdGlvbiIsInNldExvY2FsRGVzY3JpcHRpb24iLCJfeDMiLCJfc2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfY2FsbGVlNCIsIl9kZXNjcmlwdGlvbiRzZHAiLCJoYXNDcnlwdG8iLCJfY29udGV4dDQiLCJzZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl94NCIsImdldFNlbmRlcnMiLCJnZXRSZWNlaXZlcnMiLCJzZWxlY3RvciIsImdldFN0YXRzTGVnYWN5IiwiX3RoaXMzIiwiYWRkU3RyZWFtIiwibWVkaWFTdHJlYW0iLCJfdGhpczQiLCJnZXRUcmFja3MiLCJ0cmFjayIsImFkZFRyYWNrIiwib250cmFjayIsImhhbmRsZXIiLCJvbmljZWNhbmRpZGF0ZSIsIm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwib25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJjbG9zZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjkiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlIiwic3ViamVjdCIsIl9zdWJqZWN0IiwiRGlzcG9zYWJsZUxpc3RlbmVyIiwiX0Rpc3Bvc2FibGUiLCJsaXN0ZW5lcnMiLCJfY2FsbFN1cGVyIiwiaWR4IiwiX2luaGVyaXRzIiwiX2xpc3RlbmVycyIsImNoYW5nZWQiLCJjb21wYXJhYmxlIiwiZXF1YWxzIiwiX2kiLCJfYXJyIiwiYmFzZVVSTCIsIm9yaWdpbiIsIkRpc2NvdmVyeVVyaSIsIl9HbG9iYWxTY29wZSRnZXRJbnN0YSIsIl9jbGllbnRTZXNzaW9uSWQiLCJfbG9hZGVkVGltZXN0YW1wIiwiX3JlYWRPbmx5SW5pdGlhbGl6ZWQiLCJfcmVhZE9ubHlEaXNjb3ZlcnlVcmkiLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlIiwiX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlIiwiX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzIiwiX3dlYlBsYXllckxvYWRlciIsIl9zaGFrYVBsYXllckxvYWRlciIsIl9obHNKc0xvYWRlciIsIl9tZXRyaWNzU2VydmljZSIsIl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl90ZWxlbWV0cnlVcmwiLCJfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsInJldHJpZXNBbW91bnQiLCJfdGVsZW1ldHJ5TGV2ZWwiLCJhcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJ0ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiaWdub3JlZEVudmlyb25tZW50IiwiaWdub3JlZERpc2NvdmVyeVVyaSIsInRlbGVtZXRyeVVybCIsInRlbGVtZXRyeUFwcGVuZGVyIiwiaWdub3JlZFRlbmFuY3kiLCJhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uIiwiaWdub3JlZFRlbGVtZXRyeUxldmVsIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImRpc2NvdmVyeVVyaSIsImNoYW5uZWxUb2tlbiIsInVyaVZhbHVlIiwiYmFzZVVSSVZhbHVlIiwib25Mb2FkIiwiX2luaXRpYWxpemVkIiwiYWRkV2luZG93RXZlbnRMaXN0ZW5lciIsImluaXQiLCJvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUiLCJwZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJjb25zb2xlTG9nZ2luZ0xldmVsIiwiY29uc29sZUFwcGVuZGVyIiwiYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlIiwid2ViUGxheWVyTG9hZGVyIiwic2hha2FQbGF5ZXJMb2FkZXIiLCJobHNKc0xvYWRlciIsIl90aGlzJF9hcHBsaWNhdGlvbkFjdCIsIl9TREsiLCJzZWdtZW50cyIsInByb3RvY29sIiwidW5zaGlmdCIsImVuZHNXaXRoIiwiam9pbiIsIkJpdHJhdGVTdGF0ZSIsIkJpdHJhdGVNb2RlIiwiUGVlckNvbm5lY3Rpb25Db250ZXh0IiwiZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsInBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJkaXNwb3NlUGVlckNvbm5lY3Rpb24iLCJkaXNwb3NlTWVkaWFTdHJlYW0iLCJfdGhpcyRtZWRpYVN0cmVhbSR2YWwiLCJzdG9wIiwiU3RhdGVDb250ZXh0IiwiaXNTdGFydGluZyIsImlzRGlzcG9zZWQiLCJUb2tlbkNvbnRleHQiLCJ0b2tlbkV4cGlyaW5nIiwiZGVmYXVsdERpc2NvdmVyeVVyaSIsIkJpdHJhdGVNb2RlTWFwcGluZyIsImNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlIiwiYml0cmF0ZU1vZGUiLCJOb3JtYWwiLCJGb3JjZSIsIlJlc2V0IiwiQml0cmF0ZVN0YXRlTWFwcGluZyIsImNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUiLCJiaXRyYXRlU3RhdGUiLCJLZWVwIiwiRGlzY292ZXJ5U2VydmljZSIsImRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwiLCJEaXNjb3ZlcnkiLCJfcHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJyZXNvbHZlRW5kUG9pbnRQcm9taXNlIiwiZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsInByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwiX2Rpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmciLCJkaXNjb3ZlcnlTZXJ2aWNlIiwiY2FjaGVkVmFsdWUiLCJfY2FjaGUiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCIsImNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50IiwiRW5kUG9pbnQiLCJkZWZhdWx0VGltZW91dCIsIl91cmkiLCJfZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJ0aW1lb3V0IiwiYXNTdHJpbmciLCJlbmRQb2ludHMiLCJvayIsInRleHQiLCJtYXAiLCJlbmRQb2ludCIsImRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzIiwiX2Rpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiZmFpbGVkUmVxdWVzdHMiLCJwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCIsIl9hcmdzMiIsImJ1aWxkRGlzY292ZXJ5VXJsIiwicGluZyIsInRpbWUiLCJfZGlzY292ZXJ5VXJpIiwiZGlzY292ZXJ5UGFyYW1ldGVycyIsInNlYXJjaFBhcmFtcyIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJCb29sZWFuIiwidmFsdWVPZiIsImFwaVZlcnNpb24iLCJGZXRjaFRpbWVvdXRFcnJvciIsIl9FcnJvciIsIl93cmFwTmF0aXZlU3VwZXIiLCJfdGltZW91dER1cmF0aW9uIiwiX3JvdW5kVHJpcFRpbWUiLCJfcGluZyIsInN0YXJ0IiwicmVxdWVzdE9wdGlvbnMiLCJidWlsZFBpbmdVcmwiLCJmZXRjaFdpdGhUaW1lb3V0IiwiX3N1YnNjcmliZSIsImxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uIiwiZmFpbHVyZUNvdW50IiwiX29wdGlvbnMkb25TdWJzY3JpYmVSIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSNCIsImNsaWVudFZlcnNpb24iLCJyZXF1ZXN0Qm9keSIsImZldGNoUmVxdWVzdE9wdGlvbnMiLCJodHRwUmVzcG9uc2UiLCJqc29uUmVzcG9uc2VCb2R5IiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMiIsIl9yZXNwb25zZSIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjMiLCJfcmVzcG9uc2UyIiwiZmluaXNoZWQiLCJzdWJzY3JpYmVSZXNwb25zZSIsImJ1aWxkVXJsIiwiYmVhcmVyVG9rZW4iLCJodHRwUm91bmRUcmlwVGltZSIsInNlc3Npb25EZXNjcmlwdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uIiwiY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbiIsIm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIiwiZXhlY3V0ZUZldGNoUmVxdWVzdCIsInBhcnNlSnNvbkJvZHkiLCJoYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQiLCJzdHJlYW1SZXNwb25zZUNvbnRleHQiLCJtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMiLCJvblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2siLCJub3JtYWxpemVTdWJzY3JpYmVSZXNwb25zZSIsIl9wdWJsaXNoIiwiYm9keVdpdGhPZmZlciIsImJvZHlXaXRob3V0T2ZmZXIiLCJwdWJsaXNoUmVzcG9uc2UiLCJtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzIiwibm9ybWFsaXplUHVibGlzaFJlc3BvbnNlIiwicHVibGlzaCIsIl94NSIsIl94NiIsIl94NyIsInN0cmVhbSIsInNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJzaGFyZWRTZWNyZXQiLCJtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uIiwiX3g4IiwiX3g5IiwiX2xpbWl0Qml0cmF0ZSIsIl9jYWxsZWU1IiwiZWxhcHNlZEluTWlsbGlzZWNvbmRzIiwiYml0cmF0ZUluQml0c1BlclNlY29uZCIsIl9jb250ZXh0NSIsIm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIiwibGltaXRCaXRyYXRlIiwiX3gwIiwiX3gxIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX2FkZEljZUNhbmRpZGF0ZXMiLCJfY2FsbGVlNiIsImNhbmRpZGF0ZXMiLCJkaXNjb3ZlcnlDb21wbGV0ZWQiLCJhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfYXJnczYiLCJfY29udGV4dDYiLCJtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlcyIsImFkZEljZUNhbmRpZGF0ZXMiLCJfeDEzIiwiX3gxNCIsIl94MTUiLCJfZGVzdHJveVN0cmVhbSIsIl9jYWxsZWU3IiwiZGVzdHJveVN0cmVhbVJlc3BvbnNlIiwiX2NvbnRleHQ3IiwibWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW0iLCJkZXN0cm95U3RyZWFtIiwiX3gxNiIsIl94MTciLCJfZGVzdHJveVN0cmVhbU9uVW5tb3VudCIsIl9jYWxsZWU4IiwiX2NvbnRleHQ4IiwiZXJyIiwiZGVzdHJveVN0cmVhbU9uVW5tb3VudCIsIl94MTgiLCJfeDE5IiwiX2ZldGNoV2l0aFRpbWVvdXQiLCJfY2FsbGVlOSIsInRpbWVvdXREdXJhdGlvbiIsImNvbnRyb2xsZXIiLCJfY29udGV4dDkiLCJfb2JqZWN0U3ByZWFkIiwic2lnbmFsIiwiYWJvcnQiLCJfeDIwIiwiX3gyMSIsIl94MjIiLCJfZXhlY3V0ZUZldGNoUmVxdWVzdCIsIl9jYWxsZWUwIiwib3BlcmF0aW9uIiwiX2NvbnRleHQwIiwiX3gyMyIsIl94MjQiLCJfeDI1IiwicGF0aCIsInBhdGhBc0FycmF5IiwiX3BhcnNlSnNvbkJvZHkiLCJfY2FsbGVlMSIsIl9jb250ZXh0MSIsImpzb24iLCJfeDI2IiwiY29udGV4dCIsImxhZyIsInJ0Y0NvbmZpZ3VyYXRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwiY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwiaWdub3JlZFN0cmVhbVJlc3BvbnNlQ29udGV4dCIsIm90aGVyUHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbiIsImJ1bmRsZVBvbGljeSIsImljZUNhbmRpZGF0ZVBvb2xTaXplIiwiaWNlVHJhbnNwb3J0UG9saWN5IiwicnRjcE11eFBvbGljeSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWUxMCIsIl9jb250ZXh0MTAiLCJfeDI3IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXMiLCJfY2FsbGVlMTEiLCJfY29udGV4dDExIiwiX3gyOCIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtIiwiX2NhbGxlZTEyIiwiX2NvbnRleHQxMiIsIl94MjkiLCJQdWJsaXNoZXJTdGF0ZSIsIlNlc3Npb25UZWxlbWV0cnkiLCJQdWJsaXNoZXJDb250ZXh0IiwiUmVhbFRpbWVQdWJsaXNoZXIiLCJkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24iLCJmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIm9uZUhvdXJJbk1pbGxpc2Vjb25kcyIsIm1heFJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIlB1Ymxpc2hlciIsInBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMiLCJfdG9rZW5Db250ZXh0IiwiX3B1Ymxpc2hlckNvbnRleHQiLCJfcGVlckNvbm5lY3Rpb25Db250ZXh0IiwiX3N0YXRlQ29udGV4dCIsIl9wdWJsaXNoZXJTdGFydFRpbWUiLCJfcmVhZE9ubHlUb2tlbiIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uIiwiX3JlYWRPbmx5U3RhdGUiLCJzdGF0ZSIsIl9yZWFkT25seVRva2VuRXhwaXJpbmciLCJfcmVhZE9ubHlBdXRob3JpemVkIiwiYXV0aG9yaXplZCIsIl9yZWFkT25seU9ubGluZSIsIm9ubGluZSIsIl9yZWFkT25seUxvYWRpbmciLCJsb2FkaW5nIiwiX3JlYWRPbmx5UHVibGlzaGluZyIsInB1Ymxpc2hpbmciLCJfcmVhZE9ubHlTdGFuZGJ5Iiwic3RhbmRieSIsIl9yZWFkT25seVN0b3BwZWQiLCJzdG9wcGVkIiwiX3JlYWRPbmx5RmFpbHVyZUNvdW50IiwiX3JlYWRPbmx5RW5kUG9pbnQiLCJfcmVhZE9ubHlTdHJlYW0iLCJfcmVhZE9ubHlSdGNTdGF0aXN0aWNzIiwiX3JlYWRPbmx5TWVkaWFTdHJlYW0iLCJfc2Vzc2lvblRlbGVtZXRyeSIsInB1Ymxpc2hlckRpc3Bvc2FibGVzIiwiY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0IiwiUHVibGlzaGluZyIsInJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIiLCJkaXNwb3NhYmxlcyIsIl9zdG9wIiwicHJvY2Vzc1N0b3AiLCJjbGVhblVwUmVzb3VyY2VzIiwiU3RvcHBlZCIsIl9kaXNwb3NlIiwiZ2V0VXJpIiwiX3N0YXJ0IiwicHJvY2Vzc1N0YXJ0IiwiX3Byb2Nlc3NTdGFydCIsImxpc3Rlbk9uU3RyZWFtU2V0dXAiLCJoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2siLCJzdHJlYW1QdWJsaXNoZXIiLCJTdGFydGluZyIsIlVuYXV0aG9yaXplZCIsIlJlY292ZXJpbmciLCJoYW5kbGVTdHJlYW1GYWlsdXJlIiwiQ2xpZW50U3RhcnRFcnJvciIsImZpbmFsbHkiLCJhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSIsInN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMiLCJ0aW1lb3V0SWQiLCJnZXRSZXRyeUludGVydmFsIiwic2V0TWVkaWFTdHJlYW0iLCJfdGhpczUiLCJtZWRpYVRyYWNrIiwiX3RoaXM1JF9wZWVyQ29ubmVjdGlvIiwic2VuZGVyIiwiX3NlbmRlciR0cmFjayIsInJlcGxhY2VUcmFjayIsIk9mZmxpbmUiLCJJbml0aWFsaXppbmciLCJOb3RGb3VuZCIsIkdlb1Jlc3RyaWN0ZWQiLCJHZW9CbG9ja2VkIiwiUmVjb25uZWN0aW5nIiwiVW5zdXBwb3J0ZWRGZWF0dXJlIiwiQ29uZmlndXJhdGlvbkVycm9yIiwiVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yIiwiQ29ubmVjdGlvbkVycm9yIiwiX2hhbmRsZVN0cmVhbUZhaWx1cmUiLCJyZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsIiwiX3RoaXM2IiwicHVibGlzaGVySW5pdGlhbGl6YXRpb24iLCJnZW5lcmF0ZVNjcmVlbk5hbWUiLCJhcHBseVB1Ymxpc2hTdGF0dXMiLCJhcHBseVVuYXV0aG9yaXplZCIsImFwcGx5Tm90Rm91bmQiLCJhcHBseVVuaGFuZGxlZEVycm9yIiwiYXBwbHlTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyIsImFwcGx5QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyIsIm1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsIlB1Ymxpc2hlcnMiLCJjcmVhdGVQdWJsaXNoZXIiLCJpbml0aWFsaXplZCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCIsInNvZnRSZXN0YXJ0SW50ZXJ2YWwiLCJwdWJsaXNoZXJDb250ZXh0IiwicGVlckNvbm5lY3Rpb25Db250ZXh0IiwibmF2aWdhdG9ySXNPbkxpbmUiLCJtZWRpYVRyYWNrcyIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkiLCJfcmVmMyQiLCJjbGllbnRPZmZlckRpc2FibGVkIiwic3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIiwic3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIiwiYXBwbHlSdGNDb25maWd1cmF0aW9uIiwic3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQiLCJjYW5jZWxEaXNjb3ZlcnkiLCJjYW5kaWRhdGUiLCJfdGhpcyRfcHVibGlzaGVyQ29udGUiLCJfcmVmNCIsIm1hcEFkZEljZUNhbmRpZGF0ZXNTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsInJldHJ5Q2FsbGJhY2siLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9jcmVhdGVBbnN3ZXJEZXNjcmlwdCIsImFuc3dlciIsIl9yZWY1IiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsIl90aGlzJF9wdWJsaXNoZXJDb250ZTIiLCJydGNQdWJsaXNoTW9uaXRvciIsImFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwicnRjU3RhdGlzdGljIiwic3RhdGlzdGljcyIsIl9hcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJvcHRpb25hbFBlZXJDb25uZWN0aW9uIiwibmV3UnRjQ29uZmlndXJhdGlvbiIsIm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfcGVlckNvbm5lY3Rpb24kY3VycmUiLCJpc0NsaWVudE9mZmVyRmxvdyIsInJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCIsImljZVJlc3RhcnQiLCJvZmZlciIsIl9fQlVJTERfVkVSU0lPTl9fIiwiX2RlZmF1bHRWZXJzaW9uIiwiVGVsZW1ldHJ5U2VydmljZSIsIl90ZWxlbWV0cnlTZXJ2aWNlIiwibG9nUmVjb3JkIiwiX2xvZ3MiLCJzZW5kTG9nc0lmQWJsZSIsImxvZ01lc3NhZ2VzIiwiX3NlbmRMb2dzSWZBYmxlIiwibnVtYmVyT2ZMb2dzVG9TZW5kIiwic2l6ZU9mTG9nc1RvU2VuZCIsImdldEl0ZW1TaXplIiwiZ2V0TG9nU2l6ZSIsInN1bSIsImR1cmF0aW9uIiwiX2R1cmF0aW9uIiwiaXNOZWdhdGl2ZSIsImFicyIsIm9mZnNldCIsIm1pbGxpc2Vjb25kcyIsInNlY29uZHMiLCJtaW51dGVzIiwiaG91cnMiLCJwYXJ0cyIsIlN0cmluZyIsInBhZFN0YXJ0IiwidGFyZ2V0TGVuZ3RoIiwicGFkU3RyaW5nIiwicmVwZWF0IiwiZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5TZWNvbmRzIiwicmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kIiwibWF4IiwibWluIiwiX25ldHdvcmtNb25pdG9yIiwicmVjb3JkRm9yZWdyb3VuZENoYW5nZSIsInJlY29yZE5ldHdvcmtSVFRVcGRhdGUiLCJyZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSIsImRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwicmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlIiwidGltZVNpbmNlTGFzdENoYW5nZSIsIm5ld1JUVCIsIm9sZFJ0dCIsIl9sYXN0TmV0d29ya1N0YXRpc3RpY3MiLCJuZXdOZXR3b3JrVHlwZSIsIm9sZE5ldHdvcmtUeXBlIiwibmV3Q2FwYWNpdHkiLCJvbGRDYXBhY2l0eSIsImZsb2F0Il0sInNvdXJjZVJvb3QiOiIifQ==