@projectcor/maia-components 2.11.60-2 → 2.11.60-3

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.
@@ -1037,7 +1037,7 @@ export var useChatManager = function useChatManager(_ref3) {
1037
1037
  projects = _context3.sent;
1038
1038
  payloadFaqId = faqId !== null && faqId !== void 0 ? faqId : options.faqId;
1039
1039
  payloadAgentSuggestionId = agentSuggestionId !== null && agentSuggestionId !== void 0 ? agentSuggestionId : options.agentSuggestionId;
1040
- payloadData = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
1040
+ payloadData = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
1041
1041
  message: finalMessage,
1042
1042
  history: history,
1043
1043
  projectId: projectToRequest,
@@ -1082,6 +1082,8 @@ export var useChatManager = function useChatManager(_ref3) {
1082
1082
  scId: payloadScId
1083
1083
  } : {}), (agent === null || agent === void 0 ? void 0 : agent.entity) != null ? {
1084
1084
  agentEntity: agent.entity
1085
+ } : {}), (agent === null || agent === void 0 ? void 0 : agent.type) != null ? {
1086
+ agentType: agent.type
1085
1087
  } : {}), contextMessage ? {
1086
1088
  contextMessage: contextMessage
1087
1089
  } : {});
@@ -1108,7 +1110,7 @@ export var useChatManager = function useChatManager(_ref3) {
1108
1110
  role: historyMessage.user.id === authUser.id.toString() ? ChatHistoryRole.USER : ChatHistoryRole.ASSISTANT
1109
1111
  };
1110
1112
  });
1111
- askMaia(_objectSpread(_objectSpread(_objectSpread({
1113
+ askMaia(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
1112
1114
  message: currentUserQuestion.current,
1113
1115
  history: history,
1114
1116
  projectId: option.id,
@@ -1129,6 +1131,8 @@ export var useChatManager = function useChatManager(_ref3) {
1129
1131
  clientId: Number(option.clientId)
1130
1132
  } : {}), (agent === null || agent === void 0 ? void 0 : agent.entity) != null ? {
1131
1133
  agentEntity: agent.entity
1134
+ } : {}), (agent === null || agent === void 0 ? void 0 : agent.type) != null ? {
1135
+ agentType: agent.type
1132
1136
  } : {}));
1133
1137
  }
1134
1138
  }, [project, setProject, askMaia, authUser, isWebSearchActive, agent]);
@@ -1358,7 +1362,7 @@ export var useChatManager = function useChatManager(_ref3) {
1358
1362
  role: historyMessage.user.id === authUser.id.toString() ? ChatHistoryRole.USER : ChatHistoryRole.ASSISTANT
1359
1363
  };
1360
1364
  });
1361
- askMaia(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
1365
+ askMaia(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
1362
1366
  message: userInitialMessage.message,
1363
1367
  history: history,
1364
1368
  projectId: (project === null || project === void 0 ? void 0 : project.id) || null,
@@ -1403,6 +1407,8 @@ export var useChatManager = function useChatManager(_ref3) {
1403
1407
  scId: userInitialMessage.scId
1404
1408
  } : {}), (agent === null || agent === void 0 ? void 0 : agent.entity) != null ? {
1405
1409
  agentEntity: agent.entity
1410
+ } : {}), (agent === null || agent === void 0 ? void 0 : agent.type) != null ? {
1411
+ agentType: agent.type
1406
1412
  } : {}), buildContextMessage(userInitialMessage.mentions) ? {
1407
1413
  contextMessage: buildContextMessage(userInitialMessage.mentions)
1408
1414
  } : {}));
@@ -1449,4 +1455,4 @@ export var useChatManager = function useChatManager(_ref3) {
1449
1455
  isDisabled: waitingResponse || loadingMessages
1450
1456
  };
1451
1457
  };
1452
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJmZXRjaEFnZW50RGV0YWlsIiwiYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QiLCJnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJzdHJlYW1pbmdTdG9yZSIsImlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCIsIm1lcmdlU3RyZWFtQ2h1bmsiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwibm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMiLCJyYXdBdHRhY2htZW50cyIsImZpbHRlciIsImF0dGFjaG1lbnQiLCJfdHlwZW9mIiwibWFwIiwiaW5kZXgiLCJuYW1lIiwidHJpbSIsImNvbmNhdCIsInR5cGUiLCJtaW1lVHlwZSIsIm1pbWVfdHlwZSIsImZ1bGxGaWxlTmFtZSIsImluY2x1ZGVzIiwibnVtZXJpY1NpemUiLCJzaXplIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJmaWxlIiwiRmlsZSIsImlkIiwidXJsX29yaWdpbmFsIiwidW5kZWZpbmVkIiwidXJsX3RodW1ibmFpbCIsInVybF9maWxlIiwicm9sZSIsImV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyIsInBlbmRpbmdBY3Rpb25zIiwiaWRzIiwicHVzaElkIiwicmF3IiwibiIsInBhcnNlSW50IiwiU3RyaW5nIiwiaXNOYU4iLCJwdXNoIiwiZm9yRWFjaCIsImFjdGlvbiIsIl9yZWMkdGFza19pZCIsImFyZ3MiLCJ0b29sX2FyZ3MiLCJyZWMiLCJ0YXNrX2lkIiwidGFza19pZHMiLCJ0YXNrcyIsInQiLCJfdHJlYyR0YXNrX2lkIiwidHJlYyIsImV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zIiwidG9vbF9uYW1lIiwiX3JlYyR0YXNrX2lkMiIsImxpc3QiLCJ0aWQiLCJleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyIsIl9yZWMkYWdlbnRfaWQiLCJlZGl0QWN0aW9uIiwiZmluZCIsImEiLCJ0b0xvd2VyQ2FzZSIsImFnZW50X2lkIiwiYWdlbnRJZCIsImV4dHJhY3RBZ2VudElkRnJvbVBlbmRpbmdBY3Rpb25zQnlUb29sTmFtZSIsInRvb2xOYW1lIiwiX3JlZiIsIl9yZWMkYWdlbnRfaWQyIiwiZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0IiwidGV4dCIsImxhYmVsZWQiLCJtYXRjaCIsImJvbGQiLCJ1c2VTdGFibGVDYWxsYmFja3MiLCJhdXRoVXNlciIsImN1cnJlbnRVc2VyIiwidG9TdHJpbmciLCJmaXJzdE5hbWUiLCJhdmF0YXIiLCJwaWN0dXJlIiwiY3VycmVudCIsInBhcnNlU1NFTGluZSIsImxpbmUiLCJfbGluZSRzcGxpdCIsInNwbGl0IiwiX2xpbmUkc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJldmVudExpbmUiLCJkYXRhTGluZSIsImV2ZW50VHlwZSIsInJlcGxhY2UiLCJkYXRhU3RyIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsInBhcnNlRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzU1NFU3RyZWFtIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3BvbnNlIiwidGhyZWFkSWQiLCJjYWxsYmFja3MiLCJfcmVzcG9uc2UkYm9keSIsInJlYWRlciIsImRlY29kZXIiLCJidWZmZXIiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJpc1N0cmVhbUNvbXBsZXRlIiwiaGFuZGxlTGluZSIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiaSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiX2hhbmRsZUxpbmUiLCJwYXJzZWQiLCJldmVudERhdGEiLCJvblRoaW5raW5nIiwiY29udGVudCIsIm9uVG9rZW4iLCJfZXZlbnREYXRhJGFnZW50X2lkIiwiZmluYWxDb250ZW50Iiwic291cmNlcyIsIm1lbW9yeVNlc3Npb25JZCIsIm1lbW9yeV9zZXNzaW9uX2lkIiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImNvbXBsZXRlZEFnZW50SWQiLCJvbkNvbXBsZXRlIiwibWVzc2FnZSIsIm9uTm9kZSIsIl9ldmVudERhdGEkYWdlbnRfaWQyIiwiX2NhbGxiYWNrcyRvbkFwcHJvdmFsIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiY2FsbCIsIm9uRXJyb3IiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsInJlYWQiLCJzZW50IiwiYWJydXB0IiwiZGVjb2RlIiwic3RyZWFtIiwicG9wIiwibGVuZ3RoIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ1c2VDaGF0TWFuYWdlciIsIl9yZWYzIiwiaW5pdGlhbENoYXRJZCIsImNoYXRJZCIsInVzZXJJbml0aWFsTWVzc2FnZSIsIl9yZWYzJGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwiX3VzZUdsb2JhbENvbnRleHQiLCJwcm9qZWN0Iiwic2V0UHJvamVjdCIsImNsaWVudCIsInNldENsaWVudCIsInRhc2siLCJzZXRUYXNrIiwiYWdlbnQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImNoaXBzUHJvamVjdCIsInNldENoaXBzUHJvamVjdCIsImV2ZW50IiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VTdGFibGVDYWxsYmFja3MiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImxhc3RNYW51YWxBcHByb3ZhbFJlZiIsImhpdGxFeGVjdXRpb25Db250ZXh0UmVmIiwiaXNQcm9jZXNzaW5nUmVmIiwiZmlyc3RUaW1lUmVmIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZiIsImFjdGl2ZVN0cmVhbUNoYXRJZFJlZiIsImFib3J0U3RyZWFtU2lsZW50bHlSZWYiLCJjbGVhclN0cmVhbVVpUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsIl91c2VDaGF0TWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJtZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsImNsZWFyIiwiaXNDbG9uZUFnZW50IiwibGFzdE1zZ1dpdGhQcm9qZWN0IiwibXNnIiwicHJvamVjdElkIiwiYXQiLCJfcmVmNCIsInByb2plY3ROYW1lIiwidGhlbiIsInByb2plY3RzIiwiZm91bmQiLCJwIiwiX2ZvdW5kJGNsaWVudCIsImNsaWVudE5hbWUiLCJsYXN0TXNnV2l0aENsaWVudCIsImNsaWVudElkIiwiX3JlZjUiLCJtc2dDbGllbnRJZCIsIm1zZ0NsaWVudE5hbWUiLCJoYW5kbGVTdHJlYW1FcnJvciIsImVycm9yTWVzc2FnZSIsImVycm9yUmF3TWVzc2FnZSIsIl9lcnJvclJhd01lc3NhZ2UkbWF0YyIsIl9lcnJvclJhd01lc3NhZ2UkbWF0YzIiLCJ0ZW1wTWVzc2FnZUlkIiwidXNlZCIsImlzRXJyb3IiLCJkYXRlIiwiRGF0ZSIsInVzZXIiLCJBU1NJU1RBTlQiLCJoYW5kbGVTdHJlYW1VcGRhdGUiLCJzdGFydCIsInNldFRleHQiLCJoYW5kbGVTdHJlYW1GaW5pc2giLCJfcmVmNiIsIl9jYWxsZWUyIiwic3ViYWdlbnROYW1lIiwicmVzb2x2ZWRDb250ZXh0IiwiX3ByZXZpb3VzTWVzc2FnZSRhcHByIiwiX3dpbmRvdyR0YXNrUGFuZWwiLCJfY3JlYXRlQWdlbnRGb2xsb3dVcCIsIl9lZGl0QWdlbnRGb2xsb3dVcCIsInRhc2tVcmxSZWdleCIsIm1hdGNoZXMiLCJjb250ZW50VG9BZGQiLCJwcmV2aW91c01lc3NhZ2UiLCJoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlIiwiVEFTS19DUkVBVElPTl9UT09MUyIsIlRBU0tfRURJVF9UT09MUyIsIlRBU0tfREVMRVRFX1RPT0xTIiwid2FzVGFza0NyZWF0aW9uIiwid2FzVGFza0VkaXQiLCJ3YXNUYXNrRGVsZXRlIiwid2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCIsIndhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiY29uZmlndXJlZEFnZW50SWQiLCJ3YXNFZGl0QWdlbnRBcHByb3ZlZCIsImVkaXRBZ2VudEZvbGxvd1VwIiwiZnJvbVN0cmVhbSIsImZyb21BcmdzIiwicmVzb2x2ZWRBZ2VudElkIiwidGFza0lkc0Zyb21VcmxzIiwidGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCIsInRhc2tJZHNGcm9tRGVsZXRpb25UZXh0IiwidGFza0lkc0ZvckRhc2hib2FyZCIsInNob3VsZFN5bmNEYXNoYm9hcmQiLCJ0YXNrSWRzIiwidGFiIiwidGFiU2VnbWVudCIsImxhc3RQcm9qZWN0TWVzc2FnZSIsImNvbnRleHRQcm9qZWN0SWRSYXciLCJjb250ZXh0UHJvamVjdElkIiwicGF0aE1hdGNoIiwicm91dGVQcm9qZWN0SWQiLCJpc09uUHJvamVjdFJvdXRlIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMiIsIl93aW5kb3ckbmV3UHJvamVjdERhczMiLCJfd2luZG93JG5ld1Byb2plY3REYXM0IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNSIsIl93aW5kb3ckbmV3UHJvamVjdERhczYiLCJvcGVuVGFza1BhbmVsSWQiLCJtYW51YWxBcHByb3ZhbCIsIm1hbnVhbFdhc1Rhc2tFZGl0IiwibWFudWFsV2FzVGFza0RlbGV0ZSIsIl9tYW51YWxBcHByb3ZhbCR0b29sQSIsIm1hbnVhbFBzZXVkb0FjdGlvbiIsImFmZmVjdGVkVGFza0lkcyIsIl93aW5kb3ckdGFza1BhbmVsMiIsIl93aW5kb3ckdGFza1BhbmVsMiRyZSIsIl9jb250ZXh0MiIsIlJlZ0V4cCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hdGNoQWxsIiwibSIsImFwcHJvdmFsIiwicGVuZGluZ19hY3Rpb25zIiwic29tZSIsImFwcHJvdmFsU3RhdHVzIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImFpQ2hhdEhpdGxPcHRpb24iLCJfb2JqZWN0U3ByZWFkIiwiYWdlbnRfdHlwZSIsImFjdGlvbl90eXBlIiwiZGVjaXNpb24iLCJvcHRpb24iLCJjcmVhdGVkX2FnZW50X2lkIiwidXJsIiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5ld1Byb2plY3REYXNoYm9hcmQiLCJhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCIsImVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZCIsImRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQiLCJ0YXNrUGFuZWwiLCJ0YXNrSWQiLCJ0b29sQXJncyIsInJlZmV0Y2hUYXNrIiwicHJvamVjdF9pZCIsInByb2plY3RfbmFtZSIsImNsaWVudF9uYW1lIiwiY2xpZW50X2lkIiwiX2ZvdW5kJGNsaWVudDIiLCJjaGF0QWdlbnQiLCJlcnIiLCJfeDQiLCJfeDUiLCJfeDYiLCJfeDciLCJfeDgiLCJfeDkiLCJfeDAiLCJfeDEiLCJoYW5kbGVTdHJlYW1TdG9wIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsInNldFRpbWVvdXQiLCJoYW5kbGVBcHByb3ZhbFJlcXVpcmVkIiwiX3JlZjciLCJfYXBwcm92YWxBbnkkcmVzb2x2ZWQiLCJfYXBwcm92YWxBbnkkc3ViYWdlbnQiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QiLCJhcHByb3ZhbEFueSIsInJjIiwicmVzb2x2ZWRfY29udGV4dCIsInN1YmFnZW50IiwiX2ZvdW5kJGNsaWVudDMiLCJoaXRsQ29udGV4dCIsIm1lc3NhZ2VJZCIsIm9yaWdpbmFsX3RocmVhZF9pZCIsIm1lc3NhZ2VUZXh0IiwidGhyZWFkSWRzIiwidGhyZWFkX2lkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwiX2FwcHJvdmFsJHBlbmRpbmdfYWN0MiIsIl9yZWY4IiwiX3Rvb2xfbmFtZSIsIl90b29sX2FyZ3MiLCJmaXJzdEFjdGlvbiIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJhc2tNYWlhIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5Iiwic3RvcFN0cmVhbWluZyIsImFib3J0U3RyZWFtU2lsZW50bHkiLCJjdXJyZW50UHJvamVjdCIsInNlbmRNZXNzYWdlIiwiX3JlZjkiLCJfY2FsbGVlMyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsIl9tZXNzYWdlc1JlZiRjdXJyZW50IiwiX3Byb2plY3QkY2xpZW50IiwiX25vcm1hbGl6ZVNlbmRNZXNzYWdlIiwiZWZmZWN0aXZlTWVudGlvbnMiLCJjb250ZXh0TWVzc2FnZSIsInBheWxvYWRGdWFJZCIsInBheWxvYWRTY0lkIiwiZGlzcGxheU1lc3NhZ2UiLCJuZXdNZXNzYWdlSWQiLCJsYXN0TWVzc2FnZVdpdGhQcm9qZWN0IiwiY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZCIsImZpbmFsTWVzc2FnZSIsIl9vcHRpb25zJHByb2plY3RDaGFuZyIsImhpc3RvcnkiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsInByb2plY3RUb1JlcXVlc3QiLCJwYXlsb2FkRmFxSWQiLCJwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQiLCJwYXlsb2FkRGF0YSIsIl9jb250ZXh0MyIsInBtQWlUeXBlZFRleHQiLCJVU0VSIiwicHJvamVjdENoYW5nZWQiLCJpbmNvbWVUeXBlIiwiaGlzdG9yeU1lc3NhZ2UiLCJsYW5nIiwidXNlcklkIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjb21wYW55X2lkIiwiYWdlbnROYW1lIiwiZmVlSWQiLCJ0YXNrTmFtZSIsImVudGl0eSIsImFnZW50RW50aXR5IiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3gxMyIsIl94MTQiLCJfeDE1IiwiX3gxNiIsImNoYW5nZVByb2plY3QiLCJoYW5kbGVGZWVkYmFjayIsIl9yZWYwIiwiX2NhbGxlZTQiLCJmZWVkYmFja1Byb3AiLCJjaGF0TWVzc2FnZUlkIiwiX2NvbnRleHQ0IiwiQ2hhdHMiLCJ3YXNIZWxwZnVsQ2hhdCIsIlRIVU1CU19VUCIsIndhc0hlbHBmdWwiLCJfeDE3IiwiX3gxOCIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb24iLCJfcmVmMSIsIl9jYWxsZWU1IiwiZWRpdGVkQWN0aW9ucyIsIm1lc3NhZ2VXaXRoQXBwcm92YWwiLCJsb2FkaW5nS2V5IiwiaW5pdGlhbEFjdGl2aXR5IiwiZXhpc3RpbmdNZXNzYWdlIiwibmV3U3RhdHVzIiwiX3QiLCJfY29udGV4dDUiLCJfbSRhcHByb3ZhbCIsIl9kZWZpbmVQcm9wZXJ0eSIsIk9yY2hlc3RyYXRvciIsImNvbnRpbnVlVGhyZWFkIiwic2Vzc2lvbklkIiwic2Vzc2lvbl9pZCIsIm9rIiwiYWN0aXZpdHkiLCJwaGFzZSIsImN1cnJlbnRUaHJlYWRJZCIsIm5vZGVBY3Rpdml0eSIsInVzZVJlc3VtaW5nRmFsbGJhY2siLCJuZXdMb2FkaW5ncyIsImFwcHJvdmFsUGF5bG9hZCIsImZpbmlzaCIsIl94MTkiLCJfeDIwIiwiX3gyMSIsImluaXRpYWxpemVDaGF0IiwiX2NhbGxlZTYiLCJfdXNlckluaXRpYWxNZXNzYWdlJG0iLCJfdXNlckluaXRpYWxNZXNzYWdlJGEiLCJfcHJvamVjdCRjbGllbnQyIiwiX3Byb2plY3QkY2xpZW50MyIsImhhc0luaXRpYWxNZXNzYWdlIiwiaGFzSW5pdGlhbEF0dGFjaG1lbnRzIiwiaGFzSW5pdGlhbEZhcSIsImhhc0luaXRpYWxGdWEiLCJoYXNJbml0aWFsU2MiLCJfY29udGV4dDYiLCJCb29sZWFuIiwicmVzZXRDaGF0Iiwic3RvcEdlbmVyYXRpb24iLCJpc0Rpc2FibGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJhZGl4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGVkLW9wdGlvbmFsLWNoYWluICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgdXNlQ2hhdE1lc3NhZ2VzIH0gZnJvbSAnLi4vdXNlQ2hhdE1lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlT3JjaGVzdHJhdG9yU3RyZWFtIH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IFNlbmRNZXNzYWdlT3B0aW9ucywgVXNlQ2hhdE1hbmFnZXJQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1hbmFnZXIuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi91c2VFdmVudCdcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyLCBDaGF0SGlzdG9yeVJvbGUsIEFwcHJvdmFsUmVxdWVzdCwgUGVuZGluZ0FjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lc3NhZ2UsIGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2UnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgZmV0Y2hBZ2VudERldGFpbCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2ZldGNoQWdlbnREZXRhaWwnXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVkQ29udGV4dCB9IGZyb20gJy4uL3VzZU9yY2hlc3RyYXRvclN0cmVhbS91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QsIGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi91dGlscy9oaXRsQW5hbHl0aWNzJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG4gIHR5cGUgSGl0bEV4ZWN1dGlvbkNvbnRleHQsXG59IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBzdHJlYW1pbmdTdG9yZSB9IGZyb20gJy4uL3VzZVN0cmVhbWluZ01lc3NhZ2UnXG5pbXBvcnQgeyBpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQsIG1lcmdlU3RyZWFtQ2h1bmsgfSBmcm9tICcuLi8uLi91dGlscy9zc2VTdHJlYW1Db250ZW50J1xuXG50eXBlIEF0dGFjaG1lbnRzT3JPcHRpb25zID0gQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9uc1xuXG5jb25zdCBub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MgPSAoYXR0YWNobWVudHNPck9wdGlvbnM/OiBBdHRhY2htZW50c09yT3B0aW9ucykgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShhdHRhY2htZW50c09yT3B0aW9ucykpIHtcbiAgICByZXR1cm4geyBhdHRhY2htZW50czogYXR0YWNobWVudHNPck9wdGlvbnMsIG9wdGlvbnM6IHt9IGFzIFNlbmRNZXNzYWdlT3B0aW9ucyB9XG4gIH1cblxuICBjb25zdCBvcHRpb25zOiBTZW5kTWVzc2FnZU9wdGlvbnMgPSBhdHRhY2htZW50c09yT3B0aW9ucyA/PyB7fVxuICByZXR1cm4geyBhdHRhY2htZW50czogb3B0aW9ucy5hdHRhY2htZW50cyA/PyBbXSwgb3B0aW9ucyB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZUFzc2lzdGFudEF0dGFjaG1lbnRzID0gKHJhd0F0dGFjaG1lbnRzOiB1bmtub3duKTogQXR0YWNobWVudEZpbGVbXSA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheShyYXdBdHRhY2htZW50cykpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIHJldHVybiByYXdBdHRhY2htZW50c1xuICAgIC5maWx0ZXIoKGF0dGFjaG1lbnQpOiBhdHRhY2htZW50IGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+ICEhYXR0YWNobWVudCAmJiB0eXBlb2YgYXR0YWNobWVudCA9PT0gJ29iamVjdCcpXG4gICAgLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPVxuICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5uYW1lID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50Lm5hbWUudHJpbSgpID8gYXR0YWNobWVudC5uYW1lLnRyaW0oKSA6IGBmaWxlLSR7aW5kZXggKyAxfWBcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC50eXBlID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LnR5cGUudHJpbSgpID8gYXR0YWNobWVudC50eXBlLnRyaW0oKSA6ICdwZGYnXG4gICAgICBjb25zdCBtaW1lVHlwZSA9IHR5cGVvZiBhdHRhY2htZW50Lm1pbWVfdHlwZSA9PT0gJ3N0cmluZycgPyBhdHRhY2htZW50Lm1pbWVfdHlwZSA6ICcnXG4gICAgICBjb25zdCBmdWxsRmlsZU5hbWUgPSBuYW1lLmluY2x1ZGVzKCcuJykgPyBuYW1lIDogYCR7bmFtZX0uJHt0eXBlfWBcbiAgICAgIGNvbnN0IG51bWVyaWNTaXplID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQuc2l6ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICA/IGF0dGFjaG1lbnQuc2l6ZVxuICAgICAgICAgIDogTnVtYmVyLmlzRmluaXRlKE51bWJlcihhdHRhY2htZW50LnNpemUpKVxuICAgICAgICAgICAgPyBOdW1iZXIoYXR0YWNobWVudC5zaXplKVxuICAgICAgICAgICAgOiAwXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGU6IG5ldyBGaWxlKFtdLCBmdWxsRmlsZU5hbWUsIHsgdHlwZTogbWltZVR5cGUgfSksXG4gICAgICAgIGlkOlxuICAgICAgICAgIHR5cGVvZiBhdHRhY2htZW50LmlkID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LmlkLnRyaW0oKVxuICAgICAgICAgICAgPyBhdHRhY2htZW50LmlkXG4gICAgICAgICAgICA6IGBhc3Npc3RhbnQtZmlsZS0ke2luZGV4fS0ke2Z1bGxGaWxlTmFtZX1gLFxuICAgICAgICBuYW1lLFxuICAgICAgICBzaXplOiBudW1lcmljU2l6ZSxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdXJsX29yaWdpbmFsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfb3JpZ2luYWwgOiB1bmRlZmluZWQsXG4gICAgICAgIHVybF90aHVtYm5haWw6IHR5cGVvZiBhdHRhY2htZW50LnVybF90aHVtYm5haWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfdGh1bWJuYWlsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfZmlsZTogdHlwZW9mIGF0dGFjaG1lbnQudXJsX2ZpbGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfZmlsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcm9sZTogYXR0YWNobWVudC5yb2xlID09PSAnYXNzaXN0YW50JyA/ICdhc3Npc3RhbnQnIDogJ3VzZXInLFxuICAgICAgfVxuICAgIH0pXG59XG5cbi8qKiBFeHRyYWUgdGFza19pZHMgZGUgbG9zIHRvb2xfYXJncyBkZSBwZW5kaW5nX2FjdGlvbnMsIGN1YnJpZW5kbyBsYXMgZm9ybWFzIGNvbXVuZXM6XG4gKiAgLSBgeyB0YXNrX2lkIH1gIG8gYHsgaWQgfWBcbiAqICAtIGB7IHRhc2tfaWRzOiBbXSB9YFxuICogIC0gYHsgdGFza3M6IFt7IHRhc2tfaWR8aWQgfSwgLi4uXSB9YFxuICogIMOadGlsIHBhcmEgdG9vbHMgZGUgZWRpdC9hc3NpZ24vZGVsZXRlIGN1YW5kbyBsYSByZXNwdWVzdGEgZGVsIExMTSBubyBpbmNsdXllIFVSTHMgL3Rhc2tzLy4uLi9kZXRhaWwuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSk6IG51bWJlcltdIHtcbiAgY29uc3QgaWRzOiBudW1iZXJbXSA9IFtdXG4gIGNvbnN0IHB1c2hJZCA9IChyYXc6IHVua25vd24pID0+IHtcbiAgICBpZiAocmF3ID09IG51bGwpIHJldHVyblxuICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gIH1cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIHB1c2hJZChyZWMudGFza19pZCA/PyByZWMuaWQpXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tfaWRzKSkge1xuICAgICAgcmVjLnRhc2tfaWRzLmZvckVhY2gocHVzaElkKVxuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWMudGFza3MpKSB7XG4gICAgICByZWMudGFza3MuZm9yRWFjaCh0ID0+IHtcbiAgICAgICAgaWYgKHQgJiYgdHlwZW9mIHQgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHQpKSB7XG4gICAgICAgICAgY29uc3QgdHJlYyA9IHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgICBwdXNoSWQodHJlYy50YXNrX2lkID8/IHRyZWMuaWQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbi8qKiB0YXNrX2lkIC8gdGFza19pZHMgZW4gcGVuZGluZ19hY3Rpb25zIGRlIGRlbGV0ZV8qIChsYSByZXNwdWVzdGEgcHVlZGUgbm8gaW5jbHVpciBVUkxzIC90YXNrcy/igKYvZGV0YWlsKS4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBwZW5kaW5nQWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgaWYgKCFhY3Rpb24gfHwgdHlwZW9mIGFjdGlvbiAhPT0gJ29iamVjdCcpIHJldHVyblxuICAgIGNvbnN0IGFyZ3MgPSBhY3Rpb24udG9vbF9hcmdzXG4gICAgaWYgKCEoYXJncyAmJiB0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoYXJncykpKSByZXR1cm5cbiAgICBjb25zdCByZWMgPSBhcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFzaycpIHtcbiAgICAgIGNvbnN0IHJhdyA9IHJlYy50YXNrX2lkID8/IHJlYy5pZFxuICAgICAgaWYgKHJhdyAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYWN0aW9uLnRvb2xfbmFtZSA9PT0gJ2RlbGV0ZV90YXNrc19iYXRjaCcpIHtcbiAgICAgIGNvbnN0IGxpc3QgPSByZWMudGFza19pZHNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpc3QpKSB7XG4gICAgICAgIGxpc3QuZm9yRWFjaCh0aWQgPT4ge1xuICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcodGlkKSwgMTApXG4gICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgZWRpdEFjdGlvbiA9IHBlbmRpbmdBY3Rpb25zLmZpbmQoYSA9PiAoYS50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdlZGl0X2FnZW50JylcbiAgaWYgKFxuICAgICFlZGl0QWN0aW9uIHx8XG4gICAgIWVkaXRBY3Rpb24udG9vbF9hcmdzIHx8XG4gICAgdHlwZW9mIGVkaXRBY3Rpb24udG9vbF9hcmdzICE9PSAnb2JqZWN0JyB8fFxuICAgIEFycmF5LmlzQXJyYXkoZWRpdEFjdGlvbi50b29sX2FyZ3MpXG4gICkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gZWRpdEFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSwgdG9vbE5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBhY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSB0b29sTmFtZS50b0xvd2VyQ2FzZSgpKVxuICBpZiAoIWFjdGlvbiB8fCAhYWN0aW9uLnRvb2xfYXJncyB8fCB0eXBlb2YgYWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShhY3Rpb24udG9vbF9hcmdzKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gYWN0aW9uLnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBjb25zdCByYXcgPSByZWMuYWdlbnRfaWQgPz8gcmVjLmFnZW50SWQgPz8gcmVjLmlkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG4vKiogw5psdGltbyByZWN1cnNvIHNpIG5vIGhheSBsaW5rcyBuaSB0b29sX2FyZ3MgcGFyc2VhYmxlcyAocC4gZWouIFwiSUQgKio3NTk3MTA2KipcIikuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQodGV4dDogc3RyaW5nKTogbnVtYmVyW10ge1xuICBjb25zdCBsYWJlbGVkID0gdGV4dC5tYXRjaCgvXFxiSURcXHMqXFwqXFwqKFxcZCspXFwqXFwqL2kpXG4gIGlmIChsYWJlbGVkKSB7XG4gICAgY29uc3QgbiA9IHBhcnNlSW50KGxhYmVsZWRbMV0sIDEwKVxuICAgIHJldHVybiBOdW1iZXIuaXNOYU4obikgPyBbXSA6IFtuXVxuICB9XG4gIGNvbnN0IGJvbGQgPSB0ZXh0Lm1hdGNoKC9cXCpcXCooXFxkezUsfSlcXCpcXCovKVxuICBpZiAoYm9sZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChib2xkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICByZXR1cm4gW11cbn1cblxuY29uc3QgdXNlU3RhYmxlQ2FsbGJhY2tzID0gKGF1dGhVc2VyOiBDT1JVc2VyKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRVc2VyID0gdXNlUmVmPENoYXRNZXNzYWdlVXNlcj4oe1xuICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gIH0pXG5cbiAgaWYgKFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuaWQgIT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50Lm5hbWUgIT09IGF1dGhVc2VyLmZpcnN0TmFtZSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuYXZhdGFyICE9PSBhdXRoVXNlci5waWN0dXJlXG4gICkge1xuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQgPSB7XG4gICAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjdXJyZW50VXNlcjogY3VycmVudFVzZXIuY3VycmVudCxcbiAgfVxufVxuXG5jb25zdCBwYXJzZVNTRUxpbmUgPSAobGluZTogc3RyaW5nKTogeyBldmVudFR5cGU6IHN0cmluZzsgZGF0YTogdW5rbm93biB9IHwgbnVsbCA9PiB7XG4gIGlmICghbGluZS50cmltKCkpIHJldHVybiBudWxsXG5cbiAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcbiAgICByZXR1cm4geyBldmVudFR5cGUsIGRhdGEgfVxuICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBTU0UgZGF0YTonLCBwYXJzZUVycm9yLCBkYXRhU3RyKVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuY29uc3QgcHJvY2Vzc1NTRVN0cmVhbSA9IGFzeW5jIChcbiAgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICB0aHJlYWRJZDogc3RyaW5nLFxuICBjYWxsYmFja3M6IHtcbiAgICBvblRoaW5raW5nOiAoKSA9PiB2b2lkXG4gICAgb25Ub2tlbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgdGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uQ29tcGxldGU6IChcbiAgICAgIGZpbmFsQ29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogYW55W10gfCBudWxsLFxuICAgICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGwsXG4gICAgICBhZ2VudElkPzogc3RyaW5nIHwgbnVsbFxuICAgICkgPT4gdm9pZFxuICAgIG9uRXJyb3I6IChlcnJvcjogYW55LCB0aHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkPzogKGFwcHJvdmFsOiBhbnksIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICB9XG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgaWYgKCFyZWFkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICB9XG5cbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gIGxldCBidWZmZXIgPSAnJ1xuICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgbGV0IGlzU3RyZWFtQ29tcGxldGUgPSBmYWxzZVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUxpbmUobGluZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VTU0VMaW5lKGxpbmUpXG4gICAgaWYgKCFwYXJzZWQpIHJldHVyblxuXG4gICAgY29uc3QgeyBldmVudFR5cGUsIGRhdGEgfSA9IHBhcnNlZFxuICAgIGNvbnN0IGV2ZW50RGF0YSA9IGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuICAgIGlmIChldmVudFR5cGUgPT09ICd0aGlua2luZycpIHtcbiAgICAgIGNhbGxiYWNrcy5vblRoaW5raW5nKClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ3Rva2VuJykge1xuICAgICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBldmVudERhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEuY29udGVudCA6ICcnXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY29udGVudClcbiAgICAgIGNhbGxiYWNrcy5vblRva2VuKGFjY3VtdWxhdGVkQ29udGVudClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gdHlwZW9mIGV2ZW50RGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGV2ZW50RGF0YS5jb250ZW50IDogJydcbiAgICAgIGFjY3VtdWxhdGVkQ29udGVudCA9IG1lcmdlU3RyZWFtQ2h1bmsoYWNjdW11bGF0ZWRDb250ZW50LCBjb250ZW50KVxuICAgICAgY2FsbGJhY2tzLm9uVG9rZW4oYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgaWYgKGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZChldmVudERhdGEpKSB7XG4gICAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IGNvbnRlbnQgfHwgYWNjdW11bGF0ZWRDb250ZW50XG4gICAgICAgIGNvbnN0IHNvdXJjZXMgPSBldmVudERhdGEuc291cmNlcyB8fCBudWxsXG4gICAgICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChldmVudERhdGEubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkoZXZlbnREYXRhLmF0dGFjaG1lbnRzKSA/IGV2ZW50RGF0YS5hdHRhY2htZW50cyA6IG51bGxcbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5KVxuICAgICAgICAgID8gKGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdKVxuICAgICAgICAgIDogQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdGlvbnMpXG4gICAgICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW10pXG4gICAgICAgICAgICA6IG51bGxcbiAgICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IGV2ZW50RGF0YS5hZ2VudF9pZCA/PyBldmVudERhdGEuYWdlbnRJZFxuICAgICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID1cbiAgICAgICAgICBhZ2VudElkUmF3ICE9IG51bGwgJiYgU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSAhPT0gJycgPyBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpIDogbnVsbFxuICAgICAgICBjYWxsYmFja3Mub25Db21wbGV0ZShcbiAgICAgICAgICBmaW5hbENvbnRlbnQsXG4gICAgICAgICAgc291cmNlcyxcbiAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgdGhyZWFkSWQsXG4gICAgICAgICAgYXR0YWNobWVudHMsXG4gICAgICAgICAgc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgY29tcGxldGVkQWdlbnRJZFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdub2RlJykge1xuICAgICAgaWYgKGV2ZW50RGF0YS5tZXNzYWdlICYmIHR5cGVvZiBldmVudERhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2FsbGJhY2tzLm9uTm9kZShldmVudERhdGEubWVzc2FnZSwgdGhyZWFkSWQpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IChldmVudERhdGEuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgY29uc3Qgc291cmNlcyA9IChldmVudERhdGEuc291cmNlcyBhcyB1bmtub3duKSB8fCBudWxsXG4gICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAoZXZlbnREYXRhLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShldmVudERhdGEuYXR0YWNobWVudHMpID8gZXZlbnREYXRhLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5KVxuICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdF9yZXBseSBhcyBzdHJpbmdbXSlcbiAgICAgICAgOiBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0aW9ucylcbiAgICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW10pXG4gICAgICAgICAgOiBudWxsXG4gICAgICBjb25zdCBhZ2VudElkUmF3ID0gZXZlbnREYXRhLmFnZW50X2lkID8/IGV2ZW50RGF0YS5hZ2VudElkXG4gICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID0gYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgIGNhbGxiYWNrcy5vbkNvbXBsZXRlKGZpbmFsQ29udGVudCwgc291cmNlcywgbWVtb3J5U2Vzc2lvbklkLCB0aHJlYWRJZCwgYXR0YWNobWVudHMsIHN1Z2dlc3Rpb25zLCBjb21wbGV0ZWRBZ2VudElkKVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnYXBwcm92YWxfcmVxdWlyZWQnKSB7XG4gICAgICBjYWxsYmFja3Mub25BcHByb3ZhbFJlcXVpcmVkPy4oZXZlbnREYXRhLCBhY2N1bXVsYXRlZENvbnRlbnQsIHRocmVhZElkKVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnZXJyb3InKSB7XG4gICAgICBjYWxsYmFja3Mub25FcnJvcihldmVudERhdGEuZXJyb3IsIHRocmVhZElkKVxuICAgIH1cbiAgfVxuXG4gIHdoaWxlICghaXNTdHJlYW1Db21wbGV0ZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgIGlmIChkb25lKSB7XG4gICAgICBpc1N0cmVhbUNvbXBsZXRlID0gdHJ1ZVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGhhbmRsZUxpbmUobGluZXNbaV0pXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWFuYWdlciA9ICh7XG4gIGNoYXRJZDogaW5pdGlhbENoYXRJZCxcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBvbkVycm9yLFxuICBhZ2VudHMgPSBbXSxcbn06IFVzZUNoYXRNYW5hZ2VyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3Qge1xuICAgIHByb2plY3QsXG4gICAgc2V0UHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIHRhc2ssXG4gICAgc2V0VGFzayxcbiAgICBhZ2VudCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZVN0YWJsZUNhbGxiYWNrcyhhdXRoVXNlcilcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuICBjb25zdCBjdXJyZW50TWVzc2FnZUlkID0gdXNlUmVmKHV1aWR2NCgpKVxuICBjb25zdCBjdXJyZW50VXNlclF1ZXN0aW9uID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGN1cnJlbnRDaGF0SWQgPSB1c2VSZWYoaW5pdGlhbENoYXRJZCB8fCB1dWlkdjQoKSlcbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VbXT4oW10pXG4gIC8qKlxuICAgKiBHdWFyZGEgaW5mbyBkZWwgw7psdGltbyBhcHByb3ZhbCBtYW51YWwgKGN1YW5kbyBlbCB1c3VhcmlvIHRpcGVhIFwic2lcIi9cIm5vXCIgZW4gbHVnYXJcbiAgICogZGUgY2xpY2tlYXIgZWwgYm90w7NuKS4gRW4gbWFudWFsIGFwcHJvdmFsLCBgaGFuZGxlQXBwcm92YWxSZXF1aXJlZGAgcmV0b3JuYSBlYXJseVxuICAgKiBzaW4gYWdyZWdhciB1biBtZW5zYWplIGNvbiBgYXBwcm92YWxgLCBhc8OtIHF1ZSBsYSBsw7NnaWNhIGRlIHJlZmV0Y2ggZW4gYG9uU3RyZWFtRmluaXNoYFxuICAgKiBubyBsbyBkZXRlY3RhIHbDrWEgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbGAuIExvIGd1YXJkYW1vcyBhY8OhIHBhcmEgY29uc3VtaXJsbyBkZXNwdcOpcy5cbiAgICovXG4gIGNvbnN0IGxhc3RNYW51YWxBcHByb3ZhbFJlZiA9IHVzZVJlZjx7XG4gICAgdG9vbE5hbWU6IHN0cmluZ1xuICAgIHRvb2xBcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgfSB8IG51bGw+KG51bGwpXG4gIC8qKiBDb250ZXh0byBkZWwgbWVuc2FqZSBkZSBhcHJvYmFjacOzbiBwcmV2aW8gYWwgZWplY3V0YXIgY29udGludWUtdGhyZWFkLiAqL1xuICBjb25zdCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiA9IHVzZVJlZjxIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzUHJvY2Vzc2luZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgZmlyc3RUaW1lUmVmID0gdXNlUmVmKGZhbHNlKVxuICAvKiogSWQgZGVsIHBsYWNlaG9sZGVyIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZyBhY3Rpdm8gKHNpIGhheSkuICovXG4gIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqXG4gICAqIENoYXQgYWwgcXVlIHBlcnRlbmVjZSBlbCBzdHJlYW0gYWN0dWFsbWVudGUgYWN0aXZvLiBTaSBjYW1iaWEgZWwgY2hhdFxuICAgKiBtaWVudHJhcyB1biBzdHJlYW0gZXN0w6EgZW4gdnVlbG8sIGRlc2NhcnRhbW9zIGxvcyB0b2tlbnMgcmVzaWR1YWxlc1xuICAgKiBxdWUgcHVlZGFuIGxsZWdhciBhbnRlcyBkZSBxdWUgZWwgYWJvcnQgc2UgY29tcGxldGUuXG4gICAqL1xuICBjb25zdCBhY3RpdmVTdHJlYW1DaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqIFNldHRlciBpbmRpcmVjdG8gcGFyYSBhYm9ydGFyIGVsIHN0cmVhbSBhbnRlcyBkZSBxdWUgZWwgaG9vayBkZVxuICAgKiBvcnF1ZXN0YWRvciBlc3TDqSBpbmljaWFsaXphZG8gKHNlIGxpbmtlYSBtw6FzIGFiYWpvKS4gKi9cbiAgY29uc3QgYWJvcnRTdHJlYW1TaWxlbnRseVJlZiA9IHVzZVJlZjwoKSA9PiB2b2lkPigoKSA9PiB1bmRlZmluZWQpXG4gIGNvbnN0IGNsZWFyU3RyZWFtVWlSZWYgPSB1c2VSZWY8KCkgPT4gdm9pZD4oKCkgPT4gdW5kZWZpbmVkKVxuICBjb25zdCBbYWN0aXZlTG9hZGluZ3MsIHNldEFjdGl2ZUxvYWRpbmdzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KHt9KVxuXG4gIGNvbnN0IGlzV2ViU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzV2ViU2VhcmNoQWN0aXZlKVxuICBjb25zdCBpc0RlZXBTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNEZWVwU2VhcmNoQWN0aXZlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCA9IGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIGNvbnN0IHsgbG9hZGluZ01lc3NhZ2VzLCBtZXNzYWdlcywgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLCBsb2FkTWVzc2FnZXMsIGFkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIGhhbmRsZVNjcm9sbCB9ID1cbiAgICB1c2VDaGF0TWVzc2FnZXMoe1xuICAgICAgY2hhdElkOiBpbml0aWFsQ2hhdElkIHx8IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgICAgb25FcnJvcixcbiAgICAgIGFnZW50cyxcbiAgICB9KVxuXG4gIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtbG9hZGluZy1tZXNzYWdlcy1jaGFuZ2VkJywge1xuICAgICAgZGV0YWlsOiB7IGxvYWRpbmdNZXNzYWdlcyB9LFxuICAgIH0pXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgfSwgW2xvYWRpbmdNZXNzYWdlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbENoYXRJZCAmJiBpbml0aWFsQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIC8vIFNpIGhheSB1biBzdHJlYW0gZW4gY3Vyc28sIGFib3J0YXJsbyBzaWxlbmNpb3NhbWVudGUgcGFyYSBxdWUgbG9zXG4gICAgICAvLyB0b2tlbnMgcmVzaWR1YWxlcyBubyBzZSBlc2NyaWJhbiBlbiBlbCBjaGF0IG51ZXZvLlxuICAgICAgYWJvcnRTdHJlYW1TaWxlbnRseVJlZi5jdXJyZW50KClcblxuICAgICAgLy8gTGltcGlhciBjb250ZXh0byBnbG9iYWwgYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG5cbiAgICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IGluaXRpYWxDaGF0SWRcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG5cbiAgICAgIGxvYWRNZXNzYWdlcygpXG4gICAgfVxuICB9LCBbaW5pdGlhbENoYXRJZCwgcHJvamVjdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldFRhc2ssIGxvYWRNZXNzYWdlc10pXG5cbiAgLy8gRWwgY29udGV4dG8gZGUgcHJveWVjdG8vY2xpZW50ZSBhcGxpY2EgYSBhZ2VudGVzIGNsb25lICh0aWVuZW4gdG9vbHMpLiBMb3MgY3VzdG9tIG5vIGxvXG4gIC8vIG5lY2VzaXRhbiBwb3IgYWhvcmEsIGFzw60gcXVlIHBhcmEgZWxsb3Mgbm8gcmVzb2x2ZW1vcyBuaSBkaXNwYXJhbW9zIEdldFByb2plY3RzLlxuICBjb25zdCBpc0Nsb25lQWdlbnQgPSBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJ1xuXG4gIC8vIFNpbmNyb25pemFyIGNoaXBzUHJvamVjdCBjdWFuZG8gaGF5IG1lbnNhamVzIGNvbiBwcm9qZWN0SWQgcGVybyBjaGlwc1Byb2plY3Qgbm8gc2UgaGEgc2V0ZWFkb1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNDbG9uZUFnZW50IHx8IGNoaXBzUHJvamVjdCB8fCBsb2FkaW5nTWVzc2FnZXMpIHJldHVyblxuICAgIGNvbnN0IGxhc3RNc2dXaXRoUHJvamVjdCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgY29uc3QgeyBwcm9qZWN0SWQsIHByb2plY3ROYW1lIH0gPSBsYXN0TXNnV2l0aFByb2plY3QgfHwge31cbiAgICBpZiAoIXByb2plY3RJZCkgcmV0dXJuXG5cbiAgICBmZXRjaFByb2plY3RzKHByb2plY3RJZCkudGhlbihwcm9qZWN0cyA9PiB7XG4gICAgICBjb25zdCBmb3VuZCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSBOdW1iZXIocHJvamVjdElkKSlcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZC5uYW1lLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kLmNsaWVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhmb3VuZC5pZCksXG4gICAgICAgIH0pXG4gICAgICAgIHNldFByb2plY3QoZm91bmQpXG4gICAgICB9IGVsc2UgaWYgKHByb2plY3ROYW1lKSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgcHJvamVjdE5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocHJvamVjdElkKSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0UHJvamVjdCh7IGlkOiBOdW1iZXIocHJvamVjdElkKSwgbmFtZTogcHJvamVjdE5hbWUgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbaXNDbG9uZUFnZW50LCBtZXNzYWdlcywgY2hpcHNQcm9qZWN0LCBsb2FkaW5nTWVzc2FnZXMsIGZldGNoUHJvamVjdHMsIHNldENoaXBzUHJvamVjdCwgc2V0UHJvamVjdF0pXG5cbiAgLy8gU2luY3Jvbml6YXIgY2xpZW50IGN1YW5kbyBoYXkgbWVuc2FqZXMgY29uIGNsaWVudElkIHBlcm8gY2xpZW50IG5vIHNlIGhhIHNldGVhZG9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzQ2xvbmVBZ2VudCB8fCBjbGllbnQgfHwgbG9hZGluZ01lc3NhZ2VzKSByZXR1cm5cbiAgICBjb25zdCBsYXN0TXNnV2l0aENsaWVudCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLmNsaWVudElkICE9IG51bGwgJiYgbXNnLmNsaWVudE5hbWUpLmF0KC0xKVxuICAgIGNvbnN0IHsgY2xpZW50SWQ6IG1zZ0NsaWVudElkLCBjbGllbnROYW1lOiBtc2dDbGllbnROYW1lIH0gPSBsYXN0TXNnV2l0aENsaWVudCB8fCB7fVxuICAgIGlmIChtc2dDbGllbnRJZCA9PSBudWxsIHx8ICFtc2dDbGllbnROYW1lKSByZXR1cm5cblxuICAgIHNldENsaWVudD8uKHsgaWQ6IE51bWJlcihtc2dDbGllbnRJZCksIG5hbWU6IG1zZ0NsaWVudE5hbWUgfSlcbiAgfSwgW2lzQ2xvbmVBZ2VudCwgbWVzc2FnZXMsIGNsaWVudCwgbG9hZGluZ01lc3NhZ2VzLCBzZXRDbGllbnRdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUVycm9yID0gdXNlQ2FsbGJhY2soXG4gICAgKGVycm9yTWVzc2FnZT86IHN0cmluZywgZXJyb3JSYXdNZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gICAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgZXJyb3JNZXNzYWdlID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIlxuICAgICAgICAgID8gdCgnY2hhdC5lcnJvckFjY2Vzc0RlbmllZCcpXG4gICAgICAgICAgOiBlcnJvck1lc3NhZ2UgPT09ICdpbnZhbGlkX3JlcXVlc3RfZXJyb3InICYmIGVycm9yUmF3TWVzc2FnZT8uaW5jbHVkZXMoJ3Byb21wdCBpcyB0b28gbG9uZycpXG4gICAgICAgICAgICA/IHQoJ2NoYXQuZXJyb3JQcm9tcHRUb29Mb25nJywgeyB1c2VkOiBlcnJvclJhd01lc3NhZ2UubWF0Y2goLyhcXGQrKSB0b2tlbnMvKT8uWzFdID8/ICcnIH0pXG4gICAgICAgICAgICA6IHQoJ2NoYXQuZXJyb3InKVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1VcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGVudDogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBTaSBlbCBjaGF0IGNhbWJpw7MgbWllbnRyYXMgZWwgc3RyZWFtIGVzdGFiYSBlbiB2dWVsbywgZGVzY2FydGFyIGVsXG4gICAgICAvLyB0b2tlbiByZXNpZHVhbDogbm8gZGViZSBwaW50YXJzZSBlbiBlbCBudWV2byBjaGF0LlxuICAgICAgaWYgKGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ICE9IG51bGwgJiYgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgIT09IGN1cnJlbnRDaGF0SWQuY3VycmVudCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcblxuICAgICAgLy8gUHJpbWVyYSBsbGFtYWRhIGRlIGVzdGUgc3RyZWFtOiBpbnNlcnRhbW9zIGVsIHBsYWNlaG9sZGVyIGVuIGVsXG4gICAgICAvLyBhcnJheSBkZSBgbWVzc2FnZXNgIHVuYSDDum5pY2EgdmV6LiBMYXMgbGxhbWFkYXMgc3Vic2lndWllbnRlcyB5YSBub1xuICAgICAgLy8gdG9jYW4gYG1lc3NhZ2VzYDsgZWwgdGV4dG8gdml2ZSBlbiBlbCBzdHJlYW1pbmdTdG9yZSAoZXh0ZXJubyksIHBvclxuICAgICAgLy8gbG8gcXVlIFJlYWN0IG5vIHJlLXJlbmRlcml6YSBlbCDDoXJib2wgY29tcGxldG8gZW4gY2FkYSB0b2tlbi5cbiAgICAgIGlmIChzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgIT09IHRlbXBNZXNzYWdlSWQpIHtcbiAgICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gdGVtcE1lc3NhZ2VJZFxuICAgICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgICAgICBzdHJlYW1pbmdTdG9yZS5zdGFydCh0ZW1wTWVzc2FnZUlkKVxuICAgICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgICBpZDogdGVtcE1lc3NhZ2VJZCxcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgICAgc291cmNlcyxcbiAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHN0cmVhbWluZ1N0b3JlLnNldFRleHQodGVtcE1lc3NhZ2VJZCwgY29udGVudClcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRmluaXNoID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgY29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICByYXdBdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgY29tcGxldGVkQWdlbnRJZD86IHN0cmluZyB8IG51bGwsXG4gICAgICBzdWJhZ2VudE5hbWU/OiBzdHJpbmcgfCBudWxsLFxuICAgICAgcmVzb2x2ZWRDb250ZXh0PzogUmVzb2x2ZWRDb250ZXh0IHwgbnVsbFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gbm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMocmF3QXR0YWNobWVudHMpXG5cbiAgICAgIC8vIERldGVjdGFyIHRvZGFzIGxhcyBVUkxzIGRlIHRhcmVhcyAoLi4uL3Rhc2tzLzEyMy9kZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKVxuICAgICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgICBjb25zdCBtYXRjaGVzID0gWy4uLmNvbnRlbnQubWF0Y2hBbGwodGFza1VybFJlZ2V4KV1cblxuICAgICAgbGV0IGNvbnRlbnRUb0FkZCA9IGNvbnRlbnRcbiAgICAgIGNvbnN0IHByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG0gPT4gbS5pZCAhPT0gdGVtcE1lc3NhZ2VJZCkuYXQoLTEpXG4gICAgICBjb25zdCBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbCAhPSBudWxsXG4gICAgICBjb25zdCBUQVNLX0NSRUFUSU9OX1RPT0xTID0gWydjcmVhdGVfdGFzaycsICdjcmVhdGVfdGFza3NfYmF0Y2gnLCAnY2xvbmVfdGFzayddXG4gICAgICBjb25zdCBUQVNLX0VESVRfVE9PTFMgPSBbXG4gICAgICAgICdlZGl0X3Rhc2snLFxuICAgICAgICAnZWRpdF90YXNrc19iYXRjaCcsXG4gICAgICAgICd0YXNrX2Fzc2lnbicsXG4gICAgICAgICd0YXNrX3VuYXNzaWduJyxcbiAgICAgICAgJ3VwZGF0ZV90YXNrX3R5cGUnLFxuICAgICAgICAndXBkYXRlX2VzdGltYXRlZF9ob3VycycsXG4gICAgICAgICdhc3NpZ25fdGFza19sYWJlbCcsXG4gICAgICBdXG4gICAgICBjb25zdCBUQVNLX0RFTEVURV9UT09MUyA9IFsnZGVsZXRlX3Rhc2snLCAnZGVsZXRlX3Rhc2tzX2JhdGNoJ11cbiAgICAgIGNvbnN0IHBlbmRpbmdBY3Rpb25zID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zIHx8IFtdXG4gICAgICBjb25zdCB3YXNUYXNrQ3JlYXRpb24gPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0NSRUFUSU9OX1RPT0xTLmluY2x1ZGVzKGFjdGlvbi50b29sX25hbWUpKVxuICAgICAgY29uc3Qgd2FzVGFza0VkaXQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0VESVRfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRGVsZXRlID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNDcmVhdGVBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBhY3Rpb24udG9vbF9uYW1lID09PSAnY3JlYXRlX2FnZW50JylcbiAgICAgIGNvbnN0IHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IChhY3Rpb24udG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICBsZXQgY3JlYXRlQWdlbnRGb2xsb3dVcDogeyBhZ2VudElkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpKSB7XG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7IGFnZW50SWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgJiZcbiAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiZcbiAgICAgICAgKGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKSB8fFxuICAgICAgICAgIGV4dHJhY3RBZ2VudElkRnJvbVBlbmRpbmdBY3Rpb25zQnlUb29sTmFtZShwZW5kaW5nQWN0aW9ucywgJ2NvbmZpZ3VyZV9hZ2VudF9hY2Nlc3MnKSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjb25maWd1cmVkQWdlbnRJZCA9XG4gICAgICAgICAgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7XG4gICAgICAgICAgYWdlbnRJZDogY29uZmlndXJlZEFnZW50SWQgYXMgc3RyaW5nLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh3YXNDcmVhdGVBZ2VudEFwcHJvdmVkKSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRIaXRsT3B0aW9uLCB7XG4gICAgICAgICAgYWdlbnRfdHlwZTogZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZShhZ2VudCksXG4gICAgICAgICAgYWN0aW9uX3R5cGU6IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0KHBlbmRpbmdBY3Rpb25zKSxcbiAgICAgICAgICBkZWNpc2lvbjogJ2FjY2VwdCcsXG4gICAgICAgICAgb3B0aW9uOiAnY3JlYXRlX2FnZW50JyxcbiAgICAgICAgICAuLi4oY29tcGxldGVkQWdlbnRJZD8udHJpbSgpID8geyBjcmVhdGVkX2FnZW50X2lkOiBjb21wbGV0ZWRBZ2VudElkLnRyaW0oKSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCB3YXNFZGl0QWdlbnRBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdlZGl0X2FnZW50JylcblxuICAgICAgbGV0IGVkaXRBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzRWRpdEFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgY29uc3QgZnJvbVN0cmVhbSA9IGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKVxuICAgICAgICBjb25zdCBmcm9tQXJncyA9IGV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuICAgICAgICBjb25zdCByZXNvbHZlZEFnZW50SWQgPSBmcm9tU3RyZWFtIHx8IGZyb21BcmdzXG4gICAgICAgIGlmIChyZXNvbHZlZEFnZW50SWQpIHtcbiAgICAgICAgICBlZGl0QWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogcmVzb2x2ZWRBZ2VudElkIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbVVybHMgPSBtYXRjaGVzLm1hcChtYXRjaCA9PiBwYXJzZUludChtYXRjaFsxXSwgMTApKVxuICAgICAgY29uc3QgdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCA9IGV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuICAgICAgY29uc3QgdGFza0lkc0Zyb21EZWxldGlvblRleHQgPVxuICAgICAgICB3YXNUYXNrRGVsZXRlICYmIHRhc2tJZHNGcm9tVXJscy5sZW5ndGggPT09IDAgJiYgdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbC5sZW5ndGggPT09IDBcbiAgICAgICAgICA/IGV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dChjb250ZW50KVxuICAgICAgICAgIDogW11cbiAgICAgIGNvbnN0IHRhc2tJZHNGb3JEYXNoYm9hcmQgPVxuICAgICAgICB0YXNrSWRzRnJvbVVybHMubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGFza0lkc0Zyb21VcmxzXG4gICAgICAgICAgOiB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbFxuICAgICAgICAgICAgOiB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dFxuXG4gICAgICBjb25zdCBzaG91bGRTeW5jRGFzaGJvYXJkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICAod2FzVGFza0NyZWF0aW9uIHx8IHdhc1Rhc2tFZGl0IHx8IHdhc1Rhc2tEZWxldGUpICYmXG4gICAgICAgIHRhc2tJZHNGb3JEYXNoYm9hcmQubGVuZ3RoID4gMFxuXG4gICAgICBpZiAoc2hvdWxkU3luY0Rhc2hib2FyZCkge1xuICAgICAgICBjb25zdCB0YXNrSWRzID0gdGFza0lkc0ZvckRhc2hib2FyZFxuICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQodGFza0lkc1swXSlcbiAgICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgICAgY29udGVudFRvQWRkID0gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgICAgICAgICB1cmwucmVwbGFjZSgvXFwvKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpKD89JHxcXD8pLywgdGFiU2VnbWVudClcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0UHJvamVjdE1lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWRSYXcgPSBwcm9qZWN0Py5pZCB8fCBsYXN0UHJvamVjdE1lc3NhZ2U/LnByb2plY3RJZFxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gY29udGV4dFByb2plY3RJZFJhdyA/IHBhcnNlSW50KFN0cmluZyhjb250ZXh0UHJvamVjdElkUmF3KSwgMTApIDogbnVsbFxuICAgICAgICBjb25zdCBwYXRoTWF0Y2ggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUubWF0Y2goL15cXC9wcm9qZWN0c1xcLyhcXGQrKVxcLy8pXG4gICAgICAgIGNvbnN0IHJvdXRlUHJvamVjdElkID0gcGF0aE1hdGNoID8gcGFyc2VJbnQocGF0aE1hdGNoWzFdLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IGlzT25Qcm9qZWN0Um91dGUgPSBjb250ZXh0UHJvamVjdElkICYmIHJvdXRlUHJvamVjdElkICYmIGNvbnRleHRQcm9qZWN0SWQgPT09IHJvdXRlUHJvamVjdElkXG5cbiAgICAgICAgaWYgKGlzT25Qcm9qZWN0Um91dGUpIHtcbiAgICAgICAgICBpZiAod2FzVGFza0NyZWF0aW9uKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0VkaXQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5lZGl0RXhpc3RpbmdUYXNrSW5EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0RlbGV0ZSkge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZWZldGNoIGRlbCB0YXNrIHBhbmVsIHNpIGVzdMOhIGFiaWVydG8geSBsYSB0b29sIGFwcm9iYWRhIGVkaXTDsy9ib3Jyw7MgZXNhIHRhcmVhLlxuICAgICAgLy8gQ3VicmUgbG9zIGRvcyBmbHVqb3MgZGUgYXBwcm92YWw6XG4gICAgICAvLyAgIDEpIEFwcHJvdmFsIHBvciBib3TDs24g4oaSIGBwcmV2aW91c01lc3NhZ2UuYXBwcm92YWwucGVuZGluZ19hY3Rpb25zYCAodsOtYSBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlKVxuICAgICAgLy8gICAyKSBNYW51YWwgYXBwcm92YWwgKHVzdWFyaW8gdGlwZWEgXCJzaVwiL1wibm9cIikg4oaSIGBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudGBcbiAgICAgIGNvbnN0IG9wZW5UYXNrUGFuZWxJZCA9IHdpbmRvdy50YXNrUGFuZWw/LnRhc2tJZFxuICAgICAgY29uc3QgbWFudWFsQXBwcm92YWwgPSBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudFxuICAgICAgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnQgPSBudWxsIC8vIGNvbnN1bWlyIHVuYSBzb2xhIHZlelxuICAgICAgY29uc3QgbWFudWFsV2FzVGFza0VkaXQgPSAhIW1hbnVhbEFwcHJvdmFsICYmIFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhtYW51YWxBcHByb3ZhbC50b29sTmFtZSlcbiAgICAgIGNvbnN0IG1hbnVhbFdhc1Rhc2tEZWxldGUgPSAhIW1hbnVhbEFwcHJvdmFsICYmIFRBU0tfREVMRVRFX1RPT0xTLmluY2x1ZGVzKG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lKVxuXG4gICAgICBpZiAob3BlblRhc2tQYW5lbElkICYmICh3YXNUYXNrRWRpdCB8fCB3YXNUYXNrRGVsZXRlIHx8IG1hbnVhbFdhc1Rhc2tFZGl0IHx8IG1hbnVhbFdhc1Rhc2tEZWxldGUpKSB7XG4gICAgICAgIGNvbnN0IG1hbnVhbFBzZXVkb0FjdGlvbjogUGVuZGluZ0FjdGlvbiB8IG51bGwgPSBtYW51YWxBcHByb3ZhbFxuICAgICAgICAgID8gKHsgdG9vbF9uYW1lOiBtYW51YWxBcHByb3ZhbC50b29sTmFtZSwgdG9vbF9hcmdzOiBtYW51YWxBcHByb3ZhbC50b29sQXJncyA/PyB7fSB9IGFzIFBlbmRpbmdBY3Rpb24pXG4gICAgICAgICAgOiBudWxsXG4gICAgICAgIGNvbnN0IGFmZmVjdGVkVGFza0lkcyA9IFtcbiAgICAgICAgICAuLi5leHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MocGVuZGluZ0FjdGlvbnMpLFxuICAgICAgICAgIC4uLnRhc2tJZHNGcm9tVXJscyxcbiAgICAgICAgICAuLi50YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLFxuICAgICAgICAgIC4uLihtYW51YWxQc2V1ZG9BY3Rpb24gPyBleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MoW21hbnVhbFBzZXVkb0FjdGlvbl0pIDogW10pLFxuICAgICAgICBdLm1hcChTdHJpbmcpXG4gICAgICAgIGlmIChhZmZlY3RlZFRhc2tJZHMuaW5jbHVkZXMoU3RyaW5nKG9wZW5UYXNrUGFuZWxJZCkpKSB7XG4gICAgICAgICAgd2luZG93LnRhc2tQYW5lbD8ucmVmZXRjaFRhc2s/LigpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgYW5zd2VyLSR7bWVtb3J5U2Vzc2lvbklkfWAsXG4gICAgICAgIG1lc3NhZ2U6IGNvbnRlbnRUb0FkZCxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIHNvdXJjZXMsXG4gICAgICAgIC4uLihhdHRhY2htZW50cy5sZW5ndGggPiAwID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgIHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucyB8fCBbXSxcbiAgICAgICAgLi4uKGNyZWF0ZUFnZW50Rm9sbG93VXAgPyB7IGNyZWF0ZUFnZW50Rm9sbG93VXAgfSA6IHt9KSxcbiAgICAgICAgLi4uKHN1YmFnZW50TmFtZSA/IHsgc3ViYWdlbnROYW1lIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICAvLyBPcnF1ZXN0YWRvcjogYWN0dWFsaXphIGVsIGNoaXAgZGUgY29udGV4dG8gY29uIGVsIHByb3llY3RvL2NsaWVudGVcbiAgICAgIC8vIHF1ZSBlbCBzdWJhZ2VudGUgcmVzb2x2acOzIGRpbsOhbWljYW1lbnRlIHbDrWEgaGVycmFtaWVudGFzIChlai4gcHJvamVjdF9pZFxuICAgICAgLy8gZW5jb250cmFkbyBwb3IgZ2V0X3Byb2plY3RfaWRfYmFzZWRfb25fbmFtZSBvIGdldF9wcm9qZWN0X3dpdGhfdGFza3NfaW5mbykuXG4gICAgICBpZiAocmVzb2x2ZWRDb250ZXh0Py5wcm9qZWN0X2lkICYmICFjaGlwc1Byb2plY3QpIHtcbiAgICAgICAgaWYgKHJlc29sdmVkQ29udGV4dC5wcm9qZWN0X25hbWUpIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgcHJvamVjdE5hbWU6IHJlc29sdmVkQ29udGV4dC5wcm9qZWN0X25hbWUsXG4gICAgICAgICAgICBjbGllbnROYW1lOiByZXNvbHZlZENvbnRleHQuY2xpZW50X25hbWUgfHwgJycsXG4gICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhyZXNvbHZlZENvbnRleHQucHJvamVjdF9pZCksXG4gICAgICAgICAgfSlcbiAgICAgICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgICAgIGlkOiByZXNvbHZlZENvbnRleHQucHJvamVjdF9pZCxcbiAgICAgICAgICAgIG5hbWU6IHJlc29sdmVkQ29udGV4dC5wcm9qZWN0X25hbWUsXG4gICAgICAgICAgICAuLi4ocmVzb2x2ZWRDb250ZXh0LmNsaWVudF9pZCA/IHsgY2xpZW50SWQ6IHJlc29sdmVkQ29udGV4dC5jbGllbnRfaWQgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihyZXNvbHZlZENvbnRleHQuY2xpZW50X25hbWVcbiAgICAgICAgICAgICAgPyB7IGNsaWVudDogeyBpZDogcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9pZCB8fCAwLCBuYW1lOiByZXNvbHZlZENvbnRleHQuY2xpZW50X25hbWUgfSB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmV0Y2hQcm9qZWN0cyhyZXNvbHZlZENvbnRleHQucHJvamVjdF9pZCkudGhlbihwcm9qZWN0cyA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSByZXNvbHZlZENvbnRleHQucHJvamVjdF9pZClcbiAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZC5uYW1lLFxuICAgICAgICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kLmNsaWVudD8ubmFtZSB8fCByZXNvbHZlZENvbnRleHQuY2xpZW50X25hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcoZm91bmQuaWQpLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBzZXRQcm9qZWN0KGZvdW5kKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0TmFtZTogYFByb3llY3RvICR7cmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWR9YCxcbiAgICAgICAgICAgICAgICBjbGllbnROYW1lOiByZXNvbHZlZENvbnRleHQuY2xpZW50X25hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWQpLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBzZXRQcm9qZWN0KHsgaWQ6IHJlc29sdmVkQ29udGV4dC5wcm9qZWN0X2lkISwgbmFtZTogYFByb3llY3RvICR7cmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWR9YCB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyZXNvbHZlZENvbnRleHQ/LmNsaWVudF9pZCAmJiAhY2xpZW50KSB7XG4gICAgICAgIHNldENsaWVudD8uKHtcbiAgICAgICAgICBpZDogcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9pZCxcbiAgICAgICAgICBuYW1lOiByZXNvbHZlZENvbnRleHQuY2xpZW50X25hbWUgfHwgJycsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChjcmVhdGVBZ2VudEZvbGxvd1VwPy5hZ2VudElkKSB7XG4gICAgICAgIGZldGNoQWdlbnREZXRhaWwoY3JlYXRlQWdlbnRGb2xsb3dVcC5hZ2VudElkKVxuICAgICAgICAgIC50aGVuKGNoYXRBZ2VudCA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7IGFnZW50OiBjaGF0QWdlbnQgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3VzZUNoYXRNYW5hZ2VyXSBObyBzZSBwdWRvIGHDsWFkaXIgZWwgYWdlbnRlIHJlY2nDqW4gY3JlYWRvIGFsIGxpc3RhZG8nLCBlcnIpXG4gICAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKGVkaXRBZ2VudEZvbGxvd1VwPy5hZ2VudElkKSB7XG4gICAgICAgIGZldGNoQWdlbnREZXRhaWwoZWRpdEFnZW50Rm9sbG93VXAuYWdlbnRJZClcbiAgICAgICAgICAudGhlbihjaGF0QWdlbnQgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHsgYWdlbnQ6IGNoYXRBZ2VudCB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbdXNlQ2hhdE1hbmFnZXJdIE5vIHNlIHB1ZG8gcmVmcmVzY2FyIGVsIGFnZW50ZSBlZGl0YWRvJywgZXJyKVxuICAgICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGlmIChmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJylcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHByb2plY3QsIGdldFRhYlRhc2tEZWZhdWx0LCBldmVudCwgYWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1TdG9wID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCgpXG4gICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG4gICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcblxuICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LWNhbmNlbGxlZGAsXG4gICAgICBtZXNzYWdlOiB0KCdjaGF0LmNhbmNlbGxlZCcpLFxuICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ6IHRydWUsXG4gICAgfSlcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJylcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgfSwgNTAwKVxuICB9LCBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgdF0pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxSZXF1aXJlZCA9IHVzZUNhbGxiYWNrKFxuICAgIChhcHByb3ZhbDogQXBwcm92YWxSZXF1ZXN0LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICAvLyBPcnF1ZXN0YWRvcjogZXh0cmFlciBjb250ZXh0byByZXN1ZWx0byBkZWwgcGF5bG9hZCBkZSBhcHJvYmFjacOzbiB5XG4gICAgICAvLyBhY3R1YWxpemFyIGVsIGNoaXAgaW5tZWRpYXRhbWVudGUg4oCUIHNpbiBlc3BlcmFyIGFsIGNvbXBsZXRlL3JlZnJlc2guXG4gICAgICAvLyBFbCBiYWNrZW5kIGluY2x1eWUgcmVzb2x2ZWRfY29udGV4dCBlbiBzdWJhZ2VudF91c2VkIChkZW50cm8gZGVsXG4gICAgICAvLyBhcHByb3ZhbF9yZXF1aXJlZCBkYXRhIHBhcmEgc3ViYWdlbnRlcykgY29uIGVsIHByb2plY3RfaWQvY2xpZW50X2lkXG4gICAgICAvLyBxdWUgZWwgc3ViYWdlbnRlIGRldGVybWluw7MgYW50ZXMgZGVsIGludGVycnVwdC5cbiAgICAgIGNvbnN0IGFwcHJvdmFsQW55ID0gYXBwcm92YWwgYXMgQXBwcm92YWxSZXF1ZXN0ICYge1xuICAgICAgICByZXNvbHZlZF9jb250ZXh0PzogUmVzb2x2ZWRDb250ZXh0IHwgbnVsbFxuICAgICAgICBzdWJhZ2VudD86IHsgcmVzb2x2ZWRfY29udGV4dD86IFJlc29sdmVkQ29udGV4dCB8IG51bGwgfVxuICAgICAgfVxuICAgICAgY29uc3QgcmMgPSBhcHByb3ZhbEFueS5yZXNvbHZlZF9jb250ZXh0ID8/IGFwcHJvdmFsQW55LnN1YmFnZW50Py5yZXNvbHZlZF9jb250ZXh0ID8/IG51bGxcbiAgICAgIGlmIChyYz8ucHJvamVjdF9pZCAmJiAhY2hpcHNQcm9qZWN0KSB7XG4gICAgICAgIGlmIChyYy5wcm9qZWN0X25hbWUpIHtcbiAgICAgICAgICAvLyBUZW5lbW9zIG5vbWJyZTogc2V0ZWFyIGVsIGNoaXAgZGlyZWN0YW1lbnRlXG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiByYy5wcm9qZWN0X25hbWUsXG4gICAgICAgICAgICBjbGllbnROYW1lOiByYy5jbGllbnRfbmFtZSB8fCAnJyxcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHJjLnByb2plY3RfaWQpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgICAgICBpZDogcmMucHJvamVjdF9pZCxcbiAgICAgICAgICAgIG5hbWU6IHJjLnByb2plY3RfbmFtZSxcbiAgICAgICAgICAgIC4uLihyYy5jbGllbnRfaWQgPyB7IGNsaWVudElkOiByYy5jbGllbnRfaWQgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihyYy5jbGllbnRfbmFtZSA/IHsgY2xpZW50OiB7IGlkOiByYy5jbGllbnRfaWQgfHwgMCwgbmFtZTogcmMuY2xpZW50X25hbWUgfSB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU29sbyB0ZW5lbW9zIGVsIElEIOKAlCBmZXRjaCBkZWwgbm9tYnJlIGNvbXBsZXRvIGRlbCBwcm95ZWN0b1xuICAgICAgICAgIGZldGNoUHJvamVjdHMocmMucHJvamVjdF9pZCkudGhlbihwcm9qZWN0cyA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSByYy5wcm9qZWN0X2lkKVxuICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICAgICAgcHJvamVjdE5hbWU6IGZvdW5kLm5hbWUsXG4gICAgICAgICAgICAgICAgY2xpZW50TmFtZTogZm91bmQuY2xpZW50Py5uYW1lIHx8IHJjLmNsaWVudF9uYW1lIHx8ICcnLFxuICAgICAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGZvdW5kLmlkKSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgc2V0UHJvamVjdChmb3VuZClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIEZhbGxiYWNrOiBtb3N0cmFyIGVsIElEIHNpIG5vIHNlIHB1ZWRlIHJlc29sdmVyIGVsIG5vbWJyZVxuICAgICAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgICAgIHByb2plY3ROYW1lOiBgUHJveWVjdG8gJHtyYy5wcm9qZWN0X2lkfWAsXG4gICAgICAgICAgICAgICAgY2xpZW50TmFtZTogcmMuY2xpZW50X25hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocmMucHJvamVjdF9pZCksXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIHNldFByb2plY3QoeyBpZDogcmMucHJvamVjdF9pZCEsIG5hbWU6IGBQcm95ZWN0byAke3JjLnByb2plY3RfaWR9YCB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyYz8uY2xpZW50X2lkICYmICFjbGllbnQpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4oeyBpZDogcmMuY2xpZW50X2lkLCBuYW1lOiByYy5jbGllbnRfbmFtZSB8fCAnJyB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXRsQ29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgPSB7XG4gICAgICAgIG1lc3NhZ2VJZDogYGFwcHJvdmFsLSR7YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfWAsXG4gICAgICAgIG1lc3NhZ2VUZXh0OiBhY2N1bXVsYXRlZENvbnRlbnQgfHwgJycsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBwZW5kaW5nQWN0aW9uczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zLFxuICAgICAgICB0aHJlYWRJZHM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucz8ubWFwKGFjdGlvbiA9PiBhY3Rpb24udGhyZWFkX2lkKSxcbiAgICAgIH1cbiAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuXG4gICAgICBpZiAoYXBwcm92YWwubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0QWN0aW9uID0gYXBwcm92YWwucGVuZGluZ19hY3Rpb25zPy5bMF1cbiAgICAgICAgY29uc3QgdG9vbE5hbWUgPSAoYXBwcm92YWwgYXMgeyB0b29sX25hbWU/OiBzdHJpbmcgfSkudG9vbF9uYW1lID8/IGZpcnN0QWN0aW9uPy50b29sX25hbWUgPz8gJydcbiAgICAgICAgY29uc3QgdG9vbEFyZ3MgPVxuICAgICAgICAgICgoYXBwcm92YWwgYXMgeyB0b29sX2FyZ3M/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9KS50b29sX2FyZ3MgPz9cbiAgICAgICAgICAgIChmaXJzdEFjdGlvbj8udG9vbF9hcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkKSkgfHxcbiAgICAgICAgICBudWxsXG4gICAgICAgIGlmICh0b29sTmFtZSkge1xuICAgICAgICAgIGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50ID0geyB0b29sTmFtZSwgdG9vbEFyZ3MgfVxuICAgICAgICB9XG4gICAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBhIG1lc3NhZ2Ugd2l0aCB0aGUgYXBwcm92YWwgcmVxdWVzdFxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YCxcbiAgICAgICAgbWVzc2FnZTogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIGFwcHJvdmFsU3RhdHVzOiAncGVuZGluZycsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIGNoaXBzUHJvamVjdCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRQcm9qZWN0LCBjbGllbnQsIHNldENsaWVudF1cbiAgKVxuXG4gIGNvbnN0IHtcbiAgICBhc2tNYWlhLFxuICAgIGlzTG9hZGluZzogd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICAgIGFib3J0U3RyZWFtU2lsZW50bHksXG4gIH0gPSB1c2VPcmNoZXN0cmF0b3JTdHJlYW0oe1xuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLFxuICB9KVxuXG4gIC8vIE1hbnRlbmVtb3MgZWwgc2V0dGVyIG3DoXMgcmVjaWVudGUgZW4gdW5hIHJlZiBwYXJhIHF1ZSBwdWVkYSB1c2Fyc2UgZGVzZGVcbiAgLy8gZWZlY3RvcyBkZWZpbmlkb3MgYW50ZXMgZW4gZWwgYXJjaGl2byAoY2FtYmlvIGRlIGNoYXQsIHJlc2V0LCBldGMuKS5cbiAgYWJvcnRTdHJlYW1TaWxlbnRseVJlZi5jdXJyZW50ID0gYWJvcnRTdHJlYW1TaWxlbnRseVxuICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQgPSAoKSA9PiB7XG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICBzZXRBY3RpdmVMb2FkaW5ncyh7fSlcbiAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICB9XG5cbiAgY29uc3QgY3VycmVudFByb2plY3QgPSBwcm9qZWN0XG5cbiAgY29uc3Qgc2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50c09yT3B0aW9ucz86IEF0dGFjaG1lbnRGaWxlW10gfCBTZW5kTWVzc2FnZU9wdGlvbnMsXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiB7XG4gICAgICBpZiAoaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgfHwgd2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlcykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBhdHRhY2htZW50cywgb3B0aW9ucyB9ID0gbm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzKGF0dGFjaG1lbnRzT3JPcHRpb25zKVxuICAgICAgLy8gTGFzIG1lbnRpb25zIHB1ZWRlbiB2ZW5pciB2w61hIDV0byBwYXLDoW1ldHJvIChjYWxsIHBvc2l0aW9uYWwgZGVzZGUgZWwgZm9vdGVyKVxuICAgICAgLy8gbyB2w61hIFNlbmRNZXNzYWdlT3B0aW9ucyAoY2FsbCBwcm9ncmFtw6F0aWNvKS4gRWwgcGFyw6FtZXRybyBleHBsw61jaXRvIGdhbmEuXG4gICAgICBjb25zdCBlZmZlY3RpdmVNZW50aW9ucyA9IG1lbnRpb25zID8/IG9wdGlvbnMubWVudGlvbnNcbiAgICAgIGNvbnN0IGNvbnRleHRNZXNzYWdlOiBDb250ZXh0TWVzc2FnZSB8IHVuZGVmaW5lZCA9IGJ1aWxkQ29udGV4dE1lc3NhZ2UoZWZmZWN0aXZlTWVudGlvbnMpXG4gICAgICBjb25zdCBwYXlsb2FkRnVhSWQgPSBmdWFJZCA/PyBvcHRpb25zLmZ1YUlkXG4gICAgICBjb25zdCBwYXlsb2FkU2NJZCA9IHNjSWQgPz8gb3B0aW9ucy5zY0lkXG4gICAgICBjb25zdCBkaXNwbGF5TWVzc2FnZSA9IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkobWVzc2FnZSwge1xuICAgICAgICBmdWFJZDogcGF5bG9hZEZ1YUlkLFxuICAgICAgICBzY0lkOiBwYXlsb2FkU2NJZCxcbiAgICAgIH0pXG5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgY29uc3QgbmV3TWVzc2FnZUlkID0gdXVpZHY0KClcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IG5ld01lc3NhZ2VJZFxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbWVzc2FnZVxuXG4gICAgICBpZiAoIXJlcG9ydGVkRXZlbnQuY3VycmVudCkge1xuICAgICAgICBldmVudChFVkVOVFMucG1BaVR5cGVkVGV4dClcbiAgICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICAvLyBWZXJpZmljYXIgc2kgZWwgY29udGV4dG8gZ2xvYmFsIGVzdMOhIGRlc2FjdHVhbGl6YWRvXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0ID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuXG4gICAgICBjb25zdCBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgPSBtZXNzYWdlc1JlZi5jdXJyZW50Py5bbWVzc2FnZXNSZWYuY3VycmVudC5sZW5ndGggLSAxXT8uYWdlbnRJZFxuXG4gICAgICAvLyBObyBhZ3JlZ2FyIHByb2plY3RJZCBhbCBtZW5zYWplIGRlbCB1c3VhcmlvIC0gc2UgZGV0ZXJtaW5hcsOhIGRlc3B1w6lzXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBxdWVzdGlvbi0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH1gLFxuICAgICAgICBtZXNzYWdlOiBkaXNwbGF5TWVzc2FnZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogY3VycmVudFVzZXIsXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5VU0VSLFxuICAgICAgICBzb3VyY2VzOiBhdHRhY2htZW50cyxcbiAgICAgICAgLi4uKGNvbnRleHRNZXNzYWdlID8geyBjb250ZXh0TWVzc2FnZSB9IDoge30pLFxuICAgICAgfSlcblxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcblxuICAgICAgY29uc3Qgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IHN0cmVhbWluZ1BsYWNlaG9sZGVySWRcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gY3VycmVudENoYXRJZC5jdXJyZW50XG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQsXG4gICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogYWdlbnQ/Lm5hbWUgfHwgJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pXG5cbiAgICAgIGxldCBmaW5hbE1lc3NhZ2UgPSBtZXNzYWdlXG5cbiAgICAgIGlmIChtZXNzYWdlID09PSB0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKSkge1xuICAgICAgICBmaW5hbE1lc3NhZ2UgPSBgRkFROiAke3QoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpfSAtIFRpcG8gZGUgcmVudGFiaWxpZGFkOiAke1xuICAgICAgICAgIG9wdGlvbnMucHJvamVjdENoYW5nZWQ/LmluY29tZVR5cGUgfHwgcHJvamVjdD8uaW5jb21lVHlwZVxuICAgICAgICB9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICAvLyBWZXJpZmljYXIgY29uc2lzdGVuY2lhIGVudHJlIGNvbnRleHRvIGdsb2JhbCB5IMO6bHRpbW8gbWVuc2FqZVxuICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3Q/LmlkXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVByb2plY3RJZCA9IGxhc3RNZXNzYWdlV2l0aFByb2plY3Q/LnByb2plY3RJZFxuXG4gICAgICBsZXQgcHJvamVjdFRvUmVxdWVzdDogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICAgICAgLy8gU2kgaGF5IMO6bHRpbW8gbWVuc2FqZSBjb24gcHJvamVjdElkLCB1c2FybG8gKG3DoXMgY29uZmlhYmxlKVxuICAgICAgaWYgKGxhc3RNZXNzYWdlUHJvamVjdElkICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKGxhc3RNZXNzYWdlUHJvamVjdElkKVxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0ID0gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gICAgICB9XG4gICAgICAvLyBTaSBubyBoYXkgw7psdGltbyBtZW5zYWplLCB1c2FyIGVsIGNvbnRleHRvIGdsb2JhbFxuICAgICAgZWxzZSBpZiAoY29udGV4dFByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHByb2plY3RUb1JlcXVlc3QgPSBjb250ZXh0UHJvamVjdElkXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhbcHJvamVjdFRvUmVxdWVzdF0pXG5cbiAgICAgIGNvbnN0IHBheWxvYWRGYXFJZCA9IGZhcUlkID8/IG9wdGlvbnMuZmFxSWRcbiAgICAgIGNvbnN0IHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCA9IGFnZW50U3VnZ2VzdGlvbklkID8/IG9wdGlvbnMuYWdlbnRTdWdnZXN0aW9uSWRcblxuICAgICAgY29uc3QgcGF5bG9hZERhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGZpbmFsTWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgIGFnZW50SWQ6IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyB8fCBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKHByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIocHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGNsaWVudD8uaWRcbiAgICAgICAgICA/IHsgY2xpZW50SWQ6IGNsaWVudC5pZCwgLi4uKGNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjbGllbnQubmFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHByb2plY3Q/LmNsaWVudElkICE9IG51bGxcbiAgICAgICAgICAgID8geyBjbGllbnRJZDogTnVtYmVyKHByb2plY3QuY2xpZW50SWQpIH1cbiAgICAgICAgICAgIDogcHJvamVjdD8uY2xpZW50Py5pZFxuICAgICAgICAgICAgICA/IHsgY2xpZW50SWQ6IHByb2plY3QuY2xpZW50LmlkLCAuLi4ocHJvamVjdC5jbGllbnQubmFtZSA/IHsgY2xpZW50TmFtZTogcHJvamVjdC5jbGllbnQubmFtZSB9IDoge30pIH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0cz8ubGVuZ3RoID8geyBwcm9qZWN0TmFtZTogcHJvamVjdHNbMF0ubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4odGFzaz8uaWQgIT0gbnVsbCA/IHsgdGFza0lkOiBOdW1iZXIodGFzay5pZCksIC4uLih0YXNrLm5hbWUgPyB7IHRhc2tOYW1lOiB0YXNrLm5hbWUgfSA6IHt9KSB9IDoge30pLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGYXFJZCA/IHsgZmFxSWQ6IHBheWxvYWRGYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogcGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRnVhSWQgPyB7IGZ1YUlkOiBwYXlsb2FkRnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRTY0lkID8geyBzY0lkOiBwYXlsb2FkU2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgIH1cblxuICAgICAgYXNrTWFpYShwYXlsb2FkRGF0YSlcbiAgICB9LFxuICAgIFtcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBldmVudCxcbiAgICAgIGFza01haWEsXG4gICAgICBwcm9qZWN0LFxuICAgICAgY2xpZW50LFxuICAgICAgdGFzayxcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICB0LFxuICAgICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgXVxuICApXG5cbiAgY29uc3QgY2hhbmdlUHJvamVjdCA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGlmICghY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSByZXR1cm5cblxuICAgICAgaWYgKG9wdGlvbi5pZCAhPT0gcHJvamVjdD8uaWQpIHtcbiAgICAgICAgc2V0UHJvamVjdChvcHRpb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9qZWN0ICYmIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuXG4gICAgICAgIGFza01haWEoe1xuICAgICAgICAgIG1lc3NhZ2U6IGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIHByb2plY3RJZDogb3B0aW9uLmlkLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIC4uLihvcHRpb24/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIob3B0aW9uLmZlZUlkKSB9IDoge30pLFxuICAgICAgICAgIC4uLihvcHRpb24/LmNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkOiBOdW1iZXIob3B0aW9uLmNsaWVudElkKSB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtwcm9qZWN0LCBzZXRQcm9qZWN0LCBhc2tNYWlhLCBhdXRoVXNlciwgaXNXZWJTZWFyY2hBY3RpdmUsIGFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2sgPSB1c2VDYWxsYmFjayhhc3luYyAoZmVlZGJhY2tQcm9wOiBGZWVkYmFjaywgY2hhdE1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLkNoYXRzLndhc0hlbHBmdWxDaGF0KGNoYXRNZXNzYWdlSWQsIGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQKVxuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gY2hhdE1lc3NhZ2VJZCAmJiBtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgd2FzSGVscGZ1bDogZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxEZWNpc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIHRocmVhZElkczogc3RyaW5nW10sXG4gICAgICBkZWNpc2lvbjogJ2FwcHJvdmUnIHwgJ3JlamVjdCcsXG4gICAgICBlZGl0ZWRBY3Rpb25zPzogQXJyYXk8eyB0b29sX25hbWU6IHN0cmluZzsgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfT5cbiAgICApID0+IHtcbiAgICAgIGlmICghdGhyZWFkSWRzPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gdGhyZWFkX2lkcyBwcm92aWRlZCBmb3IgYXBwcm92YWwgZGVjaXNpb24nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQnVzY2FyIGVsIG1lbnNhamUgcXVlIGNvbnRpZW5lIGFsZ3VubyBkZSBlc3RvcyB0aHJlYWRJZHMgZW4gc3VzIHBlbmRpbmdfYWN0aW9uc1xuICAgICAgY29uc3QgbWVzc2FnZVdpdGhBcHByb3ZhbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmluZChtID0+XG4gICAgICAgIG0uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gdGhyZWFkSWRzLmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICAgICAgKVxuXG4gICAgICBpZiAoIW1lc3NhZ2VXaXRoQXBwcm92YWwgfHwgIW1lc3NhZ2VXaXRoQXBwcm92YWwuYXBwcm92YWwpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gc2UgZW5jb250csOzIG1lbnNhamUgY29uIGFwcHJvdmFsIHBhcmEgdGhyZWFkX2lkczonLCB0aHJlYWRJZHMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGFwcHJvdmFsIH0gPSBtZXNzYWdlV2l0aEFwcHJvdmFsXG4gICAgICBjb25zdCBtZXNzYWdlSWQgPSBtZXNzYWdlV2l0aEFwcHJvdmFsLmlkXG4gICAgICBjb25zdCBsb2FkaW5nS2V5ID0gdGhyZWFkSWRzWzBdXG5cbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICBtZXNzYWdlVGV4dDogbWVzc2FnZVdpdGhBcHByb3ZhbC5tZXNzYWdlLFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgcGVuZGluZ0FjdGlvbnM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyxcbiAgICAgICAgdGhyZWFkSWRzLFxuICAgICAgfVxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IGhpdGxDb250ZXh0XG5cbiAgICAgIGNvbnN0IGluaXRpYWxBY3Rpdml0eSA9IHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxDb250ZXh0KVxuXG4gICAgICAvLyBVcGRhdGUgbWVzc2FnZSBzdGF0dXMgaW1tZWRpYXRlbHlcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IG1lc3NhZ2VJZCkge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICAgIHJldHVybiB7IC4uLm1lc3NhZ2UsIGFwcHJvdmFsU3RhdHVzOiBuZXdTdGF0dXMgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuXG4gICAgICAvLyBUcmlnZ2VyIHJlLXJlbmRlclxuICAgICAgY29uc3QgZXhpc3RpbmdNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT4gbS5pZCA9PT0gbWVzc2FnZUlkKVxuICAgICAgaWYgKGV4aXN0aW5nTWVzc2FnZSkge1xuICAgICAgICBjb25zdCBuZXdTdGF0dXMgPSBkZWNpc2lvbiA9PT0gJ2FwcHJvdmUnID8gJ2FwcHJvdmVkJyA6ICdyZWplY3RlZCdcbiAgICAgICAgYWRkTWVzc2FnZSh7IC4uLmV4aXN0aW5nTWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9KVxuICAgICAgfVxuXG4gICAgICAvLyBDYWxsIGNvbnRpbnVlLXRocmVhZCBlbmRwb2ludCB3aXRoIEFMTCB0aHJlYWRfaWRzIGluIGEgc2luZ2xlIHJlcXVlc3RcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcblxuICAgICAgLy8gQWRkIGxvYWRpbmdcbiAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgW2xvYWRpbmdLZXldOiBpbml0aWFsQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgIH0pKVxuICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkoaW5pdGlhbEFjdGl2aXR5KVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLmNvbnRpbnVlVGhyZWFkKHtcbiAgICAgICAgICB0aHJlYWRJZHMsIC8vIFNlbmQgYWxsIGFjdGlvbiB0aHJlYWRfaWRzIGF0IG9uY2VcbiAgICAgICAgICBzZXNzaW9uSWQ6IGFwcHJvdmFsLnNlc3Npb25faWQsXG4gICAgICAgICAgZGVjaXNpb246IGVkaXRlZEFjdGlvbnMgPyAnZWRpdCcgOiBkZWNpc2lvbixcbiAgICAgICAgICBlZGl0ZWRBY3Rpb25zLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIFNTRSBzdHJlYW1cbiAgICAgICAgYXdhaXQgcHJvY2Vzc1NTRVN0cmVhbShyZXNwb25zZSwgbG9hZGluZ0tleSwge1xuICAgICAgICAgIG9uVGhpbmtpbmc6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSA9IHtcbiAgICAgICAgICAgICAgcGhhc2U6ICd0aGlua2luZycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UoMCwgdCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSh0KSlcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZShjb250ZW50LCBudWxsLCAnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVBY3Rpdml0eSA9IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50LFxuICAgICAgICAgICAgICBjdXJyZW50VGhyZWFkSWQsXG4gICAgICAgICAgICAgIHsgdXNlUmVzdW1pbmdGYWxsYmFjazogdHJ1ZSB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShub2RlQWN0aXZpdHkpXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+ICh7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyZW50VGhyZWFkSWRdOiBub2RlQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Db21wbGV0ZTogKFxuICAgICAgICAgICAgZmluYWxDb250ZW50OiBzdHJpbmcsXG4gICAgICAgICAgICBzb3VyY2VzOiBhbnksXG4gICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZyxcbiAgICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nLFxuICAgICAgICAgICAgYXR0YWNobWVudHM/OiBhbnlbXSB8IG51bGwsXG4gICAgICAgICAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgICAgICAgIGFnZW50SWQ/OiBzdHJpbmcgfCBudWxsXG4gICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1GaW5pc2goZmluYWxDb250ZW50LCBzb3VyY2VzLCBtZW1vcnlTZXNzaW9uSWQsIGF0dGFjaG1lbnRzLCBzdWdnZXN0aW9ucywgYWdlbnRJZClcbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW2N1cnJlbnRUaHJlYWRJZF1cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkOiAoYXBwcm92YWxQYXlsb2FkOiBhbnksIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgLy8gTmV3IEhJVEwgaW50ZXJydXB0aW9uIGRldGVjdGVkIGFmdGVyIHJlc3VtZSAoY2hhaW5lZCBhY3Rpb25zKVxuICAgICAgICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkKGFwcHJvdmFsUGF5bG9hZCBhcyBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uRXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBoYW5kbGVTdHJlYW1FcnJvcixcbiAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZSxcbiAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICAgIGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQsXG4gICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICAgIHQsXG4gICAgXVxuICApXG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChpbml0aWFsQ2hhdElkKSB7XG4gICAgICBhd2FpdCBsb2FkTWVzc2FnZXMoKVxuICAgIH0gZWxzZSBpZiAodXNlckluaXRpYWxNZXNzYWdlKSB7XG4gICAgICBjb25zdCBoYXNJbml0aWFsTWVzc2FnZSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2U/LnRyaW0oKSlcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxBdHRhY2htZW50cyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGgpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRmFxID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRnVhID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsU2MgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkKVxuXG4gICAgICBpZiAoIWhhc0luaXRpYWxNZXNzYWdlICYmICFoYXNJbml0aWFsQXR0YWNobWVudHMgJiYgIWhhc0luaXRpYWxGYXEgJiYgIWhhc0luaXRpYWxGdWEgJiYgIWhhc0luaXRpYWxTYykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgYXNrTWFpYSh7XG4gICAgICAgIG1lc3NhZ2U6IHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICBoaXN0b3J5LFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3Q/LmlkIHx8IG51bGwsXG4gICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSEsXG4gICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCEsXG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4ocHJvamVjdD8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihwcm9qZWN0LmZlZUlkKSB9IDoge30pLFxuICAgICAgICAuLi4oY2xpZW50Py5pZFxuICAgICAgICAgID8geyBjbGllbnRJZDogY2xpZW50LmlkIH1cbiAgICAgICAgICA6IHByb2plY3Q/LmNsaWVudElkICE9IG51bGxcbiAgICAgICAgICAgID8geyBjbGllbnRJZDogTnVtYmVyKHByb2plY3QuY2xpZW50SWQpIH1cbiAgICAgICAgICAgIDogcHJvamVjdD8uY2xpZW50Py5pZFxuICAgICAgICAgICAgICA/IHsgY2xpZW50SWQ6IHByb2plY3QuY2xpZW50LmlkIH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0Py5uYW1lID8geyBwcm9qZWN0TmFtZTogcHJvamVjdC5uYW1lIH0gOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0Py5jbGllbnQ/Lm5hbWVcbiAgICAgICAgICA/IHsgY2xpZW50TmFtZTogcHJvamVjdC5jbGllbnQubmFtZSB9XG4gICAgICAgICAgOiBjbGllbnQ/Lm5hbWVcbiAgICAgICAgICAgID8geyBjbGllbnROYW1lOiBjbGllbnQubmFtZSB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHRhc2s/LmlkICE9IG51bGwgPyB7IHRhc2tJZDogTnVtYmVyKHRhc2suaWQpLCAuLi4odGFzay5uYW1lID8geyB0YXNrTmFtZTogdGFzay5uYW1lIH0gOiB7fSkgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmZhcUlkID8geyBmYXFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkOiB1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCA/IHsgZnVhSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLnNjSWQgPyB7IHNjSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKVxuICAgICAgICAgID8geyBjb250ZXh0TWVzc2FnZTogYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXG4gICAgaW5pdGlhbENoYXRJZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBhdXRoVXNlcixcbiAgICBhZ2VudCxcbiAgICBhc2tNYWlhLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgXSlcblxuICBjb25zdCByZXNldENoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYWJvcnRTdHJlYW1TaWxlbnRseVJlZi5jdXJyZW50KClcbiAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG51bGxcbiAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IGZhbHNlXG4gICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgfSwgW10pXG5cbiAgY29uc3Qgc3RvcEdlbmVyYXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc3RvcFN0cmVhbWluZygpXG4gICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbc3RvcFN0cmVhbWluZ10pXG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlcyxcbiAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLFxuICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgYWN0aXZlTG9hZGluZ3MsXG4gICAgY3VycmVudFByb2plY3QsXG4gICAgY3VycmVudENoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgIGN1cnJlbnRNZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcblxuICAgIHNlbmRNZXNzYWdlLFxuICAgIGNoYW5nZVByb2plY3QsXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBoYW5kbGVTY3JvbGwsXG4gICAgaW5pdGlhbGl6ZUNoYXQsXG4gICAgcmVzZXRDaGF0LFxuICAgIHN0b3BHZW5lcmF0aW9uLFxuXG4gICAgaXNEaXNhYmxlZDogd2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlcyxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDaEUsU0FBU0MsRUFBRSxJQUFJQyxNQUFNLFFBQVEsTUFBTTtBQUNuQyxTQUFTQyxlQUFlLFFBQVEsb0JBQW9CO0FBQ3BELFNBQVNDLHFCQUFxQixRQUFRLDBCQUEwQjtBQUNoRSxTQUFTQyxJQUFJLFFBQVEsU0FBUztBQUc5QixTQUFTQyxPQUFPLFFBQWlCLHdCQUF3QjtBQUN6RCxTQUFTQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDL0QsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxJQUFJLE1BQU0scUJBQXFCO0FBQ3RDLFNBQVNDLFFBQVEsUUFBUSw0REFBNEQ7QUFDckYsU0FBdUNDLGVBQWUsUUFBd0Msa0JBQWtCO0FBQ2hILFNBQXlDQyxtQkFBbUIsUUFBUSw0QkFBNEI7QUFDaEcsU0FBU0Msa0NBQWtDLFFBQVEsc0NBQXNDO0FBR3pGLFNBQVNDLFdBQVcsUUFBUSxnQkFBZ0I7QUFDNUMsU0FBU0MsaUJBQWlCLFFBQVEsc0JBQXNCO0FBQ3hELFNBQVNDLHNCQUFzQixRQUFRLDBCQUEwQjtBQUNqRSxTQUFTQyxnQkFBZ0IsUUFBUSw2Q0FBNkM7QUFF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
1458
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJmZXRjaEFnZW50RGV0YWlsIiwiYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QiLCJnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJzdHJlYW1pbmdTdG9yZSIsImlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCIsIm1lcmdlU3RyZWFtQ2h1bmsiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwibm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMiLCJyYXdBdHRhY2htZW50cyIsImZpbHRlciIsImF0dGFjaG1lbnQiLCJfdHlwZW9mIiwibWFwIiwiaW5kZXgiLCJuYW1lIiwidHJpbSIsImNvbmNhdCIsInR5cGUiLCJtaW1lVHlwZSIsIm1pbWVfdHlwZSIsImZ1bGxGaWxlTmFtZSIsImluY2x1ZGVzIiwibnVtZXJpY1NpemUiLCJzaXplIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJmaWxlIiwiRmlsZSIsImlkIiwidXJsX29yaWdpbmFsIiwidW5kZWZpbmVkIiwidXJsX3RodW1ibmFpbCIsInVybF9maWxlIiwicm9sZSIsImV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyIsInBlbmRpbmdBY3Rpb25zIiwiaWRzIiwicHVzaElkIiwicmF3IiwibiIsInBhcnNlSW50IiwiU3RyaW5nIiwiaXNOYU4iLCJwdXNoIiwiZm9yRWFjaCIsImFjdGlvbiIsIl9yZWMkdGFza19pZCIsImFyZ3MiLCJ0b29sX2FyZ3MiLCJyZWMiLCJ0YXNrX2lkIiwidGFza19pZHMiLCJ0YXNrcyIsInQiLCJfdHJlYyR0YXNrX2lkIiwidHJlYyIsImV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zIiwidG9vbF9uYW1lIiwiX3JlYyR0YXNrX2lkMiIsImxpc3QiLCJ0aWQiLCJleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyIsIl9yZWMkYWdlbnRfaWQiLCJlZGl0QWN0aW9uIiwiZmluZCIsImEiLCJ0b0xvd2VyQ2FzZSIsImFnZW50X2lkIiwiYWdlbnRJZCIsImV4dHJhY3RBZ2VudElkRnJvbVBlbmRpbmdBY3Rpb25zQnlUb29sTmFtZSIsInRvb2xOYW1lIiwiX3JlZiIsIl9yZWMkYWdlbnRfaWQyIiwiZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0IiwidGV4dCIsImxhYmVsZWQiLCJtYXRjaCIsImJvbGQiLCJ1c2VTdGFibGVDYWxsYmFja3MiLCJhdXRoVXNlciIsImN1cnJlbnRVc2VyIiwidG9TdHJpbmciLCJmaXJzdE5hbWUiLCJhdmF0YXIiLCJwaWN0dXJlIiwiY3VycmVudCIsInBhcnNlU1NFTGluZSIsImxpbmUiLCJfbGluZSRzcGxpdCIsInNwbGl0IiwiX2xpbmUkc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJldmVudExpbmUiLCJkYXRhTGluZSIsImV2ZW50VHlwZSIsInJlcGxhY2UiLCJkYXRhU3RyIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsInBhcnNlRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzU1NFU3RyZWFtIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3BvbnNlIiwidGhyZWFkSWQiLCJjYWxsYmFja3MiLCJfcmVzcG9uc2UkYm9keSIsInJlYWRlciIsImRlY29kZXIiLCJidWZmZXIiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJpc1N0cmVhbUNvbXBsZXRlIiwiaGFuZGxlTGluZSIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiaSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiX2hhbmRsZUxpbmUiLCJwYXJzZWQiLCJldmVudERhdGEiLCJvblRoaW5raW5nIiwiY29udGVudCIsIm9uVG9rZW4iLCJfZXZlbnREYXRhJGFnZW50X2lkIiwiZmluYWxDb250ZW50Iiwic291cmNlcyIsIm1lbW9yeVNlc3Npb25JZCIsIm1lbW9yeV9zZXNzaW9uX2lkIiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImNvbXBsZXRlZEFnZW50SWQiLCJvbkNvbXBsZXRlIiwibWVzc2FnZSIsIm9uTm9kZSIsIl9ldmVudERhdGEkYWdlbnRfaWQyIiwiX2NhbGxiYWNrcyRvbkFwcHJvdmFsIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiY2FsbCIsIm9uRXJyb3IiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsInJlYWQiLCJzZW50IiwiYWJydXB0IiwiZGVjb2RlIiwic3RyZWFtIiwicG9wIiwibGVuZ3RoIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ1c2VDaGF0TWFuYWdlciIsIl9yZWYzIiwiaW5pdGlhbENoYXRJZCIsImNoYXRJZCIsInVzZXJJbml0aWFsTWVzc2FnZSIsIl9yZWYzJGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwiX3VzZUdsb2JhbENvbnRleHQiLCJwcm9qZWN0Iiwic2V0UHJvamVjdCIsImNsaWVudCIsInNldENsaWVudCIsInRhc2siLCJzZXRUYXNrIiwiYWdlbnQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImNoaXBzUHJvamVjdCIsInNldENoaXBzUHJvamVjdCIsImV2ZW50IiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VTdGFibGVDYWxsYmFja3MiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImxhc3RNYW51YWxBcHByb3ZhbFJlZiIsImhpdGxFeGVjdXRpb25Db250ZXh0UmVmIiwiaXNQcm9jZXNzaW5nUmVmIiwiZmlyc3RUaW1lUmVmIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZiIsImFjdGl2ZVN0cmVhbUNoYXRJZFJlZiIsImFib3J0U3RyZWFtU2lsZW50bHlSZWYiLCJjbGVhclN0cmVhbVVpUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsIl91c2VDaGF0TWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJtZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsImNsZWFyIiwiaXNDbG9uZUFnZW50IiwibGFzdE1zZ1dpdGhQcm9qZWN0IiwibXNnIiwicHJvamVjdElkIiwiYXQiLCJfcmVmNCIsInByb2plY3ROYW1lIiwidGhlbiIsInByb2plY3RzIiwiZm91bmQiLCJwIiwiX2ZvdW5kJGNsaWVudCIsImNsaWVudE5hbWUiLCJsYXN0TXNnV2l0aENsaWVudCIsImNsaWVudElkIiwiX3JlZjUiLCJtc2dDbGllbnRJZCIsIm1zZ0NsaWVudE5hbWUiLCJoYW5kbGVTdHJlYW1FcnJvciIsImVycm9yTWVzc2FnZSIsImVycm9yUmF3TWVzc2FnZSIsIl9lcnJvclJhd01lc3NhZ2UkbWF0YyIsIl9lcnJvclJhd01lc3NhZ2UkbWF0YzIiLCJ0ZW1wTWVzc2FnZUlkIiwidXNlZCIsImlzRXJyb3IiLCJkYXRlIiwiRGF0ZSIsInVzZXIiLCJBU1NJU1RBTlQiLCJoYW5kbGVTdHJlYW1VcGRhdGUiLCJzdGFydCIsInNldFRleHQiLCJoYW5kbGVTdHJlYW1GaW5pc2giLCJfcmVmNiIsIl9jYWxsZWUyIiwic3ViYWdlbnROYW1lIiwicmVzb2x2ZWRDb250ZXh0IiwiX3ByZXZpb3VzTWVzc2FnZSRhcHByIiwiX3dpbmRvdyR0YXNrUGFuZWwiLCJfY3JlYXRlQWdlbnRGb2xsb3dVcCIsIl9lZGl0QWdlbnRGb2xsb3dVcCIsInRhc2tVcmxSZWdleCIsIm1hdGNoZXMiLCJjb250ZW50VG9BZGQiLCJwcmV2aW91c01lc3NhZ2UiLCJoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlIiwiVEFTS19DUkVBVElPTl9UT09MUyIsIlRBU0tfRURJVF9UT09MUyIsIlRBU0tfREVMRVRFX1RPT0xTIiwid2FzVGFza0NyZWF0aW9uIiwid2FzVGFza0VkaXQiLCJ3YXNUYXNrRGVsZXRlIiwid2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCIsIndhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiY29uZmlndXJlZEFnZW50SWQiLCJ3YXNFZGl0QWdlbnRBcHByb3ZlZCIsImVkaXRBZ2VudEZvbGxvd1VwIiwiZnJvbVN0cmVhbSIsImZyb21BcmdzIiwicmVzb2x2ZWRBZ2VudElkIiwidGFza0lkc0Zyb21VcmxzIiwidGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCIsInRhc2tJZHNGcm9tRGVsZXRpb25UZXh0IiwidGFza0lkc0ZvckRhc2hib2FyZCIsInNob3VsZFN5bmNEYXNoYm9hcmQiLCJ0YXNrSWRzIiwidGFiIiwidGFiU2VnbWVudCIsImxhc3RQcm9qZWN0TWVzc2FnZSIsImNvbnRleHRQcm9qZWN0SWRSYXciLCJjb250ZXh0UHJvamVjdElkIiwicGF0aE1hdGNoIiwicm91dGVQcm9qZWN0SWQiLCJpc09uUHJvamVjdFJvdXRlIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMiIsIl93aW5kb3ckbmV3UHJvamVjdERhczMiLCJfd2luZG93JG5ld1Byb2plY3REYXM0IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNSIsIl93aW5kb3ckbmV3UHJvamVjdERhczYiLCJvcGVuVGFza1BhbmVsSWQiLCJtYW51YWxBcHByb3ZhbCIsIm1hbnVhbFdhc1Rhc2tFZGl0IiwibWFudWFsV2FzVGFza0RlbGV0ZSIsIl9tYW51YWxBcHByb3ZhbCR0b29sQSIsIm1hbnVhbFBzZXVkb0FjdGlvbiIsImFmZmVjdGVkVGFza0lkcyIsIl93aW5kb3ckdGFza1BhbmVsMiIsIl93aW5kb3ckdGFza1BhbmVsMiRyZSIsIl9jb250ZXh0MiIsIlJlZ0V4cCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hdGNoQWxsIiwibSIsImFwcHJvdmFsIiwicGVuZGluZ19hY3Rpb25zIiwic29tZSIsImFwcHJvdmFsU3RhdHVzIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImFpQ2hhdEhpdGxPcHRpb24iLCJfb2JqZWN0U3ByZWFkIiwiYWdlbnRfdHlwZSIsImFjdGlvbl90eXBlIiwiZGVjaXNpb24iLCJvcHRpb24iLCJjcmVhdGVkX2FnZW50X2lkIiwidXJsIiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5ld1Byb2plY3REYXNoYm9hcmQiLCJhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCIsImVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZCIsImRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQiLCJ0YXNrUGFuZWwiLCJ0YXNrSWQiLCJ0b29sQXJncyIsInJlZmV0Y2hUYXNrIiwicHJvamVjdF9pZCIsInByb2plY3RfbmFtZSIsImNsaWVudF9uYW1lIiwiY2xpZW50X2lkIiwiX2ZvdW5kJGNsaWVudDIiLCJjaGF0QWdlbnQiLCJlcnIiLCJfeDQiLCJfeDUiLCJfeDYiLCJfeDciLCJfeDgiLCJfeDkiLCJfeDAiLCJfeDEiLCJoYW5kbGVTdHJlYW1TdG9wIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsInNldFRpbWVvdXQiLCJoYW5kbGVBcHByb3ZhbFJlcXVpcmVkIiwiX3JlZjciLCJfYXBwcm92YWxBbnkkcmVzb2x2ZWQiLCJfYXBwcm92YWxBbnkkc3ViYWdlbnQiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QiLCJhcHByb3ZhbEFueSIsInJjIiwicmVzb2x2ZWRfY29udGV4dCIsInN1YmFnZW50IiwiX2ZvdW5kJGNsaWVudDMiLCJoaXRsQ29udGV4dCIsIm1lc3NhZ2VJZCIsIm9yaWdpbmFsX3RocmVhZF9pZCIsIm1lc3NhZ2VUZXh0IiwidGhyZWFkSWRzIiwidGhyZWFkX2lkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwiX2FwcHJvdmFsJHBlbmRpbmdfYWN0MiIsIl9yZWY4IiwiX3Rvb2xfbmFtZSIsIl90b29sX2FyZ3MiLCJmaXJzdEFjdGlvbiIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJhc2tNYWlhIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5Iiwic3RvcFN0cmVhbWluZyIsImFib3J0U3RyZWFtU2lsZW50bHkiLCJjdXJyZW50UHJvamVjdCIsInNlbmRNZXNzYWdlIiwiX3JlZjkiLCJfY2FsbGVlMyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsIl9tZXNzYWdlc1JlZiRjdXJyZW50IiwiX3Byb2plY3QkY2xpZW50IiwiX25vcm1hbGl6ZVNlbmRNZXNzYWdlIiwiZWZmZWN0aXZlTWVudGlvbnMiLCJjb250ZXh0TWVzc2FnZSIsInBheWxvYWRGdWFJZCIsInBheWxvYWRTY0lkIiwiZGlzcGxheU1lc3NhZ2UiLCJuZXdNZXNzYWdlSWQiLCJsYXN0TWVzc2FnZVdpdGhQcm9qZWN0IiwiY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZCIsImZpbmFsTWVzc2FnZSIsIl9vcHRpb25zJHByb2plY3RDaGFuZyIsImhpc3RvcnkiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsInByb2plY3RUb1JlcXVlc3QiLCJwYXlsb2FkRmFxSWQiLCJwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQiLCJwYXlsb2FkRGF0YSIsIl9jb250ZXh0MyIsInBtQWlUeXBlZFRleHQiLCJVU0VSIiwicHJvamVjdENoYW5nZWQiLCJpbmNvbWVUeXBlIiwiaGlzdG9yeU1lc3NhZ2UiLCJsYW5nIiwidXNlcklkIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjb21wYW55X2lkIiwiYWdlbnROYW1lIiwiZmVlSWQiLCJ0YXNrTmFtZSIsImVudGl0eSIsImFnZW50RW50aXR5IiwiYWdlbnRUeXBlIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3gxMyIsIl94MTQiLCJfeDE1IiwiX3gxNiIsImNoYW5nZVByb2plY3QiLCJoYW5kbGVGZWVkYmFjayIsIl9yZWYwIiwiX2NhbGxlZTQiLCJmZWVkYmFja1Byb3AiLCJjaGF0TWVzc2FnZUlkIiwiX2NvbnRleHQ0IiwiQ2hhdHMiLCJ3YXNIZWxwZnVsQ2hhdCIsIlRIVU1CU19VUCIsIndhc0hlbHBmdWwiLCJfeDE3IiwiX3gxOCIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb24iLCJfcmVmMSIsIl9jYWxsZWU1IiwiZWRpdGVkQWN0aW9ucyIsIm1lc3NhZ2VXaXRoQXBwcm92YWwiLCJsb2FkaW5nS2V5IiwiaW5pdGlhbEFjdGl2aXR5IiwiZXhpc3RpbmdNZXNzYWdlIiwibmV3U3RhdHVzIiwiX3QiLCJfY29udGV4dDUiLCJfbSRhcHByb3ZhbCIsIl9kZWZpbmVQcm9wZXJ0eSIsIk9yY2hlc3RyYXRvciIsImNvbnRpbnVlVGhyZWFkIiwic2Vzc2lvbklkIiwic2Vzc2lvbl9pZCIsIm9rIiwiYWN0aXZpdHkiLCJwaGFzZSIsImN1cnJlbnRUaHJlYWRJZCIsIm5vZGVBY3Rpdml0eSIsInVzZVJlc3VtaW5nRmFsbGJhY2siLCJuZXdMb2FkaW5ncyIsImFwcHJvdmFsUGF5bG9hZCIsImZpbmlzaCIsIl94MTkiLCJfeDIwIiwiX3gyMSIsImluaXRpYWxpemVDaGF0IiwiX2NhbGxlZTYiLCJfdXNlckluaXRpYWxNZXNzYWdlJG0iLCJfdXNlckluaXRpYWxNZXNzYWdlJGEiLCJfcHJvamVjdCRjbGllbnQyIiwiX3Byb2plY3QkY2xpZW50MyIsImhhc0luaXRpYWxNZXNzYWdlIiwiaGFzSW5pdGlhbEF0dGFjaG1lbnRzIiwiaGFzSW5pdGlhbEZhcSIsImhhc0luaXRpYWxGdWEiLCJoYXNJbml0aWFsU2MiLCJfY29udGV4dDYiLCJCb29sZWFuIiwicmVzZXRDaGF0Iiwic3RvcEdlbmVyYXRpb24iLCJpc0Rpc2FibGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJhZGl4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGVkLW9wdGlvbmFsLWNoYWluICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgdXNlQ2hhdE1lc3NhZ2VzIH0gZnJvbSAnLi4vdXNlQ2hhdE1lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlT3JjaGVzdHJhdG9yU3RyZWFtIH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IFNlbmRNZXNzYWdlT3B0aW9ucywgVXNlQ2hhdE1hbmFnZXJQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1hbmFnZXIuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi91c2VFdmVudCdcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyLCBDaGF0SGlzdG9yeVJvbGUsIEFwcHJvdmFsUmVxdWVzdCwgUGVuZGluZ0FjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lc3NhZ2UsIGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2UnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgZmV0Y2hBZ2VudERldGFpbCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2ZldGNoQWdlbnREZXRhaWwnXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVkQ29udGV4dCB9IGZyb20gJy4uL3VzZU9yY2hlc3RyYXRvclN0cmVhbS91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QsIGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi91dGlscy9oaXRsQW5hbHl0aWNzJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG4gIHR5cGUgSGl0bEV4ZWN1dGlvbkNvbnRleHQsXG59IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBzdHJlYW1pbmdTdG9yZSB9IGZyb20gJy4uL3VzZVN0cmVhbWluZ01lc3NhZ2UnXG5pbXBvcnQgeyBpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQsIG1lcmdlU3RyZWFtQ2h1bmsgfSBmcm9tICcuLi8uLi91dGlscy9zc2VTdHJlYW1Db250ZW50J1xuXG50eXBlIEF0dGFjaG1lbnRzT3JPcHRpb25zID0gQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9uc1xuXG5jb25zdCBub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MgPSAoYXR0YWNobWVudHNPck9wdGlvbnM/OiBBdHRhY2htZW50c09yT3B0aW9ucykgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShhdHRhY2htZW50c09yT3B0aW9ucykpIHtcbiAgICByZXR1cm4geyBhdHRhY2htZW50czogYXR0YWNobWVudHNPck9wdGlvbnMsIG9wdGlvbnM6IHt9IGFzIFNlbmRNZXNzYWdlT3B0aW9ucyB9XG4gIH1cblxuICBjb25zdCBvcHRpb25zOiBTZW5kTWVzc2FnZU9wdGlvbnMgPSBhdHRhY2htZW50c09yT3B0aW9ucyA/PyB7fVxuICByZXR1cm4geyBhdHRhY2htZW50czogb3B0aW9ucy5hdHRhY2htZW50cyA/PyBbXSwgb3B0aW9ucyB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZUFzc2lzdGFudEF0dGFjaG1lbnRzID0gKHJhd0F0dGFjaG1lbnRzOiB1bmtub3duKTogQXR0YWNobWVudEZpbGVbXSA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheShyYXdBdHRhY2htZW50cykpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIHJldHVybiByYXdBdHRhY2htZW50c1xuICAgIC5maWx0ZXIoKGF0dGFjaG1lbnQpOiBhdHRhY2htZW50IGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+ICEhYXR0YWNobWVudCAmJiB0eXBlb2YgYXR0YWNobWVudCA9PT0gJ29iamVjdCcpXG4gICAgLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPVxuICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5uYW1lID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50Lm5hbWUudHJpbSgpID8gYXR0YWNobWVudC5uYW1lLnRyaW0oKSA6IGBmaWxlLSR7aW5kZXggKyAxfWBcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC50eXBlID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LnR5cGUudHJpbSgpID8gYXR0YWNobWVudC50eXBlLnRyaW0oKSA6ICdwZGYnXG4gICAgICBjb25zdCBtaW1lVHlwZSA9IHR5cGVvZiBhdHRhY2htZW50Lm1pbWVfdHlwZSA9PT0gJ3N0cmluZycgPyBhdHRhY2htZW50Lm1pbWVfdHlwZSA6ICcnXG4gICAgICBjb25zdCBmdWxsRmlsZU5hbWUgPSBuYW1lLmluY2x1ZGVzKCcuJykgPyBuYW1lIDogYCR7bmFtZX0uJHt0eXBlfWBcbiAgICAgIGNvbnN0IG51bWVyaWNTaXplID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQuc2l6ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICA/IGF0dGFjaG1lbnQuc2l6ZVxuICAgICAgICAgIDogTnVtYmVyLmlzRmluaXRlKE51bWJlcihhdHRhY2htZW50LnNpemUpKVxuICAgICAgICAgICAgPyBOdW1iZXIoYXR0YWNobWVudC5zaXplKVxuICAgICAgICAgICAgOiAwXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGU6IG5ldyBGaWxlKFtdLCBmdWxsRmlsZU5hbWUsIHsgdHlwZTogbWltZVR5cGUgfSksXG4gICAgICAgIGlkOlxuICAgICAgICAgIHR5cGVvZiBhdHRhY2htZW50LmlkID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LmlkLnRyaW0oKVxuICAgICAgICAgICAgPyBhdHRhY2htZW50LmlkXG4gICAgICAgICAgICA6IGBhc3Npc3RhbnQtZmlsZS0ke2luZGV4fS0ke2Z1bGxGaWxlTmFtZX1gLFxuICAgICAgICBuYW1lLFxuICAgICAgICBzaXplOiBudW1lcmljU2l6ZSxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdXJsX29yaWdpbmFsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfb3JpZ2luYWwgOiB1bmRlZmluZWQsXG4gICAgICAgIHVybF90aHVtYm5haWw6IHR5cGVvZiBhdHRhY2htZW50LnVybF90aHVtYm5haWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfdGh1bWJuYWlsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfZmlsZTogdHlwZW9mIGF0dGFjaG1lbnQudXJsX2ZpbGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfZmlsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcm9sZTogYXR0YWNobWVudC5yb2xlID09PSAnYXNzaXN0YW50JyA/ICdhc3Npc3RhbnQnIDogJ3VzZXInLFxuICAgICAgfVxuICAgIH0pXG59XG5cbi8qKiBFeHRyYWUgdGFza19pZHMgZGUgbG9zIHRvb2xfYXJncyBkZSBwZW5kaW5nX2FjdGlvbnMsIGN1YnJpZW5kbyBsYXMgZm9ybWFzIGNvbXVuZXM6XG4gKiAgLSBgeyB0YXNrX2lkIH1gIG8gYHsgaWQgfWBcbiAqICAtIGB7IHRhc2tfaWRzOiBbXSB9YFxuICogIC0gYHsgdGFza3M6IFt7IHRhc2tfaWR8aWQgfSwgLi4uXSB9YFxuICogIMOadGlsIHBhcmEgdG9vbHMgZGUgZWRpdC9hc3NpZ24vZGVsZXRlIGN1YW5kbyBsYSByZXNwdWVzdGEgZGVsIExMTSBubyBpbmNsdXllIFVSTHMgL3Rhc2tzLy4uLi9kZXRhaWwuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSk6IG51bWJlcltdIHtcbiAgY29uc3QgaWRzOiBudW1iZXJbXSA9IFtdXG4gIGNvbnN0IHB1c2hJZCA9IChyYXc6IHVua25vd24pID0+IHtcbiAgICBpZiAocmF3ID09IG51bGwpIHJldHVyblxuICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gIH1cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIHB1c2hJZChyZWMudGFza19pZCA/PyByZWMuaWQpXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tfaWRzKSkge1xuICAgICAgcmVjLnRhc2tfaWRzLmZvckVhY2gocHVzaElkKVxuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWMudGFza3MpKSB7XG4gICAgICByZWMudGFza3MuZm9yRWFjaCh0ID0+IHtcbiAgICAgICAgaWYgKHQgJiYgdHlwZW9mIHQgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHQpKSB7XG4gICAgICAgICAgY29uc3QgdHJlYyA9IHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgICBwdXNoSWQodHJlYy50YXNrX2lkID8/IHRyZWMuaWQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbi8qKiB0YXNrX2lkIC8gdGFza19pZHMgZW4gcGVuZGluZ19hY3Rpb25zIGRlIGRlbGV0ZV8qIChsYSByZXNwdWVzdGEgcHVlZGUgbm8gaW5jbHVpciBVUkxzIC90YXNrcy/igKYvZGV0YWlsKS4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBwZW5kaW5nQWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgaWYgKCFhY3Rpb24gfHwgdHlwZW9mIGFjdGlvbiAhPT0gJ29iamVjdCcpIHJldHVyblxuICAgIGNvbnN0IGFyZ3MgPSBhY3Rpb24udG9vbF9hcmdzXG4gICAgaWYgKCEoYXJncyAmJiB0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoYXJncykpKSByZXR1cm5cbiAgICBjb25zdCByZWMgPSBhcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFzaycpIHtcbiAgICAgIGNvbnN0IHJhdyA9IHJlYy50YXNrX2lkID8/IHJlYy5pZFxuICAgICAgaWYgKHJhdyAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYWN0aW9uLnRvb2xfbmFtZSA9PT0gJ2RlbGV0ZV90YXNrc19iYXRjaCcpIHtcbiAgICAgIGNvbnN0IGxpc3QgPSByZWMudGFza19pZHNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpc3QpKSB7XG4gICAgICAgIGxpc3QuZm9yRWFjaCh0aWQgPT4ge1xuICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcodGlkKSwgMTApXG4gICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgZWRpdEFjdGlvbiA9IHBlbmRpbmdBY3Rpb25zLmZpbmQoYSA9PiAoYS50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdlZGl0X2FnZW50JylcbiAgaWYgKFxuICAgICFlZGl0QWN0aW9uIHx8XG4gICAgIWVkaXRBY3Rpb24udG9vbF9hcmdzIHx8XG4gICAgdHlwZW9mIGVkaXRBY3Rpb24udG9vbF9hcmdzICE9PSAnb2JqZWN0JyB8fFxuICAgIEFycmF5LmlzQXJyYXkoZWRpdEFjdGlvbi50b29sX2FyZ3MpXG4gICkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gZWRpdEFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSwgdG9vbE5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBhY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSB0b29sTmFtZS50b0xvd2VyQ2FzZSgpKVxuICBpZiAoIWFjdGlvbiB8fCAhYWN0aW9uLnRvb2xfYXJncyB8fCB0eXBlb2YgYWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShhY3Rpb24udG9vbF9hcmdzKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gYWN0aW9uLnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBjb25zdCByYXcgPSByZWMuYWdlbnRfaWQgPz8gcmVjLmFnZW50SWQgPz8gcmVjLmlkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG4vKiogw5psdGltbyByZWN1cnNvIHNpIG5vIGhheSBsaW5rcyBuaSB0b29sX2FyZ3MgcGFyc2VhYmxlcyAocC4gZWouIFwiSUQgKio3NTk3MTA2KipcIikuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQodGV4dDogc3RyaW5nKTogbnVtYmVyW10ge1xuICBjb25zdCBsYWJlbGVkID0gdGV4dC5tYXRjaCgvXFxiSURcXHMqXFwqXFwqKFxcZCspXFwqXFwqL2kpXG4gIGlmIChsYWJlbGVkKSB7XG4gICAgY29uc3QgbiA9IHBhcnNlSW50KGxhYmVsZWRbMV0sIDEwKVxuICAgIHJldHVybiBOdW1iZXIuaXNOYU4obikgPyBbXSA6IFtuXVxuICB9XG4gIGNvbnN0IGJvbGQgPSB0ZXh0Lm1hdGNoKC9cXCpcXCooXFxkezUsfSlcXCpcXCovKVxuICBpZiAoYm9sZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChib2xkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICByZXR1cm4gW11cbn1cblxuY29uc3QgdXNlU3RhYmxlQ2FsbGJhY2tzID0gKGF1dGhVc2VyOiBDT1JVc2VyKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRVc2VyID0gdXNlUmVmPENoYXRNZXNzYWdlVXNlcj4oe1xuICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gIH0pXG5cbiAgaWYgKFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuaWQgIT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50Lm5hbWUgIT09IGF1dGhVc2VyLmZpcnN0TmFtZSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuYXZhdGFyICE9PSBhdXRoVXNlci5waWN0dXJlXG4gICkge1xuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQgPSB7XG4gICAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjdXJyZW50VXNlcjogY3VycmVudFVzZXIuY3VycmVudCxcbiAgfVxufVxuXG5jb25zdCBwYXJzZVNTRUxpbmUgPSAobGluZTogc3RyaW5nKTogeyBldmVudFR5cGU6IHN0cmluZzsgZGF0YTogdW5rbm93biB9IHwgbnVsbCA9PiB7XG4gIGlmICghbGluZS50cmltKCkpIHJldHVybiBudWxsXG5cbiAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcbiAgICByZXR1cm4geyBldmVudFR5cGUsIGRhdGEgfVxuICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBTU0UgZGF0YTonLCBwYXJzZUVycm9yLCBkYXRhU3RyKVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuY29uc3QgcHJvY2Vzc1NTRVN0cmVhbSA9IGFzeW5jIChcbiAgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICB0aHJlYWRJZDogc3RyaW5nLFxuICBjYWxsYmFja3M6IHtcbiAgICBvblRoaW5raW5nOiAoKSA9PiB2b2lkXG4gICAgb25Ub2tlbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgdGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uQ29tcGxldGU6IChcbiAgICAgIGZpbmFsQ29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogYW55W10gfCBudWxsLFxuICAgICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGwsXG4gICAgICBhZ2VudElkPzogc3RyaW5nIHwgbnVsbFxuICAgICkgPT4gdm9pZFxuICAgIG9uRXJyb3I6IChlcnJvcjogYW55LCB0aHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkPzogKGFwcHJvdmFsOiBhbnksIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICB9XG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgaWYgKCFyZWFkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICB9XG5cbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gIGxldCBidWZmZXIgPSAnJ1xuICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgbGV0IGlzU3RyZWFtQ29tcGxldGUgPSBmYWxzZVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUxpbmUobGluZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VTU0VMaW5lKGxpbmUpXG4gICAgaWYgKCFwYXJzZWQpIHJldHVyblxuXG4gICAgY29uc3QgeyBldmVudFR5cGUsIGRhdGEgfSA9IHBhcnNlZFxuICAgIGNvbnN0IGV2ZW50RGF0YSA9IGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuICAgIGlmIChldmVudFR5cGUgPT09ICd0aGlua2luZycpIHtcbiAgICAgIGNhbGxiYWNrcy5vblRoaW5raW5nKClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ3Rva2VuJykge1xuICAgICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBldmVudERhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEuY29udGVudCA6ICcnXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY29udGVudClcbiAgICAgIGNhbGxiYWNrcy5vblRva2VuKGFjY3VtdWxhdGVkQ29udGVudClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gdHlwZW9mIGV2ZW50RGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGV2ZW50RGF0YS5jb250ZW50IDogJydcbiAgICAgIGFjY3VtdWxhdGVkQ29udGVudCA9IG1lcmdlU3RyZWFtQ2h1bmsoYWNjdW11bGF0ZWRDb250ZW50LCBjb250ZW50KVxuICAgICAgY2FsbGJhY2tzLm9uVG9rZW4oYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgaWYgKGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZChldmVudERhdGEpKSB7XG4gICAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IGNvbnRlbnQgfHwgYWNjdW11bGF0ZWRDb250ZW50XG4gICAgICAgIGNvbnN0IHNvdXJjZXMgPSBldmVudERhdGEuc291cmNlcyB8fCBudWxsXG4gICAgICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChldmVudERhdGEubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkoZXZlbnREYXRhLmF0dGFjaG1lbnRzKSA/IGV2ZW50RGF0YS5hdHRhY2htZW50cyA6IG51bGxcbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5KVxuICAgICAgICAgID8gKGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdKVxuICAgICAgICAgIDogQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdGlvbnMpXG4gICAgICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW10pXG4gICAgICAgICAgICA6IG51bGxcbiAgICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IGV2ZW50RGF0YS5hZ2VudF9pZCA/PyBldmVudERhdGEuYWdlbnRJZFxuICAgICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID1cbiAgICAgICAgICBhZ2VudElkUmF3ICE9IG51bGwgJiYgU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSAhPT0gJycgPyBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpIDogbnVsbFxuICAgICAgICBjYWxsYmFja3Mub25Db21wbGV0ZShcbiAgICAgICAgICBmaW5hbENvbnRlbnQsXG4gICAgICAgICAgc291cmNlcyxcbiAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgdGhyZWFkSWQsXG4gICAgICAgICAgYXR0YWNobWVudHMsXG4gICAgICAgICAgc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgY29tcGxldGVkQWdlbnRJZFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdub2RlJykge1xuICAgICAgaWYgKGV2ZW50RGF0YS5tZXNzYWdlICYmIHR5cGVvZiBldmVudERhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2FsbGJhY2tzLm9uTm9kZShldmVudERhdGEubWVzc2FnZSwgdGhyZWFkSWQpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IChldmVudERhdGEuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgY29uc3Qgc291cmNlcyA9IChldmVudERhdGEuc291cmNlcyBhcyB1bmtub3duKSB8fCBudWxsXG4gICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAoZXZlbnREYXRhLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShldmVudERhdGEuYXR0YWNobWVudHMpID8gZXZlbnREYXRhLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5KVxuICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdF9yZXBseSBhcyBzdHJpbmdbXSlcbiAgICAgICAgOiBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0aW9ucylcbiAgICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW10pXG4gICAgICAgICAgOiBudWxsXG4gICAgICBjb25zdCBhZ2VudElkUmF3ID0gZXZlbnREYXRhLmFnZW50X2lkID8/IGV2ZW50RGF0YS5hZ2VudElkXG4gICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID0gYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgIGNhbGxiYWNrcy5vbkNvbXBsZXRlKGZpbmFsQ29udGVudCwgc291cmNlcywgbWVtb3J5U2Vzc2lvbklkLCB0aHJlYWRJZCwgYXR0YWNobWVudHMsIHN1Z2dlc3Rpb25zLCBjb21wbGV0ZWRBZ2VudElkKVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnYXBwcm92YWxfcmVxdWlyZWQnKSB7XG4gICAgICBjYWxsYmFja3Mub25BcHByb3ZhbFJlcXVpcmVkPy4oZXZlbnREYXRhLCBhY2N1bXVsYXRlZENvbnRlbnQsIHRocmVhZElkKVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnZXJyb3InKSB7XG4gICAgICBjYWxsYmFja3Mub25FcnJvcihldmVudERhdGEuZXJyb3IsIHRocmVhZElkKVxuICAgIH1cbiAgfVxuXG4gIHdoaWxlICghaXNTdHJlYW1Db21wbGV0ZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgIGlmIChkb25lKSB7XG4gICAgICBpc1N0cmVhbUNvbXBsZXRlID0gdHJ1ZVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGhhbmRsZUxpbmUobGluZXNbaV0pXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWFuYWdlciA9ICh7XG4gIGNoYXRJZDogaW5pdGlhbENoYXRJZCxcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBvbkVycm9yLFxuICBhZ2VudHMgPSBbXSxcbn06IFVzZUNoYXRNYW5hZ2VyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3Qge1xuICAgIHByb2plY3QsXG4gICAgc2V0UHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIHRhc2ssXG4gICAgc2V0VGFzayxcbiAgICBhZ2VudCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZVN0YWJsZUNhbGxiYWNrcyhhdXRoVXNlcilcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuICBjb25zdCBjdXJyZW50TWVzc2FnZUlkID0gdXNlUmVmKHV1aWR2NCgpKVxuICBjb25zdCBjdXJyZW50VXNlclF1ZXN0aW9uID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGN1cnJlbnRDaGF0SWQgPSB1c2VSZWYoaW5pdGlhbENoYXRJZCB8fCB1dWlkdjQoKSlcbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VbXT4oW10pXG4gIC8qKlxuICAgKiBHdWFyZGEgaW5mbyBkZWwgw7psdGltbyBhcHByb3ZhbCBtYW51YWwgKGN1YW5kbyBlbCB1c3VhcmlvIHRpcGVhIFwic2lcIi9cIm5vXCIgZW4gbHVnYXJcbiAgICogZGUgY2xpY2tlYXIgZWwgYm90w7NuKS4gRW4gbWFudWFsIGFwcHJvdmFsLCBgaGFuZGxlQXBwcm92YWxSZXF1aXJlZGAgcmV0b3JuYSBlYXJseVxuICAgKiBzaW4gYWdyZWdhciB1biBtZW5zYWplIGNvbiBgYXBwcm92YWxgLCBhc8OtIHF1ZSBsYSBsw7NnaWNhIGRlIHJlZmV0Y2ggZW4gYG9uU3RyZWFtRmluaXNoYFxuICAgKiBubyBsbyBkZXRlY3RhIHbDrWEgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbGAuIExvIGd1YXJkYW1vcyBhY8OhIHBhcmEgY29uc3VtaXJsbyBkZXNwdcOpcy5cbiAgICovXG4gIGNvbnN0IGxhc3RNYW51YWxBcHByb3ZhbFJlZiA9IHVzZVJlZjx7XG4gICAgdG9vbE5hbWU6IHN0cmluZ1xuICAgIHRvb2xBcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgfSB8IG51bGw+KG51bGwpXG4gIC8qKiBDb250ZXh0byBkZWwgbWVuc2FqZSBkZSBhcHJvYmFjacOzbiBwcmV2aW8gYWwgZWplY3V0YXIgY29udGludWUtdGhyZWFkLiAqL1xuICBjb25zdCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiA9IHVzZVJlZjxIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzUHJvY2Vzc2luZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgZmlyc3RUaW1lUmVmID0gdXNlUmVmKGZhbHNlKVxuICAvKiogSWQgZGVsIHBsYWNlaG9sZGVyIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZyBhY3Rpdm8gKHNpIGhheSkuICovXG4gIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqXG4gICAqIENoYXQgYWwgcXVlIHBlcnRlbmVjZSBlbCBzdHJlYW0gYWN0dWFsbWVudGUgYWN0aXZvLiBTaSBjYW1iaWEgZWwgY2hhdFxuICAgKiBtaWVudHJhcyB1biBzdHJlYW0gZXN0w6EgZW4gdnVlbG8sIGRlc2NhcnRhbW9zIGxvcyB0b2tlbnMgcmVzaWR1YWxlc1xuICAgKiBxdWUgcHVlZGFuIGxsZWdhciBhbnRlcyBkZSBxdWUgZWwgYWJvcnQgc2UgY29tcGxldGUuXG4gICAqL1xuICBjb25zdCBhY3RpdmVTdHJlYW1DaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqIFNldHRlciBpbmRpcmVjdG8gcGFyYSBhYm9ydGFyIGVsIHN0cmVhbSBhbnRlcyBkZSBxdWUgZWwgaG9vayBkZVxuICAgKiBvcnF1ZXN0YWRvciBlc3TDqSBpbmljaWFsaXphZG8gKHNlIGxpbmtlYSBtw6FzIGFiYWpvKS4gKi9cbiAgY29uc3QgYWJvcnRTdHJlYW1TaWxlbnRseVJlZiA9IHVzZVJlZjwoKSA9PiB2b2lkPigoKSA9PiB1bmRlZmluZWQpXG4gIGNvbnN0IGNsZWFyU3RyZWFtVWlSZWYgPSB1c2VSZWY8KCkgPT4gdm9pZD4oKCkgPT4gdW5kZWZpbmVkKVxuICBjb25zdCBbYWN0aXZlTG9hZGluZ3MsIHNldEFjdGl2ZUxvYWRpbmdzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KHt9KVxuXG4gIGNvbnN0IGlzV2ViU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzV2ViU2VhcmNoQWN0aXZlKVxuICBjb25zdCBpc0RlZXBTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNEZWVwU2VhcmNoQWN0aXZlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCA9IGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIGNvbnN0IHsgbG9hZGluZ01lc3NhZ2VzLCBtZXNzYWdlcywgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLCBsb2FkTWVzc2FnZXMsIGFkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIGhhbmRsZVNjcm9sbCB9ID1cbiAgICB1c2VDaGF0TWVzc2FnZXMoe1xuICAgICAgY2hhdElkOiBpbml0aWFsQ2hhdElkIHx8IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgICAgb25FcnJvcixcbiAgICAgIGFnZW50cyxcbiAgICB9KVxuXG4gIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtbG9hZGluZy1tZXNzYWdlcy1jaGFuZ2VkJywge1xuICAgICAgZGV0YWlsOiB7IGxvYWRpbmdNZXNzYWdlcyB9LFxuICAgIH0pXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgfSwgW2xvYWRpbmdNZXNzYWdlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbENoYXRJZCAmJiBpbml0aWFsQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIC8vIFNpIGhheSB1biBzdHJlYW0gZW4gY3Vyc28sIGFib3J0YXJsbyBzaWxlbmNpb3NhbWVudGUgcGFyYSBxdWUgbG9zXG4gICAgICAvLyB0b2tlbnMgcmVzaWR1YWxlcyBubyBzZSBlc2NyaWJhbiBlbiBlbCBjaGF0IG51ZXZvLlxuICAgICAgYWJvcnRTdHJlYW1TaWxlbnRseVJlZi5jdXJyZW50KClcblxuICAgICAgLy8gTGltcGlhciBjb250ZXh0byBnbG9iYWwgYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG5cbiAgICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IGluaXRpYWxDaGF0SWRcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG5cbiAgICAgIGxvYWRNZXNzYWdlcygpXG4gICAgfVxuICB9LCBbaW5pdGlhbENoYXRJZCwgcHJvamVjdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldFRhc2ssIGxvYWRNZXNzYWdlc10pXG5cbiAgLy8gRWwgY29udGV4dG8gZGUgcHJveWVjdG8vY2xpZW50ZSBhcGxpY2EgYSBhZ2VudGVzIGNsb25lICh0aWVuZW4gdG9vbHMpLiBMb3MgY3VzdG9tIG5vIGxvXG4gIC8vIG5lY2VzaXRhbiBwb3IgYWhvcmEsIGFzw60gcXVlIHBhcmEgZWxsb3Mgbm8gcmVzb2x2ZW1vcyBuaSBkaXNwYXJhbW9zIEdldFByb2plY3RzLlxuICBjb25zdCBpc0Nsb25lQWdlbnQgPSBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJ1xuXG4gIC8vIFNpbmNyb25pemFyIGNoaXBzUHJvamVjdCBjdWFuZG8gaGF5IG1lbnNhamVzIGNvbiBwcm9qZWN0SWQgcGVybyBjaGlwc1Byb2plY3Qgbm8gc2UgaGEgc2V0ZWFkb1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNDbG9uZUFnZW50IHx8IGNoaXBzUHJvamVjdCB8fCBsb2FkaW5nTWVzc2FnZXMpIHJldHVyblxuICAgIGNvbnN0IGxhc3RNc2dXaXRoUHJvamVjdCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgY29uc3QgeyBwcm9qZWN0SWQsIHByb2plY3ROYW1lIH0gPSBsYXN0TXNnV2l0aFByb2plY3QgfHwge31cbiAgICBpZiAoIXByb2plY3RJZCkgcmV0dXJuXG5cbiAgICBmZXRjaFByb2plY3RzKHByb2plY3RJZCkudGhlbihwcm9qZWN0cyA9PiB7XG4gICAgICBjb25zdCBmb3VuZCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSBOdW1iZXIocHJvamVjdElkKSlcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZC5uYW1lLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kLmNsaWVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhmb3VuZC5pZCksXG4gICAgICAgIH0pXG4gICAgICAgIHNldFByb2plY3QoZm91bmQpXG4gICAgICB9IGVsc2UgaWYgKHByb2plY3ROYW1lKSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgcHJvamVjdE5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocHJvamVjdElkKSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0UHJvamVjdCh7IGlkOiBOdW1iZXIocHJvamVjdElkKSwgbmFtZTogcHJvamVjdE5hbWUgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbaXNDbG9uZUFnZW50LCBtZXNzYWdlcywgY2hpcHNQcm9qZWN0LCBsb2FkaW5nTWVzc2FnZXMsIGZldGNoUHJvamVjdHMsIHNldENoaXBzUHJvamVjdCwgc2V0UHJvamVjdF0pXG5cbiAgLy8gU2luY3Jvbml6YXIgY2xpZW50IGN1YW5kbyBoYXkgbWVuc2FqZXMgY29uIGNsaWVudElkIHBlcm8gY2xpZW50IG5vIHNlIGhhIHNldGVhZG9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzQ2xvbmVBZ2VudCB8fCBjbGllbnQgfHwgbG9hZGluZ01lc3NhZ2VzKSByZXR1cm5cbiAgICBjb25zdCBsYXN0TXNnV2l0aENsaWVudCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLmNsaWVudElkICE9IG51bGwgJiYgbXNnLmNsaWVudE5hbWUpLmF0KC0xKVxuICAgIGNvbnN0IHsgY2xpZW50SWQ6IG1zZ0NsaWVudElkLCBjbGllbnROYW1lOiBtc2dDbGllbnROYW1lIH0gPSBsYXN0TXNnV2l0aENsaWVudCB8fCB7fVxuICAgIGlmIChtc2dDbGllbnRJZCA9PSBudWxsIHx8ICFtc2dDbGllbnROYW1lKSByZXR1cm5cblxuICAgIHNldENsaWVudD8uKHsgaWQ6IE51bWJlcihtc2dDbGllbnRJZCksIG5hbWU6IG1zZ0NsaWVudE5hbWUgfSlcbiAgfSwgW2lzQ2xvbmVBZ2VudCwgbWVzc2FnZXMsIGNsaWVudCwgbG9hZGluZ01lc3NhZ2VzLCBzZXRDbGllbnRdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUVycm9yID0gdXNlQ2FsbGJhY2soXG4gICAgKGVycm9yTWVzc2FnZT86IHN0cmluZywgZXJyb3JSYXdNZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gICAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgZXJyb3JNZXNzYWdlID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIlxuICAgICAgICAgID8gdCgnY2hhdC5lcnJvckFjY2Vzc0RlbmllZCcpXG4gICAgICAgICAgOiBlcnJvck1lc3NhZ2UgPT09ICdpbnZhbGlkX3JlcXVlc3RfZXJyb3InICYmIGVycm9yUmF3TWVzc2FnZT8uaW5jbHVkZXMoJ3Byb21wdCBpcyB0b28gbG9uZycpXG4gICAgICAgICAgICA/IHQoJ2NoYXQuZXJyb3JQcm9tcHRUb29Mb25nJywgeyB1c2VkOiBlcnJvclJhd01lc3NhZ2UubWF0Y2goLyhcXGQrKSB0b2tlbnMvKT8uWzFdID8/ICcnIH0pXG4gICAgICAgICAgICA6IHQoJ2NoYXQuZXJyb3InKVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1VcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGVudDogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBTaSBlbCBjaGF0IGNhbWJpw7MgbWllbnRyYXMgZWwgc3RyZWFtIGVzdGFiYSBlbiB2dWVsbywgZGVzY2FydGFyIGVsXG4gICAgICAvLyB0b2tlbiByZXNpZHVhbDogbm8gZGViZSBwaW50YXJzZSBlbiBlbCBudWV2byBjaGF0LlxuICAgICAgaWYgKGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ICE9IG51bGwgJiYgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgIT09IGN1cnJlbnRDaGF0SWQuY3VycmVudCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcblxuICAgICAgLy8gUHJpbWVyYSBsbGFtYWRhIGRlIGVzdGUgc3RyZWFtOiBpbnNlcnRhbW9zIGVsIHBsYWNlaG9sZGVyIGVuIGVsXG4gICAgICAvLyBhcnJheSBkZSBgbWVzc2FnZXNgIHVuYSDDum5pY2EgdmV6LiBMYXMgbGxhbWFkYXMgc3Vic2lndWllbnRlcyB5YSBub1xuICAgICAgLy8gdG9jYW4gYG1lc3NhZ2VzYDsgZWwgdGV4dG8gdml2ZSBlbiBlbCBzdHJlYW1pbmdTdG9yZSAoZXh0ZXJubyksIHBvclxuICAgICAgLy8gbG8gcXVlIFJlYWN0IG5vIHJlLXJlbmRlcml6YSBlbCDDoXJib2wgY29tcGxldG8gZW4gY2FkYSB0b2tlbi5cbiAgICAgIGlmIChzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgIT09IHRlbXBNZXNzYWdlSWQpIHtcbiAgICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gdGVtcE1lc3NhZ2VJZFxuICAgICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgICAgICBzdHJlYW1pbmdTdG9yZS5zdGFydCh0ZW1wTWVzc2FnZUlkKVxuICAgICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgICBpZDogdGVtcE1lc3NhZ2VJZCxcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgICAgc291cmNlcyxcbiAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHN0cmVhbWluZ1N0b3JlLnNldFRleHQodGVtcE1lc3NhZ2VJZCwgY29udGVudClcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRmluaXNoID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgY29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICByYXdBdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgY29tcGxldGVkQWdlbnRJZD86IHN0cmluZyB8IG51bGwsXG4gICAgICBzdWJhZ2VudE5hbWU/OiBzdHJpbmcgfCBudWxsLFxuICAgICAgcmVzb2x2ZWRDb250ZXh0PzogUmVzb2x2ZWRDb250ZXh0IHwgbnVsbFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gbm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMocmF3QXR0YWNobWVudHMpXG5cbiAgICAgIC8vIERldGVjdGFyIHRvZGFzIGxhcyBVUkxzIGRlIHRhcmVhcyAoLi4uL3Rhc2tzLzEyMy9kZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKVxuICAgICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgICBjb25zdCBtYXRjaGVzID0gWy4uLmNvbnRlbnQubWF0Y2hBbGwodGFza1VybFJlZ2V4KV1cblxuICAgICAgbGV0IGNvbnRlbnRUb0FkZCA9IGNvbnRlbnRcbiAgICAgIGNvbnN0IHByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG0gPT4gbS5pZCAhPT0gdGVtcE1lc3NhZ2VJZCkuYXQoLTEpXG4gICAgICBjb25zdCBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbCAhPSBudWxsXG4gICAgICBjb25zdCBUQVNLX0NSRUFUSU9OX1RPT0xTID0gWydjcmVhdGVfdGFzaycsICdjcmVhdGVfdGFza3NfYmF0Y2gnLCAnY2xvbmVfdGFzayddXG4gICAgICBjb25zdCBUQVNLX0VESVRfVE9PTFMgPSBbXG4gICAgICAgICdlZGl0X3Rhc2snLFxuICAgICAgICAnZWRpdF90YXNrc19iYXRjaCcsXG4gICAgICAgICd0YXNrX2Fzc2lnbicsXG4gICAgICAgICd0YXNrX3VuYXNzaWduJyxcbiAgICAgICAgJ3VwZGF0ZV90YXNrX3R5cGUnLFxuICAgICAgICAndXBkYXRlX2VzdGltYXRlZF9ob3VycycsXG4gICAgICAgICdhc3NpZ25fdGFza19sYWJlbCcsXG4gICAgICBdXG4gICAgICBjb25zdCBUQVNLX0RFTEVURV9UT09MUyA9IFsnZGVsZXRlX3Rhc2snLCAnZGVsZXRlX3Rhc2tzX2JhdGNoJ11cbiAgICAgIGNvbnN0IHBlbmRpbmdBY3Rpb25zID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zIHx8IFtdXG4gICAgICBjb25zdCB3YXNUYXNrQ3JlYXRpb24gPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0NSRUFUSU9OX1RPT0xTLmluY2x1ZGVzKGFjdGlvbi50b29sX25hbWUpKVxuICAgICAgY29uc3Qgd2FzVGFza0VkaXQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0VESVRfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRGVsZXRlID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNDcmVhdGVBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBhY3Rpb24udG9vbF9uYW1lID09PSAnY3JlYXRlX2FnZW50JylcbiAgICAgIGNvbnN0IHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IChhY3Rpb24udG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICBsZXQgY3JlYXRlQWdlbnRGb2xsb3dVcDogeyBhZ2VudElkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpKSB7XG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7IGFnZW50SWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgJiZcbiAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiZcbiAgICAgICAgKGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKSB8fFxuICAgICAgICAgIGV4dHJhY3RBZ2VudElkRnJvbVBlbmRpbmdBY3Rpb25zQnlUb29sTmFtZShwZW5kaW5nQWN0aW9ucywgJ2NvbmZpZ3VyZV9hZ2VudF9hY2Nlc3MnKSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjb25maWd1cmVkQWdlbnRJZCA9XG4gICAgICAgICAgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7XG4gICAgICAgICAgYWdlbnRJZDogY29uZmlndXJlZEFnZW50SWQgYXMgc3RyaW5nLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh3YXNDcmVhdGVBZ2VudEFwcHJvdmVkKSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRIaXRsT3B0aW9uLCB7XG4gICAgICAgICAgYWdlbnRfdHlwZTogZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZShhZ2VudCksXG4gICAgICAgICAgYWN0aW9uX3R5cGU6IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0KHBlbmRpbmdBY3Rpb25zKSxcbiAgICAgICAgICBkZWNpc2lvbjogJ2FjY2VwdCcsXG4gICAgICAgICAgb3B0aW9uOiAnY3JlYXRlX2FnZW50JyxcbiAgICAgICAgICAuLi4oY29tcGxldGVkQWdlbnRJZD8udHJpbSgpID8geyBjcmVhdGVkX2FnZW50X2lkOiBjb21wbGV0ZWRBZ2VudElkLnRyaW0oKSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCB3YXNFZGl0QWdlbnRBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdlZGl0X2FnZW50JylcblxuICAgICAgbGV0IGVkaXRBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzRWRpdEFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgY29uc3QgZnJvbVN0cmVhbSA9IGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKVxuICAgICAgICBjb25zdCBmcm9tQXJncyA9IGV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuICAgICAgICBjb25zdCByZXNvbHZlZEFnZW50SWQgPSBmcm9tU3RyZWFtIHx8IGZyb21BcmdzXG4gICAgICAgIGlmIChyZXNvbHZlZEFnZW50SWQpIHtcbiAgICAgICAgICBlZGl0QWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogcmVzb2x2ZWRBZ2VudElkIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbVVybHMgPSBtYXRjaGVzLm1hcChtYXRjaCA9PiBwYXJzZUludChtYXRjaFsxXSwgMTApKVxuICAgICAgY29uc3QgdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCA9IGV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuICAgICAgY29uc3QgdGFza0lkc0Zyb21EZWxldGlvblRleHQgPVxuICAgICAgICB3YXNUYXNrRGVsZXRlICYmIHRhc2tJZHNGcm9tVXJscy5sZW5ndGggPT09IDAgJiYgdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbC5sZW5ndGggPT09IDBcbiAgICAgICAgICA/IGV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dChjb250ZW50KVxuICAgICAgICAgIDogW11cbiAgICAgIGNvbnN0IHRhc2tJZHNGb3JEYXNoYm9hcmQgPVxuICAgICAgICB0YXNrSWRzRnJvbVVybHMubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGFza0lkc0Zyb21VcmxzXG4gICAgICAgICAgOiB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbFxuICAgICAgICAgICAgOiB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dFxuXG4gICAgICBjb25zdCBzaG91bGRTeW5jRGFzaGJvYXJkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICAod2FzVGFza0NyZWF0aW9uIHx8IHdhc1Rhc2tFZGl0IHx8IHdhc1Rhc2tEZWxldGUpICYmXG4gICAgICAgIHRhc2tJZHNGb3JEYXNoYm9hcmQubGVuZ3RoID4gMFxuXG4gICAgICBpZiAoc2hvdWxkU3luY0Rhc2hib2FyZCkge1xuICAgICAgICBjb25zdCB0YXNrSWRzID0gdGFza0lkc0ZvckRhc2hib2FyZFxuICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQodGFza0lkc1swXSlcbiAgICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgICAgY29udGVudFRvQWRkID0gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgICAgICAgICB1cmwucmVwbGFjZSgvXFwvKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpKD89JHxcXD8pLywgdGFiU2VnbWVudClcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0UHJvamVjdE1lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWRSYXcgPSBwcm9qZWN0Py5pZCB8fCBsYXN0UHJvamVjdE1lc3NhZ2U/LnByb2plY3RJZFxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gY29udGV4dFByb2plY3RJZFJhdyA/IHBhcnNlSW50KFN0cmluZyhjb250ZXh0UHJvamVjdElkUmF3KSwgMTApIDogbnVsbFxuICAgICAgICBjb25zdCBwYXRoTWF0Y2ggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUubWF0Y2goL15cXC9wcm9qZWN0c1xcLyhcXGQrKVxcLy8pXG4gICAgICAgIGNvbnN0IHJvdXRlUHJvamVjdElkID0gcGF0aE1hdGNoID8gcGFyc2VJbnQocGF0aE1hdGNoWzFdLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IGlzT25Qcm9qZWN0Um91dGUgPSBjb250ZXh0UHJvamVjdElkICYmIHJvdXRlUHJvamVjdElkICYmIGNvbnRleHRQcm9qZWN0SWQgPT09IHJvdXRlUHJvamVjdElkXG5cbiAgICAgICAgaWYgKGlzT25Qcm9qZWN0Um91dGUpIHtcbiAgICAgICAgICBpZiAod2FzVGFza0NyZWF0aW9uKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0VkaXQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5lZGl0RXhpc3RpbmdUYXNrSW5EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0RlbGV0ZSkge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZWZldGNoIGRlbCB0YXNrIHBhbmVsIHNpIGVzdMOhIGFiaWVydG8geSBsYSB0b29sIGFwcm9iYWRhIGVkaXTDsy9ib3Jyw7MgZXNhIHRhcmVhLlxuICAgICAgLy8gQ3VicmUgbG9zIGRvcyBmbHVqb3MgZGUgYXBwcm92YWw6XG4gICAgICAvLyAgIDEpIEFwcHJvdmFsIHBvciBib3TDs24g4oaSIGBwcmV2aW91c01lc3NhZ2UuYXBwcm92YWwucGVuZGluZ19hY3Rpb25zYCAodsOtYSBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlKVxuICAgICAgLy8gICAyKSBNYW51YWwgYXBwcm92YWwgKHVzdWFyaW8gdGlwZWEgXCJzaVwiL1wibm9cIikg4oaSIGBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudGBcbiAgICAgIGNvbnN0IG9wZW5UYXNrUGFuZWxJZCA9IHdpbmRvdy50YXNrUGFuZWw/LnRhc2tJZFxuICAgICAgY29uc3QgbWFudWFsQXBwcm92YWwgPSBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudFxuICAgICAgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnQgPSBudWxsIC8vIGNvbnN1bWlyIHVuYSBzb2xhIHZlelxuICAgICAgY29uc3QgbWFudWFsV2FzVGFza0VkaXQgPSAhIW1hbnVhbEFwcHJvdmFsICYmIFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhtYW51YWxBcHByb3ZhbC50b29sTmFtZSlcbiAgICAgIGNvbnN0IG1hbnVhbFdhc1Rhc2tEZWxldGUgPSAhIW1hbnVhbEFwcHJvdmFsICYmIFRBU0tfREVMRVRFX1RPT0xTLmluY2x1ZGVzKG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lKVxuXG4gICAgICBpZiAob3BlblRhc2tQYW5lbElkICYmICh3YXNUYXNrRWRpdCB8fCB3YXNUYXNrRGVsZXRlIHx8IG1hbnVhbFdhc1Rhc2tFZGl0IHx8IG1hbnVhbFdhc1Rhc2tEZWxldGUpKSB7XG4gICAgICAgIGNvbnN0IG1hbnVhbFBzZXVkb0FjdGlvbjogUGVuZGluZ0FjdGlvbiB8IG51bGwgPSBtYW51YWxBcHByb3ZhbFxuICAgICAgICAgID8gKHsgdG9vbF9uYW1lOiBtYW51YWxBcHByb3ZhbC50b29sTmFtZSwgdG9vbF9hcmdzOiBtYW51YWxBcHByb3ZhbC50b29sQXJncyA/PyB7fSB9IGFzIFBlbmRpbmdBY3Rpb24pXG4gICAgICAgICAgOiBudWxsXG4gICAgICAgIGNvbnN0IGFmZmVjdGVkVGFza0lkcyA9IFtcbiAgICAgICAgICAuLi5leHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MocGVuZGluZ0FjdGlvbnMpLFxuICAgICAgICAgIC4uLnRhc2tJZHNGcm9tVXJscyxcbiAgICAgICAgICAuLi50YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLFxuICAgICAgICAgIC4uLihtYW51YWxQc2V1ZG9BY3Rpb24gPyBleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MoW21hbnVhbFBzZXVkb0FjdGlvbl0pIDogW10pLFxuICAgICAgICBdLm1hcChTdHJpbmcpXG4gICAgICAgIGlmIChhZmZlY3RlZFRhc2tJZHMuaW5jbHVkZXMoU3RyaW5nKG9wZW5UYXNrUGFuZWxJZCkpKSB7XG4gICAgICAgICAgd2luZG93LnRhc2tQYW5lbD8ucmVmZXRjaFRhc2s/LigpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgYW5zd2VyLSR7bWVtb3J5U2Vzc2lvbklkfWAsXG4gICAgICAgIG1lc3NhZ2U6IGNvbnRlbnRUb0FkZCxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIHNvdXJjZXMsXG4gICAgICAgIC4uLihhdHRhY2htZW50cy5sZW5ndGggPiAwID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgIHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucyB8fCBbXSxcbiAgICAgICAgLi4uKGNyZWF0ZUFnZW50Rm9sbG93VXAgPyB7IGNyZWF0ZUFnZW50Rm9sbG93VXAgfSA6IHt9KSxcbiAgICAgICAgLi4uKHN1YmFnZW50TmFtZSA/IHsgc3ViYWdlbnROYW1lIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICAvLyBPcnF1ZXN0YWRvcjogYWN0dWFsaXphIGVsIGNoaXAgZGUgY29udGV4dG8gY29uIGVsIHByb3llY3RvL2NsaWVudGVcbiAgICAgIC8vIHF1ZSBlbCBzdWJhZ2VudGUgcmVzb2x2acOzIGRpbsOhbWljYW1lbnRlIHbDrWEgaGVycmFtaWVudGFzIChlai4gcHJvamVjdF9pZFxuICAgICAgLy8gZW5jb250cmFkbyBwb3IgZ2V0X3Byb2plY3RfaWRfYmFzZWRfb25fbmFtZSBvIGdldF9wcm9qZWN0X3dpdGhfdGFza3NfaW5mbykuXG4gICAgICBpZiAocmVzb2x2ZWRDb250ZXh0Py5wcm9qZWN0X2lkICYmICFjaGlwc1Byb2plY3QpIHtcbiAgICAgICAgaWYgKHJlc29sdmVkQ29udGV4dC5wcm9qZWN0X25hbWUpIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgcHJvamVjdE5hbWU6IHJlc29sdmVkQ29udGV4dC5wcm9qZWN0X25hbWUsXG4gICAgICAgICAgICBjbGllbnROYW1lOiByZXNvbHZlZENvbnRleHQuY2xpZW50X25hbWUgfHwgJycsXG4gICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhyZXNvbHZlZENvbnRleHQucHJvamVjdF9pZCksXG4gICAgICAgICAgfSlcbiAgICAgICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgICAgIGlkOiByZXNvbHZlZENvbnRleHQucHJvamVjdF9pZCxcbiAgICAgICAgICAgIG5hbWU6IHJlc29sdmVkQ29udGV4dC5wcm9qZWN0X25hbWUsXG4gICAgICAgICAgICAuLi4ocmVzb2x2ZWRDb250ZXh0LmNsaWVudF9pZCA/IHsgY2xpZW50SWQ6IHJlc29sdmVkQ29udGV4dC5jbGllbnRfaWQgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihyZXNvbHZlZENvbnRleHQuY2xpZW50X25hbWVcbiAgICAgICAgICAgICAgPyB7IGNsaWVudDogeyBpZDogcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9pZCB8fCAwLCBuYW1lOiByZXNvbHZlZENvbnRleHQuY2xpZW50X25hbWUgfSB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmV0Y2hQcm9qZWN0cyhyZXNvbHZlZENvbnRleHQucHJvamVjdF9pZCkudGhlbihwcm9qZWN0cyA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSByZXNvbHZlZENvbnRleHQucHJvamVjdF9pZClcbiAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZC5uYW1lLFxuICAgICAgICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kLmNsaWVudD8ubmFtZSB8fCByZXNvbHZlZENvbnRleHQuY2xpZW50X25hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcoZm91bmQuaWQpLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBzZXRQcm9qZWN0KGZvdW5kKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0TmFtZTogYFByb3llY3RvICR7cmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWR9YCxcbiAgICAgICAgICAgICAgICBjbGllbnROYW1lOiByZXNvbHZlZENvbnRleHQuY2xpZW50X25hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWQpLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBzZXRQcm9qZWN0KHsgaWQ6IHJlc29sdmVkQ29udGV4dC5wcm9qZWN0X2lkISwgbmFtZTogYFByb3llY3RvICR7cmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWR9YCB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyZXNvbHZlZENvbnRleHQ/LmNsaWVudF9pZCAmJiAhY2xpZW50KSB7XG4gICAgICAgIHNldENsaWVudD8uKHtcbiAgICAgICAgICBpZDogcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9pZCxcbiAgICAgICAgICBuYW1lOiByZXNvbHZlZENvbnRleHQuY2xpZW50X25hbWUgfHwgJycsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChjcmVhdGVBZ2VudEZvbGxvd1VwPy5hZ2VudElkKSB7XG4gICAgICAgIGZldGNoQWdlbnREZXRhaWwoY3JlYXRlQWdlbnRGb2xsb3dVcC5hZ2VudElkKVxuICAgICAgICAgIC50aGVuKGNoYXRBZ2VudCA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7IGFnZW50OiBjaGF0QWdlbnQgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3VzZUNoYXRNYW5hZ2VyXSBObyBzZSBwdWRvIGHDsWFkaXIgZWwgYWdlbnRlIHJlY2nDqW4gY3JlYWRvIGFsIGxpc3RhZG8nLCBlcnIpXG4gICAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKGVkaXRBZ2VudEZvbGxvd1VwPy5hZ2VudElkKSB7XG4gICAgICAgIGZldGNoQWdlbnREZXRhaWwoZWRpdEFnZW50Rm9sbG93VXAuYWdlbnRJZClcbiAgICAgICAgICAudGhlbihjaGF0QWdlbnQgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHsgYWdlbnQ6IGNoYXRBZ2VudCB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbdXNlQ2hhdE1hbmFnZXJdIE5vIHNlIHB1ZG8gcmVmcmVzY2FyIGVsIGFnZW50ZSBlZGl0YWRvJywgZXJyKVxuICAgICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGlmIChmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJylcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHByb2plY3QsIGdldFRhYlRhc2tEZWZhdWx0LCBldmVudCwgYWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1TdG9wID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCgpXG4gICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG4gICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcblxuICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LWNhbmNlbGxlZGAsXG4gICAgICBtZXNzYWdlOiB0KCdjaGF0LmNhbmNlbGxlZCcpLFxuICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ6IHRydWUsXG4gICAgfSlcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJylcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgfSwgNTAwKVxuICB9LCBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgdF0pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxSZXF1aXJlZCA9IHVzZUNhbGxiYWNrKFxuICAgIChhcHByb3ZhbDogQXBwcm92YWxSZXF1ZXN0LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICAvLyBPcnF1ZXN0YWRvcjogZXh0cmFlciBjb250ZXh0byByZXN1ZWx0byBkZWwgcGF5bG9hZCBkZSBhcHJvYmFjacOzbiB5XG4gICAgICAvLyBhY3R1YWxpemFyIGVsIGNoaXAgaW5tZWRpYXRhbWVudGUg4oCUIHNpbiBlc3BlcmFyIGFsIGNvbXBsZXRlL3JlZnJlc2guXG4gICAgICAvLyBFbCBiYWNrZW5kIGluY2x1eWUgcmVzb2x2ZWRfY29udGV4dCBlbiBzdWJhZ2VudF91c2VkIChkZW50cm8gZGVsXG4gICAgICAvLyBhcHByb3ZhbF9yZXF1aXJlZCBkYXRhIHBhcmEgc3ViYWdlbnRlcykgY29uIGVsIHByb2plY3RfaWQvY2xpZW50X2lkXG4gICAgICAvLyBxdWUgZWwgc3ViYWdlbnRlIGRldGVybWluw7MgYW50ZXMgZGVsIGludGVycnVwdC5cbiAgICAgIGNvbnN0IGFwcHJvdmFsQW55ID0gYXBwcm92YWwgYXMgQXBwcm92YWxSZXF1ZXN0ICYge1xuICAgICAgICByZXNvbHZlZF9jb250ZXh0PzogUmVzb2x2ZWRDb250ZXh0IHwgbnVsbFxuICAgICAgICBzdWJhZ2VudD86IHsgcmVzb2x2ZWRfY29udGV4dD86IFJlc29sdmVkQ29udGV4dCB8IG51bGwgfVxuICAgICAgfVxuICAgICAgY29uc3QgcmMgPSBhcHByb3ZhbEFueS5yZXNvbHZlZF9jb250ZXh0ID8/IGFwcHJvdmFsQW55LnN1YmFnZW50Py5yZXNvbHZlZF9jb250ZXh0ID8/IG51bGxcbiAgICAgIGlmIChyYz8ucHJvamVjdF9pZCAmJiAhY2hpcHNQcm9qZWN0KSB7XG4gICAgICAgIGlmIChyYy5wcm9qZWN0X25hbWUpIHtcbiAgICAgICAgICAvLyBUZW5lbW9zIG5vbWJyZTogc2V0ZWFyIGVsIGNoaXAgZGlyZWN0YW1lbnRlXG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiByYy5wcm9qZWN0X25hbWUsXG4gICAgICAgICAgICBjbGllbnROYW1lOiByYy5jbGllbnRfbmFtZSB8fCAnJyxcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHJjLnByb2plY3RfaWQpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgICAgICBpZDogcmMucHJvamVjdF9pZCxcbiAgICAgICAgICAgIG5hbWU6IHJjLnByb2plY3RfbmFtZSxcbiAgICAgICAgICAgIC4uLihyYy5jbGllbnRfaWQgPyB7IGNsaWVudElkOiByYy5jbGllbnRfaWQgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihyYy5jbGllbnRfbmFtZSA/IHsgY2xpZW50OiB7IGlkOiByYy5jbGllbnRfaWQgfHwgMCwgbmFtZTogcmMuY2xpZW50X25hbWUgfSB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU29sbyB0ZW5lbW9zIGVsIElEIOKAlCBmZXRjaCBkZWwgbm9tYnJlIGNvbXBsZXRvIGRlbCBwcm95ZWN0b1xuICAgICAgICAgIGZldGNoUHJvamVjdHMocmMucHJvamVjdF9pZCkudGhlbihwcm9qZWN0cyA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSByYy5wcm9qZWN0X2lkKVxuICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICAgICAgcHJvamVjdE5hbWU6IGZvdW5kLm5hbWUsXG4gICAgICAgICAgICAgICAgY2xpZW50TmFtZTogZm91bmQuY2xpZW50Py5uYW1lIHx8IHJjLmNsaWVudF9uYW1lIHx8ICcnLFxuICAgICAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGZvdW5kLmlkKSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgc2V0UHJvamVjdChmb3VuZClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIEZhbGxiYWNrOiBtb3N0cmFyIGVsIElEIHNpIG5vIHNlIHB1ZWRlIHJlc29sdmVyIGVsIG5vbWJyZVxuICAgICAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgICAgIHByb2plY3ROYW1lOiBgUHJveWVjdG8gJHtyYy5wcm9qZWN0X2lkfWAsXG4gICAgICAgICAgICAgICAgY2xpZW50TmFtZTogcmMuY2xpZW50X25hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocmMucHJvamVjdF9pZCksXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIHNldFByb2plY3QoeyBpZDogcmMucHJvamVjdF9pZCEsIG5hbWU6IGBQcm95ZWN0byAke3JjLnByb2plY3RfaWR9YCB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyYz8uY2xpZW50X2lkICYmICFjbGllbnQpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4oeyBpZDogcmMuY2xpZW50X2lkLCBuYW1lOiByYy5jbGllbnRfbmFtZSB8fCAnJyB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXRsQ29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgPSB7XG4gICAgICAgIG1lc3NhZ2VJZDogYGFwcHJvdmFsLSR7YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfWAsXG4gICAgICAgIG1lc3NhZ2VUZXh0OiBhY2N1bXVsYXRlZENvbnRlbnQgfHwgJycsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBwZW5kaW5nQWN0aW9uczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zLFxuICAgICAgICB0aHJlYWRJZHM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucz8ubWFwKGFjdGlvbiA9PiBhY3Rpb24udGhyZWFkX2lkKSxcbiAgICAgIH1cbiAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuXG4gICAgICBpZiAoYXBwcm92YWwubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0QWN0aW9uID0gYXBwcm92YWwucGVuZGluZ19hY3Rpb25zPy5bMF1cbiAgICAgICAgY29uc3QgdG9vbE5hbWUgPSAoYXBwcm92YWwgYXMgeyB0b29sX25hbWU/OiBzdHJpbmcgfSkudG9vbF9uYW1lID8/IGZpcnN0QWN0aW9uPy50b29sX25hbWUgPz8gJydcbiAgICAgICAgY29uc3QgdG9vbEFyZ3MgPVxuICAgICAgICAgICgoYXBwcm92YWwgYXMgeyB0b29sX2FyZ3M/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9KS50b29sX2FyZ3MgPz9cbiAgICAgICAgICAgIChmaXJzdEFjdGlvbj8udG9vbF9hcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkKSkgfHxcbiAgICAgICAgICBudWxsXG4gICAgICAgIGlmICh0b29sTmFtZSkge1xuICAgICAgICAgIGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50ID0geyB0b29sTmFtZSwgdG9vbEFyZ3MgfVxuICAgICAgICB9XG4gICAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBhIG1lc3NhZ2Ugd2l0aCB0aGUgYXBwcm92YWwgcmVxdWVzdFxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YCxcbiAgICAgICAgbWVzc2FnZTogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIGFwcHJvdmFsU3RhdHVzOiAncGVuZGluZycsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIGNoaXBzUHJvamVjdCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRQcm9qZWN0LCBjbGllbnQsIHNldENsaWVudF1cbiAgKVxuXG4gIGNvbnN0IHtcbiAgICBhc2tNYWlhLFxuICAgIGlzTG9hZGluZzogd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICAgIGFib3J0U3RyZWFtU2lsZW50bHksXG4gIH0gPSB1c2VPcmNoZXN0cmF0b3JTdHJlYW0oe1xuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLFxuICB9KVxuXG4gIC8vIE1hbnRlbmVtb3MgZWwgc2V0dGVyIG3DoXMgcmVjaWVudGUgZW4gdW5hIHJlZiBwYXJhIHF1ZSBwdWVkYSB1c2Fyc2UgZGVzZGVcbiAgLy8gZWZlY3RvcyBkZWZpbmlkb3MgYW50ZXMgZW4gZWwgYXJjaGl2byAoY2FtYmlvIGRlIGNoYXQsIHJlc2V0LCBldGMuKS5cbiAgYWJvcnRTdHJlYW1TaWxlbnRseVJlZi5jdXJyZW50ID0gYWJvcnRTdHJlYW1TaWxlbnRseVxuICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQgPSAoKSA9PiB7XG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICBzZXRBY3RpdmVMb2FkaW5ncyh7fSlcbiAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICB9XG5cbiAgY29uc3QgY3VycmVudFByb2plY3QgPSBwcm9qZWN0XG5cbiAgY29uc3Qgc2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50c09yT3B0aW9ucz86IEF0dGFjaG1lbnRGaWxlW10gfCBTZW5kTWVzc2FnZU9wdGlvbnMsXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiB7XG4gICAgICBpZiAoaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgfHwgd2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlcykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBhdHRhY2htZW50cywgb3B0aW9ucyB9ID0gbm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzKGF0dGFjaG1lbnRzT3JPcHRpb25zKVxuICAgICAgLy8gTGFzIG1lbnRpb25zIHB1ZWRlbiB2ZW5pciB2w61hIDV0byBwYXLDoW1ldHJvIChjYWxsIHBvc2l0aW9uYWwgZGVzZGUgZWwgZm9vdGVyKVxuICAgICAgLy8gbyB2w61hIFNlbmRNZXNzYWdlT3B0aW9ucyAoY2FsbCBwcm9ncmFtw6F0aWNvKS4gRWwgcGFyw6FtZXRybyBleHBsw61jaXRvIGdhbmEuXG4gICAgICBjb25zdCBlZmZlY3RpdmVNZW50aW9ucyA9IG1lbnRpb25zID8/IG9wdGlvbnMubWVudGlvbnNcbiAgICAgIGNvbnN0IGNvbnRleHRNZXNzYWdlOiBDb250ZXh0TWVzc2FnZSB8IHVuZGVmaW5lZCA9IGJ1aWxkQ29udGV4dE1lc3NhZ2UoZWZmZWN0aXZlTWVudGlvbnMpXG4gICAgICBjb25zdCBwYXlsb2FkRnVhSWQgPSBmdWFJZCA/PyBvcHRpb25zLmZ1YUlkXG4gICAgICBjb25zdCBwYXlsb2FkU2NJZCA9IHNjSWQgPz8gb3B0aW9ucy5zY0lkXG4gICAgICBjb25zdCBkaXNwbGF5TWVzc2FnZSA9IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkobWVzc2FnZSwge1xuICAgICAgICBmdWFJZDogcGF5bG9hZEZ1YUlkLFxuICAgICAgICBzY0lkOiBwYXlsb2FkU2NJZCxcbiAgICAgIH0pXG5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgY29uc3QgbmV3TWVzc2FnZUlkID0gdXVpZHY0KClcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IG5ld01lc3NhZ2VJZFxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbWVzc2FnZVxuXG4gICAgICBpZiAoIXJlcG9ydGVkRXZlbnQuY3VycmVudCkge1xuICAgICAgICBldmVudChFVkVOVFMucG1BaVR5cGVkVGV4dClcbiAgICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICAvLyBWZXJpZmljYXIgc2kgZWwgY29udGV4dG8gZ2xvYmFsIGVzdMOhIGRlc2FjdHVhbGl6YWRvXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0ID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuXG4gICAgICBjb25zdCBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgPSBtZXNzYWdlc1JlZi5jdXJyZW50Py5bbWVzc2FnZXNSZWYuY3VycmVudC5sZW5ndGggLSAxXT8uYWdlbnRJZFxuXG4gICAgICAvLyBObyBhZ3JlZ2FyIHByb2plY3RJZCBhbCBtZW5zYWplIGRlbCB1c3VhcmlvIC0gc2UgZGV0ZXJtaW5hcsOhIGRlc3B1w6lzXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBxdWVzdGlvbi0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH1gLFxuICAgICAgICBtZXNzYWdlOiBkaXNwbGF5TWVzc2FnZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogY3VycmVudFVzZXIsXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5VU0VSLFxuICAgICAgICBzb3VyY2VzOiBhdHRhY2htZW50cyxcbiAgICAgICAgLi4uKGNvbnRleHRNZXNzYWdlID8geyBjb250ZXh0TWVzc2FnZSB9IDoge30pLFxuICAgICAgfSlcblxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcblxuICAgICAgY29uc3Qgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IHN0cmVhbWluZ1BsYWNlaG9sZGVySWRcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gY3VycmVudENoYXRJZC5jdXJyZW50XG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQsXG4gICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogYWdlbnQ/Lm5hbWUgfHwgJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pXG5cbiAgICAgIGxldCBmaW5hbE1lc3NhZ2UgPSBtZXNzYWdlXG5cbiAgICAgIGlmIChtZXNzYWdlID09PSB0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKSkge1xuICAgICAgICBmaW5hbE1lc3NhZ2UgPSBgRkFROiAke3QoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpfSAtIFRpcG8gZGUgcmVudGFiaWxpZGFkOiAke1xuICAgICAgICAgIG9wdGlvbnMucHJvamVjdENoYW5nZWQ/LmluY29tZVR5cGUgfHwgcHJvamVjdD8uaW5jb21lVHlwZVxuICAgICAgICB9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICAvLyBWZXJpZmljYXIgY29uc2lzdGVuY2lhIGVudHJlIGNvbnRleHRvIGdsb2JhbCB5IMO6bHRpbW8gbWVuc2FqZVxuICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3Q/LmlkXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVByb2plY3RJZCA9IGxhc3RNZXNzYWdlV2l0aFByb2plY3Q/LnByb2plY3RJZFxuXG4gICAgICBsZXQgcHJvamVjdFRvUmVxdWVzdDogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICAgICAgLy8gU2kgaGF5IMO6bHRpbW8gbWVuc2FqZSBjb24gcHJvamVjdElkLCB1c2FybG8gKG3DoXMgY29uZmlhYmxlKVxuICAgICAgaWYgKGxhc3RNZXNzYWdlUHJvamVjdElkICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKGxhc3RNZXNzYWdlUHJvamVjdElkKVxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0ID0gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gICAgICB9XG4gICAgICAvLyBTaSBubyBoYXkgw7psdGltbyBtZW5zYWplLCB1c2FyIGVsIGNvbnRleHRvIGdsb2JhbFxuICAgICAgZWxzZSBpZiAoY29udGV4dFByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHByb2plY3RUb1JlcXVlc3QgPSBjb250ZXh0UHJvamVjdElkXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhbcHJvamVjdFRvUmVxdWVzdF0pXG5cbiAgICAgIGNvbnN0IHBheWxvYWRGYXFJZCA9IGZhcUlkID8/IG9wdGlvbnMuZmFxSWRcbiAgICAgIGNvbnN0IHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCA9IGFnZW50U3VnZ2VzdGlvbklkID8/IG9wdGlvbnMuYWdlbnRTdWdnZXN0aW9uSWRcblxuICAgICAgY29uc3QgcGF5bG9hZERhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGZpbmFsTWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgIGFnZW50SWQ6IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyB8fCBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKHByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIocHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGNsaWVudD8uaWRcbiAgICAgICAgICA/IHsgY2xpZW50SWQ6IGNsaWVudC5pZCwgLi4uKGNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjbGllbnQubmFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHByb2plY3Q/LmNsaWVudElkICE9IG51bGxcbiAgICAgICAgICAgID8geyBjbGllbnRJZDogTnVtYmVyKHByb2plY3QuY2xpZW50SWQpIH1cbiAgICAgICAgICAgIDogcHJvamVjdD8uY2xpZW50Py5pZFxuICAgICAgICAgICAgICA/IHsgY2xpZW50SWQ6IHByb2plY3QuY2xpZW50LmlkLCAuLi4ocHJvamVjdC5jbGllbnQubmFtZSA/IHsgY2xpZW50TmFtZTogcHJvamVjdC5jbGllbnQubmFtZSB9IDoge30pIH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0cz8ubGVuZ3RoID8geyBwcm9qZWN0TmFtZTogcHJvamVjdHNbMF0ubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4odGFzaz8uaWQgIT0gbnVsbCA/IHsgdGFza0lkOiBOdW1iZXIodGFzay5pZCksIC4uLih0YXNrLm5hbWUgPyB7IHRhc2tOYW1lOiB0YXNrLm5hbWUgfSA6IHt9KSB9IDoge30pLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGYXFJZCA/IHsgZmFxSWQ6IHBheWxvYWRGYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogcGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRnVhSWQgPyB7IGZ1YUlkOiBwYXlsb2FkRnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRTY0lkID8geyBzY0lkOiBwYXlsb2FkU2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGNvbnRleHRNZXNzYWdlID8geyBjb250ZXh0TWVzc2FnZSB9IDoge30pLFxuICAgICAgfVxuXG4gICAgICBhc2tNYWlhKHBheWxvYWREYXRhKVxuICAgIH0sXG4gICAgW1xuICAgICAgYWRkTWVzc2FnZSxcbiAgICAgIGV2ZW50LFxuICAgICAgYXNrTWFpYSxcbiAgICAgIHByb2plY3QsXG4gICAgICBjbGllbnQsXG4gICAgICB0YXNrLFxuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIHQsXG4gICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBdXG4gIClcblxuICBjb25zdCBjaGFuZ2VQcm9qZWN0ID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgaWYgKCFjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQpIHJldHVyblxuXG4gICAgICBpZiAob3B0aW9uLmlkICE9PSBwcm9qZWN0Py5pZCkge1xuICAgICAgICBzZXRQcm9qZWN0KG9wdGlvbilcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2plY3QgJiYgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgfSkpXG5cbiAgICAgICAgYXNrTWFpYSh7XG4gICAgICAgICAgbWVzc2FnZTogY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50LFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgcHJvamVjdElkOiBvcHRpb24uaWQsXG4gICAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgLi4uKG9wdGlvbj8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihvcHRpb24uZmVlSWQpIH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdGlvbj8uY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IE51bWJlcihvcHRpb24uY2xpZW50SWQpIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtwcm9qZWN0LCBzZXRQcm9qZWN0LCBhc2tNYWlhLCBhdXRoVXNlciwgaXNXZWJTZWFyY2hBY3RpdmUsIGFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2sgPSB1c2VDYWxsYmFjayhhc3luYyAoZmVlZGJhY2tQcm9wOiBGZWVkYmFjaywgY2hhdE1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLkNoYXRzLndhc0hlbHBmdWxDaGF0KGNoYXRNZXNzYWdlSWQsIGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQKVxuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gY2hhdE1lc3NhZ2VJZCAmJiBtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgd2FzSGVscGZ1bDogZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxEZWNpc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIHRocmVhZElkczogc3RyaW5nW10sXG4gICAgICBkZWNpc2lvbjogJ2FwcHJvdmUnIHwgJ3JlamVjdCcsXG4gICAgICBlZGl0ZWRBY3Rpb25zPzogQXJyYXk8eyB0b29sX25hbWU6IHN0cmluZzsgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfT5cbiAgICApID0+IHtcbiAgICAgIGlmICghdGhyZWFkSWRzPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gdGhyZWFkX2lkcyBwcm92aWRlZCBmb3IgYXBwcm92YWwgZGVjaXNpb24nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQnVzY2FyIGVsIG1lbnNhamUgcXVlIGNvbnRpZW5lIGFsZ3VubyBkZSBlc3RvcyB0aHJlYWRJZHMgZW4gc3VzIHBlbmRpbmdfYWN0aW9uc1xuICAgICAgY29uc3QgbWVzc2FnZVdpdGhBcHByb3ZhbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmluZChtID0+XG4gICAgICAgIG0uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gdGhyZWFkSWRzLmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICAgICAgKVxuXG4gICAgICBpZiAoIW1lc3NhZ2VXaXRoQXBwcm92YWwgfHwgIW1lc3NhZ2VXaXRoQXBwcm92YWwuYXBwcm92YWwpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gc2UgZW5jb250csOzIG1lbnNhamUgY29uIGFwcHJvdmFsIHBhcmEgdGhyZWFkX2lkczonLCB0aHJlYWRJZHMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGFwcHJvdmFsIH0gPSBtZXNzYWdlV2l0aEFwcHJvdmFsXG4gICAgICBjb25zdCBtZXNzYWdlSWQgPSBtZXNzYWdlV2l0aEFwcHJvdmFsLmlkXG4gICAgICBjb25zdCBsb2FkaW5nS2V5ID0gdGhyZWFkSWRzWzBdXG5cbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICBtZXNzYWdlVGV4dDogbWVzc2FnZVdpdGhBcHByb3ZhbC5tZXNzYWdlLFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgcGVuZGluZ0FjdGlvbnM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyxcbiAgICAgICAgdGhyZWFkSWRzLFxuICAgICAgfVxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IGhpdGxDb250ZXh0XG5cbiAgICAgIGNvbnN0IGluaXRpYWxBY3Rpdml0eSA9IHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxDb250ZXh0KVxuXG4gICAgICAvLyBVcGRhdGUgbWVzc2FnZSBzdGF0dXMgaW1tZWRpYXRlbHlcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IG1lc3NhZ2VJZCkge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICAgIHJldHVybiB7IC4uLm1lc3NhZ2UsIGFwcHJvdmFsU3RhdHVzOiBuZXdTdGF0dXMgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuXG4gICAgICAvLyBUcmlnZ2VyIHJlLXJlbmRlclxuICAgICAgY29uc3QgZXhpc3RpbmdNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT4gbS5pZCA9PT0gbWVzc2FnZUlkKVxuICAgICAgaWYgKGV4aXN0aW5nTWVzc2FnZSkge1xuICAgICAgICBjb25zdCBuZXdTdGF0dXMgPSBkZWNpc2lvbiA9PT0gJ2FwcHJvdmUnID8gJ2FwcHJvdmVkJyA6ICdyZWplY3RlZCdcbiAgICAgICAgYWRkTWVzc2FnZSh7IC4uLmV4aXN0aW5nTWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9KVxuICAgICAgfVxuXG4gICAgICAvLyBDYWxsIGNvbnRpbnVlLXRocmVhZCBlbmRwb2ludCB3aXRoIEFMTCB0aHJlYWRfaWRzIGluIGEgc2luZ2xlIHJlcXVlc3RcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcblxuICAgICAgLy8gQWRkIGxvYWRpbmdcbiAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgW2xvYWRpbmdLZXldOiBpbml0aWFsQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgIH0pKVxuICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkoaW5pdGlhbEFjdGl2aXR5KVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLmNvbnRpbnVlVGhyZWFkKHtcbiAgICAgICAgICB0aHJlYWRJZHMsIC8vIFNlbmQgYWxsIGFjdGlvbiB0aHJlYWRfaWRzIGF0IG9uY2VcbiAgICAgICAgICBzZXNzaW9uSWQ6IGFwcHJvdmFsLnNlc3Npb25faWQsXG4gICAgICAgICAgZGVjaXNpb246IGVkaXRlZEFjdGlvbnMgPyAnZWRpdCcgOiBkZWNpc2lvbixcbiAgICAgICAgICBlZGl0ZWRBY3Rpb25zLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIFNTRSBzdHJlYW1cbiAgICAgICAgYXdhaXQgcHJvY2Vzc1NTRVN0cmVhbShyZXNwb25zZSwgbG9hZGluZ0tleSwge1xuICAgICAgICAgIG9uVGhpbmtpbmc6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSA9IHtcbiAgICAgICAgICAgICAgcGhhc2U6ICd0aGlua2luZycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UoMCwgdCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSh0KSlcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZShjb250ZW50LCBudWxsLCAnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVBY3Rpdml0eSA9IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50LFxuICAgICAgICAgICAgICBjdXJyZW50VGhyZWFkSWQsXG4gICAgICAgICAgICAgIHsgdXNlUmVzdW1pbmdGYWxsYmFjazogdHJ1ZSB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShub2RlQWN0aXZpdHkpXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+ICh7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyZW50VGhyZWFkSWRdOiBub2RlQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Db21wbGV0ZTogKFxuICAgICAgICAgICAgZmluYWxDb250ZW50OiBzdHJpbmcsXG4gICAgICAgICAgICBzb3VyY2VzOiBhbnksXG4gICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZyxcbiAgICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nLFxuICAgICAgICAgICAgYXR0YWNobWVudHM/OiBhbnlbXSB8IG51bGwsXG4gICAgICAgICAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgICAgICAgIGFnZW50SWQ/OiBzdHJpbmcgfCBudWxsXG4gICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1GaW5pc2goZmluYWxDb250ZW50LCBzb3VyY2VzLCBtZW1vcnlTZXNzaW9uSWQsIGF0dGFjaG1lbnRzLCBzdWdnZXN0aW9ucywgYWdlbnRJZClcbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW2N1cnJlbnRUaHJlYWRJZF1cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkOiAoYXBwcm92YWxQYXlsb2FkOiBhbnksIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgLy8gTmV3IEhJVEwgaW50ZXJydXB0aW9uIGRldGVjdGVkIGFmdGVyIHJlc3VtZSAoY2hhaW5lZCBhY3Rpb25zKVxuICAgICAgICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkKGFwcHJvdmFsUGF5bG9hZCBhcyBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uRXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBoYW5kbGVTdHJlYW1FcnJvcixcbiAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZSxcbiAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICAgIGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQsXG4gICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICAgIHQsXG4gICAgXVxuICApXG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChpbml0aWFsQ2hhdElkKSB7XG4gICAgICBhd2FpdCBsb2FkTWVzc2FnZXMoKVxuICAgIH0gZWxzZSBpZiAodXNlckluaXRpYWxNZXNzYWdlKSB7XG4gICAgICBjb25zdCBoYXNJbml0aWFsTWVzc2FnZSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2U/LnRyaW0oKSlcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxBdHRhY2htZW50cyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGgpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRmFxID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRnVhID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsU2MgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkKVxuXG4gICAgICBpZiAoIWhhc0luaXRpYWxNZXNzYWdlICYmICFoYXNJbml0aWFsQXR0YWNobWVudHMgJiYgIWhhc0luaXRpYWxGYXEgJiYgIWhhc0luaXRpYWxGdWEgJiYgIWhhc0luaXRpYWxTYykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgYXNrTWFpYSh7XG4gICAgICAgIG1lc3NhZ2U6IHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICBoaXN0b3J5LFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3Q/LmlkIHx8IG51bGwsXG4gICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSEsXG4gICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCEsXG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4ocHJvamVjdD8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihwcm9qZWN0LmZlZUlkKSB9IDoge30pLFxuICAgICAgICAuLi4oY2xpZW50Py5pZFxuICAgICAgICAgID8geyBjbGllbnRJZDogY2xpZW50LmlkIH1cbiAgICAgICAgICA6IHByb2plY3Q/LmNsaWVudElkICE9IG51bGxcbiAgICAgICAgICAgID8geyBjbGllbnRJZDogTnVtYmVyKHByb2plY3QuY2xpZW50SWQpIH1cbiAgICAgICAgICAgIDogcHJvamVjdD8uY2xpZW50Py5pZFxuICAgICAgICAgICAgICA/IHsgY2xpZW50SWQ6IHByb2plY3QuY2xpZW50LmlkIH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0Py5uYW1lID8geyBwcm9qZWN0TmFtZTogcHJvamVjdC5uYW1lIH0gOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0Py5jbGllbnQ/Lm5hbWVcbiAgICAgICAgICA/IHsgY2xpZW50TmFtZTogcHJvamVjdC5jbGllbnQubmFtZSB9XG4gICAgICAgICAgOiBjbGllbnQ/Lm5hbWVcbiAgICAgICAgICAgID8geyBjbGllbnROYW1lOiBjbGllbnQubmFtZSB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHRhc2s/LmlkICE9IG51bGwgPyB7IHRhc2tJZDogTnVtYmVyKHRhc2suaWQpLCAuLi4odGFzay5uYW1lID8geyB0YXNrTmFtZTogdGFzay5uYW1lIH0gOiB7fSkgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmZhcUlkID8geyBmYXFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkOiB1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCA/IHsgZnVhSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLnNjSWQgPyB7IHNjSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICAuLi4oYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpXG4gICAgICAgICAgPyB7IGNvbnRleHRNZXNzYWdlOiBidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucykgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtcbiAgICBpbml0aWFsQ2hhdElkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICB0YXNrLFxuICAgIGF1dGhVc2VyLFxuICAgIGFnZW50LFxuICAgIGFza01haWEsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICBdKVxuXG4gIGNvbnN0IHJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5UmVmLmN1cnJlbnQoKVxuICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICB9LCBbXSlcblxuICBjb25zdCBzdG9wR2VuZXJhdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdG9wU3RyZWFtaW5nKClcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtzdG9wU3RyZWFtaW5nXSlcblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBjdXJyZW50UHJvamVjdCxcbiAgICBjdXJyZW50Q2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgY3VycmVudE1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgY2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICByZXNldENoYXQsXG4gICAgc3RvcEdlbmVyYXRpb24sXG5cbiAgICBpc0Rpc2FibGVkOiB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxFQUFFLElBQUlDLE1BQU0sUUFBUSxNQUFNO0FBQ25DLFNBQVNDLGVBQWUsUUFBUSxvQkFBb0I7QUFDcEQsU0FBU0MscUJBQXFCLFFBQVEsMEJBQTBCO0FBQ2hFLFNBQVNDLElBQUksUUFBUSxTQUFTO0FBRzlCLFNBQVNDLE9BQU8sUUFBaUIsd0JBQXdCO0FBQ3pELFNBQVNDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUMvRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxhQUFhO0FBQzlDLE9BQU9DLElBQUksTUFBTSxxQkFBcUI7QUFDdEMsU0FBU0MsUUFBUSxRQUFRLDREQUE0RDtB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