@projectcor/maia-components 2.11.65-16 → 2.11.65-18

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.
@@ -159,7 +159,7 @@ export var useChatMessages = function useChatMessages(_ref) {
159
159
  };
160
160
  }(), [fetchProjects, setClient, setChipsProject, setProject, setTask]);
161
161
  var loadMessages = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
162
- var _yield$maia$Chats$get, items, nextItem, agentDeleted, agentNoPermission, hasAgentAccess, hasAgentPermission, projectIdMessage, projectNameFromSession, projectDeleted, clientIdFromSession, clientNameFromSession, taskIdFromSession, taskNameFromSession, agentInList, contextProjectId, itemsToSet, tab, tabSegment, _t;
162
+ var _yield$maia$Chats$get, items, nextItem, agentDeleted, agentNoPermission, hasAgentAccess, hasAgentPermission, agentTypeFromSession, agentEntityFromSession, projectIdMessage, projectNameFromSession, projectDeleted, clientIdFromSession, clientNameFromSession, taskIdFromSession, taskNameFromSession, agentInList, contextProjectId, itemsToSet, tab, tabSegment, _t;
163
163
  return _regeneratorRuntime.wrap(function (_context2) {
164
164
  while (1) switch (_context2.prev = _context2.next) {
165
165
  case 0:
@@ -182,6 +182,8 @@ export var useChatMessages = function useChatMessages(_ref) {
182
182
  agentNoPermission = _yield$maia$Chats$get.agentNoPermission;
183
183
  hasAgentAccess = _yield$maia$Chats$get.hasAgentAccess;
184
184
  hasAgentPermission = _yield$maia$Chats$get.hasAgentPermission;
185
+ agentTypeFromSession = _yield$maia$Chats$get.agentType;
186
+ agentEntityFromSession = _yield$maia$Chats$get.agentEntity;
185
187
  projectIdMessage = _yield$maia$Chats$get.projectId;
186
188
  projectNameFromSession = _yield$maia$Chats$get.projectName;
187
189
  projectDeleted = _yield$maia$Chats$get.projectDeleted;
@@ -312,6 +314,22 @@ export var useChatMessages = function useChatMessages(_ref) {
312
314
  taskNameFromSession: taskNameFromSession
313
315
  });
314
316
  case 2:
317
+ // Metadata de la session (agent_type / agent_entity + contexto) para el cartel de
318
+ // "continuar en un chat nuevo" del footer cuando se abre una conversación de un clone legacy.
319
+ document.dispatchEvent(new CustomEvent('maia-chat-session-meta', {
320
+ detail: {
321
+ chatId: chatId,
322
+ agentType: agentTypeFromSession,
323
+ agentEntity: agentEntityFromSession,
324
+ projectId: projectIdMessage,
325
+ projectName: projectNameFromSession,
326
+ clientId: clientIdFromSession,
327
+ clientName: clientNameFromSession,
328
+ taskId: taskIdFromSession,
329
+ taskName: taskNameFromSession
330
+ }
331
+ }));
332
+
315
333
  // Si hay proyecto en la conversación, reescribir URLs de tareas con el tab del usuario (me)
316
334
  contextProjectId = projectIdMessage ? parseInt(String(projectIdMessage), 10) : null;
317
335
  itemsToSet = items;
@@ -548,4 +566,4 @@ export var useChatMessages = function useChatMessages(_ref) {
548
566
  handleScroll: handleScroll
549
567
  };
550
568
  };
551
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlUHJvamVjdHMiLCJidWlsZENvbnRleHRNZXNzYWdlIiwibWFpYSIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlVXNlciIsInVzZVRhYlRhc2tEZWZhdWx0IiwiVEFTS19VUkxfUkVHRVhfUEFUVEVSTiIsIm1hcENPUkxhbmciLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwicmV3cml0ZVRhc2tVcmxzSW5Db250ZW50IiwiY29udGVudCIsInRhYlNlZ21lbnQiLCJ0YXNrVXJsUmVnZXgiLCJSZWdFeHAiLCJyZXBsYWNlIiwidXJsIiwidXNlQ2hhdE1lc3NhZ2VzIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwib25FcnJvciIsImNoYXRJZCIsImN1cnJlbnRVc2VyIiwidXNlckluaXRpYWxNZXNzYWdlIiwiX3JlZiRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsInQiLCJpMThuIiwidXNlciIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibG9hZGluZ01lc3NhZ2VzIiwic2V0TG9hZGluZ01lc3NhZ2VzIiwiX3VzZVN0YXRlMyIsIl9vYmplY3RTcHJlYWQiLCJpZCIsImRhdGUiLCJEYXRlIiwibWVzc2FnZSIsImZ1YUlkIiwic2NJZCIsImF0dGFjaG1lbnRzIiwibWVudGlvbnMiLCJjb250ZXh0TWVzc2FnZSIsIl91c2VTdGF0ZTQiLCJtZXNzYWdlcyIsInNldE1lc3NhZ2VzIiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJzZXRDaGlwc1Byb2plY3QiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0VGFzayIsInByb2plY3QiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsInRhYlRhc2tEZWZhdWx0IiwicmVmZXRjaFRhYlRhc2tEZWZhdWx0IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImxhc3RFdmFsdWF0ZWRLZXkiLCJzZXRMYXN0RXZhbHVhdGVkS2V5IiwiaXNMb2FkaW5nUmVmIiwiaW5pdGlhbExvYWREb25lIiwicHJldmlvdXNDaGF0SWQiLCJzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9yZWYyIiwicHJvamVjdElkTWVzc2FnZSIsInByb2plY3ROYW1lRnJvbVNlc3Npb24iLCJjbGllbnRJZEZyb21TZXNzaW9uIiwiY2xpZW50TmFtZUZyb21TZXNzaW9uIiwidGFza0lkRnJvbVNlc3Npb24iLCJ0YXNrTmFtZUZyb21TZXNzaW9uIiwicHJvamVjdHMiLCJoYXNNdWx0aUFnZW50c0FjY2VzcyIsInByb2plY3RJZE51bSIsImZvdW5kUHJvamVjdCIsIl9mb3VuZFByb2plY3QkY2xpZW50Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJuYW1lIiwiTnVtYmVyIiwiYWJydXB0Iiwic2VudCIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJmaW5kIiwicCIsInByb2plY3ROYW1lIiwiY2xpZW50TmFtZSIsImNsaWVudCIsInByb2plY3RJZCIsIlN0cmluZyIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwibG9hZE1lc3NhZ2VzIiwiX2NhbGxlZTIiLCJfeWllbGQkbWFpYSRDaGF0cyRnZXQiLCJpdGVtcyIsIm5leHRJdGVtIiwiYWdlbnREZWxldGVkIiwiYWdlbnROb1Blcm1pc3Npb24iLCJoYXNBZ2VudEFjY2VzcyIsImhhc0FnZW50UGVybWlzc2lvbiIsInByb2plY3REZWxldGVkIiwiYWdlbnRJbkxpc3QiLCJjb250ZXh0UHJvamVjdElkIiwiaXRlbXNUb1NldCIsInRhYiIsIl90IiwiX2NvbnRleHQyIiwiY3VycmVudCIsIkNoYXRzIiwiZ2V0Q2hhdE1lc3NhZ2VzIiwib2Zmc2V0IiwiY2FuY2VsbGVkVGV4dCIsImxhbmciLCJsYW5ndWFnZSIsImNsaWVudElkIiwidGFza0lkIiwidGFza05hbWUiLCJjb25zb2xlIiwiaW5mbyIsInVzZXJQZXJtaXNzaW9uc1ZpZXciLCJ2aWV3IiwiYWdlbnRJbkFnZW50c0xpc3QiLCJhIiwiZW1vamkiLCJ0eXBlIiwiaXNfZGVsZXRlZCIsImRlbGV0ZWRfYXQiLCJkZWxldGVkQXQiLCJjb25uZWN0b3JzIiwiYWdlbnQiLCJpc19mcm9tX2NvbnZlcnNhdGlvbiIsInByb2plY3RfZGVsZXRlZCIsInVuZGVmaW5lZCIsImhhc19ub3RfYWNjZXNzIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsInBhcnNlSW50IiwiY29uY2F0IiwibWFwIiwiaXRlbSIsImZpbmlzaCIsImxvYWRNb3JlTWVzc2FnZXMiLCJfcmVmNSIsIl9jYWxsZWUzIiwiY29udGFpbmVyIiwib2xkU2Nyb2xsSGVpZ2h0Iiwib2xkU2Nyb2xsVG9wIiwiX3lpZWxkJG1haWEkQ2hhdHMkZ2V0MiIsIml0ZW1zVG9NZXJnZSIsIm5ld01lc3NhZ2VzIiwiX3QyIiwiX2NvbnRleHQzIiwic2Nyb2xsSGVpZ2h0Iiwic2Nyb2xsVG9wIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic2xpY2UiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjb250YWluZXJSZWYiLCJuZXdTY3JvbGxIZWlnaHQiLCJoZWlnaHREaWZmZXJlbmNlIiwiX3gyIiwiaGFuZGxlU2Nyb2xsIiwiY2xpZW50SGVpZ2h0Iiwic2Nyb2xsUGVyY2VudGFnZSIsImRpZFJld3JpdGVSZWYiLCJsZW5ndGgiLCJuZWVkc1Jld3JpdGUiLCJzb21lIiwibXNnIiwibWF0Y2hlcyIsIm1hdGNoIiwiZW5kc1dpdGgiLCJpbmNsdWRlcyIsInJld3JpdHRlbiIsImFkZE1lc3NhZ2UiLCJleGlzdGluZ01lc3NhZ2VJbmRleCIsImZpbmRJbmRleCIsInJlbW92ZU1lc3NhZ2UiLCJtZXNzYWdlSWQiLCJmaWx0ZXIiLCJoYXNNb3JlTWVzc2FnZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlQ2hhdE1lc3NhZ2VzL3VzZUNoYXRNZXNzYWdlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VQcm9qZWN0cyB9IGZyb20gJy4uL3VzZVByb2plY3RzJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgYnVpbGRDb250ZXh0TWVzc2FnZSB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IFVzZUNoYXRNZXNzYWdlc1Byb3BzIH0gZnJvbSAnLi91c2VDaGF0TWVzc2FnZXMuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlVGFiVGFza0RlZmF1bHQgfSBmcm9tICcuLi91c2VUYWJUYXNrRGVmYXVsdCdcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2UnXG5cbmNvbnN0IHJld3JpdGVUYXNrVXJsc0luQ29udGVudCA9IChjb250ZW50OiBzdHJpbmcsIHRhYlNlZ21lbnQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICByZXR1cm4gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgdXJsLnJlcGxhY2UoL1xcLyhkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSg/PSR8XFw/KS8sIHRhYlNlZ21lbnQpXG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IHVzZUNoYXRNZXNzYWdlcyA9ICh7XG4gIG9uRXJyb3IsXG4gIGNoYXRJZCxcbiAgY3VycmVudFVzZXIsXG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgYWdlbnRzID0gW10sXG59OiBVc2VDaGF0TWVzc2FnZXNQcm9wcykgPT4ge1xuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgW2xvYWRpbmdNZXNzYWdlcywgc2V0TG9hZGluZ01lc3NhZ2VzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbWVzc2FnZXMsIHNldE1lc3NhZ2VzXSA9IHVzZVN0YXRlPENoYXRNZXNzYWdlW10+KFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZVxuICAgICAgPyBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICd1c2VyLWluaXRpYWwtbWVzc2FnZScsXG4gICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgdXNlcjogY3VycmVudFVzZXIsXG4gICAgICAgICAgICBtZXNzYWdlOiBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlLCB7XG4gICAgICAgICAgICAgIGZ1YUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQsXG4gICAgICAgICAgICAgIHNjSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4oYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpXG4gICAgICAgICAgICAgID8geyBjb250ZXh0TWVzc2FnZTogYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpIH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgOiBbXVxuICApXG4gIGNvbnN0IHsgZmV0Y2hQcm9qZWN0cyB9ID0gdXNlUHJvamVjdHMoKVxuICBjb25zdCB7IHNlbGVjdEFnZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzaywgcHJvamVjdCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHsgZ2V0VGFiVGFza0RlZmF1bHQsIHRhYlRhc2tEZWZhdWx0LCByZWZldGNoVGFiVGFza0RlZmF1bHQgfSA9IHVzZVRhYlRhc2tEZWZhdWx0KClcbiAgY29uc3QgW2lzTG9hZGluZ01vcmVNZXNzYWdlcywgc2V0SXNMb2FkaW5nTW9yZU1lc3NhZ2VzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbGFzdEV2YWx1YXRlZEtleSwgc2V0TGFzdEV2YWx1YXRlZEtleV0gPSB1c2VTdGF0ZTxudW1iZXIgfCB1bmRlZmluZWQ+KDApXG4gIGNvbnN0IGlzTG9hZGluZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaW5pdGlhbExvYWREb25lID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBwcmV2aW91c0NoYXRJZCA9IHVzZVJlZihjaGF0SWQpXG5cbiAgY29uc3Qgc2V0Q29udmVyc2F0aW9uQ29udGV4dEZyb21NZXRhZGF0YSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7XG4gICAgICBwcm9qZWN0SWRNZXNzYWdlLFxuICAgICAgcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgIGNsaWVudElkRnJvbVNlc3Npb24sXG4gICAgICBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICB0YXNrSWRGcm9tU2Vzc2lvbixcbiAgICAgIHRhc2tOYW1lRnJvbVNlc3Npb24sXG4gICAgfToge1xuICAgICAgcHJvamVjdElkTWVzc2FnZTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgICAgcHJvamVjdE5hbWVGcm9tU2Vzc2lvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgICAgY2xpZW50SWRGcm9tU2Vzc2lvbjogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICAgICB0YXNrSWRGcm9tU2Vzc2lvbjogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgICAgdGFza05hbWVGcm9tU2Vzc2lvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgIH0pID0+IHtcbiAgICAgIC8vIFRhcmVhIGRlIGxhIGNvbnZlcnNhY2nDs246IHNlIGRlcml2YSBkZSBsYSBtZXRhZGF0YSBkZSBsYSBzZXNzaW9uIHBhcmEgbW9zdHJhciBlbCBjaGlwXG4gICAgICAvLyBkZSBsYSB0YXJlYSAoeSByZWVudmlhciBsYSBtZXRhZGF0YSBlbiBjYWRhIG1lbnNhamUpIHNpbiBpbXBvcnRhciBkZXNkZSBkw7NuZGUgc2UgYWJyYS5cbiAgICAgIGlmICh0YXNrSWRGcm9tU2Vzc2lvbiAhPSBudWxsICYmIHRhc2tOYW1lRnJvbVNlc3Npb24pIHtcbiAgICAgICAgc2V0VGFzayh7IGlkOiB0YXNrSWRGcm9tU2Vzc2lvbiwgbmFtZTogdGFza05hbWVGcm9tU2Vzc2lvbiB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0VGFzayhudWxsKVxuICAgICAgfVxuXG4gICAgICAvLyBDb252ZXJzYWNpw7NuIGNvbiBjbGllbnRfbWV0YWRhdGE6IHNldGVhciBjbGllbnRlIHkgbGltcGlhciBwcm95ZWN0b1xuICAgICAgaWYgKGNsaWVudElkRnJvbVNlc3Npb24gIT0gbnVsbCAmJiBjbGllbnROYW1lRnJvbVNlc3Npb24pIHtcbiAgICAgICAgc2V0Q2xpZW50KHsgaWQ6IE51bWJlcihjbGllbnRJZEZyb21TZXNzaW9uKSwgbmFtZTogY2xpZW50TmFtZUZyb21TZXNzaW9uIH0pXG4gICAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGZldGNoUHJvamVjdHMocHJvamVjdElkTWVzc2FnZSlcbiAgICAgIGNvbnN0IGhhc011bHRpQWdlbnRzQWNjZXNzID0gISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gICAgICBpZiAocHJvamVjdElkTWVzc2FnZSAmJiBoYXNNdWx0aUFnZW50c0FjY2Vzcykge1xuICAgICAgICBjb25zdCBwcm9qZWN0SWROdW0gPSBOdW1iZXIocHJvamVjdElkTWVzc2FnZSlcbiAgICAgICAgY29uc3QgZm91bmRQcm9qZWN0ID0gcHJvamVjdHM/LmZpbmQocCA9PiBOdW1iZXIocC5pZCkgPT09IHByb2plY3RJZE51bSlcblxuICAgICAgICBpZiAoZm91bmRQcm9qZWN0KSB7XG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZFByb2plY3QubmFtZSxcbiAgICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kUHJvamVjdC5jbGllbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhmb3VuZFByb2plY3QuaWQpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0UHJvamVjdChmb3VuZFByb2plY3QpXG4gICAgICAgIH0gZWxzZSBpZiAocHJvamVjdE5hbWVGcm9tU2Vzc2lvbikge1xuICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICAgIGNsaWVudE5hbWU6ICcnLFxuICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocHJvamVjdElkTWVzc2FnZSksXG4gICAgICAgICAgfSlcbiAgICAgICAgICBzZXRQcm9qZWN0KHsgaWQ6IHByb2plY3RJZE51bSwgbmFtZTogcHJvamVjdE5hbWVGcm9tU2Vzc2lvbiB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgfVxuXG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2ZldGNoUHJvamVjdHMsIHNldENsaWVudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRUYXNrXVxuICApXG5cbiAgY29uc3QgbG9hZE1lc3NhZ2VzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZXModHJ1ZSlcbiAgICAgIGluaXRpYWxMb2FkRG9uZS5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgaXRlbXMsXG4gICAgICAgIG5leHRJdGVtLFxuICAgICAgICBhZ2VudERlbGV0ZWQsXG4gICAgICAgIGFnZW50Tm9QZXJtaXNzaW9uLFxuICAgICAgICBoYXNBZ2VudEFjY2VzcyxcbiAgICAgICAgaGFzQWdlbnRQZXJtaXNzaW9uLFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RJZE1lc3NhZ2UsXG4gICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICBwcm9qZWN0RGVsZXRlZCxcbiAgICAgICAgY2xpZW50SWQ6IGNsaWVudElkRnJvbVNlc3Npb24sXG4gICAgICAgIGNsaWVudE5hbWU6IGNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgdGFza0lkOiB0YXNrSWRGcm9tU2Vzc2lvbixcbiAgICAgICAgdGFza05hbWU6IHRhc2tOYW1lRnJvbVNlc3Npb24sXG4gICAgICB9ID0gYXdhaXQgbWFpYS5DaGF0cy5nZXRDaGF0TWVzc2FnZXMoe1xuICAgICAgICBjaGF0SWQsXG4gICAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgICBvZmZzZXQ6IGxhc3RFdmFsdWF0ZWRLZXksXG4gICAgICAgIGNhbmNlbGxlZFRleHQ6IHQoJ2NoYXQuY2FuY2VsbGVkJyksXG4gICAgICAgIGxhbmc6IG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSksXG4gICAgICB9KVxuICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1lc3NhZ2VzXSBsb2FkTWVzc2FnZXMgcmVzdWx0OicsIHtcbiAgICAgICAgY2hhdElkLFxuICAgICAgICBhZ2VudE5vUGVybWlzc2lvbixcbiAgICAgICAgYWdlbnREZWxldGVkOiAhIWFnZW50RGVsZXRlZCxcbiAgICAgICAgaGFzQWdlbnRBY2Nlc3MsXG4gICAgICAgIGhhc0FnZW50UGVybWlzc2lvbixcbiAgICAgICAgdXNlclBlcm1pc3Npb25zVmlldzogdXNlclBlcm1pc3Npb25zPy52aWV3LFxuICAgICAgICBhZ2VudEluQWdlbnRzTGlzdDogYWdlbnROb1Blcm1pc3Npb24gPyAhIWFnZW50cy5maW5kKGEgPT4gYS5pZCA9PT0gYWdlbnROb1Blcm1pc3Npb24uaWQpIDogbnVsbCxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChhZ2VudERlbGV0ZWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgIGlkOiBhZ2VudERlbGV0ZWQuaWQsXG4gICAgICAgICAgbmFtZTogYWdlbnREZWxldGVkLm5hbWUsXG4gICAgICAgICAgZW1vamk6IGFnZW50RGVsZXRlZC5lbW9qaSxcbiAgICAgICAgICB0eXBlOiAnY3VzdG9tJyxcbiAgICAgICAgICBpc19kZWxldGVkOiB0cnVlLFxuICAgICAgICAgIGRlbGV0ZWRfYXQ6IGFnZW50RGVsZXRlZC5kZWxldGVkQXQsXG4gICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uPy5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGVsIGFnZW50ZSBubyBlc3TDoSBlbiBsYSBsaXN0YSBwZXJvIHRpZW5lIHBlcm1pc29zLCBhY2Nlc28geSBubyBlc3TDoSBlbGltaW5hZG8sIHNldGVhcmxvIG5vcm1hbG1lbnRlXG4gICAgICAvLyBFeGNsdWlyIGFnZW50ZXMgbm8tY3VzdG9tIHBhcmEgdXN1YXJpb3MgY29uIHJvbGVzIGRlc2hhYmlsaXRhZG9zXG4gICAgICBpZiAoXG4gICAgICAgIGFnZW50Tm9QZXJtaXNzaW9uICYmXG4gICAgICAgICFhZ2VudERlbGV0ZWQgJiZcbiAgICAgICAgdXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAgIGhhc0FnZW50QWNjZXNzICYmXG4gICAgICAgIGhhc0FnZW50UGVybWlzc2lvbiAmJlxuICAgICAgICAhYWdlbnRzLmZpbmQoYWdlbnQgPT4gYWdlbnQuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKVxuICAgICAgKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHtcbiAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICBlbW9qaTogYWdlbnROb1Blcm1pc3Npb24uZW1vamksXG4gICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnIHwgJ29yY2hlc3RyYXRvcicsXG4gICAgICAgICAgaXNfZnJvbV9jb252ZXJzYXRpb246IHRydWUsXG4gICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgLy8gU2kgZWwgYWdlbnRlIGVzdMOhIGVuIGxhIGxpc3RhIHkgdGllbmUgYWNjZXNvL3Blcm1pc29zLCBhY3R1YWxpemFyIHByb2plY3RfZGVsZXRlZCAobyBsaW1waWFybG8gYWwgY2FtYmlhciBkZSBjaGF0KVxuICAgICAgaWYgKFxuICAgICAgICBhZ2VudE5vUGVybWlzc2lvbiAmJlxuICAgICAgICAhYWdlbnREZWxldGVkICYmXG4gICAgICAgIGhhc0FnZW50QWNjZXNzICYmXG4gICAgICAgIGhhc0FnZW50UGVybWlzc2lvbiAmJlxuICAgICAgICBhZ2VudHMuZmluZChhID0+IGEuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGFnZW50SW5MaXN0ID0gYWdlbnRzLmZpbmQoYSA9PiBhLmlkID09PSBhZ2VudE5vUGVybWlzc2lvbi5pZClcbiAgICAgICAgaWYgKGFnZW50SW5MaXN0KSB7XG4gICAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgICAgLi4uYWdlbnRJbkxpc3QsXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHsgcHJvamVjdF9kZWxldGVkOiB1bmRlZmluZWQgfSksXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTaSBlbCBhZ2VudGUgbm8gdGllbmUgYWNjZXNvIG8gcGVybWlzb3Mgc2Vnw7puIGxhIHJlc3B1ZXN0YSBkZSBzZXNzaW9ucywgc2VsZWNjaW9uYXJsbyBjb24gZWwgZmxhZyBjb3JyZXNwb25kaWVudGVcbiAgICAgIC8vIExhIHZhbGlkYWNpw7NuIGFob3JhIHNlIGJhc2EgZW4gbGFzIHByb3BpZWRhZGVzIGhhc19hZ2VudF9hY2Nlc3MgeSBoYXNfYWdlbnRfcGVybWlzc2lvbiBkZSBsYSByZXNwdWVzdGFcbiAgICAgIGlmIChhZ2VudE5vUGVybWlzc2lvbiAmJiAhYWdlbnREZWxldGVkKSB7XG4gICAgICAgIGlmICghaGFzQWdlbnRBY2Nlc3MpIHtcbiAgICAgICAgICAvLyBDYXNvIDE6IE5vIHRpZW5lIGFjY2VzbyBhbCBhZ2VudGVcbiAgICAgICAgICBjb25zb2xlLmluZm8oJ1t1c2VDaGF0TWVzc2FnZXNdIEJSQU5DSDogaGFzX25vdF9hY2Nlc3Mg4oCUIGhhc0FnZW50QWNjZXNzOicsIGhhc0FnZW50QWNjZXNzKVxuICAgICAgICAgIHNlbGVjdEFnZW50KHtcbiAgICAgICAgICAgIGlkOiBhZ2VudE5vUGVybWlzc2lvbi5pZCxcbiAgICAgICAgICAgIG5hbWU6IGFnZW50Tm9QZXJtaXNzaW9uLm5hbWUsXG4gICAgICAgICAgICBlbW9qaTogYWdlbnROb1Blcm1pc3Npb24uZW1vamksXG4gICAgICAgICAgICB0eXBlOiBhZ2VudE5vUGVybWlzc2lvbi50eXBlIGFzICdwbScgfCAnY3VzdG9tJyB8ICdjbG9uZScgfCAnb3JjaGVzdHJhdG9yJyxcbiAgICAgICAgICAgIGhhc19ub3RfYWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihwcm9qZWN0RGVsZXRlZCA/IHsgcHJvamVjdF9kZWxldGVkOiB7IG5hbWU6IHByb2plY3REZWxldGVkLm5hbWUgfSB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc0FnZW50UGVybWlzc2lvbikge1xuICAgICAgICAgIC8vIENhc28gMjogTm8gdGllbmUgcGVybWlzb3MgcGFyYSB2aXN1YWxpemFyL2ludGVyYWN0dWFyIGNvbiBlbCBhZ2VudGVcbiAgICAgICAgICBjb25zb2xlLmluZm8oJ1t1c2VDaGF0TWVzc2FnZXNdIEJSQU5DSDogaGFzX25vdF9wZXJtaXNzaW9ucyDigJQgaGFzQWdlbnRQZXJtaXNzaW9uOicsIGhhc0FnZW50UGVybWlzc2lvbilcbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnIHwgJ29yY2hlc3RyYXRvcicsXG4gICAgICAgICAgICBoYXNfbm90X3Blcm1pc3Npb25zOiB0cnVlLFxuICAgICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihwcm9qZWN0RGVsZXRlZCA/IHsgcHJvamVjdF9kZWxldGVkOiB7IG5hbWU6IHByb2plY3REZWxldGVkLm5hbWUgfSB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSBpZiAocHJvamVjdERlbGV0ZWQpIHtcbiAgICAgICAgICAvLyBDYXNvIDM6IEVsIHByb3llY3RvIGRlIGxhIGNvbnZlcnNhY2nDs24gZnVlIGVsaW1pbmFkb1xuICAgICAgICAgIHNlbGVjdEFnZW50KHtcbiAgICAgICAgICAgIGlkOiBhZ2VudE5vUGVybWlzc2lvbi5pZCxcbiAgICAgICAgICAgIG5hbWU6IGFnZW50Tm9QZXJtaXNzaW9uLm5hbWUsXG4gICAgICAgICAgICBlbW9qaTogYWdlbnROb1Blcm1pc3Npb24uZW1vamksXG4gICAgICAgICAgICB0eXBlOiBhZ2VudE5vUGVybWlzc2lvbi50eXBlIGFzICdwbScgfCAnY3VzdG9tJyB8ICdjbG9uZScgfCAnb3JjaGVzdHJhdG9yJyxcbiAgICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgICAgICBwcm9qZWN0X2RlbGV0ZWQ6IHsgbmFtZTogcHJvamVjdERlbGV0ZWQubmFtZSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgc2V0Q29udmVyc2F0aW9uQ29udGV4dEZyb21NZXRhZGF0YSh7XG4gICAgICAgIHByb2plY3RJZE1lc3NhZ2UsXG4gICAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIGNsaWVudElkRnJvbVNlc3Npb24sXG4gICAgICAgIGNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgdGFza0lkRnJvbVNlc3Npb24sXG4gICAgICAgIHRhc2tOYW1lRnJvbVNlc3Npb24sXG4gICAgICB9KVxuXG4gICAgICAvLyBTaSBoYXkgcHJveWVjdG8gZW4gbGEgY29udmVyc2FjacOzbiwgcmVlc2NyaWJpciBVUkxzIGRlIHRhcmVhcyBjb24gZWwgdGFiIGRlbCB1c3VhcmlvIChtZSlcbiAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBwcm9qZWN0SWRNZXNzYWdlID8gcGFyc2VJbnQoU3RyaW5nKHByb2plY3RJZE1lc3NhZ2UpLCAxMCkgOiBudWxsXG4gICAgICBsZXQgaXRlbXNUb1NldCA9IGl0ZW1zXG4gICAgICBpZiAoY29udGV4dFByb2plY3RJZCkge1xuICAgICAgICBjb25zdCB0YWIgPSBhd2FpdCBnZXRUYWJUYXNrRGVmYXVsdCgxKVxuICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgIGl0ZW1zVG9TZXQgPSBpdGVtcy5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgbWVzc2FnZTogcmV3cml0ZVRhc2tVcmxzSW5Db250ZW50KGl0ZW0ubWVzc2FnZSB8fCAnJywgdGFiU2VnbWVudCksXG4gICAgICAgIH0pKVxuICAgICAgfVxuICAgICAgc2V0TWVzc2FnZXMoaXRlbXNUb1NldClcbiAgICAgIHNldExhc3RFdmFsdWF0ZWRLZXkoTnVtYmVyKG5leHRJdGVtKSlcbiAgICAgIGluaXRpYWxMb2FkRG9uZS5jdXJyZW50ID0gdHJ1ZVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvbkVycm9yPy4oKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZXMoZmFsc2UpXG4gICAgfVxuICB9LCBbY2hhdElkLCBjdXJyZW50VXNlciwgc2V0Q29udmVyc2F0aW9uQ29udGV4dEZyb21NZXRhZGF0YSwgb25FcnJvciwgZ2V0VGFiVGFza0RlZmF1bHRdKVxuXG4gIGNvbnN0IGxvYWRNb3JlTWVzc2FnZXMgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIGlmIChpc0xvYWRpbmdSZWYuY3VycmVudCB8fCAhbGFzdEV2YWx1YXRlZEtleSB8fCAhY29udGFpbmVyKSByZXR1cm5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlzTG9hZGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXModHJ1ZSlcblxuICAgICAgICBjb25zdCBvbGRTY3JvbGxIZWlnaHQgPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0XG4gICAgICAgIGNvbnN0IG9sZFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3BcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgbmV4dEl0ZW0sXG4gICAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0SWRNZXNzYWdlLFxuICAgICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudElkOiBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrSWQ6IHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tOYW1lOiB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgICAgICB9ID0gYXdhaXQgbWFpYS5DaGF0cy5nZXRDaGF0TWVzc2FnZXMoe1xuICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgICBjdXJyZW50VXNlcixcbiAgICAgICAgICBvZmZzZXQ6IGxhc3RFdmFsdWF0ZWRLZXksXG4gICAgICAgICAgbGFuZzogbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSxcbiAgICAgICAgfSlcblxuICAgICAgICBhd2FpdCBzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhKHtcbiAgICAgICAgICBwcm9qZWN0SWRNZXNzYWdlLFxuICAgICAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza0lkRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza05hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTaSBoYXkgcHJveWVjdG8gZW4gbGEgY29udmVyc2FjacOzbiwgcmVlc2NyaWJpciBVUkxzIGRlIHRhcmVhcyBlbiBsb3MgbWVuc2FqZXMgY2FyZ2Fkb3NcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3RJZE1lc3NhZ2UgPyBwYXJzZUludChTdHJpbmcocHJvamVjdElkTWVzc2FnZSksIDEwKSA6IG51bGxcbiAgICAgICAgbGV0IGl0ZW1zVG9NZXJnZSA9IGl0ZW1zXG4gICAgICAgIGlmIChjb250ZXh0UHJvamVjdElkKSB7XG4gICAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQoMSlcbiAgICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgICAgaXRlbXNUb01lcmdlID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICBtZXNzYWdlOiByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQoaXRlbS5tZXNzYWdlIHx8ICcnLCB0YWJTZWdtZW50KSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFsuLi5tZXNzYWdlcy5zbGljZSgwLCAxKSwgLi4uaXRlbXNUb01lcmdlLCAuLi5tZXNzYWdlcy5zbGljZSgxKV1cbiAgICAgICAgc2V0TWVzc2FnZXMobmV3TWVzc2FnZXMpXG4gICAgICAgIHNldExhc3RFdmFsdWF0ZWRLZXkoTnVtYmVyKG5leHRJdGVtKSlcblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBjb250YWluZXJcbiAgICAgICAgICAgIGlmIChjb250YWluZXJSZWYpIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3U2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyUmVmLnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICBjb25zdCBoZWlnaHREaWZmZXJlbmNlID0gbmV3U2Nyb2xsSGVpZ2h0IC0gb2xkU2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgIGNvbnRhaW5lclJlZi5zY3JvbGxUb3AgPSBvbGRTY3JvbGxUb3AgKyBoZWlnaHREaWZmZXJlbmNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG9uRXJyb3I/LigpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXMoZmFsc2UpXG4gICAgICAgIGlzTG9hZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjaGF0SWQsIGN1cnJlbnRVc2VyLCBsYXN0RXZhbHVhdGVkS2V5LCBvbkVycm9yLCBtZXNzYWdlcywgZ2V0VGFiVGFza0RlZmF1bHQsIHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGFdXG4gIClcblxuICBjb25zdCBoYW5kbGVTY3JvbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIGlmICghY29udGFpbmVyIHx8IGlzTG9hZGluZ1JlZi5jdXJyZW50IHx8ICFpbml0aWFsTG9hZERvbmUuY3VycmVudCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgICBjb25zdCBzY3JvbGxQZXJjZW50YWdlID0gc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0ID4gMCA/IChzY3JvbGxUb3AgLyAoc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0KSkgKiAxMDAgOiAwXG5cbiAgICAgIGlmIChzY3JvbGxQZXJjZW50YWdlIDwgMTApIHtcbiAgICAgICAgbG9hZE1vcmVNZXNzYWdlcyhjb250YWluZXIpXG4gICAgICB9XG4gICAgfSxcbiAgICBbbG9hZE1vcmVNZXNzYWdlc11cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoYXRJZCAhPT0gcHJldmlvdXNDaGF0SWQuY3VycmVudCkge1xuICAgICAgc2V0TWVzc2FnZXMoXG4gICAgICAgIHVzZXJJbml0aWFsTWVzc2FnZVxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICd1c2VyLWluaXRpYWwtbWVzc2FnZScsXG4gICAgICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlLCB7XG4gICAgICAgICAgICAgICAgICBmdWFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkLFxuICAgICAgICAgICAgICAgICAgc2NJZDogdXNlckluaXRpYWxNZXNzYWdlLnNjSWQsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgICAgICAgIC4uLihidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucylcbiAgICAgICAgICAgICAgICAgID8geyBjb250ZXh0TWVzc2FnZTogYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpIH1cbiAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogW11cbiAgICAgIClcbiAgICAgIHNldExhc3RFdmFsdWF0ZWRLZXkoMClcbiAgICAgIGlzTG9hZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGluaXRpYWxMb2FkRG9uZS5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHByZXZpb3VzQ2hhdElkLmN1cnJlbnQgPSBjaGF0SWRcblxuICAgICAgLy8gTGltcGlhciBlbCBlc3RhZG8gZGVsIHByb3llY3RvIHkgbGEgdGFyZWEgY3VhbmRvIGNhbWJpYSBkZSBjb252ZXJzYWNpw7NuXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldFRhc2sobnVsbClcblxuICAgICAgLy8gVm9sdmVyIGEgZWplY3V0YXIgbGEgcXVlcnkgbWUgcGFyYSB0ZW5lciB0YWJUYXNrRGVmYXVsdCBhY3R1YWxpemFkbyBlbiBsYSBudWV2YSBjb252ZXJzYWNpw7NuXG4gICAgICByZWZldGNoVGFiVGFza0RlZmF1bHQoKVxuXG4gICAgICBpZiAoIXVzZXJJbml0aWFsTWVzc2FnZSkge1xuICAgICAgICBsb2FkTWVzc2FnZXMoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGNoYXRJZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgY3VycmVudFVzZXIsXG4gICAgbG9hZE1lc3NhZ2VzLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIHNldFRhc2ssXG4gICAgcmVmZXRjaFRhYlRhc2tEZWZhdWx0LFxuICBdKVxuXG4gIC8vIEN1YW5kbyB0YWJUYXNrRGVmYXVsdCBwYXNhIGEgZXN0YXIgZGlzcG9uaWJsZSBkZXNwdcOpcyBkZSBjYXJnYXIsIHJlZXNjcmliaXIgVVJMcyBkZSB0YXJlYXMgZW4gbG9zIG1lbnNhamVzIHlhIGNhcmdhZG9zLlxuICAvLyBSZWYgcGFyYSBldml0YXIgYnVjbGU6IHNldE1lc3NhZ2VzKHJld3JpdHRlbikgY2FtYmlhIG1lc3NhZ2VzIHkgcmUtZWplY3V0YSBlbCBlZmVjdG87IHNvbG8gcmVlc2NyaWJpbW9zIHVuYSB2ZXogcG9yIGxvdGUuXG4gIGNvbnN0IGRpZFJld3JpdGVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF0YWJUYXNrRGVmYXVsdCB8fCAhcHJvamVjdD8uaWQgfHwgbWVzc2FnZXMubGVuZ3RoID09PSAwKSByZXR1cm5cbiAgICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgICBjb25zdCB0YWJTZWdtZW50ID0gYC8ke3RhYlRhc2tEZWZhdWx0fWBcbiAgICBjb25zdCBuZWVkc1Jld3JpdGUgPSBtZXNzYWdlcy5zb21lKG1zZyA9PiB7XG4gICAgICBjb25zdCBjb250ZW50ID0gbXNnLm1lc3NhZ2UgfHwgJydcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBjb250ZW50Lm1hdGNoKHRhc2tVcmxSZWdleClcbiAgICAgIGlmICghbWF0Y2hlcz8ubGVuZ3RoKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiBtYXRjaGVzLnNvbWUodXJsID0+ICF1cmwuZW5kc1dpdGgoYC8ke3RhYlRhc2tEZWZhdWx0fWApICYmICF1cmwuaW5jbHVkZXMoYC8ke3RhYlRhc2tEZWZhdWx0fT9gKSlcbiAgICB9KVxuICAgIGlmICghbmVlZHNSZXdyaXRlKSB7XG4gICAgICBkaWRSZXdyaXRlUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChkaWRSZXdyaXRlUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIGRpZFJld3JpdGVSZWYuY3VycmVudCA9IHRydWVcbiAgICBjb25zdCByZXdyaXR0ZW4gPSBtZXNzYWdlcy5tYXAobXNnID0+ICh7XG4gICAgICAuLi5tc2csXG4gICAgICBtZXNzYWdlOiByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQobXNnLm1lc3NhZ2UgfHwgJycsIHRhYlNlZ21lbnQpLFxuICAgIH0pKVxuICAgIHNldE1lc3NhZ2VzKHJld3JpdHRlbilcbiAgfSwgW3RhYlRhc2tEZWZhdWx0LCBwcm9qZWN0Py5pZCwgbWVzc2FnZXNdKVxuXG4gIGNvbnN0IGFkZE1lc3NhZ2UgPSB1c2VDYWxsYmFjaygobWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHtcbiAgICBzZXRNZXNzYWdlcyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nTWVzc2FnZUluZGV4ID0gcHJldi5maW5kSW5kZXgobXNnID0+IG1zZy5pZCA9PT0gbWVzc2FnZS5pZClcblxuICAgICAgaWYgKGV4aXN0aW5nTWVzc2FnZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3TWVzc2FnZXMgPSBbLi4ucHJldl1cbiAgICAgICAgbmV3TWVzc2FnZXNbZXhpc3RpbmdNZXNzYWdlSW5kZXhdID0gbWVzc2FnZVxuICAgICAgICByZXR1cm4gbmV3TWVzc2FnZXNcbiAgICAgIH1cbiAgICAgIHJldHVybiBbLi4ucHJldiwgbWVzc2FnZV1cbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCByZW1vdmVNZXNzYWdlID0gdXNlQ2FsbGJhY2soKG1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgc2V0TWVzc2FnZXMocHJldiA9PiBwcmV2LmZpbHRlcihtc2cgPT4gbXNnLmlkICE9PSBtZXNzYWdlSWQpKVxuICB9LCBbXSlcblxuICByZXR1cm4ge1xuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBtZXNzYWdlcyxcbiAgICBoYXNNb3JlTWVzc2FnZXM6ICEhbGFzdEV2YWx1YXRlZEtleSxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgbG9hZE1lc3NhZ2VzLFxuICAgIGxvYWRNb3JlTWVzc2FnZXMsXG4gICAgYWRkTWVzc2FnZSxcbiAgICByZW1vdmVNZXNzYWdlLFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLFFBQVEsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxXQUFXLFFBQVEsZ0JBQWdCO0FBRTVDLFNBQVNDLG1CQUFtQixRQUFRLDRCQUE0QjtBQUNoRSxPQUFPQyxJQUFJLE1BQU0scUJBQXFCO0FBRXRDLFNBQVNDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUMvRCxTQUFTQyxJQUFJLFFBQVEsU0FBUztBQUM5QixTQUFTQyxPQUFPLFFBQVEsd0JBQXdCO0FBQ2hELFNBQVNDLGlCQUFpQixRQUFRLHNCQUFzQjtBQUN4RCxTQUFTQyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFDakUsU0FBU0MsVUFBVSxRQUFRLGtCQUFrQjtBQUM3QyxTQUFTQyxrQ0FBa0MsUUFBUSxzQ0FBc0M7QUFFekYsSUFBTUMsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBSUMsT0FBZSxFQUFFQyxVQUFrQixFQUFhO0VBQ2hGLElBQU1DLFlBQVksR0FBRyxJQUFJQyxNQUFNLENBQUNQLHNCQUFzQixFQUFFLEdBQUcsQ0FBQztFQUM1RCxPQUFPSSxPQUFPLENBQUNJLE9BQU8sQ0FBQ0YsWUFBWSxFQUFFLFVBQUFHLEdBQUc7SUFBQSxPQUN0Q0EsR0FBRyxDQUFDRCxPQUFPLENBQUMseURBQXlE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
569
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlUHJvamVjdHMiLCJidWlsZENvbnRleHRNZXNzYWdlIiwibWFpYSIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlVXNlciIsInVzZVRhYlRhc2tEZWZhdWx0IiwiVEFTS19VUkxfUkVHRVhfUEFUVEVSTiIsIm1hcENPUkxhbmciLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwicmV3cml0ZVRhc2tVcmxzSW5Db250ZW50IiwiY29udGVudCIsInRhYlNlZ21lbnQiLCJ0YXNrVXJsUmVnZXgiLCJSZWdFeHAiLCJyZXBsYWNlIiwidXJsIiwidXNlQ2hhdE1lc3NhZ2VzIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwib25FcnJvciIsImNoYXRJZCIsImN1cnJlbnRVc2VyIiwidXNlckluaXRpYWxNZXNzYWdlIiwiX3JlZiRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsInQiLCJpMThuIiwidXNlciIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibG9hZGluZ01lc3NhZ2VzIiwic2V0TG9hZGluZ01lc3NhZ2VzIiwiX3VzZVN0YXRlMyIsIl9vYmplY3RTcHJlYWQiLCJpZCIsImRhdGUiLCJEYXRlIiwibWVzc2FnZSIsImZ1YUlkIiwic2NJZCIsImF0dGFjaG1lbnRzIiwibWVudGlvbnMiLCJjb250ZXh0TWVzc2FnZSIsIl91c2VTdGF0ZTQiLCJtZXNzYWdlcyIsInNldE1lc3NhZ2VzIiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJzZXRDaGlwc1Byb2plY3QiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0VGFzayIsInByb2plY3QiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsInRhYlRhc2tEZWZhdWx0IiwicmVmZXRjaFRhYlRhc2tEZWZhdWx0IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImxhc3RFdmFsdWF0ZWRLZXkiLCJzZXRMYXN0RXZhbHVhdGVkS2V5IiwiaXNMb2FkaW5nUmVmIiwiaW5pdGlhbExvYWREb25lIiwicHJldmlvdXNDaGF0SWQiLCJzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9yZWYyIiwicHJvamVjdElkTWVzc2FnZSIsInByb2plY3ROYW1lRnJvbVNlc3Npb24iLCJjbGllbnRJZEZyb21TZXNzaW9uIiwiY2xpZW50TmFtZUZyb21TZXNzaW9uIiwidGFza0lkRnJvbVNlc3Npb24iLCJ0YXNrTmFtZUZyb21TZXNzaW9uIiwicHJvamVjdHMiLCJoYXNNdWx0aUFnZW50c0FjY2VzcyIsInByb2plY3RJZE51bSIsImZvdW5kUHJvamVjdCIsIl9mb3VuZFByb2plY3QkY2xpZW50Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJuYW1lIiwiTnVtYmVyIiwiYWJydXB0Iiwic2VudCIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJmaW5kIiwicCIsInByb2plY3ROYW1lIiwiY2xpZW50TmFtZSIsImNsaWVudCIsInByb2plY3RJZCIsIlN0cmluZyIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwibG9hZE1lc3NhZ2VzIiwiX2NhbGxlZTIiLCJfeWllbGQkbWFpYSRDaGF0cyRnZXQiLCJpdGVtcyIsIm5leHRJdGVtIiwiYWdlbnREZWxldGVkIiwiYWdlbnROb1Blcm1pc3Npb24iLCJoYXNBZ2VudEFjY2VzcyIsImhhc0FnZW50UGVybWlzc2lvbiIsImFnZW50VHlwZUZyb21TZXNzaW9uIiwiYWdlbnRFbnRpdHlGcm9tU2Vzc2lvbiIsInByb2plY3REZWxldGVkIiwiYWdlbnRJbkxpc3QiLCJjb250ZXh0UHJvamVjdElkIiwiaXRlbXNUb1NldCIsInRhYiIsIl90IiwiX2NvbnRleHQyIiwiY3VycmVudCIsIkNoYXRzIiwiZ2V0Q2hhdE1lc3NhZ2VzIiwib2Zmc2V0IiwiY2FuY2VsbGVkVGV4dCIsImxhbmciLCJsYW5ndWFnZSIsImFnZW50VHlwZSIsImFnZW50RW50aXR5IiwiY2xpZW50SWQiLCJ0YXNrSWQiLCJ0YXNrTmFtZSIsImNvbnNvbGUiLCJpbmZvIiwidXNlclBlcm1pc3Npb25zVmlldyIsInZpZXciLCJhZ2VudEluQWdlbnRzTGlzdCIsImEiLCJlbW9qaSIsInR5cGUiLCJpc19kZWxldGVkIiwiZGVsZXRlZF9hdCIsImRlbGV0ZWRBdCIsImNvbm5lY3RvcnMiLCJhZ2VudCIsImlzX2Zyb21fY29udmVyc2F0aW9uIiwicHJvamVjdF9kZWxldGVkIiwidW5kZWZpbmVkIiwiaGFzX25vdF9hY2Nlc3MiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJwYXJzZUludCIsImNvbmNhdCIsIm1hcCIsIml0ZW0iLCJmaW5pc2giLCJsb2FkTW9yZU1lc3NhZ2VzIiwiX3JlZjUiLCJfY2FsbGVlMyIsImNvbnRhaW5lciIsIm9sZFNjcm9sbEhlaWdodCIsIm9sZFNjcm9sbFRvcCIsIl95aWVsZCRtYWlhJENoYXRzJGdldDIiLCJpdGVtc1RvTWVyZ2UiLCJuZXdNZXNzYWdlcyIsIl90MiIsIl9jb250ZXh0MyIsInNjcm9sbEhlaWdodCIsInNjcm9sbFRvcCIsIl90b0NvbnN1bWFibGVBcnJheSIsInNsaWNlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY29udGFpbmVyUmVmIiwibmV3U2Nyb2xsSGVpZ2h0IiwiaGVpZ2h0RGlmZmVyZW5jZSIsIl94MiIsImhhbmRsZVNjcm9sbCIsImNsaWVudEhlaWdodCIsInNjcm9sbFBlcmNlbnRhZ2UiLCJkaWRSZXdyaXRlUmVmIiwibGVuZ3RoIiwibmVlZHNSZXdyaXRlIiwic29tZSIsIm1zZyIsIm1hdGNoZXMiLCJtYXRjaCIsImVuZHNXaXRoIiwiaW5jbHVkZXMiLCJyZXdyaXR0ZW4iLCJhZGRNZXNzYWdlIiwiZXhpc3RpbmdNZXNzYWdlSW5kZXgiLCJmaW5kSW5kZXgiLCJyZW1vdmVNZXNzYWdlIiwibWVzc2FnZUlkIiwiZmlsdGVyIiwiaGFzTW9yZU1lc3NhZ2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNZXNzYWdlcy91c2VDaGF0TWVzc2FnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IENoYXRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBVc2VDaGF0TWVzc2FnZXNQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1lc3NhZ2VzLmludGVyZmFjZSdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQgeyBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlJ1xuXG5jb25zdCByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQgPSAoY29udGVudDogc3RyaW5nLCB0YWJTZWdtZW50OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZSh0YXNrVXJsUmVnZXgsIHVybCA9PlxuICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICApXG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWVzc2FnZXMgPSAoe1xuICBvbkVycm9yLFxuICBjaGF0SWQsXG4gIGN1cnJlbnRVc2VyLFxuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIGFnZW50cyA9IFtdLFxufTogVXNlQ2hhdE1lc3NhZ2VzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUKClcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG4gIGNvbnN0IFtsb2FkaW5nTWVzc2FnZXMsIHNldExvYWRpbmdNZXNzYWdlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW21lc3NhZ2VzLCBzZXRNZXNzYWdlc10gPSB1c2VTdGF0ZTxDaGF0TWVzc2FnZVtdPihcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2VcbiAgICAgID8gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAndXNlci1pbml0aWFsLW1lc3NhZ2UnLFxuICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICAgICAgbWVzc2FnZTogZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheSh1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSwge1xuICAgICAgICAgICAgICBmdWFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkLFxuICAgICAgICAgICAgICBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgICAgLi4uKGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKVxuICAgICAgICAgICAgICA/IHsgY29udGV4dE1lc3NhZ2U6IGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKSB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIDogW11cbiAgKVxuICBjb25zdCB7IGZldGNoUHJvamVjdHMgfSA9IHVzZVByb2plY3RzKClcbiAgY29uc3QgeyBzZWxlY3RBZ2VudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldFRhc2ssIHByb2plY3QgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7IGdldFRhYlRhc2tEZWZhdWx0LCB0YWJUYXNrRGVmYXVsdCwgcmVmZXRjaFRhYlRhc2tEZWZhdWx0IH0gPSB1c2VUYWJUYXNrRGVmYXVsdCgpXG4gIGNvbnN0IFtpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIHNldElzTG9hZGluZ01vcmVNZXNzYWdlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xhc3RFdmFsdWF0ZWRLZXksIHNldExhc3RFdmFsdWF0ZWRLZXldID0gdXNlU3RhdGU8bnVtYmVyIHwgdW5kZWZpbmVkPigwKVxuICBjb25zdCBpc0xvYWRpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGluaXRpYWxMb2FkRG9uZSA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgcHJldmlvdXNDaGF0SWQgPSB1c2VSZWYoY2hhdElkKVxuXG4gIGNvbnN0IHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoe1xuICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgdGFza0lkRnJvbVNlc3Npb24sXG4gICAgICB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgIH06IHtcbiAgICAgIHByb2plY3RJZE1lc3NhZ2U6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIGNsaWVudElkRnJvbVNlc3Npb246IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIGNsaWVudE5hbWVGcm9tU2Vzc2lvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgICAgdGFza0lkRnJvbVNlc3Npb246IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIHRhc2tOYW1lRnJvbVNlc3Npb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgICB9KSA9PiB7XG4gICAgICAvLyBUYXJlYSBkZSBsYSBjb252ZXJzYWNpw7NuOiBzZSBkZXJpdmEgZGUgbGEgbWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBwYXJhIG1vc3RyYXIgZWwgY2hpcFxuICAgICAgLy8gZGUgbGEgdGFyZWEgKHkgcmVlbnZpYXIgbGEgbWV0YWRhdGEgZW4gY2FkYSBtZW5zYWplKSBzaW4gaW1wb3J0YXIgZGVzZGUgZMOzbmRlIHNlIGFicmEuXG4gICAgICBpZiAodGFza0lkRnJvbVNlc3Npb24gIT0gbnVsbCAmJiB0YXNrTmFtZUZyb21TZXNzaW9uKSB7XG4gICAgICAgIHNldFRhc2soeyBpZDogdGFza0lkRnJvbVNlc3Npb24sIG5hbWU6IHRhc2tOYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIH1cblxuICAgICAgLy8gQ29udmVyc2FjacOzbiBjb24gY2xpZW50X21ldGFkYXRhOiBzZXRlYXIgY2xpZW50ZSB5IGxpbXBpYXIgcHJveWVjdG9cbiAgICAgIGlmIChjbGllbnRJZEZyb21TZXNzaW9uICE9IG51bGwgJiYgY2xpZW50TmFtZUZyb21TZXNzaW9uKSB7XG4gICAgICAgIHNldENsaWVudCh7IGlkOiBOdW1iZXIoY2xpZW50SWRGcm9tU2Vzc2lvbiksIG5hbWU6IGNsaWVudE5hbWVGcm9tU2Vzc2lvbiB9KVxuICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvamVjdHMgPSBhd2FpdCBmZXRjaFByb2plY3RzKHByb2plY3RJZE1lc3NhZ2UpXG4gICAgICBjb25zdCBoYXNNdWx0aUFnZW50c0FjY2VzcyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICAgICAgaWYgKHByb2plY3RJZE1lc3NhZ2UgJiYgaGFzTXVsdGlBZ2VudHNBY2Nlc3MpIHtcbiAgICAgICAgY29uc3QgcHJvamVjdElkTnVtID0gTnVtYmVyKHByb2plY3RJZE1lc3NhZ2UpXG4gICAgICAgIGNvbnN0IGZvdW5kUHJvamVjdCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSBwcm9qZWN0SWROdW0pXG5cbiAgICAgICAgaWYgKGZvdW5kUHJvamVjdCkge1xuICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICBwcm9qZWN0TmFtZTogZm91bmRQcm9qZWN0Lm5hbWUsXG4gICAgICAgICAgICBjbGllbnROYW1lOiBmb3VuZFByb2plY3QuY2xpZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcoZm91bmRQcm9qZWN0LmlkKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHNldFByb2plY3QoZm91bmRQcm9qZWN0KVxuICAgICAgICB9IGVsc2UgaWYgKHByb2plY3ROYW1lRnJvbVNlc3Npb24pIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgICBjbGllbnROYW1lOiAnJyxcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZE1lc3NhZ2UpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0UHJvamVjdCh7IGlkOiBwcm9qZWN0SWROdW0sIG5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgIH1cblxuICAgICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtmZXRjaFByb2plY3RzLCBzZXRDbGllbnQsIHNldENoaXBzUHJvamVjdCwgc2V0UHJvamVjdCwgc2V0VGFza11cbiAgKVxuXG4gIGNvbnN0IGxvYWRNZXNzYWdlcyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgc2V0TG9hZGluZ01lc3NhZ2VzKHRydWUpXG4gICAgICBpbml0aWFsTG9hZERvbmUuY3VycmVudCA9IGZhbHNlXG4gICAgICBjb25zdCB7XG4gICAgICAgIGl0ZW1zLFxuICAgICAgICBuZXh0SXRlbSxcbiAgICAgICAgYWdlbnREZWxldGVkLFxuICAgICAgICBhZ2VudE5vUGVybWlzc2lvbixcbiAgICAgICAgaGFzQWdlbnRBY2Nlc3MsXG4gICAgICAgIGhhc0FnZW50UGVybWlzc2lvbixcbiAgICAgICAgYWdlbnRUeXBlOiBhZ2VudFR5cGVGcm9tU2Vzc2lvbixcbiAgICAgICAgYWdlbnRFbnRpdHk6IGFnZW50RW50aXR5RnJvbVNlc3Npb24sXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIHByb2plY3REZWxldGVkLFxuICAgICAgICBjbGllbnRJZDogY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgY2xpZW50TmFtZTogY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICB0YXNrSWQ6IHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgICB0YXNrTmFtZTogdGFza05hbWVGcm9tU2Vzc2lvbixcbiAgICAgIH0gPSBhd2FpdCBtYWlhLkNoYXRzLmdldENoYXRNZXNzYWdlcyh7XG4gICAgICAgIGNoYXRJZCxcbiAgICAgICAgY3VycmVudFVzZXIsXG4gICAgICAgIG9mZnNldDogbGFzdEV2YWx1YXRlZEtleSxcbiAgICAgICAgY2FuY2VsbGVkVGV4dDogdCgnY2hhdC5jYW5jZWxsZWQnKSxcbiAgICAgICAgbGFuZzogbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSxcbiAgICAgIH0pXG4gICAgICBjb25zb2xlLmluZm8oJ1t1c2VDaGF0TWVzc2FnZXNdIGxvYWRNZXNzYWdlcyByZXN1bHQ6Jywge1xuICAgICAgICBjaGF0SWQsXG4gICAgICAgIGFnZW50Tm9QZXJtaXNzaW9uLFxuICAgICAgICBhZ2VudERlbGV0ZWQ6ICEhYWdlbnREZWxldGVkLFxuICAgICAgICBoYXNBZ2VudEFjY2VzcyxcbiAgICAgICAgaGFzQWdlbnRQZXJtaXNzaW9uLFxuICAgICAgICB1c2VyUGVybWlzc2lvbnNWaWV3OiB1c2VyUGVybWlzc2lvbnM/LnZpZXcsXG4gICAgICAgIGFnZW50SW5BZ2VudHNMaXN0OiBhZ2VudE5vUGVybWlzc2lvbiA/ICEhYWdlbnRzLmZpbmQoYSA9PiBhLmlkID09PSBhZ2VudE5vUGVybWlzc2lvbi5pZCkgOiBudWxsLFxuICAgICAgfSlcblxuICAgICAgaWYgKGFnZW50RGVsZXRlZCkge1xuICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgaWQ6IGFnZW50RGVsZXRlZC5pZCxcbiAgICAgICAgICBuYW1lOiBhZ2VudERlbGV0ZWQubmFtZSxcbiAgICAgICAgICBlbW9qaTogYWdlbnREZWxldGVkLmVtb2ppLFxuICAgICAgICAgIHR5cGU6ICdjdXN0b20nLFxuICAgICAgICAgIGlzX2RlbGV0ZWQ6IHRydWUsXG4gICAgICAgICAgZGVsZXRlZF9hdDogYWdlbnREZWxldGVkLmRlbGV0ZWRBdCxcbiAgICAgICAgICAuLi4oYWdlbnROb1Blcm1pc3Npb24/LmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgLy8gU2kgZWwgYWdlbnRlIG5vIGVzdMOhIGVuIGxhIGxpc3RhIHBlcm8gdGllbmUgcGVybWlzb3MsIGFjY2VzbyB5IG5vIGVzdMOhIGVsaW1pbmFkbywgc2V0ZWFybG8gbm9ybWFsbWVudGVcbiAgICAgIC8vIEV4Y2x1aXIgYWdlbnRlcyBuby1jdXN0b20gcGFyYSB1c3VhcmlvcyBjb24gcm9sZXMgZGVzaGFiaWxpdGFkb3NcbiAgICAgIGlmIChcbiAgICAgICAgYWdlbnROb1Blcm1pc3Npb24gJiZcbiAgICAgICAgIWFnZW50RGVsZXRlZCAmJlxuICAgICAgICB1c2VyUGVybWlzc2lvbnM/LnZpZXcgJiZcbiAgICAgICAgaGFzQWdlbnRBY2Nlc3MgJiZcbiAgICAgICAgaGFzQWdlbnRQZXJtaXNzaW9uICYmXG4gICAgICAgICFhZ2VudHMuZmluZChhZ2VudCA9PiBhZ2VudC5pZCA9PT0gYWdlbnROb1Blcm1pc3Npb24uaWQpXG4gICAgICApIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgIGlkOiBhZ2VudE5vUGVybWlzc2lvbi5pZCxcbiAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgIGVtb2ppOiBhZ2VudE5vUGVybWlzc2lvbi5lbW9qaSxcbiAgICAgICAgICB0eXBlOiBhZ2VudE5vUGVybWlzc2lvbi50eXBlIGFzICdwbScgfCAnY3VzdG9tJyB8ICdjbG9uZScgfCAnb3JjaGVzdHJhdG9yJyxcbiAgICAgICAgICBpc19mcm9tX2NvbnZlcnNhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAuLi4oYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyA/IHsgY29ubmVjdG9yczogYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyB9IDoge30pLFxuICAgICAgICAgIC4uLihwcm9qZWN0RGVsZXRlZCA/IHsgcHJvamVjdF9kZWxldGVkOiB7IG5hbWU6IHByb2plY3REZWxldGVkLm5hbWUgfSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAvLyBTaSBlbCBhZ2VudGUgZXN0w6EgZW4gbGEgbGlzdGEgeSB0aWVuZSBhY2Nlc28vcGVybWlzb3MsIGFjdHVhbGl6YXIgcHJvamVjdF9kZWxldGVkIChvIGxpbXBpYXJsbyBhbCBjYW1iaWFyIGRlIGNoYXQpXG4gICAgICBpZiAoXG4gICAgICAgIGFnZW50Tm9QZXJtaXNzaW9uICYmXG4gICAgICAgICFhZ2VudERlbGV0ZWQgJiZcbiAgICAgICAgaGFzQWdlbnRBY2Nlc3MgJiZcbiAgICAgICAgaGFzQWdlbnRQZXJtaXNzaW9uICYmXG4gICAgICAgIGFnZW50cy5maW5kKGEgPT4gYS5pZCA9PT0gYWdlbnROb1Blcm1pc3Npb24uaWQpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgYWdlbnRJbkxpc3QgPSBhZ2VudHMuZmluZChhID0+IGEuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKVxuICAgICAgICBpZiAoYWdlbnRJbkxpc3QpIHtcbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICAuLi5hZ2VudEluTGlzdCxcbiAgICAgICAgICAgIC4uLihwcm9qZWN0RGVsZXRlZCA/IHsgcHJvamVjdF9kZWxldGVkOiB7IG5hbWU6IHByb2plY3REZWxldGVkLm5hbWUgfSB9IDogeyBwcm9qZWN0X2RlbGV0ZWQ6IHVuZGVmaW5lZCB9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGVsIGFnZW50ZSBubyB0aWVuZSBhY2Nlc28gbyBwZXJtaXNvcyBzZWfDum4gbGEgcmVzcHVlc3RhIGRlIHNlc3Npb25zLCBzZWxlY2Npb25hcmxvIGNvbiBlbCBmbGFnIGNvcnJlc3BvbmRpZW50ZVxuICAgICAgLy8gTGEgdmFsaWRhY2nDs24gYWhvcmEgc2UgYmFzYSBlbiBsYXMgcHJvcGllZGFkZXMgaGFzX2FnZW50X2FjY2VzcyB5IGhhc19hZ2VudF9wZXJtaXNzaW9uIGRlIGxhIHJlc3B1ZXN0YVxuICAgICAgaWYgKGFnZW50Tm9QZXJtaXNzaW9uICYmICFhZ2VudERlbGV0ZWQpIHtcbiAgICAgICAgaWYgKCFoYXNBZ2VudEFjY2Vzcykge1xuICAgICAgICAgIC8vIENhc28gMTogTm8gdGllbmUgYWNjZXNvIGFsIGFnZW50ZVxuICAgICAgICAgIGNvbnNvbGUuaW5mbygnW3VzZUNoYXRNZXNzYWdlc10gQlJBTkNIOiBoYXNfbm90X2FjY2VzcyDigJQgaGFzQWdlbnRBY2Nlc3M6JywgaGFzQWdlbnRBY2Nlc3MpXG4gICAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgICAgaWQ6IGFnZW50Tm9QZXJtaXNzaW9uLmlkLFxuICAgICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICAgIGVtb2ppOiBhZ2VudE5vUGVybWlzc2lvbi5lbW9qaSxcbiAgICAgICAgICAgIHR5cGU6IGFnZW50Tm9QZXJtaXNzaW9uLnR5cGUgYXMgJ3BtJyB8ICdjdXN0b20nIHwgJ2Nsb25lJyB8ICdvcmNoZXN0cmF0b3InLFxuICAgICAgICAgICAgaGFzX25vdF9hY2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAuLi4oYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyA/IHsgY29ubmVjdG9yczogYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyB9IDoge30pLFxuICAgICAgICAgICAgLi4uKHByb2plY3REZWxldGVkID8geyBwcm9qZWN0X2RlbGV0ZWQ6IHsgbmFtZTogcHJvamVjdERlbGV0ZWQubmFtZSB9IH0gOiB7fSksXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIGlmICghaGFzQWdlbnRQZXJtaXNzaW9uKSB7XG4gICAgICAgICAgLy8gQ2FzbyAyOiBObyB0aWVuZSBwZXJtaXNvcyBwYXJhIHZpc3VhbGl6YXIvaW50ZXJhY3R1YXIgY29uIGVsIGFnZW50ZVxuICAgICAgICAgIGNvbnNvbGUuaW5mbygnW3VzZUNoYXRNZXNzYWdlc10gQlJBTkNIOiBoYXNfbm90X3Blcm1pc3Npb25zIOKAlCBoYXNBZ2VudFBlcm1pc3Npb246JywgaGFzQWdlbnRQZXJtaXNzaW9uKVxuICAgICAgICAgIHNlbGVjdEFnZW50KHtcbiAgICAgICAgICAgIGlkOiBhZ2VudE5vUGVybWlzc2lvbi5pZCxcbiAgICAgICAgICAgIG5hbWU6IGFnZW50Tm9QZXJtaXNzaW9uLm5hbWUsXG4gICAgICAgICAgICBlbW9qaTogYWdlbnROb1Blcm1pc3Npb24uZW1vamksXG4gICAgICAgICAgICB0eXBlOiBhZ2VudE5vUGVybWlzc2lvbi50eXBlIGFzICdwbScgfCAnY3VzdG9tJyB8ICdjbG9uZScgfCAnb3JjaGVzdHJhdG9yJyxcbiAgICAgICAgICAgIGhhc19ub3RfcGVybWlzc2lvbnM6IHRydWUsXG4gICAgICAgICAgICAuLi4oYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyA/IHsgY29ubmVjdG9yczogYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyB9IDoge30pLFxuICAgICAgICAgICAgLi4uKHByb2plY3REZWxldGVkID8geyBwcm9qZWN0X2RlbGV0ZWQ6IHsgbmFtZTogcHJvamVjdERlbGV0ZWQubmFtZSB9IH0gOiB7fSksXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIGlmIChwcm9qZWN0RGVsZXRlZCkge1xuICAgICAgICAgIC8vIENhc28gMzogRWwgcHJveWVjdG8gZGUgbGEgY29udmVyc2FjacOzbiBmdWUgZWxpbWluYWRvXG4gICAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgICAgaWQ6IGFnZW50Tm9QZXJtaXNzaW9uLmlkLFxuICAgICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICAgIGVtb2ppOiBhZ2VudE5vUGVybWlzc2lvbi5lbW9qaSxcbiAgICAgICAgICAgIHR5cGU6IGFnZW50Tm9QZXJtaXNzaW9uLnR5cGUgYXMgJ3BtJyB8ICdjdXN0b20nIHwgJ2Nsb25lJyB8ICdvcmNoZXN0cmF0b3InLFxuICAgICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAgIHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhKHtcbiAgICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICB0YXNrSWRGcm9tU2Vzc2lvbixcbiAgICAgICAgdGFza05hbWVGcm9tU2Vzc2lvbixcbiAgICAgIH0pXG5cbiAgICAgIC8vIE1ldGFkYXRhIGRlIGxhIHNlc3Npb24gKGFnZW50X3R5cGUgLyBhZ2VudF9lbnRpdHkgKyBjb250ZXh0bykgcGFyYSBlbCBjYXJ0ZWwgZGVcbiAgICAgIC8vIFwiY29udGludWFyIGVuIHVuIGNoYXQgbnVldm9cIiBkZWwgZm9vdGVyIGN1YW5kbyBzZSBhYnJlIHVuYSBjb252ZXJzYWNpw7NuIGRlIHVuIGNsb25lIGxlZ2FjeS5cbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1jaGF0LXNlc3Npb24tbWV0YScsIHtcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgICAgIGFnZW50VHlwZTogYWdlbnRUeXBlRnJvbVNlc3Npb24sXG4gICAgICAgICAgICBhZ2VudEVudGl0eTogYWdlbnRFbnRpdHlGcm9tU2Vzc2lvbixcbiAgICAgICAgICAgIHByb2plY3RJZDogcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgICAgY2xpZW50SWQ6IGNsaWVudElkRnJvbVNlc3Npb24sXG4gICAgICAgICAgICBjbGllbnROYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgICB0YXNrSWQ6IHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgICAgICAgdGFza05hbWU6IHRhc2tOYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIClcblxuICAgICAgLy8gU2kgaGF5IHByb3llY3RvIGVuIGxhIGNvbnZlcnNhY2nDs24sIHJlZXNjcmliaXIgVVJMcyBkZSB0YXJlYXMgY29uIGVsIHRhYiBkZWwgdXN1YXJpbyAobWUpXG4gICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gcHJvamVjdElkTWVzc2FnZSA/IHBhcnNlSW50KFN0cmluZyhwcm9qZWN0SWRNZXNzYWdlKSwgMTApIDogbnVsbFxuICAgICAgbGV0IGl0ZW1zVG9TZXQgPSBpdGVtc1xuICAgICAgaWYgKGNvbnRleHRQcm9qZWN0SWQpIHtcbiAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQoMSlcbiAgICAgICAgY29uc3QgdGFiU2VnbWVudCA9IHRhYiA/IGAvJHt0YWJ9YCA6ICcvZGV0YWlsJ1xuICAgICAgICBpdGVtc1RvU2V0ID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIG1lc3NhZ2U6IHJld3JpdGVUYXNrVXJsc0luQ29udGVudChpdGVtLm1lc3NhZ2UgfHwgJycsIHRhYlNlZ21lbnQpLFxuICAgICAgICB9KSlcbiAgICAgIH1cbiAgICAgIHNldE1lc3NhZ2VzKGl0ZW1zVG9TZXQpXG4gICAgICBzZXRMYXN0RXZhbHVhdGVkS2V5KE51bWJlcihuZXh0SXRlbSkpXG4gICAgICBpbml0aWFsTG9hZERvbmUuY3VycmVudCA9IHRydWVcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgb25FcnJvcj8uKClcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZ01lc3NhZ2VzKGZhbHNlKVxuICAgIH1cbiAgfSwgW2NoYXRJZCwgY3VycmVudFVzZXIsIHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEsIG9uRXJyb3IsIGdldFRhYlRhc2tEZWZhdWx0XSlcblxuICBjb25zdCBsb2FkTW9yZU1lc3NhZ2VzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoaXNMb2FkaW5nUmVmLmN1cnJlbnQgfHwgIWxhc3RFdmFsdWF0ZWRLZXkgfHwgIWNvbnRhaW5lcikgcmV0dXJuXG4gICAgICB0cnkge1xuICAgICAgICBpc0xvYWRpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNMb2FkaW5nTW9yZU1lc3NhZ2VzKHRydWUpXG5cbiAgICAgICAgY29uc3Qgb2xkU2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyLnNjcm9sbEhlaWdodFxuICAgICAgICBjb25zdCBvbGRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wXG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgIG5leHRJdGVtLFxuICAgICAgICAgIHByb2plY3RJZDogcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnROYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza0lkOiB0YXNrSWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrTmFtZTogdGFza05hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgfSA9IGF3YWl0IG1haWEuQ2hhdHMuZ2V0Q2hhdE1lc3NhZ2VzKHtcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgY3VycmVudFVzZXIsXG4gICAgICAgICAgb2Zmc2V0OiBsYXN0RXZhbHVhdGVkS2V5LFxuICAgICAgICAgIGxhbmc6IG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSksXG4gICAgICAgIH0pXG5cbiAgICAgICAgYXdhaXQgc2V0Q29udmVyc2F0aW9uQ29udGV4dEZyb21NZXRhZGF0YSh7XG4gICAgICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudElkRnJvbVNlc3Npb24sXG4gICAgICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tOYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gU2kgaGF5IHByb3llY3RvIGVuIGxhIGNvbnZlcnNhY2nDs24sIHJlZXNjcmliaXIgVVJMcyBkZSB0YXJlYXMgZW4gbG9zIG1lbnNhamVzIGNhcmdhZG9zXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBwcm9qZWN0SWRNZXNzYWdlID8gcGFyc2VJbnQoU3RyaW5nKHByb2plY3RJZE1lc3NhZ2UpLCAxMCkgOiBudWxsXG4gICAgICAgIGxldCBpdGVtc1RvTWVyZ2UgPSBpdGVtc1xuICAgICAgICBpZiAoY29udGV4dFByb2plY3RJZCkge1xuICAgICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KDEpXG4gICAgICAgICAgY29uc3QgdGFiU2VnbWVudCA9IHRhYiA/IGAvJHt0YWJ9YCA6ICcvZGV0YWlsJ1xuICAgICAgICAgIGl0ZW1zVG9NZXJnZSA9IGl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgbWVzc2FnZTogcmV3cml0ZVRhc2tVcmxzSW5Db250ZW50KGl0ZW0ubWVzc2FnZSB8fCAnJywgdGFiU2VnbWVudCksXG4gICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3TWVzc2FnZXMgPSBbLi4ubWVzc2FnZXMuc2xpY2UoMCwgMSksIC4uLml0ZW1zVG9NZXJnZSwgLi4ubWVzc2FnZXMuc2xpY2UoMSldXG4gICAgICAgIHNldE1lc3NhZ2VzKG5ld01lc3NhZ2VzKVxuICAgICAgICBzZXRMYXN0RXZhbHVhdGVkS2V5KE51bWJlcihuZXh0SXRlbSkpXG5cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyUmVmID0gY29udGFpbmVyXG4gICAgICAgICAgICBpZiAoY29udGFpbmVyUmVmKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld1Njcm9sbEhlaWdodCA9IGNvbnRhaW5lclJlZi5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0RGlmZmVyZW5jZSA9IG5ld1Njcm9sbEhlaWdodCAtIG9sZFNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICBjb250YWluZXJSZWYuc2Nyb2xsVG9wID0gb2xkU2Nyb2xsVG9wICsgaGVpZ2h0RGlmZmVyZW5jZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBvbkVycm9yPy4oKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0SXNMb2FkaW5nTW9yZU1lc3NhZ2VzKGZhbHNlKVxuICAgICAgICBpc0xvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbY2hhdElkLCBjdXJyZW50VXNlciwgbGFzdEV2YWx1YXRlZEtleSwgb25FcnJvciwgbWVzc2FnZXMsIGdldFRhYlRhc2tEZWZhdWx0LCBzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2Nyb2xsID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoIWNvbnRhaW5lciB8fCBpc0xvYWRpbmdSZWYuY3VycmVudCB8fCAhaW5pdGlhbExvYWREb25lLmN1cnJlbnQpIHJldHVyblxuXG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lclxuICAgICAgY29uc3Qgc2Nyb2xsUGVyY2VudGFnZSA9IHNjcm9sbEhlaWdodCAtIGNsaWVudEhlaWdodCA+IDAgPyAoc2Nyb2xsVG9wIC8gKHNjcm9sbEhlaWdodCAtIGNsaWVudEhlaWdodCkpICogMTAwIDogMFxuXG4gICAgICBpZiAoc2Nyb2xsUGVyY2VudGFnZSA8IDEwKSB7XG4gICAgICAgIGxvYWRNb3JlTWVzc2FnZXMoY29udGFpbmVyKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2xvYWRNb3JlTWVzc2FnZXNdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjaGF0SWQgIT09IHByZXZpb3VzQ2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIHNldE1lc3NhZ2VzKFxuICAgICAgICB1c2VySW5pdGlhbE1lc3NhZ2VcbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAndXNlci1pbml0aWFsLW1lc3NhZ2UnLFxuICAgICAgICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgdXNlcjogY3VycmVudFVzZXIsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheSh1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSwge1xuICAgICAgICAgICAgICAgICAgZnVhSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCxcbiAgICAgICAgICAgICAgICAgIHNjSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgICAgICAgICAuLi4oYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpXG4gICAgICAgICAgICAgICAgICA/IHsgY29udGV4dE1lc3NhZ2U6IGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKSB9XG4gICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IFtdXG4gICAgICApXG4gICAgICBzZXRMYXN0RXZhbHVhdGVkS2V5KDApXG4gICAgICBpc0xvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpbml0aWFsTG9hZERvbmUuY3VycmVudCA9IGZhbHNlXG4gICAgICBwcmV2aW91c0NoYXRJZC5jdXJyZW50ID0gY2hhdElkXG5cbiAgICAgIC8vIExpbXBpYXIgZWwgZXN0YWRvIGRlbCBwcm95ZWN0byB5IGxhIHRhcmVhIGN1YW5kbyBjYW1iaWEgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG5cbiAgICAgIC8vIFZvbHZlciBhIGVqZWN1dGFyIGxhIHF1ZXJ5IG1lIHBhcmEgdGVuZXIgdGFiVGFza0RlZmF1bHQgYWN0dWFsaXphZG8gZW4gbGEgbnVldmEgY29udmVyc2FjacOzblxuICAgICAgcmVmZXRjaFRhYlRhc2tEZWZhdWx0KClcblxuICAgICAgaWYgKCF1c2VySW5pdGlhbE1lc3NhZ2UpIHtcbiAgICAgICAgbG9hZE1lc3NhZ2VzKClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBjaGF0SWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIGN1cnJlbnRVc2VyLFxuICAgIGxvYWRNZXNzYWdlcyxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gICAgc2V0UHJvamVjdCxcbiAgICBzZXRUYXNrLFxuICAgIHJlZmV0Y2hUYWJUYXNrRGVmYXVsdCxcbiAgXSlcblxuICAvLyBDdWFuZG8gdGFiVGFza0RlZmF1bHQgcGFzYSBhIGVzdGFyIGRpc3BvbmlibGUgZGVzcHXDqXMgZGUgY2FyZ2FyLCByZWVzY3JpYmlyIFVSTHMgZGUgdGFyZWFzIGVuIGxvcyBtZW5zYWplcyB5YSBjYXJnYWRvcy5cbiAgLy8gUmVmIHBhcmEgZXZpdGFyIGJ1Y2xlOiBzZXRNZXNzYWdlcyhyZXdyaXR0ZW4pIGNhbWJpYSBtZXNzYWdlcyB5IHJlLWVqZWN1dGEgZWwgZWZlY3RvOyBzb2xvIHJlZXNjcmliaW1vcyB1bmEgdmV6IHBvciBsb3RlLlxuICBjb25zdCBkaWRSZXdyaXRlUmVmID0gdXNlUmVmKGZhbHNlKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdGFiVGFza0RlZmF1bHQgfHwgIXByb2plY3Q/LmlkIHx8IG1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgY29uc3QgdGFiU2VnbWVudCA9IGAvJHt0YWJUYXNrRGVmYXVsdH1gXG4gICAgY29uc3QgbmVlZHNSZXdyaXRlID0gbWVzc2FnZXMuc29tZShtc2cgPT4ge1xuICAgICAgY29uc3QgY29udGVudCA9IG1zZy5tZXNzYWdlIHx8ICcnXG4gICAgICBjb25zdCBtYXRjaGVzID0gY29udGVudC5tYXRjaCh0YXNrVXJsUmVnZXgpXG4gICAgICBpZiAoIW1hdGNoZXM/Lmxlbmd0aCkgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gbWF0Y2hlcy5zb21lKHVybCA9PiAhdXJsLmVuZHNXaXRoKGAvJHt0YWJUYXNrRGVmYXVsdH1gKSAmJiAhdXJsLmluY2x1ZGVzKGAvJHt0YWJUYXNrRGVmYXVsdH0/YCkpXG4gICAgfSlcbiAgICBpZiAoIW5lZWRzUmV3cml0ZSkge1xuICAgICAgZGlkUmV3cml0ZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZGlkUmV3cml0ZVJlZi5jdXJyZW50KSByZXR1cm5cbiAgICBkaWRSZXdyaXRlUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgY29uc3QgcmV3cml0dGVuID0gbWVzc2FnZXMubWFwKG1zZyA9PiAoe1xuICAgICAgLi4ubXNnLFxuICAgICAgbWVzc2FnZTogcmV3cml0ZVRhc2tVcmxzSW5Db250ZW50KG1zZy5tZXNzYWdlIHx8ICcnLCB0YWJTZWdtZW50KSxcbiAgICB9KSlcbiAgICBzZXRNZXNzYWdlcyhyZXdyaXR0ZW4pXG4gIH0sIFt0YWJUYXNrRGVmYXVsdCwgcHJvamVjdD8uaWQsIG1lc3NhZ2VzXSlcblxuICBjb25zdCBhZGRNZXNzYWdlID0gdXNlQ2FsbGJhY2soKG1lc3NhZ2U6IENoYXRNZXNzYWdlKSA9PiB7XG4gICAgc2V0TWVzc2FnZXMocHJldiA9PiB7XG4gICAgICBjb25zdCBleGlzdGluZ01lc3NhZ2VJbmRleCA9IHByZXYuZmluZEluZGV4KG1zZyA9PiBtc2cuaWQgPT09IG1lc3NhZ2UuaWQpXG5cbiAgICAgIGlmIChleGlzdGluZ01lc3NhZ2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld01lc3NhZ2VzID0gWy4uLnByZXZdXG4gICAgICAgIG5ld01lc3NhZ2VzW2V4aXN0aW5nTWVzc2FnZUluZGV4XSA9IG1lc3NhZ2VcbiAgICAgICAgcmV0dXJuIG5ld01lc3NhZ2VzXG4gICAgICB9XG4gICAgICByZXR1cm4gWy4uLnByZXYsIG1lc3NhZ2VdXG4gICAgfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgcmVtb3ZlTWVzc2FnZSA9IHVzZUNhbGxiYWNrKChtZXNzYWdlSWQ6IHN0cmluZykgPT4ge1xuICAgIHNldE1lc3NhZ2VzKHByZXYgPT4gcHJldi5maWx0ZXIobXNnID0+IG1zZy5pZCAhPT0gbWVzc2FnZUlkKSlcbiAgfSwgW10pXG5cbiAgcmV0dXJuIHtcbiAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgbWVzc2FnZXMsXG4gICAgaGFzTW9yZU1lc3NhZ2VzOiAhIWxhc3RFdmFsdWF0ZWRLZXksXG4gICAgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLFxuICAgIGxvYWRNZXNzYWdlcyxcbiAgICBsb2FkTW9yZU1lc3NhZ2VzLFxuICAgIGFkZE1lc3NhZ2UsXG4gICAgcmVtb3ZlTWVzc2FnZSxcbiAgICBoYW5kbGVTY3JvbGwsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0EsU0FBU0EsV0FBVyxFQUFFQyxRQUFRLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDaEUsU0FBU0MsV0FBVyxRQUFRLGdCQUFnQjtBQUU1QyxTQUFTQyxtQkFBbUIsUUFBUSw0QkFBNEI7QUFDaEUsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUV0QyxTQUFTQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDL0QsU0FBU0MsSUFBSSxRQUFRLFNBQVM7QUFDOUIsU0FBU0MsT0FBTyxRQUFRLHdCQUF3QjtBQUNoRCxTQUFTQyxpQkFBaUIsUUFBUSxzQkFBc0I7QUFDeEQsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBQ2pFLFNBQVNDLFVBQVUsUUFBUSxrQkFBa0I7QUFDN0MsU0FBU0Msa0NBQWtDLFFBQVEsc0NBQXNDO0FBRXpGLElBQU1DLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUlDLE9BQWUsRUFBRUMsVUFBa0IsRUFBYTtFQUNoRixJQUFNQyxZQUFZLEdBQUcsSUFBSUMsTUFBTSxDQUFDUCxzQkFBc0IsRUFBRSxHQUFHLENBQUM7RUFDNUQsT0FBT0ksT0FBTyxDQUFDSSxPQUFPLENBQUNGLFlBQVksRUFBRSxVQUFBRyxHQUFHO0lBQUEs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