@projectcor/maia-components 2.11.15-2 → 2.11.15-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.
- package/lib/components/atoms/ApprovalBox/ApprovalBox.js +90 -94
- package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +21 -41
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +28 -9
- package/lib/components/atoms/icons/MAIAIcon.js +2 -2
- package/lib/components/atoms/icons/MAIAIsologo.js +2 -2
- package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +5 -5
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +1 -9
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +18 -72
- package/lib/components/molecules/ChatAIHome/styles.js +30 -38
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +26 -24
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +3 -28
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +5 -10
- package/lib/components/molecules/ChatAIModal/constants.js +2 -6
- package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.js +5 -5
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +25 -14
- package/lib/components/molecules/Sidebar/Sidebar.js +222 -197
- package/lib/components/molecules/Sidebar/Sidebar.styles.js +1 -13
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +1 -10
- package/lib/hooks/useChatManager/useChatManager.js +56 -89
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +6 -10
- package/lib/lang/br/index.js +3 -66
- package/lib/lang/en/index.js +3 -66
- package/lib/lang/es/index.js +3 -66
- package/lib/lang/fr/index.js +8 -24
- package/lib/services/maia/Orchestrator/orchestrator.js +16 -22
- package/lib/types/agent.js +1 -1
- package/lib/types/global.d.js +1 -1
- package/package.json +1 -1
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +0 -62
- package/lib/components/molecules/ChatAIMarketplace/ChatAIMarketplace.js +0 -255
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +0 -114
|
@@ -317,8 +317,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
317
317
|
}, [addMessage]);
|
|
318
318
|
var handleStreamFinish = useCallback(/*#__PURE__*/function () {
|
|
319
319
|
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(content, sources, memorySessionId) {
|
|
320
|
-
var
|
|
321
|
-
var tempMessageId, taskUrlRegex, matches, contentToAdd, previousMessage, hasApprovalInPreviousMessage, TASK_CREATION_TOOLS, TASK_EDIT_TOOLS, wasTaskCreation, wasTaskEdit, taskIds, tab, tabSegment, lastProjectMessage, contextProjectIdRaw, contextProjectId, pathMatch, routeProjectId, _window$newProjectDas, customEvent;
|
|
320
|
+
var tempMessageId, taskUrlRegex, matches, contentToAdd, previousMessage, hasApprovalInPreviousMessage, taskIds, tab, tabSegment, lastProjectMessage, contextProjectIdRaw, contextProjectId, pathMatch, routeProjectId, _window$newProjectDas, customEvent;
|
|
322
321
|
return _regeneratorRuntime.wrap(function (_context2) {
|
|
323
322
|
while (1) switch (_context2.prev = _context2.next) {
|
|
324
323
|
case 0:
|
|
@@ -333,14 +332,6 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
333
332
|
return m.id !== tempMessageId;
|
|
334
333
|
}).at(-1);
|
|
335
334
|
hasApprovalInPreviousMessage = (previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.approval) != null;
|
|
336
|
-
TASK_CREATION_TOOLS = ['create_task', 'create_tasks_batch'];
|
|
337
|
-
TASK_EDIT_TOOLS = ['edit_task', 'edit_tasks_batch', 'task_assign', 'task_unassign', 'update_task_type', 'update_estimated_hours', 'assign_task_label'];
|
|
338
|
-
wasTaskCreation = hasApprovalInPreviousMessage && (previousMessage === null || previousMessage === void 0 || (_previousMessage$appr = previousMessage.approval) === null || _previousMessage$appr === void 0 || (_previousMessage$appr = _previousMessage$appr.pending_actions) === null || _previousMessage$appr === void 0 ? void 0 : _previousMessage$appr.some(function (action) {
|
|
339
|
-
return TASK_CREATION_TOOLS.includes(action.tool_name);
|
|
340
|
-
}));
|
|
341
|
-
wasTaskEdit = hasApprovalInPreviousMessage && (previousMessage === null || previousMessage === void 0 || (_previousMessage$appr2 = previousMessage.approval) === null || _previousMessage$appr2 === void 0 || (_previousMessage$appr2 = _previousMessage$appr2.pending_actions) === null || _previousMessage$appr2 === void 0 ? void 0 : _previousMessage$appr2.some(function (action) {
|
|
342
|
-
return TASK_EDIT_TOOLS.includes(action.tool_name);
|
|
343
|
-
}));
|
|
344
335
|
if (!(matches.length > 0 && hasApprovalInPreviousMessage)) {
|
|
345
336
|
_context2.next = 2;
|
|
346
337
|
break;
|
|
@@ -357,23 +348,18 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
357
348
|
return url.replace(/\/(detail|message|messages|files|history|hours)(?=$|\?)/, tabSegment);
|
|
358
349
|
});
|
|
359
350
|
|
|
360
|
-
// Solo añadir al dashboard cuando
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
if (
|
|
370
|
-
|
|
371
|
-
window.newProjectDashboard.addExistingTaskToDashboard(taskIds);
|
|
372
|
-
}
|
|
351
|
+
// Solo añadir al dashboard cuando la ruta actual coincide con el proyecto del chat
|
|
352
|
+
lastProjectMessage = messagesRef.current.filter(function (msg) {
|
|
353
|
+
return msg.projectId;
|
|
354
|
+
}).at(-1);
|
|
355
|
+
contextProjectIdRaw = (project === null || project === void 0 ? void 0 : project.id) || (lastProjectMessage === null || lastProjectMessage === void 0 ? void 0 : lastProjectMessage.projectId);
|
|
356
|
+
contextProjectId = contextProjectIdRaw ? parseInt(String(contextProjectIdRaw), 10) : null;
|
|
357
|
+
pathMatch = window.location.pathname.match(/^\/projects\/(\d+)\//);
|
|
358
|
+
routeProjectId = pathMatch ? parseInt(pathMatch[1], 10) : null;
|
|
359
|
+
if (contextProjectId && routeProjectId && contextProjectId === routeProjectId) {
|
|
360
|
+
if ((_window$newProjectDas = window.newProjectDashboard) !== null && _window$newProjectDas !== void 0 && _window$newProjectDas.addExistingTaskToDashboard) {
|
|
361
|
+
window.newProjectDashboard.addExistingTaskToDashboard(taskIds);
|
|
373
362
|
}
|
|
374
|
-
} else if (wasTaskEdit) {
|
|
375
|
-
// TODO: COR debe implementar window.newProjectDashboard.refreshTasksOnDashboard(taskIds)
|
|
376
|
-
// para refrescar tareas editadas en el dashboard sin duplicarlas
|
|
377
363
|
}
|
|
378
364
|
case 2:
|
|
379
365
|
addMessage({
|
|
@@ -517,7 +503,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
517
503
|
case 2:
|
|
518
504
|
projects = _context3.sent;
|
|
519
505
|
payloadFaqId = faqId !== null && faqId !== void 0 ? faqId : options.faqId;
|
|
520
|
-
payloadData = _objectSpread(_objectSpread(_objectSpread(_objectSpread(
|
|
506
|
+
payloadData = _objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
521
507
|
message: finalMessage,
|
|
522
508
|
history: history,
|
|
523
509
|
projectId: projectToRequest,
|
|
@@ -544,8 +530,6 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
544
530
|
attachments: attachments
|
|
545
531
|
} : {}), payloadFaqId ? {
|
|
546
532
|
faqId: payloadFaqId
|
|
547
|
-
} : {}), (agent === null || agent === void 0 ? void 0 : agent.entity) != null ? {
|
|
548
|
-
agentEntity: agent.entity
|
|
549
533
|
} : {});
|
|
550
534
|
askMaia(payloadData);
|
|
551
535
|
case 3:
|
|
@@ -570,7 +554,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
570
554
|
role: historyMessage.user.id === authUser.id.toString() ? ChatHistoryRole.USER : ChatHistoryRole.ASSISTANT
|
|
571
555
|
};
|
|
572
556
|
});
|
|
573
|
-
askMaia(
|
|
557
|
+
askMaia({
|
|
574
558
|
message: currentUserQuestion.current,
|
|
575
559
|
history: history,
|
|
576
560
|
projectId: option.id,
|
|
@@ -583,11 +567,9 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
583
567
|
agentId: (agent === null || agent === void 0 ? void 0 : agent.id) || '',
|
|
584
568
|
isWebSearchActive: isWebSearchActiveRef.current,
|
|
585
569
|
isDeepSearchActive: isDeepSearchActiveRef.current
|
|
586
|
-
}
|
|
587
|
-
agentEntity: agent.entity
|
|
588
|
-
} : {}));
|
|
570
|
+
});
|
|
589
571
|
}
|
|
590
|
-
}, [project, setProject, askMaia, authUser, isWebSearchActive
|
|
572
|
+
}, [project, setProject, askMaia, authUser, isWebSearchActive]);
|
|
591
573
|
var handleFeedback = useCallback(/*#__PURE__*/function () {
|
|
592
574
|
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(feedbackProp, chatMessageId) {
|
|
593
575
|
var response;
|
|
@@ -667,7 +649,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
667
649
|
|
|
668
650
|
// Add loading for this thread
|
|
669
651
|
setActiveLoadings(function (prev) {
|
|
670
|
-
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, threadId,
|
|
652
|
+
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, threadId, 'Procesando...'));
|
|
671
653
|
});
|
|
672
654
|
_context5.prev = 2;
|
|
673
655
|
_context5.next = 3;
|
|
@@ -701,10 +683,8 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
701
683
|
handleStreamUpdate(content, null, '');
|
|
702
684
|
},
|
|
703
685
|
onNode: function onNode(message, currentThreadId) {
|
|
704
|
-
// Mostrar nombre solo para create_task, el resto muestra genérico
|
|
705
|
-
var displayMsg = message.includes('create_task') ? message : t('chat.executingAction');
|
|
706
686
|
setActiveLoadings(function (prev) {
|
|
707
|
-
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, currentThreadId,
|
|
687
|
+
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, currentThreadId, message));
|
|
708
688
|
});
|
|
709
689
|
},
|
|
710
690
|
onComplete: function onComplete(finalContent, sources, memorySessionId, currentThreadId) {
|
|
@@ -749,7 +729,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
749
729
|
};
|
|
750
730
|
}(), [authUser, agent, addMessage, handleStreamError, handleStreamUpdate, handleStreamFinish]);
|
|
751
731
|
var initializeChat = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
|
|
752
|
-
var
|
|
732
|
+
var _project$client2, _project$client3, history;
|
|
753
733
|
return _regeneratorRuntime.wrap(function (_context6) {
|
|
754
734
|
while (1) switch (_context6.prev = _context6.next) {
|
|
755
735
|
case 0:
|
|
@@ -763,59 +743,46 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
763
743
|
_context6.next = 1;
|
|
764
744
|
return loadMessages();
|
|
765
745
|
case 1:
|
|
766
|
-
_context6.next =
|
|
746
|
+
_context6.next = 3;
|
|
767
747
|
break;
|
|
768
748
|
case 2:
|
|
769
|
-
if (
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
749
|
+
if (userInitialMessage) {
|
|
750
|
+
history = messagesRef.current.map(function (historyMessage) {
|
|
751
|
+
return {
|
|
752
|
+
content: historyMessage.message,
|
|
753
|
+
role: historyMessage.user.id === authUser.id.toString() ? ChatHistoryRole.USER : ChatHistoryRole.ASSISTANT
|
|
754
|
+
};
|
|
755
|
+
});
|
|
756
|
+
askMaia(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
757
|
+
message: userInitialMessage.message,
|
|
758
|
+
history: history,
|
|
759
|
+
projectId: (project === null || project === void 0 ? void 0 : project.id) || null,
|
|
760
|
+
lang: authUser.lang,
|
|
761
|
+
userId: authUser.id.toString(),
|
|
762
|
+
companyId: authUser.company_id.toString(),
|
|
763
|
+
chatId: currentChatId.current,
|
|
764
|
+
messageId: currentMessageId.current,
|
|
765
|
+
agentName: agent === null || agent === void 0 ? void 0 : agent.name,
|
|
766
|
+
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
767
|
+
isWebSearchActive: isWebSearchActiveRef.current,
|
|
768
|
+
isDeepSearchActive: isDeepSearchActiveRef.current
|
|
769
|
+
}, client !== null && client !== void 0 && client.id ? {
|
|
770
|
+
clientId: client.id
|
|
771
|
+
} : project !== null && project !== void 0 && (_project$client2 = project.client) !== null && _project$client2 !== void 0 && _project$client2.id ? {
|
|
772
|
+
clientId: project.client.id
|
|
773
|
+
} : {}), project !== null && project !== void 0 && project.name ? {
|
|
774
|
+
projectName: project.name
|
|
775
|
+
} : {}), project !== null && project !== void 0 && (_project$client3 = project.client) !== null && _project$client3 !== void 0 && _project$client3.name ? {
|
|
776
|
+
clientName: project.client.name
|
|
777
|
+
} : client !== null && client !== void 0 && client.name ? {
|
|
778
|
+
clientName: client.name
|
|
779
|
+
} : {}), userInitialMessage.attachments ? {
|
|
780
|
+
attachments: userInitialMessage.attachments
|
|
781
|
+
} : {}), userInitialMessage.faqId ? {
|
|
782
|
+
faqId: userInitialMessage.faqId
|
|
783
|
+
} : {}));
|
|
779
784
|
}
|
|
780
|
-
return _context6.abrupt("return");
|
|
781
785
|
case 3:
|
|
782
|
-
history = messagesRef.current.map(function (historyMessage) {
|
|
783
|
-
return {
|
|
784
|
-
content: historyMessage.message,
|
|
785
|
-
role: historyMessage.user.id === authUser.id.toString() ? ChatHistoryRole.USER : ChatHistoryRole.ASSISTANT
|
|
786
|
-
};
|
|
787
|
-
});
|
|
788
|
-
askMaia(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
789
|
-
message: userInitialMessage.message,
|
|
790
|
-
history: history,
|
|
791
|
-
projectId: (project === null || project === void 0 ? void 0 : project.id) || null,
|
|
792
|
-
lang: authUser.lang,
|
|
793
|
-
userId: authUser.id.toString(),
|
|
794
|
-
companyId: authUser.company_id.toString(),
|
|
795
|
-
chatId: currentChatId.current,
|
|
796
|
-
messageId: currentMessageId.current,
|
|
797
|
-
agentName: agent === null || agent === void 0 ? void 0 : agent.name,
|
|
798
|
-
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
799
|
-
isWebSearchActive: isWebSearchActiveRef.current,
|
|
800
|
-
isDeepSearchActive: isDeepSearchActiveRef.current
|
|
801
|
-
}, client !== null && client !== void 0 && client.id ? {
|
|
802
|
-
clientId: client.id
|
|
803
|
-
} : project !== null && project !== void 0 && (_project$client2 = project.client) !== null && _project$client2 !== void 0 && _project$client2.id ? {
|
|
804
|
-
clientId: project.client.id
|
|
805
|
-
} : {}), project !== null && project !== void 0 && project.name ? {
|
|
806
|
-
projectName: project.name
|
|
807
|
-
} : {}), project !== null && project !== void 0 && (_project$client3 = project.client) !== null && _project$client3 !== void 0 && _project$client3.name ? {
|
|
808
|
-
clientName: project.client.name
|
|
809
|
-
} : client !== null && client !== void 0 && client.name ? {
|
|
810
|
-
clientName: client.name
|
|
811
|
-
} : {}), userInitialMessage.attachments ? {
|
|
812
|
-
attachments: userInitialMessage.attachments
|
|
813
|
-
} : {}), userInitialMessage.faqId ? {
|
|
814
|
-
faqId: userInitialMessage.faqId
|
|
815
|
-
} : {}), (agent === null || agent === void 0 ? void 0 : agent.entity) != null ? {
|
|
816
|
-
agentEntity: agent.entity
|
|
817
|
-
} : {}));
|
|
818
|
-
case 4:
|
|
819
786
|
case "end":
|
|
820
787
|
return _context6.stop();
|
|
821
788
|
}
|
|
@@ -853,4 +820,4 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
853
820
|
isDisabled: waitingResponse || loadingMessages
|
|
854
821
|
};
|
|
855
822
|
};
|
|
856
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVByb2plY3RzIiwidXNlVGFiVGFza0RlZmF1bHQiLCJUQVNLX1VSTF9SRUdFWF9QQVRURVJOIiwibm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzIiwiYXR0YWNobWVudHNPck9wdGlvbnMiLCJfb3B0aW9ucyRhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsImF0dGFjaG1lbnRzIiwib3B0aW9ucyIsInVzZVN0YWJsZUNhbGxiYWNrcyIsImF1dGhVc2VyIiwiY3VycmVudFVzZXIiLCJpZCIsInRvU3RyaW5nIiwibmFtZSIsImZpcnN0TmFtZSIsImF2YXRhciIsInBpY3R1cmUiLCJjdXJyZW50IiwicGFyc2VTU0VMaW5lIiwibGluZSIsInRyaW0iLCJfbGluZSRzcGxpdCIsInNwbGl0IiwiX2xpbmUkc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJldmVudExpbmUiLCJkYXRhTGluZSIsImV2ZW50VHlwZSIsInJlcGxhY2UiLCJkYXRhU3RyIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsInBhcnNlRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzU1NFU3RyZWFtIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJ0aHJlYWRJZCIsImNhbGxiYWNrcyIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImlzU3RyZWFtQ29tcGxldGUiLCJoYW5kbGVMaW5lIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJpIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJfaGFuZGxlTGluZSIsInBhcnNlZCIsImV2ZW50RGF0YSIsImNvbnRlbnQiLCJvblRva2VuIiwibWVzc2FnZSIsIm9uTm9kZSIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsIm9uQ29tcGxldGUiLCJvbkVycm9yIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJyZWFkIiwic2VudCIsImFicnVwdCIsImRlY29kZSIsInN0cmVhbSIsInBvcCIsImxlbmd0aCIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsImFwcGx5IiwiYXJndW1lbnRzIiwidXNlQ2hhdE1hbmFnZXIiLCJfcmVmMiIsImluaXRpYWxDaGF0SWQiLCJjaGF0SWQiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJfcmVmMiRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsInQiLCJfdXNlR2xvYmFsQ29udGV4dCIsInByb2plY3QiLCJzZXRQcm9qZWN0IiwiY2xpZW50Iiwic2V0Q2xpZW50IiwiYWdlbnQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImNoaXBzUHJvamVjdCIsInNldENoaXBzUHJvamVjdCIsImV2ZW50IiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VTdGFibGVDYWxsYmFja3MiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImlzUHJvY2Vzc2luZ1JlZiIsImZpcnN0VGltZVJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVMb2FkaW5ncyIsInNldEFjdGl2ZUxvYWRpbmdzIiwiaXNXZWJTZWFyY2hBY3RpdmVSZWYiLCJpc0RlZXBTZWFyY2hBY3RpdmVSZWYiLCJfdXNlQ2hhdE1lc3NhZ2VzIiwibG9hZGluZ01lc3NhZ2VzIiwibWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJsb2FkTWVzc2FnZXMiLCJhZGRNZXNzYWdlIiwicmVtb3ZlTWVzc2FnZSIsImhhbmRsZVNjcm9sbCIsImN1c3RvbUV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJsYXN0TXNnV2l0aFByb2plY3QiLCJmaWx0ZXIiLCJtc2ciLCJwcm9qZWN0SWQiLCJhdCIsIl9yZWYzIiwicHJvamVjdE5hbWUiLCJ0aGVuIiwicHJvamVjdHMiLCJmb3VuZCIsImZpbmQiLCJwIiwiTnVtYmVyIiwiX2ZvdW5kJGNsaWVudCIsImNsaWVudE5hbWUiLCJTdHJpbmciLCJsYXN0TXNnV2l0aENsaWVudCIsImNsaWVudElkIiwiX3JlZjQiLCJtc2dDbGllbnRJZCIsIm1zZ0NsaWVudE5hbWUiLCJoYW5kbGVTdHJlYW1FcnJvciIsImVycm9yTWVzc2FnZSIsImNvbmNhdCIsImlzRXJyb3IiLCJkYXRlIiwiRGF0ZSIsInVzZXIiLCJyb2xlIiwiQVNTSVNUQU5UIiwiaGFuZGxlU3RyZWFtVXBkYXRlIiwidGVtcE1lc3NhZ2VJZCIsImhhbmRsZVN0cmVhbUZpbmlzaCIsIl9yZWY1IiwiX2NhbGxlZTIiLCJfcHJldmlvdXNNZXNzYWdlJGFwcHIiLCJfcHJldmlvdXNNZXNzYWdlJGFwcHIyIiwidGFza1VybFJlZ2V4IiwibWF0Y2hlcyIsImNvbnRlbnRUb0FkZCIsInByZXZpb3VzTWVzc2FnZSIsImhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UiLCJUQVNLX0NSRUFUSU9OX1RPT0xTIiwiVEFTS19FRElUX1RPT0xTIiwid2FzVGFza0NyZWF0aW9uIiwid2FzVGFza0VkaXQiLCJ0YXNrSWRzIiwidGFiIiwidGFiU2VnbWVudCIsImxhc3RQcm9qZWN0TWVzc2FnZSIsImNvbnRleHRQcm9qZWN0SWRSYXciLCJjb250ZXh0UHJvamVjdElkIiwicGF0aE1hdGNoIiwicm91dGVQcm9qZWN0SWQiLCJfd2luZG93JG5ld1Byb2plY3REYXMiLCJfY29udGV4dDIiLCJSZWdFeHAiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJtYXRjaEFsbCIsIm0iLCJhcHByb3ZhbCIsInBlbmRpbmdfYWN0aW9ucyIsInNvbWUiLCJhY3Rpb24iLCJpbmNsdWRlcyIsInRvb2xfbmFtZSIsIm1hcCIsIm1hdGNoIiwicGFyc2VJbnQiLCJ1cmwiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwibmV3UHJvamVjdERhc2hib2FyZCIsImFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkIiwiX3g0IiwiX3g1IiwiX3g2IiwiaGFuZGxlU3RyZWFtU3RvcCIsImlzRnJvbnRlbmRDYW5jZWxsZWQiLCJzZXRUaW1lb3V0IiwiaGFuZGxlQXBwcm92YWxSZXF1aXJlZCIsIm9yaWdpbmFsX3RocmVhZF9pZCIsImFwcHJvdmFsU3RhdHVzIiwiX3VzZU9yY2hlc3RyYXRvclN0cmVhIiwib25TdHJlYW1VcGRhdGUiLCJvbkZpbmlzaFN0cmVhbSIsIm9uU3RvcCIsIm9uQXBwcm92YWxSZXF1aXJlZCIsImFza01haWEiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc0xvYWRpbmciLCJpc1dyaXRpbmciLCJsb2FkaW5nTWVzc2FnZSIsInN0b3BTdHJlYW1pbmciLCJjdXJyZW50UHJvamVjdCIsInNlbmRNZXNzYWdlIiwiX3JlZjYiLCJfY2FsbGVlMyIsImZhcUlkIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQiLCJfcHJvamVjdCRjbGllbnQiLCJfbm9ybWFsaXplU2VuZE1lc3NhZ2UiLCJuZXdNZXNzYWdlSWQiLCJsYXN0TWVzc2FnZVdpdGhQcm9qZWN0IiwiY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIiwiZmluYWxNZXNzYWdlIiwiX29wdGlvbnMkcHJvamVjdENoYW5nIiwiaGlzdG9yeSIsImxhc3RNZXNzYWdlUHJvamVjdElkIiwicHJvamVjdFRvUmVxdWVzdCIsInBheWxvYWRGYXFJZCIsInBheWxvYWREYXRhIiwiX2NvbnRleHQzIiwicG1BaVR5cGVkVGV4dCIsImFnZW50SWQiLCJVU0VSIiwicHJvamVjdENoYW5nZWQiLCJpbmNvbWVUeXBlIiwiaGlzdG9yeU1lc3NhZ2UiLCJpc0Zpbml0ZSIsIl9vYmplY3RTcHJlYWQiLCJsYW5nIiwidXNlcklkIiwiY29tcGFueUlkIiwiY29tcGFueV9pZCIsIm1lc3NhZ2VJZCIsImFnZW50TmFtZSIsImVudGl0eSIsImFnZW50RW50aXR5IiwiX3g3IiwiX3g4IiwiX3g5IiwiY2hhbmdlUHJvamVjdCIsIm9wdGlvbiIsImhhbmRsZUZlZWRiYWNrIiwiX3JlZjciLCJfY2FsbGVlNCIsImZlZWRiYWNrUHJvcCIsImNoYXRNZXNzYWdlSWQiLCJfY29udGV4dDQiLCJDaGF0cyIsIndhc0hlbHBmdWxDaGF0IiwiVEhVTUJTX1VQIiwid2FzSGVscGZ1bCIsIl94MCIsIl94MSIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb24iLCJfcmVmOCIsIl9jYWxsZWU1IiwiZGVjaXNpb24iLCJlZGl0ZWRBY3Rpb25zIiwibWVzc2FnZVdpdGhBcHByb3ZhbCIsImV4aXN0aW5nTWVzc2FnZSIsIm5ld1N0YXR1cyIsIl90IiwiX2NvbnRleHQ1IiwiX20kYXBwcm92YWwiLCJ0aHJlYWRfaWQiLCJfZGVmaW5lUHJvcGVydHkiLCJPcmNoZXN0cmF0b3IiLCJjb250aW51ZVRocmVhZCIsInNlc3Npb25JZCIsInNlc3Npb25faWQiLCJvayIsIm5ld0xvYWRpbmdzIiwiY3VycmVudFRocmVhZElkIiwiZGlzcGxheU1zZyIsIl94MTAiLCJfeDExIiwiX3gxMiIsImluaXRpYWxpemVDaGF0IiwiX2NhbGxlZTYiLCJfdXNlckluaXRpYWxNZXNzYWdlJG0iLCJfdXNlckluaXRpYWxNZXNzYWdlJGEiLCJfcHJvamVjdCRjbGllbnQyIiwiX3Byb2plY3QkY2xpZW50MyIsImhhc0luaXRpYWxNZXNzYWdlIiwiaGFzSW5pdGlhbEF0dGFjaG1lbnRzIiwiaGFzSW5pdGlhbEZhcSIsIl9jb250ZXh0NiIsIkJvb2xlYW4iLCJyZXNldENoYXQiLCJzdG9wR2VuZXJhdGlvbiIsImlzRGlzYWJsZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlQ2hhdE1hbmFnZXIvdXNlQ2hhdE1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmFkaXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0ZWQtb3B0aW9uYWwtY2hhaW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnXG5pbXBvcnQgeyB1c2VDaGF0TWVzc2FnZXMgfSBmcm9tICcuLi91c2VDaGF0TWVzc2FnZXMnXG5pbXBvcnQgeyB1c2VPcmNoZXN0cmF0b3JTdHJlYW0gfSBmcm9tICcuLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0nXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgU2VuZE1lc3NhZ2VPcHRpb25zLCBVc2VDaGF0TWFuYWdlclByb3BzIH0gZnJvbSAnLi91c2VDaGF0TWFuYWdlci5pbnRlcmZhY2UnXG5pbXBvcnQgeyB1c2VVc2VyLCBDT1JVc2VyIH0gZnJvbSAnLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uL3VzZUV2ZW50J1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvTWVzc2FnZUZlZWRiYWNrL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0TWVzc2FnZVVzZXIsIENoYXRIaXN0b3J5Um9sZSwgQXBwcm92YWxSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyB1c2VQcm9qZWN0cyB9IGZyb20gJy4uL3VzZVByb2plY3RzJ1xuaW1wb3J0IHsgdXNlVGFiVGFza0RlZmF1bHQgfSBmcm9tICcuLi91c2VUYWJUYXNrRGVmYXVsdCdcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5cbnR5cGUgQXR0YWNobWVudHNPck9wdGlvbnMgPSBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zXG5cbmNvbnN0IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyA9IChhdHRhY2htZW50c09yT3B0aW9ucz86IEF0dGFjaG1lbnRzT3JPcHRpb25zKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGF0dGFjaG1lbnRzT3JPcHRpb25zKSkge1xuICAgIHJldHVybiB7IGF0dGFjaG1lbnRzOiBhdHRhY2htZW50c09yT3B0aW9ucywgb3B0aW9uczoge30gYXMgU2VuZE1lc3NhZ2VPcHRpb25zIH1cbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnM6IFNlbmRNZXNzYWdlT3B0aW9ucyA9IGF0dGFjaG1lbnRzT3JPcHRpb25zID8/IHt9XG4gIHJldHVybiB7IGF0dGFjaG1lbnRzOiBvcHRpb25zLmF0dGFjaG1lbnRzID8/IFtdLCBvcHRpb25zIH1cbn1cblxuY29uc3QgdXNlU3RhYmxlQ2FsbGJhY2tzID0gKGF1dGhVc2VyOiBDT1JVc2VyKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRVc2VyID0gdXNlUmVmPENoYXRNZXNzYWdlVXNlcj4oe1xuICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gIH0pXG5cbiAgaWYgKFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuaWQgIT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50Lm5hbWUgIT09IGF1dGhVc2VyLmZpcnN0TmFtZSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuYXZhdGFyICE9PSBhdXRoVXNlci5waWN0dXJlXG4gICkge1xuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQgPSB7XG4gICAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjdXJyZW50VXNlcjogY3VycmVudFVzZXIuY3VycmVudCxcbiAgfVxufVxuXG5jb25zdCBwYXJzZVNTRUxpbmUgPSAobGluZTogc3RyaW5nKTogeyBldmVudFR5cGU6IHN0cmluZzsgZGF0YTogdW5rbm93biB9IHwgbnVsbCA9PiB7XG4gIGlmICghbGluZS50cmltKCkpIHJldHVybiBudWxsXG5cbiAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcbiAgICByZXR1cm4geyBldmVudFR5cGUsIGRhdGEgfVxuICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBTU0UgZGF0YTonLCBwYXJzZUVycm9yLCBkYXRhU3RyKVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuY29uc3QgcHJvY2Vzc1NTRVN0cmVhbSA9IGFzeW5jIChcbiAgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICB0aHJlYWRJZDogc3RyaW5nLFxuICBjYWxsYmFja3M6IHtcbiAgICBvblRva2VuOiAoY29udGVudDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25Ob2RlOiAobWVzc2FnZTogc3RyaW5nLCB0aHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25Db21wbGV0ZTogKGZpbmFsQ29udGVudDogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uRXJyb3I6IChlcnJvcjogYW55LCB0aHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIH1cbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5Py5nZXRSZWFkZXIoKVxuICBpZiAoIXJlYWRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVhZGVyIGF2YWlsYWJsZScpXG4gIH1cblxuICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKClcbiAgbGV0IGJ1ZmZlciA9ICcnXG4gIGxldCBhY2N1bXVsYXRlZENvbnRlbnQgPSAnJ1xuICBsZXQgaXNTdHJlYW1Db21wbGV0ZSA9IGZhbHNlXG5cbiAgZnVuY3Rpb24gaGFuZGxlTGluZShsaW5lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVNTRUxpbmUobGluZSlcbiAgICBpZiAoIXBhcnNlZCkgcmV0dXJuXG5cbiAgICBjb25zdCB7IGV2ZW50VHlwZSwgZGF0YSB9ID0gcGFyc2VkXG4gICAgY29uc3QgZXZlbnREYXRhID0gZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gJ3Rva2VuJykge1xuICAgICAgY29uc3QgY29udGVudCA9IGV2ZW50RGF0YS5jb250ZW50IGFzIHN0cmluZ1xuICAgICAgYWNjdW11bGF0ZWRDb250ZW50ICs9IGNvbnRlbnRcbiAgICAgIGNhbGxiYWNrcy5vblRva2VuKGFjY3VtdWxhdGVkQ29udGVudClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ25vZGUnKSB7XG4gICAgICBpZiAoZXZlbnREYXRhLm1lc3NhZ2UgJiYgdHlwZW9mIGV2ZW50RGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICBjYWxsYmFja3Mub25Ob2RlKGV2ZW50RGF0YS5tZXNzYWdlLCB0aHJlYWRJZClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgY29uc3QgZmluYWxDb250ZW50ID0gKGV2ZW50RGF0YS5jb250ZW50IGFzIHN0cmluZykgfHwgYWNjdW11bGF0ZWRDb250ZW50XG4gICAgICBjb25zdCBzb3VyY2VzID0gKGV2ZW50RGF0YS5zb3VyY2VzIGFzIHVua25vd24pIHx8IG51bGxcbiAgICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChldmVudERhdGEubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgICAgY2FsbGJhY2tzLm9uQ29tcGxldGUoZmluYWxDb250ZW50LCBzb3VyY2VzLCBtZW1vcnlTZXNzaW9uSWQsIHRocmVhZElkKVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnZXJyb3InKSB7XG4gICAgICBjYWxsYmFja3Mub25FcnJvcihldmVudERhdGEuZXJyb3IsIHRocmVhZElkKVxuICAgIH1cbiAgfVxuXG4gIHdoaWxlICghaXNTdHJlYW1Db21wbGV0ZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgIGlmIChkb25lKSB7XG4gICAgICBpc1N0cmVhbUNvbXBsZXRlID0gdHJ1ZVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGhhbmRsZUxpbmUobGluZXNbaV0pXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWFuYWdlciA9ICh7XG4gIGNoYXRJZDogaW5pdGlhbENoYXRJZCxcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBvbkVycm9yLFxuICBhZ2VudHMgPSBbXSxcbn06IFVzZUNoYXRNYW5hZ2VyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3Qge1xuICAgIHByb2plY3QsXG4gICAgc2V0UHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIGFnZW50LFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGZldGNoUHJvamVjdHMgfSA9IHVzZVByb2plY3RzKClcbiAgY29uc3QgeyBjdXJyZW50VXNlciB9ID0gdXNlU3RhYmxlQ2FsbGJhY2tzKGF1dGhVc2VyKVxuICBjb25zdCB7IGdldFRhYlRhc2tEZWZhdWx0IH0gPSB1c2VUYWJUYXNrRGVmYXVsdCgpXG4gIGNvbnN0IGN1cnJlbnRNZXNzYWdlSWQgPSB1c2VSZWYodXVpZHY0KCkpXG4gIGNvbnN0IGN1cnJlbnRVc2VyUXVlc3Rpb24gPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY3VycmVudENoYXRJZCA9IHVzZVJlZihpbml0aWFsQ2hhdElkIHx8IHV1aWR2NCgpKVxuICBjb25zdCByZXBvcnRlZEV2ZW50ID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBtZXNzYWdlc1JlZiA9IHVzZVJlZjxDaGF0TWVzc2FnZVtdPihbXSlcbiAgY29uc3QgaXNQcm9jZXNzaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBmaXJzdFRpbWVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IFthY3RpdmVMb2FkaW5ncywgc2V0QWN0aXZlTG9hZGluZ3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe30pXG5cbiAgY29uc3QgaXNXZWJTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNXZWJTZWFyY2hBY3RpdmUpXG4gIGNvbnN0IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc0RlZXBTZWFyY2hBY3RpdmUpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNXZWJTZWFyY2hBY3RpdmVcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCA9IGlzRGVlcFNlYXJjaEFjdGl2ZVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZV0pXG5cbiAgY29uc3QgeyBsb2FkaW5nTWVzc2FnZXMsIG1lc3NhZ2VzLCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIGxvYWRNZXNzYWdlcywgYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgaGFuZGxlU2Nyb2xsIH0gPVxuICAgIHVzZUNoYXRNZXNzYWdlcyh7XG4gICAgICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQgfHwgY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgY3VycmVudFVzZXIsXG4gICAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgICBvbkVycm9yLFxuICAgICAgYWdlbnRzLFxuICAgIH0pXG5cbiAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnY2hhdC1sb2FkaW5nLW1lc3NhZ2VzLWNoYW5nZWQnLCB7XG4gICAgICBkZXRhaWw6IHsgbG9hZGluZ01lc3NhZ2VzIH0sXG4gICAgfSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICB9LCBbbG9hZGluZ01lc3NhZ2VzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbml0aWFsQ2hhdElkICYmIGluaXRpYWxDaGF0SWQgIT09IGN1cnJlbnRDaGF0SWQuY3VycmVudCkge1xuICAgICAgLy8gTGltcGlhciBjb250ZXh0byBnbG9iYWwgYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG5cbiAgICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IGluaXRpYWxDaGF0SWRcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuXG4gICAgICBsb2FkTWVzc2FnZXMoKVxuICAgIH1cbiAgfSwgW2luaXRpYWxDaGF0SWQsIHByb2plY3QsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0Q2hpcHNQcm9qZWN0LCBsb2FkTWVzc2FnZXNdKVxuXG4gIC8vIFNpbmNyb25pemFyIGNoaXBzUHJvamVjdCBjdWFuZG8gaGF5IG1lbnNhamVzIGNvbiBwcm9qZWN0SWQgcGVybyBjaGlwc1Byb2plY3Qgbm8gc2UgaGEgc2V0ZWFkb1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjaGlwc1Byb2plY3QgfHwgbG9hZGluZ01lc3NhZ2VzKSByZXR1cm5cbiAgICBjb25zdCBsYXN0TXNnV2l0aFByb2plY3QgPSBtZXNzYWdlcy5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuICAgIGNvbnN0IHsgcHJvamVjdElkLCBwcm9qZWN0TmFtZSB9ID0gbGFzdE1zZ1dpdGhQcm9qZWN0IHx8IHt9XG4gICAgaWYgKCFwcm9qZWN0SWQpIHJldHVyblxuXG4gICAgZmV0Y2hQcm9qZWN0cyhwcm9qZWN0SWQpLnRoZW4ocHJvamVjdHMgPT4ge1xuICAgICAgY29uc3QgZm91bmQgPSBwcm9qZWN0cz8uZmluZChwID0+IE51bWJlcihwLmlkKSA9PT0gTnVtYmVyKHByb2plY3RJZCkpXG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICBwcm9qZWN0TmFtZTogZm91bmQubmFtZSxcbiAgICAgICAgICBjbGllbnROYW1lOiBmb3VuZC5jbGllbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcoZm91bmQuaWQpLFxuICAgICAgICB9KVxuICAgICAgICBzZXRQcm9qZWN0KGZvdW5kKVxuICAgICAgfSBlbHNlIGlmIChwcm9qZWN0TmFtZSkge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3ROYW1lLFxuICAgICAgICAgIGNsaWVudE5hbWU6ICcnLFxuICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZCksXG4gICAgICAgIH0pXG4gICAgICAgIHNldFByb2plY3QoeyBpZDogTnVtYmVyKHByb2plY3RJZCksIG5hbWU6IHByb2plY3ROYW1lIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW21lc3NhZ2VzLCBjaGlwc1Byb2plY3QsIGxvYWRpbmdNZXNzYWdlcywgZmV0Y2hQcm9qZWN0cywgc2V0Q2hpcHNQcm9qZWN0LCBzZXRQcm9qZWN0XSlcblxuICAvLyBTaW5jcm9uaXphciBjbGllbnQgY3VhbmRvIGhheSBtZW5zYWplcyBjb24gY2xpZW50SWQgcGVybyBjbGllbnQgbm8gc2UgaGEgc2V0ZWFkb1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjbGllbnQgfHwgbG9hZGluZ01lc3NhZ2VzKSByZXR1cm5cbiAgICBjb25zdCBsYXN0TXNnV2l0aENsaWVudCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLmNsaWVudElkICE9IG51bGwgJiYgbXNnLmNsaWVudE5hbWUpLmF0KC0xKVxuICAgIGNvbnN0IHsgY2xpZW50SWQ6IG1zZ0NsaWVudElkLCBjbGllbnROYW1lOiBtc2dDbGllbnROYW1lIH0gPSBsYXN0TXNnV2l0aENsaWVudCB8fCB7fVxuICAgIGlmIChtc2dDbGllbnRJZCA9PSBudWxsIHx8ICFtc2dDbGllbnROYW1lKSByZXR1cm5cblxuICAgIHNldENsaWVudD8uKHsgaWQ6IE51bWJlcihtc2dDbGllbnRJZCksIG5hbWU6IG1zZ0NsaWVudE5hbWUgfSlcbiAgfSwgW21lc3NhZ2VzLCBjbGllbnQsIGxvYWRpbmdNZXNzYWdlcywgc2V0Q2xpZW50XSlcblxuICBjb25zdCBoYW5kbGVTdHJlYW1FcnJvciA9IHVzZUNhbGxiYWNrKFxuICAgIChlcnJvck1lc3NhZ2U/OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgICBlcnJvck1lc3NhZ2UgPT09IFwiQWNjZXNzIGRlbmllZDogWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhpcyBhZ2VudFwiXG4gICAgICAgICAgPyB0KCdjaGF0LmVycm9yQWNjZXNzRGVuaWVkJylcbiAgICAgICAgICA6IHQoJ2NoYXQuZXJyb3InKVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1VcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGVudDogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IHRlbXBNZXNzYWdlSWQsXG4gICAgICAgIG1lc3NhZ2U6IGNvbnRlbnQsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBzb3VyY2VzLFxuICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2VdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1GaW5pc2ggPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoY29udGVudDogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICAvLyBEZXRlY3RhciB0b2RhcyBsYXMgVVJMcyBkZSB0YXJlYXMgKC4uLi90YXNrcy8xMjMvZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycylcbiAgICAgIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICAgICAgY29uc3QgbWF0Y2hlcyA9IFsuLi5jb250ZW50Lm1hdGNoQWxsKHRhc2tVcmxSZWdleCldXG5cbiAgICAgIGxldCBjb250ZW50VG9BZGQgPSBjb250ZW50XG4gICAgICBjb25zdCBwcmV2aW91c01lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtID0+IG0uaWQgIT09IHRlbXBNZXNzYWdlSWQpLmF0KC0xKVxuICAgICAgY29uc3QgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSA9IHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWwgIT0gbnVsbFxuICAgICAgY29uc3QgVEFTS19DUkVBVElPTl9UT09MUyA9IFsnY3JlYXRlX3Rhc2snLCAnY3JlYXRlX3Rhc2tzX2JhdGNoJ11cbiAgICAgIGNvbnN0IFRBU0tfRURJVF9UT09MUyA9IFtcbiAgICAgICAgJ2VkaXRfdGFzaycsXG4gICAgICAgICdlZGl0X3Rhc2tzX2JhdGNoJyxcbiAgICAgICAgJ3Rhc2tfYXNzaWduJyxcbiAgICAgICAgJ3Rhc2tfdW5hc3NpZ24nLFxuICAgICAgICAndXBkYXRlX3Rhc2tfdHlwZScsXG4gICAgICAgICd1cGRhdGVfZXN0aW1hdGVkX2hvdXJzJyxcbiAgICAgICAgJ2Fzc2lnbl90YXNrX2xhYmVsJyxcbiAgICAgIF1cbiAgICAgIGNvbnN0IHdhc1Rhc2tDcmVhdGlvbiA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zPy5zb21lKChhY3Rpb246IGFueSkgPT5cbiAgICAgICAgICBUQVNLX0NSRUFUSU9OX1RPT0xTLmluY2x1ZGVzKGFjdGlvbi50b29sX25hbWUpXG4gICAgICAgIClcbiAgICAgIGNvbnN0IHdhc1Rhc2tFZGl0ID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnM/LnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0VESVRfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwICYmIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgdGFza0lkcyA9IG1hdGNoZXMubWFwKG1hdGNoID0+IHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpXG4gICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KHRhc2tJZHNbMF0pXG4gICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgY29udGVudFRvQWRkID0gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgICAgICAgdXJsLnJlcGxhY2UoL1xcLyhkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSg/PSR8XFw/KS8sIHRhYlNlZ21lbnQpXG4gICAgICAgIClcblxuICAgICAgICAvLyBTb2xvIGHDsWFkaXIgYWwgZGFzaGJvYXJkIGN1YW5kbyBmdWUgY3JlYWNpw7NuIGRlIHRhcmVhIHkgbGEgcnV0YSBhY3R1YWwgY29pbmNpZGUgY29uIGVsIHByb3llY3RvIGRlbCBjaGF0XG4gICAgICAgIGlmICh3YXNUYXNrQ3JlYXRpb24pIHtcbiAgICAgICAgICBjb25zdCBsYXN0UHJvamVjdE1lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZFJhdyA9IHByb2plY3Q/LmlkIHx8IGxhc3RQcm9qZWN0TWVzc2FnZT8ucHJvamVjdElkXG4gICAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IGNvbnRleHRQcm9qZWN0SWRSYXcgPyBwYXJzZUludChTdHJpbmcoY29udGV4dFByb2plY3RJZFJhdyksIDEwKSA6IG51bGxcbiAgICAgICAgICBjb25zdCBwYXRoTWF0Y2ggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUubWF0Y2goL15cXC9wcm9qZWN0c1xcLyhcXGQrKVxcLy8pXG4gICAgICAgICAgY29uc3Qgcm91dGVQcm9qZWN0SWQgPSBwYXRoTWF0Y2ggPyBwYXJzZUludChwYXRoTWF0Y2hbMV0sIDEwKSA6IG51bGxcbiAgICAgICAgICBpZiAoY29udGV4dFByb2plY3RJZCAmJiByb3V0ZVByb2plY3RJZCAmJiBjb250ZXh0UHJvamVjdElkID09PSByb3V0ZVByb2plY3RJZCkge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5hZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCkge1xuICAgICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZC5hZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCh0YXNrSWRzKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRWRpdCkge1xuICAgICAgICAgIC8vIFRPRE86IENPUiBkZWJlIGltcGxlbWVudGFyIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkLnJlZnJlc2hUYXNrc09uRGFzaGJvYXJkKHRhc2tJZHMpXG4gICAgICAgICAgLy8gcGFyYSByZWZyZXNjYXIgdGFyZWFzIGVkaXRhZGFzIGVuIGVsIGRhc2hib2FyZCBzaW4gZHVwbGljYXJsYXNcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHttZW1vcnlTZXNzaW9uSWR9YCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudFRvQWRkLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgfSlcblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaWYgKGZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgcHJvamVjdCwgZ2V0VGFiVGFza0RlZmF1bHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1TdG9wID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LWNhbmNlbGxlZGAsXG4gICAgICBtZXNzYWdlOiB0KCdjaGF0LmNhbmNlbGxlZCcpLFxuICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ6IHRydWUsXG4gICAgfSlcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJylcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgfSwgNTAwKVxuICB9LCBbYWRkTWVzc2FnZSwgdF0pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxSZXF1aXJlZCA9IHVzZUNhbGxiYWNrKFxuICAgIChhcHByb3ZhbDogQXBwcm92YWxSZXF1ZXN0LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcblxuICAgICAgLy8gQWRkIGEgbWVzc2FnZSB3aXRoIHRoZSBhcHByb3ZhbCByZXF1ZXN0XG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhcHByb3ZhbC0ke2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1gLFxuICAgICAgICBtZXNzYWdlOiBhY2N1bXVsYXRlZENvbnRlbnQgfHwgJycsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgYXBwcm92YWxTdGF0dXM6ICdwZW5kaW5nJyxcbiAgICAgIH0pXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IHtcbiAgICBhc2tNYWlhLFxuICAgIGlzTG9hZGluZzogd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICB9ID0gdXNlT3JjaGVzdHJhdG9yU3RyZWFtKHtcbiAgICBvbkVycm9yOiBoYW5kbGVTdHJlYW1FcnJvcixcbiAgICBvblN0cmVhbVVwZGF0ZTogaGFuZGxlU3RyZWFtVXBkYXRlLFxuICAgIG9uRmluaXNoU3RyZWFtOiBoYW5kbGVTdHJlYW1GaW5pc2gsXG4gICAgb25TdG9wOiBoYW5kbGVTdHJlYW1TdG9wLFxuICAgIG9uQXBwcm92YWxSZXF1aXJlZDogaGFuZGxlQXBwcm92YWxSZXF1aXJlZCxcbiAgfSlcblxuICBjb25zdCBjdXJyZW50UHJvamVjdCA9IHByb2plY3RcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChtZXNzYWdlOiBzdHJpbmcsIGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9ucywgZmFxSWQ/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCB8fCB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGF0dGFjaG1lbnRzLCBvcHRpb25zIH0gPSBub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MoYXR0YWNobWVudHNPck9wdGlvbnMpXG5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgY29uc3QgbmV3TWVzc2FnZUlkID0gdXVpZHY0KClcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IG5ld01lc3NhZ2VJZFxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbWVzc2FnZVxuXG4gICAgICBpZiAoIXJlcG9ydGVkRXZlbnQuY3VycmVudCkge1xuICAgICAgICBldmVudChFVkVOVFMucG1BaVR5cGVkVGV4dClcbiAgICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICAvLyBWZXJpZmljYXIgc2kgZWwgY29udGV4dG8gZ2xvYmFsIGVzdMOhIGRlc2FjdHVhbGl6YWRvXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0ID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuXG4gICAgICBjb25zdCBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgPSBtZXNzYWdlc1JlZi5jdXJyZW50Py5bbWVzc2FnZXNSZWYuY3VycmVudC5sZW5ndGggLSAxXT8uYWdlbnRJZFxuXG4gICAgICAvLyBObyBhZ3JlZ2FyIHByb2plY3RJZCBhbCBtZW5zYWplIGRlbCB1c3VhcmlvIC0gc2UgZGV0ZXJtaW5hcsOhIGRlc3B1w6lzXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBxdWVzdGlvbi0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH1gLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLlVTRVIsXG4gICAgICAgIHNvdXJjZXM6IGF0dGFjaG1lbnRzLFxuICAgICAgfSlcblxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICAgIGxldCBmaW5hbE1lc3NhZ2UgPSBtZXNzYWdlXG5cbiAgICAgIGlmIChtZXNzYWdlID09PSB0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKSkge1xuICAgICAgICBmaW5hbE1lc3NhZ2UgPSBgRkFROiAke3QoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpfSAtIFRpcG8gZGUgcmVudGFiaWxpZGFkOiAke1xuICAgICAgICAgIG9wdGlvbnMucHJvamVjdENoYW5nZWQ/LmluY29tZVR5cGUgfHwgcHJvamVjdD8uaW5jb21lVHlwZVxuICAgICAgICB9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICAvLyBWZXJpZmljYXIgY29uc2lzdGVuY2lhIGVudHJlIGNvbnRleHRvIGdsb2JhbCB5IMO6bHRpbW8gbWVuc2FqZVxuICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3Q/LmlkXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVByb2plY3RJZCA9IGxhc3RNZXNzYWdlV2l0aFByb2plY3Q/LnByb2plY3RJZFxuXG4gICAgICBsZXQgcHJvamVjdFRvUmVxdWVzdDogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICAgICAgLy8gU2kgaGF5IMO6bHRpbW8gbWVuc2FqZSBjb24gcHJvamVjdElkLCB1c2FybG8gKG3DoXMgY29uZmlhYmxlKVxuICAgICAgaWYgKGxhc3RNZXNzYWdlUHJvamVjdElkICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKGxhc3RNZXNzYWdlUHJvamVjdElkKVxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0ID0gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gICAgICB9XG4gICAgICAvLyBTaSBubyBoYXkgw7psdGltbyBtZW5zYWplLCB1c2FyIGVsIGNvbnRleHRvIGdsb2JhbFxuICAgICAgZWxzZSBpZiAoY29udGV4dFByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHByb2plY3RUb1JlcXVlc3QgPSBjb250ZXh0UHJvamVjdElkXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhbcHJvamVjdFRvUmVxdWVzdF0pXG5cbiAgICAgIGNvbnN0IHBheWxvYWRGYXFJZCA9IGZhcUlkID8/IG9wdGlvbnMuZmFxSWRcblxuICAgICAgY29uc3QgcGF5bG9hZERhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGZpbmFsTWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgIGFnZW50SWQ6IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyB8fCBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGNsaWVudD8uaWRcbiAgICAgICAgICA/IHsgY2xpZW50SWQ6IGNsaWVudC5pZCwgLi4uKGNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjbGllbnQubmFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHByb2plY3Q/LmNsaWVudD8uaWRcbiAgICAgICAgICAgID8geyBjbGllbnRJZDogcHJvamVjdC5jbGllbnQuaWQsIC4uLihwcm9qZWN0LmNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBwcm9qZWN0LmNsaWVudC5uYW1lIH0gOiB7fSkgfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0cz8ubGVuZ3RoID8geyBwcm9qZWN0TmFtZTogcHJvamVjdHNbMF0ubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGYXFJZCA/IHsgZmFxSWQ6IHBheWxvYWRGYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICB9XG5cbiAgICAgIGFza01haWEocGF5bG9hZERhdGEpXG4gICAgfSxcbiAgICBbXG4gICAgICBhZGRNZXNzYWdlLFxuICAgICAgZXZlbnQsXG4gICAgICBhc2tNYWlhLFxuICAgICAgcHJvamVjdCxcbiAgICAgIGNsaWVudCxcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICB0LFxuICAgICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgXVxuICApXG5cbiAgY29uc3QgY2hhbmdlUHJvamVjdCA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGlmICghY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSByZXR1cm5cblxuICAgICAgaWYgKG9wdGlvbi5pZCAhPT0gcHJvamVjdD8uaWQpIHtcbiAgICAgICAgc2V0UHJvamVjdChvcHRpb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9qZWN0ICYmIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuXG4gICAgICAgIGFza01haWEoe1xuICAgICAgICAgIG1lc3NhZ2U6IGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIHByb2plY3RJZDogb3B0aW9uLmlkLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Byb2plY3QsIHNldFByb2plY3QsIGFza01haWEsIGF1dGhVc2VyLCBpc1dlYlNlYXJjaEFjdGl2ZSwgYWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVGZWVkYmFjayA9IHVzZUNhbGxiYWNrKGFzeW5jIChmZWVkYmFja1Byb3A6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuQ2hhdHMud2FzSGVscGZ1bENoYXQoY2hhdE1lc3NhZ2VJZCwgZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVApXG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBjaGF0TWVzc2FnZUlkICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5tZXNzYWdlLCB3YXNIZWxwZnVsOiBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUCB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbERlY2lzaW9uID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgdGhyZWFkSWQ6IHN0cmluZywgLy8gQ2hhbmdlZCBmcm9tIGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3RcbiAgICAgIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JyxcbiAgICAgIGVkaXRlZEFjdGlvbnM/OiBBcnJheTx7IHRvb2xfbmFtZTogc3RyaW5nOyBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PlxuICAgICkgPT4ge1xuICAgICAgLy8gQnVzY2FyIGVsIG1lbnNhamUgcXVlIGNvbnRpZW5lIGVzdGUgdGhyZWFkSWQgZW4gc3VzIHBlbmRpbmdfYWN0aW9uc1xuICAgICAgY29uc3QgbWVzc2FnZVdpdGhBcHByb3ZhbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmluZChtID0+XG4gICAgICAgIG0uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gYWN0aW9uLnRocmVhZF9pZCA9PT0gdGhyZWFkSWQpXG4gICAgICApXG5cbiAgICAgIGlmICghbWVzc2FnZVdpdGhBcHByb3ZhbCB8fCAhbWVzc2FnZVdpdGhBcHByb3ZhbC5hcHByb3ZhbCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBlbmNvbnRyw7MgbWVuc2FqZSBjb24gYXBwcm92YWwgcGFyYSB0aHJlYWRfaWQ6JywgdGhyZWFkSWQpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGFwcHJvdmFsIH0gPSBtZXNzYWdlV2l0aEFwcHJvdmFsXG4gICAgICBjb25zdCBtZXNzYWdlSWQgPSBtZXNzYWdlV2l0aEFwcHJvdmFsLmlkXG5cbiAgICAgIC8vIFVwZGF0ZSBtZXNzYWdlIHN0YXR1cyBpbW1lZGlhdGVseVxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gbWVzc2FnZUlkKSB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdHVzID0gZGVjaXNpb24gPT09ICdhcHByb3ZlJyA/ICdhcHByb3ZlZCcgOiAncmVqZWN0ZWQnXG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG5cbiAgICAgIC8vIFRyaWdnZXIgcmUtcmVuZGVyXG4gICAgICBjb25zdCBleGlzdGluZ01lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbmQobSA9PiBtLmlkID09PSBtZXNzYWdlSWQpXG4gICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICBhZGRNZXNzYWdlKHsgLi4uZXhpc3RpbmdNZXNzYWdlLCBhcHByb3ZhbFN0YXR1czogbmV3U3RhdHVzIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIEZvciBib3RoIGFwcHJvdmUgYW5kIHJlamVjdCwgY2FsbCBjb250aW51ZS10aHJlYWQgZW5kcG9pbnQgd2l0aCBzcGVjaWZpYyB0aHJlYWRfaWRcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcblxuICAgICAgLy8gQWRkIGxvYWRpbmcgZm9yIHRoaXMgdGhyZWFkXG4gICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIFt0aHJlYWRJZF06IHQoJ2NoYXQucHJvY2Vzc2luZycpLFxuICAgICAgfSkpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3IuY29udGludWVUaHJlYWQoe1xuICAgICAgICAgIHRocmVhZElkLCAvLyBVc2Ugc3BlY2lmaWMgYWN0aW9uIHRocmVhZF9pZFxuICAgICAgICAgIHNlc3Npb25JZDogYXBwcm92YWwuc2Vzc2lvbl9pZCxcbiAgICAgICAgICBkZWNpc2lvbjogZWRpdGVkQWN0aW9ucyA/ICdlZGl0JyA6IGRlY2lzaW9uLFxuICAgICAgICAgIGVkaXRlZEFjdGlvbnMsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICAvLyBSZW1vdmUgbG9hZGluZyBvbiBlcnJvclxuICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW3RocmVhZElkXVxuICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgU1NFIG1hbnVhbGx5IHRvIHRyYWNrIGxvYWRpbmcgcGVyIHRocmVhZFxuICAgICAgICBhd2FpdCBwcm9jZXNzU1NFU3RyZWFtKHJlc3BvbnNlLCB0aHJlYWRJZCwge1xuICAgICAgICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZShjb250ZW50LCBudWxsLCAnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIC8vIE1vc3RyYXIgbm9tYnJlIHNvbG8gcGFyYSBjcmVhdGVfdGFzaywgZWwgcmVzdG8gbXVlc3RyYSBnZW7DqXJpY29cbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlNc2cgPSBtZXNzYWdlLmluY2x1ZGVzKCdjcmVhdGVfdGFzaycpID8gbWVzc2FnZSA6IHQoJ2NoYXQuZXhlY3V0aW5nQWN0aW9uJylcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgW2N1cnJlbnRUaHJlYWRJZF06IGRpc3BsYXlNc2csXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQ29tcGxldGU6IChmaW5hbENvbnRlbnQ6IHN0cmluZywgc291cmNlczogYW55LCBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaChmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZClcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tjdXJyZW50VGhyZWFkSWRdXG4gICAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uRXJyb3I6IChlcnJvcjogYW55LCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGVycm9yKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW2N1cnJlbnRUaHJlYWRJZF1cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgIC8vIFJlbW92ZSBsb2FkaW5nIG9uIGVycm9yXG4gICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbdGhyZWFkSWRdXG4gICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbYXV0aFVzZXIsIGFnZW50LCBhZGRNZXNzYWdlLCBoYW5kbGVTdHJlYW1FcnJvciwgaGFuZGxlU3RyZWFtVXBkYXRlLCBoYW5kbGVTdHJlYW1GaW5pc2hdXG4gIClcblxuICBjb25zdCBpbml0aWFsaXplQ2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG4gICAgaWYgKGluaXRpYWxDaGF0SWQpIHtcbiAgICAgIGF3YWl0IGxvYWRNZXNzYWdlcygpXG4gICAgfSBlbHNlIGlmICh1c2VySW5pdGlhbE1lc3NhZ2UpIHtcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxNZXNzYWdlID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZT8udHJpbSgpKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbEF0dGFjaG1lbnRzID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHM/Lmxlbmd0aClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxGYXEgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZClcblxuICAgICAgaWYgKCFoYXNJbml0aWFsTWVzc2FnZSAmJiAhaGFzSW5pdGlhbEF0dGFjaG1lbnRzICYmICFoYXNJbml0aWFsRmFxKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICBhc2tNYWlhKHtcbiAgICAgICAgbWVzc2FnZTogdXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdD8uaWQgfHwgbnVsbCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lISxcbiAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihjbGllbnQ/LmlkID8geyBjbGllbnRJZDogY2xpZW50LmlkIH0gOiBwcm9qZWN0Py5jbGllbnQ/LmlkID8geyBjbGllbnRJZDogcHJvamVjdC5jbGllbnQuaWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHByb2plY3Q/Lm5hbWUgPyB7IHByb2plY3ROYW1lOiBwcm9qZWN0Lm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKHByb2plY3Q/LmNsaWVudD8ubmFtZVxuICAgICAgICAgID8geyBjbGllbnROYW1lOiBwcm9qZWN0LmNsaWVudC5uYW1lIH1cbiAgICAgICAgICA6IGNsaWVudD8ubmFtZVxuICAgICAgICAgICAgPyB7IGNsaWVudE5hbWU6IGNsaWVudC5uYW1lIH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQgPyB7IGZhcUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtcbiAgICBpbml0aWFsQ2hhdElkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICBhdXRoVXNlcixcbiAgICBhZ2VudCxcbiAgICBhc2tNYWlhLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgXSlcblxuICBjb25zdCByZXNldENoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbXSlcblxuICBjb25zdCBzdG9wR2VuZXJhdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdG9wU3RyZWFtaW5nKClcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtzdG9wU3RyZWFtaW5nXSlcblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBjdXJyZW50UHJvamVjdCxcbiAgICBjdXJyZW50Q2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgY3VycmVudE1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgY2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICByZXNldENoYXQsXG4gICAgc3RvcEdlbmVyYXRpb24sXG5cbiAgICBpc0Rpc2FibGVkOiB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLFFBQVEs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
|
|
823
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVByb2plY3RzIiwidXNlVGFiVGFza0RlZmF1bHQiLCJUQVNLX1VSTF9SRUdFWF9QQVRURVJOIiwibm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzIiwiYXR0YWNobWVudHNPck9wdGlvbnMiLCJfb3B0aW9ucyRhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsImF0dGFjaG1lbnRzIiwib3B0aW9ucyIsInVzZVN0YWJsZUNhbGxiYWNrcyIsImF1dGhVc2VyIiwiY3VycmVudFVzZXIiLCJpZCIsInRvU3RyaW5nIiwibmFtZSIsImZpcnN0TmFtZSIsImF2YXRhciIsInBpY3R1cmUiLCJjdXJyZW50IiwicGFyc2VTU0VMaW5lIiwibGluZSIsInRyaW0iLCJfbGluZSRzcGxpdCIsInNwbGl0IiwiX2xpbmUkc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJldmVudExpbmUiLCJkYXRhTGluZSIsImV2ZW50VHlwZSIsInJlcGxhY2UiLCJkYXRhU3RyIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsInBhcnNlRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzU1NFU3RyZWFtIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJ0aHJlYWRJZCIsImNhbGxiYWNrcyIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImlzU3RyZWFtQ29tcGxldGUiLCJoYW5kbGVMaW5lIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJpIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJfaGFuZGxlTGluZSIsInBhcnNlZCIsImV2ZW50RGF0YSIsImNvbnRlbnQiLCJvblRva2VuIiwibWVzc2FnZSIsIm9uTm9kZSIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsIm9uQ29tcGxldGUiLCJvbkVycm9yIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJyZWFkIiwic2VudCIsImFicnVwdCIsImRlY29kZSIsInN0cmVhbSIsInBvcCIsImxlbmd0aCIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsImFwcGx5IiwiYXJndW1lbnRzIiwidXNlQ2hhdE1hbmFnZXIiLCJfcmVmMiIsImluaXRpYWxDaGF0SWQiLCJjaGF0SWQiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJfcmVmMiRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsInQiLCJfdXNlR2xvYmFsQ29udGV4dCIsInByb2plY3QiLCJzZXRQcm9qZWN0IiwiY2xpZW50Iiwic2V0Q2xpZW50IiwiYWdlbnQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImNoaXBzUHJvamVjdCIsInNldENoaXBzUHJvamVjdCIsImV2ZW50IiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VTdGFibGVDYWxsYmFja3MiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImlzUHJvY2Vzc2luZ1JlZiIsImZpcnN0VGltZVJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVMb2FkaW5ncyIsInNldEFjdGl2ZUxvYWRpbmdzIiwiaXNXZWJTZWFyY2hBY3RpdmVSZWYiLCJpc0RlZXBTZWFyY2hBY3RpdmVSZWYiLCJfdXNlQ2hhdE1lc3NhZ2VzIiwibG9hZGluZ01lc3NhZ2VzIiwibWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJsb2FkTWVzc2FnZXMiLCJhZGRNZXNzYWdlIiwicmVtb3ZlTWVzc2FnZSIsImhhbmRsZVNjcm9sbCIsImN1c3RvbUV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJsYXN0TXNnV2l0aFByb2plY3QiLCJmaWx0ZXIiLCJtc2ciLCJwcm9qZWN0SWQiLCJhdCIsIl9yZWYzIiwicHJvamVjdE5hbWUiLCJ0aGVuIiwicHJvamVjdHMiLCJmb3VuZCIsImZpbmQiLCJwIiwiTnVtYmVyIiwiX2ZvdW5kJGNsaWVudCIsImNsaWVudE5hbWUiLCJTdHJpbmciLCJsYXN0TXNnV2l0aENsaWVudCIsImNsaWVudElkIiwiX3JlZjQiLCJtc2dDbGllbnRJZCIsIm1zZ0NsaWVudE5hbWUiLCJoYW5kbGVTdHJlYW1FcnJvciIsImVycm9yTWVzc2FnZSIsImNvbmNhdCIsImlzRXJyb3IiLCJkYXRlIiwiRGF0ZSIsInVzZXIiLCJyb2xlIiwiQVNTSVNUQU5UIiwiaGFuZGxlU3RyZWFtVXBkYXRlIiwidGVtcE1lc3NhZ2VJZCIsImhhbmRsZVN0cmVhbUZpbmlzaCIsIl9yZWY1IiwiX2NhbGxlZTIiLCJ0YXNrVXJsUmVnZXgiLCJtYXRjaGVzIiwiY29udGVudFRvQWRkIiwicHJldmlvdXNNZXNzYWdlIiwiaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSIsInRhc2tJZHMiLCJ0YWIiLCJ0YWJTZWdtZW50IiwibGFzdFByb2plY3RNZXNzYWdlIiwiY29udGV4dFByb2plY3RJZFJhdyIsImNvbnRleHRQcm9qZWN0SWQiLCJwYXRoTWF0Y2giLCJyb3V0ZVByb2plY3RJZCIsIl93aW5kb3ckbmV3UHJvamVjdERhcyIsIl9jb250ZXh0MiIsIlJlZ0V4cCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hdGNoQWxsIiwibSIsImFwcHJvdmFsIiwibWFwIiwibWF0Y2giLCJwYXJzZUludCIsInVybCIsIndpbmRvdyIsImxvY2F0aW9uIiwicGF0aG5hbWUiLCJuZXdQcm9qZWN0RGFzaGJvYXJkIiwiYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQiLCJfeDQiLCJfeDUiLCJfeDYiLCJoYW5kbGVTdHJlYW1TdG9wIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsInNldFRpbWVvdXQiLCJoYW5kbGVBcHByb3ZhbFJlcXVpcmVkIiwib3JpZ2luYWxfdGhyZWFkX2lkIiwiYXBwcm92YWxTdGF0dXMiLCJfdXNlT3JjaGVzdHJhdG9yU3RyZWEiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdG9wIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiYXNrTWFpYSIsIndhaXRpbmdSZXNwb25zZSIsImlzTG9hZGluZyIsImlzV3JpdGluZyIsImxvYWRpbmdNZXNzYWdlIiwic3RvcFN0cmVhbWluZyIsImN1cnJlbnRQcm9qZWN0Iiwic2VuZE1lc3NhZ2UiLCJfcmVmNiIsIl9jYWxsZWUzIiwiZmFxSWQiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsIl9wcm9qZWN0JGNsaWVudCIsIl9ub3JtYWxpemVTZW5kTWVzc2FnZSIsIm5ld01lc3NhZ2VJZCIsImxhc3RNZXNzYWdlV2l0aFByb2plY3QiLCJjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMiLCJmaW5hbE1lc3NhZ2UiLCJfb3B0aW9ucyRwcm9qZWN0Q2hhbmciLCJoaXN0b3J5IiwibGFzdE1lc3NhZ2VQcm9qZWN0SWQiLCJwcm9qZWN0VG9SZXF1ZXN0IiwicGF5bG9hZEZhcUlkIiwicGF5bG9hZERhdGEiLCJfY29udGV4dDMiLCJwbUFpVHlwZWRUZXh0IiwiYWdlbnRJZCIsIlVTRVIiLCJwcm9qZWN0Q2hhbmdlZCIsImluY29tZVR5cGUiLCJoaXN0b3J5TWVzc2FnZSIsImlzRmluaXRlIiwiX29iamVjdFNwcmVhZCIsImxhbmciLCJ1c2VySWQiLCJjb21wYW55SWQiLCJjb21wYW55X2lkIiwibWVzc2FnZUlkIiwiYWdlbnROYW1lIiwiX3g3IiwiX3g4IiwiX3g5IiwiY2hhbmdlUHJvamVjdCIsIm9wdGlvbiIsImhhbmRsZUZlZWRiYWNrIiwiX3JlZjciLCJfY2FsbGVlNCIsImZlZWRiYWNrUHJvcCIsImNoYXRNZXNzYWdlSWQiLCJfY29udGV4dDQiLCJDaGF0cyIsIndhc0hlbHBmdWxDaGF0IiwiVEhVTUJTX1VQIiwid2FzSGVscGZ1bCIsIl94MCIsIl94MSIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb24iLCJfcmVmOCIsIl9jYWxsZWU1IiwiZGVjaXNpb24iLCJlZGl0ZWRBY3Rpb25zIiwibWVzc2FnZVdpdGhBcHByb3ZhbCIsImV4aXN0aW5nTWVzc2FnZSIsIm5ld1N0YXR1cyIsIl90IiwiX2NvbnRleHQ1IiwiX20kYXBwcm92YWwiLCJwZW5kaW5nX2FjdGlvbnMiLCJzb21lIiwiYWN0aW9uIiwidGhyZWFkX2lkIiwiX2RlZmluZVByb3BlcnR5IiwiT3JjaGVzdHJhdG9yIiwiY29udGludWVUaHJlYWQiLCJzZXNzaW9uSWQiLCJzZXNzaW9uX2lkIiwib2siLCJuZXdMb2FkaW5ncyIsImN1cnJlbnRUaHJlYWRJZCIsIl94MTAiLCJfeDExIiwiX3gxMiIsImluaXRpYWxpemVDaGF0IiwiX2NhbGxlZTYiLCJfcHJvamVjdCRjbGllbnQyIiwiX3Byb2plY3QkY2xpZW50MyIsIl9jb250ZXh0NiIsInJlc2V0Q2hhdCIsInN0b3BHZW5lcmF0aW9uIiwiaXNEaXNhYmxlZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VDaGF0TWFuYWdlci91c2VDaGF0TWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByYWRpeCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRlZC1vcHRpb25hbC1jaGFpbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCdcbmltcG9ydCB7IHVzZUNoYXRNZXNzYWdlcyB9IGZyb20gJy4uL3VzZUNoYXRNZXNzYWdlcydcbmltcG9ydCB7IHVzZU9yY2hlc3RyYXRvclN0cmVhbSB9IGZyb20gJy4uL3VzZU9yY2hlc3RyYXRvclN0cmVhbSdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi91c2VUJ1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBTZW5kTWVzc2FnZU9wdGlvbnMsIFVzZUNoYXRNYW5hZ2VyUHJvcHMgfSBmcm9tICcuL3VzZUNoYXRNYW5hZ2VyLmludGVyZmFjZSdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXIgfSBmcm9tICcuLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vdXNlRXZlbnQnXG5pbXBvcnQgbWFpYSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHsgRmVlZGJhY2sgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21vbGVjdWxlcy9NZXNzYWdlRmVlZGJhY2svTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRNZXNzYWdlVXNlciwgQ2hhdEhpc3RvcnlSb2xlLCBBcHByb3ZhbFJlcXVlc3QgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IHVzZVByb2plY3RzIH0gZnJvbSAnLi4vdXNlUHJvamVjdHMnXG5pbXBvcnQgeyB1c2VUYWJUYXNrRGVmYXVsdCB9IGZyb20gJy4uL3VzZVRhYlRhc2tEZWZhdWx0J1xuaW1wb3J0IHsgVEFTS19VUkxfUkVHRVhfUEFUVEVSTiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy90YXNrVXJscydcblxudHlwZSBBdHRhY2htZW50c09yT3B0aW9ucyA9IEF0dGFjaG1lbnRGaWxlW10gfCBTZW5kTWVzc2FnZU9wdGlvbnNcblxuY29uc3Qgbm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzID0gKGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudHNPck9wdGlvbnMpID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXR0YWNobWVudHNPck9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIHsgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzT3JPcHRpb25zLCBvcHRpb25zOiB7fSBhcyBTZW5kTWVzc2FnZU9wdGlvbnMgfVxuICB9XG5cbiAgY29uc3Qgb3B0aW9uczogU2VuZE1lc3NhZ2VPcHRpb25zID0gYXR0YWNobWVudHNPck9wdGlvbnMgPz8ge31cbiAgcmV0dXJuIHsgYXR0YWNobWVudHM6IG9wdGlvbnMuYXR0YWNobWVudHMgPz8gW10sIG9wdGlvbnMgfVxufVxuXG5jb25zdCB1c2VTdGFibGVDYWxsYmFja3MgPSAoYXV0aFVzZXI6IENPUlVzZXIpID0+IHtcbiAgY29uc3QgY3VycmVudFVzZXIgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VVc2VyPih7XG4gICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgbmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgfSlcblxuICBpZiAoXG4gICAgY3VycmVudFVzZXIuY3VycmVudC5pZCAhPT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQubmFtZSAhPT0gYXV0aFVzZXIuZmlyc3ROYW1lIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5hdmF0YXIgIT09IGF1dGhVc2VyLnBpY3R1cmVcbiAgKSB7XG4gICAgY3VycmVudFVzZXIuY3VycmVudCA9IHtcbiAgICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgbmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIGN1cnJlbnRVc2VyOiBjdXJyZW50VXNlci5jdXJyZW50LFxuICB9XG59XG5cbmNvbnN0IHBhcnNlU1NFTGluZSA9IChsaW5lOiBzdHJpbmcpOiB7IGV2ZW50VHlwZTogc3RyaW5nOyBkYXRhOiB1bmtub3duIH0gfCBudWxsID0+IHtcbiAgaWYgKCFsaW5lLnRyaW0oKSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIHJldHVybiBudWxsXG5cbiAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnRMaW5lLnJlcGxhY2UoJ2V2ZW50OiAnLCAnJykudHJpbSgpXG4gIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkYXRhU3RyKVxuICAgIHJldHVybiB7IGV2ZW50VHlwZSwgZGF0YSB9XG4gIH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5jb25zdCBwcm9jZXNzU1NFU3RyZWFtID0gYXN5bmMgKFxuICByZXNwb25zZTogUmVzcG9uc2UsXG4gIHRocmVhZElkOiBzdHJpbmcsXG4gIGNhbGxiYWNrczoge1xuICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbk5vZGU6IChtZXNzYWdlOiBzdHJpbmcsIHRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkNvbXBsZXRlOiAoZmluYWxDb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25FcnJvcjogKGVycm9yOiBhbnksIHRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgfVxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gIGlmICghcmVhZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgfVxuXG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICBsZXQgYnVmZmVyID0gJydcbiAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gIGxldCBpc1N0cmVhbUNvbXBsZXRlID0gZmFsc2VcblxuICBmdW5jdGlvbiBoYW5kbGVMaW5lKGxpbmU6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU1NFTGluZShsaW5lKVxuICAgIGlmICghcGFyc2VkKSByZXR1cm5cblxuICAgIGNvbnN0IHsgZXZlbnRUeXBlLCBkYXRhIH0gPSBwYXJzZWRcbiAgICBjb25zdCBldmVudERhdGEgPSBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgICBpZiAoZXZlbnRUeXBlID09PSAndG9rZW4nKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gZXZlbnREYXRhLmNvbnRlbnQgYXMgc3RyaW5nXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgKz0gY29udGVudFxuICAgICAgY2FsbGJhY2tzLm9uVG9rZW4oYWNjdW11bGF0ZWRDb250ZW50KVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnbm9kZScpIHtcbiAgICAgIGlmIChldmVudERhdGEubWVzc2FnZSAmJiB0eXBlb2YgZXZlbnREYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNhbGxiYWNrcy5vbk5vZGUoZXZlbnREYXRhLm1lc3NhZ2UsIHRocmVhZElkKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnY29tcGxldGUnKSB7XG4gICAgICBjb25zdCBmaW5hbENvbnRlbnQgPSAoZXZlbnREYXRhLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgIGNvbnN0IHNvdXJjZXMgPSAoZXZlbnREYXRhLnNvdXJjZXMgYXMgdW5rbm93bikgfHwgbnVsbFxuICAgICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKGV2ZW50RGF0YS5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgICBjYWxsYmFja3Mub25Db21wbGV0ZShmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZCwgdGhyZWFkSWQpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgIGNhbGxiYWNrcy5vbkVycm9yKGV2ZW50RGF0YS5lcnJvciwgdGhyZWFkSWQpXG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKCFpc1N0cmVhbUNvbXBsZXRlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgaWYgKGRvbmUpIHtcbiAgICAgIGlzU3RyZWFtQ29tcGxldGUgPSB0cnVlXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgnXFxuXFxuJylcbiAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaGFuZGxlTGluZShsaW5lc1tpXSlcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHVzZUNoYXRNYW5hZ2VyID0gKHtcbiAgY2hhdElkOiBpbml0aWFsQ2hhdElkLFxuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIG9uRXJyb3IsXG4gIGFnZW50cyA9IFtdLFxufTogVXNlQ2hhdE1hbmFnZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBhdXRoVXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7XG4gICAgcHJvamVjdCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICBzZXRDbGllbnQsXG4gICAgYWdlbnQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGNoaXBzUHJvamVjdCxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgZmV0Y2hQcm9qZWN0cyB9ID0gdXNlUHJvamVjdHMoKVxuICBjb25zdCB7IGN1cnJlbnRVc2VyIH0gPSB1c2VTdGFibGVDYWxsYmFja3MoYXV0aFVzZXIpXG4gIGNvbnN0IHsgZ2V0VGFiVGFza0RlZmF1bHQgfSA9IHVzZVRhYlRhc2tEZWZhdWx0KClcbiAgY29uc3QgY3VycmVudE1lc3NhZ2VJZCA9IHVzZVJlZih1dWlkdjQoKSlcbiAgY29uc3QgY3VycmVudFVzZXJRdWVzdGlvbiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjdXJyZW50Q2hhdElkID0gdXNlUmVmKGluaXRpYWxDaGF0SWQgfHwgdXVpZHY0KCkpXG4gIGNvbnN0IHJlcG9ydGVkRXZlbnQgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPENoYXRNZXNzYWdlW10+KFtdKVxuICBjb25zdCBpc1Byb2Nlc3NpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGZpcnN0VGltZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgW2FjdGl2ZUxvYWRpbmdzLCBzZXRBY3RpdmVMb2FkaW5nc10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pih7fSlcblxuICBjb25zdCBpc1dlYlNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc1dlYlNlYXJjaEFjdGl2ZSlcbiAgY29uc3QgaXNEZWVwU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzRGVlcFNlYXJjaEFjdGl2ZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICBjb25zdCB7IGxvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgbG9hZE1lc3NhZ2VzLCBhZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBoYW5kbGVTY3JvbGwgfSA9XG4gICAgdXNlQ2hhdE1lc3NhZ2VzKHtcbiAgICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBhZ2VudHMsXG4gICAgfSlcblxuICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIHtcbiAgICAgIGRldGFpbDogeyBsb2FkaW5nTWVzc2FnZXMgfSxcbiAgICB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gIH0sIFtsb2FkaW5nTWVzc2FnZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluaXRpYWxDaGF0SWQgJiYgaW5pdGlhbENoYXRJZCAhPT0gY3VycmVudENoYXRJZC5jdXJyZW50KSB7XG4gICAgICAvLyBMaW1waWFyIGNvbnRleHRvIGdsb2JhbCBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs25cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcblxuICAgICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gaW5pdGlhbENoYXRJZFxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG51bGxcbiAgICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IGZhbHNlXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG5cbiAgICAgIGxvYWRNZXNzYWdlcygpXG4gICAgfVxuICB9LCBbaW5pdGlhbENoYXRJZCwgcHJvamVjdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRDaGlwc1Byb2plY3QsIGxvYWRNZXNzYWdlc10pXG5cbiAgLy8gU2luY3Jvbml6YXIgY2hpcHNQcm9qZWN0IGN1YW5kbyBoYXkgbWVuc2FqZXMgY29uIHByb2plY3RJZCBwZXJvIGNoaXBzUHJvamVjdCBubyBzZSBoYSBzZXRlYWRvXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoaXBzUHJvamVjdCB8fCBsb2FkaW5nTWVzc2FnZXMpIHJldHVyblxuICAgIGNvbnN0IGxhc3RNc2dXaXRoUHJvamVjdCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgY29uc3QgeyBwcm9qZWN0SWQsIHByb2plY3ROYW1lIH0gPSBsYXN0TXNnV2l0aFByb2plY3QgfHwge31cbiAgICBpZiAoIXByb2plY3RJZCkgcmV0dXJuXG5cbiAgICBmZXRjaFByb2plY3RzKHByb2plY3RJZCkudGhlbihwcm9qZWN0cyA9PiB7XG4gICAgICBjb25zdCBmb3VuZCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSBOdW1iZXIocHJvamVjdElkKSlcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZC5uYW1lLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kLmNsaWVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhmb3VuZC5pZCksXG4gICAgICAgIH0pXG4gICAgICAgIHNldFByb2plY3QoZm91bmQpXG4gICAgICB9IGVsc2UgaWYgKHByb2plY3ROYW1lKSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgcHJvamVjdE5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocHJvamVjdElkKSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0UHJvamVjdCh7IGlkOiBOdW1iZXIocHJvamVjdElkKSwgbmFtZTogcHJvamVjdE5hbWUgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbbWVzc2FnZXMsIGNoaXBzUHJvamVjdCwgbG9hZGluZ01lc3NhZ2VzLCBmZXRjaFByb2plY3RzLCBzZXRDaGlwc1Byb2plY3QsIHNldFByb2plY3RdKVxuXG4gIC8vIFNpbmNyb25pemFyIGNsaWVudCBjdWFuZG8gaGF5IG1lbnNhamVzIGNvbiBjbGllbnRJZCBwZXJvIGNsaWVudCBubyBzZSBoYSBzZXRlYWRvXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNsaWVudCB8fCBsb2FkaW5nTWVzc2FnZXMpIHJldHVyblxuICAgIGNvbnN0IGxhc3RNc2dXaXRoQ2xpZW50ID0gbWVzc2FnZXMuZmlsdGVyKG1zZyA9PiBtc2cuY2xpZW50SWQgIT0gbnVsbCAmJiBtc2cuY2xpZW50TmFtZSkuYXQoLTEpXG4gICAgY29uc3QgeyBjbGllbnRJZDogbXNnQ2xpZW50SWQsIGNsaWVudE5hbWU6IG1zZ0NsaWVudE5hbWUgfSA9IGxhc3RNc2dXaXRoQ2xpZW50IHx8IHt9XG4gICAgaWYgKG1zZ0NsaWVudElkID09IG51bGwgfHwgIW1zZ0NsaWVudE5hbWUpIHJldHVyblxuXG4gICAgc2V0Q2xpZW50Py4oeyBpZDogTnVtYmVyKG1zZ0NsaWVudElkKSwgbmFtZTogbXNnQ2xpZW50TmFtZSB9KVxuICB9LCBbbWVzc2FnZXMsIGNsaWVudCwgbG9hZGluZ01lc3NhZ2VzLCBzZXRDbGllbnRdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUVycm9yID0gdXNlQ2FsbGJhY2soXG4gICAgKGVycm9yTWVzc2FnZT86IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgIGVycm9yTWVzc2FnZSA9PT0gXCJBY2Nlc3MgZGVuaWVkOiBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGlzIGFnZW50XCJcbiAgICAgICAgICA/IHQoJ2NoYXQuZXJyb3JBY2Nlc3NEZW5pZWQnKVxuICAgICAgICAgIDogdCgnY2hhdC5lcnJvcicpXG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH1gLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVVwZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChjb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogdGVtcE1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudCxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIHNvdXJjZXMsXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUZpbmlzaCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChjb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICByZW1vdmVNZXNzYWdlKHRlbXBNZXNzYWdlSWQpXG5cbiAgICAgIC8vIERldGVjdGFyIHRvZGFzIGxhcyBVUkxzIGRlIHRhcmVhcyAoLi4uL3Rhc2tzLzEyMy9kZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKVxuICAgICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgICBjb25zdCBtYXRjaGVzID0gWy4uLmNvbnRlbnQubWF0Y2hBbGwodGFza1VybFJlZ2V4KV1cblxuICAgICAgbGV0IGNvbnRlbnRUb0FkZCA9IGNvbnRlbnRcbiAgICAgIGNvbnN0IHByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG0gPT4gbS5pZCAhPT0gdGVtcE1lc3NhZ2VJZCkuYXQoLTEpXG4gICAgICBjb25zdCBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbCAhPSBudWxsXG4gICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwICYmIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgdGFza0lkcyA9IG1hdGNoZXMubWFwKG1hdGNoID0+IHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpXG4gICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KHRhc2tJZHNbMF0pXG4gICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgY29udGVudFRvQWRkID0gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgICAgICAgdXJsLnJlcGxhY2UoL1xcLyhkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSg/PSR8XFw/KS8sIHRhYlNlZ21lbnQpXG4gICAgICAgIClcblxuICAgICAgICAvLyBTb2xvIGHDsWFkaXIgYWwgZGFzaGJvYXJkIGN1YW5kbyBsYSBydXRhIGFjdHVhbCBjb2luY2lkZSBjb24gZWwgcHJveWVjdG8gZGVsIGNoYXRcbiAgICAgICAgY29uc3QgbGFzdFByb2plY3RNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkUmF3ID0gcHJvamVjdD8uaWQgfHwgbGFzdFByb2plY3RNZXNzYWdlPy5wcm9qZWN0SWRcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IGNvbnRleHRQcm9qZWN0SWRSYXcgPyBwYXJzZUludChTdHJpbmcoY29udGV4dFByb2plY3RJZFJhdyksIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgcGF0aE1hdGNoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLm1hdGNoKC9eXFwvcHJvamVjdHNcXC8oXFxkKylcXC8vKVxuICAgICAgICBjb25zdCByb3V0ZVByb2plY3RJZCA9IHBhdGhNYXRjaCA/IHBhcnNlSW50KHBhdGhNYXRjaFsxXSwgMTApIDogbnVsbFxuICAgICAgICBpZiAoY29udGV4dFByb2plY3RJZCAmJiByb3V0ZVByb2plY3RJZCAmJiBjb250ZXh0UHJvamVjdElkID09PSByb3V0ZVByb2plY3RJZCkge1xuICAgICAgICAgIGlmICh3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkLmFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkKHRhc2tJZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFuc3dlci0ke21lbW9yeVNlc3Npb25JZH1gLFxuICAgICAgICBtZXNzYWdlOiBjb250ZW50VG9BZGQsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBzb3VyY2VzLFxuICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICB9KVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpZiAoZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBwcm9qZWN0LCBnZXRUYWJUYXNrRGVmYXVsdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYWRkTWVzc2FnZSh7XG4gICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tY2FuY2VsbGVkYCxcbiAgICAgIG1lc3NhZ2U6IHQoJ2NoYXQuY2FuY2VsbGVkJyksXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgaXNGcm9udGVuZENhbmNlbGxlZDogdHJ1ZSxcbiAgICB9KVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICB9LCA1MDApXG4gIH0sIFthZGRNZXNzYWdlLCB0XSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkID0gdXNlQ2FsbGJhY2soXG4gICAgKGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICAvLyBBZGQgYSBtZXNzYWdlIHdpdGggdGhlIGFwcHJvdmFsIHJlcXVlc3RcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFwcHJvdmFsLSR7YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfWAsXG4gICAgICAgIG1lc3NhZ2U6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBhcHByb3ZhbFN0YXR1czogJ3BlbmRpbmcnLFxuICAgICAgfSlcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlXVxuICApXG5cbiAgY29uc3Qge1xuICAgIGFza01haWEsXG4gICAgaXNMb2FkaW5nOiB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0b3BTdHJlYW1pbmcsXG4gIH0gPSB1c2VPcmNoZXN0cmF0b3JTdHJlYW0oe1xuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICB9KVxuXG4gIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gcHJvamVjdFxuXG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKG1lc3NhZ2U6IHN0cmluZywgYXR0YWNobWVudHNPck9wdGlvbnM/OiBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zLCBmYXFJZD86IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50IHx8IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMsIG9wdGlvbnMgfSA9IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyhhdHRhY2htZW50c09yT3B0aW9ucylcblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBjb25zdCBuZXdNZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gbmV3TWVzc2FnZUlkXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBtZXNzYWdlXG5cbiAgICAgIGlmICghcmVwb3J0ZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0KVxuICAgICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBjb250ZXh0byBnbG9iYWwgZXN0w6EgZGVzYWN0dWFsaXphZG9cbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlV2l0aFByb2plY3QgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQ/LlttZXNzYWdlc1JlZi5jdXJyZW50Lmxlbmd0aCAtIDFdPy5hZ2VudElkXG5cbiAgICAgIC8vIE5vIGFncmVnYXIgcHJvamVjdElkIGFsIG1lbnNhamUgZGVsIHVzdWFyaW8gLSBzZSBkZXRlcm1pbmFyw6EgZGVzcHXDqXNcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYHF1ZXN0aW9uLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuVVNFUixcbiAgICAgICAgc291cmNlczogYXR0YWNobWVudHMsXG4gICAgICB9KVxuXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgbGV0IGZpbmFsTWVzc2FnZSA9IG1lc3NhZ2VcblxuICAgICAgaWYgKG1lc3NhZ2UgPT09IHQoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpKSB7XG4gICAgICAgIGZpbmFsTWVzc2FnZSA9IGBGQVE6ICR7dCgncWEuaXRlbXMucmVudGFiaWxpZGFkX3Byb3llY3RvJyl9IC0gVGlwbyBkZSByZW50YWJpbGlkYWQ6ICR7XG4gICAgICAgICAgb3B0aW9ucy5wcm9qZWN0Q2hhbmdlZD8uaW5jb21lVHlwZSB8fCBwcm9qZWN0Py5pbmNvbWVUeXBlXG4gICAgICAgIH1gXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSkpXG5cbiAgICAgIC8vIFZlcmlmaWNhciBjb25zaXN0ZW5jaWEgZW50cmUgY29udGV4dG8gZ2xvYmFsIHkgw7psdGltbyBtZW5zYWplXG4gICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gcHJvamVjdD8uaWRcbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlUHJvamVjdElkID0gbGFzdE1lc3NhZ2VXaXRoUHJvamVjdD8ucHJvamVjdElkXG5cbiAgICAgIGxldCBwcm9qZWN0VG9SZXF1ZXN0OiBudW1iZXIgfCBudWxsID0gbnVsbFxuXG4gICAgICAvLyBTaSBoYXkgw7psdGltbyBtZW5zYWplIGNvbiBwcm9qZWN0SWQsIHVzYXJsbyAobcOhcyBjb25maWFibGUpXG4gICAgICBpZiAobGFzdE1lc3NhZ2VQcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBOdW1iZXIobGFzdE1lc3NhZ2VQcm9qZWN0SWQpXG4gICAgICAgIHByb2plY3RUb1JlcXVlc3QgPSBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSA/IHBhcnNlZCA6IG51bGxcbiAgICAgIH1cbiAgICAgIC8vIFNpIG5vIGhheSDDumx0aW1vIG1lbnNhamUsIHVzYXIgZWwgY29udGV4dG8gZ2xvYmFsXG4gICAgICBlbHNlIGlmIChjb250ZXh0UHJvamVjdElkICE9IG51bGwpIHtcbiAgICAgICAgcHJvamVjdFRvUmVxdWVzdCA9IGNvbnRleHRQcm9qZWN0SWRcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvamVjdHMgPSBhd2FpdCBmZXRjaFByb2plY3RzKFtwcm9qZWN0VG9SZXF1ZXN0XSlcblxuICAgICAgY29uc3QgcGF5bG9hZEZhcUlkID0gZmFxSWQgPz8gb3B0aW9ucy5mYXFJZFxuXG4gICAgICBjb25zdCBwYXlsb2FkRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogZmluYWxNZXNzYWdlLFxuICAgICAgICBoaXN0b3J5LFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RUb1JlcXVlc3QsXG4gICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgYWdlbnRJZDogY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCEsXG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4oY2xpZW50Py5pZFxuICAgICAgICAgID8geyBjbGllbnRJZDogY2xpZW50LmlkLCAuLi4oY2xpZW50Lm5hbWUgPyB7IGNsaWVudE5hbWU6IGNsaWVudC5uYW1lIH0gOiB7fSkgfVxuICAgICAgICAgIDogcHJvamVjdD8uY2xpZW50Py5pZFxuICAgICAgICAgICAgPyB7IGNsaWVudElkOiBwcm9qZWN0LmNsaWVudC5pZCwgLi4uKHByb2plY3QuY2xpZW50Lm5hbWUgPyB7IGNsaWVudE5hbWU6IHByb2plY3QuY2xpZW50Lm5hbWUgfSA6IHt9KSB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHByb2plY3RzPy5sZW5ndGggPyB7IHByb2plY3ROYW1lOiBwcm9qZWN0c1swXS5uYW1lIH0gOiB7fSksXG4gICAgICAgIC4uLihhdHRhY2htZW50cy5sZW5ndGggPiAwID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEZhcUlkID8geyBmYXFJZDogcGF5bG9hZEZhcUlkIH0gOiB7fSksXG4gICAgICB9XG5cbiAgICAgIGFza01haWEocGF5bG9hZERhdGEpXG4gICAgfSxcbiAgICBbXG4gICAgICBhZGRNZXNzYWdlLFxuICAgICAgZXZlbnQsXG4gICAgICBhc2tNYWlhLFxuICAgICAgcHJvamVjdCxcbiAgICAgIGNsaWVudCxcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICB0LFxuICAgICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgXVxuICApXG5cbiAgY29uc3QgY2hhbmdlUHJvamVjdCA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGlmICghY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSByZXR1cm5cblxuICAgICAgaWYgKG9wdGlvbi5pZCAhPT0gcHJvamVjdD8uaWQpIHtcbiAgICAgICAgc2V0UHJvamVjdChvcHRpb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9qZWN0ICYmIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuXG4gICAgICAgIGFza01haWEoe1xuICAgICAgICAgIG1lc3NhZ2U6IGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIHByb2plY3RJZDogb3B0aW9uLmlkLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbcHJvamVjdCwgc2V0UHJvamVjdCwgYXNrTWFpYSwgYXV0aFVzZXIsIGlzV2ViU2VhcmNoQWN0aXZlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2sgPSB1c2VDYWxsYmFjayhhc3luYyAoZmVlZGJhY2tQcm9wOiBGZWVkYmFjaywgY2hhdE1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLkNoYXRzLndhc0hlbHBmdWxDaGF0KGNoYXRNZXNzYWdlSWQsIGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQKVxuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gY2hhdE1lc3NhZ2VJZCAmJiBtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgd2FzSGVscGZ1bDogZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxEZWNpc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIHRocmVhZElkOiBzdHJpbmcsIC8vIENoYW5nZWQgZnJvbSBhcHByb3ZhbDogQXBwcm92YWxSZXF1ZXN0XG4gICAgICBkZWNpc2lvbjogJ2FwcHJvdmUnIHwgJ3JlamVjdCcsXG4gICAgICBlZGl0ZWRBY3Rpb25zPzogQXJyYXk8eyB0b29sX25hbWU6IHN0cmluZzsgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfT5cbiAgICApID0+IHtcbiAgICAgIC8vIEJ1c2NhciBlbCBtZW5zYWplIHF1ZSBjb250aWVuZSBlc3RlIHRocmVhZElkIGVuIHN1cyBwZW5kaW5nX2FjdGlvbnNcbiAgICAgIGNvbnN0IG1lc3NhZ2VXaXRoQXBwcm92YWwgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbmQobSA9PlxuICAgICAgICBtLmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnM/LnNvbWUoYWN0aW9uID0+IGFjdGlvbi50aHJlYWRfaWQgPT09IHRocmVhZElkKVxuICAgICAgKVxuXG4gICAgICBpZiAoIW1lc3NhZ2VXaXRoQXBwcm92YWwgfHwgIW1lc3NhZ2VXaXRoQXBwcm92YWwuYXBwcm92YWwpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gc2UgZW5jb250csOzIG1lbnNhamUgY29uIGFwcHJvdmFsIHBhcmEgdGhyZWFkX2lkOicsIHRocmVhZElkKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBhcHByb3ZhbCB9ID0gbWVzc2FnZVdpdGhBcHByb3ZhbFxuICAgICAgY29uc3QgbWVzc2FnZUlkID0gbWVzc2FnZVdpdGhBcHByb3ZhbC5pZFxuXG4gICAgICAvLyBVcGRhdGUgbWVzc2FnZSBzdGF0dXMgaW1tZWRpYXRlbHlcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IG1lc3NhZ2VJZCkge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICAgIHJldHVybiB7IC4uLm1lc3NhZ2UsIGFwcHJvdmFsU3RhdHVzOiBuZXdTdGF0dXMgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuXG4gICAgICAvLyBUcmlnZ2VyIHJlLXJlbmRlclxuICAgICAgY29uc3QgZXhpc3RpbmdNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT4gbS5pZCA9PT0gbWVzc2FnZUlkKVxuICAgICAgaWYgKGV4aXN0aW5nTWVzc2FnZSkge1xuICAgICAgICBjb25zdCBuZXdTdGF0dXMgPSBkZWNpc2lvbiA9PT0gJ2FwcHJvdmUnID8gJ2FwcHJvdmVkJyA6ICdyZWplY3RlZCdcbiAgICAgICAgYWRkTWVzc2FnZSh7IC4uLmV4aXN0aW5nTWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9KVxuICAgICAgfVxuXG4gICAgICAvLyBGb3IgYm90aCBhcHByb3ZlIGFuZCByZWplY3QsIGNhbGwgY29udGludWUtdGhyZWFkIGVuZHBvaW50IHdpdGggc3BlY2lmaWMgdGhyZWFkX2lkXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG5cbiAgICAgIC8vIEFkZCBsb2FkaW5nIGZvciB0aGlzIHRocmVhZFxuICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBbdGhyZWFkSWRdOiAnUHJvY2VzYW5kby4uLicsXG4gICAgICB9KSlcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5jb250aW51ZVRocmVhZCh7XG4gICAgICAgICAgdGhyZWFkSWQsIC8vIFVzZSBzcGVjaWZpYyBhY3Rpb24gdGhyZWFkX2lkXG4gICAgICAgICAgc2Vzc2lvbklkOiBhcHByb3ZhbC5zZXNzaW9uX2lkLFxuICAgICAgICAgIGRlY2lzaW9uOiBlZGl0ZWRBY3Rpb25zID8gJ2VkaXQnIDogZGVjaXNpb24sXG4gICAgICAgICAgZWRpdGVkQWN0aW9ucyxcbiAgICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQgfHwgJycsXG4gICAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgICAgIC8vIFJlbW92ZSBsb2FkaW5nIG9uIGVycm9yXG4gICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbdGhyZWFkSWRdXG4gICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJvY2VzcyBTU0UgbWFudWFsbHkgdG8gdHJhY2sgbG9hZGluZyBwZXIgdGhyZWFkXG4gICAgICAgIGF3YWl0IHByb2Nlc3NTU0VTdHJlYW0ocmVzcG9uc2UsIHRocmVhZElkLCB7XG4gICAgICAgICAgb25Ub2tlbjogKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaGFuZGxlU3RyZWFtVXBkYXRlKGNvbnRlbnQsIG51bGwsICcnKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ob2RlOiAobWVzc2FnZTogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiAoe1xuICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICBbY3VycmVudFRocmVhZElkXTogbWVzc2FnZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Db21wbGV0ZTogKGZpbmFsQ29udGVudDogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRmluaXNoKGZpbmFsQ29udGVudCwgc291cmNlcywgbWVtb3J5U2Vzc2lvbklkKVxuICAgICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW2N1cnJlbnRUaHJlYWRJZF1cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25FcnJvcjogKGVycm9yOiBhbnksIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdTU0UgRXJyb3I6JywgZXJyb3IpXG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgLy8gUmVtb3ZlIGxvYWRpbmcgb24gZXJyb3JcbiAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1t0aHJlYWRJZF1cbiAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFthdXRoVXNlciwgYWdlbnQsIGFkZE1lc3NhZ2UsIGhhbmRsZVN0cmVhbUVycm9yLCBoYW5kbGVTdHJlYW1VcGRhdGUsIGhhbmRsZVN0cmVhbUZpbmlzaF1cbiAgKVxuXG4gIGNvbnN0IGluaXRpYWxpemVDaGF0ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmICghZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAoaW5pdGlhbENoYXRJZCkge1xuICAgICAgYXdhaXQgbG9hZE1lc3NhZ2VzKClcbiAgICB9IGVsc2UgaWYgKHVzZXJJbml0aWFsTWVzc2FnZSkge1xuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgYXNrTWFpYSh7XG4gICAgICAgIG1lc3NhZ2U6IHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICBoaXN0b3J5LFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3Q/LmlkIHx8IG51bGwsXG4gICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSEsXG4gICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCEsXG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4oY2xpZW50Py5pZCA/IHsgY2xpZW50SWQ6IGNsaWVudC5pZCB9IDogcHJvamVjdD8uY2xpZW50Py5pZCA/IHsgY2xpZW50SWQ6IHByb2plY3QuY2xpZW50LmlkIH0gOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0Py5uYW1lID8geyBwcm9qZWN0TmFtZTogcHJvamVjdC5uYW1lIH0gOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0Py5jbGllbnQ/Lm5hbWVcbiAgICAgICAgICA/IHsgY2xpZW50TmFtZTogcHJvamVjdC5jbGllbnQubmFtZSB9XG4gICAgICAgICAgOiBjbGllbnQ/Lm5hbWVcbiAgICAgICAgICAgID8geyBjbGllbnROYW1lOiBjbGllbnQubmFtZSB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmZhcUlkID8geyBmYXFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZhcUlkIH0gOiB7fSksXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW1xuICAgIGluaXRpYWxDaGF0SWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIHByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIGF1dGhVc2VyLFxuICAgIGFnZW50LFxuICAgIGFza01haWEsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICBdKVxuXG4gIGNvbnN0IHJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG51bGxcbiAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN0b3BHZW5lcmF0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHN0b3BTdHJlYW1pbmcoKVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW3N0b3BTdHJlYW1pbmddKVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIGN1cnJlbnRQcm9qZWN0LFxuICAgIGN1cnJlbnRDaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICBjdXJyZW50TWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG5cbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIHJlc2V0Q2hhdCxcbiAgICBzdG9wR2VuZXJhdGlvbixcblxuICAgIGlzRGlzYWJsZWQ6IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDaEUsU0FBU0MsRUFBRSxJQUFJQyxNQUFNLFFBQVEsTUFBTTtBQUNuQyxTQUFTQyxlQUFlLFFBQVEsb0JBQW9CO0FBQ3BELFNBQVNDLHFCQUFxQixRQUFRLDBCQUEwQjtBQUNoRSxTQUFTQyxJQUFJLFFBQVEsU0FBUztBQUc5QixTQUFTQyxPQUFPLFFBQWlCLHdCQUF3QjtBQUN6RCxTQUFTQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDL0QsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxJQUFJLE1BQU0scUJBQXFCO0FB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
|