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

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 +362 -338
  2. package/channels/debug/package.json +1 -1
  3. package/channels/debug.private/channels.js +362 -338
  4. package/channels/debug.private/package.json +1 -1
  5. package/channels/debug.provideGlobalScope/channels.js +362 -338
  6. package/channels/debug.provideGlobalScope/package.json +1 -1
  7. package/channels/es5.debug.private/channels.js +374 -336
  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 +362 -338
  20. package/full/debug/package.json +1 -1
  21. package/full/debug.private/full.js +362 -338
  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 +362 -338
  33. package/publish/debug.private/package.json +1 -1
  34. package/publish/debug.private/publish.js +362 -338
  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
@@ -5391,27 +5391,43 @@ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpe
5391
5391
  /* 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__);
5392
5392
  /* 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");
5393
5393
  /* 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__);
5394
- /* 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");
5395
- /* 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__);
5394
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/defineProperty.js */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
5395
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2__);
5396
5396
  /* 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");
5397
5397
  /* 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__);
5398
- /* 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");
5399
- /* 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__);
5400
- /* harmony import */ var _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../globalScope/GlobalScope */ "./src/globalScope/GlobalScope.ts");
5401
- /* harmony import */ var _logger_LoggerFactory__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../logger/LoggerFactory */ "./src/logger/LoggerFactory.ts");
5402
- /* harmony import */ var _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../edgeAuth/EdgeAuthParser */ "./src/edgeAuth/EdgeAuthParser.ts");
5403
- /* harmony import */ var _version_VersionManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../version/VersionManager */ "./src/sdk/version/VersionManager.ts");
5404
- /* harmony import */ var _environment_Parameters__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../environment/Parameters */ "./src/environment/Parameters.ts");
5405
- /* harmony import */ var _BitrateModeMapping__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./BitrateModeMapping */ "./src/sdk/discovery/BitrateModeMapping.ts");
5406
- /* harmony import */ var _BitrateStateMapping__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./BitrateStateMapping */ "./src/sdk/discovery/BitrateStateMapping.ts");
5398
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/classCallCheck.js */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
5399
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_4__);
5400
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js");
5401
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_5__);
5402
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/getPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js");
5403
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_6__);
5404
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/inherits.js */ "./node_modules/@babel/runtime/helpers/inherits.js");
5405
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_7__);
5406
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_wrapNativeSuper_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/wrapNativeSuper.js */ "./node_modules/@babel/runtime/helpers/wrapNativeSuper.js");
5407
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_wrapNativeSuper_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_wrapNativeSuper_js__WEBPACK_IMPORTED_MODULE_8__);
5408
+ /* harmony import */ var _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../globalScope/GlobalScope */ "./src/globalScope/GlobalScope.ts");
5409
+ /* harmony import */ var _logger_LoggerFactory__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../logger/LoggerFactory */ "./src/logger/LoggerFactory.ts");
5410
+ /* harmony import */ var _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../edgeAuth/EdgeAuthParser */ "./src/edgeAuth/EdgeAuthParser.ts");
5411
+ /* harmony import */ var _version_VersionManager__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../version/VersionManager */ "./src/sdk/version/VersionManager.ts");
5412
+ /* harmony import */ var _environment_Parameters__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../environment/Parameters */ "./src/environment/Parameters.ts");
5413
+ /* harmony import */ var _BitrateModeMapping__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./BitrateModeMapping */ "./src/sdk/discovery/BitrateModeMapping.ts");
5414
+ /* harmony import */ var _BitrateStateMapping__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./BitrateStateMapping */ "./src/sdk/discovery/BitrateStateMapping.ts");
5407
5415
  /* provided dependency */ var Promise = __webpack_require__(/*! ./src/promise/Promise */ "./src/promise/Promise.ts")["default"];
5408
5416
 
5409
5417
 
5410
5418
 
5411
5419
 
5412
5420
 
5421
+
5422
+
5423
+
5424
+
5425
+ 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; }
5426
+ 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_2___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; }
5413
5427
  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 }; })(); }
5414
5428
  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); }
5429
+ function _callSuper(t, o, e) { return o = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_6___default()(o), _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }
5430
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
5415
5431
  /**
5416
5432
  * Copyright 2026 Perform Content Services Limited. Confidential and Proprietary. All Rights Reserved.
5417
5433
  */
@@ -5424,15 +5440,23 @@ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try {
5424
5440
 
5425
5441
 
5426
5442
  var apiVersion = 7;
5443
+ var FetchTimeoutError = /*#__PURE__*/function (_Error) {
5444
+ function FetchTimeoutError() {
5445
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_4___default()(this, FetchTimeoutError);
5446
+ return _callSuper(this, FetchTimeoutError, arguments);
5447
+ }
5448
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_7___default()(FetchTimeoutError, _Error);
5449
+ return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_3___default()(FetchTimeoutError);
5450
+ }(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_wrapNativeSuper_js__WEBPACK_IMPORTED_MODULE_8___default()(Error));
5427
5451
  var EndPoint = /*#__PURE__*/function () {
5428
5452
  function EndPoint(uri, timeout) {
5429
- _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_2___default()(this, EndPoint);
5430
- _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'));
5431
- _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_4___default()(this, "_uri", void 0);
5432
- _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_4___default()(this, "_timeout", void 0);
5433
- _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_4___default()(this, "_roundTripTime", 0);
5453
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_4___default()(this, EndPoint);
5454
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_logger", _logger_LoggerFactory__WEBPACK_IMPORTED_MODULE_10__["default"].getLogger('EndPoint'));
5455
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_uri", void 0);
5456
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_timeoutDuration", void 0);
5457
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_roundTripTime", 0);
5434
5458
  this._uri = uri;
5435
- this._timeout = timeout;
5459
+ this._timeoutDuration = timeout;
5436
5460
  if (!timeout) {
5437
5461
  throw new Error("End point requires a timeout");
5438
5462
  }
@@ -5451,32 +5475,32 @@ var EndPoint = /*#__PURE__*/function () {
5451
5475
  key: "ping",
5452
5476
  value: function () {
5453
5477
  var _ping = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee() {
5454
- var _this = this;
5455
- var url, start, response, finished;
5478
+ var url, start, requestOptions, response;
5456
5479
  return _regenerator().w(function (_context) {
5457
5480
  while (1) switch (_context.n) {
5458
5481
  case 0:
5459
5482
  url = this.buildPingUrl();
5460
5483
  start = Date.now();
5461
- _context.n = 1;
5462
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5484
+ requestOptions = {
5463
5485
  method: 'GET',
5464
5486
  cache: 'no-cache'
5465
- }), new Promise(function (_, reject) {
5466
- return _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
5467
- return reject(new Error("Ping timed out [".concat(url, "]")));
5468
- }, _this._timeout);
5469
- })]);
5487
+ };
5488
+ _context.n = 1;
5489
+ return this.fetchWithTimeout(url, requestOptions, this._timeoutDuration).catch(function (error) {
5490
+ if (error instanceof FetchTimeoutError) {
5491
+ throw new Error("Ping timed out [".concat(url, "]"));
5492
+ }
5493
+ throw error;
5494
+ });
5470
5495
  case 1:
5471
5496
  response = _context.v;
5472
- finished = Date.now();
5473
5497
  if (response.ok) {
5474
5498
  _context.n = 2;
5475
5499
  break;
5476
5500
  }
5477
5501
  throw new Error("Ping failed [".concat(url, "] [").concat(response.status, "]"));
5478
5502
  case 2:
5479
- this._roundTripTime = finished - start;
5503
+ this._roundTripTime = Date.now() - start;
5480
5504
  return _context.a(2, this._roundTripTime);
5481
5505
  }
5482
5506
  }, _callee, this);
@@ -5490,9 +5514,7 @@ var EndPoint = /*#__PURE__*/function () {
5490
5514
  key: "subscribe",
5491
5515
  value: function () {
5492
5516
  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) {
5493
- var _options$onSubscribeR,
5494
- _this2 = this,
5495
- _options$onSubscribeR4;
5517
+ var _options$onSubscribeR, _options$onSubscribeR4;
5496
5518
  var options,
5497
5519
  tenancy,
5498
5520
  url,
@@ -5500,8 +5522,8 @@ var EndPoint = /*#__PURE__*/function () {
5500
5522
  clientVersion,
5501
5523
  requestBody,
5502
5524
  start,
5525
+ fetchRequestOptions,
5503
5526
  httpResponse,
5504
- timeout,
5505
5527
  jsonResponseBody,
5506
5528
  status,
5507
5529
  _options$onSubscribeR2,
@@ -5510,13 +5532,12 @@ var EndPoint = /*#__PURE__*/function () {
5510
5532
  _response2,
5511
5533
  finished,
5512
5534
  subscribeResponse,
5513
- _args2 = arguments,
5514
- _t;
5535
+ _args2 = arguments;
5515
5536
  return _regenerator().w(function (_context2) {
5516
- while (1) switch (_context2.p = _context2.n) {
5537
+ while (1) switch (_context2.n) {
5517
5538
  case 0:
5518
5539
  options = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : {};
5519
- tenancy = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_7__["default"].parseToken(token).tenancy;
5540
+ tenancy = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_11__["default"].parseToken(token).tenancy;
5520
5541
  if (tenancy) {
5521
5542
  _context2.n = 1;
5522
5543
  break;
@@ -5527,8 +5548,8 @@ var EndPoint = /*#__PURE__*/function () {
5527
5548
  });
5528
5549
  case 1:
5529
5550
  url = this.buildUrl([tenancy, 'stream', 'subscribe']).toString();
5530
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
5531
- clientVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_8__["default"].sdkVersion;
5551
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
5552
+ clientVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_12__["default"].sdkVersion;
5532
5553
  if (failureCount === 0 && localSessionDescription) {
5533
5554
  requestBody = {
5534
5555
  apiVersion: apiVersion,
@@ -5564,75 +5585,53 @@ var EndPoint = /*#__PURE__*/function () {
5564
5585
  case 2:
5565
5586
  formData.append('jsonBody', JSON.stringify(requestBody));
5566
5587
  start = Date.now();
5567
- _context2.p = 3;
5568
- timeout = null;
5569
- _context2.n = 4;
5570
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5588
+ fetchRequestOptions = {
5571
5589
  method: 'POST',
5572
5590
  body: formData
5573
- }), new Promise(function (resolve) {
5574
- return timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
5575
- _this2._logger.error('Failed to subscribe', new Error("Subscribe timed out [".concat(url, "]")));
5576
- resolve({
5577
- status: 408
5578
- });
5579
- }, _this2._timeout);
5580
- })]).finally(function () {
5581
- if (timeout) {
5582
- _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(timeout);
5583
- }
5584
- });
5585
- case 4:
5591
+ };
5592
+ _context2.n = 3;
5593
+ return this.executeFetchRequest(url, fetchRequestOptions, 'subscribe');
5594
+ case 3:
5586
5595
  httpResponse = _context2.v;
5587
- _context2.n = 6;
5588
- break;
5589
- case 5:
5590
- _context2.p = 5;
5591
- _t = _context2.v;
5592
- this._logger.error('Failed to subscribe', _t);
5593
- return _context2.a(2, {
5594
- status: 'failed'
5595
- });
5596
- case 6:
5597
- _context2.n = 7;
5596
+ _context2.n = 4;
5598
5597
  return this.parseJsonBody(httpResponse);
5599
- case 7:
5598
+ case 4:
5600
5599
  jsonResponseBody = _context2.v;
5601
5600
  this.handleStreamResponseContext(jsonResponseBody === null || jsonResponseBody === void 0 ? void 0 : jsonResponseBody.streamResponseContext);
5602
5601
  status = this.mapHttpStatusToSubscribeStatus(httpResponse);
5603
5602
  if (!(status !== 'ok')) {
5604
- _context2.n = 9;
5603
+ _context2.n = 6;
5605
5604
  break;
5606
5605
  }
5607
5606
  _response = {
5608
5607
  status: status
5609
5608
  };
5610
- _context2.n = 8;
5609
+ _context2.n = 5;
5611
5610
  return (_options$onSubscribeR2 = options.onSubscribeResponseCallback) === null || _options$onSubscribeR2 === void 0 ? void 0 : _options$onSubscribeR2.call(options, _response);
5612
- case 8:
5611
+ case 5:
5613
5612
  return _context2.a(2, _response);
5614
- case 9:
5613
+ case 6:
5615
5614
  if (jsonResponseBody) {
5616
- _context2.n = 11;
5615
+ _context2.n = 8;
5617
5616
  break;
5618
5617
  }
5619
5618
  _response2 = {
5620
5619
  status: 'failed'
5621
5620
  };
5622
- _context2.n = 10;
5621
+ _context2.n = 7;
5623
5622
  return (_options$onSubscribeR3 = options.onSubscribeResponseCallback) === null || _options$onSubscribeR3 === void 0 ? void 0 : _options$onSubscribeR3.call(options, _response2);
5624
- case 10:
5623
+ case 7:
5625
5624
  return _context2.a(2, _response2);
5626
- case 11:
5625
+ case 8:
5627
5626
  finished = Date.now();
5628
5627
  subscribeResponse = this.normalizeSubscribeResponse(tenancy, jsonResponseBody);
5629
5628
  this._logger.debug('Got subscribe response [%j] in [%s] ms', subscribeResponse, finished - start);
5630
- _context2.n = 12;
5629
+ _context2.n = 9;
5631
5630
  return (_options$onSubscribeR4 = options.onSubscribeResponseCallback) === null || _options$onSubscribeR4 === void 0 ? void 0 : _options$onSubscribeR4.call(options, subscribeResponse);
5632
- case 12:
5631
+ case 9:
5633
5632
  return _context2.a(2, subscribeResponse);
5634
5633
  }
5635
- }, _callee2, this, [[3, 5]]);
5634
+ }, _callee2, this);
5636
5635
  }));
5637
5636
  function subscribe(_x, _x2, _x3) {
5638
5637
  return _subscribe.apply(this, arguments);
@@ -5643,12 +5642,11 @@ var EndPoint = /*#__PURE__*/function () {
5643
5642
  key: "publish",
5644
5643
  value: function () {
5645
5644
  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) {
5646
- var _this3 = this;
5647
- var tenancy, url, formData, clientVersion, bodyWithOffer, bodyWithoutOffer, start, httpResponse, timeout, jsonResponseBody, status, finished, publishResponse, _t2;
5645
+ var tenancy, url, formData, clientVersion, bodyWithOffer, bodyWithoutOffer, start, fetchRequestOptions, httpResponse, jsonResponseBody, status, finished, publishResponse;
5648
5646
  return _regenerator().w(function (_context3) {
5649
- while (1) switch (_context3.p = _context3.n) {
5647
+ while (1) switch (_context3.n) {
5650
5648
  case 0:
5651
- tenancy = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_7__["default"].parseToken(token).tenancy;
5649
+ tenancy = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_11__["default"].parseToken(token).tenancy;
5652
5650
  if (tenancy) {
5653
5651
  _context3.n = 1;
5654
5652
  break;
@@ -5659,8 +5657,8 @@ var EndPoint = /*#__PURE__*/function () {
5659
5657
  });
5660
5658
  case 1:
5661
5659
  url = this.buildUrl([tenancy, 'stream', 'publish']).toString();
5662
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
5663
- clientVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_8__["default"].sdkVersion;
5660
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
5661
+ clientVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_12__["default"].sdkVersion;
5664
5662
  if (failureCount === 0 && localSessionDescription) {
5665
5663
  bodyWithOffer = {
5666
5664
  apiVersion: apiVersion,
@@ -5698,64 +5696,42 @@ var EndPoint = /*#__PURE__*/function () {
5698
5696
  formData.append('jsonBody', JSON.stringify(bodyWithoutOffer));
5699
5697
  }
5700
5698
  start = Date.now();
5701
- _context3.p = 2;
5702
- timeout = null;
5703
- _context3.n = 3;
5704
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5699
+ fetchRequestOptions = {
5705
5700
  method: 'POST',
5706
5701
  body: formData
5707
- }), new Promise(function (resolve) {
5708
- return timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
5709
- _this3._logger.error('Failed to publish', new Error("Publish timed out [".concat(url, "]")));
5710
- resolve({
5711
- status: 408
5712
- });
5713
- }, _this3._timeout);
5714
- })]).finally(function () {
5715
- if (timeout) {
5716
- _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(timeout);
5717
- }
5718
- });
5719
- case 3:
5702
+ };
5703
+ _context3.n = 2;
5704
+ return this.executeFetchRequest(url, fetchRequestOptions, 'publish');
5705
+ case 2:
5720
5706
  httpResponse = _context3.v;
5721
- _context3.n = 5;
5722
- break;
5723
- case 4:
5724
- _context3.p = 4;
5725
- _t2 = _context3.v;
5726
- this._logger.error('Failed to publish', _t2);
5727
- return _context3.a(2, {
5728
- status: 'failed'
5729
- });
5730
- case 5:
5731
- _context3.n = 6;
5707
+ _context3.n = 3;
5732
5708
  return this.parseJsonBody(httpResponse);
5733
- case 6:
5709
+ case 3:
5734
5710
  jsonResponseBody = _context3.v;
5735
5711
  this.handleStreamResponseContext(jsonResponseBody === null || jsonResponseBody === void 0 ? void 0 : jsonResponseBody.streamResponseContext);
5736
5712
  status = this.mapHttpStatusToPublishStatus(httpResponse);
5737
5713
  if (!(status !== 'ok')) {
5738
- _context3.n = 7;
5714
+ _context3.n = 4;
5739
5715
  break;
5740
5716
  }
5741
5717
  return _context3.a(2, {
5742
5718
  status: status
5743
5719
  });
5744
- case 7:
5720
+ case 4:
5745
5721
  if (jsonResponseBody) {
5746
- _context3.n = 8;
5722
+ _context3.n = 5;
5747
5723
  break;
5748
5724
  }
5749
5725
  return _context3.a(2, {
5750
5726
  status: 'failed'
5751
5727
  });
5752
- case 8:
5728
+ case 5:
5753
5729
  finished = Date.now();
5754
5730
  publishResponse = this.normalizePublishResponse(tenancy, jsonResponseBody);
5755
5731
  this._logger.debug('Got publish response [%j] in [%s] ms', publishResponse, finished - start);
5756
5732
  return _context3.a(2, publishResponse);
5757
5733
  }
5758
- }, _callee3, this, [[2, 4]]);
5734
+ }, _callee3, this);
5759
5735
  }));
5760
5736
  function publish(_x4, _x5, _x6, _x7) {
5761
5737
  return _publish.apply(this, arguments);
@@ -5766,16 +5742,15 @@ var EndPoint = /*#__PURE__*/function () {
5766
5742
  key: "setRemoteDescription",
5767
5743
  value: function () {
5768
5744
  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) {
5769
- var _this4 = this;
5770
- var url, formData, body, start, httpResponse, timeout, status, finished, setRemoteDescriptionResponse, _t3;
5745
+ var url, formData, body, start, fetchRequestOptions, httpResponse, status, finished, setRemoteDescriptionResponse;
5771
5746
  return _regenerator().w(function (_context4) {
5772
- while (1) switch (_context4.p = _context4.n) {
5747
+ while (1) switch (_context4.n) {
5773
5748
  case 0:
5774
5749
  url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'description', 'remote']).toString();
5775
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
5750
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
5776
5751
  body = {
5777
5752
  apiVersion: apiVersion,
5778
- sharedSecret: stream === null || stream === void 0 ? void 0 : stream.sharedSecret,
5753
+ sharedSecret: stream.sharedSecret,
5779
5754
  sessionDescription: {
5780
5755
  type: sessionDescription.type,
5781
5756
  sdp: sessionDescription.sdp
@@ -5783,54 +5758,32 @@ var EndPoint = /*#__PURE__*/function () {
5783
5758
  };
5784
5759
  formData.append('jsonBody', JSON.stringify(body));
5785
5760
  start = Date.now();
5786
- _context4.p = 1;
5787
- timeout = null;
5788
- _context4.n = 2;
5789
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5761
+ fetchRequestOptions = {
5790
5762
  method: 'POST',
5791
5763
  body: formData
5792
- }), new Promise(function (resolve) {
5793
- return timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
5794
- _this4._logger.error('Failed to set remote description', new Error("Set remote description timed out [".concat(url, "]")));
5795
- resolve({
5796
- status: 408
5797
- });
5798
- }, _this4._timeout);
5799
- })]).finally(function () {
5800
- if (timeout) {
5801
- _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(timeout);
5802
- }
5803
- });
5804
- case 2:
5764
+ };
5765
+ _context4.n = 1;
5766
+ return this.executeFetchRequest(url, fetchRequestOptions, 'set remote description');
5767
+ case 1:
5805
5768
  httpResponse = _context4.v;
5806
- _context4.n = 4;
5807
- break;
5808
- case 3:
5809
- _context4.p = 3;
5810
- _t3 = _context4.v;
5811
- this._logger.error('Failed to set remote description', _t3);
5812
- return _context4.a(2, {
5813
- status: 'failed'
5814
- });
5815
- case 4:
5816
5769
  status = this.mapHttpStatusToSetRemoteDescriptionStatus(httpResponse);
5817
5770
  if (!(status !== 'ok')) {
5818
- _context4.n = 5;
5771
+ _context4.n = 2;
5819
5772
  break;
5820
5773
  }
5821
5774
  return _context4.a(2, {
5822
5775
  status: status
5823
5776
  });
5824
- case 5:
5777
+ case 2:
5825
5778
  finished = Date.now();
5826
- _context4.n = 6;
5779
+ _context4.n = 3;
5827
5780
  return this.convertHttpResponseToSetRemoteDescription(httpResponse);
5828
- case 6:
5781
+ case 3:
5829
5782
  setRemoteDescriptionResponse = _context4.v;
5830
5783
  this._logger.debug('Got set remote description response [%j] in [%s] ms', setRemoteDescriptionResponse, finished - start);
5831
5784
  return _context4.a(2, setRemoteDescriptionResponse);
5832
5785
  }
5833
- }, _callee4, this, [[1, 3]]);
5786
+ }, _callee4, this);
5834
5787
  }));
5835
5788
  function setRemoteDescription(_x8, _x9) {
5836
5789
  return _setRemoteDescription.apply(this, arguments);
@@ -5841,53 +5794,30 @@ var EndPoint = /*#__PURE__*/function () {
5841
5794
  key: "limitBitrate",
5842
5795
  value: function () {
5843
5796
  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) {
5844
- var _this5 = this;
5845
- var url, formData, body, start, httpResponse, timeout, status, finished, _t4;
5797
+ var url, formData, body, start, fetchRequestOptions, httpResponse, status, finished;
5846
5798
  return _regenerator().w(function (_context5) {
5847
- while (1) switch (_context5.p = _context5.n) {
5799
+ while (1) switch (_context5.n) {
5848
5800
  case 0:
5849
5801
  url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'bitrate']).toString();
5850
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
5802
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
5851
5803
  body = {
5852
5804
  apiVersion: apiVersion,
5853
5805
  sharedSecret: stream.sharedSecret,
5854
5806
  elapsedInMilliseconds: elapsedInMilliseconds,
5855
5807
  bitrateInBitsPerSecond: bitrateInBitsPerSecond,
5856
- bitrateState: _BitrateStateMapping__WEBPACK_IMPORTED_MODULE_11__["default"].convertBitrateStateToBitrateStateType(bitrateState),
5857
- bitrateMode: _BitrateModeMapping__WEBPACK_IMPORTED_MODULE_10__["default"].convertBitrateModeToBitrateModeType(bitrateMode)
5808
+ bitrateState: _BitrateStateMapping__WEBPACK_IMPORTED_MODULE_15__["default"].convertBitrateStateToBitrateStateType(bitrateState),
5809
+ bitrateMode: _BitrateModeMapping__WEBPACK_IMPORTED_MODULE_14__["default"].convertBitrateModeToBitrateModeType(bitrateMode)
5858
5810
  };
5859
5811
  formData.append('jsonBody', JSON.stringify(body));
5860
5812
  start = Date.now();
5861
- _context5.p = 1;
5862
- timeout = null;
5863
- _context5.n = 2;
5864
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5813
+ fetchRequestOptions = {
5865
5814
  method: 'POST',
5866
5815
  body: formData
5867
- }), new Promise(function (resolve) {
5868
- return timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
5869
- _this5._logger.error('Failed to set limit bitrate timed', new Error("Set limit bitrate timed out [".concat(url, "]")));
5870
- resolve({
5871
- status: 408
5872
- });
5873
- }, _this5._timeout);
5874
- })]).finally(function () {
5875
- if (timeout) {
5876
- _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(timeout);
5877
- }
5878
- });
5879
- case 2:
5816
+ };
5817
+ _context5.n = 1;
5818
+ return this.executeFetchRequest(url, fetchRequestOptions, 'set limit bitrate');
5819
+ case 1:
5880
5820
  httpResponse = _context5.v;
5881
- _context5.n = 4;
5882
- break;
5883
- case 3:
5884
- _context5.p = 3;
5885
- _t4 = _context5.v;
5886
- this._logger.error('Failed to set limit bitrate timed', _t4);
5887
- return _context5.a(2, {
5888
- status: 'failed'
5889
- });
5890
- case 4:
5891
5821
  status = this.mapHttpStatusToSetTemporaryMaximalBitrateStatus(httpResponse);
5892
5822
  finished = Date.now();
5893
5823
  this._logger.info('Got set limit bitrate response [%s] in [%s] ms', status, finished - start);
@@ -5895,7 +5825,7 @@ var EndPoint = /*#__PURE__*/function () {
5895
5825
  status: status
5896
5826
  });
5897
5827
  }
5898
- }, _callee5, this, [[1, 3]]);
5828
+ }, _callee5, this);
5899
5829
  }));
5900
5830
  function limitBitrate(_x0, _x1, _x10, _x11, _x12) {
5901
5831
  return _limitBitrate.apply(this, arguments);
@@ -5906,25 +5836,23 @@ var EndPoint = /*#__PURE__*/function () {
5906
5836
  key: "addIceCandidates",
5907
5837
  value: function () {
5908
5838
  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) {
5909
- var _this6 = this;
5910
5839
  var options,
5911
5840
  url,
5912
5841
  formData,
5913
5842
  body,
5914
5843
  start,
5844
+ fetchRequestOptions,
5915
5845
  httpResponse,
5916
- timeout,
5917
5846
  status,
5918
5847
  finished,
5919
5848
  addIceCandidatesResponse,
5920
- _args6 = arguments,
5921
- _t5;
5849
+ _args6 = arguments;
5922
5850
  return _regenerator().w(function (_context6) {
5923
- while (1) switch (_context6.p = _context6.n) {
5851
+ while (1) switch (_context6.n) {
5924
5852
  case 0:
5925
5853
  options = _args6.length > 3 && _args6[3] !== undefined ? _args6[3] : [];
5926
5854
  url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'ice', 'candidates']).toString();
5927
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
5855
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
5928
5856
  body = {
5929
5857
  apiVersion: apiVersion,
5930
5858
  sharedSecret: stream.sharedSecret,
@@ -5934,54 +5862,32 @@ var EndPoint = /*#__PURE__*/function () {
5934
5862
  };
5935
5863
  formData.append('jsonBody', JSON.stringify(body));
5936
5864
  start = Date.now();
5937
- _context6.p = 1;
5938
- timeout = null;
5939
- _context6.n = 2;
5940
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5865
+ fetchRequestOptions = {
5941
5866
  method: 'POST',
5942
5867
  body: formData
5943
- }), new Promise(function (resolve) {
5944
- return timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
5945
- _this6._logger.error('Failed to add ice candidates', new Error("Add ice candidates timed out [".concat(url, "]")));
5946
- resolve({
5947
- status: 408
5948
- });
5949
- }, _this6._timeout);
5950
- })]).finally(function () {
5951
- if (timeout) {
5952
- _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(timeout);
5953
- }
5954
- });
5955
- case 2:
5868
+ };
5869
+ _context6.n = 1;
5870
+ return this.executeFetchRequest(url, fetchRequestOptions, 'add ice candidates');
5871
+ case 1:
5956
5872
  httpResponse = _context6.v;
5957
- _context6.n = 4;
5958
- break;
5959
- case 3:
5960
- _context6.p = 3;
5961
- _t5 = _context6.v;
5962
- this._logger.error('Failed to add ice candidates', _t5);
5963
- return _context6.a(2, {
5964
- status: 'failed'
5965
- });
5966
- case 4:
5967
5873
  status = this.mapHttpStatusToAddIceCandidatesStatus(httpResponse);
5968
5874
  if (!(status !== 'ok')) {
5969
- _context6.n = 5;
5875
+ _context6.n = 2;
5970
5876
  break;
5971
5877
  }
5972
5878
  return _context6.a(2, {
5973
5879
  status: status
5974
5880
  });
5975
- case 5:
5881
+ case 2:
5976
5882
  finished = Date.now();
5977
- _context6.n = 6;
5883
+ _context6.n = 3;
5978
5884
  return this.convertHttpResponseToAddIceCandidates(httpResponse);
5979
- case 6:
5885
+ case 3:
5980
5886
  addIceCandidatesResponse = _context6.v;
5981
5887
  this._logger.info('Got add ICE candidates response [%j] in [%s] ms', addIceCandidatesResponse, finished - start);
5982
5888
  return _context6.a(2, addIceCandidatesResponse);
5983
5889
  }
5984
- }, _callee6, this, [[1, 3]]);
5890
+ }, _callee6, this);
5985
5891
  }));
5986
5892
  function addIceCandidates(_x13, _x14, _x15) {
5987
5893
  return _addIceCandidates.apply(this, arguments);
@@ -5992,70 +5898,47 @@ var EndPoint = /*#__PURE__*/function () {
5992
5898
  key: "destroyStream",
5993
5899
  value: function () {
5994
5900
  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) {
5995
- var _this7 = this;
5996
- var url, formData, body, start, httpResponse, timeout, status, finished, destroyStreamResponse, _t6;
5901
+ var url, formData, body, fetchRequestOptions, start, httpResponse, status, finished, destroyStreamResponse;
5997
5902
  return _regenerator().w(function (_context7) {
5998
- while (1) switch (_context7.p = _context7.n) {
5903
+ while (1) switch (_context7.n) {
5999
5904
  case 0:
6000
5905
  url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'destroy']).toString();
6001
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
5906
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
6002
5907
  body = {
6003
5908
  apiVersion: apiVersion,
6004
5909
  sharedSecret: stream.sharedSecret,
6005
5910
  reason: reason,
6006
5911
  options: []
6007
5912
  };
6008
- formData.append('jsonBody', JSON.stringify(body));
6009
- start = Date.now();
6010
- _context7.p = 1;
6011
- timeout = null;
6012
- _context7.n = 2;
6013
- return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.fetch(url, {
5913
+ fetchRequestOptions = {
6014
5914
  method: 'POST',
6015
5915
  body: formData,
6016
5916
  cache: 'no-cache'
6017
- }), new Promise(function (resolve) {
6018
- return timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
6019
- _this7._logger.error('Failed to subscribe', new Error("Delete stream timed out [".concat(url, "]")));
6020
- resolve({
6021
- status: 408
6022
- });
6023
- }, _this7._timeout);
6024
- })]).finally(function () {
6025
- if (timeout) {
6026
- _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(timeout);
6027
- }
6028
- });
6029
- case 2:
5917
+ };
5918
+ formData.append('jsonBody', JSON.stringify(body));
5919
+ start = Date.now();
5920
+ _context7.n = 1;
5921
+ return this.executeFetchRequest(url, fetchRequestOptions, 'destroy stream');
5922
+ case 1:
6030
5923
  httpResponse = _context7.v;
6031
- _context7.n = 4;
6032
- break;
6033
- case 3:
6034
- _context7.p = 3;
6035
- _t6 = _context7.v;
6036
- this._logger.error('Failed to delete stream', _t6);
6037
- return _context7.a(2, {
6038
- status: 'failed'
6039
- });
6040
- case 4:
6041
5924
  status = this.mapHttpStatusToSetDestroyStreamStatus(httpResponse);
6042
5925
  if (!(status !== 'ok')) {
6043
- _context7.n = 5;
5926
+ _context7.n = 2;
6044
5927
  break;
6045
5928
  }
6046
5929
  return _context7.a(2, {
6047
5930
  status: status
6048
5931
  });
6049
- case 5:
5932
+ case 2:
6050
5933
  finished = Date.now();
6051
- _context7.n = 6;
5934
+ _context7.n = 3;
6052
5935
  return this.convertHttpResponseToDestroyStream(httpResponse);
6053
- case 6:
5936
+ case 3:
6054
5937
  destroyStreamResponse = _context7.v;
6055
5938
  this._logger.info('Got destroy stream response [%j] in [%s] ms', destroyStreamResponse, finished - start);
6056
5939
  return _context7.a(2, destroyStreamResponse);
6057
5940
  }
6058
- }, _callee7, this, [[1, 3]]);
5941
+ }, _callee7, this);
6059
5942
  }));
6060
5943
  function destroyStream(_x16, _x17) {
6061
5944
  return _destroyStream.apply(this, arguments);
@@ -6066,23 +5949,23 @@ var EndPoint = /*#__PURE__*/function () {
6066
5949
  key: "destroyStreamOnUnmount",
6067
5950
  value: function () {
6068
5951
  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) {
6069
- var _this8 = this;
5952
+ var _this = this;
6070
5953
  var sendBeacon, url, formData, body;
6071
5954
  return _regenerator().w(function (_context8) {
6072
5955
  while (1) switch (_context8.n) {
6073
5956
  case 0:
6074
- sendBeacon = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.sendBeacon;
5957
+ sendBeacon = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.sendBeacon;
6075
5958
  if (sendBeacon) {
6076
5959
  _context8.n = 1;
6077
5960
  break;
6078
5961
  }
6079
5962
  this.destroyStream(stream, reason).catch(function (err) {
6080
- _this8._logger.error('Failed to destroy stream on unmount', err);
5963
+ _this._logger.error('Failed to destroy stream on unmount', err);
6081
5964
  });
6082
5965
  return _context8.a(2);
6083
5966
  case 1:
6084
5967
  url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'destroy']).toString();
6085
- formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
5968
+ formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
6086
5969
  body = {
6087
5970
  apiVersion: apiVersion,
6088
5971
  sharedSecret: stream.sharedSecret,
@@ -6101,10 +5984,76 @@ var EndPoint = /*#__PURE__*/function () {
6101
5984
  }
6102
5985
  return destroyStreamOnUnmount;
6103
5986
  }()
5987
+ }, {
5988
+ key: "fetchWithTimeout",
5989
+ value: function () {
5990
+ var _fetchWithTimeout = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee9(url, requestOptions, timeoutDuration) {
5991
+ var controller, timeout;
5992
+ return _regenerator().w(function (_context9) {
5993
+ while (1) switch (_context9.p = _context9.n) {
5994
+ case 0:
5995
+ controller = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.AbortController();
5996
+ timeout = null;
5997
+ _context9.p = 1;
5998
+ _context9.n = 2;
5999
+ return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.fetch(url, _objectSpread(_objectSpread({}, requestOptions), {}, {
6000
+ signal: controller.signal
6001
+ })), new Promise(function (_, reject) {
6002
+ timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.setTimeout(function () {
6003
+ controller.abort();
6004
+ reject(new FetchTimeoutError("Timed out [".concat(url, "]")));
6005
+ }, timeoutDuration);
6006
+ })]);
6007
+ case 2:
6008
+ return _context9.a(2, _context9.v);
6009
+ case 3:
6010
+ _context9.p = 3;
6011
+ if (timeout) {
6012
+ _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.clearTimeout(timeout);
6013
+ }
6014
+ return _context9.f(3);
6015
+ case 4:
6016
+ return _context9.a(2);
6017
+ }
6018
+ }, _callee9, null, [[1,, 3, 4]]);
6019
+ }));
6020
+ function fetchWithTimeout(_x20, _x21, _x22) {
6021
+ return _fetchWithTimeout.apply(this, arguments);
6022
+ }
6023
+ return fetchWithTimeout;
6024
+ }()
6025
+ }, {
6026
+ key: "executeFetchRequest",
6027
+ value: function () {
6028
+ var _executeFetchRequest = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee0(url, requestOptions, operation) {
6029
+ var _t;
6030
+ return _regenerator().w(function (_context0) {
6031
+ while (1) switch (_context0.p = _context0.n) {
6032
+ case 0:
6033
+ _context0.p = 0;
6034
+ _context0.n = 1;
6035
+ return this.fetchWithTimeout(url, requestOptions, this._timeoutDuration);
6036
+ case 1:
6037
+ return _context0.a(2, _context0.v);
6038
+ case 2:
6039
+ _context0.p = 2;
6040
+ _t = _context0.v;
6041
+ this._logger.error("Failed to ".concat(operation, " [").concat(requestOptions.method || 'GET', "] [").concat(url, "]"), _t);
6042
+ return _context0.a(2, {
6043
+ status: _t instanceof FetchTimeoutError ? 408 : 500
6044
+ });
6045
+ }
6046
+ }, _callee0, this, [[0, 2]]);
6047
+ }));
6048
+ function executeFetchRequest(_x23, _x24, _x25) {
6049
+ return _executeFetchRequest.apply(this, arguments);
6050
+ }
6051
+ return executeFetchRequest;
6052
+ }()
6104
6053
  }, {
6105
6054
  key: "buildUrl",
6106
6055
  value: function buildUrl(path) {
6107
- var uri = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.URL(this._uri);
6056
+ var uri = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.URL(this._uri);
6108
6057
  var pathAsArray = uri.pathname.split('/');
6109
6058
  pathAsArray.length = pathAsArray.length - 1;
6110
6059
  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('/');
@@ -6113,9 +6062,9 @@ var EndPoint = /*#__PURE__*/function () {
6113
6062
  }, {
6114
6063
  key: "buildPingUrl",
6115
6064
  value: function buildPingUrl() {
6116
- var uri = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.URL(this._uri);
6117
- var sdkVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_8__["default"].sdkVersion;
6118
- var intentions = _environment_Parameters__WEBPACK_IMPORTED_MODULE_9__["default"].discoveryParameters.intentions;
6065
+ var uri = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.URL(this._uri);
6066
+ var sdkVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_12__["default"].sdkVersion;
6067
+ var intentions = _environment_Parameters__WEBPACK_IMPORTED_MODULE_13__["default"].discoveryParameters.intentions;
6119
6068
  uri.searchParams.set('type', 'http');
6120
6069
  uri.searchParams.set('version', sdkVersion);
6121
6070
  uri.searchParams.set('intentions', intentions);
@@ -6125,24 +6074,24 @@ var EndPoint = /*#__PURE__*/function () {
6125
6074
  }, {
6126
6075
  key: "parseJsonBody",
6127
6076
  value: function () {
6128
- 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) {
6129
- var _t7;
6130
- return _regenerator().w(function (_context9) {
6131
- while (1) switch (_context9.p = _context9.n) {
6077
+ var _parseJsonBody = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee1(response) {
6078
+ var _t2;
6079
+ return _regenerator().w(function (_context1) {
6080
+ while (1) switch (_context1.p = _context1.n) {
6132
6081
  case 0:
6133
- _context9.p = 0;
6134
- _context9.n = 1;
6082
+ _context1.p = 0;
6083
+ _context1.n = 1;
6135
6084
  return response.json();
6136
6085
  case 1:
6137
- return _context9.a(2, _context9.v);
6086
+ return _context1.a(2, _context1.v);
6138
6087
  case 2:
6139
- _context9.p = 2;
6140
- _t7 = _context9.v;
6141
- return _context9.a(2, undefined);
6088
+ _context1.p = 2;
6089
+ _t2 = _context1.v;
6090
+ return _context1.a(2, undefined);
6142
6091
  }
6143
- }, _callee9, null, [[0, 2]]);
6092
+ }, _callee1, null, [[0, 2]]);
6144
6093
  }));
6145
- function parseJsonBody(_x20) {
6094
+ function parseJsonBody(_x26) {
6146
6095
  return _parseJsonBody.apply(this, arguments);
6147
6096
  }
6148
6097
  return parseJsonBody;
@@ -6158,9 +6107,6 @@ var EndPoint = /*#__PURE__*/function () {
6158
6107
  }, {
6159
6108
  key: "mapHttpStatusToPublishStatus",
6160
6109
  value: function mapHttpStatusToPublishStatus(response) {
6161
- if (!response) {
6162
- return 'failed';
6163
- }
6164
6110
  switch (response.status) {
6165
6111
  case 200:
6166
6112
  return 'ok';
@@ -6189,9 +6135,6 @@ var EndPoint = /*#__PURE__*/function () {
6189
6135
  }, {
6190
6136
  key: "mapHttpStatusToSubscribeStatus",
6191
6137
  value: function mapHttpStatusToSubscribeStatus(response) {
6192
- if (!response) {
6193
- return 'failed';
6194
- }
6195
6138
  switch (response.status) {
6196
6139
  case 200:
6197
6140
  return 'ok';
@@ -6218,9 +6161,6 @@ var EndPoint = /*#__PURE__*/function () {
6218
6161
  }, {
6219
6162
  key: "mapHttpStatusToSetRemoteDescriptionStatus",
6220
6163
  value: function mapHttpStatusToSetRemoteDescriptionStatus(response) {
6221
- if (!response) {
6222
- return 'failed';
6223
- }
6224
6164
  switch (response.status) {
6225
6165
  case 200:
6226
6166
  return 'ok';
@@ -6239,9 +6179,6 @@ var EndPoint = /*#__PURE__*/function () {
6239
6179
  }, {
6240
6180
  key: "mapHttpStatusToSetTemporaryMaximalBitrateStatus",
6241
6181
  value: function mapHttpStatusToSetTemporaryMaximalBitrateStatus(response) {
6242
- if (!response) {
6243
- return 'failed';
6244
- }
6245
6182
  switch (response.status) {
6246
6183
  case 200:
6247
6184
  return 'ok';
@@ -6260,9 +6197,6 @@ var EndPoint = /*#__PURE__*/function () {
6260
6197
  }, {
6261
6198
  key: "mapHttpStatusToAddIceCandidatesStatus",
6262
6199
  value: function mapHttpStatusToAddIceCandidatesStatus(response) {
6263
- if (!response) {
6264
- return 'failed';
6265
- }
6266
6200
  switch (response.status) {
6267
6201
  case 200:
6268
6202
  return 'ok';
@@ -6281,9 +6215,6 @@ var EndPoint = /*#__PURE__*/function () {
6281
6215
  }, {
6282
6216
  key: "mapHttpStatusToSetDestroyStreamStatus",
6283
6217
  value: function mapHttpStatusToSetDestroyStreamStatus(response) {
6284
- if (!response) {
6285
- return 'failed';
6286
- }
6287
6218
  switch (response.status) {
6288
6219
  case 200:
6289
6220
  return 'ok';
@@ -6404,26 +6335,27 @@ var EndPoint = /*#__PURE__*/function () {
6404
6335
  }, {
6405
6336
  key: "convertHttpResponseToSetRemoteDescription",
6406
6337
  value: function () {
6407
- 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) {
6408
- var data, setRemoteDescriptionResponse;
6409
- return _regenerator().w(function (_context0) {
6410
- while (1) switch (_context0.n) {
6338
+ var _convertHttpResponseToSetRemoteDescription = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee10(response) {
6339
+ var data, status, setRemoteDescriptionResponse;
6340
+ return _regenerator().w(function (_context10) {
6341
+ while (1) switch (_context10.n) {
6411
6342
  case 0:
6412
- _context0.n = 1;
6413
- return response.json();
6343
+ _context10.n = 1;
6344
+ return this.parseJsonBody(response);
6414
6345
  case 1:
6415
- data = _context0.v;
6346
+ data = _context10.v;
6347
+ status = data ? data.status : this.mapHttpStatusToSetRemoteDescriptionStatus(response);
6416
6348
  setRemoteDescriptionResponse = {
6417
- status: data.status
6349
+ status: status
6418
6350
  };
6419
6351
  if (data && data.sessionDescription) {
6420
6352
  setRemoteDescriptionResponse.sessionDescription = data.sessionDescription;
6421
6353
  }
6422
- return _context0.a(2, setRemoteDescriptionResponse);
6354
+ return _context10.a(2, setRemoteDescriptionResponse);
6423
6355
  }
6424
- }, _callee0);
6356
+ }, _callee10, this);
6425
6357
  }));
6426
- function convertHttpResponseToSetRemoteDescription(_x21) {
6358
+ function convertHttpResponseToSetRemoteDescription(_x27) {
6427
6359
  return _convertHttpResponseToSetRemoteDescription.apply(this, arguments);
6428
6360
  }
6429
6361
  return convertHttpResponseToSetRemoteDescription;
@@ -6431,17 +6363,18 @@ var EndPoint = /*#__PURE__*/function () {
6431
6363
  }, {
6432
6364
  key: "convertHttpResponseToAddIceCandidates",
6433
6365
  value: function () {
6434
- 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) {
6435
- var data, addIceCandidatesResponse;
6436
- return _regenerator().w(function (_context1) {
6437
- while (1) switch (_context1.n) {
6366
+ var _convertHttpResponseToAddIceCandidates = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee11(response) {
6367
+ var data, status, addIceCandidatesResponse;
6368
+ return _regenerator().w(function (_context11) {
6369
+ while (1) switch (_context11.n) {
6438
6370
  case 0:
6439
- _context1.n = 1;
6440
- return response.json();
6371
+ _context11.n = 1;
6372
+ return this.parseJsonBody(response);
6441
6373
  case 1:
6442
- data = _context1.v;
6374
+ data = _context11.v;
6375
+ status = data ? data.status : this.mapHttpStatusToAddIceCandidatesStatus(response);
6443
6376
  addIceCandidatesResponse = {
6444
- status: data.status,
6377
+ status: status,
6445
6378
  options: []
6446
6379
  };
6447
6380
  if (data) {
@@ -6449,11 +6382,11 @@ var EndPoint = /*#__PURE__*/function () {
6449
6382
  addIceCandidatesResponse.options = data.options;
6450
6383
  }
6451
6384
  }
6452
- return _context1.a(2, addIceCandidatesResponse);
6385
+ return _context11.a(2, addIceCandidatesResponse);
6453
6386
  }
6454
- }, _callee1);
6387
+ }, _callee11, this);
6455
6388
  }));
6456
- function convertHttpResponseToAddIceCandidates(_x22) {
6389
+ function convertHttpResponseToAddIceCandidates(_x28) {
6457
6390
  return _convertHttpResponseToAddIceCandidates.apply(this, arguments);
6458
6391
  }
6459
6392
  return convertHttpResponseToAddIceCandidates;
@@ -6461,23 +6394,24 @@ var EndPoint = /*#__PURE__*/function () {
6461
6394
  }, {
6462
6395
  key: "convertHttpResponseToDestroyStream",
6463
6396
  value: function () {
6464
- 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) {
6465
- var data, destroyStream;
6466
- return _regenerator().w(function (_context10) {
6467
- while (1) switch (_context10.n) {
6397
+ var _convertHttpResponseToDestroyStream = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee12(response) {
6398
+ var data, status, destroyStream;
6399
+ return _regenerator().w(function (_context12) {
6400
+ while (1) switch (_context12.n) {
6468
6401
  case 0:
6469
- _context10.n = 1;
6470
- return response.json();
6402
+ _context12.n = 1;
6403
+ return this.parseJsonBody(response);
6471
6404
  case 1:
6472
- data = _context10.v;
6405
+ data = _context12.v;
6406
+ status = data ? data.status : this.mapHttpStatusToSetDestroyStreamStatus(response);
6473
6407
  destroyStream = {
6474
- status: data.status
6408
+ status: status
6475
6409
  };
6476
- return _context10.a(2, destroyStream);
6410
+ return _context12.a(2, destroyStream);
6477
6411
  }
6478
- }, _callee10);
6412
+ }, _callee12, this);
6479
6413
  }));
6480
- function convertHttpResponseToDestroyStream(_x23) {
6414
+ function convertHttpResponseToDestroyStream(_x29) {
6481
6415
  return _convertHttpResponseToDestroyStream.apply(this, arguments);
6482
6416
  }
6483
6417
  return convertHttpResponseToDestroyStream;
@@ -7794,7 +7728,7 @@ var VersionManager = /*#__PURE__*/function () {
7794
7728
  key: "sdkVersion",
7795
7729
  get: function get() {
7796
7730
  try {
7797
- return "2026-07-08T19:42:41.636Z (2025.2.4-beta.619)";
7731
+ return "2026-07-08T21:39:18.786Z (2025.2.4-beta.620)";
7798
7732
  } catch (e) {
7799
7733
  return this._defaultVersion;
7800
7734
  }
@@ -8536,6 +8470,25 @@ module.exports = _classCallCheck, module.exports.__esModule = true, module.expor
8536
8470
 
8537
8471
  /***/ }),
8538
8472
 
8473
+ /***/ "./node_modules/@babel/runtime/helpers/construct.js":
8474
+ /*!**********************************************************!*\
8475
+ !*** ./node_modules/@babel/runtime/helpers/construct.js ***!
8476
+ \**********************************************************/
8477
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
8478
+
8479
+ var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ "./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js");
8480
+ var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js");
8481
+ function _construct(t, e, r) {
8482
+ if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
8483
+ var o = [null];
8484
+ o.push.apply(o, e);
8485
+ var p = new (t.bind.apply(t, o))();
8486
+ return r && setPrototypeOf(p, r.prototype), p;
8487
+ }
8488
+ module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports;
8489
+
8490
+ /***/ }),
8491
+
8539
8492
  /***/ "./node_modules/@babel/runtime/helpers/createClass.js":
8540
8493
  /*!************************************************************!*\
8541
8494
  !*** ./node_modules/@babel/runtime/helpers/createClass.js ***!
@@ -8615,6 +8568,41 @@ module.exports = _inherits, module.exports.__esModule = true, module.exports["de
8615
8568
 
8616
8569
  /***/ }),
8617
8570
 
8571
+ /***/ "./node_modules/@babel/runtime/helpers/isNativeFunction.js":
8572
+ /*!*****************************************************************!*\
8573
+ !*** ./node_modules/@babel/runtime/helpers/isNativeFunction.js ***!
8574
+ \*****************************************************************/
8575
+ /***/ ((module) => {
8576
+
8577
+ function _isNativeFunction(t) {
8578
+ try {
8579
+ return -1 !== Function.toString.call(t).indexOf("[native code]");
8580
+ } catch (n) {
8581
+ return "function" == typeof t;
8582
+ }
8583
+ }
8584
+ module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports;
8585
+
8586
+ /***/ }),
8587
+
8588
+ /***/ "./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js":
8589
+ /*!*************************************************************************!*\
8590
+ !*** ./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***!
8591
+ \*************************************************************************/
8592
+ /***/ ((module) => {
8593
+
8594
+ function _isNativeReflectConstruct() {
8595
+ try {
8596
+ var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
8597
+ } catch (t) {}
8598
+ return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {
8599
+ return !!t;
8600
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports)();
8601
+ }
8602
+ module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports;
8603
+
8604
+ /***/ }),
8605
+
8618
8606
  /***/ "./node_modules/@babel/runtime/helpers/iterableToArray.js":
8619
8607
  /*!****************************************************************!*\
8620
8608
  !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***!
@@ -8829,6 +8817,42 @@ function _unsupportedIterableToArray(r, a) {
8829
8817
  }
8830
8818
  module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
8831
8819
 
8820
+ /***/ }),
8821
+
8822
+ /***/ "./node_modules/@babel/runtime/helpers/wrapNativeSuper.js":
8823
+ /*!****************************************************************!*\
8824
+ !*** ./node_modules/@babel/runtime/helpers/wrapNativeSuper.js ***!
8825
+ \****************************************************************/
8826
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
8827
+
8828
+ var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js");
8829
+ var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js");
8830
+ var isNativeFunction = __webpack_require__(/*! ./isNativeFunction.js */ "./node_modules/@babel/runtime/helpers/isNativeFunction.js");
8831
+ var construct = __webpack_require__(/*! ./construct.js */ "./node_modules/@babel/runtime/helpers/construct.js");
8832
+ function _wrapNativeSuper(t) {
8833
+ var r = "function" == typeof Map ? new Map() : void 0;
8834
+ return (module.exports = _wrapNativeSuper = function _wrapNativeSuper(t) {
8835
+ if (null === t || !isNativeFunction(t)) return t;
8836
+ if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function");
8837
+ if (void 0 !== r) {
8838
+ if (r.has(t)) return r.get(t);
8839
+ r.set(t, Wrapper);
8840
+ }
8841
+ function Wrapper() {
8842
+ return construct(t, arguments, getPrototypeOf(this).constructor);
8843
+ }
8844
+ return Wrapper.prototype = Object.create(t.prototype, {
8845
+ constructor: {
8846
+ value: Wrapper,
8847
+ enumerable: !1,
8848
+ writable: !0,
8849
+ configurable: !0
8850
+ }
8851
+ }), setPrototypeOf(Wrapper, t);
8852
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports), _wrapNativeSuper(t);
8853
+ }
8854
+ module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
8855
+
8832
8856
  /***/ })
8833
8857
 
8834
8858
  /******/ });
@@ -8934,4 +8958,4 @@ __webpack_require__.r(__webpack_exports__);
8934
8958
  /******/ })()
8935
8959
  ;
8936
8960
  });
8937
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3RCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQSxFOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0EsRTs7Ozs7V0NQQSx3Rjs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0QsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7O0FBRXlCO0FBQ2E7QUFDUTtBQUs5QjtBQUdoQiwrREFBZTtFQUNiMW1DLEdBQUcsRUFBSEEsNENBQUc7RUFDSDQvQixVQUFVLEVBQVZBLG1EQUFVO0VBQ1Y1RixjQUFjLEVBQWRBLHVEQUFjQTtBQUNoQixDQUFDLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9Ccm93c2VyRGV0ZWN0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9QbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL05ldHdvcmtNb25pdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2VkZ2VBdXRoL0VkZ2VUb2tlbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2Vudmlyb25tZW50L1BhcmFtZXRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL0Rpc3Bvc2FibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZUxpc3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvTnVtYmVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9TdHJpbmdzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvQXBwZW5kZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvQ29uc29sZUFwcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dpbmdUaHJlc2hvbGQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljVHlwZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzVHlwZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Byb21pc2UvUHJvbWlzZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcHJvbWlzZS9Qcm9taXNlSGFuZGxlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjUHVibGlzaE1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9TZHBQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9SZWFkT25seVN1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1N1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1NESy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1RlbGVtZXRyeVVybC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9TdGF0ZUNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1Rva2VuQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVNb2RlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlU3RhdGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9FbmRQb2ludC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXJDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXJTdGF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUmVhbFRpbWVQdWJsaXNoZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0R1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0V4cG9uZW50aWFsQmFja29mZi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vU2Vzc2lvblRlbGVtZXRyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVTcHJlYWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wicGhlbml4XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcbn0pKHNlbGYsICgpID0+IHtcbnJldHVybiAiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TWlsbGlzZWNvbmR9IGZyb20gJy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbmNvbnN0IHZpc2liaWxpdHlDaGFuZ2VFdmVudCA9ICd2aXNpYmlsaXR5Y2hhbmdlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlJc0ZvcmVncm91bmQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNGb3JlZ3JvdW5kOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U6IG51bWJlciA9IERhdGUubm93KCk7XG4gIHByaXZhdGUgX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb246IE1pbGxpc2Vjb25kIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5faXNGb3JlZ3JvdW5kID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0KHRoaXMuX2lzRm9yZWdyb3VuZCk7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBnZXQgaXNGb3JlZ3JvdW5kKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kO1xuICB9XG5cbiAgcHVibGljIGdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYXN0QmFja2dyb3VuZER1cmF0aW9uKCk6IE1pbGxpc2Vjb25kIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb247XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgbGV0IGJhY2tncm91bmRFbnRyeVRpbWU6IE1pbGxpc2Vjb25kIHwgbnVsbCA9IG51bGw7XG4gICAgY29uc3QgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGlzTm93Rm9yZWdyb3VuZCA9ICFHbG9iYWxTY29wZS52YWx1ZS5kb2N1bWVudElzSGlkZGVuO1xuXG4gICAgICBpZiAoIWlzTm93Rm9yZWdyb3VuZCkge1xuICAgICAgICBiYWNrZ3JvdW5kRW50cnlUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGhpcy5fbGFzdEJhY2tncm91bmREdXJhdGlvbiA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKGJhY2tncm91bmRFbnRyeVRpbWUpIHtcbiAgICAgICAgdGhpcy5fbGFzdEJhY2tncm91bmREdXJhdGlvbiA9IERhdGUubm93KCkgLSBiYWNrZ3JvdW5kRW50cnlUaW1lO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc0ZvcmVncm91bmQudmFsdWUgPSBpc05vd0ZvcmVncm91bmQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHVzZUV2ZW50Q2FwdHVyZVBoYXNlID0gZmFsc2U7XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5hZGREb2N1bWVudEV2ZW50TGlzdGVuZXIodmlzaWJpbGl0eUNoYW5nZUV2ZW50LCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB1c2VFdmVudENhcHR1cmVQaGFzZSk7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUucmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpKSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJEZXRlY3RvciB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCA9IC8oTVNJRXwoPyFHZWNrby4rKUZpcmVmb3h8KD8hQXBwbGVXZWJLaXQuK0Nocm9tZS4rKVNhZmFyaXwoPyFBcHBsZVdlYktpdC4rKUNocm9tZXxBcHBsZVdlYktpdCg/IS4rQ2hyb21lfC4rU2FmYXJpKXxHZWNrbyg/IS4rRmlyZWZveCkpKD86IHxcXC8pKFtcXGQuYXByZV0rKS9nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZSA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTWFqb3JWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc01vYmlsZSA9ICgvQW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8T3BlcmEgTWluaS9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZCA9ICgvQW5kcm9pZC9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU2OSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNjkuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcwID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzEgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcxLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzIuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzUgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc1LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzYuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc3ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ny4nKTtcblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck5hbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck1ham9yVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQW5kcm9pZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU2OSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTY5O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc2O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNNb2JpbGU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaChCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4KTtcblxuICAgIGlmIChicm93c2VyTmFtZUFuZFZlcnNpb24gJiYgYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdKSB7XG4gICAgICByZXR1cm4gYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdO1xuICAgIH1cblxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyTmFtZUxpc3QgfHwgIWJyb3dzZXJOYW1lTGlzdFswXSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBicm93c2VyTmFtZUxpc3RbMF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyVmVyc2lvbkxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyVmVyc2lvbkxpc3QgfHwgIWJyb3dzZXJWZXJzaW9uTGlzdFsxXSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbFZlcnNpb24gPSBicm93c2VyVmVyc2lvbkxpc3RbMV07XG5cbiAgICBpZiAoIWZ1bGxWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVyKGZ1bGxWZXJzaW9uLnNwbGl0KCcuJylbMF0pIHx8IDA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGNvbnN0IG1zaWUgPSB1c2VyQWdlbnQuaW5kZXhPZignTVNJRSAnKTtcblxuICAgIGlmIChtc2llID4gMCkge1xuICAgICAgLy8gSUUgMTAgb3Igb2xkZXIgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyhtc2llICsgNSwgdXNlckFnZW50LmluZGV4T2YoJy4nLCBtc2llKSksIDEwKX1gO1xuICAgIH1cblxuICAgIGNvbnN0IHRyaWRlbnQgPSB1c2VyQWdlbnQuaW5kZXhPZignVHJpZGVudC8nKTtcblxuICAgIGlmICh0cmlkZW50ID4gMCkge1xuICAgICAgLy8gSUUgMTEgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICBjb25zdCB2ZXJzaW9uID0gdXNlckFnZW50LmluZGV4T2YoJ3J2OicpO1xuXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyh2ZXJzaW9uICsgMywgdXNlckFnZW50LmluZGV4T2YoJy4nLCB2ZXJzaW9uKSksIDEwKX1gO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMnO1xuXG4vLyBUaGUgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZpbGUgaXMgdXNlZCBpbiB0aGUgc2lsZW50IGJ1aWxkXG4vLyB0byBjb25zdHJhaW4gdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB0byB0aGUgc3BlY2lmaWVkIHZhbHVlcy5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciB7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3RyaW5nVmFsdWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmRlZmF1bHRTdHJpbmdWYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Qm9vbGVhblZhbHVlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdEJvb2xlYW5WYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0U3RyaW5nVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LW1ldHJpY3MtbGV2ZWwnOiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpLFxuICAgICAgJ3BoZW5peC1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jb25zb2xlLWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC10ZWxlbWV0cnktbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtY2hhbm5lbC10b2tlbic6ICcnLFxuICAgICAgJ3BoZW5peC11cmknOiAnJyxcbiAgICAgICdwaGVuaXgtYmFzZS11cmknOiAnJ1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgZGVmYXVsdEJvb2xlYW5WYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZSc6IHRydWUsXG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbic6IHRydWUsXG4gICAgICAncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0JzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnOiB0cnVlXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciB7XG4gIHN0YXRpYyBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5mb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucXVldWVNaWNyb3Rhc2sodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgb3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsID0gR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRDcmVhdGVFbGVtZW50PEhUTUxJbWFnZUVsZW1lbnQ+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+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBQdWJsaXNoZXJzIGZyb20gJy4vUHVibGlzaGVycyc7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5cbmV4cG9ydCB7XG4gIFNESyxcbiAgUHVibGlzaGVycyxcbiAgUHVibGlzaGVyU3RhdGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0RLLFxuICBQdWJsaXNoZXJzLFxuICBQdWJsaXNoZXJTdGF0ZVxufTsiXSwibmFtZXMiOlsiR2xvYmFsU2NvcGUiLCJEaXNwb3NhYmxlIiwiRGlzcG9zYWJsZUxpc3QiLCJTdWJqZWN0IiwiUmVhZE9ubHlTdWJqZWN0IiwidmlzaWJpbGl0eUNoYW5nZUV2ZW50IiwiQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJEYXRlIiwibm93IiwiX2lzRm9yZWdyb3VuZCIsIl9yZWFkT25seUlzRm9yZWdyb3VuZCIsImluaXRpYWxpemUiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJnZXQiLCJ2YWx1ZSIsImdldFRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlIiwiZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbiIsIl9sYXN0QmFja2dyb3VuZER1cmF0aW9uIiwiZGlzcG9zZSIsIl9kaXNwb3NhYmxlcyIsIl90aGlzIiwiYmFja2dyb3VuZEVudHJ5VGltZSIsImhhbmRsZVZpc2liaWxpdHlDaGFuZ2UiLCJpc05vd0ZvcmVncm91bmQiLCJkb2N1bWVudElzSGlkZGVuIiwidXNlRXZlbnRDYXB0dXJlUGhhc2UiLCJhZGREb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJhZGQiLCJyZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJkZWZhdWx0IiwiQnJvd3NlckRldGVjdG9yIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIl9icm93c2VyTmFtZSIsIl9icm93c2VyTWFqb3JWZXJzaW9uIiwiX2lzQW5kcm9pZCIsIl9pc0Nocm9tZTY5IiwiX2lzQ2hyb21lNzAiLCJfaXNDaHJvbWU3MSIsIl9pc0Nocm9tZTcyIiwiX2lzQ2hyb21lNzQiLCJfaXNDaHJvbWU3NSIsIl9pc0Nocm9tZTc2IiwiX2lzQ2hyb21lNzciLCJpc01vYmlsZSIsIl9pc01vYmlsZSIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibWF0Y2giLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFIiwicGFyc2VCcm93c2VyTmFtZSIsImJyb3dzZXJOYW1lTGlzdCIsInNwbGl0IiwicGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uIiwiYnJvd3NlclZlcnNpb25MaXN0IiwiZnVsbFZlcnNpb24iLCJOdW1iZXIiLCJtc2llIiwiaW5kZXhPZiIsImNvbmNhdCIsInBhcnNlSW50Iiwic3Vic3RyaW5nIiwidHJpZGVudCIsInZlcnNpb24iLCJfQnJvd3NlckRldGVjdG9yIiwidGVzdCIsIl9uYXZpZ2F0b3IiLCJfbmF2aWdhdG9yMiIsImluY2x1ZGVzIiwiVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIiwiVGVsZW1ldHJ5RGVmYXVsdCIsIkxvZ2dpbmdMZXZlbE1hcHBpbmciLCJMb2dnZXJEZWZhdWx0cyIsIlBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciIsImdldFN0cmluZ1ZhbHVlIiwibmFtZSIsImRlZmF1bHRTdHJpbmdWYWx1ZSIsImdldEJvb2xlYW5WYWx1ZSIsImRlZmF1bHRCb29sZWFuVmFsdWUiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSIsImRlZmF1bHRUZWxlbWV0cnlMZXZlbCIsImNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUiLCJkZWZhdWx0TG9nZ2luZ0xldmVsIiwiZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsIiwiRmVhdHVyZUVuYWJsZW1lbnQiLCJTREsiLCJHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciIsIkVycm9yIiwiZm9yY2VHYXJiYWdlQ29sbGVjdGlvbiIsInNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsImlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCIsImZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24iLCJpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkIiwicXVldWVNaWNyb3Rhc2siLCJvdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24iLCJiaW5kIiwic2V0VGltZW91dCIsImltZyIsImRvY3VtZW50Q3JlYXRlRWxlbWVudCIsInNyYyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIkJsb2IiLCJBcnJheUJ1ZmZlciIsIm9uZXJyb3IiLCJyZXZva2VPYmplY3RVUkwiLCJOZXR3b3JrTW9uaXRvciIsIm5hdmlnYXRvckNvbm5lY3Rpb24iLCJ1bmRlZmluZWQiLCJpc1N1cHBvcnRlZCIsInNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycyIsInVwZGF0ZVN0YXRpc3RpY3MiLCJfaXNTdXBwb3J0ZWQiLCJfcnR0IiwiX2VmZmVjdGl2ZVR5cGUiLCJfZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJnZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsIl9yZWYiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMyIsImRvd25saW5rIiwiZG93bmxpbmtNYXgiLCJnZXRFZmZlY3RpdmVUeXBlIiwiX3JlZjIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTYiLCJlZmZlY3RpdmVUeXBlIiwidHlwZSIsImdldFJvdW5kVHJpcFRpbWUiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE3IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOCIsInJ0dCIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTkiLCJsaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEwIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIk1ldHJpY3NUeXBlIiwiTWV0cmljVHlwZSIsIkR1cmF0aW9ucyIsIkxvZ2dlckZhY3RvcnkiLCJTdHJlYW1TZXR1cExpc3RlbmVyIiwicGFnZUxvYWRUaW1lIiwiZ2V0TG9nZ2VyIiwibWV0cmljc1NlcnZpY2UiLCJfc3RhcnRUaW1lIiwiX3BhZ2VMb2FkVGltZSIsInN1Y2Nlc3MiLCJzdHJlYW1JZCIsInJlY29yZFN0cmVhbU1ldHJpYyIsIlNldHVwQ29tcGxldGVkIiwiZmFpbCIsIlNldHVwRmFpbGVkIiwibWV0cmljVHlwZSIsIl9tZXRyaWNTdWJtaXR0ZWQiLCJzZXR1cFRpbWUiLCJtZXRyaWNOYW1lIiwiZ2V0TmFtZSIsInB1c2giLCJydW50aW1lIiwidWludDY0IiwiX2xvZ2dlciIsImluZm8iLCJ0b0lzb1N0cmluZyIsIkVkZ2VUb2tlbiIsImVkZ2VBdXRoVG9rZW5QcmVmaXgiLCJFZGdlQXV0aFBhcnNlciIsInBhcnNlVG9rZW4iLCJ0b2tlbiIsImlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkIiwiZXJyb3IiLCJkZWNvZGVkVG9rZW4iLCJhdG9iIiwic3Vic3RyIiwibGVuZ3RoIiwiZWRnZVRva2VuIiwiSlNPTiIsInBhcnNlIiwiZSIsInN0YXJ0c1dpdGgiLCJfZWRnZVRva2VuJHRva2VuIiwiX2VkZ2VUb2tlbiR0b2tlbjIiLCJfYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uSWQiLCJfdG9rZW4iLCJ1cmkiLCJjYXBhYmlsaXRpZXMiLCJCdWlsZEZlYXR1cmVzIiwiX3NlbmRMb2NhbENhbmRpZGF0ZXMiLCJfc2VuZExvZ3MiLCJfc2VuZE1ldHJpY3MiLCJfbG9nVG9Db25zb2xlIiwiYXBwbHlGZWF0dXJlcyIsImZlYXR1cmVzIiwiX19GRUFUVVJFU19fIiwic2VuZExvY2FsQ2FuZGlkYXRlcyIsInNlbmRMb2dzIiwic2VuZE1ldHJpY3MiLCJsb2dUb0NvbnNvbGUiLCJpc0Nocm9tZTc0IiwiaXNDaHJvbWU3NSIsImlzQ2hyb21lNzYiLCJpc0Nocm9tZTc3IiwiYWRkVHJhbmNlaXZlckRpc2FibGVkIiwiaXNDaHJvbWU2OSIsImlzQ2hyb21lNzAiLCJpc0Nocm9tZTcxIiwiaXNDaHJvbWU3MiIsImJyb3dzZXJOYW1lIiwiYnJvd3Nlck1ham9yVmVyc2lvbiIsIl9HbG9iYWxTY29wZSR2YWx1ZSIsIk1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3IiLCJNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yIiwiUlRDUnRwUmVjZWl2ZXIiLCJwcm90b3R5cGUiLCJjcmVhdGVFbmNvZGVkU3RyZWFtcyIsIlJUQ1J0cFNjcmlwdFRyYW5zZm9ybSIsIl9HbG9iYWxTY29wZSR2YWx1ZTIiLCJIVE1MVmlkZW9FbGVtZW50IiwicmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayIsIl9HbG9iYWxTY29wZSR2YWx1ZTMiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWQiLCJpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCIsImlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkIiwiUGFyYW1ldGVycyIsIl9kaXNjb3ZlcnlQYXJhbWV0ZXJzIiwiYXBwbHlQYXJhbWV0ZXJzIiwicGFyYW1ldGVycyIsIl9fUEFSQU1FVEVSU19fIiwiZGlzY292ZXJ5IiwiaW50ZW50aW9ucyIsImJyb3dzZXJHbG9iYWxTY29wZSIsImRvY3VtZW50IiwibG9jYXRpb24iLCJ3aW5kb3ciLCJnbG9iYWxTY29wZSIsIl9kb2N1bWVudCIsIl9sb2NhdGlvbiIsIl93aW5kb3ciLCJBYm9ydENvbnRyb2xsZXIiLCJGb3JtRGF0YSIsIk1lZGlhU3RyZWFtIiwiTWVkaWFTdHJlYW1UcmFjayIsIk1lZGlhU291cmNlIiwiUlRDUGVlckNvbm5lY3Rpb24iLCJSVENTZXNzaW9uRGVzY3JpcHRpb24iLCJSVENJY2VDYW5kaWRhdGUiLCJVUkxTZWFyY2hQYXJhbXMiLCJjbGVhckludGVydmFsIiwiY2xlYXJUaW1lb3V0IiwiY3JlYXRlRWxlbWVudCIsImhhc0ZvY3VzIiwiaGlkZGVuIiwicXVlcnlTZWxlY3RvciIsImZldGNoIiwiaG9zdG5hbWUiLCJzZWFyY2giLCJjb25uZWN0aW9uIiwib25MaW5lIiwic2VuZEJlYWNvbiIsInVybCIsImRhdGEiLCJzZXRJbnRlcnZhbCIsInNldEluc3RhbmNlIiwicHJvdmlkZWRHbG9iYWxTY29wZSIsImdldEluc3RhbmNlIiwiX3JlYWRPbmx5SW5zdGFuY2UiLCJzdWJzY3JpYmUiLCJjYWxsYmFjayIsIl9HbG9iYWxTY29wZSIsIl9pbnN0YW5jZSIsImRpc3Bvc2FibGUiLCJfZGlzcG9zZWQiLCJfZGlzcG9zYWJsZSIsImNhbGwiLCJfbGlzdCIsImZvckVhY2giLCJ0b1N0cmluZyIsIm1heERpZ2l0c0luRmxvYXRBZnRlckRvdCIsIk51bWJlcnMiLCJjb3VudE51bWJlckxlbmd0aCIsImluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUiLCJudW1iZXIiLCJjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwiLCJNYXRoIiwiZmxvb3IiLCJjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCIsImZpeFJvdW5kaW5nIiwicHJlY2lzaW9uIiwicG93ZXIiLCJwb3ciLCJyb3VuZCIsImRpZ2l0c0JlZm9yZURlY2ltYWwiLCJvcmlnaW5hbFZhbHVlIiwibW9kaWZpZWRWYWx1ZSIsImNvdW50IiwiU3RyaW5ncyIsInJhbmRvbSIsInJhbmRvbTEzQ2hhcmFjdGVycyIsImxvb3BzIiwiY2VpbCIsIkFycmF5IiwiZmlsbCIsInJlZHVjZSIsInN0cmluZyIsImZ1bmMiLCJhc3NlcnRVbnJlYWNoYWJsZSIsIngiLCJBcHBlbmRlcnMiLCJfYXBwZW5kZXJzIiwiYXBwZW5kZXIiLCJyZW1vdmUiLCJpdGVtcyIsIml0ZW0iLCJMb2dnaW5nTGV2ZWwiLCJDb25zb2xlQXBwZW5kZXIiLCJ0aHJlc2hvbGQiLCJfdGhyZXNob2xkIiwibG9nIiwibG9nTGV2ZWwiLCJtZXNzYWdlIiwiY2F0ZWdvcnkiLCJkYXRlIiwiZnVsbE1lc3NhZ2UiLCJ0b0lTT1N0cmluZyIsIldhcm4iLCJjb25zb2xlIiwiTG9nZ2VyIiwiYXBwZW5kZXJzIiwiX2NhdGVnb3J5IiwidHJhY2UiLCJUcmFjZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiX2tleSIsImRlYnVnIiwiRGVidWciLCJfbGVuMiIsIl9rZXkyIiwiSW5mbyIsIl9sZW4zIiwiX2tleTMiLCJ3YXJuIiwiX2xlbjQiLCJfa2V5NCIsIl9sZW41IiwiX2tleTUiLCJmYXRhbCIsIkZhdGFsIiwiX2xlbjYiLCJfa2V5NiIsImxldmVsIiwicmVwbGFjZVBsYWNlaG9sZGVycyIsIl90aGlzMiIsInJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmciLCJpbmRleCIsInJlcGxhY2VBcmd1bWVudCIsInNwbGljZSIsInN0cmluZ2lmeSIsImFjY3VtdWxhdG9yIiwiY3VycmVudFZhbHVlIiwiYXJyYXkiLCJlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSIsInN0YWNrIiwiYXJnIiwiY2FjaGUiLCJfIiwiT2JqZWN0IiwiYXJndW1lbnQiLCJ0b1N0cmluZ1N0ciIsIkxvZ2dpbmdUaHJlc2hvbGQiLCJUZWxlbWV0cnlBcHBlbmRlciIsIlRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIiwiX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJsb2dnZXIiLCJfbG9nZ2VycyIsImFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUxvZ2dpbmdMZXZlbCIsImFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwiLCJhcHBseUNvbnNvbGVMb2dnZXIiLCJhcHBseVRlbGVtZXRyeUxvZ2dlciIsInBhcmFtZXRlclZhbHVlIiwic2V0VGhyZXNob2xkIiwiYXBwbHlBcHBlbmRlciIsImxvZ2dpbmdMZXZlbCIsIk9mZiIsIkFsbCIsImNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwiLCJsb2dnaW5nTGV2ZWxUeXBlIiwiVGVsZW1ldHJ5TGV2ZWwiLCJtZXRyaWNzIiwiX21ldHJpY3MiLCJnZXRUZWxlbWV0cnlMZXZlbCIsIlRpbWVUb0ZpcnN0RnJhbWUiLCJFc3NlbnRpYWwiLCJDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiU3RhbGxlZCIsIkJ1ZmZlcmluZyIsIlJvdW5kVHJpcFRpbWUiLCJEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsIk5ldHdvcmtUeXBlIiwiUmVzb2x1dGlvbkNoYW5nZWQiLCJBcHBsaWNhdGlvbkZvcmVncm91bmQiLCJBcHBsaWNhdGlvbkJhY2tncm91bmQiLCJNZXRyaWNzQ29uZmlndXJhdGlvbiIsIl91cmwiLCJzZXQiLCJtZXRyaWNzVXJsIiwicGF0aG5hbWUiLCJfZW52aXJvbm1lbnQiLCJlbnZpcm9ubWVudCIsIl90ZW5hbmN5IiwidGVuYW5jeSIsIl9zZXNzaW9uSWQiLCJzZXNzaW9uSWQiLCJNZXRyaWNzU2VydmljZSIsIlRlbGVtZXRyeVVybCIsIkVudmlyb25tZW50IiwiTWV0cmljc0ZhY3RvcnkiLCJnZXRNZXRyaWNzU2VydmljZSIsIl90eXBlb2YiLCJtZXRyaWNzU2VydmljZXMiLCJfbWV0cmljc1NlcnZpY2VzIiwibWV0cmljc0NvbmZpZ3VyYXRpb24iLCJjbGllbnRTZXNzaW9uSWQiLCJnZXRUZWxlbWV0cnlVcmwiLCJnZXRFbnZpcm9ubWVudEZyb21VcmwiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbCIsInRlbGVtZXRyeUxldmVsIiwic2V0VGVsZW1ldHJ5TGV2ZWwiLCJ2YWx1ZXMiLCJ0IiwiciIsIlN5bWJvbCIsIm4iLCJpdGVyYXRvciIsIm8iLCJ0b1N0cmluZ1RhZyIsImkiLCJjIiwiR2VuZXJhdG9yIiwidSIsImNyZWF0ZSIsIl9yZWdlbmVyYXRvckRlZmluZTIiLCJmIiwicCIsInkiLCJHIiwidiIsImEiLCJkIiwibCIsIlR5cGVFcnJvciIsImRvbmUiLCJyZXR1cm4iLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImRpc3BsYXlOYW1lIiwiX3JlZ2VuZXJhdG9yIiwidyIsIm0iLCJkZWZpbmVQcm9wZXJ0eSIsIl9yZWdlbmVyYXRvckRlZmluZSIsIl9pbnZva2UiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJFeHBvbmVudGlhbEJhY2tvZmYiLCJWZXJzaW9uTWFuYWdlciIsInJlcXVlc3RTaXplTGltaXQiLCJtYXhCdWZmZXJlZFJlY29yZHMiLCJfbWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfZXhwb25lbnRpYWxCYWNrb2ZmIiwiZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSIsInRoZW4iLCJsb2NhdGlvbkhvc3RuYW1lIiwiX2RvbWFpbiIsIm1ldHJpYyIsInByZXZpb3VzVmFsdWUiLCJyZXNvdXJjZSIsImtpbmQiLCJtZXRyaWNSZWNvcmQiLCJ0aW1lc3RhbXAiLCJmdWxsUXVhbGlmaWVkTmFtZSIsInNka1ZlcnNpb24iLCJpZ25vcmVkIiwic2VuZE1ldHJpY3NJZkFibGUiLCJQcm9taXNlIiwicmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUiLCJnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX2NhbGxlZSIsIm1ldHJpY3NNZXNzYWdlcyIsImZvcm1EYXRhIiwiX2NvbnRleHQiLCJhcHBlbmQiLCJyZWNvcmRzIiwibWV0aG9kIiwiYm9keSIsIl94IiwiYXBwbHkiLCJfc2VuZE1ldHJpY3NJZkFibGUiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsIl9pc1NlbmRpbmciLCJzbGljZSIsInJlc3BvbnNlIiwiaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUiLCJfZmFpbHVyZUNvdW50IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCIsImNhdGNoIiwic3RhdHVzIiwidGVsZW1ldHJ5TGV2ZWxUeXBlIiwiUHJvbWlzZUhhbmRsZXIiLCJfc3RhdGUiLCJfaGFuZGxlZCIsIl92YWx1ZSIsIl9kZWZlcnJlZHMiLCJkb1Jlc29sdmUiLCJwcm9taXNlUmVzb2x2ZSIsInJlYXNvbiIsInByb21pc2VSZWplY3QiLCJuZXdWYWx1ZSIsInByb21pc2UiLCJmaW5hbGUiLCJfaW1tZWRpYXRlIiwiX3VuaGFuZGxlZFJlamVjdGlvbiIsImxlbiIsImhhbmRsZSIsImRlZmVycmVkIiwib25GdWxmaWxsZWQiLCJvblJlamVjdGVkIiwicmVzdWx0IiwiYWxsIiwiYXJyIiwicmVzb2x2ZSIsInJlamVjdCIsImlzQXJyYXkiLCJyZW1haW5pbmciLCJtYW5hZ2VSZXNwb25zZSIsImNvbnN0cnVjdG9yIiwicmFjZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJkZWZhdWx0VHJhY2tLaW5kcyIsIlBlZXJDb25uZWN0aW9uU2VydmljZSIsIl9wZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJpbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nIiwiaXNQcmVjYWNoaW5nRW5hYmxlZCIsInByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FjaGVkIiwiZGlyZWN0aW9uIiwicGVlckNvbm5lY3Rpb24iLCJjcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FsbGVlMyIsInRyYWNrS2luZHMiLCJlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJjb25maWd1cmF0aW9uIiwiX2FyZ3MzIiwiX2NvbnRleHQzIiwiRGlzYWJsZWQiLCJpc1RyYWNrc0tpbmRzRXF1aXZhbGVudFRvRGVmYXVsdCIsIkVuYWJsZWQiLCJjcmVhdGVQZWVyQ29ubmVjdGlvbiIsInN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIiLCJhdWRpb1RyYW5zY2VpdmVycyIsInZpZGVvVHJhbnNjZWl2ZXJzIiwib3B0aW9ucyIsIl90IiwiX3QyIiwiX3QzIiwiX3Q0IiwiX3Q1IiwiX3Q2IiwiYWRkVHJhbnNjZWl2ZXIiLCJjcmVhdGVPZmZlciIsImxvY2FsT2ZmZXIiLCJvZmZlclRvUmVjZWl2ZUF1ZGlvIiwib2ZmZXJUb1JlY2VpdmVWaWRlbyIsInRyYWNrc0tpbmRzIiwiY291bnRUcmFja0tpbmRzIiwidHJhY2tLaW5kQ291bnQiLCJhdWRpbyIsInZpZGVvIiwiY291bnRlZFRyYWNrS2luZHMiLCJjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMiLCJSdGNDb25maWd1cmF0aW9uTWFuYWdlciIsInRydW5jYXRlSWNlU2VydmVycyIsImljZVNlcnZlcnMiLCJ1cmxzIiwidXNlcm5hbWUiLCJjcmVkZW50aWFsIiwiU2RwUGFyc2VyIiwidXBkYXRlU3RhdGlzdGljVGltZW91dCIsImdldFN0YXRzVGltZW91dER1cmF0aW9uIiwiUnRjUHVibGlzaE1vbml0b3IiLCJlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiaXNGb3JlZ3JvdW5kIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uMiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjMiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb240IiwiX3BlZXJDb25uZWN0aW9uIiwiX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiIsInNkcCIsImN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiIsInBhcnNlZExvY2FsRGVzY3JpcHRpb24iLCJwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiIsIl9lc3RpbWF0ZWRBdWRpb0NvZGVjIiwiYXVkaW9Db2RlYyIsIl9lc3RpbWF0ZWRWaWRlb0NvZGVjIiwidmlkZW9Db2RlYyIsIl9hdmFpbGFibGVUcmFja3MiLCJpc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNWaWRlb1RyYWNrRW5hYmxlZCIsImlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrIiwiZm9yZWdyb3VuZCIsIl9pc01vbml0b3JSdW5uaW5nIiwiX21vbml0b3JHZW5lcmF0aW9uIiwiX3VwZGF0ZVRpbWVvdXQiLCJ1cGRhdGVTdGF0aXN0aWMiLCJfcnRjU3RhdGlzdGljIiwiX3VwZGF0ZVN0YXRpc3RpYyIsImdlbmVyYXRpb24iLCJnZXRLaW5kRm9yU2FmYXJpMTEiLCJ0aW1lb3V0SGFuZGxlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNSIsInN0YXRzUHJvbWlzZSIsInRpbWVvdXRQcm9taXNlIiwic3RhdHMiLCJydGNTdGF0aXN0aWNzIiwicm91bmRUcmlwVGltZSIsImxhc3RQYWNrZXRTZW50VGltZXN0YW1wIiwiZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCIsImlkIiwiZ2V0U3RhdHMiLCJyZXBvcnQiLCJjdXJyZW50Um91bmRUcmlwVGltZSIsIl90aGlzMiRfYXZhaWxhYmxlVHJhYyIsIm1lZGlhVHlwZSIsImNvZGVjIiwiY29kZWNJZCIsIm1pbWVUeXBlIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkMiIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDMiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ0IiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNSIsImJ5dGVzIiwiYnl0ZXNTZW50IiwicHJldmlvdXNCeXRlc1NlbnQiLCJieXRlc0RlbHRhIiwidGltZURlbHRhIiwiYml0cmF0ZSIsInNzcmMiLCJwYWNrZXRzU2VudCIsInJldHJhbnNtaXR0ZWRCeXRlc1NlbnQiLCJnZXRDb2RlY0J5VHlwZSIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDYiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ3IiwiZmlyQ291bnQiLCJmcmFtZUhlaWdodCIsImZyYW1lV2lkdGgiLCJmcmFtZXNFbmNvZGVkIiwiZnJhbWVzU2VudCIsImhlYWRlckJ5dGVzU2VudCIsImh1Z2VGcmFtZXNTZW50IiwicGxpQ291bnQiLCJxcFN1bSIsInRvdGFsRW5jb2RlVGltZSIsInRvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0IiwiZnBzIiwiX3NkcCIsInNkcFNwbGl0QnlMaW5lcyIsInNkcFNwbGl0QnlUcmFja3MiLCJfYXVkaW9Db2RlYyIsImFwcGx5Q29kZWMiLCJfdmlkZW9Db2RlYyIsIl9pc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNUcmFja0J5VHlwZUVuYWJsZWQiLCJfaXNWaWRlb1RyYWNrRW5hYmxlZCIsInNkcFNlY3Rpb25Gb3JUeXBlIiwiZmluZCIsInNkcFRyYWNrIiwiX3NkcFNwbGl0QnlMaW5lcyRmaW5kIiwicnRtYXAiLCJzZHBMaW5lIiwidXNlZENvZGVjTGluZSIsInVzZWRDb2RlYyIsImNvZGVjTmFtZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbiIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIiwiY29ubmVjdGlvblN0YXRlIiwiaWNlQ29ubmVjdGlvblN0YXRlIiwiZ2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjYiLCJzZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNyIsImdldFRyYW5zY2VpdmVyc0Rpc2FibGVkIiwiZ2V0VHJhbnNjZWl2ZXJzIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOCIsIl9jcmVhdGVPZmZlciIsInByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkIiwiX2NyZWF0ZUFuc3dlciIsImNyZWF0ZUFuc3dlciIsIl94MiIsIl9zZXRMb2NhbERlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJzZXRMb2NhbERlc2NyaXB0aW9uIiwiX3gzIiwiX3NldFJlbW90ZURlc2NyaXB0aW9uIiwiX2NhbGxlZTQiLCJfZGVzY3JpcHRpb24kc2RwIiwiaGFzQ3J5cHRvIiwiX2NvbnRleHQ0Iiwic2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDQiLCJnZXRTZW5kZXJzIiwiZ2V0UmVjZWl2ZXJzIiwic2VsZWN0b3IiLCJnZXRTdGF0c0xlZ2FjeSIsIl90aGlzMyIsImFkZFN0cmVhbSIsIm1lZGlhU3RyZWFtIiwiX3RoaXM0IiwiZ2V0VHJhY2tzIiwidHJhY2siLCJhZGRUcmFjayIsIm9udHJhY2siLCJoYW5kbGVyIiwib25pY2VjYW5kaWRhdGUiLCJvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsIm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwiY2xvc2UiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb245IiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uIiwicmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZSIsInN1YmplY3QiLCJfc3ViamVjdCIsIkRpc3Bvc2FibGVMaXN0ZW5lciIsIl9EaXNwb3NhYmxlIiwibGlzdGVuZXJzIiwiX2NhbGxTdXBlciIsImlkeCIsIl9pbmhlcml0cyIsIl9saXN0ZW5lcnMiLCJjaGFuZ2VkIiwiY29tcGFyYWJsZSIsImVxdWFscyIsIl9pIiwiX2FyciIsImJhc2VVUkwiLCJvcmlnaW4iLCJEaXNjb3ZlcnlVcmkiLCJfR2xvYmFsU2NvcGUkZ2V0SW5zdGEiLCJfY2xpZW50U2Vzc2lvbklkIiwiX2xvYWRlZFRpbWVzdGFtcCIsIl9yZWFkT25seUluaXRpYWxpemVkIiwiX3JlYWRPbmx5RGlzY292ZXJ5VXJpIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSIsIl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSIsIl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0IiwiX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsIl93ZWJQbGF5ZXJMb2FkZXIiLCJfc2hha2FQbGF5ZXJMb2FkZXIiLCJfaGxzSnNMb2FkZXIiLCJfbWV0cmljc1NlcnZpY2UiLCJfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfdGVsZW1ldHJ5VXJsIiwiX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJyZXRyaWVzQW1vdW50IiwiX3RlbGVtZXRyeUxldmVsIiwiYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwidGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImlnbm9yZWRFbnZpcm9ubWVudCIsImlnbm9yZWREaXNjb3ZlcnlVcmkiLCJ0ZWxlbWV0cnlVcmwiLCJ0ZWxlbWV0cnlBcHBlbmRlciIsImlnbm9yZWRUZW5hbmN5IiwiYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbiIsImlnbm9yZWRUZWxlbWV0cnlMZXZlbCIsImFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJkaXNjb3ZlcnlVcmkiLCJjaGFubmVsVG9rZW4iLCJ1cmlWYWx1ZSIsImJhc2VVUklWYWx1ZSIsIm9uTG9hZCIsIl9pbml0aWFsaXplZCIsImFkZFdpbmRvd0V2ZW50TGlzdGVuZXIiLCJpbml0Iiwib3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlIiwicGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiY29uc29sZUxvZ2dpbmdMZXZlbCIsImNvbnNvbGVBcHBlbmRlciIsImF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIndlYlBsYXllckxvYWRlciIsInNoYWthUGxheWVyTG9hZGVyIiwiaGxzSnNMb2FkZXIiLCJfdGhpcyRfYXBwbGljYXRpb25BY3QiLCJfU0RLIiwic2VnbWVudHMiLCJwcm90b2NvbCIsInVuc2hpZnQiLCJlbmRzV2l0aCIsImpvaW4iLCJCaXRyYXRlU3RhdGUiLCJCaXRyYXRlTW9kZSIsIlBlZXJDb25uZWN0aW9uQ29udGV4dCIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiZGlzcG9zZVBlZXJDb25uZWN0aW9uIiwiZGlzcG9zZU1lZGlhU3RyZWFtIiwiX3RoaXMkbWVkaWFTdHJlYW0kdmFsIiwic3RvcCIsIlN0YXRlQ29udGV4dCIsImlzU3RhcnRpbmciLCJpc0Rpc3Bvc2VkIiwiVG9rZW5Db250ZXh0IiwidG9rZW5FeHBpcmluZyIsImRlZmF1bHREaXNjb3ZlcnlVcmkiLCJCaXRyYXRlTW9kZU1hcHBpbmciLCJjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZSIsImJpdHJhdGVNb2RlIiwiTm9ybWFsIiwiRm9yY2UiLCJSZXNldCIsIkJpdHJhdGVTdGF0ZU1hcHBpbmciLCJjb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlIiwiYml0cmF0ZVN0YXRlIiwiS2VlcCIsIkRpc2NvdmVyeVNlcnZpY2UiLCJkaXNjb3ZlcnlDYWNoZUludGVydmFsIiwiRGlzY292ZXJ5IiwiX3ByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwicmVzb2x2ZUVuZFBvaW50UHJvbWlzZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmciLCJwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwiZGlzY292ZXJ5U2VydmljZSIsImNhY2hlZFZhbHVlIiwiX2NhY2hlIiwiZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCIsIkVuZFBvaW50IiwiZGVmYXVsdFRpbWVvdXQiLCJfdXJpIiwiX2Rpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzIiwidGltZW91dCIsImFzU3RyaW5nIiwiZW5kUG9pbnRzIiwib2siLCJ0ZXh0IiwibWFwIiwiZW5kUG9pbnQiLCJkaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCIsImZhaWxlZFJlcXVlc3RzIiwicHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQiLCJfYXJnczIiLCJidWlsZERpc2NvdmVyeVVybCIsInBpbmciLCJ0aW1lIiwiX2Rpc2NvdmVyeVVyaSIsImRpc2NvdmVyeVBhcmFtZXRlcnMiLCJzZWFyY2hQYXJhbXMiLCJhcGlWZXJzaW9uIiwiX3RpbWVvdXQiLCJfcm91bmRUcmlwVGltZSIsIl9waW5nIiwic3RhcnQiLCJmaW5pc2hlZCIsImJ1aWxkUGluZ1VybCIsIl9zdWJzY3JpYmUiLCJsb2NhbFNlc3Npb25EZXNjcmlwdGlvbiIsImZhaWx1cmVDb3VudCIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUiIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjQiLCJjbGllbnRWZXJzaW9uIiwicmVxdWVzdEJvZHkiLCJodHRwUmVzcG9uc2UiLCJqc29uUmVzcG9uc2VCb2R5IiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMiIsIl9yZXNwb25zZSIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjMiLCJfcmVzcG9uc2UyIiwic3Vic2NyaWJlUmVzcG9uc2UiLCJidWlsZFVybCIsImJlYXJlclRva2VuIiwiaHR0cFJvdW5kVHJpcFRpbWUiLCJzZXNzaW9uRGVzY3JpcHRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbiIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb24iLCJvblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayIsImZpbmFsbHkiLCJwYXJzZUpzb25Cb2R5IiwiaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0Iiwic3RyZWFtUmVzcG9uc2VDb250ZXh0IiwibWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzIiwib25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIiwibm9ybWFsaXplU3Vic2NyaWJlUmVzcG9uc2UiLCJfcHVibGlzaCIsImJvZHlXaXRoT2ZmZXIiLCJib2R5V2l0aG91dE9mZmVyIiwicHVibGlzaFJlc3BvbnNlIiwibWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyIsIm5vcm1hbGl6ZVB1Ymxpc2hSZXNwb25zZSIsInB1Ymxpc2giLCJfeDUiLCJfeDYiLCJfeDciLCJzdHJlYW0iLCJzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwic2hhcmVkU2VjcmV0IiwibWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl94OCIsIl94OSIsIl9saW1pdEJpdHJhdGUiLCJfY2FsbGVlNSIsImVsYXBzZWRJbk1pbGxpc2Vjb25kcyIsImJpdHJhdGVJbkJpdHNQZXJTZWNvbmQiLCJfdGhpczUiLCJfY29udGV4dDUiLCJtYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyIsImxpbWl0Qml0cmF0ZSIsIl94MCIsIl94MSIsIl94MTAiLCJfeDExIiwiX3gxMiIsIl9hZGRJY2VDYW5kaWRhdGVzIiwiX2NhbGxlZTYiLCJjYW5kaWRhdGVzIiwiZGlzY292ZXJ5Q29tcGxldGVkIiwiX3RoaXM2IiwiYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiX2FyZ3M2IiwiX2NvbnRleHQ2IiwibWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXMiLCJhZGRJY2VDYW5kaWRhdGVzIiwiX3gxMyIsIl94MTQiLCJfeDE1IiwiX2Rlc3Ryb3lTdHJlYW0iLCJfY2FsbGVlNyIsIl90aGlzNyIsImRlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl9jb250ZXh0NyIsIm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtIiwiZGVzdHJveVN0cmVhbSIsIl94MTYiLCJfeDE3IiwiX2Rlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJfY2FsbGVlOCIsIl90aGlzOCIsIl9jb250ZXh0OCIsImVyciIsImRlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJfeDE4IiwiX3gxOSIsInBhdGgiLCJwYXRoQXNBcnJheSIsIl9wYXJzZUpzb25Cb2R5IiwiX2NhbGxlZTkiLCJfdDciLCJfY29udGV4dDkiLCJqc29uIiwiX3gyMCIsImNvbnRleHQiLCJsYWciLCJydGNDb25maWd1cmF0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSIsImNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbiIsImJ1bmRsZVBvbGljeSIsImljZUNhbmRpZGF0ZVBvb2xTaXplIiwiaWNlVHJhbnNwb3J0UG9saWN5IiwicnRjcE11eFBvbGljeSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWUwIiwiX2NvbnRleHQwIiwiX3gyMSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzIiwiX2NhbGxlZTEiLCJfY29udGV4dDEiLCJfeDIyIiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW0iLCJfY2FsbGVlMTAiLCJfY29udGV4dDEwIiwiX3gyMyIsIlB1Ymxpc2hlclN0YXRlIiwiU2Vzc2lvblRlbGVtZXRyeSIsIlB1Ymxpc2hlckNvbnRleHQiLCJSZWFsVGltZVB1Ymxpc2hlciIsImRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiIsImZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwic3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwib25lSG91ckluTWlsbGlzZWNvbmRzIiwibWF4UmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwiUHVibGlzaGVyIiwicGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyIsIl90b2tlbkNvbnRleHQiLCJfcHVibGlzaGVyQ29udGV4dCIsIl9wZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJfc3RhdGVDb250ZXh0IiwiX3B1Ymxpc2hlclN0YXJ0VGltZSIsIl9yZWFkT25seVRva2VuIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24iLCJfcmVhZE9ubHlTdGF0ZSIsInN0YXRlIiwiX3JlYWRPbmx5VG9rZW5FeHBpcmluZyIsIl9yZWFkT25seUF1dGhvcml6ZWQiLCJhdXRob3JpemVkIiwiX3JlYWRPbmx5T25saW5lIiwib25saW5lIiwiX3JlYWRPbmx5TG9hZGluZyIsImxvYWRpbmciLCJfcmVhZE9ubHlQdWJsaXNoaW5nIiwicHVibGlzaGluZyIsIl9yZWFkT25seVN0YW5kYnkiLCJzdGFuZGJ5IiwiX3JlYWRPbmx5U3RvcHBlZCIsInN0b3BwZWQiLCJfcmVhZE9ubHlGYWlsdXJlQ291bnQiLCJfcmVhZE9ubHlFbmRQb2ludCIsIl9yZWFkT25seVN0cmVhbSIsIl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MiLCJfcmVhZE9ubHlNZWRpYVN0cmVhbSIsIl9zZXNzaW9uVGVsZW1ldHJ5IiwicHVibGlzaGVyRGlzcG9zYWJsZXMiLCJjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQiLCJQdWJsaXNoaW5nIiwicmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lciIsImRpc3Bvc2FibGVzIiwiX3N0b3AiLCJwcm9jZXNzU3RvcCIsImNsZWFuVXBSZXNvdXJjZXMiLCJTdG9wcGVkIiwiX2Rpc3Bvc2UiLCJnZXRVcmkiLCJfc3RhcnQiLCJwcm9jZXNzU3RhcnQiLCJfcHJvY2Vzc1N0YXJ0IiwibGlzdGVuT25TdHJlYW1TZXR1cCIsImhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayIsInN0cmVhbVB1Ymxpc2hlciIsIlN0YXJ0aW5nIiwiVW5hdXRob3JpemVkIiwiUmVjb3ZlcmluZyIsImhhbmRsZVN0cmVhbUZhaWx1cmUiLCJDbGllbnRTdGFydEVycm9yIiwiYXV0b21hdGljUmV0cnlPbkZhaWx1cmUiLCJzdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzIiwidGltZW91dElkIiwiZ2V0UmV0cnlJbnRlcnZhbCIsInNldE1lZGlhU3RyZWFtIiwibWVkaWFUcmFjayIsIl90aGlzNSRfcGVlckNvbm5lY3RpbyIsInNlbmRlciIsIl9zZW5kZXIkdHJhY2siLCJyZXBsYWNlVHJhY2siLCJPZmZsaW5lIiwiSW5pdGlhbGl6aW5nIiwiTm90Rm91bmQiLCJHZW9SZXN0cmljdGVkIiwiR2VvQmxvY2tlZCIsIlJlY29ubmVjdGluZyIsIlVuc3VwcG9ydGVkRmVhdHVyZSIsIkNvbmZpZ3VyYXRpb25FcnJvciIsIlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciIsIkNvbm5lY3Rpb25FcnJvciIsIl9oYW5kbGVTdHJlYW1GYWlsdXJlIiwicmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCIsInB1Ymxpc2hlckluaXRpYWxpemF0aW9uIiwiZ2VuZXJhdGVTY3JlZW5OYW1lIiwiYXBwbHlQdWJsaXNoU3RhdHVzIiwiYXBwbHlVbmF1dGhvcml6ZWQiLCJhcHBseU5vdEZvdW5kIiwiYXBwbHlVbmhhbmRsZWRFcnJvciIsImFwcGx5U2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMiLCJhcHBseUFkZEljZUNhbmRpZGF0ZXNTdGF0dXMiLCJtYXBQdWJsaXNoU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMiLCJQdWJsaXNoZXJzIiwiY3JlYXRlUHVibGlzaGVyIiwiaW5pdGlhbGl6ZWQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsIiwic29mdFJlc3RhcnRJbnRlcnZhbCIsInB1Ymxpc2hlckNvbnRleHQiLCJwZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJuYXZpZ2F0b3JJc09uTGluZSIsIm1lZGlhVHJhY2tzIiwiX3JlZjMiLCJfc2xpY2VkVG9BcnJheSIsIl9yZWYzJCIsImNsaWVudE9mZmVyRGlzYWJsZWQiLCJzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24iLCJzdXBwb3J0c0dldENvbmZpZ3VyYXRpb24iLCJhcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJzdWJtaXRDYW5kaWRhdGVzVGltZW91dCIsImNhbmNlbERpc2NvdmVyeSIsImNhbmRpZGF0ZSIsIl90aGlzJF9wdWJsaXNoZXJDb250ZSIsIl9yZWY0IiwibWFwQWRkSWNlQ2FuZGlkYXRlc1N0YXR1c1RvUHVibGlzaGVyU3RhdHVzIiwicmV0cnlDYWxsYmFjayIsInJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX2NyZWF0ZUFuc3dlckRlc2NyaXB0IiwiYW5zd2VyIiwiX3JlZjUiLCJtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvUHVibGlzaGVyU3RhdHVzIiwiX3RoaXMkX3B1Ymxpc2hlckNvbnRlMiIsInJ0Y1B1Ymxpc2hNb25pdG9yIiwiYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJydGNTdGF0aXN0aWMiLCJzdGF0aXN0aWNzIiwiX2FwcGx5UnRjQ29uZmlndXJhdGlvbiIsIm9wdGlvbmFsUGVlckNvbm5lY3Rpb24iLCJuZXdSdGNDb25maWd1cmF0aW9uIiwibWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsImF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9wZWVyQ29ubmVjdGlvbiRjdXJyZSIsImlzQ2xpZW50T2ZmZXJGbG93IiwicmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0IiwiaWNlUmVzdGFydCIsIm9mZmVyIiwiX19CVUlMRF9WRVJTSU9OX18iLCJfZGVmYXVsdFZlcnNpb24iLCJUZWxlbWV0cnlTZXJ2aWNlIiwiX3RlbGVtZXRyeVNlcnZpY2UiLCJ2YWx1ZU9mIiwibG9nUmVjb3JkIiwiX2xvZ3MiLCJzZW5kTG9nc0lmQWJsZSIsImxvZ01lc3NhZ2VzIiwiX3NlbmRMb2dzSWZBYmxlIiwibnVtYmVyT2ZMb2dzVG9TZW5kIiwic2l6ZU9mTG9nc1RvU2VuZCIsImdldEl0ZW1TaXplIiwiZ2V0TG9nU2l6ZSIsInN1bSIsImR1cmF0aW9uIiwiX2R1cmF0aW9uIiwiaXNOZWdhdGl2ZSIsImFicyIsIm9mZnNldCIsIm1pbGxpc2Vjb25kcyIsInNlY29uZHMiLCJtaW51dGVzIiwiaG91cnMiLCJwYXJ0cyIsIlN0cmluZyIsInBhZFN0YXJ0IiwidGFyZ2V0TGVuZ3RoIiwicGFkU3RyaW5nIiwicmVwZWF0IiwiZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5TZWNvbmRzIiwicmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kIiwibWF4IiwibWluIiwiX25ldHdvcmtNb25pdG9yIiwicmVjb3JkRm9yZWdyb3VuZENoYW5nZSIsInJlY29yZE5ldHdvcmtSVFRVcGRhdGUiLCJyZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSIsImRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwicmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlIiwidGltZVNpbmNlTGFzdENoYW5nZSIsIm5ld1JUVCIsIm9sZFJ0dCIsIl9sYXN0TmV0d29ya1N0YXRpc3RpY3MiLCJuZXdOZXR3b3JrVHlwZSIsIm9sZE5ldHdvcmtUeXBlIiwibmV3Q2FwYWNpdHkiLCJvbGRDYXBhY2l0eSIsImZsb2F0Il0sInNvdXJjZVJvb3QiOiIifQ==
8961
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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RCxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTs7QUFFeUI7QUFDYTtBQUNRO0FBSzlCO0FBR2hCLCtEQUFlO0VBQ2Jyb0MsR0FBRyxFQUFIQSw0Q0FBRztFQUNIeWhDLFVBQVUsRUFBVkEsbURBQVU7RUFDVi9GLGNBQWMsRUFBZEEsdURBQWNBO0FBQ2hCLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlTGlzdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9OdW1iZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL1N0cmluZ3MudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9BcHBlbmRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Db25zb2xlQXBwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ1RocmVzaG9sZC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcHJvbWlzZS9Qcm9taXNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9wcm9taXNlL1Byb21pc2VIYW5kbGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9SdGNQdWJsaXNoTW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1NkcFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1JlYWRPbmx5U3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcngvU3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL0Vudmlyb25tZW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvU0RLLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvVGVsZW1ldHJ5VXJsLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1N0YXRlQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvVG9rZW5Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVmYXVsdHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvQml0cmF0ZU1vZGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVTdGF0ZU1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0VuZFBvaW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlckNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlclN0YXRlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9SZWFsVGltZVB1Ymxpc2hlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRHVyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9TZXNzaW9uVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5TGlrZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlXaXRoSG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlXaXRob3V0SG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY29uc3RydWN0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2lzTmF0aXZlRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVTcHJlYWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3dyYXBOYXRpdmVTdXBlci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCAoKSA9PiB7XG5yZXR1cm4gIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge01pbGxpc2Vjb25kfSBmcm9tICcuLi91bml0cy9Vbml0cyc7XG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG5jb25zdCB2aXNpYmlsaXR5Q2hhbmdlRXZlbnQgPSAndmlzaWJpbGl0eWNoYW5nZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5SXNGb3JlZ3JvdW5kOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRm9yZWdyb3VuZDogU3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlOiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBwcml2YXRlIF9sYXN0QmFja2dyb3VuZER1cmF0aW9uOiBNaWxsaXNlY29uZCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2lzRm9yZWdyb3VuZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kID0gbmV3IFJlYWRPbmx5U3ViamVjdCh0aGlzLl9pc0ZvcmVncm91bmQpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IGlzRm9yZWdyb3VuZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUaW1lU2luY2VMYXN0Q2hhbmdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIERhdGUubm93KCkgLSB0aGlzLl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbigpOiBNaWxsaXNlY29uZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGxldCBiYWNrZ3JvdW5kRW50cnlUaW1lOiBNaWxsaXNlY29uZCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpc05vd0ZvcmVncm91bmQgPSAhR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRJc0hpZGRlbjtcblxuICAgICAgaWYgKCFpc05vd0ZvcmVncm91bmQpIHtcbiAgICAgICAgYmFja2dyb3VuZEVudHJ5VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChiYWNrZ3JvdW5kRW50cnlUaW1lKSB7XG4gICAgICAgIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPSBEYXRlLm5vdygpIC0gYmFja2dyb3VuZEVudHJ5VGltZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNGb3JlZ3JvdW5kLnZhbHVlID0gaXNOb3dGb3JlZ3JvdW5kO1xuICAgIH07XG5cbiAgICBjb25zdCB1c2VFdmVudENhcHR1cmVQaGFzZSA9IGZhbHNlO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUuYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKSkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyRGV0ZWN0b3Ige1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXggPSAvKE1TSUV8KD8hR2Vja28uKylGaXJlZm94fCg/IUFwcGxlV2ViS2l0LitDaHJvbWUuKylTYWZhcml8KD8hQXBwbGVXZWJLaXQuKylDaHJvbWV8QXBwbGVXZWJLaXQoPyEuK0Nocm9tZXwuK1NhZmFyaSl8R2Vja28oPyEuK0ZpcmVmb3gpKSg/OiB8XFwvKShbXFxkLmFwcmVdKykvZztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWUgPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck1ham9yVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNNb2JpbGUgPSAoL0FuZHJvaWR8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fE9wZXJhIE1pbmkvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0FuZHJvaWQgPSAoL0FuZHJvaWQvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNjkgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzY5LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzAuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcxID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzIgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcyLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzQuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc1ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzYgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc2LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NyA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzcuJyk7XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJOYW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJNYWpvclZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQW5kcm9pZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0FuZHJvaWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNjkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU2OTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcwO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcxKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzE7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc0O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc1KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzYoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzTW9iaWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCk7XG5cbiAgICBpZiAoYnJvd3Nlck5hbWVBbmRWZXJzaW9uICYmIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXSkge1xuICAgICAgcmV0dXJuIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVMaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3Nlck5hbWVMaXN0IHx8ICFicm93c2VyTmFtZUxpc3RbMF0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYnJvd3Nlck5hbWVMaXN0WzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3NlclZlcnNpb25MaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3NlclZlcnNpb25MaXN0IHx8ICFicm93c2VyVmVyc2lvbkxpc3RbMV0pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxWZXJzaW9uID0gYnJvd3NlclZlcnNpb25MaXN0WzFdO1xuXG4gICAgaWYgKCFmdWxsVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcihmdWxsVmVyc2lvbi5zcGxpdCgnLicpWzBdKSB8fCAwO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBjb25zdCBtc2llID0gdXNlckFnZW50LmluZGV4T2YoJ01TSUUgJyk7XG5cbiAgICBpZiAobXNpZSA+IDApIHtcbiAgICAgIC8vIElFIDEwIG9yIG9sZGVyID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcobXNpZSArIDUsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgbXNpZSkpLCAxMCl9YDtcbiAgICB9XG5cbiAgICBjb25zdCB0cmlkZW50ID0gdXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQvJyk7XG5cbiAgICBpZiAodHJpZGVudCA+IDApIHtcbiAgICAgIC8vIElFIDExID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgY29uc3QgdmVyc2lvbiA9IHVzZXJBZ2VudC5pbmRleE9mKCdydjonKTtcblxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcodmVyc2lvbiArIDMsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgdmVyc2lvbikpLCAxMCl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5pbXBvcnQgTG9nZ2luZ0xldmVsTWFwcGluZyBmcm9tICcuLi9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZyc7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckRlZmF1bHRzJztcblxuLy8gVGhlIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmaWxlIGlzIHVzZWQgaW4gdGhlIHNpbGVudCBidWlsZFxuLy8gdG8gY29uc3RyYWluIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZXMuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIge1xuICBwdWJsaWMgc3RhdGljIGdldFN0cmluZ1ZhbHVlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5kZWZhdWx0U3RyaW5nVmFsdWVbbmFtZV07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldEJvb2xlYW5WYWx1ZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmRlZmF1bHRCb29sZWFuVmFsdWVbbmFtZV07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgZGVmYXVsdFN0cmluZ1ZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3BoZW5peC1tZXRyaWNzLWxldmVsJzogVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKFRlbGVtZXRyeURlZmF1bHQuZGVmYXVsdFRlbGVtZXRyeUxldmVsKSxcbiAgICAgICdwaGVuaXgtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0TG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtY29uc29sZS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtdGVsZW1ldHJ5LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNoYW5uZWwtdG9rZW4nOiAnJyxcbiAgICAgICdwaGVuaXgtdXJpJzogJycsXG4gICAgICAncGhlbml4LWJhc2UtdXJpJzogJydcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0IGRlZmF1bHRCb29sZWFuVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogYm9vbGVhbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nOiB0cnVlLFxuICAgICAgJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCc6IHRydWUsXG4gICAgICAncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJzogdHJ1ZVxuICAgIH07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIge1xuICBzdGF0aWMgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNNb2JpbGUgJiYgU0RLLnNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQpIHtcbiAgICAgIHRoaXMuZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnF1ZXVlTWljcm90YXNrKHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uLmJpbmQodGhpcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uLmJpbmQodGhpcyksIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgaW1nOiBIVE1MSW1hZ2VFbGVtZW50IHwgbnVsbCA9IEdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50Q3JlYXRlRWxlbWVudDxIVE1MSW1hZ2VFbGVtZW50PignaW1nJyk7XG5cbiAgICBpbWcuc3JjID0gR2xvYmFsU2NvcGUudmFsdWUuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbbmV3IEFycmF5QnVmZmVyKDEwZSs3KV0pKTsgLy8gMTAwTWIgb3IgbGVzcyBvciBtb3JlIGRlcGVuZGluZyBvbiBhcyB5b3Ugd2lzaCB0byBmb3JjZS9pbnZva2UgR0MgY3ljbGUgcnVuXG4gICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLlVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5zcmMpO1xuXG4gICAgICBpbWcgPSBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXR3b3JrTW9uaXRvciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzU3VwcG9ydGVkOiBib29sZWFuID0gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbiAhPT0gdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydHQ6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiA9IG5ldyBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWZmZWN0aXZlVHlwZTogU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy51cGRhdGVTdGF0aXN0aWNzKCk7XG4gIH1cblxuICBnZXQgaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU3VwcG9ydGVkO1xuICB9XG5cbiAgZ2V0IHJ0dCgpOiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9ydHQ7XG4gIH1cblxuICBnZXQgZWZmZWN0aXZlVHlwZSgpOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9lZmZlY3RpdmVUeXBlO1xuICB9XG5cbiAgZ2V0IGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5O1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmRvd25saW5rID8/IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmRvd25saW5rTWF4ID8/IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFZmZlY3RpdmVUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmVmZmVjdGl2ZVR5cGUgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8udHlwZSA/PyAnVW5rbm93bic7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdW5kVHJpcFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8ucnR0ID8/IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgY29uc3QgbGlzdGVuZXIgPSAoKTogdm9pZCA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcikpKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhdGlzdGljcygpOiB2b2lkIHtcbiAgICB0aGlzLl9ydHQudmFsdWUgPSB0aGlzLmdldFJvdW5kVHJpcFRpbWUoKTtcbiAgICB0aGlzLl9lZmZlY3RpdmVUeXBlLnZhbHVlID0gdGhpcy5nZXRFZmZlY3RpdmVUeXBlKCk7XG4gICAgdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkudmFsdWUgPSB0aGlzLmdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBNZXRyaWNUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljVHlwZSc7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5cbmV4cG9ydCBjbGFzcyBTdHJlYW1TZXR1cExpc3RlbmVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbVNldHVwTGlzdGVuZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBtZXRyaWNzU2VydmljZSA9IFNESy5tZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXJ0VGltZTogbnVtYmVyO1xuICBwcml2YXRlIF9tZXRyaWNTdWJtaXR0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihwYWdlTG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3N0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc3VjY2VzcyhzdHJlYW1JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZWNvcmRTdHJlYW1NZXRyaWMoTWV0cmljc1R5cGUuU2V0dXBDb21wbGV0ZWQsIHN0cmVhbUlkKTtcbiAgfVxuXG4gIGZhaWwoKTogdm9pZCB7XG4gICAgdGhpcy5yZWNvcmRTdHJlYW1NZXRyaWMoTWV0cmljc1R5cGUuU2V0dXBGYWlsZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmRTdHJlYW1NZXRyaWMobWV0cmljVHlwZTogTWV0cmljc1R5cGUsIHN0cmVhbUlkPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX21ldHJpY1N1Ym1pdHRlZCkge1xuICAgICAgcmV0dXJuIDtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNTdWJtaXR0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzZXR1cFRpbWUgPSBub3cgLSB0aGlzLl9zdGFydFRpbWU7XG4gICAgY29uc3QgbWV0cmljTmFtZSA9IG5ldyBNZXRyaWNUeXBlKG1ldHJpY1R5cGUpLmdldE5hbWUoKTtcblxuICAgIHRoaXMubWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHNldHVwVGltZX0sXG4gICAgICBzdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIFN0cmVhbSBtZXRyaWMgWyVzXSBpbiBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBtZXRyaWNOYW1lLFxuICAgICAgbmV3IER1cmF0aW9ucyhzZXR1cFRpbWUpLnRvSXNvU3RyaW5nKClcbiAgICApO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEVkZ2VUb2tlbiBmcm9tICcuL0VkZ2VUb2tlbic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4vRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmNvbnN0IGVkZ2VBdXRoVG9rZW5QcmVmaXggPSAnRElHRVNUOic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VBdXRoUGFyc2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFZGdlQXV0aFBhcnNlcicpO1xuXG4gIHN0YXRpYyBwYXJzZVRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogRWRnZVRva2VuIHtcbiAgICBpZiAoIXRoaXMuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdUb2tlbiBpcyBub3QgdmFsaWQgWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGF0b2IodG9rZW4uc3Vic3RyKGVkZ2VBdXRoVG9rZW5QcmVmaXgubGVuZ3RoKSk7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBKU09OLnBhcnNlKGRlY29kZWRUb2tlbik7XG5cbiAgICAgIGVkZ2VUb2tlbi50b2tlbiA9IEpTT04ucGFyc2UoZWRnZVRva2VuLnRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4oZWRnZVRva2VuKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdDYW5ub3QgcGFyc2UgdG9rZW4gdmFsdWUnLCBlKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdG9rZW4gJiYgdG9rZW4uc3RhcnRzV2l0aChlZGdlQXV0aFRva2VuUHJlZml4KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuaW50ZXJmYWNlIElUb2tlbiB7XG4gIHVyaTogVVJMIHwgbnVsbDtcbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElFZGdlVG9rZW4ge1xuICBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG4gIHRva2VuOiBJVG9rZW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VUb2tlbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW46IElUb2tlbjtcblxuICBjb25zdHJ1Y3RvcihlZGdlVG9rZW46IElFZGdlVG9rZW4gfCBudWxsKSB7XG4gICAgdGhpcy5fYXBwbGljYXRpb25JZCA9IGVkZ2VUb2tlbj8uYXBwbGljYXRpb25JZCB8fCAnJztcbiAgICB0aGlzLl90b2tlbiA9IHtcbiAgICAgIHVyaTogZWRnZVRva2VuPy50b2tlbj8udXJpID8gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTChlZGdlVG9rZW4udG9rZW4udXJpKSA6IG51bGwsXG4gICAgICBjYXBhYmlsaXRpZXM6IGVkZ2VUb2tlbj8udG9rZW4/LmNhcGFiaWxpdGllcyB8fCBbXVxuICAgIH07XG4gIH1cblxuICBnZXQgdXJpKCk6IFVSTCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi51cmk7XG4gIH1cblxuICBnZXQgY2FwYWJpbGl0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4uY2FwYWJpbGl0aWVzO1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25JZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuZGVjbGFyZSBjb25zdCBfX0ZFQVRVUkVTX186IHtcbiAgc2VuZExvY2FsQ2FuZGlkYXRlczogYm9vbGVhbjtcbiAgc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHNlbmRNZXRyaWNzOiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIGxvZ1RvQ29uc29sZTogTG9nZ2luZ0xldmVsVHlwZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkRmVhdHVyZXMge1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvY2FsQ2FuZGlkYXRlczogYm9vbGVhbjtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRMb2dzOiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ1RvQ29uc29sZTogTG9nZ2luZ0xldmVsVHlwZTtcblxuICBzdGF0aWMgZ2V0IHNlbmRMb2NhbENhbmRpZGF0ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRMb2dzKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9ncztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZE1ldHJpY3MoKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZE1ldHJpY3M7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvZ1RvQ29uc29sZSgpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fbG9nVG9Db25zb2xlO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5RmVhdHVyZXMoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZlYXR1cmVzID0gX19GRUFUVVJFU19fO1xuXG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gJ3NlbmRMb2NhbENhbmRpZGF0ZXMnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZExvY2FsQ2FuZGlkYXRlcyA6IHRydWU7XG4gICAgICB0aGlzLl9zZW5kTG9ncyA9ICdzZW5kTG9ncycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9ncyA6ICdBbGwnO1xuICAgICAgdGhpcy5fc2VuZE1ldHJpY3MgPSAnc2VuZE1ldHJpY3MnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZE1ldHJpY3MgOiAnQWxsJztcbiAgICAgIHRoaXMuX2xvZ1RvQ29uc29sZSA9ICdsb2dUb0NvbnNvbGUnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMubG9nVG9Db25zb2xlIDogJ0FsbCc7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcyA9IHRydWU7XG4gICAgICB0aGlzLl9zZW5kTG9ncyA9ICdBbGwnO1xuICAgICAgdGhpcy5fc2VuZE1ldHJpY3MgPSAnQWxsJztcbiAgICAgIHRoaXMuX2xvZ1RvQ29uc29sZSA9ICdBbGwnO1xuICAgIH1cbiAgfVxufVxuXG5CdWlsZEZlYXR1cmVzLmFwcGx5RmVhdHVyZXMoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZWF0dXJlRW5hYmxlbWVudCB7XG4gIHN0YXRpYyBnZXQgY2xpZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDbGllbnQgb2ZmZXIgd29ya2Zsb3cgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkgaW4gdGhlIGZvbGxvd2luZyBicm93c2Vyc1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzUgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc2IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYWRkVHJhbmNlaXZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENocm9tZSA2OSwgNzAsIDcxLCA3MiBleHBvc2VzIGBhZGRUcmFuY2VpdmVyYCBidXQgaXQgZG9lcyBub3Qgd29yayBjb3JyZWN0bHlcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcwIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldEN1cnJlbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgb25UcmFja0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDYzIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU1O1xuICB9XG5cbiAgc3RhdGljIGdldCBwcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNob3VsZFVzZU5hdGl2ZUhscygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2Ftc3VuZ0Jyb3dzZXInO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1ByZWNhY2hpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdJRSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LmRvY3VtZW50Q3JlYXRlRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPj0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNNb2JpbGUoKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0eXBlb2YgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgIHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yID09PSAndW5kZWZpbmVkJyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwUmVjZWl2ZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBSVENSdHBSZWNlaXZlci5wcm90b3R5cGUuY3JlYXRlRW5jb2RlZFN0cmVhbXMgIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5IVE1MVmlkZW9FbGVtZW50LnByb3RvdHlwZS5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8ucmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGZWF0dXJlRW5hYmxlbWVudC5pc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWRcbiAgICAgICYmIChGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCB8fCBGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdTYWZhcmknO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fUEFSQU1FVEVSU19fOiB7XG4gIGRpc2NvdmVyeTogSURpc2NvdmVyeVBhcmFtZXRlcjtcbn07XG5cbmludGVyZmFjZSBJRGlzY292ZXJ5UGFyYW1ldGVye1xuICBpbnRlbnRpb25zOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcmFtZXRlcnMge1xuICBwcml2YXRlIHN0YXRpYyBfZGlzY292ZXJ5UGFyYW1ldGVyczogSURpc2NvdmVyeVBhcmFtZXRlciA7XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlQYXJhbWV0ZXJzKCk6IElEaXNjb3ZlcnlQYXJhbWV0ZXIge1xuICAgIHJldHVybiB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IF9fUEFSQU1FVEVSU19fO1xuXG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0gJ2Rpc2NvdmVyeScgaW4gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMuZGlzY292ZXJ5IDoge2ludGVudGlvbnM6ICcnfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0ge2ludGVudGlvbnM6ICcnfTtcbiAgICB9XG4gIH1cbn1cblxuUGFyYW1ldGVycy5hcHBseVBhcmFtZXRlcnMoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi9JR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEb2N1bWVudCBmcm9tICcuL0lEb2N1bWVudCc7XG5pbXBvcnQgSUxvY2F0aW9uIGZyb20gJy4vSUxvY2F0aW9uJztcbmltcG9ydCBJTmV0d29ya0luZm9ybWF0aW9uIGZyb20gJy4vSU5ldHdvcmtJbmZvcm1hdGlvbic7XG5pbXBvcnQgSU5hdmlnYXRvciBmcm9tICcuL0lOYXZpZ2F0b3InO1xuaW1wb3J0IElXaW5kb3cgZnJvbSAnLi9JV2luZG93JztcbmltcG9ydCBJUHJvdmlkZWRHbG9iYWxTY29wZSBmcm9tICcuL0lQcm92aWRlZEdsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG50eXBlIEJyb3dzZXJHbG9iYWxTY29wZSA9IElQcm92aWRlZEdsb2JhbFNjb3BlO1xuXG5jb25zdCBicm93c2VyR2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSA9IHtcbiAgZG9jdW1lbnQsXG4gIGxvY2F0aW9uLFxuICBuYXZpZ2F0b3IsXG4gIHdpbmRvd1xufTtcblxuZXhwb3J0IGNsYXNzIEdsb2JhbFNjb3BlIGltcGxlbWVudHMgSUdsb2JhbFNjb3BlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luc3RhbmNlID0gbmV3IFN1YmplY3Q8SUdsb2JhbFNjb3BlPihuZXcgR2xvYmFsU2NvcGUoYnJvd3Nlckdsb2JhbFNjb3BlKSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluc3RhbmNlOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiA9IG5ldyBSZWFkT25seVN1YmplY3QoR2xvYmFsU2NvcGUuX2luc3RhbmNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IElEb2N1bWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9jYXRpb246IElMb2NhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdG9yOiBJTmF2aWdhdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF93aW5kb3c6IElXaW5kb3c7XG5cbiAgY29uc3RydWN0b3IoZ2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSkge1xuICAgIHRoaXMuX2RvY3VtZW50ID0gZ2xvYmFsU2NvcGUuZG9jdW1lbnQ7XG4gICAgdGhpcy5fbG9jYXRpb24gPSBnbG9iYWxTY29wZS5sb2NhdGlvbjtcbiAgICB0aGlzLl9uYXZpZ2F0b3IgPSBnbG9iYWxTY29wZS5uYXZpZ2F0b3I7XG4gICAgdGhpcy5fd2luZG93ID0gZ2xvYmFsU2NvcGUud2luZG93O1xuICB9XG5cbiAgLy8gVGhpcyBtZXRob2QgaXMgcmVxdWlyZWQgdG8gbWFpbnRhaW4gQVBJIGNvbnNpc3RlbmN5IHdpdGggUHJvdmlkZWRHbG9iYWxTY29wZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgc3RhdGljIHNldEluc3RhbmNlKHByb3ZpZGVkR2xvYmFsU2NvcGU6IElQcm92aWRlZEdsb2JhbFNjb3BlKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgc2V0dGluZyB0aGUgR2xvYmFsU2NvcGUnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5zdGFuY2UoKTogUmVhZE9ubHlTdWJqZWN0PElHbG9iYWxTY29wZT4ge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS5fcmVhZE9ubHlJbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3Vic2NyaWJlKGNhbGxiYWNrOiAodmFsdWU6IElHbG9iYWxTY29wZSB8IG51bGwpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cblxuICBnZXQgQWJvcnRDb250cm9sbGVyKCk6IHR5cGVvZiBBYm9ydENvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuQWJvcnRDb250cm9sbGVyO1xuICB9XG5cbiAgZ2V0IEZvcm1EYXRhKCk6IHR5cGVvZiBGb3JtRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5Gb3JtRGF0YTtcbiAgfVxuXG4gIGdldCBIVE1MVmlkZW9FbGVtZW50KCk6IHR5cGVvZiBIVE1MVmlkZW9FbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkhUTUxWaWRlb0VsZW1lbnQ7XG4gIH1cblxuICBnZXQgTWVkaWFTdHJlYW0oKTogdHlwZW9mIE1lZGlhU3RyZWFtIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU3RyZWFtO1xuICB9XG5cbiAgZ2V0IE1lZGlhU3RyZWFtVHJhY2soKTogdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2sge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTdHJlYW1UcmFjaztcbiAgfVxuXG4gIGdldCBNZWRpYVNvdXJjZSgpOiB0eXBlb2YgTWVkaWFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTb3VyY2U7XG4gIH1cblxuICBnZXQgUlRDUGVlckNvbm5lY3Rpb24oKTogdHlwZW9mIFJUQ1BlZXJDb25uZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbigpOiB0eXBlb2YgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ1Nlc3Npb25EZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBSVENJY2VDYW5kaWRhdGUoKTogdHlwZW9mIFJUQ0ljZUNhbmRpZGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENJY2VDYW5kaWRhdGU7XG4gIH1cblxuICBnZXQgVVJMKCk6IHR5cGVvZiBVUkwge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuVVJMO1xuICB9XG5cbiAgZ2V0IFVSTFNlYXJjaFBhcmFtcygpOiB0eXBlb2YgVVJMU2VhcmNoUGFyYW1zIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlVSTFNlYXJjaFBhcmFtcztcbiAgfVxuXG4gIGdldCBhZGREb2N1bWVudEV2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgY2xlYXJJbnRlcnZhbCgpOiAoaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuY2xlYXJJbnRlcnZhbC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgY2xlYXJUaW1lb3V0KCk6IChpZD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5jbGVhclRpbWVvdXQuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgpOiA8RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50Pih0YWc6IHN0cmluZykgPT4gRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRIYXNGb2N1cygpOiAoKSA9PiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuaGFzRm9jdXMuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRJc0hpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9kb2N1bWVudC5oaWRkZW47XG4gIH1cblxuICBnZXQgZG9jdW1lbnRRdWVyeVNlbGVjdG9yKCk6IDxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHRhZzogc3RyaW5nKSA9PiBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZmV0Y2goKTogKGlucHV0OiBzdHJpbmcgfCBVUkwgfCBSZXF1ZXN0LCBpbml0PzogUmVxdWVzdEluaXQpID0+IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmZldGNoLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvbkhvc3RuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2F0aW9uLmhvc3RuYW1lO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uU2VhcmNoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2F0aW9uLnNlYXJjaDtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0b3JDb25uZWN0aW9uKCk6IElOZXR3b3JrSW5mb3JtYXRpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3IuY29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0b3JJc09uTGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLm9uTGluZTtcbiAgfVxuXG4gIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93WydfX3BoZW5peFBhZ2VMb2FkVGltZSddIHx8IHRoaXMuX3dpbmRvd1snX19wYWdlTG9hZFRpbWUnXTtcbiAgfVxuXG4gIGdldCBzZW5kQmVhY29uKCk6ICgodXJsOiBzdHJpbmcgfCBVUkwsIGRhdGE/OiBCb2R5SW5pdCB8IG51bGwpID0+IGJvb2xlYW4pIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLnNlbmRCZWFjb25cbiAgICAgID8gKHVybCwgZGF0YSkgPT4gdGhpcy5fbmF2aWdhdG9yLnNlbmRCZWFjb24hKHVybCwgZGF0YSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGRhdGEpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBxdWV1ZU1pY3JvdGFzaygpOiAobWljcm90YXNrOiAoKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnF1ZXVlTWljcm90YXNrLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCByZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IHJlcXVlc3RBbmltYXRpb25GcmFtZSgpOiAoY2FsbGJhY2s6IEZyYW1lUmVxdWVzdENhbGxiYWNrKSA9PiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCByZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHNldEludGVydmFsKCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldEludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRUaW1lb3V0KCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldFRpbWVvdXQuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGUgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXNwb3NhYmxlOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGRpc3Bvc2FibGU6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9kaXNwb3NlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGUgPSBkaXNwb3NhYmxlO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcG9zYWJsZS5jYWxsKHRoaXMpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGVMaXN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdDogSURpc3Bvc2FibGVbXSA9IFtdO1xuXG4gIGFkZChkaXNwb3NhYmxlOiBJRGlzcG9zYWJsZSk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QucHVzaChkaXNwb3NhYmxlKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5mb3JFYWNoKGRpc3Bvc2FibGUgPT4gZGlzcG9zYWJsZS5kaXNwb3NlKCkpO1xuICAgIHRoaXMuX2xpc3QubGVuZ3RoID0gMDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBEaXNwb3NhYmxlTGlzdFtkaXNwb3NhYmxlcz0ke3RoaXMuX2xpc3QubGVuZ3RofV1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vLyBBcyBmbG9hdCBpbiBFQ01BU2NyaXB0IHVzZSA2NC1iaXQgZm9ybWF0IGl0IGNhbm5vdCBoYXZlL2hhbmRsZSBtb3JlIHRoYW4gMTUgc3ltYm9scyBhZnRlciBkb3QuXG5jb25zdCBtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QgPSAxNTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnVtYmVycyB7XG4gIHN0YXRpYyBjb3VudE51bWJlckxlbmd0aCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSA9IDA7XG4gICAgbGV0IG51bWJlciA9IHZhbHVlO1xuXG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIG51bWJlciAqPSAtMTtcbiAgICAgIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUrKztcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVycy5jb3VudERpZ2l0c0JlZm9yZURlY2ltYWwobnVtYmVyKSArIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgKyAobnVtYmVyICE9PSBNYXRoLmZsb29yKG51bWJlcikgPyBOdW1iZXJzLmNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKG51bWJlcikgKyAxIDogMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmaXhSb3VuZGluZyh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcG93ZXIgPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKTtcblxuICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogcG93ZXIpIC8gcG93ZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGRpZ2l0c0JlZm9yZURlY2ltYWwgPSAxO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIHdoaWxlIChudW1iZXIgPj0gMTApIHtcbiAgICAgIG51bWJlciA9IG51bWJlciAvIDEwO1xuICAgICAgZGlnaXRzQmVmb3JlRGVjaW1hbCsrO1xuICAgIH1cblxuICAgIHJldHVybiBkaWdpdHNCZWZvcmVEZWNpbWFsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNBZnRlckRlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHZhbHVlO1xuICAgIGxldCBtb2RpZmllZFZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSk7XG4gICAgbGV0IGNvdW50ID0gMDtcblxuICAgIHdoaWxlIChtb2RpZmllZFZhbHVlICE9PSBvcmlnaW5hbFZhbHVlICYmIGNvdW50IDwgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90KSB7XG4gICAgICBjb3VudCsrO1xuICAgICAgbW9kaWZpZWRWYWx1ZSA9IE51bWJlcnMuZml4Um91bmRpbmcob3JpZ2luYWxWYWx1ZSwgY291bnQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOdW1iZXJzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5ncyB7XG4gIHN0YXRpYyByYW5kb20obGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhbmRvbTEzQ2hhcmFjdGVycyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygyLCAxNSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvb3BzOiBudW1iZXIgPSBNYXRoLmNlaWwobGVuZ3RoIC8gMTMpO1xuXG4gICAgcmV0dXJuIG5ldyBBcnJheShsb29wcykuZmlsbChyYW5kb20xM0NoYXJhY3RlcnMpLnJlZHVjZSgoc3RyaW5nLCBmdW5jKSA9PiB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgZnVuYygpO1xuICAgIH0sICcnKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmdzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKHg6IG5ldmVyKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdmFsdWUgWyR7eH1dLiBUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkYCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzc2VydFVucmVhY2hhYmxlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwZW5kZXJzIHtcbiAgcHJpdmF0ZSBfYXBwZW5kZXJzOiBBcnJheTxJQXBwZW5kZXI+ID0gW107XG5cbiAgZ2V0IHZhbHVlKCk6IEFycmF5PElBcHBlbmRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBhZGQoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycy5wdXNoKGFwcGVuZGVyKTtcbiAgfVxuXG4gIHJlbW92ZShhcHBlbmRlcjogSUFwcGVuZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gdGhpcy5fYXBwZW5kZXJzLnJlZHVjZSgoaXRlbXMsIGl0ZW0pID0+IHtcbiAgICAgIGlmICghKGl0ZW0gPT09IGFwcGVuZGVyKSkge1xuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSwgW10gYXMgQXJyYXk8SUFwcGVuZGVyPik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25zb2xlQXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbE1lc3NhZ2UgPSBgJHtkYXRlLnRvSVNPU3RyaW5nKCl9IFske2NhdGVnb3J5fV0gWyR7TG9nZ2luZ0xldmVsW2xvZ0xldmVsXX1dICR7bWVzc2FnZX1gO1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIGNvbnNvbGUubG9nKGZ1bGxNZXNzYWdlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoZnVsbE1lc3NhZ2UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQgQXBwZW5kZXJzIGZyb20gJy4vQXBwZW5kZXJzJztcbmltcG9ydCBMb2dnaW5nVGhyZXNob2xkIGZyb20gJy4vTG9nZ2luZ1RocmVzaG9sZCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5leHBvcnQgZW51bSBMb2dnaW5nTGV2ZWwge1xuICBBbGwgPSAtMSxcbiAgVHJhY2UgPSAxMCxcbiAgRGVidWcgPSAyMCxcbiAgSW5mbyA9IDMwLFxuICBXYXJuID0gNDAsXG4gIEVycm9yID0gNTAsXG4gIEZhdGFsID0gNjAsXG4gIE9mZiA9IDEwMCxcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2luZ0xldmVsVHlwZSA9ICdPZmYnIHwgJ1RyYWNlJyB8ICdEZWJ1ZycgfCAnSW5mbycgfCAnV2FybicgfCAnRXJyb3InIHwgJ0ZhdGFsJyB8ICdBbGwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jYXRlZ29yeTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBlbmRlcnM6IEFwcGVuZGVycztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkO1xuXG4gIGdldCBjYXRlZ29yeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jYXRlZ29yeTtcbiAgfVxuXG4gIGdldCBhcHBlbmRlcnMoKTogQXBwZW5kZXJzIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBMb2dnaW5nVGhyZXNob2xkIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgdHJhY2UoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLlRyYWNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLlRyYWNlLCBhcmdzKTtcbiAgfVxuXG4gIGRlYnVnKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5EZWJ1Zykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5EZWJ1ZywgYXJncyk7XG4gIH1cblxuICBpbmZvKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkluZm8sIGFyZ3MpO1xuICB9XG5cbiAgd2FybiguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5XYXJuLCBhcmdzKTtcbiAgfVxuXG4gIGVycm9yKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5FcnJvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5FcnJvciwgYXJncyk7XG4gIH1cblxuICBmYXRhbCguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRmF0YWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRmF0YWwsIGFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2cobGV2ZWw6IG51bWJlciwgYXJnczogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMucmVwbGFjZVBsYWNlaG9sZGVycyhhcmdzKTtcblxuICAgIHRoaXMuX2FwcGVuZGVycy52YWx1ZS5mb3JFYWNoKChhcHBlbmRlcjogSUFwcGVuZGVyKSA9PiB7XG4gICAgICBhcHBlbmRlci5sb2cobGV2ZWwsIG1lc3NhZ2UsIHRoaXMuY2F0ZWdvcnksIGRhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3M6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSBhcmdzWzBdO1xuICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICB3aGlsZSAocmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mICYmIGFyZ3MubGVuZ3RoID4gMSAmJiBpbmRleCA+PSAwKSB7XG4gICAgICBpbmRleCA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuaW5kZXhPZignJScsIGluZGV4KTtcblxuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICBjb25zdCB0eXBlID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAxLCBpbmRleCArIDIpO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgJyUnOlxuICAgICAgICAgICAgLy8gRXNjYXBlZCAnJSUnIHR1cm5zIGludG8gJyUnXG4gICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoMCwgaW5kZXgpICsgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAxKTtcbiAgICAgICAgICAgIGluZGV4Kys7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgLy8gUmVwbGFjZSAnJWQnIG9yICclcycgd2l0aCB0aGUgYXJndW1lbnRcbiAgICAgICAgICAgIGFyZ3NbMF0gPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gdGhpcy5yZXBsYWNlQXJndW1lbnQoXG4gICAgICAgICAgICAgIHRoaXMudG9TdHJpbmcoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYXJncy5zcGxpY2UoMSwgMSk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2onOlxuICAgICAgICAgICAgLy8gUmVwbGFjZSAlaicgd2l0aCB0aGUgYXJndW1lbnRcbiAgICAgICAgICAgIGFyZ3NbMF0gPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gdGhpcy5yZXBsYWNlQXJndW1lbnQoXG4gICAgICAgICAgICAgIHRoaXMuc3RyaW5naWZ5KGFyZ3NbMV0pLFxuICAgICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLFxuICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXJncy5zcGxpY2UoMSwgMSk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgYXJncyA9IGFyZ3MucmVkdWNlKChhY2N1bXVsYXRvcjogc3RyaW5nLCBjdXJyZW50VmFsdWU6IHN0cmluZyB8IEVycm9yLCBpbmRleDogbnVtYmVyLCBhcnJheTogc3RyaW5nW10pID0+IHtcbiAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gYXJyYXkubGVuZ3RoICYmIGN1cnJlbnRWYWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLm1lc3NhZ2UpICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5zdGFjayk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyBgWyR7dGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUpfV1gO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZ3MudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RyaW5naWZ5KGFyZzogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBjYWNoZTogb2JqZWN0W10gPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGFyZyBpbnN0YW5jZW9mIEVycm9yID8gdGhpcy50b1N0cmluZyhhcmcpIDogYXJnLFxuICAgICAgICAoXywgdmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgaWYgKGNhY2hlLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gJzxyZWN1cnNpdmU+JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FjaGUucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICAyXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnW29iamVjdCBpbnZhbGlkIEpTT04uc3RyaW5naWZ5XSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQXJndW1lbnQoYXJndW1lbnQ6IGFueSwgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZzogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoMCwgaW5kZXgpICsgdGhpcy50b1N0cmluZyhhcmd1bWVudCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDIpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1N0cmluZyhkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gZGF0YSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBsZXQgdG9TdHJpbmdTdHIgPSAnJztcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gJ1tvYmplY3QgaW52YWxpZCB0b1N0cmluZygpXSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9TdHJpbmdTdHI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihjYXRlZ29yeTogc3RyaW5nLCBhcHBlbmRlcnM6IEFwcGVuZGVycywgdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkKSB7XG4gICAgdGhpcy5fY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICB0aGlzLl9hcHBlbmRlcnMgPSBhcHBlbmRlcnM7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRGVmYXVsdHMge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMuc2VuZExvZ3NdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5sb2dUb0NvbnNvbGVdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5JbmZvO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4vTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXIsIHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXJzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBJTG9nZ2VyfSA9IHt9O1xuICBwcml2YXRlIHN0YXRpYyBfYXBwZW5kZXJzOiBBcHBlbmRlcnMgPSBuZXcgQXBwZW5kZXJzKCk7XG4gIHByaXZhdGUgc3RhdGljIF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQgPSBuZXcgTG9nZ2luZ1RocmVzaG9sZCgpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IG5ldyBUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll90ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldExvZ2dlcihjYXRlZ29yeTogc3RyaW5nKTogSUxvZ2dlciB7XG4gICAgaWYgKHR5cGVvZiBjYXRlZ29yeSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNhdGVnb3J5ID0gJ1NESyc7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV07XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH1cblxuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XSA9IG5ldyBMb2dnZXIoY2F0ZWdvcnksIHRoaXMuX2FwcGVuZGVycywgdGhpcy5fdGhyZXNob2xkKTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlMb2dnaW5nTGV2ZWwoKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ2NvbnNvbGUnLCBMb2dnZXJGYWN0b3J5LmFwcGx5Q29uc29sZUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ3RlbGVtZXRyeScsIExvZ2dlckZhY3RvcnkuYXBwbHlUZWxlbWV0cnlMb2dnZXIuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUxvZ2dpbmdMZXZlbCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1sb2dnaW5nLWxldmVsJykgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKSB7XG4gICAgICB0aGlzLl90aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwobmFtZTogc3RyaW5nLCBhcHBseUFwcGVuZGVyOiAobGV2ZWw6IExvZ2dpbmdMZXZlbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZShgcGhlbml4LSR7bmFtZX0tbG9nZ2luZy1sZXZlbGApIGFzIExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgICBpZiAocGFyYW1ldGVyVmFsdWUgPT09ICdPZmYnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXBwbHlBcHBlbmRlcihMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5Q29uc29sZUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseVRlbGVtZXRyeUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvZ2dlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkxvZ2dlckZhY3RvcnkuYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ0xldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKGxvZ2dpbmdMZXZlbDogTG9nZ2luZ0xldmVsKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWwpIHtcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuVHJhY2U6XG4gICAgICAgIHJldHVybiAnVHJhY2UnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRGVidWc6XG4gICAgICAgIHJldHVybiAnRGVidWcnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuSW5mbzpcbiAgICAgICAgcmV0dXJuICdJbmZvJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLldhcm46XG4gICAgICAgIHJldHVybiAnV2Fybic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdFcnJvcic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5GYXRhbDpcbiAgICAgICAgcmV0dXJuICdGYXRhbCc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwobG9nZ2luZ0xldmVsVHlwZTogTG9nZ2luZ0xldmVsVHlwZSk6IExvZ2dpbmdMZXZlbCB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLk9mZjtcbiAgICAgIGNhc2UgJ1RyYWNlJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5UcmFjZTtcbiAgICAgIGNhc2UgJ0RlYnVnJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5EZWJ1ZztcbiAgICAgIGNhc2UgJ0luZm8nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gICAgICBjYXNlICdXYXJuJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5XYXJuO1xuICAgICAgY2FzZSAnRXJyb3InOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkVycm9yO1xuICAgICAgY2FzZSAnRmF0YWwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkZhdGFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dpbmdUaHJlc2hvbGQge1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCA9IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWw7XG5cbiAgZ2V0IHZhbHVlKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldFRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY1R5cGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzOiBNZXRyaWNzVHlwZTtcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzOiBNZXRyaWNzVHlwZSkge1xuICAgIHRoaXMuX21ldHJpY3MgPSBtZXRyaWNzO1xuICB9XG5cbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBNZXRyaWNzVHlwZVt0aGlzLl9tZXRyaWNzXTtcbiAgfVxuXG4gIGdldFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICBzd2l0Y2ggKHRoaXMuX21ldHJpY3MpIHtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU3RhbGxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQnVmZmVyaW5nOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBGYWlsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUmVzb2x1dGlvbkNoYW5nZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uRm9yZWdyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fbWV0cmljcyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi9UZWxlbWV0cnlEZWZhdWx0JztcblxuZXhwb3J0IGVudW0gVGVsZW1ldHJ5TGV2ZWwge1xuICBPZmYgPSAxMDAsXG4gIEVzc2VudGlhbCA9IDEwLFxuICBBbGwgPSAtMVxufVxuXG5leHBvcnQgdHlwZSBUZWxlbWV0cnlMZXZlbFR5cGUgPSAnT2ZmJyB8ICdFc3NlbnRpYWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L21ldHJpY3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsID0gVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWV0cmljc1VybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIG1ldHJpY3NVcmwucGF0aG5hbWUgPSBtZXRyaWNzVXJsLnBhdGhuYW1lICsgJy9tZXRyaWNzJztcblxuICAgIHRoaXMuX3VybCA9IG1ldHJpY3NVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiwge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgVGVsZW1ldHJ5VXJsIGZyb20gJy4uL3Nkay9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uL3Nkay9FbnZpcm9ubWVudCc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4vVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NGYWN0b3J5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NTZXJ2aWNlczoge1tjYXRlZ29yeTogc3RyaW5nXTogTWV0cmljc1NlcnZpY2V9ID0ge307XG5cbiAgc3RhdGljIGdldE1ldHJpY3NTZXJ2aWNlKHVybDogc3RyaW5nKTogTWV0cmljc1NlcnZpY2Uge1xuICAgIGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1cmwgbXVzdCBiZSBhIHN0cmluZyBpbnN0ZWFkIHJlY2VpdmVkIFske3R5cGVvZiB1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXNbdXJsXTtcblxuICAgIGlmIChtZXRyaWNzU2VydmljZXMpIHtcbiAgICAgIHJldHVybiBtZXRyaWNzU2VydmljZXM7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBuZXcgTWV0cmljc0NvbmZpZ3VyYXRpb24oKTtcblxuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSA9IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnVybCA9IFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IEVudmlyb25tZW50LmdldEVudmlyb25tZW50RnJvbVVybCh1cmwpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKFNESy50ZWxlbWV0cnlMZXZlbCk7XG5cbiAgICByZXR1cm4gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdID0gbmV3IE1ldHJpY3NTZXJ2aWNlKG1ldHJpY3NDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBzZXRUZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiB2b2lkIHtcbiAgICBjb25zdCBtZXRyaWNzU2VydmljZXMgPSBPYmplY3QudmFsdWVzKE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXMpO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcyAmJiBtZXRyaWNzU2VydmljZXMubGVuZ3RoKSB7XG4gICAgICBtZXRyaWNzU2VydmljZXMuZm9yRWFjaChtZXRyaWNzU2VydmljZSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldHJpY3NDb25maWd1cmF0aW9uID0gbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICAgICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gdGVsZW1ldHJ5TGV2ZWw7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0cmljc0ZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBNZXRyaWNUeXBlIGZyb20gJy4vTWV0cmljVHlwZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSAxMDI0O1xuY29uc3QgbWF4QnVmZmVyZWRSZWNvcmRzID0gMjA0ODtcblxuaW50ZXJmYWNlIElWYWx1ZSB7XG4gIHN0cmluZz86IHN0cmluZztcbiAgdWludDY0PzogbnVtYmVyO1xuICBmbG9hdD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElNZXRyaWNSZWNvcmQge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpYzogc3RyaW5nO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpYyB7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZTtcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ01ldHJpY3NTZXJ2aWNlJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgX21ldHJpY3M6IEFycmF5PElNZXRyaWNSZWNvcmQ+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9mYWlsdXJlQ291bnQgPSAwO1xuICBwcml2YXRlIF9kb21haW4gPSAnJztcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IG1ldHJpY3NDb25maWd1cmF0aW9uO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBtZXRyaWNzQ29uZmlndXJhdGlvbigpOiBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHVzaChtZXRyaWM6IElNZXRyaWMpOiB2b2lkIHtcbiAgICBjb25zdCB7c3RyZWFtSWQsIHZhbHVlLCBwcmV2aW91c1ZhbHVlLCBydW50aW1lLCByZXNvdXJjZSwga2luZH0gPSBtZXRyaWM7XG4gICAgY29uc3QgbWV0cmljVHlwZSA9IG5ldyBNZXRyaWNUeXBlKG1ldHJpYy5tZXRyaWNUeXBlKTtcblxuICAgIGlmICh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPiBtZXRyaWNUeXBlLmdldFRlbGVtZXRyeUxldmVsKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHRlbmFuY3k6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljOiBtZXRyaWNUeXBlLmdldE5hbWUoKSxcbiAgICAgIHZhbHVlLFxuICAgICAgcHJldmlvdXNWYWx1ZSxcbiAgICAgIGZ1bGxRdWFsaWZpZWROYW1lOiB0aGlzLl9kb21haW4sXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgcnVudGltZSxcbiAgICAgIHJlc291cmNlLFxuICAgICAga2luZFxuICAgIH07XG5cbiAgICB0aGlzLl9tZXRyaWNzLnB1c2gobWV0cmljUmVjb3JkKTtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPihyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlTG9jYXRpb25Ib3N0bmFtZShnbG9iYWxTY29wZS5sb2NhdGlvbkhvc3RuYW1lKTtcbiAgICAgICAgZ2xvYmFsU2NvcGUuc2V0VGltZW91dCgoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCksIDApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlczogQXJyYXk8SU1ldHJpY1JlY29yZD4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbWV0cmljc01lc3NhZ2VzfSkpO1xuXG4gICAgcmV0dXJuIGF3YWl0IEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgbWV0cmljc01lc3NhZ2VzID0gdGhpcy5fbWV0cmljcy5zbGljZSgwLCByZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHRoaXMuX21ldHJpY3MgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIGlmICh0aGlzLmlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHJlc3BvbnNlKSkge1xuICAgICAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gbWF4QnVmZmVyZWRSZWNvcmRzKSB7XG4gICAgICAgICAgdGhpcy5fZmFpbHVyZUNvdW50Kys7XG5cbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX21ldHJpY3MgPSBbLi4ubWV0cmljc01lc3NhZ2VzLCAuLi50aGlzLl9tZXRyaWNzXTtcblxuICAgICAgICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgICAgICAgfSwgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fZmFpbHVyZUNvdW50KSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RvbyBtYW55IGNhY2hlZCBtZXRyaWMgcmVjb3JkcyBbJXNdLCBkcm9wcGluZyBbJXNdIHJlY29yZHMnLCB0aGlzLl9tZXRyaWNzLmxlbmd0aCwgbWV0cmljc01lc3NhZ2VzLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fZmFpbHVyZUNvdW50ID0gMDtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSh7c3RhdHVzfTogUmVzcG9uc2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL141XFxkezJ9JC8udGVzdChzdGF0dXMudG9TdHJpbmcoKSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gTWV0cmljc1R5cGUge1xuICBUaW1lVG9GaXJzdEZyYW1lLFxuICBDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lLFxuICBTdGFsbGVkLFxuICBCdWZmZXJpbmcsXG4gIFNldHVwQ29tcGxldGVkLFxuICBTZXR1cEZhaWxlZCxcbiAgUm91bmRUcmlwVGltZSxcbiAgRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gIE5ldHdvcmtUeXBlLFxuICBSZXNvbHV0aW9uQ2hhbmdlZCxcbiAgQXBwbGljYXRpb25Gb3JlZ3JvdW5kLFxuICBBcHBsaWNhdGlvbkJhY2tncm91bmRcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWV0cmljc1R5cGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUodGVsZW1ldHJ5TGV2ZWw6IFRlbGVtZXRyeUxldmVsKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKHRlbGVtZXRyeUxldmVsKSB7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw6XG4gICAgICAgIHJldHVybiAnRXNzZW50aWFsJztcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuQWxsOlxuICAgICAgICByZXR1cm4gJ0FsbCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsVHlwZTogVGVsZW1ldHJ5TGV2ZWxUeXBlKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnRXNzZW50aWFsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgJ0FsbCc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5RGVmYXVsdCB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTWV0cmljc107XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8vIE5vdGU6IFRoaXMgUHJvbWlzZSBwb2x5ZmlsbCBpcyBpbmNsdWRlZCBmb3IgYnJvd3NlciBidWlsZHMgb25seSB0byBhZGRyZXNzIGNvbXBhdGliaWxpdHkgaXNzdWVzXG4vLyB3aXRoIG9sZGVyIGJyb3dzZXJzIHdob3NlIG5hdGl2ZSBQcm9taXNlPFQ+aW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCAuZmluYWxseS5cblxuaW1wb3J0IFByb21pc2VIYW5kbGVyIGZyb20gJy4vUHJvbWlzZUhhbmRsZXInO1xuXG5jbGFzcyBQcm9taXNlPFQ+IHtcbiAgX3N0YXRlOiBudW1iZXI7XG4gIF9oYW5kbGVkOiBib29sZWFuO1xuICBfdmFsdWU6IFQgfCB1bmtub3duO1xuICBfZGVmZXJyZWRzOiBBcnJheTxQcm9taXNlSGFuZGxlcjxUPj47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICB0aGVuKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiB8IG51bGwsIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uIHwgbnVsbCk6IFByb21pc2U8VD58IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFByb21pc2UpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm9taXNlcyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZpYSBuZXcnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlID0gMDtcbiAgICB0aGlzLl9oYW5kbGVkID0gZmFsc2U7XG4gICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX2RlZmVycmVkcyA9IFtdO1xuXG4gICAgdGhpcy5kb1Jlc29sdmUoY2FsbGJhY2spO1xuICB9XG5cbiAgZG9SZXNvbHZlKGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIGxldCBkb25lID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgY2FsbGJhY2soXG4gICAgICAgICh2YWx1ZTogUHJvbWlzZTxUPnwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIChyZWFzb246IFByb21pc2U8VD58IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucHJvbWlzZVJlamVjdChyZWFzb24pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZG9uZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgdGhpcy5wcm9taXNlUmVqZWN0KGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcm9taXNlUmVzb2x2ZShuZXdWYWx1ZTogUHJvbWlzZTxUPnwgbnVsbCB8IHVua25vd24pOiB2b2lkIHtcbiAgICBjb25zdCBwcm9taXNlID0gdGhpcyBhcyBQcm9taXNlPFQ+O1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFByb21pc2U8VD5SZXNvbHV0aW9uIFByb2NlZHVyZTogaHR0cHM6Ly9naXRodWIuY29tL1Byb21pc2VzLWFwbHVzL1Byb21pc2VzLXNwZWMjdGhlLVByb21pc2UtcmVzb2x1dGlvbi1wcm9jZWR1cmVcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gcHJvbWlzZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBIFByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXQgc2VsZi4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5ld1ZhbHVlICYmICh0eXBlb2YgbmV3VmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIG5leHQgbGluZSB0byBub3QgZG8gZXh0cmEgaWYgc3RhdGVtZW50c1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgdGhlbiA9IG5ld1ZhbHVlLnRoZW47XG5cbiAgICAgICAgaWYgKG5ld1ZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgIHByb21pc2UuX3N0YXRlID0gMztcbiAgICAgICAgICBwcm9taXNlLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgIHByb21pc2UuZmluYWxlKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBwcm9taXNlLmRvUmVzb2x2ZShmdW5jdGlvbigpOiB2b2lkIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICAgICAgICAgIHRoZW4uYXBwbHkobmV3VmFsdWUsIGFyZ3VtZW50cyBhcyB1bmtub3duIGFzIFtvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uXSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHJvbWlzZS5fc3RhdGUgPSAxO1xuICAgICAgcHJvbWlzZS5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIHByb21pc2UuZmluYWxlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcHJvbWlzZS5wcm9taXNlUmVqZWN0KGUpO1xuICAgIH1cbiAgfVxuXG4gIHByb21pc2VSZWplY3QobmV3VmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9IDI7XG4gICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLmZpbmFsZSgpO1xuICB9XG5cbiAgZmluYWxlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gMiAmJiB0aGlzLl9kZWZlcnJlZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBQcm9taXNlLl9pbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX2hhbmRsZWQpIHtcbiAgICAgICAgICBQcm9taXNlLl91bmhhbmRsZWRSZWplY3Rpb24odGhpcy5fdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5fZGVmZXJyZWRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB0aGlzLmhhbmRsZSh0aGlzLl9kZWZlcnJlZHNbaV0pO1xuICAgIH1cblxuICAgIHRoaXMuX2RlZmVycmVkcyA9IFtdO1xuICB9XG5cbiAgaGFuZGxlKGRlZmVycmVkOiBQcm9taXNlSGFuZGxlcjxUPik6IHZvaWQge1xuICAgIGxldCBwcm9taXNlID0gdGhpcyBhcyBQcm9taXNlPFQ+O1xuXG4gICAgd2hpbGUgKHByb21pc2UuX3N0YXRlID09PSAzKSB7XG4gICAgICBwcm9taXNlID0gcHJvbWlzZS5fdmFsdWUgYXMgUHJvbWlzZTxUPjtcbiAgICB9XG5cbiAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IDApIHtcbiAgICAgIHByb21pc2UuX2RlZmVycmVkcy5wdXNoKGRlZmVycmVkKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByb21pc2UuX2hhbmRsZWQgPSB0cnVlO1xuICAgIFByb21pc2UuX2ltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICBjb25zdCBjYWxsYmFjayA9IHByb21pc2UuX3N0YXRlID09PSAxID8gZGVmZXJyZWQub25GdWxmaWxsZWQgOiBkZWZlcnJlZC5vblJlamVjdGVkO1xuXG4gICAgICBpZiAoY2FsbGJhY2sgPT09IG51bGwpIHtcbiAgICAgICAgaWYgKHByb21pc2UuX3N0YXRlID09PSAxKSB7XG4gICAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVzb2x2ZShwcm9taXNlLl92YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVqZWN0KHByb21pc2UuX3ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3VsdDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2socHJvbWlzZS5fdmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZWplY3QoZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZXNvbHZlKHJlc3VsdCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYWxsKGFycjogQXJyYXk8UHJvbWlzZTx1bmtub3duPj4pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UuYWxsIGFjY2VwdHMgYW4gYXJyYXknKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpO1xuXG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmVtYWluaW5nID0gYXJncy5sZW5ndGg7XG4gICAgICBjb25zdCBtYW5hZ2VSZXNwb25zZSA9IChpOiBudW1iZXIsIHZhbHVlOiBQcm9taXNlPHVua25vd24+KTogdm9pZCA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHZhbHVlICYmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRoZW4gPSB2YWx1ZS50aGVuO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhlbi5jYWxsKFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICh2YWx1ZTogUHJvbWlzZTx1bmtub3duPikgPT4gbWFuYWdlUmVzcG9uc2UoaSwgdmFsdWUpLFxuICAgICAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhcmdzW2ldID0gdmFsdWU7XG5cbiAgICAgICAgICBpZiAoLS1yZW1haW5pbmcgPT09IDApIHtcbiAgICAgICAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICBtYW5hZ2VSZXNwb25zZShpLCBhcmdzW2ldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyByZXNvbHZlKHZhbHVlOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUuY29uc3RydWN0b3IgPT09IFByb21pc2UpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiByZXNvbHZlKHZhbHVlKSk7XG4gIH1cblxuICBzdGF0aWMgcmVqZWN0KHZhbHVlOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChfOiB1bmRlZmluZWQsIHJlamVjdDogRnVuY3Rpb24pID0+IHJlamVjdCh2YWx1ZSkpO1xuICB9XG5cbiAgc3RhdGljIHJhY2UoYXJyOiBBcnJheTxQcm9taXNlPHVua25vd24+Pik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS5yYWNlIGFjY2VwdHMgYW4gYXJyYXknKSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKGFycltpXSkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIF9pbW1lZGlhdGUoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgaWdub3JlZCA9IHdpbmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrLCAwKTtcbiAgfVxuXG4gIHN0YXRpYyBfdW5oYW5kbGVkUmVqZWN0aW9uKGVycm9yOiBQcm9taXNlPHVua25vd24+fCBudWxsIHwgdW5rbm93bik6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZSkge1xuICAgICAgY29uc29sZS53YXJuKCdQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246JywgZXJyb3IpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICB9XG4gIH1cbn1cblxuLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHByb3RvdHlwZSBjaGFuZ2Vcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcblByb21pc2UucHJvdG90eXBlWydjYXRjaCddID0gZnVuY3Rpb24ob25SZWplY3RlZDogRnVuY3Rpb24pOiB1bmtub3duIHtcbiAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcbn07XG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZVxuUHJvbWlzZS5wcm90b3R5cGVbJ3RoZW4nXSA9IGZ1bmN0aW9uKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb24pOiBQcm9taXNlPHVua25vd24+fCB2b2lkIHtcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKCgpOiBudWxsID0+IG51bGwpO1xuXG4gIHRoaXMuaGFuZGxlKG5ldyBQcm9taXNlSGFuZGxlcjx1bmtub3duPihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSkpO1xuXG4gIHJldHVybiBwcm9taXNlO1xufTtcbi8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBwcm90b3R5cGUgY2hhbmdlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5Qcm9taXNlLnByb3RvdHlwZVsnZmluYWxseSddID0gZnVuY3Rpb24oY2FsbGJhY2s6IEZ1bmN0aW9uKTogUHJvbWlzZTx1bmtub3duPnwgdm9pZCB7XG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgKHZhbHVlOiBQcm9taXNlPHVua25vd24+fCB1bmRlZmluZWQpID0+IFByb21pc2UucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKCgpID0+IHZhbHVlLCAoKTogbnVsbCA9PiBudWxsKSxcbiAgICAocmVhc29uOiBFcnJvciB8IHN0cmluZykgPT4gUHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrKCkpLnRoZW4oKCkgPT4gUHJvbWlzZS5yZWplY3QocmVhc29uKSwgKCk6IG51bGwgPT4gbnVsbClcbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb21pc2U7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgUHJvbWlzZSBmcm9tICcuL1Byb21pc2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm9taXNlSGFuZGxlcjxUPiB7XG4gIG9uRnVsZmlsbGVkOiBGdW5jdGlvbiB8IG51bGw7XG4gIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uIHwgbnVsbDtcbiAgcHJvbWlzZTogUHJvbWlzZTxUPjtcblxuICBjb25zdHJ1Y3RvcihvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uLCBwcm9taXNlOiBQcm9taXNlPFQ+KSB7XG4gICAgdGhpcy5vbkZ1bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogbnVsbDtcbiAgICB0aGlzLm9uUmVqZWN0ZWQgPSB0eXBlb2Ygb25SZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uUmVqZWN0ZWQgOiBudWxsO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB7XG4gIGF1ZGlvVHJhbnNjZWl2ZXJzPzogUlRDUnRwVHJhbnNjZWl2ZXJbXTtcbiAgdmlkZW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICBwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uO1xuICBsb2NhbE9mZmVyOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5leHBvcnQgZW51bSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMge1xuICBEaXNhYmxlZCxcbiAgRW5hYmxlZFxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRyYWNrS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSA9IFsnYXVkaW8nLCAndmlkZW8nXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uRmFjdG9yeTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5KCkpO1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGVkOiB7XG4gICAgZGlyZWN0aW9uPzogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb247XG4gICAgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PjtcbiAgfSB8IG51bGw7XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUHJlY2FjaGluZ0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBQZWVyQ29ubmVjdGlvblNlcnZpY2UucHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKClcbiAgICAgICAgLmNhdGNoKGUgPT4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwcmUtY2FjaGUgcGVlciBjb25uZWN0aW9uIG9mZmVyJywgZSkpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKTogUHJvbWlzZTx7IHBlZXJDb25uZWN0aW9uOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB8IHZvaWQ+OyBkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIH0+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSB7XG4gICAgICBkaXJlY3Rpb246ICdyZWN2b25seScsXG4gICAgICBwZWVyQ29ubmVjdGlvbjogUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSBudWxsO1xuXG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoZGlyZWN0aW9uOiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiA9ICdyZWN2b25seScsIHRyYWNrS2luZHMgPSBkZWZhdWx0VHJhY2tLaW5kcywgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRGlzYWJsZWQpOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdD4ge1xuICAgIGlmIChQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCAmJiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZC5kaXJlY3Rpb24gPT09IGRpcmVjdGlvbiAmJiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCAmJiB0aGlzLmlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrS2luZHMpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLnBlZXJDb25uZWN0aW9uO1xuXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkID0gRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgPyB7ZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5FbmFibGVkfSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX3BlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKVxuICAgICAgLnRoZW4oYXN5bmMgcGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBjb25zdCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNBZGRUcmFuc2NlaXZlcjtcbiAgICAgICAgY29uc3QgYXVkaW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcbiAgICAgICAgY29uc3QgdmlkZW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcblxuICAgICAgICBpZiAoc3VwcG9ydHNBZGRUcmFuc2NlaXZlcikge1xuICAgICAgICAgIHRyYWNrS2luZHMuZm9yRWFjaChraW5kID0+IHtcbiAgICAgICAgICAgIGlmIChraW5kID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICAgIGF1ZGlvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMsXG4gICAgICAgICAgICB2aWRlb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uOiBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHVuZGVmaW5lZClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGRpcmVjdGlvbiA9PT0gJ3JlY3Zvbmx5JyA/IHtcbiAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVlLFxuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IHRydWVcbiAgICAgICAgfSA6IHt9O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrc0tpbmRzOiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10pOiBib29sZWFuIHtcbiAgICBpZiAodHJhY2tzS2luZHMubGVuZ3RoICE9PSBkZWZhdWx0VHJhY2tLaW5kcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb3VudFRyYWNrS2luZHMgPSAoYXJyYXk6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSkgPT4gYXJyYXkucmVkdWNlKCh0cmFja0tpbmRDb3VudCwga2luZCkgPT4ge1xuICAgICAgdHJhY2tLaW5kQ291bnRba2luZF0gPSAodHJhY2tLaW5kQ291bnRba2luZF0gfHwgMCkgKyAxO1xuXG4gICAgICByZXR1cm4gdHJhY2tLaW5kQ291bnQ7XG4gICAgfSwge1xuICAgICAgYXVkaW86IDAsXG4gICAgICB2aWRlbzogMFxuICAgIH0pO1xuICAgIGNvbnN0IGNvdW50ZWRUcmFja0tpbmRzID0gY291bnRUcmFja0tpbmRzKHRyYWNrc0tpbmRzKTtcbiAgICBjb25zdCBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHMoZGVmYXVsdFRyYWNrS2luZHMpO1xuXG4gICAgcmV0dXJuIGNvdW50ZWRUcmFja0tpbmRzLmF1ZGlvID09PSBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMuYXVkaW8gJiYgY291bnRlZFRyYWNrS2luZHMudmlkZW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy52aWRlbztcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cblBlZXJDb25uZWN0aW9uU2VydmljZS5pbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSdGNDb25maWd1cmF0aW9uTWFuYWdlciB7XG4gIHN0YXRpYyB0cnVuY2F0ZUljZVNlcnZlcnMoY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24uaWNlU2VydmVycykge1xuICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHVybHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCAyOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XTtcblxuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgdXJscy5wdXNoKGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWNlU2VydmVycy5wdXNoKHtcbiAgICAgICAgdXJsczogdXJscyxcbiAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG5cbiAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSdGNDb25maWd1cmF0aW9uTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgU2RwUGFyc2VyIGZyb20gJy4vU2RwUGFyc2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMge1xuICBba2luZDogc3RyaW5nXTogSVJ0Y1B1Ymxpc2hTdGF0aXN0aWM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0IHtcbiAgcmVzdWx0OiAoKSA9PiBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbSBleHRlbmRzIFJUQ1N0YXRzUmVwb3J0IHtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lczogKCkgPT4gc3RyaW5nW107XG4gIHN0YXQ6IChuYW1lOiBzdHJpbmcpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjUHVibGlzaFN0YXRpc3RpYyB7XG4gIGxhc3RQYWNrZXRTZW50VGltZXN0YW1wPzogbnVtYmVyO1xuICBzc3JjOiBzdHJpbmc7XG4gIG1lZGlhVHlwZTogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNTZW50OiBudW1iZXI7XG4gIHBhY2tldHNTZW50OiBudW1iZXI7XG4gIHJldHJhbnNtaXR0ZWRCeXRlc1NlbnQ/OiBudW1iZXI7XG4gIGZpckNvdW50PzogbnVtYmVyO1xuICBmcmFtZUhlaWdodD86IG51bWJlcjtcbiAgZnJhbWVXaWR0aD86IG51bWJlcjtcbiAgZnJhbWVzRW5jb2RlZD86IG51bWJlcjtcbiAgZnJhbWVzU2VudD86IG51bWJlcjtcbiAgaGVhZGVyQnl0ZXNTZW50PzogbnVtYmVyO1xuICBodWdlRnJhbWVzU2VudD86IG51bWJlcjtcbiAgcGxpQ291bnQ/OiBudW1iZXI7XG4gIHFwU3VtPzogbnVtYmVyO1xuICB0b3RhbEVuY29kZVRpbWU/OiBudW1iZXI7XG4gIHRvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0PzogbnVtYmVyO1xuICBjb2RlYzogc3RyaW5nO1xuICBmcHM/OiBudW1iZXI7XG4gIHJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbn1cblxuY29uc3QgdXBkYXRlU3RhdGlzdGljVGltZW91dCA9IDEwMDA7XG5jb25zdCBnZXRTdGF0c1RpbWVvdXREdXJhdGlvbiA9IDUwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y1B1Ymxpc2hNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUnRjUHVibGlzaE1vbml0b3InKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRWaWRlb0NvZGVjOiBzdHJpbmcgPSAndW5rbm93bic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZEF1ZGlvQ29kZWM6IHN0cmluZyA9ICd1bmtub3duJztcbiAgcHJpdmF0ZSByZWFkb25seSBfcnRjU3RhdGlzdGljOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4gPSBuZXcgU3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWM+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuICBwcml2YXRlIF9pc01vbml0b3JSdW5uaW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdXBkYXRlVGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIF9tb25pdG9yR2VuZXJhdGlvbiA9IDA7XG4gIHByaXZhdGUgX2F2YWlsYWJsZVRyYWNrczoge1xuICAgIGF1ZGlvOiBib29sZWFuO1xuICAgIHZpZGVvOiBib29sZWFuO1xuICB9IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyLCBpc0ZvcmVncm91bmQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPikge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gcGVlckNvbm5lY3Rpb247XG4gICAgdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZSA9IGVzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb24gJiYgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy5zZHAgJiYgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbj8uc2RwKSB7XG4gICAgICBjb25zdCBwYXJzZWRMb2NhbERlc2NyaXB0aW9uID0gbmV3IFNkcFBhcnNlcih0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbi5zZHApO1xuICAgICAgY29uc3QgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjID0gcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uYXVkaW9Db2RlYztcbiAgICAgIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgPSBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi52aWRlb0NvZGVjO1xuXG4gICAgICB0aGlzLl9hdmFpbGFibGVUcmFja3MgPSB7XG4gICAgICAgIGF1ZGlvOiBwYXJzZWRMb2NhbERlc2NyaXB0aW9uLmlzQXVkaW9UcmFja0VuYWJsZWQgJiYgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uaXNBdWRpb1RyYWNrRW5hYmxlZCxcbiAgICAgICAgdmlkZW86IHBhcnNlZExvY2FsRGVzY3JpcHRpb24uaXNWaWRlb1RyYWNrRW5hYmxlZCAmJiBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5pc1ZpZGVvVHJhY2tFbmFibGVkXG4gICAgICB9O1xuXG4gICAgICBsZXQgaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2sgPSB0cnVlO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgIGlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoZm9yZWdyb3VuZCA9PiB7XG4gICAgICAgICAgaWYgKGlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrKSB7XG4gICAgICAgICAgICBpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFmb3JlZ3JvdW5kIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSW52YWxpZGF0ZSBhbnkgaW4tZmxpZ2h0IHBvbGwgZnJvbSBiZWZvcmUgdGhlIGZyZWV6ZVxuICAgICAgICAgIHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKys7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdSZXN0YXJ0aW5nIHN0YXRzIHBvbGxpbmcgYWZ0ZXIgZm9yZWdyb3VuZCB0cmFuc2l0aW9uJyk7XG4gICAgICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpYygpOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4ge1xuICAgIHJldHVybiB0aGlzLl9ydGNTdGF0aXN0aWM7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbisrO1xuICAgIHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVUaW1lb3V0KTtcbiAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTdGF0aXN0aWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB7XG4gICAgICAgIGF1ZGlvOiAwLFxuICAgICAgICB2aWRlbzogMFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGdlbmVyYXRpb24gPSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbjtcbiAgICAvLyBTYWZhcmkgMTEgZG9lc250IGhhdmUga2luZCBvciBtZWRpYVR5cGUgc28gd2UgbmVlZCB0byB0YWtlIGl0IGZyb20gdGhlIGluYm91bmQtcnRwIG9iamVjdCBpZFxuICAgIGNvbnN0IGdldEtpbmRGb3JTYWZhcmkxMSA9IChpdGVtOiB7aWQ6IHN0cmluZ30pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGxldCB0aW1lb3V0SGFuZGxlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdHNQcm9taXNlID0gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFN0YXRzKG51bGwpO1xuXG4gICAgICBpZiAoIXN0YXRzUHJvbWlzZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpbWVvdXRQcm9taXNlID0gbmV3IFByb21pc2U8dW5kZWZpbmVkPihyZXNvbHZlID0+IHtcbiAgICAgICAgdGltZW91dEhhbmRsZSA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVzb2x2ZSh1bmRlZmluZWQpLCBnZXRTdGF0c1RpbWVvdXREdXJhdGlvbik7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtzdGF0c1Byb21pc2UsIHRpbWVvdXRQcm9taXNlXSk7XG5cbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbiB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc3RhdHMpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdnZXRTdGF0cygpIHRpbWVkIG91dCwgc2tpcHBpbmcgc3RhdHMgcHJvY2Vzc2luZycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljID0ge307XG4gICAgICAgIGxldCByb3VuZFRyaXBUaW1lID0gdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcbiAgICAgICAgbGV0IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUpIHtcbiAgICAgICAgICAgIHJvdW5kVHJpcFRpbWUgPSByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUgKiAxMDAwO1xuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQubGFzdFBhY2tldFNlbnRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgIGxhc3RQYWNrZXRTZW50VGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLmxhc3RQYWNrZXRTZW50VGltZXN0YW1wID0gbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdvdXRib3VuZC1ydHAnKSB7XG4gICAgICAgICAgICBjb25zdCBraW5kOiAndmlkZW8nIHwgJ2F1ZGlvJyB8IHVuZGVmaW5lZCA9IHJlcG9ydC5raW5kIHx8IHJlcG9ydC5tZWRpYVR5cGUgfHwgZ2V0S2luZEZvclNhZmFyaTExKHJlcG9ydCk7XG4gICAgICAgICAgICBsZXQgY29kZWMgPSAnJztcblxuICAgICAgICAgICAgc3RhdHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHJlcG9ydC5jb2RlY0lkKSB7XG4gICAgICAgICAgICAgICAgY29kZWMgPSBpdGVtLm1pbWVUeXBlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGtpbmQgJiYgdGhpcy5fYXZhaWxhYmxlVHJhY2tzPy5ba2luZF0pIHtcbiAgICAgICAgICAgICAgY29uc3QgYnl0ZXMgPSByZXBvcnQuYnl0ZXNTZW50IHx8IDA7XG4gICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQnl0ZXNTZW50ID0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LmJ5dGVzU2VudCA/PyAwO1xuICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzU2VudDtcbiAgICAgICAgICAgICAgY29uc3QgdGltZURlbHRhID0gcmVwb3J0LnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy50aW1lc3RhbXA7XG4gICAgICAgICAgICAgIGNvbnN0IGJpdHJhdGUgPSBieXRlc0RlbHRhICYmIHRpbWVEZWx0YSA/IE1hdGguZmxvb3IoOCAqIGJ5dGVzRGVsdGEgL1xuICAgICAgICAgICAgICAgIHRpbWVEZWx0YSAqIDEwMDApIDogMDtcblxuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdID0ge1xuICAgICAgICAgICAgICAgIHNzcmM6IHJlcG9ydC5zc3JjLFxuICAgICAgICAgICAgICAgIG1lZGlhVHlwZToga2luZCxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IHJlcG9ydC50aW1lc3RhbXAsXG4gICAgICAgICAgICAgICAgYml0cmF0ZSxcbiAgICAgICAgICAgICAgICBieXRlc1NlbnQ6IHJlcG9ydC5ieXRlc1NlbnQsXG4gICAgICAgICAgICAgICAgcGFja2V0c1NlbnQ6IHJlcG9ydC5wYWNrZXRzU2VudCxcbiAgICAgICAgICAgICAgICByZXRyYW5zbWl0dGVkQnl0ZXNTZW50OiByZXBvcnQucmV0cmFuc21pdHRlZEJ5dGVzU2VudCxcbiAgICAgICAgICAgICAgICBjb2RlYzogY29kZWMgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShraW5kKSxcbiAgICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgaWYgKHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0U2VudFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZpckNvdW50J10gPSByZXBvcnQuZmlyQ291bnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVIZWlnaHQnXSA9IHJlcG9ydC5mcmFtZUhlaWdodDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZVdpZHRoJ10gPSByZXBvcnQuZnJhbWVXaWR0aDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZXNFbmNvZGVkJ10gPSByZXBvcnQuZnJhbWVzRW5jb2RlZDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZXNTZW50J10gPSByZXBvcnQuZnJhbWVzU2VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydoZWFkZXJCeXRlc1NlbnQnXSA9IHJlcG9ydC5oZWFkZXJCeXRlc1NlbnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnaHVnZUZyYW1lc1NlbnQnXSA9IHJlcG9ydC5odWdlRnJhbWVzU2VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydwbGlDb3VudCddID0gcmVwb3J0LnBsaUNvdW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3FwU3VtJ10gPSByZXBvcnQucXBTdW07XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsndG90YWxFbmNvZGVUaW1lJ10gPSByZXBvcnQudG90YWxFbmNvZGVUaW1lO1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3RvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0J10gPSByZXBvcnQudG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQ7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRW5jb2RlZCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZnBzID0gKHJlcG9ydC5mcmFtZXNFbmNvZGVkIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLmZyYW1lc0VuY29kZWQpIC9cbiAgICAgICAgICAgICAgICAgICAgICAocnRjU3RhdGlzdGljc1traW5kXS50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8udGltZXN0YW1wKSAqXG4gICAgICAgICAgICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnBzJ10gPSBmcHMgPyBNYXRoLnJvdW5kKGZwcyAqIDEwMCkgLyAxMDAgOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ2dldFN0YXRzKCkgcmVqZWN0ZWQnLCBlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZyAmJiBnZW5lcmF0aW9uID09PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbikge1xuICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29kZWNCeVR5cGUodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2F1ZGlvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgfHwgJ3Vua25vd24nO1xuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyB8fCAndW5rbm93bic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3Vua25vd24nO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2RwUGFyc2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2RwOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1ZGlvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0F1ZGlvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1ZpZGVvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNkcDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2RwID0gc2RwO1xuXG4gICAgY29uc3Qgc2RwU3BsaXRCeUxpbmVzID0gdGhpcy5fc2RwLnNwbGl0KC8oXFxyXFxufFxccnxcXG4pLyk7XG4gICAgY29uc3Qgc2RwU3BsaXRCeVRyYWNrcyA9IHRoaXMuX3NkcC5zcGxpdCgvKD86XnxbXFxyXFxuXSltPS8pO1xuXG4gICAgdGhpcy5fYXVkaW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygnYXVkaW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX3ZpZGVvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ3ZpZGVvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgnYXVkaW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgICB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgndmlkZW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgfVxuXG4gIGdldCBhdWRpb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvQ29kZWM7XG4gIH1cblxuICBnZXQgdmlkZW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92aWRlb0NvZGVjO1xuICB9XG5cbiAgZ2V0IGlzQXVkaW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNWaWRlb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNUcmFja0J5VHlwZUVuYWJsZWQodHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5VHJhY2tzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNkcFNlY3Rpb25Gb3JUeXBlID0gc2RwU3BsaXRCeVRyYWNrcy5maW5kKHNkcFRyYWNrID0+IHNkcFRyYWNrLnN0YXJ0c1dpdGgodHlwZSkpO1xuXG4gICAgaWYgKCFzZHBTZWN0aW9uRm9yVHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhc2RwU2VjdGlvbkZvclR5cGUuaW5jbHVkZXMoYGE9aW5hY3RpdmVgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb2RlYyh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlMaW5lczogc3RyaW5nIFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCBydG1hcCA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgbT0ke3R5cGV9YCkpPy5zcGxpdCgnICcpWzNdIHx8ICcnO1xuICAgIGNvbnN0IHVzZWRDb2RlY0xpbmUgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYGE9cnRwbWFwOiR7cnRtYXB9YCkpO1xuICAgIGNvbnN0IHVzZWRDb2RlYyA9IHVzZWRDb2RlY0xpbmU/LnNwbGl0KCcgJylbMV0gfHwgJyc7XG4gICAgY29uc3QgY29kZWNOYW1lID0gdXNlZENvZGVjLnNwbGl0KCcvJylbMF07XG5cbiAgICByZXR1cm4gY29kZWNOYW1lO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0fSBmcm9tICcuL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcblxuY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1ZhbmlsbGFQZWVyQ29ubmVjdGlvbicpO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24gY2xhc3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgZ2V0IG5hdGl2ZSgpOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY3VycmVudFJlbW90ZURlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY29ubmVjdGlvblN0YXRlKCk6IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGljZUNvbm5lY3Rpb25TdGF0ZSgpOiBSVENJY2VDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmljZUNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5zZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRUcmFuc2NlaXZlcnMgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNBZGRUcmFuc2NlaXZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmFkZFRyYW5zY2VpdmVyID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlT2ZmZXIob3B0aW9ucz86IFJUQ09mZmVyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZU9mZmVyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFuc3dlcihvcHRpb25zPzogUlRDQW5zd2VyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZUFuc3dlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHNldExvY2FsRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNDcnlwdG8gPSBkZXNjcmlwdGlvbi5zZHA/Lm1hdGNoKC9hPWNyeXB0bzovaSk7XG5cbiAgICBpZiAoaGFzQ3J5cHRvKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RQIGE9Y3J5cHRvIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBnZXRTZW5kZXJzKCk6IFJUQ1J0cFNlbmRlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFNlbmRlcnMoKTtcbiAgfVxuXG4gIGdldFJlY2VpdmVycygpOiBSVENSdHBSZWNlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFJlY2VpdmVycygpO1xuICB9XG5cbiAgZ2V0U3RhdHMoc2VsZWN0b3I/OiBNZWRpYVN0cmVhbVRyYWNrIHwgbnVsbCk6IFByb21pc2U8UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHNlbGVjdG9yKTtcbiAgfVxuXG4gIGdldFN0YXRzTGVnYWN5KCk6IFByb21pc2U8SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIC8vIElnbm9yZWQgZHVlIHRvIHR5cGVzY3JpcHQgbm90IGhhdmluZyBsZWdhY3kgJ2dldFN0YXRzJyBtZXRob2QgdHlwZSBkZWZpbml0aW9uXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ2dldFN0YXRzJyBtZXRob2QgZm9yXG4gICAgICAvLyBDaHJvbWVAPD0gNjYgZGV0YWlsZWQgaGVyZTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjI3ODE2XG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHJlc29sdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICByZW1vdmVFdmVudExpc3RlbmVyPFQgZXh0ZW5kcyBrZXlvZiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwPih0eXBlOiBULCBsaXN0ZW5lcjogKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFtUXSkgPT4gdW5rbm93biwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIGdldFRyYW5zY2VpdmVycygpOiBSVENSdHBUcmFuc2NlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpO1xuICB9XG5cbiAgYWRkVHJhbnNjZWl2ZXIobmFtZTogc3RyaW5nLCBvcHRpb25zOiBSVENSdHBUcmFuc2NlaXZlckluaXQpOiBSVENSdHBUcmFuc2NlaXZlciB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihuYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFkZFN0cmVhbShtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pOiB2b2lkIHtcbiAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFjayh0cmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWd1cmF0aW9uKCk6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzZXQgb250cmFjayhoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2sgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9udHJhY2soKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrO1xuICB9XG5cbiAgc2V0IG9uaWNlY2FuZGlkYXRlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY2FuZGlkYXRlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGU7XG4gIH1cblxuICBzZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgc2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jbG9zZSgpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmFuaWxsYVBlZXJDb25uZWN0aW9uOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9WYW5pbGxhUGVlckNvbm5lY3Rpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSB7XG4gIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPihyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UobmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKSk7XG4gICAgICAgIGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuL1N1YmplY3QnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFkT25seVN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJqZWN0OiBTdWJqZWN0PFQ+O1xuXG4gIGNvbnN0cnVjdG9yKHN1YmplY3Q6IFN1YmplY3Q8VD4pIHtcbiAgICB0aGlzLl9zdWJqZWN0ID0gc3ViamVjdDtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZShsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgSUNvbXBhcmFibGUgZnJvbSAnLi4vbGFuZy9JQ29tcGFyYWJsZSc7XG5cbmNsYXNzIERpc3Bvc2FibGVMaXN0ZW5lcjxUPiBleHRlbmRzIERpc3Bvc2FibGUge1xuICBjb25zdHJ1Y3RvcihsaXN0ZW5lcnM6IFRbXSwgbGlzdGVuZXI6IFQpIHtcbiAgICBzdXBlcigoKSA9PiB7XG4gICAgICBjb25zdCBpZHggPSBsaXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG5cbiAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3RlbmVyczogKCh2YWx1ZTogVCkgPT4gdm9pZClbXTtcbiAgcHJpdmF0ZSBfdmFsdWU6IFQ7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IFQpIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBbXTtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKHZhbHVlOiBUKSB7XG4gICAgbGV0IGNoYW5nZWQgPSB0aGlzLl92YWx1ZSAhPT0gdmFsdWU7XG5cbiAgICBpZiAoY2hhbmdlZCAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgY29tcGFyYWJsZSA9IHZhbHVlIGFzIHVua25vd24gYXMgSUNvbXBhcmFibGU8VD47XG5cbiAgICAgIGlmICh0eXBlb2YgY29tcGFyYWJsZS5lcXVhbHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2hhbmdlZCA9ICFjb21wYXJhYmxlLmVxdWFscyh0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFjaGFuZ2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgWy4uLnRoaXMuX2xpc3RlbmVyc10pIHtcbiAgICAgIGxpc3RlbmVyKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAodmFsdWU6IFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuXG4gICAgbGlzdGVuZXIodGhpcy5fdmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBEaXNwb3NhYmxlTGlzdGVuZXI8KHZhbHVlOiBUKSA9PiB2b2lkPih0aGlzLl9saXN0ZW5lcnMsIGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW52aXJvbm1lbnQge1xuICBzdGF0aWMgZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgICAgcmV0dXJuIGJhc2VVUkwub3JpZ2luO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSUdsb2JhbFNjb3BlJztcbmltcG9ydCB7R2xvYmFsU2NvcGV9IGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTdHJpbmdzIGZyb20gJy4uL2xhbmcvU3RyaW5ncyc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuLi9sb2dnZXIvQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciBmcm9tICcuLi9kb20vQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3InO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi4vcnRjL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vRW52aXJvbm1lbnQnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCB7U2hha2FQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JU2hha2FQbGF5ZXInO1xuaW1wb3J0IHtIbHNQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JSGxzUGxheWVyJztcbmltcG9ydCB7V2ViUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVdlYlBsYXllcic7XG5pbXBvcnQgSVByb3ZpZGVkR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuXG5jb25zdCBwYWdlTG9hZFRpbWUgPSBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpLnZhbHVlPy5wYWdlTG9hZFRpbWUgfHwgRGF0ZS5ub3coKTtcblxuaW50ZXJmYWNlIElJbml0T3B0aW9ucyB7XG4gIGRpc2NvdmVyeVVyaT86IHN0cmluZztcbiAgcGVlckNvbm5lY3Rpb25GYWN0b3J5PzogSVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgdGVsZW1ldHJ5TGV2ZWw/OiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIGxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGNvbnNvbGVMb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtPzogYm9vbGVhbjtcbiAgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU/OiBib29sZWFuO1xuICB3ZWJQbGF5ZXJMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHNoYWthUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIGhsc0pzTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTREsge1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gIHByaXZhdGUgc3RhdGljIF93ZWJQbGF5ZXJMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NoYWthUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2hsc0pzTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgfCBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBfZW52aXJvbm1lbnQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5VXJsOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeScpO1xuICBwcml2YXRlIHN0YXRpYyBfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDg7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlMZXZlbDogU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4gPSBuZXcgU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4oVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2VuZExvY2FsQ2FuZGlkYXRlczogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KEJ1aWxkRmVhdHVyZXMuc2VuZExvY2FsQ2FuZGlkYXRlcyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90ZW5hbmN5OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2NsaWVudFNlc3Npb25JZDogc3RyaW5nID0gU3RyaW5ncy5yYW5kb20oMzIpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9hZGVkVGltZXN0YW1wOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTREsnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luaXRpYWxpemVkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlJbml0aWFsaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPihTREsuX2luaXRpYWxpemVkKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5RGlzY292ZXJ5VXJpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8c3RyaW5nPihEaXNjb3ZlcnlVcmkudXJpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5OiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpO1xuXG4gIHN0YXRpYyBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVuYW5jeSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc3RhdGljIGdldCBjbGllbnRTZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0RLLl9jbGllbnRTZXNzaW9uSWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvYWRlZFRpbWVzdGFtcCgpOiBEYXRlIHtcbiAgICByZXR1cm4gU0RLLl9sb2FkZWRUaW1lc3RhbXA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGluaXRpYWxpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlJbml0aWFsaXplZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5VXJpKCk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seURpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcGVlckNvbm5lY3Rpb25GYWN0b3J5KCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYlBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93ZWJQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNoYWthUGxheWVyTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGhsc0pzTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2hsc0pzTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBtZXRyaWNzU2VydmljZSgpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgcmV0dXJuIFNESy5fbWV0cmljc1NlcnZpY2U7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlVcmwoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVsZW1ldHJ5VXJsO1xuICB9XG5cbiAgc3RhdGljIGdldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM7XG4gIH1cblxuICBzdGF0aWMgc2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMocmV0cmllc0Ftb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IHJldHJpZXNBbW91bnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKHRoaXMuX2xvZ2dlci50aHJlc2hvbGQudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJEZXRlY3RvcigpOiBCcm93c2VyRGV0ZWN0b3Ige1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBMb2dnZXJGYWN0b3J5LnRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUgPSBTREsucGFnZUxvYWRUaW1lO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyKSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IFVSTCB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlciAmJiB0ZW5hbmN5KSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IHRlbmFuY3kgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShEaXNjb3ZlcnlVcmkudXJpLnZhbHVlKTtcbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uID0gU0RLLl9tZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LW1ldHJpY3MtbGV2ZWwnKSBhcyBUZWxlbWV0cnlMZXZlbFR5cGU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKFRlbGVtZXRyeUxldmVsW3ZhbHVlXSk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZFRlbGVtZXRyeUxldmVsID0gU0RLLl90ZWxlbWV0cnlMZXZlbC5zdWJzY3JpYmUodGVsZW1ldHJ5TGV2ZWwgPT4ge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5kaXNjb3ZlcnlVcmkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy50ZWxlbWV0cnlVcmwudmFsdWUgPSBTREsuZ2V0VGVsZW1ldHJ5VXJsKHZhbHVlKTtcbiAgICAgIFNESy5fZW52aXJvbm1lbnQudmFsdWUgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodmFsdWUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2hhbm5lbFRva2VuID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWNoYW5uZWwtdG9rZW4nKTtcblxuICAgIGlmIChjaGFubmVsVG9rZW4pIHtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4oY2hhbm5lbFRva2VuKTtcblxuICAgICAgU0RLLl90ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3k7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJpVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtdXJpJyk7XG5cbiAgICBpZiAodXJpVmFsdWUpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmlWYWx1ZTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVVJJVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtYmFzZS11cmknKTtcblxuICAgIGlmIChiYXNlVVJJVmFsdWUpIHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZTtcbiAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoYmFzZVVSSVZhbHVlKTtcblxuICAgICAgdXJpLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaS50b1N0cmluZygpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtYmFzZS11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG9uTG9hZChnbG9iYWxTY29wZTogSUdsb2JhbFNjb3BlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTREsgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdsb2JhbFNjb3BlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ3VubG9hZCcsICgpID0+IHtcbiAgICAgIFNESy5kaXNwb3NlKCk7XG4gICAgfSk7XG5cbiAgICBTREsuYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuICAgIFNESy5hcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbmV3IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgdGhpcy5faW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgc3RhdGljIGluaXQob3B0aW9ucz86IElJbml0T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZTogSUluaXRPcHRpb25zICYge2dsb2JhbFNjb3BlPzogSVByb3ZpZGVkR2xvYmFsU2NvcGV9ID0gb3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnNldEluc3RhbmNlKG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZS5nbG9iYWxTY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGlzY292ZXJ5VXJpKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gb3B0aW9ucy5kaXNjb3ZlcnlVcmk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5KSB7XG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlID0gb3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwgJiYgVGVsZW1ldHJ5TGV2ZWxbb3B0aW9ucy50ZWxlbWV0cnlMZXZlbF0pIHtcbiAgICAgIFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci50aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmxvZ2dpbmdMZXZlbCkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIGNvbnN0IGNvbnNvbGVBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIENvbnNvbGVBcHBlbmRlcik7XG5cbiAgICAgIGlmIChjb25zb2xlQXBwZW5kZXIpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUoY29uc29sZUFwcGVuZGVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAhPT0gJ09mZicpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXIpIHtcbiAgICAgIHRoaXMuX3dlYlBsYXllckxvYWRlciA9IG9wdGlvbnMud2ViUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl9zaGFrYVBsYXllckxvYWRlciA9IG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaGxzSnNMb2FkZXIpIHtcbiAgICAgIHRoaXMuX2hsc0pzTG9hZGVyID0gb3B0aW9ucy5obHNKc0xvYWRlcjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBTREsuX2luaXRpYWxpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG51bGw7XG4gIH1cblxuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuR2xvYmFsU2NvcGUuc3Vic2NyaWJlKFNESy5vbkxvYWQuYmluZChTREspKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeVVybCB7XG4gIHN0YXRpYyBnZXRUZWxlbWV0cnlVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuICAgICAgY29uc3Qgc2VnbWVudHMgPSBiYXNlVVJMLmhvc3RuYW1lLnNwbGl0KCcuJyk7XG5cbiAgICAgIHN3aXRjaCAoYmFzZVVSTC5wcm90b2NvbCkge1xuICAgICAgICBjYXNlICd3czonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cDonO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3dzczonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cHM6JztcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDIgfHxcbiAgICAgICAgICAoc2VnbWVudHMubGVuZ3RoID09PSAzICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDJdLmxlbmd0aCA8PSAyICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdLmxlbmd0aCA8PSAzKVxuICAgICAgKSB7XG4gICAgICAgIHNlZ21lbnRzLnVuc2hpZnQoJ3RlbGVtZXRyeScpO1xuICAgICAgfSBlbHNlIGlmIChzZWdtZW50c1swXS5zdGFydHNXaXRoKCdzdGctJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1zdGcnKSB8fCBzZWdtZW50c1swXS5pbmNsdWRlcygnLXN0Zy0nKSB8fCBzZWdtZW50c1swXSA9PT0gJ3N0ZycpIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5LXN0Zyc7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ2xvY2FsJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1sb2NhbCcpKSB7XG4gICAgICAgIC8vIExlYXZlIFVSTCB1bmNoYW5nZWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlZ21lbnRzWzBdID0gJ3RlbGVtZXRyeSc7XG4gICAgICB9XG5cbiAgICAgIGJhc2VVUkwuaG9zdG5hbWUgPSBzZWdtZW50cy5qb2luKCcuJyk7XG5cbiAgICAgIHJldHVybiBgJHtiYXNlVVJMLm9yaWdpbn0vdGVsZW1ldHJ5YDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IHR5cGUgQml0cmF0ZVN0YXRlVHlwZSA9ICdLZWVwJyB8ICdSZXNldCc7XG5leHBvcnQgdHlwZSBCaXRyYXRlTW9kZVR5cGUgPSAnTm9ybWFsJyB8ICdGb3JjZScgfCAnUmVzZXQnO1xuXG5leHBvcnQgZW51bSBCaXRyYXRlU3RhdGUge1xuICBLZWVwLFxuICBSZXNldFxufVxuXG5leHBvcnQgZW51bSBCaXRyYXRlTW9kZSB7XG4gIE5vcm1hbCxcbiAgRm9yY2UsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlIHtcbiAgYXBpVmVyc2lvbjogbnVtYmVyO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG4gIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IG51bWJlcjtcbiAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGVUeXBlO1xuICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVUeXBlO1xufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGZyb20gJy4uLy4uL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlcic7XG5cbmV4cG9ydCB0eXBlIFBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMgPSB7XG4gIGZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvbkNvbnRleHQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0OiBib29sZWFuO1xuICBtZWRpYVN0cmVhbTogU3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvbjogU3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPjtcbiAgcGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0czogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gb3B0aW9ucy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0O1xuICAgIHRoaXMubWVkaWFTdHJlYW0gPSBuZXcgU3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb24gPSBuZXcgU3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2VQZWVyQ29ubmVjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBwZWVyQ29ubmVjdGlvbiA9IHRoaXMucGVlckNvbm5lY3Rpb24udmFsdWU7XG5cbiAgICBpZiAoIXBlZXJDb25uZWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICBpZiAodGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCkge1xuICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlTWVkaWFTdHJlYW0oKTogdm9pZCB7XG4gICAgdGhpcy5tZWRpYVN0cmVhbS52YWx1ZT8uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgIHRoaXMubWVkaWFTdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdGVDb250ZXh0IHtcbiAgaXNTdGFydGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgaXNEaXNwb3NlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlzU3RhcnRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5pc0Rpc3Bvc2VkID0gZmFsc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9rZW5Db250ZXh0IHtcbiAgdG9rZW46IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHRva2VuRXhwaXJpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLnRva2VuID0gbmV3IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj4odG9rZW4pO1xuICAgIHRoaXMudG9rZW5FeHBpcmluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdERpc2NvdmVyeVVyaSA9ICdodHRwczovL3BjYXN0LnBoZW5peHJ0cy5jb20vcGNhc3QvZW5kUG9pbnRzJztcblxuZXhwb3J0IHtkZWZhdWx0RGlzY292ZXJ5VXJpfTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVNb2RlVHlwZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQml0cmF0ZU1vZGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZSk6IEJpdHJhdGVNb2RlVHlwZSB7XG4gICAgc3dpdGNoIChiaXRyYXRlTW9kZSkge1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Ob3JtYWw6XG4gICAgICAgIHJldHVybiAnTm9ybWFsJztcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuRm9yY2U6XG4gICAgICAgIHJldHVybiAnRm9yY2UnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5SZXNldDpcbiAgICAgICAgcmV0dXJuICdSZXNldCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShiaXRyYXRlTW9kZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0JpdHJhdGVTdGF0ZSwgQml0cmF0ZVN0YXRlVHlwZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQml0cmF0ZVN0YXRlTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlKGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlKTogQml0cmF0ZVN0YXRlVHlwZSB7XG4gICAgc3dpdGNoIChiaXRyYXRlU3RhdGUpIHtcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLktlZXA6XG4gICAgICAgIHJldHVybiAnS2VlcCc7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5SZXNldDpcbiAgICAgICAgcmV0dXJuICdSZXNldCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShiaXRyYXRlU3RhdGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNjb3ZlcnlTZXJ2aWNlIGZyb20gJy4vRGlzY292ZXJ5U2VydmljZSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5cbmNvbnN0IGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwgPSA2MDAwMDtcblxuaW50ZXJmYWNlIElQZXJVUklFbmRwb2ludCB7IFt4OiBzdHJpbmddOiBQcm9taXNlPEVuZFBvaW50PiB9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeSB7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZTogSVBlclVSSUVuZHBvaW50ID0ge307XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8RW5kUG9pbnQ+KHJlc29sdmVFbmRQb2ludFByb21pc2UgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IGdsb2JhbFNjb3BlLlVSTChTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgICByZXR1cm4gRGlzY292ZXJ5LmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpKVxuICAgICAgICAgIC50aGVuKHJlc29sdmVFbmRQb2ludFByb21pc2UpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpOiBVUkwpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodXJsIGluIERpc2NvdmVyeS5fY2FjaGUpIHtcbiAgICAgIHJldHVybiBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuXG4gICAgY29uc3QgZGlzY292ZXJ5U2VydmljZSA9IG5ldyBEaXNjb3ZlcnlTZXJ2aWNlKHVyaSk7XG4gICAgY29uc3QgY2FjaGVkVmFsdWUgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPSBkaXNjb3ZlcnlTZXJ2aWNlLmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KCk7XG4gICAgY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9PT0gY2FjaGVkVmFsdWUpIHtcbiAgICAgICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgICAgICB9XG4gICAgICB9LCBkaXNjb3ZlcnlDYWNoZUludGVydmFsKTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNhY2hlZFZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaTogVVJMKTogdm9pZCB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodXJsIGluIERpc2NvdmVyeS5fY2FjaGUpIHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4vRGlzY292ZXJ5VXJpJztcbmltcG9ydCBFbmRQb2ludCBmcm9tICcuL0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcblxuY29uc3QgZGVmYXVsdFRpbWVvdXQgPSAyMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5U2VydmljZSB7XG4gIHByaXZhdGUgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdEaXNjb3ZlcnknKTtcbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF91cmk6IFVSTDtcblxuICBjb25zdHJ1Y3Rvcih1cmk6IFVSTCkge1xuICAgIGlmICghdXJpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSByZXF1aXJlcyB1cmknKTtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKHVyaS50b1N0cmluZygpKTtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gIH1cblxuICBhc3luYyBkaXNjb3Zlck5lYXJieUVuZFBvaW50cyh1cmk6IFVSTCwgdGltZW91dDogbnVtYmVyKTogUHJvbWlzZTxFbmRQb2ludFtdPiB7XG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSByZXF1aXJlcyB0aW1lb3V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgICB9KSxcbiAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PiBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoYERpc2NvdmVyeSB0aW1lZCBvdXQgWyR7dXJsfV1gKSksIHRpbWVvdXQpKVxuICAgIF0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIFske3VybH1dIFske3Jlc3BvbnNlLnN0YXR1c31dYCk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLmJvZHkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCB3aXRoIG5vIGRhdGEgWyR7dXJsfV1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc1N0cmluZyA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhc1N0cmluZy5zcGxpdCgnLCcpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gbmV3IEVuZFBvaW50KGVuZFBvaW50LCB0aW1lb3V0KSk7XG4gIH1cblxuICBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCh0aW1lb3V0OiBudW1iZXIgPSBkZWZhdWx0VGltZW91dCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSBEaXNjb3ZlcnlVcmkuYnVpbGREaXNjb3ZlcnlVcmwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhd2FpdCB0aGlzLmRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKSwgdGltZW91dCk7XG4gICAgbGV0IGZhaWxlZFJlcXVlc3RzID0gMDtcbiAgICBjb25zdCBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChmYWlsZWRSZXF1ZXN0cyA+PSBlbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIHJlamVjdChgRGlzY292ZXJ5IG9mIFske2VuZFBvaW50cy5sZW5ndGh9XSBlbmRwb2ludHMgZnJvbSBbJHt1cmx9XSBmYWlsZWQsIHByZXZlbnRpbmcgaXQgZnJvbSBjb21wbGV0aW5nYCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgZW5kUG9pbnQgPSBhd2FpdCBQcm9taXNlLnJhY2UoZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBlbmRQb2ludFxuICAgICAgLnBpbmcoKVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICB0aGlzLl9sb2dnZXIud2FybignRmFpbGVkIHRvIHBpbmcgZW5kIHBvaW50IFslc10nLCBlbmRQb2ludCwgZSk7XG5cbiAgICAgICAgZmFpbGVkUmVxdWVzdHMrKztcblxuICAgICAgICByZXR1cm4gcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQoKTtcbiAgICAgIH0pXG4gICAgICAudGhlbih0aW1lID0+IHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJlZCBlbmQgcG9pbnQgWyVzXSB3aXRoIHRpbWUgWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCksIHRpbWUpO1xuICAgICAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgICAgIHJ1bnRpbWU6IChub3cgLSBTREsucGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWUgfHwgMH0sXG4gICAgICAgICAgcmVzb3VyY2U6IGVuZFBvaW50LnRvU3RyaW5nKCksXG4gICAgICAgICAga2luZDogJ3BpbmcnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlbmRQb2ludDtcbiAgICAgIH0pKSk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuaW1wb3J0IHtkZWZhdWx0RGlzY292ZXJ5VXJpfSBmcm9tICcuLi9kZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeVVyaSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kaXNjb3ZlcnlVcmk6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oZGVmYXVsdERpc2NvdmVyeVVyaSk7XG5cbiAgc3RhdGljIGdldCB1cmkoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gRGlzY292ZXJ5VXJpLl9kaXNjb3ZlcnlVcmk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGREaXNjb3ZlcnlVcmwodXJpOiBVUkwpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJpLnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IHNka1ZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGNvbnN0IGludGVudGlvbnMgPSBQYXJhbWV0ZXJzLmRpc2NvdmVyeVBhcmFtZXRlcnMuaW50ZW50aW9ucztcblxuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd2ZXJzaW9uJywgc2RrVmVyc2lvbik7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2ludGVudGlvbnMnLCBpbnRlbnRpb25zKTtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnXycsIGAke0RhdGUubm93KCl9YCk7XG5cbiAgICBpZiAodXJsLnBhdGhuYW1lID09PSAnLycpIHtcbiAgICAgIHVybC5wYXRobmFtZSA9ICcvcGNhc3QvZW5kUG9pbnRzJztcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5VXJpIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuaW1wb3J0IHtcbiAgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZSxcbiAgSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QsXG4gIElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0XG59IGZyb20gJy4uL2FwaS9TdWJzY3JpYmUnO1xuaW1wb3J0IHtJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0LCBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZX0gZnJvbSAnLi4vYXBpL1NldFJlbW90ZURlc2NyaXB0aW9uJztcbmltcG9ydCB7SURlc3Ryb3lTdHJlYW1SZXF1ZXN0LCBJRGVzdHJveVN0cmVhbVJlc3BvbnNlfSBmcm9tICcuLi9hcGkvRGVzdHJveVN0cmVhbSc7XG5pbXBvcnQge0lBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCwgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZX0gZnJvbSAnLi4vYXBpL0FkZEljZUNhbmRpZGF0ZXMnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGUsIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBCaXRyYXRlTW9kZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlTW9kZU1hcHBpbmcnO1xuaW1wb3J0IEJpdHJhdGVTdGF0ZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlU3RhdGVNYXBwaW5nJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCB7XG4gIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlLFxuICBJUHVibGlzaFdpdGhPZmZlclJlcXVlc3QsXG4gIElQdWJsaXNoV2l0aG91dE9mZmVyUmVxdWVzdCxcbiAgUHVibGlzaFN0YXR1c1xufSBmcm9tICcuLi9hcGkvUHVibGlzaCc7XG5cbmNvbnN0IGFwaVZlcnNpb24gPSA3O1xuXG5jbGFzcyBGZXRjaFRpbWVvdXRFcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZVN0YXR1cyA9ICdvaycgfCAnbm8tc3RyZWFtJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFJlbW92ZVRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgRGVzdHJveVN0cmVhbVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW0ge1xuICBzdHJlYW1JZDogc3RyaW5nO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiAnb2snO1xuICBzdHJlYW06IElTdHJlYW07XG4gIGxhZzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sge1xuICAocmVxdWVzdDogSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QgfCBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sge1xuICAocmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVPcHRpb25zID0ge1xuICBvblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnPzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ25vdC1mb3VuZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbn07XG5cbmludGVyZmFjZSBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzO1xuICBzZXNzaW9uRGVzY3JpcHRpb24/OiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5pbnRlcmZhY2UgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXM7XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXM7XG59XG5cbmludGVyZmFjZSBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5kUG9pbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRW5kUG9pbnQnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXJpOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVvdXREdXJhdGlvbjogTWlsbGlzZWNvbmQ7XG4gIHByaXZhdGUgX3JvdW5kVHJpcFRpbWU6IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IodXJpOiBzdHJpbmcsIHRpbWVvdXQ6IE1pbGxpc2Vjb25kKSB7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICAgIHRoaXMuX3RpbWVvdXREdXJhdGlvbiA9IHRpbWVvdXQ7XG5cbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5kIHBvaW50IHJlcXVpcmVzIGEgdGltZW91dGApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBFbmRQb2ludFt1cmk9JHt0aGlzLl91cml9XWA7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGluZygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRQaW5nVXJsKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgIH07XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZldGNoV2l0aFRpbWVvdXQodXJsLCByZXF1ZXN0T3B0aW9ucywgdGhpcy5fdGltZW91dER1cmF0aW9uKVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRmV0Y2hUaW1lb3V0RXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBpbmcgdGltZWQgb3V0IFske3VybH1dYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQaW5nIGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIHRoaXMuX3JvdW5kVHJpcFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnQ7XG5cbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdWJzY3JpYmUodG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0IHwgbnVsbCwgZmFpbHVyZUNvdW50OiBudW1iZXIsIG9wdGlvbnM6IFN1YnNjcmliZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8SVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHRlbmFuY3kgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS50ZW5hbmN5O1xuXG4gICAgaWYgKCF0ZW5hbmN5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ3VuYXV0aG9yaXplZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3RlbmFuY3ksICdzdHJlYW0nLCAnc3Vic2NyaWJlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBjbGllbnRWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBsZXQgcmVxdWVzdEJvZHk6IElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0IHwgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Q7XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPy4ocmVxdWVzdEJvZHkpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHJlcXVlc3RCb2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZmV0Y2hSZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfTtcbiAgICBjb25zdCBodHRwUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVGZXRjaFJlcXVlc3QodXJsLCBmZXRjaFJlcXVlc3RPcHRpb25zLCAnc3Vic2NyaWJlJyk7XG4gICAgY29uc3QganNvblJlc3BvbnNlQm9keSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlPihodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5oYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQoanNvblJlc3BvbnNlQm9keT8uc3RyZWFtUmVzcG9uc2VDb250ZXh0KTtcblxuICAgIGNvbnN0IHN0YXR1czogU3Vic2NyaWJlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtzdGF0dXN9O1xuXG4gICAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz8uKHJlc3BvbnNlKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIGlmICghanNvblJlc3BvbnNlQm9keSkge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0ID0ge3N0YXR1czogJ2ZhaWxlZCd9O1xuXG4gICAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz8uKHJlc3BvbnNlKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZSA9IHRoaXMubm9ybWFsaXplU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeSwganNvblJlc3BvbnNlQm9keSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzdWJzY3JpYmUgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihzdWJzY3JpYmVSZXNwb25zZSk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHVibGlzaChuYW1lOiBzdHJpbmcsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyKTogUHJvbWlzZTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3B1Ymxpc2gnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgYm9keVdpdGhPZmZlcjogSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhPZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBib2R5V2l0aG91dE9mZmVyOiBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aG91dE9mZmVyKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH07XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ3B1Ymxpc2gnKTtcbiAgICBjb25zdCBqc29uUmVzcG9uc2VCb2R5ID0gYXdhaXQgdGhpcy5wYXJzZUpzb25Cb2R5PElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlPihodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5oYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQoanNvblJlc3BvbnNlQm9keT8uc3RyZWFtUmVzcG9uc2VDb250ZXh0KTtcblxuICAgIGNvbnN0IHN0YXR1czogUHVibGlzaFN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGlmICghanNvblJlc3BvbnNlQm9keSkge1xuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcHVibGlzaFJlc3BvbnNlID0gdGhpcy5ub3JtYWxpemVQdWJsaXNoUmVzcG9uc2UodGVuYW5jeSwganNvblJlc3BvbnNlQm9keSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBwdWJsaXNoIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHB1Ymxpc2hSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gcHVibGlzaFJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbTogSVN0cmVhbSwgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc2NyaXB0aW9uJywgJ3JlbW90ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgdHlwZTogc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgIHNkcDogc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH07XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ3NldCByZW1vdGUgZGVzY3JpcHRpb24nKTtcbiAgICBjb25zdCBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbihodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxpbWl0Qml0cmF0ZShcbiAgICBzdHJlYW06IElTdHJlYW0sXG4gICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXIsXG4gICAgYml0cmF0ZUluQml0c1BlclNlY29uZDogQml0c1BlclNlY29uZCxcbiAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSxcbiAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUsXG4gICk6IFByb21pc2U8SVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdiaXRyYXRlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgYml0cmF0ZUluQml0c1BlclNlY29uZCxcbiAgICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlKGJpdHJhdGVTdGF0ZSksXG4gICAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlKVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH07XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ3NldCBsaW1pdCBiaXRyYXRlJyk7XG4gICAgY29uc3Qgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IHNldCBsaW1pdCBiaXRyYXRlIHJlc3BvbnNlIFslc10gaW4gWyVzXSBtcycsIHN0YXR1cywgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4ge3N0YXR1c307XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW06IElTdHJlYW0sIGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdLCBkaXNjb3ZlcnlDb21wbGV0ZWQ6IGJvb2xlYW4sIG9wdGlvbnM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdpY2UnLCAnY2FuZGlkYXRlcyddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGNhbmRpZGF0ZXMsXG4gICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQsXG4gICAgICBvcHRpb25zXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZmV0Y2hSZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfTtcbiAgICBjb25zdCBodHRwUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVGZXRjaFJlcXVlc3QodXJsLCBmZXRjaFJlcXVlc3RPcHRpb25zLCAnYWRkIGljZSBjYW5kaWRhdGVzJyk7XG4gICAgY29uc3Qgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlcyhodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBhZGQgSUNFIGNhbmRpZGF0ZXMgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzdHJveVN0cmVhbShzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcbiAgICBjb25zdCBmZXRjaFJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGh0dHBSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZUZldGNoUmVxdWVzdCh1cmwsIGZldGNoUmVxdWVzdE9wdGlvbnMsICdkZXN0cm95IHN0cmVhbScpO1xuICAgIGNvbnN0IHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW0oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgZGVzdHJveSBzdHJlYW0gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgZGVzdHJveVN0cmVhbVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzdHJveVN0cmVhbU9uVW5tb3VudChzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VuZEJlYWNvbiA9IEdsb2JhbFNjb3BlLnZhbHVlLnNlbmRCZWFjb247XG5cbiAgICBpZiAoIXNlbmRCZWFjb24pIHtcbiAgICAgIHRoaXMuZGVzdHJveVN0cmVhbShzdHJlYW0sIHJlYXNvbikuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gb24gdW5tb3VudCcsIGVycik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBzZW5kQmVhY29uKHVybCwgZm9ybURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFdpdGhUaW1lb3V0KHVybDogc3RyaW5nLCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQsIHRpbWVvdXREdXJhdGlvbjogTWlsbGlzZWNvbmQpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5BYm9ydENvbnRyb2xsZXIoKTtcbiAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIC4uLnJlcXVlc3RPcHRpb25zLFxuICAgICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29udHJvbGxlci5hYm9ydCgpO1xuXG4gICAgICAgICAgICByZWplY3QobmV3IEZldGNoVGltZW91dEVycm9yKGBUaW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgfSwgdGltZW91dER1cmF0aW9uKTtcbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAodGltZW91dCkge1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlRmV0Y2hSZXF1ZXN0KHVybDogc3RyaW5nLCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQsIG9wZXJhdGlvbjogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5mZXRjaFdpdGhUaW1lb3V0KHVybCwgcmVxdWVzdE9wdGlvbnMsIHRoaXMuX3RpbWVvdXREdXJhdGlvbik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYEZhaWxlZCB0byAke29wZXJhdGlvbn0gWyR7cmVxdWVzdE9wdGlvbnMubWV0aG9kIHx8ICdHRVQnfV0gWyR7dXJsfV1gLCBlcnIgYXMgRXJyb3IpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogZXJyIGluc3RhbmNlb2YgRmV0Y2hUaW1lb3V0RXJyb3IgPyA0MDggOiA1MDB9IGFzIFJlc3BvbnNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRVcmwocGF0aDogc3RyaW5nW10pOiBVUkwge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBwYXRoQXNBcnJheSA9IHVyaS5wYXRobmFtZS5zcGxpdCgnLycpO1xuXG4gICAgcGF0aEFzQXJyYXkubGVuZ3RoID0gcGF0aEFzQXJyYXkubGVuZ3RoIC0gMTtcblxuICAgIHVyaS5wYXRobmFtZSA9IHBhdGhBc0FycmF5LmNvbmNhdCguLi5wYXRoKS5qb2luKCcvJyk7XG5cbiAgICByZXR1cm4gdXJpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBpbmdVcmwoKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmkgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHRoaXMuX3VyaSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3R5cGUnLCAnaHR0cCcpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCd2ZXJzaW9uJywgc2RrVmVyc2lvbik7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ2ludGVudGlvbnMnLCBpbnRlbnRpb25zKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnXycsIGAke0RhdGUubm93KCl9YCk7XG5cbiAgICByZXR1cm4gdXJpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBhcnNlSnNvbkJvZHk8VD4ocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBFeHBlY3RlZCBmb3IgcmVzcG9uc2VzIHdpdGhvdXQgYSBKU09OIGJvZHkgKHRpbWVvdXQsIGVtcHR5IGVycm9yIHJlc3BvbnNlcylcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQoY29udGV4dD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ3N0cmVhbSByZXNwb25zZSBjb250ZXh0IFslal0nLCBjb250ZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBQdWJsaXNoU3RhdHVzIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA2OlxuICAgICAgICByZXR1cm4gJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFN1YnNjcmliZVN0YXR1cyB7XG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyB7XG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IERlc3Ryb3lTdHJlYW1TdGF0dXMge1xuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeTogc3RyaW5nLCBkYXRhOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlKTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICAgIGNvbnN0IHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgc2hhcmVkU2VjcmV0LFxuICAgICAgbGFnLFxuICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlXG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtOiB7XG4gICAgICAgIHRlbmFuY3ksXG4gICAgICAgIHN0cmVhbUlkLFxuICAgICAgICBzaGFyZWRTZWNyZXRcbiAgICAgIH0sXG4gICAgICBsYWdcbiAgICB9O1xuXG4gICAgaWYgKHJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVB1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIGRhdGE6IElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlKTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0IHtcbiAgICBjb25zdCBwdWJsaXNoUmVzcG9uc2U6IElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQ6IGRhdGEuc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldDogZGF0YS5zaGFyZWRTZWNyZXRcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEucnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGlmIChkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgcmV0dXJuIHB1Ymxpc2hSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uID0ge2ljZVNlcnZlcnM6IFtdfTtcblxuICAgIGlmIChjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kgPSBjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPT09ICdudW1iZXInKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID0gY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICAgIHVybHM6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzLFxuICAgICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSA9IGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5O1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSA9IGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnRjQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24ocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5wYXJzZUpzb25Cb2R5PElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPihyZXNwb25zZSk7XG4gICAgY29uc3Qgc3RhdHVzID0gZGF0YSA/IGRhdGEuc3RhdHVzIDogdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhyZXNwb25zZSk7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0ID0ge3N0YXR1c307XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24gPSBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlcyhyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlPihyZXNwb25zZSk7XG4gICAgY29uc3Qgc3RhdHVzID0gZGF0YSA/IGRhdGEuc3RhdHVzIDogdGhpcy5tYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHJlc3BvbnNlKTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U6IElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLm9wdGlvbnMpIHtcbiAgICAgICAgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlLm9wdGlvbnMgPSBkYXRhLm9wdGlvbnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlPihyZXNwb25zZSk7XG4gICAgY29uc3Qgc3RhdHVzID0gZGF0YSA/IGRhdGEuc3RhdHVzIDogdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKHJlc3BvbnNlKTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtOiBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCA9IHtzdGF0dXN9O1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uLy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW19IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IHtJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNQdWJsaXNoTW9uaXRvcic7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTZXNzaW9uVGVsZW1ldHJ5IGZyb20gJy4uLy4uL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnknO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcblxuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCBUb2tlbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9Ub2tlbkNvbnRleHQnO1xuaW1wb3J0IFB1Ymxpc2hlckNvbnRleHQgZnJvbSAnLi9QdWJsaXNoZXJDb250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQsIHtQZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RhdGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RhdGVDb250ZXh0JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IFJlYWxUaW1lUHVibGlzaGVyIGZyb20gJy4vUmVhbFRpbWVQdWJsaXNoZXInO1xuXG5jb25zdCBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24gPSAnY2xpZW50OnRlcm1pbmF0aW9uJztcbmNvbnN0IGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMzAwMDtcbmNvbnN0IHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDE1MDAwO1xuY29uc3Qgb25lSG91ckluTWlsbGlzZWNvbmRzID0gMzYwMCAqIDEwMDA7XG5jb25zdCBtYXhSZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsSW5NaWxsaXNlY29uZHMgPSAyICogb25lSG91ckluTWlsbGlzZWNvbmRzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoZXIgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQdWJsaXNoZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5Db250ZXh0OiBUb2tlbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3B1Ymxpc2hlckNvbnRleHQ6IFB1Ymxpc2hlckNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZUNvbnRleHQ6IFN0YXRlQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3B1Ymxpc2hlclN0YXJ0VGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuOiBSZWFkT25seVN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb246IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGF0ZTogUmVhZE9ubHlTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbkV4cGlyaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0aG9yaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU9ubGluZTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUxvYWRpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQdWJsaXNoaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhbmRieTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0b3BwZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlGYWlsdXJlQ291bnQ6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUVuZFBvaW50OiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UnRjU3RhdGlzdGljczogUmVhZE9ubHlTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU1lZGlhU3RyZWFtOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPjtcblxuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25UZWxlbWV0cnk6IFNlc3Npb25UZWxlbWV0cnk7XG5cbiAgY29uc3RydWN0b3IobWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtLCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbmFtZT86IHN0cmluZykge1xuICAgIGNvbnN0IHBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnM6IFBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMgPSB7Zm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDogU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnR9O1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0ID0gbmV3IFRva2VuQ29udGV4dCh0b2tlbik7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dCA9IG5ldyBQdWJsaXNoZXJDb250ZXh0KG5hbWUpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IG5ldyBQZWVyQ29ubmVjdGlvbkNvbnRleHQocGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyk7XG4gICAgdGhpcy5fc3RhdGVDb250ZXh0ID0gbmV3IFN0YXRlQ29udGV4dCgpO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3JlYWRPbmx5VG9rZW4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuKTtcbiAgICB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24pO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RhdGUgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlKTtcbiAgICB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXV0aG9yaXplZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlPbmxpbmUgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQub25saW5lKTtcbiAgICB0aGlzLl9yZWFkT25seUxvYWRpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlQdWJsaXNoaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RhbmRieSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFuZGJ5KTtcbiAgICB0aGlzLl9yZWFkT25seVN0b3BwZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RvcHBlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludCk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbSk7XG4gICAgdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnJ0Y1N0YXRpc3RpY3MpO1xuICAgIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtKTtcblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG1lZGlhU3RyZWFtO1xuXG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpO1xuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuICAgIHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkgPSBuZXcgU2Vzc2lvblRlbGVtZXRyeShTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fc2Vzc2lvblRlbGVtZXRyeSk7XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KSB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUgIT09IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgfSwgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMpO1xuICAgICAgfSkpO1xuXG4gICAgY29uc3QgZGVzdHJveVN0cmVhbU9uVW5tb3VudCA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlLmRlc3Ryb3lTdHJlYW1PblVubW91bnQodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUsICdjbGllbnQ6dGVybWluYXRpb24tb24td2luZG93LXVubG9hZCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCB0b2tlbigpOiBFbmNvZGVkRWRnZVRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUgPSB0b2tlbjtcbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpO1xuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgcGVlckNvbm5lY3Rpb24oKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBSZWFkT25seVN1YmplY3Q8UHVibGlzaGVyU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGF0ZTtcbiAgfVxuXG4gIGdldCB0b2tlbkV4cGlyaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZztcbiAgfVxuXG4gIGdldCBhdXRob3JpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZDtcbiAgfVxuXG4gIGdldCBvbmxpbmUoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlPbmxpbmU7XG4gIH1cblxuICBnZXQgbG9hZGluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxvYWRpbmc7XG4gIH1cblxuICBnZXQgcHVibGlzaGluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVB1Ymxpc2hpbmc7XG4gIH1cblxuICBnZXQgc3RhbmRieSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YW5kYnk7XG4gIH1cblxuICBnZXQgc3RvcHBlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0b3BwZWQ7XG4gIH1cblxuICBnZXQgZmFpbHVyZUNvdW50KCk6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQ7XG4gIH1cblxuICBnZXQgZW5kUG9pbnQoKTogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUVuZFBvaW50O1xuICB9XG5cbiAgZ2V0IHN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdHJlYW07XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZDtcbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWNzKCk6IFJlYWRPbmx5U3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UnRjU3RhdGlzdGljcztcbiAgfVxuXG4gIGdldCBtZWRpYVN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW07XG4gIH1cblxuICBhc3luYyBzdG9wKHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG5cbiAgICAgICAgcmVzb2x2ZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcuc3Vic2NyaWJlKGlzU3RhcnRpbmcgPT4ge1xuICAgICAgICBpZiAoIWlzU3RhcnRpbmcpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTdG9wKHJlYXNvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKHJlYXNvbik7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUuY2xvc2UoKTtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlN0b3BwZWQ7XG4gIH1cblxuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3AoJ2NsaWVudDpjaGFubmVsLWRpc3Bvc2UnKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0VXJpKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogVVJMIHtcbiAgICBjb25zdCB1cmwgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS51cmk7XG5cbiAgICBpZiAodXJsKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZGlzY292ZXIgVVJJIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgc3RhcnQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nO1xuICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OnN0YXJ0Jyk7XG5cbiAgICBjb25zdCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiA9IHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZTtcbiAgICBjb25zdCBsaXN0ZW5PblN0cmVhbVNldHVwID0gdGhpcy5fc2Vzc2lvblRlbGVtZXRyeS5saXN0ZW5PblN0cmVhbVNldHVwKCk7XG5cbiAgICBpZiAoIUVkZ2VBdXRoUGFyc2VyLmlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgY29uc3QgdXJpID0gdGhpcy5nZXRVcmkodG9rZW4pO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZSA9PT0gUHVibGlzaGVyU3RhdGUuRXJyb3IgfHwgc3RhdGUgPT09IFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmcpIHtcbiAgICAgICAgICBEaXNjb3ZlcnkuY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpOiB2b2lkID0+IHtcbiAgICAgIC8vIE5lZWQgdG8gc2V0IGlzU3RhcnRpbmcgdG8gZmFsc2UgYW5kIGNhbGwgaGFuZGxlU3RyZWFtRmFpbHVyZSBpZiBzdHJlYW0gbW9uaXRvcnMgZm91bmQgYW4gaXNzdWVcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpKTtcbiAgICB9KTtcbiAgICBjb25zdCBzdHJlYW1QdWJsaXNoZXIgPSBuZXcgUmVhbFRpbWVQdWJsaXNoZXIodGhpcy5fcHVibGlzaGVyQ29udGV4dCwgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIHN0cmVhbVB1Ymxpc2hlci5zdGFydChcbiAgICAgIHVyaSxcbiAgICAgIHRva2VuLFxuICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLmZhaWwoKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQub25saW5lLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6Y2xlYW51cC1hZnRlci1mYWlsZWQtc2V0dXAnKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBwdWJsaXNoaW5nJywgZSk7XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID09PSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nIHx8ICFTREsuYXV0b21hdGljUmV0cnlPbkZhaWx1cmUpIHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMgPSAwO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGltZW91dElkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlJywgZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgdGhpcy5nZXRSZXRyeUludGVydmFsKCkpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gIH1cblxuICBzZXRNZWRpYVN0cmVhbShtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBtZWRpYVN0cmVhbTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUpIHtcbiAgICAgIG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2gobWVkaWFUcmFjayA9PiB7XG4gICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZT8uZ2V0U2VuZGVycygpLmZvckVhY2goc2VuZGVyID0+IHtcbiAgICAgICAgICBpZiAobWVkaWFUcmFjay5raW5kID09PSBzZW5kZXI/LnRyYWNrPy5raW5kICYmIG1lZGlhVHJhY2suaWQgIT09IHNlbmRlci50cmFjay5pZCkge1xuICAgICAgICAgICAgc2VuZGVyLnJlcGxhY2VUcmFjayhtZWRpYVRyYWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXRyeUludGVydmFsKCk6IG51bWJlciB7XG4gICAgc3dpdGNoICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk9mZmxpbmU6XG4gICAgICAgIHJldHVybiBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHM7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgLy8gRmlyc3QgYW5kIHNlY29uZCBhdHRlbXB0IGZhc3QsIGFmdGVyIHRoYXQgZXhwb25lbnRpYWwgd2l0aCBiYWNrb2ZmIGludGVydmFsXG4gICAgICAgIHJldHVybiB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlU3RyZWFtRmFpbHVyZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgcmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCA9IDA7XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuT2ZmbGluZTpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIGlmICghdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzKSB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwgPSBEYXRlLm5vdygpIC0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzO1xuXG4gICAgICAgIGlmIChtYXhSZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsSW5NaWxsaXNlY29uZHMgPD0gcmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCkge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgc3RvcHBlZCB3aXRoIHN0YXRlIFslc10gWyVzXSBhZnRlciBleGNlZWRpbmcgdGltZW91dCcsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUsIFB1Ymxpc2hlclN0YXRlW3RoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZXRyeSBzdGFydCB3aXRoIGluaXRpYWwgc3RhdGUgWyVzXSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSwgUHVibGlzaGVyU3RhdGVbdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgdW5hdXRob3JpemVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGdlbyByZXN0cmljdGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGdlbyBibG9ja2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdG9wcGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHN0b3BwZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBwdWJsaXNoaW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGluaXRpYWxpemluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCBkdWUgdG8gdW5zdXBwb3J0ZWQgZmVhdHVyZSwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkIGR1ZSB0byBjaGFubmVsIG5vdCBmb3VuZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCBkdWUgdG8gY29uZmlndXJhdGlvbiBlcnJvciwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5VcFJlc291cmNlcyhyZWFzb246IHN0cmluZyA9IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbik6IHZvaWQge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5kaXNwb3NlUGVlckNvbm5lY3Rpb24oKTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RvcHBlZC52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFuZGJ5LnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbSh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSwgcmVhc29uKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBEZXN0cm95ZWQgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbScsIHRoaXMuc3RyZWFtSWQsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBQdWJsaXNoZXJTdGF0ZSBmcm9tICcuL1B1Ymxpc2hlclN0YXRlJztcbmltcG9ydCBFbmRQb2ludCwge1xuICBJU3RyZWFtLFxuICBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzLFxuICBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1xufSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IFN0cmluZ3MgZnJvbSAnLi4vLi4vbGFuZy9TdHJpbmdzJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCB7SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjUHVibGlzaE1vbml0b3InO1xuaW1wb3J0IHtQdWJsaXNoU3RhdHVzfSBmcm9tICcuLi9hcGkvUHVibGlzaCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1Ymxpc2hlckNvbnRleHQge1xuICBwdWJsaXNoZXJJbml0aWFsaXphdGlvbjogRGF0ZTtcbiAgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICBwdWJsaXNoZXJEaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHN0YXRlOiBTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPjtcbiAgYXV0aG9yaXplZDogU3ViamVjdDxib29sZWFuPjtcbiAgb25saW5lOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBsb2FkaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwdWJsaXNoaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdGFuZGJ5OiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdG9wcGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBmYWlsdXJlQ291bnQ6IFN1YmplY3Q8bnVtYmVyPjtcbiAgZW5kUG9pbnQ6IFN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgc3RyZWFtOiBTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcnRjU3RhdGlzdGljczogU3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPjtcbiAgY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0OiBudW1iZXI7XG4gIHN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5wdWJsaXNoZXJEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMucHVibGlzaGVySW5pdGlhbGl6YXRpb24gPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgU3ViamVjdDxQdWJsaXNoZXJTdGF0ZT4oUHVibGlzaGVyU3RhdGUuSW5pdGlhbGl6aW5nKTtcbiAgICB0aGlzLmF1dGhvcml6ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLm9ubGluZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMubG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnB1Ymxpc2hpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdGFuZGJ5ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RvcHBlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgdGhpcy5lbmRQb2ludCA9IG5ldyBTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5zdHJlYW0gPSBuZXcgU3ViamVjdDxJU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5ydGNTdGF0aXN0aWNzID0gbmV3IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSAwO1xuICAgIHRoaXMubmFtZSA9IG5hbWUgJiYgbmFtZS5sZW5ndGggPyBuYW1lIDogdGhpcy5nZW5lcmF0ZVNjcmVlbk5hbWUoKTtcbiAgICB0aGlzLnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMgPSAwO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtLnN0cmVhbUlkO1xuICB9XG5cbiAgYXBwbHlQdWJsaXNoU3RhdHVzKHN0YXR1czogUHVibGlzaFN0YXR1cyk6IHZvaWQge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHRoaXMuYXBwbHlVbmF1dGhvcml6ZWQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICB0aGlzLmFwcGx5Tm90Rm91bmQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmFwcGx5VW5oYW5kbGVkRXJyb3IoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgYXBwbHlTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgdGhpcy5hcHBseVVuYXV0aG9yaXplZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuYXBwbHlOb3RGb3VuZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhcHBseUFkZEljZUNhbmRpZGF0ZXNTdGF0dXMoc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgdGhpcy5hcHBseVVuYXV0aG9yaXplZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuYXBwbHlOb3RGb3VuZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBtYXBQdWJsaXNoU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzOiBQdWJsaXNoU3RhdHVzKTogUHVibGlzaGVyU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDtcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkdlb1Jlc3RyaWN0ZWQ7XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5HZW9CbG9ja2VkO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCc6XG4gICAgICBjYXNlICdmb3JiaWRkZW4tdGFnJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlVbmhhbmRsZWRFcnJvcigpOiB2b2lkIHtcbiAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuICAgIHRoaXMucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG5cbiAgYXBwbHlVbmF1dGhvcml6ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgIHRoaXMucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG5cbiAgYXBwbHlOb3RGb3VuZCgpOiB2b2lkIHtcbiAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlU2NyZWVuTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmdzLnJhbmRvbSgxMik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gUHVibGlzaGVyU3RhdGUge1xuICBJbml0aWFsaXppbmcgPSAwLFxuICBPZmZsaW5lID0gMSxcbiAgU3RhcnRpbmcgPSAyLFxuICBQdWJsaXNoaW5nID0gMyxcbiAgUmVjb3ZlcmluZyA9IDQsXG4gIFJlY29ubmVjdGluZyA9IDUsXG4gIFN0b3BwZWQgPSA2LFxuICBVbmF1dGhvcml6ZWQgPSA3LFxuICBHZW9SZXN0cmljdGVkID0gOCxcbiAgR2VvQmxvY2tlZCA9IDksXG4gIFVuc3VwcG9ydGVkRmVhdHVyZSA9IDEwLFxuICBOb3RGb3VuZCA9IDExLFxuICBDb25maWd1cmF0aW9uRXJyb3IgPSAxMixcbiAgVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yID0gMTMsXG4gIENvbm5lY3Rpb25FcnJvciA9IDE0LFxuICBDbGllbnRTdGFydEVycm9yID0gMTUsXG4gIEVycm9yID0gMTZcbn1cblxuZXhwb3J0IGRlZmF1bHQgUHVibGlzaGVyU3RhdGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuaW1wb3J0IFB1Ymxpc2hlciBmcm9tICcuL1B1Ymxpc2hlcic7XG5cbnR5cGUgQ3JlYXRlUHVibGlzaGVyT3B0aW9ucyA9IHtcbiAgbWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtO1xuICB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbjtcbiAgbmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1Ymxpc2hlcnMge1xuICBzdGF0aWMgY3JlYXRlUHVibGlzaGVyKG9wdGlvbnM6IENyZWF0ZVB1Ymxpc2hlck9wdGlvbnMpOiBQdWJsaXNoZXIge1xuICAgIGlmICghU0RLLmluaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBub3QgbG9hZGVkLicpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHVibGlzaGVyKG9wdGlvbnMubWVkaWFTdHJlYW0sIG9wdGlvbnMudG9rZW4sIG9wdGlvbnMubmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUHVibGlzaGVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cywgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBSdGNQdWJsaXNoTW9uaXRvciBmcm9tICcuLi8uLi9ydGMvUnRjUHVibGlzaE1vbml0b3InO1xuXG5pbXBvcnQgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyJztcbmltcG9ydCBQdWJsaXNoZXJTdGF0ZSBmcm9tICcuL1B1Ymxpc2hlclN0YXRlJztcbmltcG9ydCBQdWJsaXNoZXJDb250ZXh0IGZyb20gJy4vUHVibGlzaGVyQ29udGV4dCc7XG5cbmNvbnN0IGljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsID0gMTAwO1xuY29uc3Qgc29mdFJlc3RhcnRJbnRlcnZhbCA9IDEwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lUHVibGlzaGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1JlYWxUaW1lUHVibGlzaGVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3B1Ymxpc2hlckNvbnRleHQ6IFB1Ymxpc2hlckNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9oYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIGNvbnN0cnVjdG9yKHB1Ymxpc2hlckNvbnRleHQ6IFB1Ymxpc2hlckNvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dCA9IHB1Ymxpc2hlckNvbnRleHQ7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gcGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICAgIHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUgPSBoYW5kbGVTdHJlYW1GYWlsdXJlO1xuICB9XG5cbiAgc3RhcnQodXJpOiBVUkwsIHRva2VuOiBzdHJpbmcsIGxpc3Rlbk9uU3RyZWFtU2V0dXA6IFN0cmVhbVNldHVwTGlzdGVuZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIUdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvcklzT25MaW5lKSB7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuT2ZmbGluZTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFtZWRpYVN0cmVhbSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdQdWJsaXNoIGZhaWxlZCBubyBtZWRpYSBzdHJlYW0gcHJvdmlkZWQnKTtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZWRpYVRyYWNrcyA9IG1lZGlhU3RyZWFtLmdldFRyYWNrcygpO1xuICAgIGNvbnN0IHRyYWNrS2luZHMgPSBtZWRpYVRyYWNrcy5yZWR1Y2UoKGFjY3VtdWxhdG9yOiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10sIHRyYWNrKSA9PiB7XG4gICAgICBpZiAodHJhY2sua2luZCA9PT0gJ2F1ZGlvJyB8fCB0cmFjay5raW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgIGFjY3VtdWxhdG9yLnB1c2godHJhY2sua2luZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBUcmFjayBraW5kIGlzIG5vdCBzdXBwb3J0ZWQnLCB0cmFjay5raW5kKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpLFxuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoJ3NlbmRvbmx5JywgdHJhY2tLaW5kcylcbiAgICAgICAgLnRoZW4oKHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn0pID0+IHtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2NhbE9mZmVyLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb25cbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgIF0pXG4gICAgICAudGhlbigoW2VuZFBvaW50LCB7bG9jYWxPZmZlciwgcGVlckNvbm5lY3Rpb259XSkgPT4ge1xuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm9ubGluZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBlbmRQb2ludDtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3RpbmcgdG8gWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnTG9jYWwgb2ZmZXI6XFxuJyArIGxvY2FsT2ZmZXIuc2RwKTtcblxuICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHwgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPiAwKSB7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LmRpc3Bvc2VQZWVyQ29ubmVjdGlvbigpO1xuXG4gICAgICAgICAgcmV0dXJuIGVuZFBvaW50LnB1Ymxpc2godGhpcy5fcHVibGlzaGVyQ29udGV4dC5uYW1lLCB0b2tlbiwgbnVsbCwgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50LnB1Ymxpc2godGhpcy5fcHVibGlzaGVyQ29udGV4dC5uYW1lLCB0b2tlbiwgbG9jYWxPZmZlciwgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgY29uc3Qge3N0YXR1c30gPSByZXNwb25zZTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5tYXBQdWJsaXNoU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5UHVibGlzaFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICdbJXNdIFB1Ymxpc2ggZmFpbGVkIHdpdGggc3RhdHVzIFslc10nLFxuICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7c3RyZWFtLCBydGNDb25maWd1cmF0aW9uLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2V9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgPSBzdHJlYW07XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICdbJXNdIFB1Ymxpc2ggY29tcGxldGVkIFslc10gWyVqXSBbJWpdIFslal0gWyVqXScsXG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVB1Ymxpc2hTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcHBseVJ0Y0NvbmZpZ3VyYXRpb24odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlLCBydGNDb25maWd1cmF0aW9uIGFzIFJUQ0NvbmZpZ3VyYXRpb24pXG4gICAgICAgICAgLnRoZW4ocGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICAgICAgbGV0IHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0OiB1bmRlZmluZWQgfCBudW1iZXI7XG4gICAgICAgICAgICBsZXQgY2FuY2VsRGlzY292ZXJ5ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgZGlzY292ZXJ5Q29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSA9IFtdO1xuXG4gICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uYWRkU3RyZWFtKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSBhcyBNZWRpYVN0cmVhbSk7XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIVNESy5zZW5kTG9jYWxDYW5kaWRhdGVzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGUuY2FuZGlkYXRlICYmIGUuY2FuZGlkYXRlLmNhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaChlLmNhbmRpZGF0ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlzY292ZXJ5Q29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBzdWJtaXRDYW5kaWRhdGVzVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWU/LmFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtLCBjYW5kaWRhdGVzLCBkaXNjb3ZlcnlDb21wbGV0ZWQpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7c3RhdHVzLCBvcHRpb25zfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5tYXBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlBZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gZmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucz8uaW5jbHVkZXMoJ2NhbmNlbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxEaXNjb3ZlcnkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEFkZGVkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10gYW5kIG9wdGlvbnMgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHN0YXR1cywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHBlZXIgY29ubmVjdGlvbiBmYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgcmV0cnlDYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBzdG9wIG5vcm1hbGx5IHRoZSBwZWVyIGNvbm5lY3Rpb24gaXMgdW5yZWdpc3RlcmVkIGZpcnN0LlxuICAgICAgICAgICAgICAgIC8vIFRodXMgYW55dGltZSB3ZSBzZWUgYSBjbG9zZWQgcGVlciBjb25uZWN0aW9uIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGl0IGlzIGFuIGVycm9yLlxuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIHN3aXRjaCAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tpbmcnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbXBsZXRlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29ubmVjdGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICduZXcnOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZGlzY29ubmVjdGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCB0cnlpbmcgdG8gcmVjb25uZWN0JywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnY2xvc2VkJzpcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgcmV0cnlpbmcgdG8gY29ubmVjdCcsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlIGFzIG5ldmVyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBhbnN3ZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbj8uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIoe1xuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogZmFsc2VcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oYW5zd2VyID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgYW5zd2VyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBhbnN3ZXIuc2RwKTtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoIWVuZFBvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24sIEVuZFBvaW50IGlzIG5vdCBzZXQnKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZFBvaW50LnNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbSwgYW5zd2VyKTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKCh7c3RhdHVzLCBzZXNzaW9uRGVzY3JpcHRpb259KSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5tYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2Vzc2lvbkRlc2NyaXB0aW9uPy5zZHApO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb24gYXMgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5zdWNjZXNzKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZykge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nO1xuXG4gICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjUHVibGlzaE1vbml0b3IgPSBuZXcgUnRjUHVibGlzaE1vbml0b3IoXG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZT8ucm91bmRUcmlwVGltZSA/IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUucm91bmRUcmlwVGltZSAvIDQgOiAwLFxuICAgICAgICAgICAgICAgIFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuaXNGb3JlZ3JvdW5kXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQocnRjUHVibGlzaE1vbml0b3IpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSBydGNQdWJsaXNoTW9uaXRvci5ydGNTdGF0aXN0aWMuc3Vic2NyaWJlKHN0YXRpc3RpY3MgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucnRjU3RhdGlzdGljcy52YWx1ZSA9IHN0YXRpc3RpY3M7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFwcGx5UnRjQ29uZmlndXJhdGlvbihcbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsLFxuICAgIHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIGlmICghb3B0aW9uYWxQZWVyQ29ubmVjdGlvbikge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbiA9IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRydW5jYXRlSWNlU2VydmVycyhydGNDb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuIFNESy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUuY3JlYXRlUGVlckNvbm5lY3Rpb24ocnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UnRjQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLm9wdGlvbmFsUGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgLi4ucnRjQ29uZmlndXJhdGlvblxuICAgIH07XG5cbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24obmV3UnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICByZXR1cm4gb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGlmIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlJlY29ubmVjdGluZztcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA8IFNESy5tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIHx8ICFTREsuYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cysrO1xuXG4gICAgICBjb25zdCBpc0NsaWVudE9mZmVyRmxvdyA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy50eXBlID09PSAnb2ZmZXInO1xuXG4gICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIWlzQ2xpZW50T2ZmZXJGbG93XG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgIH0sIHNvZnRSZXN0YXJ0SW50ZXJ2YWwpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dChyZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQpKSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmVjb25uZWN0aW5nIHBlZXIgY29ubmVjdGlvbiBieSByZXN0YXJ0aW5nIElDRScpO1xuXG4gICAgICBjb25zdCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHtpY2VSZXN0YXJ0OiB0cnVlfSkudGhlbihvZmZlciA9PiB7XG4gICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihjdXJyZW50TG9jYWxEZXNjcmlwdGlvbilcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2Rpc2Nvbm5lY3RlZCcgfHwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnZmFpbGVkJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSwgc29mdFJlc3RhcnRJbnRlcnZhbCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQocmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0KSkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbicsIGUpO1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGFmdGVyIFslc10gYXR0ZW1wdHMsIHBlcmZvcm1pbmcgZnVsbCByZWNvdmVyeScsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgcmV0cnlDYWxsYmFjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMpOiBQdWJsaXNoZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwQWRkSWNlQ2FuZGlkYXRlc1N0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyk6IFB1Ymxpc2hlclN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZTtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ7XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19CVUlMRF9WRVJTSU9OX186IHN0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVyc2lvbk1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBfZGVmYXVsdFZlcnNpb24gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgc3RhdGljIGdldCBzZGtWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBfX0JVSUxEX1ZFUlNJT05fXztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZlcnNpb247XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgVGVsZW1ldHJ5U2VydmljZSBmcm9tICcuL1RlbGVtZXRyeVNlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuLi9sb2dnZXIvSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5QXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWxlbWV0cnlTZXJ2aWNlOiBUZWxlbWV0cnlTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZW5hbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeTtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZDtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZDtcbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlID0gbmV3IFRlbGVtZXRyeVNlcnZpY2UodGVsZW1ldHJ5Q29uZmlndXJhdGlvbik7XG4gIH1cblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdGVsZW1ldHJ5U2VydmljZS5wdXNoKGxvZ0xldmVsLCBtZXNzYWdlLCBjYXRlZ29yeSwgZGF0ZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiB7XG4gIHByaXZhdGUgX3VybCA9ICdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeS9sb2dzJztcbiAgcHJpdmF0ZSBfdGVuYW5jeTogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9zZXNzaW9uSWQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfZW52aXJvbm1lbnQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfcGFnZUxvYWRUaW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF90aHJlc2hvbGQgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IHRlbGVtZXRyeVVybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIHRlbGVtZXRyeVVybC5wYXRobmFtZSA9IHRlbGVtZXRyeVVybC5wYXRobmFtZSArICcvbG9ncyc7XG5cbiAgICB0aGlzLl91cmwgPSB0ZWxlbWV0cnlVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc2V0IHBhZ2VMb2FkVGltZShwYWdlTG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0IHRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBOdW1iZXJzIGZyb20gJy4uL2xhbmcvTnVtYmVycyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDgxOTI7XG5cbmludGVyZmFjZSBJTG9nSXRlbSB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIGxldmVsOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIF9sb2dzOiBBcnJheTxJTG9nSXRlbT4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1c2gobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW50aW1lID0gKHRpbWVzdGFtcC52YWx1ZU9mKCkgLSB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSkgLyAxMDAwO1xuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBsZXZlbDogTG9nZ2luZ0xldmVsW2xvZ0xldmVsXSxcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgcnVudGltZVxuICAgIH07XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHRoaXMuX2xvZ3MucHVzaChsb2dSZWNvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2dzLnVuc2hpZnQobG9nUmVjb3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9ncyhsb2dNZXNzYWdlczogQXJyYXk8SUxvZ0l0ZW0+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBsb2dNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9nc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9sb2dzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMDtcbiAgICBsZXQgc2l6ZU9mTG9nc1RvU2VuZCA9IDA7XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgZ2V0SXRlbVNpemUgPSAoaXRlbTogbnVtYmVyIHwgc3RyaW5nKSA9PiB0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicgPyBOdW1iZXJzLmNvdW50TnVtYmVyTGVuZ3RoKGl0ZW0pIDogaXRlbS5sZW5ndGg7XG4gICAgY29uc3QgZ2V0TG9nU2l6ZSA9IChsb2c6IElMb2dJdGVtKTogbnVtYmVyID0+IE9iamVjdC52YWx1ZXMobG9nKVxuICAgICAgLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbSA/IGdldEl0ZW1TaXplKGl0ZW0pIDogMCksIDApO1xuXG4gICAgd2hpbGUgKHRoaXMuX2xvZ3MubGVuZ3RoID4gbnVtYmVyT2ZMb2dzVG9TZW5kICYmIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIHNpemVPZkxvZ3NUb1NlbmQgPCByZXF1ZXN0U2l6ZUxpbWl0KSB7XG4gICAgICBzaXplT2ZMb2dzVG9TZW5kICs9IGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCsrO1xuICAgIH1cblxuICAgIGlmICghbnVtYmVyT2ZMb2dzVG9TZW5kKSB7XG4gICAgICB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZSA9IHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlLnN1YnN0cmluZygwLFxuICAgICAgICBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyAocmVxdWVzdFNpemVMaW1pdCAtIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSkpO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dNZXNzYWdlcyA9IHRoaXMuX2xvZ3Muc2xpY2UoMCwgbnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHRoaXMuX2xvZ3MgPSB0aGlzLl9sb2dzLnNsaWNlKG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTG9ncyhsb2dNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdXJhdGlvbnMge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kdXJhdGlvbjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGR1cmF0aW9uID0gMCkge1xuICAgIHRoaXMuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gIH1cblxuICB0b0lzb1N0cmluZygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9kdXJhdGlvbiA9PT0gMCkge1xuICAgICAgcmV0dXJuICdQMFMnO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSB0aGlzLl9kdXJhdGlvbiA8IDA7XG4gICAgY29uc3QgZHVyYXRpb24gPSBpc05lZ2F0aXZlID8gTWF0aC5hYnModGhpcy5fZHVyYXRpb24pIDogdGhpcy5fZHVyYXRpb247XG4gICAgbGV0IG9mZnNldCA9IE1hdGguZmxvb3IoZHVyYXRpb24pO1xuICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IG9mZnNldCAlIDEwMDA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDEwMDApO1xuXG4gICAgY29uc3Qgc2Vjb25kcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBtaW51dGVzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IGhvdXJzID0gb2Zmc2V0ICUgMjQ7XG4gICAgY29uc3QgcGFydHMgPSBbJ1BUJ107XG5cbiAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLScpO1xuICAgIH1cblxuICAgIGlmIChob3Vycykge1xuICAgICAgcGFydHMucHVzaChob3VycyArICdIJyk7XG4gICAgfVxuXG4gICAgaWYgKG1pbnV0ZXMpIHtcbiAgICAgIHBhcnRzLnB1c2gobWludXRlcyArICdNJyk7XG4gICAgfVxuXG4gICAgaWYgKHNlY29uZHMgfHwgbWlsbGlzZWNvbmRzKSB7XG4gICAgICBwYXJ0cy5wdXNoKFN0cmluZyhzZWNvbmRzKSk7XG5cbiAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgcGFydHMucHVzaCgnLicgKyB0aGlzLnBhZFN0YXJ0KG1pbGxpc2Vjb25kcy50b1N0cmluZygpLCAzLCAnMCcpKTtcbiAgICAgIH1cblxuICAgICAgcGFydHMucHVzaCgnUycpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgfVxuXG4gIHBhZFN0YXJ0KGl0ZW06IHN0cmluZywgdGFyZ2V0TGVuZ3RoOiBudW1iZXIsIHBhZFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggPj4gMDtcbiAgICBwYWRTdHJpbmcgPSBTdHJpbmcoKHR5cGVvZiBwYWRTdHJpbmcgIT09ICd1bmRlZmluZWQnID8gcGFkU3RyaW5nIDogJyAnKSk7XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggPiB0YXJnZXRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCAtIGl0ZW0ubGVuZ3RoO1xuXG4gICAgaWYgKHRhcmdldExlbmd0aCA+IHBhZFN0cmluZy5sZW5ndGgpIHtcbiAgICAgIHBhZFN0cmluZyArPSBwYWRTdHJpbmcucmVwZWF0KHRhcmdldExlbmd0aCAvIHBhZFN0cmluZy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHJldHVybiBwYWRTdHJpbmcuc2xpY2UoMCwgdGFyZ2V0TGVuZ3RoKSArIGl0ZW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMjAwMDtcbmNvbnN0IGRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMTtcbmNvbnN0IGRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMzAwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHBvbmVudGlhbEJhY2tvZmYge1xuICBwcml2YXRlIHJlYWRvbmx5IF9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kLFxuICAgIG1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kLFxuICAgIG1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kXG4gICkge1xuICAgIHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICAgIHRoaXMuX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICAgIHRoaXMuX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICB9XG5cbiAgZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudChmYWlsdXJlQ291bnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgYmFja29mZkludGVydmFsSW5TZWNvbmRzID0gdGhpcy5fYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCAvIDEwMDA7XG4gICAgY29uc3QgcmFuZG9taXphdGlvbiA9IDAuNSArICgwLjUgKiBNYXRoLnJhbmRvbSgpKTsgLy8gWzAuNSwgMSlcbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmYgPSBNYXRoLnBvdyhiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMsIGZhaWx1cmVDb3VudCAtIDIpOyAvLyAgWzEvNCAxLzIgMSAyIDQgOCAuLi4uXVxuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uID0gTWF0aC5mbG9vcihleHBvbmVudGlhbEJhY2tvZmYpICogcmFuZG9taXphdGlvbjtcbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQgPSBNYXRoLmNlaWwoTWF0aC5tYXgoZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24gKiAxMDAwLCB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kKSk7XG5cbiAgICByZXR1cm4gTWF0aC5taW4oZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kLCB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtTdHJlYW1TZXR1cExpc3RlbmVyfSBmcm9tICcuLi9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IE5ldHdvcmtNb25pdG9yIGZyb20gJy4uL2RvbS9OZXR3b3JrTW9uaXRvcic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcblxuaW50ZXJmYWNlIElOZXR3b3JrU3RhdGlzdGljcyB7XG4gIHJ0dD86IG51bWJlcjtcbiAgZWZmZWN0aXZlVHlwZT86IHN0cmluZztcbiAgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlc3Npb25UZWxlbWV0cnkgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTZXNzaW9uVGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX25ldHdvcmtNb25pdG9yOiBOZXR3b3JrTW9uaXRvciA9IG5ldyBOZXR3b3JrTW9uaXRvcigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgX2xhc3ROZXR3b3JrU3RhdGlzdGljczogSU5ldHdvcmtTdGF0aXN0aWNzID0ge307XG5cbiAgY29uc3RydWN0b3IocGFnZUxvYWRUaW1lOiBudW1iZXIsIG1ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZSkge1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IpO1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gbWV0cmljc1NlcnZpY2U7XG5cbiAgICBpZiAoIXRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nlc3Npb25UZWxlbWV0cnkgRmFpbGVkOiBObyBhcHBsaWNhdGlvbiBtb25pdG9yIGluaXRpYWxpemVkLicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fbmV0d29ya01vbml0b3IuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IuaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShpc0ZvcmVncm91bmQgPT4ge1xuICAgICAgdGhpcy5yZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlKGlzRm9yZWdyb3VuZCk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5ydHQuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtSVFRVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IuZWZmZWN0aXZlVHlwZS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICB9XG5cbiAgbGlzdGVuT25TdHJlYW1TZXR1cCgpOiBTdHJlYW1TZXR1cExpc3RlbmVyIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbVNldHVwTGlzdGVuZXIodGhpcy5fcGFnZUxvYWRUaW1lKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlKGlzRm9yZWdyb3VuZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdENoYW5nZSA9IHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yPy5nZXRUaW1lU2luY2VMYXN0Q2hhbmdlKCk7XG5cbiAgICBpZiAoIXRpbWVTaW5jZUxhc3RDaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IGlzRm9yZWdyb3VuZCA/IE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uRm9yZWdyb3VuZCA6IE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uQmFja2dyb3VuZCxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lU2luY2VMYXN0Q2hhbmdlfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnQXBwbGljYXRpb24gaGFzIGdvbmUgaW50byB0aGUgWyVzXSBhZnRlciBbJXNdIG1zJyxcbiAgICAgIGlzRm9yZWdyb3VuZCA/ICdmb3JlZ3JvdW5kJyA6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIG5ldyBEdXJhdGlvbnModGltZVNpbmNlTGFzdENoYW5nZSkudG9Jc29TdHJpbmcoKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrUlRUVXBkYXRlKG5ld1JUVDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRSdHQgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MucnR0O1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dCA9IG5ld1JUVDtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiBuZXdSVFR9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkUnR0ID8ge3VpbnQ2NDogb2xkUnR0fSA6IHVuZGVmaW5lZCxcbiAgICAgIHJlc291cmNlOiAnbmF2aWdhdG9yJ1xuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIFJUVCBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3UlRULFxuICAgICAgb2xkUnR0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUobmV3TmV0d29ya1R5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkTmV0d29ya1R5cGUgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5lZmZlY3RpdmVUeXBlID0gbmV3TmV0d29ya1R5cGU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLk5ldHdvcmtUeXBlLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtzdHJpbmc6IG5ld05ldHdvcmtUeXBlfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZE5ldHdvcmtUeXBlID8ge3N0cmluZzogb2xkTmV0d29ya1R5cGV9IDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgZWZmZWN0aXZlIHR5cGUgaGFzIGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdOZXR3b3JrVHlwZSxcbiAgICAgIG9sZE5ldHdvcmtUeXBlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKG5ld0NhcGFjaXR5OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZENhcGFjaXR5ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5O1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtmbG9hdDogbmV3Q2FwYWNpdHl9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkQ2FwYWNpdHkgPyB7ZmxvYXQ6IG9sZENhcGFjaXR5fSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGRvd25saW5rIHRocm91Z2hwdXQgY2FwYWNpdHkgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld0NhcGFjaXR5LFxuICAgICAgb2xkQ2FwYWNpdHlcbiAgICApO1xuICB9XG59IiwiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkociwgYSkge1xuICAobnVsbCA9PSBhIHx8IGEgPiByLmxlbmd0aCkgJiYgKGEgPSByLmxlbmd0aCk7XG4gIGZvciAodmFyIGUgPSAwLCBuID0gQXJyYXkoYSk7IGUgPCBhOyBlKyspIG5bZV0gPSByW2VdO1xuICByZXR1cm4gbjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5TGlrZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIHI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aG91dEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChlKSB7XG4gIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgcmV0dXJuIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAobiwgdCwgZSwgciwgbywgYSwgYykge1xuICB0cnkge1xuICAgIHZhciBpID0gblthXShjKSxcbiAgICAgIHUgPSBpLnZhbHVlO1xuICB9IGNhdGNoIChuKSB7XG4gICAgcmV0dXJuIHZvaWQgZShuKTtcbiAgfVxuICBpLmRvbmUgPyB0KHUpIDogUHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4ociwgbyk7XG59XG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHQgPSB0aGlzLFxuICAgICAgZSA9IGFyZ3VtZW50cztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHIsIG8pIHtcbiAgICAgIHZhciBhID0gbi5hcHBseSh0LCBlKTtcbiAgICAgIGZ1bmN0aW9uIF9uZXh0KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCBuKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIG4pO1xuICAgICAgfVxuICAgICAgX25leHQodm9pZCAwKTtcbiAgICB9KTtcbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FzeW5jVG9HZW5lcmF0b3IsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xuICBpZiAoIShhIGluc3RhbmNlb2YgbikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jbGFzc0NhbGxDaGVjaywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSByZXF1aXJlKFwiLi9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanNcIik7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbmZ1bmN0aW9uIF9jb25zdHJ1Y3QodCwgZSwgcikge1xuICBpZiAoaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkpIHJldHVybiBSZWZsZWN0LmNvbnN0cnVjdC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICB2YXIgbyA9IFtudWxsXTtcbiAgby5wdXNoLmFwcGx5KG8sIGUpO1xuICB2YXIgcCA9IG5ldyAodC5iaW5kLmFwcGx5KHQsIG8pKSgpO1xuICByZXR1cm4gciAmJiBzZXRQcm90b3R5cGVPZihwLCByLnByb3RvdHlwZSksIHA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jb25zdHJ1Y3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlQ2xhc3MsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YodCkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX2dldFByb3RvdHlwZU9mKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbmZ1bmN0aW9uIF9pbmhlcml0cyh0LCBlKSB7XG4gIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogdCxcbiAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9XG4gIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZSAmJiBzZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2luaGVyaXRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2lzTmF0aXZlRnVuY3Rpb24odCkge1xuICB0cnkge1xuICAgIHJldHVybiAtMSAhPT0gRnVuY3Rpb24udG9TdHJpbmcuY2FsbCh0KS5pbmRleE9mKFwiW25hdGl2ZSBjb2RlXVwiKTtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIHQ7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlRnVuY3Rpb24sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICB0cnkge1xuICAgIHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgfSBjYXRjaCAodCkge31cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICAgIHJldHVybiAhIXQ7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cykoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkocikge1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIG51bGwgIT0gcltTeW1ib2wuaXRlcmF0b3JdIHx8IG51bGwgIT0gcltcIkBAaXRlcmF0b3JcIl0pIHJldHVybiBBcnJheS5mcm9tKHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5TGltaXQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVSZXN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlU3ByZWFkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIGFzc2VydFRoaXNJbml0aWFsaXplZCA9IHJlcXVpcmUoXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiKTtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZih0LCBlKSB7XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheUxpbWl0ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVJlc3QgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIik7XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShyLCBlKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBlKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBlKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NsaWNlZFRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRob3V0SG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVNwcmVhZCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCIpO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdG9Db25zdW1hYmxlQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1ByaW1pdGl2ZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoXCIuL3RvUHJpbWl0aXZlLmpzXCIpO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJvcGVydHlLZXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIG87XG4gIH0gOiBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfdHlwZW9mKG8pO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHtcbiAgaWYgKHIpIHtcbiAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgcikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkociwgYSk7XG4gICAgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTtcbiAgICByZXR1cm4gXCJPYmplY3RcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXCJNYXBcIiA9PT0gdCB8fCBcIlNldFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFwiQXJndW1lbnRzXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBhcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL2dldFByb3RvdHlwZU9mLmpzXCIpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG52YXIgaXNOYXRpdmVGdW5jdGlvbiA9IHJlcXVpcmUoXCIuL2lzTmF0aXZlRnVuY3Rpb24uanNcIik7XG52YXIgY29uc3RydWN0ID0gcmVxdWlyZShcIi4vY29uc3RydWN0LmpzXCIpO1xuZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcih0KSB7XG4gIHZhciByID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBNYXAgPyBuZXcgTWFwKCkgOiB2b2lkIDA7XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfd3JhcE5hdGl2ZVN1cGVyID0gZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcih0KSB7XG4gICAgaWYgKG51bGwgPT09IHQgfHwgIWlzTmF0aXZlRnVuY3Rpb24odCkpIHJldHVybiB0O1xuICAgIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIHQpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgICBpZiAodm9pZCAwICE9PSByKSB7XG4gICAgICBpZiAoci5oYXModCkpIHJldHVybiByLmdldCh0KTtcbiAgICAgIHIuc2V0KHQsIFdyYXBwZXIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBXcmFwcGVyKCkge1xuICAgICAgcmV0dXJuIGNvbnN0cnVjdCh0LCBhcmd1bWVudHMsIGdldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIFdyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IFdyYXBwZXIsXG4gICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICAgIH1cbiAgICB9KSwgc2V0UHJvdG90eXBlT2YoV3JhcHBlciwgdCk7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF93cmFwTmF0aXZlU3VwZXIodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF93cmFwTmF0aXZlU3VwZXIsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgUHVibGlzaGVycyBmcm9tICcuL1B1Ymxpc2hlcnMnO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuXG5leHBvcnQge1xuICBTREssXG4gIFB1Ymxpc2hlcnMsXG4gIFB1Ymxpc2hlclN0YXRlXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFNESyxcbiAgUHVibGlzaGVycyxcbiAgUHVibGlzaGVyU3RhdGVcbn07Il0sIm5hbWVzIjpbIkdsb2JhbFNjb3BlIiwiRGlzcG9zYWJsZSIsIkRpc3Bvc2FibGVMaXN0IiwiU3ViamVjdCIsIlJlYWRPbmx5U3ViamVjdCIsInZpc2liaWxpdHlDaGFuZ2VFdmVudCIsIkFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2RlZmluZVByb3BlcnR5IiwiRGF0ZSIsIm5vdyIsIl9pc0ZvcmVncm91bmQiLCJfcmVhZE9ubHlJc0ZvcmVncm91bmQiLCJpbml0aWFsaXplIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwiZ2V0IiwidmFsdWUiLCJnZXRUaW1lU2luY2VMYXN0Q2hhbmdlIiwiX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZSIsImdldExhc3RCYWNrZ3JvdW5kRHVyYXRpb24iLCJfbGFzdEJhY2tncm91bmREdXJhdGlvbiIsImRpc3Bvc2UiLCJfZGlzcG9zYWJsZXMiLCJfdGhpcyIsImJhY2tncm91bmRFbnRyeVRpbWUiLCJoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlIiwiaXNOb3dGb3JlZ3JvdW5kIiwiZG9jdW1lbnRJc0hpZGRlbiIsInVzZUV2ZW50Q2FwdHVyZVBoYXNlIiwiYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyIiwiYWRkIiwicmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyIiwiZGVmYXVsdCIsIkJyb3dzZXJEZXRlY3RvciIsIl9icm93c2VyTmFtZUFuZFZlcnNpb24iLCJfYnJvd3Nlck5hbWUiLCJfYnJvd3Nlck1ham9yVmVyc2lvbiIsIl9pc0FuZHJvaWQiLCJfaXNDaHJvbWU2OSIsIl9pc0Nocm9tZTcwIiwiX2lzQ2hyb21lNzEiLCJfaXNDaHJvbWU3MiIsIl9pc0Nocm9tZTc0IiwiX2lzQ2hyb21lNzUiLCJfaXNDaHJvbWU3NiIsIl9pc0Nocm9tZTc3IiwiaXNNb2JpbGUiLCJfaXNNb2JpbGUiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm1hdGNoIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4IiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSIsInBhcnNlQnJvd3Nlck5hbWUiLCJicm93c2VyTmFtZUxpc3QiLCJzcGxpdCIsInBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbiIsImJyb3dzZXJWZXJzaW9uTGlzdCIsImZ1bGxWZXJzaW9uIiwiTnVtYmVyIiwibXNpZSIsImluZGV4T2YiLCJjb25jYXQiLCJwYXJzZUludCIsInN1YnN0cmluZyIsInRyaWRlbnQiLCJ2ZXJzaW9uIiwiX0Jyb3dzZXJEZXRlY3RvciIsInRlc3QiLCJfbmF2aWdhdG9yIiwiX25hdmlnYXRvcjIiLCJpbmNsdWRlcyIsIlRlbGVtZXRyeUxldmVsTWFwcGluZyIsIlRlbGVtZXRyeURlZmF1bHQiLCJMb2dnaW5nTGV2ZWxNYXBwaW5nIiwiTG9nZ2VyRGVmYXVsdHMiLCJQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJnZXRTdHJpbmdWYWx1ZSIsIm5hbWUiLCJkZWZhdWx0U3RyaW5nVmFsdWUiLCJnZXRCb29sZWFuVmFsdWUiLCJkZWZhdWx0Qm9vbGVhblZhbHVlIiwiY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUiLCJkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlIiwiZGVmYXVsdExvZ2dpbmdMZXZlbCIsImRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsIiwiZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCIsIkZlYXR1cmVFbmFibGVtZW50IiwiU0RLIiwiR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIiLCJFcnJvciIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb24iLCJza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQiLCJmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCIsInF1ZXVlTWljcm90YXNrIiwib3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uIiwiYmluZCIsInNldFRpbWVvdXQiLCJpbWciLCJkb2N1bWVudENyZWF0ZUVsZW1lbnQiLCJzcmMiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJCbG9iIiwiQXJyYXlCdWZmZXIiLCJvbmVycm9yIiwicmV2b2tlT2JqZWN0VVJMIiwiTmV0d29ya01vbml0b3IiLCJuYXZpZ2F0b3JDb25uZWN0aW9uIiwidW5kZWZpbmVkIiwiaXNTdXBwb3J0ZWQiLCJzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMiLCJ1cGRhdGVTdGF0aXN0aWNzIiwiX2lzU3VwcG9ydGVkIiwiX3J0dCIsIl9lZmZlY3RpdmVUeXBlIiwiX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJfcmVmIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTMiLCJkb3dubGluayIsImRvd25saW5rTWF4IiwiZ2V0RWZmZWN0aXZlVHlwZSIsIl9yZWYyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNCIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTUiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE2IiwiZWZmZWN0aXZlVHlwZSIsInR5cGUiLCJnZXRSb3VuZFRyaXBUaW1lIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNyIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTgiLCJydHQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE5IiwibGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJNZXRyaWNzVHlwZSIsIk1ldHJpY1R5cGUiLCJEdXJhdGlvbnMiLCJMb2dnZXJGYWN0b3J5IiwiU3RyZWFtU2V0dXBMaXN0ZW5lciIsInBhZ2VMb2FkVGltZSIsImdldExvZ2dlciIsIm1ldHJpY3NTZXJ2aWNlIiwiX3N0YXJ0VGltZSIsIl9wYWdlTG9hZFRpbWUiLCJzdWNjZXNzIiwic3RyZWFtSWQiLCJyZWNvcmRTdHJlYW1NZXRyaWMiLCJTZXR1cENvbXBsZXRlZCIsImZhaWwiLCJTZXR1cEZhaWxlZCIsIm1ldHJpY1R5cGUiLCJfbWV0cmljU3VibWl0dGVkIiwic2V0dXBUaW1lIiwibWV0cmljTmFtZSIsImdldE5hbWUiLCJwdXNoIiwicnVudGltZSIsInVpbnQ2NCIsIl9sb2dnZXIiLCJpbmZvIiwidG9Jc29TdHJpbmciLCJFZGdlVG9rZW4iLCJlZGdlQXV0aFRva2VuUHJlZml4IiwiRWRnZUF1dGhQYXJzZXIiLCJwYXJzZVRva2VuIiwidG9rZW4iLCJpc0VuY29kZWRFZGdlVG9rZW5WYWxpZCIsImVycm9yIiwiZGVjb2RlZFRva2VuIiwiYXRvYiIsInN1YnN0ciIsImxlbmd0aCIsImVkZ2VUb2tlbiIsIkpTT04iLCJwYXJzZSIsImUiLCJzdGFydHNXaXRoIiwiX2VkZ2VUb2tlbiR0b2tlbiIsIl9lZGdlVG9rZW4kdG9rZW4yIiwiX2FwcGxpY2F0aW9uSWQiLCJhcHBsaWNhdGlvbklkIiwiX3Rva2VuIiwidXJpIiwiY2FwYWJpbGl0aWVzIiwiQnVpbGRGZWF0dXJlcyIsIl9zZW5kTG9jYWxDYW5kaWRhdGVzIiwiX3NlbmRMb2dzIiwiX3NlbmRNZXRyaWNzIiwiX2xvZ1RvQ29uc29sZSIsImFwcGx5RmVhdHVyZXMiLCJmZWF0dXJlcyIsIl9fRkVBVFVSRVNfXyIsInNlbmRMb2NhbENhbmRpZGF0ZXMiLCJzZW5kTG9ncyIsInNlbmRNZXRyaWNzIiwibG9nVG9Db25zb2xlIiwiaXNDaHJvbWU3NCIsImlzQ2hyb21lNzUiLCJpc0Nocm9tZTc2IiwiaXNDaHJvbWU3NyIsImFkZFRyYW5jZWl2ZXJEaXNhYmxlZCIsImlzQ2hyb21lNjkiLCJpc0Nocm9tZTcwIiwiaXNDaHJvbWU3MSIsImlzQ2hyb21lNzIiLCJicm93c2VyTmFtZSIsImJyb3dzZXJNYWpvclZlcnNpb24iLCJfR2xvYmFsU2NvcGUkdmFsdWUiLCJNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yIiwiTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvciIsIlJUQ1J0cFJlY2VpdmVyIiwicHJvdG90eXBlIiwiY3JlYXRlRW5jb2RlZFN0cmVhbXMiLCJSVENSdHBTY3JpcHRUcmFuc2Zvcm0iLCJfR2xvYmFsU2NvcGUkdmFsdWUyIiwiSFRNTFZpZGVvRWxlbWVudCIsInJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siLCJfR2xvYmFsU2NvcGUkdmFsdWUzIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkIiwiaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJpc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCIsIlBhcmFtZXRlcnMiLCJfZGlzY292ZXJ5UGFyYW1ldGVycyIsImFwcGx5UGFyYW1ldGVycyIsInBhcmFtZXRlcnMiLCJfX1BBUkFNRVRFUlNfXyIsImRpc2NvdmVyeSIsImludGVudGlvbnMiLCJicm93c2VyR2xvYmFsU2NvcGUiLCJkb2N1bWVudCIsImxvY2F0aW9uIiwid2luZG93IiwiZ2xvYmFsU2NvcGUiLCJfZG9jdW1lbnQiLCJfbG9jYXRpb24iLCJfd2luZG93IiwiQWJvcnRDb250cm9sbGVyIiwiRm9ybURhdGEiLCJNZWRpYVN0cmVhbSIsIk1lZGlhU3RyZWFtVHJhY2siLCJNZWRpYVNvdXJjZSIsIlJUQ1BlZXJDb25uZWN0aW9uIiwiUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIiwiUlRDSWNlQ2FuZGlkYXRlIiwiVVJMU2VhcmNoUGFyYW1zIiwiY2xlYXJJbnRlcnZhbCIsImNsZWFyVGltZW91dCIsImNyZWF0ZUVsZW1lbnQiLCJoYXNGb2N1cyIsImhpZGRlbiIsInF1ZXJ5U2VsZWN0b3IiLCJmZXRjaCIsImhvc3RuYW1lIiwic2VhcmNoIiwiY29ubmVjdGlvbiIsIm9uTGluZSIsInNlbmRCZWFjb24iLCJ1cmwiLCJkYXRhIiwic2V0SW50ZXJ2YWwiLCJzZXRJbnN0YW5jZSIsInByb3ZpZGVkR2xvYmFsU2NvcGUiLCJnZXRJbnN0YW5jZSIsIl9yZWFkT25seUluc3RhbmNlIiwic3Vic2NyaWJlIiwiY2FsbGJhY2siLCJfR2xvYmFsU2NvcGUiLCJfaW5zdGFuY2UiLCJkaXNwb3NhYmxlIiwiX2Rpc3Bvc2VkIiwiX2Rpc3Bvc2FibGUiLCJjYWxsIiwiX2xpc3QiLCJmb3JFYWNoIiwidG9TdHJpbmciLCJtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QiLCJOdW1iZXJzIiwiY291bnROdW1iZXJMZW5ndGgiLCJpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlIiwibnVtYmVyIiwiY291bnREaWdpdHNCZWZvcmVEZWNpbWFsIiwiTWF0aCIsImZsb29yIiwiY291bnREaWdpdHNBZnRlckRlY2ltYWwiLCJmaXhSb3VuZGluZyIsInByZWNpc2lvbiIsInBvd2VyIiwicG93Iiwicm91bmQiLCJkaWdpdHNCZWZvcmVEZWNpbWFsIiwib3JpZ2luYWxWYWx1ZSIsIm1vZGlmaWVkVmFsdWUiLCJjb3VudCIsIlN0cmluZ3MiLCJyYW5kb20iLCJyYW5kb20xM0NoYXJhY3RlcnMiLCJsb29wcyIsImNlaWwiLCJBcnJheSIsImZpbGwiLCJyZWR1Y2UiLCJzdHJpbmciLCJmdW5jIiwiYXNzZXJ0VW5yZWFjaGFibGUiLCJ4IiwiQXBwZW5kZXJzIiwiX2FwcGVuZGVycyIsImFwcGVuZGVyIiwicmVtb3ZlIiwiaXRlbXMiLCJpdGVtIiwiTG9nZ2luZ0xldmVsIiwiQ29uc29sZUFwcGVuZGVyIiwidGhyZXNob2xkIiwiX3RocmVzaG9sZCIsImxvZyIsImxvZ0xldmVsIiwibWVzc2FnZSIsImNhdGVnb3J5IiwiZGF0ZSIsImZ1bGxNZXNzYWdlIiwidG9JU09TdHJpbmciLCJXYXJuIiwiY29uc29sZSIsIkxvZ2dlciIsImFwcGVuZGVycyIsIl9jYXRlZ29yeSIsInRyYWNlIiwiVHJhY2UiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIl9rZXkiLCJkZWJ1ZyIsIkRlYnVnIiwiX2xlbjIiLCJfa2V5MiIsIkluZm8iLCJfbGVuMyIsIl9rZXkzIiwid2FybiIsIl9sZW40IiwiX2tleTQiLCJfbGVuNSIsIl9rZXk1IiwiZmF0YWwiLCJGYXRhbCIsIl9sZW42IiwiX2tleTYiLCJsZXZlbCIsInJlcGxhY2VQbGFjZWhvbGRlcnMiLCJfdGhpczIiLCJyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nIiwiaW5kZXgiLCJyZXBsYWNlQXJndW1lbnQiLCJzcGxpY2UiLCJzdHJpbmdpZnkiLCJhY2N1bXVsYXRvciIsImN1cnJlbnRWYWx1ZSIsImFycmF5IiwiZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UiLCJzdGFjayIsImFyZyIsImNhY2hlIiwiXyIsIk9iamVjdCIsImFyZ3VtZW50IiwidG9TdHJpbmdTdHIiLCJMb2dnaW5nVGhyZXNob2xkIiwiVGVsZW1ldHJ5QXBwZW5kZXIiLCJUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciIsIl90ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwibG9nZ2VyIiwiX2xvZ2dlcnMiLCJhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlMb2dnaW5nTGV2ZWwiLCJhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsIiwiYXBwbHlDb25zb2xlTG9nZ2VyIiwiYXBwbHlUZWxlbWV0cnlMb2dnZXIiLCJwYXJhbWV0ZXJWYWx1ZSIsInNldFRocmVzaG9sZCIsImFwcGx5QXBwZW5kZXIiLCJsb2dnaW5nTGV2ZWwiLCJPZmYiLCJBbGwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsIiwibG9nZ2luZ0xldmVsVHlwZSIsIlRlbGVtZXRyeUxldmVsIiwibWV0cmljcyIsIl9tZXRyaWNzIiwiZ2V0VGVsZW1ldHJ5TGV2ZWwiLCJUaW1lVG9GaXJzdEZyYW1lIiwiRXNzZW50aWFsIiwiQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIlN0YWxsZWQiLCJCdWZmZXJpbmciLCJSb3VuZFRyaXBUaW1lIiwiRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJOZXR3b3JrVHlwZSIsIlJlc29sdXRpb25DaGFuZ2VkIiwiQXBwbGljYXRpb25Gb3JlZ3JvdW5kIiwiQXBwbGljYXRpb25CYWNrZ3JvdW5kIiwiTWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfdXJsIiwic2V0IiwibWV0cmljc1VybCIsInBhdGhuYW1lIiwiX2Vudmlyb25tZW50IiwiZW52aXJvbm1lbnQiLCJfdGVuYW5jeSIsInRlbmFuY3kiLCJfc2Vzc2lvbklkIiwic2Vzc2lvbklkIiwiTWV0cmljc1NlcnZpY2UiLCJUZWxlbWV0cnlVcmwiLCJFbnZpcm9ubWVudCIsIk1ldHJpY3NGYWN0b3J5IiwiZ2V0TWV0cmljc1NlcnZpY2UiLCJfdHlwZW9mIiwibWV0cmljc1NlcnZpY2VzIiwiX21ldHJpY3NTZXJ2aWNlcyIsIm1ldHJpY3NDb25maWd1cmF0aW9uIiwiY2xpZW50U2Vzc2lvbklkIiwiZ2V0VGVsZW1ldHJ5VXJsIiwiZ2V0RW52aXJvbm1lbnRGcm9tVXJsIiwiY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwiLCJ0ZWxlbWV0cnlMZXZlbCIsInNldFRlbGVtZXRyeUxldmVsIiwidmFsdWVzIiwidCIsInIiLCJTeW1ib2wiLCJuIiwiaXRlcmF0b3IiLCJvIiwidG9TdHJpbmdUYWciLCJpIiwiYyIsIkdlbmVyYXRvciIsInUiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsInYiLCJhIiwiZCIsImwiLCJUeXBlRXJyb3IiLCJkb25lIiwicmV0dXJuIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImdldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJkaXNwbGF5TmFtZSIsIl9yZWdlbmVyYXRvciIsInciLCJtIiwiZGVmaW5lUHJvcGVydHkiLCJfcmVnZW5lcmF0b3JEZWZpbmUiLCJfaW52b2tlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiRXhwb25lbnRpYWxCYWNrb2ZmIiwiVmVyc2lvbk1hbmFnZXIiLCJyZXF1ZXN0U2l6ZUxpbWl0IiwibWF4QnVmZmVyZWRSZWNvcmRzIiwiX21ldHJpY3NDb25maWd1cmF0aW9uIiwiX2V4cG9uZW50aWFsQmFja29mZiIsImdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUiLCJ0aGVuIiwibG9jYXRpb25Ib3N0bmFtZSIsIl9kb21haW4iLCJtZXRyaWMiLCJwcmV2aW91c1ZhbHVlIiwicmVzb3VyY2UiLCJraW5kIiwibWV0cmljUmVjb3JkIiwidGltZXN0YW1wIiwiZnVsbFF1YWxpZmllZE5hbWUiLCJzZGtWZXJzaW9uIiwiaWdub3JlZCIsInNlbmRNZXRyaWNzSWZBYmxlIiwiUHJvbWlzZSIsInJlc29sdmVMb2NhdGlvbkhvc3RuYW1lIiwiZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24iLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9jYWxsZWUiLCJtZXRyaWNzTWVzc2FnZXMiLCJmb3JtRGF0YSIsIl9jb250ZXh0IiwiYXBwZW5kIiwicmVjb3JkcyIsIm1ldGhvZCIsImJvZHkiLCJfeCIsImFwcGx5IiwiX3NlbmRNZXRyaWNzSWZBYmxlIiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJfaXNTZW5kaW5nIiwic2xpY2UiLCJyZXNwb25zZSIsImlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlIiwiX2ZhaWx1cmVDb3VudCIsIl90b0NvbnN1bWFibGVBcnJheSIsImdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQiLCJjYXRjaCIsInN0YXR1cyIsInRlbGVtZXRyeUxldmVsVHlwZSIsIlByb21pc2VIYW5kbGVyIiwiX3N0YXRlIiwiX2hhbmRsZWQiLCJfdmFsdWUiLCJfZGVmZXJyZWRzIiwiZG9SZXNvbHZlIiwicHJvbWlzZVJlc29sdmUiLCJyZWFzb24iLCJwcm9taXNlUmVqZWN0IiwibmV3VmFsdWUiLCJwcm9taXNlIiwiZmluYWxlIiwiX2ltbWVkaWF0ZSIsIl91bmhhbmRsZWRSZWplY3Rpb24iLCJsZW4iLCJoYW5kbGUiLCJkZWZlcnJlZCIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInJlc3VsdCIsImFsbCIsImFyciIsInJlc29sdmUiLCJyZWplY3QiLCJpc0FycmF5IiwicmVtYWluaW5nIiwibWFuYWdlUmVzcG9uc2UiLCJjb25zdHJ1Y3RvciIsInJhY2UiLCJWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiZGVmYXVsdFRyYWNrS2luZHMiLCJQZWVyQ29ubmVjdGlvblNlcnZpY2UiLCJfcGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZyIsImlzUHJlY2FjaGluZ0VuYWJsZWQiLCJwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfcHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhY2hlZCIsImRpcmVjdGlvbiIsInBlZXJDb25uZWN0aW9uIiwiY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhbGxlZTMiLCJ0cmFja0tpbmRzIiwiZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiY29uZmlndXJhdGlvbiIsIl9hcmdzMyIsIl9jb250ZXh0MyIsIkRpc2FibGVkIiwiaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQiLCJFbmFibGVkIiwiY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJzdXBwb3J0c0FkZFRyYW5zY2VpdmVyIiwiYXVkaW9UcmFuc2NlaXZlcnMiLCJ2aWRlb1RyYW5zY2VpdmVycyIsIm9wdGlvbnMiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl90NSIsIl90NiIsImFkZFRyYW5zY2VpdmVyIiwiY3JlYXRlT2ZmZXIiLCJsb2NhbE9mZmVyIiwib2ZmZXJUb1JlY2VpdmVBdWRpbyIsIm9mZmVyVG9SZWNlaXZlVmlkZW8iLCJ0cmFja3NLaW5kcyIsImNvdW50VHJhY2tLaW5kcyIsInRyYWNrS2luZENvdW50IiwiYXVkaW8iLCJ2aWRlbyIsImNvdW50ZWRUcmFja0tpbmRzIiwiY291bnRlZERlZmF1bHRUcmFja0tpbmRzIiwiUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIiLCJ0cnVuY2F0ZUljZVNlcnZlcnMiLCJpY2VTZXJ2ZXJzIiwidXJscyIsInVzZXJuYW1lIiwiY3JlZGVudGlhbCIsIlNkcFBhcnNlciIsInVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQiLCJnZXRTdGF0c1RpbWVvdXREdXJhdGlvbiIsIlJ0Y1B1Ymxpc2hNb25pdG9yIiwiZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsImlzRm9yZWdyb3VuZCIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjIiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24zIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNCIsIl9wZWVyQ29ubmVjdGlvbiIsIl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiY3VycmVudExvY2FsRGVzY3JpcHRpb24iLCJzZHAiLCJjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24iLCJwYXJzZWRMb2NhbERlc2NyaXB0aW9uIiwicGFyc2VkUmVtb3RlRGVzY3JpcHRpb24iLCJfZXN0aW1hdGVkQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWMiLCJfZXN0aW1hdGVkVmlkZW9Db2RlYyIsInZpZGVvQ29kZWMiLCJfYXZhaWxhYmxlVHJhY2tzIiwiaXNBdWRpb1RyYWNrRW5hYmxlZCIsImlzVmlkZW9UcmFja0VuYWJsZWQiLCJpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayIsImZvcmVncm91bmQiLCJfaXNNb25pdG9yUnVubmluZyIsIl9tb25pdG9yR2VuZXJhdGlvbiIsIl91cGRhdGVUaW1lb3V0IiwidXBkYXRlU3RhdGlzdGljIiwiX3J0Y1N0YXRpc3RpYyIsIl91cGRhdGVTdGF0aXN0aWMiLCJnZW5lcmF0aW9uIiwiZ2V0S2luZEZvclNhZmFyaTExIiwidGltZW91dEhhbmRsZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjUiLCJzdGF0c1Byb21pc2UiLCJ0aW1lb3V0UHJvbWlzZSIsInN0YXRzIiwicnRjU3RhdGlzdGljcyIsInJvdW5kVHJpcFRpbWUiLCJsYXN0UGFja2V0U2VudFRpbWVzdGFtcCIsImdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQiLCJpZCIsImdldFN0YXRzIiwicmVwb3J0IiwiY3VycmVudFJvdW5kVHJpcFRpbWUiLCJfdGhpczIkX2F2YWlsYWJsZVRyYWMiLCJtZWRpYVR5cGUiLCJjb2RlYyIsImNvZGVjSWQiLCJtaW1lVHlwZSIsIl90aGlzMiRfcnRjU3RhdGlzdGljJCIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDIiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQzIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNCIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDUiLCJieXRlcyIsImJ5dGVzU2VudCIsInByZXZpb3VzQnl0ZXNTZW50IiwiYnl0ZXNEZWx0YSIsInRpbWVEZWx0YSIsImJpdHJhdGUiLCJzc3JjIiwicGFja2V0c1NlbnQiLCJyZXRyYW5zbWl0dGVkQnl0ZXNTZW50IiwiZ2V0Q29kZWNCeVR5cGUiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ2IiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNyIsImZpckNvdW50IiwiZnJhbWVIZWlnaHQiLCJmcmFtZVdpZHRoIiwiZnJhbWVzRW5jb2RlZCIsImZyYW1lc1NlbnQiLCJoZWFkZXJCeXRlc1NlbnQiLCJodWdlRnJhbWVzU2VudCIsInBsaUNvdW50IiwicXBTdW0iLCJ0b3RhbEVuY29kZVRpbWUiLCJ0b3RhbEVuY29kZWRCeXRlc1RhcmdldCIsImZwcyIsIl9zZHAiLCJzZHBTcGxpdEJ5TGluZXMiLCJzZHBTcGxpdEJ5VHJhY2tzIiwiX2F1ZGlvQ29kZWMiLCJhcHBseUNvZGVjIiwiX3ZpZGVvQ29kZWMiLCJfaXNBdWRpb1RyYWNrRW5hYmxlZCIsImlzVHJhY2tCeVR5cGVFbmFibGVkIiwiX2lzVmlkZW9UcmFja0VuYWJsZWQiLCJzZHBTZWN0aW9uRm9yVHlwZSIsImZpbmQiLCJzZHBUcmFjayIsIl9zZHBTcGxpdEJ5TGluZXMkZmluZCIsInJ0bWFwIiwic2RwTGluZSIsInVzZWRDb2RlY0xpbmUiLCJ1c2VkQ29kZWMiLCJjb2RlY05hbWUiLCJWYW5pbGxhUGVlckNvbm5lY3Rpb24iLCJ3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQiLCJ3ZWJraXRSVENQZWVyQ29ubmVjdGlvbiIsImNvbm5lY3Rpb25TdGF0ZSIsImljZUNvbm5lY3Rpb25TdGF0ZSIsImdldENvbmZpZ3VyYXRpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb242Iiwic2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjciLCJnZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCIsImdldFRyYW5zY2VpdmVycyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjgiLCJfY3JlYXRlT2ZmZXIiLCJwcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCIsIl9jcmVhdGVBbnN3ZXIiLCJjcmVhdGVBbnN3ZXIiLCJfeDIiLCJfc2V0TG9jYWxEZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwic2V0TG9jYWxEZXNjcmlwdGlvbiIsIl94MyIsIl9zZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWU0IiwiX2Rlc2NyaXB0aW9uJHNkcCIsImhhc0NyeXB0byIsIl9jb250ZXh0NCIsInNldFJlbW90ZURlc2NyaXB0aW9uIiwiX3g0IiwiZ2V0U2VuZGVycyIsImdldFJlY2VpdmVycyIsInNlbGVjdG9yIiwiZ2V0U3RhdHNMZWdhY3kiLCJfdGhpczMiLCJhZGRTdHJlYW0iLCJtZWRpYVN0cmVhbSIsIl90aGlzNCIsImdldFRyYWNrcyIsInRyYWNrIiwiYWRkVHJhY2siLCJvbnRyYWNrIiwiaGFuZGxlciIsIm9uaWNlY2FuZGlkYXRlIiwib25jb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsImNsb3NlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOSIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbiIsInJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UiLCJzdWJqZWN0IiwiX3N1YmplY3QiLCJEaXNwb3NhYmxlTGlzdGVuZXIiLCJfRGlzcG9zYWJsZSIsImxpc3RlbmVycyIsIl9jYWxsU3VwZXIiLCJpZHgiLCJfaW5oZXJpdHMiLCJfbGlzdGVuZXJzIiwiY2hhbmdlZCIsImNvbXBhcmFibGUiLCJlcXVhbHMiLCJfaSIsIl9hcnIiLCJiYXNlVVJMIiwib3JpZ2luIiwiRGlzY292ZXJ5VXJpIiwiX0dsb2JhbFNjb3BlJGdldEluc3RhIiwiX2NsaWVudFNlc3Npb25JZCIsIl9sb2FkZWRUaW1lc3RhbXAiLCJfcmVhZE9ubHlJbml0aWFsaXplZCIsIl9yZWFkT25seURpc2NvdmVyeVVyaSIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUiLCJfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsIl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJfd2ViUGxheWVyTG9hZGVyIiwiX3NoYWthUGxheWVyTG9hZGVyIiwiX2hsc0pzTG9hZGVyIiwiX21ldHJpY3NTZXJ2aWNlIiwiX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX3RlbGVtZXRyeVVybCIsIl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwicmV0cmllc0Ftb3VudCIsIl90ZWxlbWV0cnlMZXZlbCIsImFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsInRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJpZ25vcmVkRW52aXJvbm1lbnQiLCJpZ25vcmVkRGlzY292ZXJ5VXJpIiwidGVsZW1ldHJ5VXJsIiwidGVsZW1ldHJ5QXBwZW5kZXIiLCJpZ25vcmVkVGVuYW5jeSIsImFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24iLCJpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwiLCJhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiZGlzY292ZXJ5VXJpIiwiY2hhbm5lbFRva2VuIiwidXJpVmFsdWUiLCJiYXNlVVJJVmFsdWUiLCJvbkxvYWQiLCJfaW5pdGlhbGl6ZWQiLCJhZGRXaW5kb3dFdmVudExpc3RlbmVyIiwiaW5pdCIsIm9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZSIsInBlZXJDb25uZWN0aW9uRmFjdG9yeSIsImNvbnNvbGVMb2dnaW5nTGV2ZWwiLCJjb25zb2xlQXBwZW5kZXIiLCJhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJ3ZWJQbGF5ZXJMb2FkZXIiLCJzaGFrYVBsYXllckxvYWRlciIsImhsc0pzTG9hZGVyIiwiX3RoaXMkX2FwcGxpY2F0aW9uQWN0IiwiX1NESyIsInNlZ21lbnRzIiwicHJvdG9jb2wiLCJ1bnNoaWZ0IiwiZW5kc1dpdGgiLCJqb2luIiwiQml0cmF0ZVN0YXRlIiwiQml0cmF0ZU1vZGUiLCJQZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0IiwicGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsImRpc3Bvc2VQZWVyQ29ubmVjdGlvbiIsImRpc3Bvc2VNZWRpYVN0cmVhbSIsIl90aGlzJG1lZGlhU3RyZWFtJHZhbCIsInN0b3AiLCJTdGF0ZUNvbnRleHQiLCJpc1N0YXJ0aW5nIiwiaXNEaXNwb3NlZCIsIlRva2VuQ29udGV4dCIsInRva2VuRXhwaXJpbmciLCJkZWZhdWx0RGlzY292ZXJ5VXJpIiwiQml0cmF0ZU1vZGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUiLCJiaXRyYXRlTW9kZSIsIk5vcm1hbCIsIkZvcmNlIiwiUmVzZXQiLCJCaXRyYXRlU3RhdGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZSIsImJpdHJhdGVTdGF0ZSIsIktlZXAiLCJEaXNjb3ZlcnlTZXJ2aWNlIiwiZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCIsIkRpc2NvdmVyeSIsIl9wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsInJlc29sdmVFbmRQb2ludFByb21pc2UiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwicHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsImRpc2NvdmVyeVNlcnZpY2UiLCJjYWNoZWRWYWx1ZSIsIl9jYWNoZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQiLCJFbmRQb2ludCIsImRlZmF1bHRUaW1lb3V0IiwiX3VyaSIsIl9kaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsInRpbWVvdXQiLCJhc1N0cmluZyIsImVuZFBvaW50cyIsIm9rIiwidGV4dCIsIm1hcCIsImVuZFBvaW50IiwiZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJmYWlsZWRSZXF1ZXN0cyIsInByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkIiwiX2FyZ3MyIiwiYnVpbGREaXNjb3ZlcnlVcmwiLCJwaW5nIiwidGltZSIsIl9kaXNjb3ZlcnlVcmkiLCJkaXNjb3ZlcnlQYXJhbWV0ZXJzIiwic2VhcmNoUGFyYW1zIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwiYXBpVmVyc2lvbiIsIkZldGNoVGltZW91dEVycm9yIiwiX0Vycm9yIiwiX3dyYXBOYXRpdmVTdXBlciIsIl90aW1lb3V0RHVyYXRpb24iLCJfcm91bmRUcmlwVGltZSIsIl9waW5nIiwic3RhcnQiLCJyZXF1ZXN0T3B0aW9ucyIsImJ1aWxkUGluZ1VybCIsImZldGNoV2l0aFRpbWVvdXQiLCJfc3Vic2NyaWJlIiwibG9jYWxTZXNzaW9uRGVzY3JpcHRpb24iLCJmYWlsdXJlQ291bnQiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIiLCJfb3B0aW9ucyRvblN1YnNjcmliZVI0IiwiY2xpZW50VmVyc2lvbiIsInJlcXVlc3RCb2R5IiwiZmV0Y2hSZXF1ZXN0T3B0aW9ucyIsImh0dHBSZXNwb25zZSIsImpzb25SZXNwb25zZUJvZHkiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIyIiwiX3Jlc3BvbnNlIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMyIsIl9yZXNwb25zZTIiLCJmaW5pc2hlZCIsInN1YnNjcmliZVJlc3BvbnNlIiwiYnVpbGRVcmwiLCJiZWFyZXJUb2tlbiIsImh0dHBSb3VuZFRyaXBUaW1lIiwic2Vzc2lvbkRlc2NyaXB0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb24iLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uIiwib25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2siLCJleGVjdXRlRmV0Y2hSZXF1ZXN0IiwicGFyc2VKc29uQm9keSIsImhhbmRsZVN0cmVhbVJlc3BvbnNlQ29udGV4dCIsInN0cmVhbVJlc3BvbnNlQ29udGV4dCIsIm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyIsIm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayIsIm5vcm1hbGl6ZVN1YnNjcmliZVJlc3BvbnNlIiwiX3B1Ymxpc2giLCJib2R5V2l0aE9mZmVyIiwiYm9keVdpdGhvdXRPZmZlciIsInB1Ymxpc2hSZXNwb25zZSIsIm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMiLCJub3JtYWxpemVQdWJsaXNoUmVzcG9uc2UiLCJwdWJsaXNoIiwiX3g1IiwiX3g2IiwiX3g3Iiwic3RyZWFtIiwic2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsInNoYXJlZFNlY3JldCIsIm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDgiLCJfeDkiLCJfbGltaXRCaXRyYXRlIiwiX2NhbGxlZTUiLCJlbGFwc2VkSW5NaWxsaXNlY29uZHMiLCJiaXRyYXRlSW5CaXRzUGVyU2Vjb25kIiwiX2NvbnRleHQ1IiwibWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMiLCJsaW1pdEJpdHJhdGUiLCJfeDAiLCJfeDEiLCJfeDEwIiwiX3gxMSIsIl94MTIiLCJfYWRkSWNlQ2FuZGlkYXRlcyIsIl9jYWxsZWU2IiwiY2FuZGlkYXRlcyIsImRpc2NvdmVyeUNvbXBsZXRlZCIsImFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsIl9hcmdzNiIsIl9jb250ZXh0NiIsIm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzIiwiYWRkSWNlQ2FuZGlkYXRlcyIsIl94MTMiLCJfeDE0IiwiX3gxNSIsIl9kZXN0cm95U3RyZWFtIiwiX2NhbGxlZTciLCJkZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfY29udGV4dDciLCJtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbSIsImRlc3Ryb3lTdHJlYW0iLCJfeDE2IiwiX3gxNyIsIl9kZXN0cm95U3RyZWFtT25Vbm1vdW50IiwiX2NhbGxlZTgiLCJfY29udGV4dDgiLCJlcnIiLCJkZXN0cm95U3RyZWFtT25Vbm1vdW50IiwiX3gxOCIsIl94MTkiLCJfZmV0Y2hXaXRoVGltZW91dCIsIl9jYWxsZWU5IiwidGltZW91dER1cmF0aW9uIiwiY29udHJvbGxlciIsIl9jb250ZXh0OSIsIl9vYmplY3RTcHJlYWQiLCJzaWduYWwiLCJhYm9ydCIsIl94MjAiLCJfeDIxIiwiX3gyMiIsIl9leGVjdXRlRmV0Y2hSZXF1ZXN0IiwiX2NhbGxlZTAiLCJvcGVyYXRpb24iLCJfY29udGV4dDAiLCJfeDIzIiwiX3gyNCIsIl94MjUiLCJwYXRoIiwicGF0aEFzQXJyYXkiLCJfcGFyc2VKc29uQm9keSIsIl9jYWxsZWUxIiwiX2NvbnRleHQxIiwianNvbiIsIl94MjYiLCJjb250ZXh0IiwibGFnIiwicnRjQ29uZmlndXJhdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24iLCJidW5kbGVQb2xpY3kiLCJpY2VDYW5kaWRhdGVQb29sU2l6ZSIsImljZVRyYW5zcG9ydFBvbGljeSIsInJ0Y3BNdXhQb2xpY3kiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfY2FsbGVlMTAiLCJfY29udGV4dDEwIiwiX3gyNyIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzIiwiX2NhbGxlZTExIiwiX2NvbnRleHQxMSIsIl94MjgiLCJfY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbSIsIl9jYWxsZWUxMiIsIl9jb250ZXh0MTIiLCJfeDI5IiwiUHVibGlzaGVyU3RhdGUiLCJTZXNzaW9uVGVsZW1ldHJ5IiwiUHVibGlzaGVyQ29udGV4dCIsIlJlYWxUaW1lUHVibGlzaGVyIiwiZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uIiwiZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMiLCJzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHMiLCJvbmVIb3VySW5NaWxsaXNlY29uZHMiLCJtYXhSZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsSW5NaWxsaXNlY29uZHMiLCJQdWJsaXNoZXIiLCJwZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zIiwiX3Rva2VuQ29udGV4dCIsIl9wdWJsaXNoZXJDb250ZXh0IiwiX3BlZXJDb25uZWN0aW9uQ29udGV4dCIsIl9zdGF0ZUNvbnRleHQiLCJfcHVibGlzaGVyU3RhcnRUaW1lIiwiX3JlYWRPbmx5VG9rZW4iLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiIsIl9yZWFkT25seVN0YXRlIiwic3RhdGUiLCJfcmVhZE9ubHlUb2tlbkV4cGlyaW5nIiwiX3JlYWRPbmx5QXV0aG9yaXplZCIsImF1dGhvcml6ZWQiLCJfcmVhZE9ubHlPbmxpbmUiLCJvbmxpbmUiLCJfcmVhZE9ubHlMb2FkaW5nIiwibG9hZGluZyIsIl9yZWFkT25seVB1Ymxpc2hpbmciLCJwdWJsaXNoaW5nIiwiX3JlYWRPbmx5U3RhbmRieSIsInN0YW5kYnkiLCJfcmVhZE9ubHlTdG9wcGVkIiwic3RvcHBlZCIsIl9yZWFkT25seUZhaWx1cmVDb3VudCIsIl9yZWFkT25seUVuZFBvaW50IiwiX3JlYWRPbmx5U3RyZWFtIiwiX3JlYWRPbmx5UnRjU3RhdGlzdGljcyIsIl9yZWFkT25seU1lZGlhU3RyZWFtIiwiX3Nlc3Npb25UZWxlbWV0cnkiLCJwdWJsaXNoZXJEaXNwb3NhYmxlcyIsImNsZWFyRmFpbHVyZUNvdW50VGltZW91dCIsIlB1Ymxpc2hpbmciLCJyZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyIiwiZGlzcG9zYWJsZXMiLCJfc3RvcCIsInByb2Nlc3NTdG9wIiwiY2xlYW5VcFJlc291cmNlcyIsIlN0b3BwZWQiLCJfZGlzcG9zZSIsImdldFVyaSIsIl9zdGFydCIsInByb2Nlc3NTdGFydCIsIl9wcm9jZXNzU3RhcnQiLCJsaXN0ZW5PblN0cmVhbVNldHVwIiwiaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrIiwic3RyZWFtUHVibGlzaGVyIiwiU3RhcnRpbmciLCJVbmF1dGhvcml6ZWQiLCJSZWNvdmVyaW5nIiwiaGFuZGxlU3RyZWFtRmFpbHVyZSIsIkNsaWVudFN0YXJ0RXJyb3IiLCJmaW5hbGx5IiwiYXV0b21hdGljUmV0cnlPbkZhaWx1cmUiLCJzdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzIiwidGltZW91dElkIiwiZ2V0UmV0cnlJbnRlcnZhbCIsInNldE1lZGlhU3RyZWFtIiwiX3RoaXM1IiwibWVkaWFUcmFjayIsIl90aGlzNSRfcGVlckNvbm5lY3RpbyIsInNlbmRlciIsIl9zZW5kZXIkdHJhY2siLCJyZXBsYWNlVHJhY2siLCJPZmZsaW5lIiwiSW5pdGlhbGl6aW5nIiwiTm90Rm91bmQiLCJHZW9SZXN0cmljdGVkIiwiR2VvQmxvY2tlZCIsIlJlY29ubmVjdGluZyIsIlVuc3VwcG9ydGVkRmVhdHVyZSIsIkNvbmZpZ3VyYXRpb25FcnJvciIsIlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciIsIkNvbm5lY3Rpb25FcnJvciIsIl9oYW5kbGVTdHJlYW1GYWlsdXJlIiwicmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCIsIl90aGlzNiIsInB1Ymxpc2hlckluaXRpYWxpemF0aW9uIiwiZ2VuZXJhdGVTY3JlZW5OYW1lIiwiYXBwbHlQdWJsaXNoU3RhdHVzIiwiYXBwbHlVbmF1dGhvcml6ZWQiLCJhcHBseU5vdEZvdW5kIiwiYXBwbHlVbmhhbmRsZWRFcnJvciIsImFwcGx5U2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMiLCJhcHBseUFkZEljZUNhbmRpZGF0ZXNTdGF0dXMiLCJtYXBQdWJsaXNoU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMiLCJQdWJsaXNoZXJzIiwiY3JlYXRlUHVibGlzaGVyIiwiaW5pdGlhbGl6ZWQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwiLCJzb2Z0UmVzdGFydEludGVydmFsIiwicHVibGlzaGVyQ29udGV4dCIsInBlZXJDb25uZWN0aW9uQ29udGV4dCIsIm5hdmlnYXRvcklzT25MaW5lIiwibWVkaWFUcmFja3MiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5IiwiX3JlZjMkIiwiY2xpZW50T2ZmZXJEaXNhYmxlZCIsInN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiIsInN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiIsImFwcGx5UnRjQ29uZmlndXJhdGlvbiIsInN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0IiwiY2FuY2VsRGlzY292ZXJ5IiwiY2FuZGlkYXRlIiwiX3RoaXMkX3B1Ymxpc2hlckNvbnRlIiwiX3JlZjQiLCJtYXBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMiLCJyZXRyeUNhbGxiYWNrIiwicmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfY3JlYXRlQW5zd2VyRGVzY3JpcHQiLCJhbnN3ZXIiLCJfcmVmNSIsIm1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMiLCJfdGhpcyRfcHVibGlzaGVyQ29udGUyIiwicnRjUHVibGlzaE1vbml0b3IiLCJhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsInJ0Y1N0YXRpc3RpYyIsInN0YXRpc3RpY3MiLCJfYXBwbHlSdGNDb25maWd1cmF0aW9uIiwib3B0aW9uYWxQZWVyQ29ubmVjdGlvbiIsIm5ld1J0Y0NvbmZpZ3VyYXRpb24iLCJtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX3BlZXJDb25uZWN0aW9uJGN1cnJlIiwiaXNDbGllbnRPZmZlckZsb3ciLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQiLCJpY2VSZXN0YXJ0Iiwib2ZmZXIiLCJfX0JVSUxEX1ZFUlNJT05fXyIsIl9kZWZhdWx0VmVyc2lvbiIsIlRlbGVtZXRyeVNlcnZpY2UiLCJfdGVsZW1ldHJ5U2VydmljZSIsImxvZ1JlY29yZCIsIl9sb2dzIiwic2VuZExvZ3NJZkFibGUiLCJsb2dNZXNzYWdlcyIsIl9zZW5kTG9nc0lmQWJsZSIsIm51bWJlck9mTG9nc1RvU2VuZCIsInNpemVPZkxvZ3NUb1NlbmQiLCJnZXRJdGVtU2l6ZSIsImdldExvZ1NpemUiLCJzdW0iLCJkdXJhdGlvbiIsIl9kdXJhdGlvbiIsImlzTmVnYXRpdmUiLCJhYnMiLCJvZmZzZXQiLCJtaWxsaXNlY29uZHMiLCJzZWNvbmRzIiwibWludXRlcyIsImhvdXJzIiwicGFydHMiLCJTdHJpbmciLCJwYWRTdGFydCIsInRhcmdldExlbmd0aCIsInBhZFN0cmluZyIsInJlcGVhdCIsImRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyIsInJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmYiLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCIsIm1heCIsIm1pbiIsIl9uZXR3b3JrTW9uaXRvciIsInJlY29yZEZvcmVncm91bmRDaGFuZ2UiLCJyZWNvcmROZXR3b3JrUlRUVXBkYXRlIiwicmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUiLCJkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsInJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSIsInRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJuZXdSVFQiLCJvbGRSdHQiLCJfbGFzdE5ldHdvcmtTdGF0aXN0aWNzIiwibmV3TmV0d29ya1R5cGUiLCJvbGROZXR3b3JrVHlwZSIsIm5ld0NhcGFjaXR5Iiwib2xkQ2FwYWNpdHkiLCJmbG9hdCJdLCJzb3VyY2VSb290IjoiIn0=