@projectcor/maia-components 2.11.65-9 → 2.11.65
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 +10 -16
- package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +11 -14
- package/lib/components/atoms/Chip/Chip.js +15 -49
- package/lib/components/atoms/Chip/styles.js +3 -7
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +6 -38
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +13 -21
- package/lib/components/atoms/MAIAInput/MAIAInput.js +42 -207
- package/lib/components/atoms/MAIAInput/styles.js +24 -64
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +17 -165
- package/lib/components/molecules/ChatAIHome/styles.js +18 -39
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +7 -13
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +9 -15
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +12 -13
- package/lib/components/molecules/ChatFooter/ChatFooter.js +21 -105
- package/lib/components/molecules/ChatFooter/styles.js +2 -11
- package/lib/components/molecules/Sidebar/Sidebar.js +5 -9
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +2 -2
- package/lib/context/global-context.js +1 -8
- package/lib/dev/DevContextMentionInput.js +1 -3
- package/lib/hooks/index.js +1 -2
- package/lib/hooks/useChatManager/useChatManager.js +78 -274
- package/lib/hooks/useChatMessages/useChatMessages.js +1 -14
- package/lib/hooks/useEntitySearch.js +129 -74
- package/lib/hooks/useMentionAllowedTypes.js +1 -11
- package/lib/hooks/useMentionPopover.js +2 -3
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +10 -22
- package/lib/hooks/useProjectSearch.js +28 -4
- package/lib/hooks/useProjectSummaryConfig.js +18 -103
- package/lib/hooks/useRecentClientsSearch.js +34 -4
- package/lib/lang/br/index.js +1 -23
- package/lib/lang/en/index.js +1 -23
- package/lib/lang/es/index.js +1 -23
- package/lib/lang/fr/index.js +1 -23
- package/lib/services/maia/Agents/getAgents.js +91 -68
- package/lib/services/maia/Chats/getChatMessages.js +3 -11
- package/lib/services/maia/Chats/getChatsByUserId.js +2 -10
- package/lib/services/maia/Orchestrator/orchestrator.js +9 -27
- package/lib/services/maia/index.js +2 -4
- package/lib/services/utils/mapChatMessages.js +8 -18
- package/lib/services/utils/validateIsMaia.js +2 -2
- package/lib/types/Chat.js +1 -1
- package/lib/types/agent.js +1 -1
- package/lib/utils/hitlAnalytics.js +3 -3
- package/package.json +1 -1
- package/lib/hooks/useContextPinPopover.js +0 -235
- package/lib/hooks/useRecentContexts.js +0 -84
- package/lib/services/maia/RecentContexts/getRecentContexts.js +0 -51
- package/lib/services/maia/RecentContexts/index.js +0 -6
- package/lib/types/Hitl.js +0 -2
|
@@ -159,10 +159,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
159
159
|
if (currentOption === options.myAgents && window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
|
|
160
160
|
return options.myAgents;
|
|
161
161
|
}
|
|
162
|
-
|
|
163
|
-
// El orchestrator (MAIA) muestra su home con FAQs/acciones frecuentes; el resto de
|
|
164
|
-
// los global specialists (clones globales no-maiaker) siguen yendo directo al chat.
|
|
165
|
-
if (isGlobalSpecialist && !isMaiaker && (agent === null || agent === void 0 ? void 0 : agent.type) !== 'orchestrator' && currentOption === options.home) {
|
|
162
|
+
if (isGlobalSpecialist && !isMaiaker && currentOption === options.home) {
|
|
166
163
|
return options.chat;
|
|
167
164
|
}
|
|
168
165
|
var shouldShowProjectSelector = currentOption !== options.chat && isProjectSpecialist && !project;
|
|
@@ -174,9 +171,9 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
174
171
|
return options.clientSelector;
|
|
175
172
|
}
|
|
176
173
|
return currentOption;
|
|
177
|
-
}, [currentOption, project, client, isMAIA, agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.name
|
|
174
|
+
}, [currentOption, project, client, isMAIA, agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.name]);
|
|
178
175
|
var isMaiakerAgentSelected = useMemo(function () {
|
|
179
|
-
return
|
|
176
|
+
return isMAIA && (agent === null || agent === void 0 ? void 0 : agent.entity) === 'global' && (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' && /(maiaker|marketplace)/i.test((agent === null || agent === void 0 ? void 0 : agent.name) || '');
|
|
180
177
|
}, [isMAIA, agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.type, agent === null || agent === void 0 ? void 0 : agent.name]);
|
|
181
178
|
var sidebarAgentsNavActive = useMemo(function () {
|
|
182
179
|
if (computedCurrentOption === options.myAgents) return 'myAgents';
|
|
@@ -187,7 +184,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
187
184
|
/* Reactivar con la fila “Mis agentes” en Sidebar: myAgentsCount prop
|
|
188
185
|
const sidebarMyAgentsCount = useMemo(() => {
|
|
189
186
|
return agents.data.filter(
|
|
190
|
-
a => !(a.type === '
|
|
187
|
+
a => !(a.type === 'clone' && a.entity === 'global' && /(maiaker|marketplace)/i.test(a.name || ''))
|
|
191
188
|
)
|
|
192
189
|
.length
|
|
193
190
|
}, [agents.data])
|
|
@@ -548,7 +545,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
548
545
|
case 0:
|
|
549
546
|
setHasError(false);
|
|
550
547
|
maiakerAgent = agents.data.find(function (a) {
|
|
551
|
-
return a.type === '
|
|
548
|
+
return a.type === 'clone' && a.entity === 'global';
|
|
552
549
|
});
|
|
553
550
|
if (maiakerAgent) {
|
|
554
551
|
_context2.next = 5;
|
|
@@ -557,7 +554,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
557
554
|
_context2.prev = 1;
|
|
558
555
|
_context2.next = 2;
|
|
559
556
|
return fetchMaia({
|
|
560
|
-
path: "agents?agent_type=
|
|
557
|
+
path: "agents?agent_type=clone&lang=".concat(mapCORLang(i18n.language)),
|
|
561
558
|
method: 'GET'
|
|
562
559
|
});
|
|
563
560
|
case 2:
|
|
@@ -567,7 +564,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
567
564
|
case 3:
|
|
568
565
|
data = _context2.sent;
|
|
569
566
|
maiakerAgent = (data.data || []).find(function (a) {
|
|
570
|
-
return a.type === '
|
|
567
|
+
return a.type === 'clone' && a.entity === 'global';
|
|
571
568
|
});
|
|
572
569
|
_context2.next = 5;
|
|
573
570
|
break;
|
|
@@ -602,10 +599,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
602
599
|
selectFirstAgent(agentId);
|
|
603
600
|
}
|
|
604
601
|
}, [agent === null || agent === void 0 ? void 0 : agent.id, removeAgent, selectFirstAgent]);
|
|
605
|
-
|
|
606
|
-
// El footer (input) se oculta solo en el home marketplace de Maiaker (browse de agentes).
|
|
607
|
-
// El home del orchestrator sí permite escribir, así que mantiene el footer.
|
|
608
|
-
var hideFooterOnMaiakerMarketplaceHome = computedCurrentOption === options.home && isMaiakerAgentSelected && (agent === null || agent === void 0 ? void 0 : agent.type) !== 'orchestrator';
|
|
602
|
+
var hideFooterOnMaiakerMarketplaceHome = computedCurrentOption === options.home && isMaiakerAgentSelected;
|
|
609
603
|
var modalPanel = /*#__PURE__*/_jsxs(_Fragment, {
|
|
610
604
|
children: [validateAccessByFeature(section) && !isFloating ? /*#__PURE__*/_jsx(Sidebar, {
|
|
611
605
|
onGoToChat: goToChat,
|
|
@@ -709,4 +703,4 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
709
703
|
}), /*#__PURE__*/_jsx(Snackbar, {})]
|
|
710
704
|
}), selector);
|
|
711
705
|
};
|
|
712
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsIkNoYXRBSUNvbnRlbnQiLCJidWlsZEhhbmRsZXJzIiwib3B0aW9ucyIsIlNpZGViYXIiLCJ1c2VHZXRBZ2VudHMiLCJ1c2VHbG9iYWxDb250ZXh0IiwiQ2hhdEFJTW9kYWxIZWFkZXIiLCJTbmFja2JhciIsIlByb2plY3RTdW1tYXJ5Q29udGVudCIsIkFibUFnZW50TW9kYWwiLCJTRUNUSU9OUyIsIlNDQ0FJTUNvbnRlbnQiLCJTQ0NBSU1Db250ZW50V3JhcHBlciIsIlNDQ0FJTVdyYXBwZXIiLCJnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJ2YWxpZGF0ZUlzTWFpYSIsInVzZUZhcXNTdG9yZSIsImZldGNoTWFpYSIsIm1hcENPUkxhbmciLCJFVkVOVFMiLCJ1c2VFdmVudCIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIklEX01PREFMX0NIQVRfQUdFTlQiLCJ2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSIsInNlY3Rpb24iLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiQ2hhdEFJTW9kYWwiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfdXNlciRwZXJtaXNzaW9uczIiLCJfdXNlciRwZXJtaXNzaW9uczMiLCJfYWdlbnRzJGRhdGEiLCJoYW5kbGVDbG9zZSIsInVzZXIiLCJfdXNlVHJhbnNsYXRpb24iLCJhYm1BZ2VudCIsImkxOG4iLCJhbXBsaXR1ZEV2ZW50IiwiaGFuZGxlQ2xvc2VNb2RhbCIsImdldFN0YXRlIiwiY2xlYXJGYXFzIiwiX3VzZVN0YXRlIiwibWVzc2FnZSIsImF0dGFjaG1lbnRzIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidXNlckluaXRpYWxNZXNzYWdlIiwic2V0VXNlckluaXRpYWxNZXNzYWdlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpbml0aWFsQ2hhdElkIiwic2V0SW5pdGlhbENoYXRJZCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwibmV3Q2hhdEtleSIsInNldE5ld0NoYXRLZXkiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNlbmRNZXNzYWdlRnVuY3Rpb24iLCJzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwic2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbiIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImlzU3RyZWFtaW5nIiwic2V0SXNTdHJlYW1pbmciLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInJlZmV0Y2hDaGF0cyIsInNldFJlZmV0Y2hDaGF0cyIsIl91c2VTdGF0ZTE1IiwiaG9tZSIsIl91c2VTdGF0ZTE2IiwiY3VycmVudE9wdGlvbiIsInNldEN1cnJlbnRPcHRpb24iLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwiaGFzRXJyb3IiLCJzZXRIYXNFcnJvciIsImhhbmRsZXJzIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsInNpZGViYXJIYXNFcnJvciIsInNldFNpZGViYXJIYXNFcnJvciIsInJlc2V0U2VsZWN0ZWRDaGF0UmVmIiwibGFuZyIsImxhbmd1YWdlIiwibG9jYWxlIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RBZ2VudCIsImFnZW50IiwicHJvamVjdCIsImNsaWVudCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsImJhbm5lckVudHJ5RmFxIiwic2V0VGFzayIsInRvb2x0aXBaSW5kZXgiLCJfdXNlR2V0QWdlbnRzIiwiaGFuZGxlR29Ib21lIiwiYWdlbnRzIiwibG9hZGluZyIsImxvYWRpbmdNb3JlIiwiYWdlbnRFcnJvciIsImVycm9yIiwiaGFuZGxlR2V0QWdlbnRzIiwibG9hZE1vcmVBZ2VudHMiLCJhZGRBZ2VudCIsInJlbW92ZUFnZW50IiwidXBkYXRlQWdlbnQiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2VsZWN0Rmlyc3RBZ2VudCIsInNvcnRBZ2VudHNMaXN0IiwiaXNNQUlBIiwidXNlckhhc1Blcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjcmVhdGUiLCJlZGl0IiwiY29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiZW50aXR5IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsInRlc3QiLCJuYW1lIiwibXlBZ2VudHMiLCJ0eXBlIiwiY2hhdCIsInNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IiLCJzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IiLCJwcm9qZWN0U2VsZWN0b3IiLCJjbGllbnRTZWxlY3RvciIsImlzTWFpYWtlckFnZW50U2VsZWN0ZWQiLCJzaWRlYmFyQWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzRmV0Y2hlZFJlZiIsInNlbGVjdG9yIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY29uY2F0IiwiX3VzZVN0YXRlMjEiLCJfYmFubmVyRW50cnlGYXEkZmFxVGkiLCJmYXFUaXRsZSIsInRyaW0iLCJfdXNlU3RhdGUyMiIsImxheW91dE1vZGUiLCJzZXRMYXlvdXRNb2RlIiwiZXhwYW5kZWQiLCJpc0Zsb2F0aW5nIiwiY29udGVudFdyYXBwZXJSZWYiLCJfdXNlU3RhdGUyMyIsIl91c2VTdGF0ZTI0IiwiZHJhZ1Bvc2l0aW9uIiwic2V0RHJhZ1Bvc2l0aW9uIiwiX3VzZUZsb2F0aW5nUGFuZWxEcmFnIiwidGlsdE1vdGlvbiIsInN0YXJ0UG9pbnRlclRyYWNraW5nIiwic2FtcGxlUG9pbnRlck1vdmUiLCJlbmRQb2ludGVyVHJhY2tpbmciLCJkcmFnU3RhdGVSZWYiLCJjbGFtcERyYWdQb3NpdGlvbiIsIngiLCJ5IiwiY29udGVudFdyYXBwZXIiLCJjdXJyZW50IiwiX2NvbnRlbnRXcmFwcGVyJGdldEJvIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJvZmZzZXQiLCJtYXhYIiwiTWF0aCIsIm1heCIsImlubmVyV2lkdGgiLCJtYXhZIiwiaW5uZXJIZWlnaHQiLCJtaW4iLCJwcmV2IiwicGFkIiwiaGFuZGxlRHJhZ0VuZCIsImV2ZW50IiwiX2RyYWdTdGF0ZVJlZiRjdXJyZW50IiwicG9pbnRlcklkIiwiYm9keSIsInN0eWxlIiwidXNlclNlbGVjdCIsImN1cnNvciIsImhhbmRsZURyYWdNb3ZlIiwiZHJhZ1N0YXRlIiwiY2xpZW50WCIsImNsaWVudFkiLCJuZXh0UG9zaXRpb24iLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJlc29sdmVkRHJhZ1Bvc2l0aW9uIiwiaGFuZGxlRHJhZ1N0YXJ0IiwiYnV0dG9uIiwidGFyZ2V0IiwiY2xvc2VzdCIsInJlY3QiLCJpbml0aWFsUG9zaXRpb24iLCJsZWZ0IiwidG9wIiwicG9pbnRlck9mZnNldFgiLCJwb2ludGVyT2Zmc2V0WSIsImN1cnJlbnRUYXJnZXQiLCJzZXRQb2ludGVyQ2FwdHVyZSIsInByZXZlbnREZWZhdWx0IiwiYWlDaGF0RHJhZ2dhYmxlIiwic3RhcnRDaGF0IiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiY29udGV4dERhdGEiLCJfb2JqZWN0U3ByZWFkIiwibGVuZ3RoIiwiYmFubmVyRmFxQXV0b1NlbnRSZWYiLCJfYmFubmVyRW50cnlGYXEkZmFxVGkyIiwiZW50aXR5UmVhZHkiLCJCb29sZWFuIiwiaWQiLCJ1bmRlZmluZWQiLCJnb1RvQ2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwic2VsZWN0ZWRBZ2VudCIsImRhdGEiLCJmaW5kIiwiYWdlbnRJdGVtIiwiYWdlbnRJZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZVNlbmRNZXNzYWdlUmVhZHkiLCJzZW5kTWVzc2FnZSIsInN0b3BHZW5lcmF0aW9uIiwic3RyZWFtaW5nIiwid3JpdGluZyIsImhhbmRsZVNlbmRNZXNzYWdlIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsInByb2plY3RfZGVsZXRlZCIsImhhbmRsZVJlc2V0Q2hhdCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsInN0b3AiLCJoYW5kbGVCYWNrIiwib25NZXJnZUNyZWF0ZWRBZ2VudCIsImV2dCIsIl9yZWYzIiwiZGV0YWlsIiwibmV4dEFnZW50IiwibmF2aWdhdGVIb21lIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvblN5bmNFZGl0ZWRBZ2VudCIsIl9yZWY0Iiwib3BlbkNoYXRWaWV3Iiwib3Blbk5ld0NoYXRXaXRoQWdlbnQiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJGNsaWVudCIsIl9yZWY1IiwidGFzayIsInNob3dOZXdDaGF0IiwiaGlkZUhlYWRlckFnZW50U2VsZWN0b3IiLCJzaG93QmFja0J1dHRvbiIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTIiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQyIiwiYSIsInBhdGgiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImFicnVwdCIsImhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzIiwiaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSIsIm1vZGFsUGFuZWwiLCJjaGlsZHJlbiIsIm9uR29Ub0NoYXQiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJoYW5kbGVTZXRSZWZldGNoQ2hhdHMiLCJhZ2VudHNOYXZBY3RpdmUiLCJmbG9hdGluZyIsIm9uTGF5b3V0TW9kZUNoYW5nZSIsImRyYWdnYWJsZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnTW92ZSIsIm9uRHJhZ0VuZCIsImhhc01vcmUiLCJoYXNfbW9yZSIsIm9uQWdlbnRVcGRhdGUiLCJoaWRlQWdlbnRTZWxlY3RvciIsIm9uQmFjayIsInJlZnMiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJsb2FkaW5nQWdlbnRzIiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25SZXN0YXJ0U3VtbWFyeSIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiY2hhdElkIiwic2hvd0ZhcXMiLCJyZWYiLCJjcmVhdGVQb3J0YWwiLCJlbGV2YXRlZCIsInRpbHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvQ2hhdEFJTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbm8tdXNlbGVzcy1mcmFnbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7XG4gIFJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICBQb2ludGVyRXZlbnQgYXMgUmVhY3RQb2ludGVyRXZlbnQsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBNQUlBRXJyb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBRXJyb3InXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcblxuaW1wb3J0IHsgQ2hhdEFJQ29udGVudCB9IGZyb20gJy4uL0NoYXRBSUNvbnRlbnQnXG5pbXBvcnQgeyBidWlsZEhhbmRsZXJzLCBvcHRpb25zIH0gZnJvbSAnLi9jb25zdGFudHMnXG5pbXBvcnQgeyBTaWRlYmFyIH0gZnJvbSAnLi4vU2lkZWJhcidcbmltcG9ydCB7IHVzZUdldEFnZW50cyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50cydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgQ2hhdEFJTW9kYWxIZWFkZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxIZWFkZXIvQ2hhdEFpTW9kYWxIZWFkZXInXG5pbXBvcnQgeyBTbmFja2JhciB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9TbmFja0Jhci9TbmFja2JhcidcbmltcG9ydCB7IFByb2plY3RTdW1tYXJ5Q29udGVudCB9IGZyb20gJy4uL1Byb2plY3RTdW1tYXJ5Q29udGVudCdcbmltcG9ydCB7IEFibUFnZW50TW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtQWdlbnRNb2RhbC9BYm1BZ2VudE1vZGFsJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgU0NDQUlNQ29udGVudCwgU0NDQUlNQ29udGVudFdyYXBwZXIsIFNDQ0FJTVdyYXBwZXIgfSBmcm9tICcuL0NoYXRBSU1vZGFsLnN0eWxlcydcbmltcG9ydCB7IGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCwgTWFpYUNoYXRNb2RhbExheW91dE1vZGUgfSBmcm9tICcuL2xheW91dCdcbmltcG9ydCB7IEZsb2F0aW5nUGFuZWxNb3Rpb24sIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdCB9IGZyb20gJy4vZmxvYXRpbmdQYW5lbE1vdGlvbidcbmltcG9ydCB7IENoYXRBaU1vZGFsRm9vdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsRm9vdGVyJ1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHsgdXNlRmFxc1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlRmFxc1N0b3JlJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxudHlwZSBDaGF0QUlNb2RhbFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgaGFuZGxlQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIHBhcmVudFJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbn1cblxuZXhwb3J0IGNvbnN0IElEX01PREFMX0NIQVRfQUdFTlQgPSAnbW9kYWxzLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnQnXG5cbmNvbnN0IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlID0gKHNlY3Rpb246IHN0cmluZykgPT4ge1xuICBpZiAoc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8IHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBpZiAoKHNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBzZWN0aW9uID09PSAnY2xpZW50JyB8fCBzZWN0aW9uID09PSAndGFzaycpICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTW9kYWwgPSAoeyBoYW5kbGVDbG9zZSB9OiBDaGF0QUlNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdXNlRmFxc1N0b3JlLmdldFN0YXRlKCkuY2xlYXJGYXFzKClcbiAgICBoYW5kbGVDbG9zZT8uKClcbiAgfSwgW2hhbmRsZUNsb3NlXSlcbiAgY29uc3QgW3VzZXJJbml0aWFsTWVzc2FnZSwgc2V0VXNlckluaXRpYWxNZXNzYWdlXSA9IHVzZVN0YXRlPHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXVxuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW11cbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIH0+KHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICBhdHRhY2htZW50czogW10sXG4gIH0pXG4gIGNvbnN0IFtpbml0aWFsQ2hhdElkLCBzZXRJbml0aWFsQ2hhdElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtuZXdDaGF0S2V5LCBzZXROZXdDaGF0S2V5XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uXSA9IHVzZVN0YXRlPFxuICAgIHwgKChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkKVxuICAgIHwgbnVsbFxuICA+KG51bGwpXG4gIGNvbnN0IFtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLCBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSA9IHVzZVN0YXRlPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc1N0cmVhbWluZywgc2V0SXNTdHJlYW1pbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBbcmVmZXRjaENoYXRzLCBzZXRSZWZldGNoQ2hhdHNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjdXJyZW50T3B0aW9uLCBzZXRDdXJyZW50T3B0aW9uXSA9IHVzZVN0YXRlKG9wdGlvbnMuaG9tZSlcbiAgY29uc3QgW2hhc0Vycm9yLCBzZXRIYXNFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkSGFuZGxlcnMoc2V0Q3VycmVudE9wdGlvbiwgc2V0SGFzRXJyb3IpLCBbXSlcbiAgY29uc3QgW3NpZGViYXJIYXNFcnJvciwgc2V0U2lkZWJhckhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCByZXNldFNlbGVjdGVkQ2hhdFJlZiA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBsYW5nID0gaTE4bi5sYW5ndWFnZSA9PT0gJ2JyJyA/ICdwdC1icicgOiBpMThuLmxhbmd1YWdlXG5cbiAgbW9tZW50LmxvY2FsZShsYW5nKVxuXG4gIGNvbnN0IHtcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBzZWN0aW9uLFxuICAgIGFnZW50LFxuICAgIHByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFByb2plY3QsXG4gICAgYmFubmVyRW50cnlGYXEsXG4gICAgc2V0VGFzayxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIC8vIFotaW5kZXggcGFyYSB0b29sdGlwcyBlbiBzZWN0aW9uICd0YXNrJyAobW9kYWwgZmxvdGFudGUgZWxldmFkbylcbiAgY29uc3QgdG9vbHRpcFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTUwMCwgJ292ZXJsYXknKVxuXG4gIGNvbnN0IHtcbiAgICBhZ2VudHMsXG4gICAgbG9hZGluZyxcbiAgICBsb2FkaW5nTW9yZSxcbiAgICBlcnJvcjogYWdlbnRFcnJvcixcbiAgICBoYW5kbGVHZXRBZ2VudHMsXG4gICAgbG9hZE1vcmVBZ2VudHMsXG4gICAgYWRkQWdlbnQsXG4gICAgcmVtb3ZlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgICBzZWxlY3RGaXJzdEFnZW50LFxuICAgIHNvcnRBZ2VudHNMaXN0LFxuICB9ID0gdXNlR2V0QWdlbnRzKHsgc2VsZWN0QWdlbnQsIHNlY3Rpb24sIGFnZW50LCBoYW5kbGVHb0hvbWU6IGhhbmRsZXJzLmhvbWUgfSlcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcblxuICBjb25zdCB1c2VySGFzUGVybWlzc2lvbnMgPVxuICAgICh1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5jcmVhdGUgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmVkaXQgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmRlbGV0ZSkgJiZcbiAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gIGNvbnN0IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGlzR2xvYmFsU3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJ1xuICAgIGNvbnN0IGlzUHJvamVjdFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09IG51bGwpXG4gICAgY29uc3QgaXNDbGllbnRTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnXG4gICAgY29uc3QgaXNNYWlha2VyID0gaXNHbG9iYWxTcGVjaWFsaXN0ICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15QWdlbnRzXG4gICAgfVxuXG4gICAgLy8gRWwgb3JjaGVzdHJhdG9yIChNQUlBKSBtdWVzdHJhIHN1IGhvbWUgY29uIEZBUXMvYWNjaW9uZXMgZnJlY3VlbnRlczsgZWwgcmVzdG8gZGVcbiAgICAvLyBsb3MgZ2xvYmFsIHNwZWNpYWxpc3RzIChjbG9uZXMgZ2xvYmFsZXMgbm8tbWFpYWtlcikgc2lndWVuIHllbmRvIGRpcmVjdG8gYWwgY2hhdC5cbiAgICBpZiAoaXNHbG9iYWxTcGVjaWFsaXN0ICYmICFpc01haWFrZXIgJiYgYWdlbnQ/LnR5cGUgIT09ICdvcmNoZXN0cmF0b3InICYmIGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2hhdFxuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNQcm9qZWN0U3BlY2lhbGlzdCAmJiAhcHJvamVjdFxuICAgIGNvbnN0IHNob3VsZFNob3dDbGllbnRTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc0NsaWVudFNwZWNpYWxpc3QgJiYgIWNsaWVudFxuXG4gICAgaWYgKHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnByb2plY3RTZWxlY3RvclxuICAgIH1cbiAgICBpZiAoc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jbGllbnRTZWxlY3RvclxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudE9wdGlvblxuICB9LCBbY3VycmVudE9wdGlvbiwgcHJvamVjdCwgY2xpZW50LCBpc01BSUEsIGFnZW50Py5lbnRpdHksIGFnZW50Py5uYW1lLCBhZ2VudD8udHlwZV0pXG5cbiAgY29uc3QgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyB8fFxuICAgICAgKGlzTUFJQSAmJlxuICAgICAgICBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJyAmJlxuICAgICAgICBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJlxuICAgICAgICAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhZ2VudD8ubmFtZSB8fCAnJykpLFxuICAgIFtpc01BSUEsIGFnZW50Py5lbnRpdHksIGFnZW50Py50eXBlLCBhZ2VudD8ubmFtZV1cbiAgKVxuXG4gIGNvbnN0IHNpZGViYXJBZ2VudHNOYXZBY3RpdmUgPSB1c2VNZW1vKCgpOiAnbWFpYWtlcicgfCAnbXlBZ2VudHMnIHwgbnVsbCA9PiB7XG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cykgcmV0dXJuICdteUFnZW50cydcbiAgICBpZiAoaXNNYWlha2VyQWdlbnRTZWxlY3RlZCkgcmV0dXJuICdtYWlha2VyJ1xuICAgIHJldHVybiBudWxsXG4gIH0sIFtjb21wdXRlZEN1cnJlbnRPcHRpb24sIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRdKVxuXG4gIC8qIFJlYWN0aXZhciBjb24gbGEgZmlsYSDigJxNaXMgYWdlbnRlc+KAnSBlbiBTaWRlYmFyOiBteUFnZW50c0NvdW50IHByb3BcbiAgY29uc3Qgc2lkZWJhck15QWdlbnRzQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gYWdlbnRzLmRhdGEuZmlsdGVyKFxuICAgICAgYSA9PiAhKGEudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgKGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYS5uYW1lIHx8ICcnKSkpXG4gICAgKVxuICAgICAgLmxlbmd0aFxuICB9LCBbYWdlbnRzLmRhdGFdKVxuICAqL1xuXG4gIGNvbnN0IGFnZW50c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtJRF9NT0RBTF9DSEFUX0FHRU5UfWApXG5cbiAgLy8gVGFzayBwYW5lbCB5IGJhbm5lciBkZSBwcm95ZWN0byBhYnJlbiBlbiBmbG90YW50ZSBwb3IgZGVmYXVsdCAobm8gdGFwYXIgZWwgY29udGV4dG8gZGV0csOhcykuXG4gIC8vIEVsIHVzdWFyaW8gcHVlZGUgY2FtYmlhciBhIHNpZGViYXIvZnVsbHNjcmVlbiBkZXNkZSBsb3MgY29udHJvbGVzIGRlbCBtb2RhbC5cbiAgY29uc3QgW2xheW91dE1vZGUsIHNldExheW91dE1vZGVdID0gdXNlU3RhdGU8TWFpYUNoYXRNb2RhbExheW91dE1vZGU+KCgpID0+IHtcbiAgICBpZiAoc2VjdGlvbiA9PT0gJ3Rhc2snKSByZXR1cm4gJ2Zsb2F0aW5nJ1xuICAgIGlmIChiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGU/LnRyaW0oKSkgcmV0dXJuICdmbG9hdGluZydcbiAgICByZXR1cm4gJ3NpZGViYXInXG4gIH0pXG4gIGNvbnN0IGV4cGFuZGVkID0gbGF5b3V0TW9kZSA9PT0gJ2Z1bGxzY3JlZW4nXG4gIGNvbnN0IGlzRmxvYXRpbmcgPSBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbZHJhZ1Bvc2l0aW9uLCBzZXREcmFnUG9zaXRpb25dID0gdXNlU3RhdGU8eyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyB0aWx0TW90aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZywgc2FtcGxlUG9pbnRlck1vdmUsIGVuZFBvaW50ZXJUcmFja2luZyB9ID1cbiAgICB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQoaXNGbG9hdGluZylcbiAgY29uc3QgZHJhZ1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBwb2ludGVySWQ6IG51bWJlclxuICAgIG9mZnNldFg6IG51bWJlclxuICAgIG9mZnNldFk6IG51bWJlclxuICB9IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGFtcERyYWdQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgIHJldHVybiB7IHgsIHkgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBvZmZzZXQgPSAxNlxuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lcldpZHRoIC0gd2lkdGggLSBvZmZzZXQpXG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVySGVpZ2h0IC0gaGVpZ2h0IC0gb2Zmc2V0KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IE1hdGgubWluKE1hdGgubWF4KHgsIG9mZnNldCksIG1heFgpLFxuICAgICAgeTogTWF0aC5taW4oTWF0aC5tYXgoeSwgb2Zmc2V0KSwgbWF4WSksXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbihwcmV2LngsIHByZXYueSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgICBjb25zdCB4ID0gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZFxuICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgICB9KVxuICB9LCBbbGF5b3V0TW9kZSwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZW5kUG9pbnRlclRyYWNraW5nKClcbiAgICAgIGlmIChkcmFnU3RhdGVSZWYuY3VycmVudD8ucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJydcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJydcbiAgICB9LFxuICAgIFtlbmRQb2ludGVyVHJhY2tpbmddXG4gIClcblxuICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBkcmFnU3RhdGUgPSBkcmFnU3RhdGVSZWYuY3VycmVudFxuICAgICAgaWYgKCFkcmFnU3RhdGUgfHwgZHJhZ1N0YXRlLnBvaW50ZXJJZCAhPT0gZXZlbnQucG9pbnRlcklkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzYW1wbGVQb2ludGVyTW92ZShldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuXG4gICAgICBjb25zdCBuZXh0UG9zaXRpb24gPSBjbGFtcERyYWdQb3NpdGlvbihldmVudC5jbGllbnRYIC0gZHJhZ1N0YXRlLm9mZnNldFgsIGV2ZW50LmNsaWVudFkgLSBkcmFnU3RhdGUub2Zmc2V0WSlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgICBpZiAocHJldiAmJiBwcmV2LnggPT09IG5leHRQb3NpdGlvbi54ICYmIHByZXYueSA9PT0gbmV4dFBvc2l0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0UG9zaXRpb25cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIHNhbXBsZVBvaW50ZXJNb3ZlXVxuICApXG5cbiAgY29uc3QgcmVzb2x2ZWREcmFnUG9zaXRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBpZiAoZHJhZ1Bvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgY29uc3QgeCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZCA6IHBhZFxuICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbih4LCBwYWQpXG4gIH0sIFtsYXlvdXRNb2RlLCBkcmFnUG9zaXRpb24sIGNsYW1wRHJhZ1Bvc2l0aW9uXSlcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFpc0Zsb2F0aW5nIHx8IGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoJ2J1dHRvbiwgYSwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtyb2xlPVwiYnV0dG9uXCJdLCBbZGF0YS1uby1kcmFnPVwidHJ1ZVwiXScpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250ZW50V3JhcHBlciA9IGNvbnRlbnRXcmFwcGVyUmVmLmN1cnJlbnRcbiAgICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlY3QgPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgaW5pdGlhbFBvc2l0aW9uID0gcmVzb2x2ZWREcmFnUG9zaXRpb24gPz8gY2xhbXBEcmFnUG9zaXRpb24ocmVjdC5sZWZ0LCByZWN0LnRvcClcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRYID0gZXZlbnQuY2xpZW50WCAtIGluaXRpYWxQb3NpdGlvbi54XG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WSA9IGV2ZW50LmNsaWVudFkgLSBpbml0aWFsUG9zaXRpb24ueVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24oaW5pdGlhbFBvc2l0aW9uKVxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgIHBvaW50ZXJJZDogZXZlbnQucG9pbnRlcklkLFxuICAgICAgICBvZmZzZXRYOiBwb2ludGVyT2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WTogcG9pbnRlck9mZnNldFksXG4gICAgICB9XG5cbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnbm9uZSdcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJ1xuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0RHJhZ2dhYmxlKVxuICAgICAgc3RhcnRQb2ludGVyVHJhY2tpbmcoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgaXNGbG9hdGluZywgcmVzb2x2ZWREcmFnUG9zaXRpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nXVxuICApXG5cbiAgY29uc3Qgc3RhcnRDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmcsXG4gICAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2lkZWJhckhhc0Vycm9yKSB7XG4gICAgICAgIHNldFNpZGViYXJIYXNFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgJycsXG4gICAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyB8fCBbXSxcbiAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihtZW50aW9ucyAmJiBtZW50aW9ucy5sZW5ndGggPiAwID8geyBtZW50aW9ucyB9IDoge30pLFxuICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihzY0lkID8geyBzY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihjb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgYmFubmVyRmFxQXV0b1NlbnRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbnRpdHlSZWFkeSA9IHNlY3Rpb24gPT09ICdwcm9qZWN0JyA/IEJvb2xlYW4ocHJvamVjdD8uaWQpIDogc2VjdGlvbiA9PT0gJ2NsaWVudCcgPyBCb29sZWFuKGNsaWVudD8uaWQpIDogdHJ1ZVxuXG4gICAgaWYgKCFiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGU/LnRyaW0oKSB8fCBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50IHx8IGxvYWRpbmcgfHwgIWFnZW50Py5pZCB8fCAhZW50aXR5UmVhZHkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgc3RhcnRDaGF0KFxuICAgICAgYmFubmVyRW50cnlGYXEuZmFxVGl0bGUsXG4gICAgICBbXSxcbiAgICAgIGJhbm5lckVudHJ5RmFxLmZhcUlkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYmFubmVyRW50cnlGYXEuY29udGV4dERhdGFcbiAgICApXG4gIH0sIFtcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxSWQsXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlLFxuICAgIGJhbm5lckVudHJ5RmFxPy5jb250ZXh0RGF0YSxcbiAgICBsb2FkaW5nLFxuICAgIGFnZW50Py5pZCxcbiAgICBhZ2VudD8uZW50aXR5LFxuICAgIHByb2plY3Q/LmlkLFxuICAgIGNsaWVudD8uaWQsXG4gICAgc2VjdGlvbixcbiAgICBzdGFydENoYXQsXG4gIF0pXG5cbiAgY29uc3QgZ29Ub0NoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hhdDogYW55KSA9PiB7XG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgICBjb25zdCBzZWxlY3RlZEFnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhZ2VudEl0ZW0gPT4gYWdlbnRJdGVtLmlkID09PSBjaGF0LmFnZW50SWQpXG4gICAgICBpZiAoc2VsZWN0ZWRBZ2VudCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzZWxlY3RlZEFnZW50KVxuICAgICAgfVxuICAgICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgIH0sXG4gICAgW2hhbmRsZXJzLCBhZ2VudHMsIHNlbGVjdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHNlbmRNZXNzYWdlOiAoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZCxcbiAgICAgIHN0b3BHZW5lcmF0aW9uOiAoKSA9PiB2b2lkLFxuICAgICAgc3RyZWFtaW5nOiBib29sZWFuLFxuICAgICAgd3JpdGluZzogYm9vbGVhblxuICAgICkgPT4ge1xuICAgICAgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbigoKSA9PiBzZW5kTWVzc2FnZSlcbiAgICAgIHNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb24oKCkgPT4gc3RvcEdlbmVyYXRpb24pXG4gICAgICBzZXRJc1N0cmVhbWluZyhzdHJlYW1pbmcpXG4gICAgICBzZXRJc1dyaXRpbmcod3JpdGluZylcbiAgICB9LFxuICAgIFtdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChzaWRlYmFySGFzRXJyb3IpIHtcbiAgICAgICAgc2V0U2lkZWJhckhhc0Vycm9yKGZhbHNlKVxuICAgICAgfVxuICAgICAgaWYgKHNlbmRNZXNzYWdlRnVuY3Rpb24gJiYgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgICAgc2VuZE1lc3NhZ2VGdW5jdGlvbihtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydENoYXQobWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlRnVuY3Rpb24sIHN0YXJ0Q2hhdCwgY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzaWRlYmFySGFzRXJyb3JdXG4gIClcblxuICBjb25zdCBoYW5kbGVHb0hvbWUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gU2kgZXN0YW1vcyBlbiB1bmEgY29udmVyc2FjacOzbiB5IHZhbW9zIGEgaG9tZSwgcmVzZXRlYXIgaW5pdGlhbENoYXRJZCB5IGluY3JlbWVudGFyIG5ld0NoYXRLZXlcbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uPy4oKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgLy8gTm8gYm9ycmFyIGVsIGNsaWVudGUgc2kgZXMgYWdlbnRlIGRlIGNsaWVudGVzIChpZ3VhbCBxdWUgZWwgcHJveWVjdG8gc2UgbWFudGllbmUpXG4gICAgICBpZiAoYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICAgIGlmIChzZWN0aW9uICE9PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgICghYWdlbnQgfHwgYWdlbnQ/LmlzX2RlbGV0ZWQgfHwgYWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHwgYWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8IGFnZW50Py5wcm9qZWN0X2RlbGV0ZWQpICYmXG4gICAgICBhZ2VudHMuZGF0YS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVswXSlcbiAgICB9XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIG9wdGlvbnMuY2hhdCxcbiAgICBjdXJyZW50T3B0aW9uLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBhZ2VudCxcbiAgICBhZ2VudHMsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFRhc2ssXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgICBzZWN0aW9uLFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIGhhbmRsZUdvSG9tZSgpXG4gIH0sIFtoYW5kbGVHb0hvbWVdKVxuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiIGRlbCBoZWFkZXIgKHNvbG8gYWdlbnRlcyBjbG9uZSk6XG4gIC8vIC0gQ29uIGNvbnZlcnNhY2nDs24gaW5pY2lhZGE6IGluaWNpYSB1bmEgbnVldmEgY29udmVyc2FjacOzbiB5IHZ1ZWx2ZSBhbCBob21lICh0b2RhcyBsYXMgc2VjY2lvbmVzKS5cbiAgLy8gLSBFbiBlbCBob21lIChGQVFzL0ZVQSk6IHZ1ZWx2ZSBhbCBzZWxlY3RvciBkZSBwcm95ZWN0b3MvY2xpZW50ZXMgbGltcGlhbmRvIGxhIGVudGl0eSBzZWxlY2Npb25hZGEuXG4gIGNvbnN0IGhhbmRsZUJhY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICBoYW5kbGVSZXNldENoYXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIC8vIEVuIHNlY3Rpb24gJ3Rhc2snIHByZXNlcnZhciBwcm9qZWN0L2NsaWVudDsgZW4gb3RyYXMgc2VjY2lvbmVzLCBpciBhbCBzZWxlY3RvciBsaW1waWFuZG8gcHJvamVjdC9jbGllbnRcbiAgICBpZiAoc2VjdGlvbiAhPT0gJ3Rhc2snKSB7XG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgfVxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzZWN0aW9uLCBoYW5kbGVSZXNldENoYXQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFza10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWFnZW50c0ZldGNoZWRSZWYuY3VycmVudCkge1xuICAgICAgYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgaGFuZGxlR2V0QWdlbnRzKClcbiAgICB9XG4gIH0sIFtoYW5kbGVHZXRBZ2VudHNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25NZXJnZUNyZWF0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKG5leHRBZ2VudD8uaWQpIHtcbiAgICAgICAgYWRkQWdlbnQobmV4dEFnZW50LCB7IG5hdmlnYXRlSG9tZTogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIG9uTWVyZ2VDcmVhdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIH1cbiAgfSwgW2FkZEFnZW50XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uU3luY0VkaXRlZEFnZW50ID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnQ6IG5leHRBZ2VudCB9ID0gKGV2dCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAoIW5leHRBZ2VudD8uaWQpIHJldHVyblxuICAgICAgdXBkYXRlQWdlbnQobmV4dEFnZW50KVxuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gbmV4dEFnZW50LmlkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KG5leHRBZ2VudClcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCBvblN5bmNFZGl0ZWRBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCBvblN5bmNFZGl0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFt1cGRhdGVBZ2VudCwgc2VsZWN0QWdlbnQsIGFnZW50Py5pZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuQ2hhdFZpZXcgPSAoKSA9PiB7XG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5jaGF0KVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1jaGF0LXZpZXcnLCBvcGVuQ2hhdFZpZXcpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1jaGF0LXZpZXcnLCBvcGVuQ2hhdFZpZXcpXG4gICAgfVxuICB9LCBbXSlcblxuICAvKiogTWlzbW8gZmx1am8gcXVlIENoYXRBSU15QWdlbnRzLmhhbmRsZVVzZUFnZW50ICsgb25CYWNrIChoYW5kbGVycy5ob21lKS5cbiAgICogIEVsIGRldGFpbCBwdWVkZSB0cmFlciBvcGNpb25hbG1lbnRlIGBwcm9qZWN0YCwgYGNsaWVudGAsIGB0YXNrYCBwYXJhIGZsb3dzIHF1ZVxuICAgKiAgbmVjZXNpdGFuIHByZXNlcnZhciBjb250ZXh0byAoZWouIHNlbGVjdG9yIGRlIGFnZW50ZXMgZGVzZGUgdW5hIHRhcmVhKS4gU2kgbm8gdmllbmVuLFxuICAgKiAgc2UgbWFudGllbmUgZWwgY29tcG9ydGFtaWVudG8gb3JpZ2luYWwgZGUgbGltcGlhciBwcm9qZWN0L2NsaWVudC4gKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuTmV3Q2hhdFdpdGhBZ2VudCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudCBhcyBDdXN0b21FdmVudDx7XG4gICAgICAgIGFnZW50OiBBZ2VudFxuICAgICAgICBwcm9qZWN0PzogUHJvamVjdCB8IG51bGxcbiAgICAgICAgY2xpZW50PzogQ2xpZW50IHwgbnVsbFxuICAgICAgICB0YXNrPzogVGFzayB8IG51bGxcbiAgICAgIH0+XG4gICAgICBjb25zdCBuZXh0QWdlbnQgPSBkZXRhaWw/LmFnZW50XG4gICAgICBpZiAoIW5leHRBZ2VudCkgcmV0dXJuXG5cbiAgICAgIHNldFByb2plY3QoZGV0YWlsPy5wcm9qZWN0ID8/IG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihkZXRhaWw/LmNsaWVudCA/PyBudWxsKVxuICAgICAgaWYgKGRldGFpbD8udGFzayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNldFRhc2s/LihkZXRhaWwudGFzaylcbiAgICAgIH1cbiAgICAgIHNlbGVjdEFnZW50KG5leHRBZ2VudClcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLW5ldy1jaGF0LXdpdGgtYWdlbnQnLCBvcGVuTmV3Q2hhdFdpdGhBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLW5ldy1jaGF0LXdpdGgtYWdlbnQnLCBvcGVuTmV3Q2hhdFdpdGhBZ2VudClcbiAgICB9XG4gIH0sIFtzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrXSlcblxuICBjb25zdCBzaG93TmV3Q2hhdCA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0XG4gIGNvbnN0IGhpZGVIZWFkZXJBZ2VudFNlbGVjdG9yID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzXG4gIGNvbnN0IHNob3dCYWNrQnV0dG9uID1cbiAgICBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJlxuICAgIGFnZW50Py5lbnRpdHkgIT09ICdnbG9iYWwnICYmXG4gICAgIWhhc0Vycm9yICYmXG4gICAgIWxvYWRpbmcgJiZcbiAgICAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQgfHwgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIHNlY3Rpb24gIT09ICd0YXNrJykpXG4gIGNvbnN0IGhhbmRsZU9wZW5NYXJrZXRwbGFjZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15QWdlbnRzKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVHb1RvTWFpYWtlciA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBsZXQgbWFpYWtlckFnZW50ID0gYWdlbnRzLmRhdGEuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpXG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9b3JjaGVzdHJhdG9yJmxhbmc9JHttYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpfWAsXG4gICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhOiBBZ2VudCkgPT4gYS50eXBlID09PSAnb3JjaGVzdHJhdG9yJylcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZXRUYXNrPy4obnVsbClcbiAgICBzZWxlY3RBZ2VudChtYWlha2VyQWdlbnQpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgfSwgW2FnZW50cy5kYXRhLCBpMThuLmxhbmd1YWdlLCBzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrXSlcbiAgY29uc3QgaGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHMgPSB1c2VDYWxsYmFjayhcbiAgICAoYWdlbnRJZDogc3RyaW5nKSA9PiB7XG4gICAgICByZW1vdmVBZ2VudChhZ2VudElkKVxuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gYWdlbnRJZCkge1xuICAgICAgICBzZWxlY3RGaXJzdEFnZW50KGFnZW50SWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWdlbnQ/LmlkLCByZW1vdmVBZ2VudCwgc2VsZWN0Rmlyc3RBZ2VudF1cbiAgKVxuXG4gIC8vIEVsIGZvb3RlciAoaW5wdXQpIHNlIG9jdWx0YSBzb2xvIGVuIGVsIGhvbWUgbWFya2V0cGxhY2UgZGUgTWFpYWtlciAoYnJvd3NlIGRlIGFnZW50ZXMpLlxuICAvLyBFbCBob21lIGRlbCBvcmNoZXN0cmF0b3Igc8OtIHBlcm1pdGUgZXNjcmliaXIsIGFzw60gcXVlIG1hbnRpZW5lIGVsIGZvb3Rlci5cbiAgY29uc3QgaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSA9XG4gICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCAmJiBhZ2VudD8udHlwZSAhPT0gJ29yY2hlc3RyYXRvcidcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7dmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgJiYgIWlzRmxvYXRpbmcgPyAoXG4gICAgICAgIDxTaWRlYmFyXG4gICAgICAgICAgb25Hb1RvQ2hhdD17Z29Ub0NoYXR9XG4gICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgIGhhbmRsZUdvVG9Ib21lPXtoYW5kbGVHb0hvbWV9XG4gICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgc2hvd05ld0NoYXQ9e3Nob3dOZXdDaGF0fVxuICAgICAgICAgIHJlZmV0Y2hDaGF0cz17cmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cz17c2V0UmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhc0Vycm9yPXtzaWRlYmFySGFzRXJyb3J9XG4gICAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWY9e3Jlc2V0U2VsZWN0ZWRDaGF0UmVmfVxuICAgICAgICAgIGFnZW50c05hdkFjdGl2ZT17c2lkZWJhckFnZW50c05hdkFjdGl2ZX1cbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFNDQ0FJTUNvbnRlbnQgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30+XG4gICAgICAgIDxDaGF0QUlNb2RhbEhlYWRlclxuICAgICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgICAgb25MYXlvdXRNb2RlQ2hhbmdlPXtzZXRMYXlvdXRNb2RlfVxuICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICBkcmFnZ2FibGU9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICBvbkRyYWdNb3ZlPXtoYW5kbGVEcmFnTW92ZX1cbiAgICAgICAgICBvbkRyYWdFbmQ9e2hhbmRsZURyYWdFbmR9XG4gICAgICAgICAgaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICBoYXNFcnJvcj17ISFhZ2VudEVycm9yfVxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgbG9hZGluZ01vcmU9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgIGhhc01vcmU9e2FnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICBoYW5kbGVSZXNldENoYXQ9e2hhbmRsZVJlc2V0Q2hhdH1cbiAgICAgICAgICBvbkFnZW50VXBkYXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgIGxvYWRNb3JlQWdlbnRzPXtsb2FkTW9yZUFnZW50c31cbiAgICAgICAgICBzb3J0QWdlbnRzTGlzdD17c29ydEFnZW50c0xpc3R9XG4gICAgICAgICAgaGlkZUFnZW50U2VsZWN0b3I9e2hpZGVIZWFkZXJBZ2VudFNlbGVjdG9yfVxuICAgICAgICAgIHNob3dCYWNrQnV0dG9uPXtzaG93QmFja0J1dHRvbn1cbiAgICAgICAgICBvbkJhY2s9e2hhbmRsZUJhY2t9XG4gICAgICAgIC8+XG4gICAgICAgIHtoYXNFcnJvciA/IChcbiAgICAgICAgICA8TUFJQUVycm9yIC8+XG4gICAgICAgICkgOiB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uKSA/IChcbiAgICAgICAgICA8Q2hhdEFJQ29udGVudFxuICAgICAgICAgICAgY3VycmVudE9wdGlvbj17Y29tcHV0ZWRDdXJyZW50T3B0aW9ufVxuICAgICAgICAgICAgaGFuZGxlcnM9e3sgLi4uaGFuZGxlcnMsIGNoYXQ6IHN0YXJ0Q2hhdCwgaG9tZTogaGFuZGxlcnMuaG9tZSwgaGFuZGxlR29Ib21lIH19XG4gICAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIHJlZnM9e3sgdXNlckluaXRpYWxNZXNzYWdlLCBpbml0aWFsQ2hhdElkIH19XG4gICAgICAgICAgICBvblNlbmRNZXNzYWdlUmVhZHk9e2hhbmRsZVNlbmRNZXNzYWdlUmVhZHl9XG4gICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICBmbG9hdGluZz17aXNGbG9hdGluZ31cbiAgICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgICBsb2FkaW5nQWdlbnRzPXtsb2FkaW5nfVxuICAgICAgICAgICAgb25EZWxldGVBZ2VudD17aGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHN9XG4gICAgICAgICAgICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBoYXNNb3JlQWdlbnRzPXshIWFnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICAgIG9uTG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgICAgb25Hb1RvTWFpYWtlcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgICBhZ2VudEVycm9yPXthZ2VudEVycm9yfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFByb2plY3RTdW1tYXJ5Q29udGVudCBvblJlc3RhcnRTdW1tYXJ5PXtoYW5kbGVycy5ob21lfSAvPlxuICAgICAgICApfVxuICAgICAgICB7KChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiAhIWFnZW50cz8uZGF0YT8ubGVuZ3RoKSB8fFxuICAgICAgICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSAmJlxuICAgICAgICAgICFoaWRlRm9vdGVyT25NYWlha2VyTWFya2V0cGxhY2VIb21lICYmXG4gICAgICAgICAgIWhhc0Vycm9yICYmXG4gICAgICAgICAgIWxvYWRpbmcgJiZcbiAgICAgICAgICB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uKSAmJiAoXG4gICAgICAgICAgICA8Q2hhdEFpTW9kYWxGb290ZXJcbiAgICAgICAgICAgICAgYWdlbnQ9e2FnZW50fVxuICAgICAgICAgICAgICBoYW5kbGVTZW5kTWVzc2FnZT17aGFuZGxlU2VuZE1lc3NhZ2V9XG4gICAgICAgICAgICAgIGhhbmRsZVN0b3BHZW5lcmF0aW9uPXtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9ufVxuICAgICAgICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgICAgICAgIGlzV3JpdGluZz17aXNXcml0aW5nfVxuICAgICAgICAgICAgICBjaGF0SWQ9e2luaXRpYWxDaGF0SWR9XG4gICAgICAgICAgICAgIG5ld0NoYXRLZXk9e25ld0NoYXRLZXl9XG4gICAgICAgICAgICAgIHNob3dGYXFzPXtjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdH1cbiAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNQ29udGVudD5cbiAgICA8Lz5cbiAgKVxuXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gKFxuICAgIDxTQ0NBSU1Db250ZW50V3JhcHBlciBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfSByZWY9e2NvbnRlbnRXcmFwcGVyUmVmfT5cbiAgICAgIHttb2RhbFBhbmVsfVxuICAgIDwvU0NDQUlNQ29udGVudFdyYXBwZXI+XG4gIClcblxuICByZXR1cm4gKFxuICAgIHNlbGVjdG9yICYmXG4gICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgPFNDQ0FJTVdyYXBwZXJcbiAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICBkcmFnUG9zaXRpb249e3Jlc29sdmVkRHJhZ1Bvc2l0aW9ufVxuICAgICAgICBlbGV2YXRlZD17c2VjdGlvbiA9PT0gJ3Rhc2snfVxuICAgICAgPlxuICAgICAgICA8RmxvYXRpbmdQYW5lbE1vdGlvbiB0aWx0PXt0aWx0TW90aW9ufSBleHBhbmRlZD17ZXhwYW5kZWR9PlxuICAgICAgICAgIHtjb250ZW50V3JhcHBlcn1cbiAgICAgICAgPC9GbG9hdGluZ1BhbmVsTW90aW9uPlxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIChcbiAgICAgICAgICA8QWJtQWdlbnRNb2RhbFxuICAgICAgICAgICAgYWRkQWdlbnQ9e2FkZEFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnQ9e3VwZGF0ZUFnZW50fVxuICAgICAgICAgICAgcmVtb3ZlQWdlbnQ9e3JlbW92ZUFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIHNlbGVjdEZpcnN0QWdlbnQ9e3NlbGVjdEZpcnN0QWdlbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPFNuYWNrYmFyIC8+XG4gICAgICA8L1NDQ0FJTVdyYXBwZXI+LFxuICAgICAgc2VsZWN0b3JcbiAgICApXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUVFQSxXQUFXLEVBQ1hDLE9BQU8sRUFDUEMsUUFBUSxFQUNSQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsZUFBZSxRQUVWLE9BQU87QUFDZCxPQUFPQyxRQUFRLE1BQU0sV0FBVztBQUNoQyxPQUFPQyxNQUFNLE1BQU0sUUFBUTtB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
|
|
706
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsIkNoYXRBSUNvbnRlbnQiLCJidWlsZEhhbmRsZXJzIiwib3B0aW9ucyIsIlNpZGViYXIiLCJ1c2VHZXRBZ2VudHMiLCJ1c2VHbG9iYWxDb250ZXh0IiwiQ2hhdEFJTW9kYWxIZWFkZXIiLCJTbmFja2JhciIsIlByb2plY3RTdW1tYXJ5Q29udGVudCIsIkFibUFnZW50TW9kYWwiLCJTRUNUSU9OUyIsIlNDQ0FJTUNvbnRlbnQiLCJTQ0NBSU1Db250ZW50V3JhcHBlciIsIlNDQ0FJTVdyYXBwZXIiLCJnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJ2YWxpZGF0ZUlzTWFpYSIsInVzZUZhcXNTdG9yZSIsImZldGNoTWFpYSIsIm1hcENPUkxhbmciLCJFVkVOVFMiLCJ1c2VFdmVudCIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIklEX01PREFMX0NIQVRfQUdFTlQiLCJ2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSIsInNlY3Rpb24iLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiQ2hhdEFJTW9kYWwiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfdXNlciRwZXJtaXNzaW9uczIiLCJfdXNlciRwZXJtaXNzaW9uczMiLCJfYWdlbnRzJGRhdGEiLCJoYW5kbGVDbG9zZSIsInVzZXIiLCJfdXNlVHJhbnNsYXRpb24iLCJhYm1BZ2VudCIsImkxOG4iLCJhbXBsaXR1ZEV2ZW50IiwiaGFuZGxlQ2xvc2VNb2RhbCIsImdldFN0YXRlIiwiY2xlYXJGYXFzIiwiX3VzZVN0YXRlIiwibWVzc2FnZSIsImF0dGFjaG1lbnRzIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidXNlckluaXRpYWxNZXNzYWdlIiwic2V0VXNlckluaXRpYWxNZXNzYWdlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpbml0aWFsQ2hhdElkIiwic2V0SW5pdGlhbENoYXRJZCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwibmV3Q2hhdEtleSIsInNldE5ld0NoYXRLZXkiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNlbmRNZXNzYWdlRnVuY3Rpb24iLCJzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwic2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbiIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImlzU3RyZWFtaW5nIiwic2V0SXNTdHJlYW1pbmciLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInJlZmV0Y2hDaGF0cyIsInNldFJlZmV0Y2hDaGF0cyIsIl91c2VTdGF0ZTE1IiwiaG9tZSIsIl91c2VTdGF0ZTE2IiwiY3VycmVudE9wdGlvbiIsInNldEN1cnJlbnRPcHRpb24iLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwiaGFzRXJyb3IiLCJzZXRIYXNFcnJvciIsImhhbmRsZXJzIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsInNpZGViYXJIYXNFcnJvciIsInNldFNpZGViYXJIYXNFcnJvciIsInJlc2V0U2VsZWN0ZWRDaGF0UmVmIiwibGFuZyIsImxhbmd1YWdlIiwibG9jYWxlIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RBZ2VudCIsImFnZW50IiwicHJvamVjdCIsImNsaWVudCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsImJhbm5lckVudHJ5RmFxIiwic2V0VGFzayIsInRvb2x0aXBaSW5kZXgiLCJfdXNlR2V0QWdlbnRzIiwiaGFuZGxlR29Ib21lIiwiYWdlbnRzIiwibG9hZGluZyIsImxvYWRpbmdNb3JlIiwiYWdlbnRFcnJvciIsImVycm9yIiwiaGFuZGxlR2V0QWdlbnRzIiwibG9hZE1vcmVBZ2VudHMiLCJhZGRBZ2VudCIsInJlbW92ZUFnZW50IiwidXBkYXRlQWdlbnQiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2VsZWN0Rmlyc3RBZ2VudCIsInNvcnRBZ2VudHNMaXN0IiwiaXNNQUlBIiwidXNlckhhc1Blcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjcmVhdGUiLCJlZGl0IiwiY29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiZW50aXR5IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsInRlc3QiLCJuYW1lIiwibXlBZ2VudHMiLCJjaGF0Iiwic2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciIsInNob3VsZFNob3dDbGllbnRTZWxlY3RvciIsInByb2plY3RTZWxlY3RvciIsImNsaWVudFNlbGVjdG9yIiwiaXNNYWlha2VyQWdlbnRTZWxlY3RlZCIsInR5cGUiLCJzaWRlYmFyQWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzRmV0Y2hlZFJlZiIsInNlbGVjdG9yIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY29uY2F0IiwiX3VzZVN0YXRlMjEiLCJfYmFubmVyRW50cnlGYXEkZmFxVGkiLCJmYXFUaXRsZSIsInRyaW0iLCJfdXNlU3RhdGUyMiIsImxheW91dE1vZGUiLCJzZXRMYXlvdXRNb2RlIiwiZXhwYW5kZWQiLCJpc0Zsb2F0aW5nIiwiY29udGVudFdyYXBwZXJSZWYiLCJfdXNlU3RhdGUyMyIsIl91c2VTdGF0ZTI0IiwiZHJhZ1Bvc2l0aW9uIiwic2V0RHJhZ1Bvc2l0aW9uIiwiX3VzZUZsb2F0aW5nUGFuZWxEcmFnIiwidGlsdE1vdGlvbiIsInN0YXJ0UG9pbnRlclRyYWNraW5nIiwic2FtcGxlUG9pbnRlck1vdmUiLCJlbmRQb2ludGVyVHJhY2tpbmciLCJkcmFnU3RhdGVSZWYiLCJjbGFtcERyYWdQb3NpdGlvbiIsIngiLCJ5IiwiY29udGVudFdyYXBwZXIiLCJjdXJyZW50IiwiX2NvbnRlbnRXcmFwcGVyJGdldEJvIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJvZmZzZXQiLCJtYXhYIiwiTWF0aCIsIm1heCIsImlubmVyV2lkdGgiLCJtYXhZIiwiaW5uZXJIZWlnaHQiLCJtaW4iLCJwcmV2IiwicGFkIiwiaGFuZGxlRHJhZ0VuZCIsImV2ZW50IiwiX2RyYWdTdGF0ZVJlZiRjdXJyZW50IiwicG9pbnRlcklkIiwiYm9keSIsInN0eWxlIiwidXNlclNlbGVjdCIsImN1cnNvciIsImhhbmRsZURyYWdNb3ZlIiwiZHJhZ1N0YXRlIiwiY2xpZW50WCIsImNsaWVudFkiLCJuZXh0UG9zaXRpb24iLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJlc29sdmVkRHJhZ1Bvc2l0aW9uIiwiaGFuZGxlRHJhZ1N0YXJ0IiwiYnV0dG9uIiwidGFyZ2V0IiwiY2xvc2VzdCIsInJlY3QiLCJpbml0aWFsUG9zaXRpb24iLCJsZWZ0IiwidG9wIiwicG9pbnRlck9mZnNldFgiLCJwb2ludGVyT2Zmc2V0WSIsImN1cnJlbnRUYXJnZXQiLCJzZXRQb2ludGVyQ2FwdHVyZSIsInByZXZlbnREZWZhdWx0IiwiYWlDaGF0RHJhZ2dhYmxlIiwic3RhcnRDaGF0IiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiY29udGV4dERhdGEiLCJfb2JqZWN0U3ByZWFkIiwibGVuZ3RoIiwiYmFubmVyRmFxQXV0b1NlbnRSZWYiLCJfYmFubmVyRW50cnlGYXEkZmFxVGkyIiwiZW50aXR5UmVhZHkiLCJCb29sZWFuIiwiaWQiLCJ1bmRlZmluZWQiLCJnb1RvQ2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwic2VsZWN0ZWRBZ2VudCIsImRhdGEiLCJmaW5kIiwiYWdlbnRJdGVtIiwiYWdlbnRJZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZVNlbmRNZXNzYWdlUmVhZHkiLCJzZW5kTWVzc2FnZSIsInN0b3BHZW5lcmF0aW9uIiwic3RyZWFtaW5nIiwid3JpdGluZyIsImhhbmRsZVNlbmRNZXNzYWdlIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsInByb2plY3RfZGVsZXRlZCIsImhhbmRsZVJlc2V0Q2hhdCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsInN0b3AiLCJoYW5kbGVCYWNrIiwib25NZXJnZUNyZWF0ZWRBZ2VudCIsImV2dCIsIl9yZWYzIiwiZGV0YWlsIiwibmV4dEFnZW50IiwibmF2aWdhdGVIb21lIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvblN5bmNFZGl0ZWRBZ2VudCIsIl9yZWY0Iiwib3BlbkNoYXRWaWV3Iiwib3Blbk5ld0NoYXRXaXRoQWdlbnQiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJGNsaWVudCIsIl9yZWY1IiwidGFzayIsInNob3dOZXdDaGF0IiwiaGlkZUhlYWRlckFnZW50U2VsZWN0b3IiLCJzaG93QmFja0J1dHRvbiIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTIiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQyIiwiYSIsInBhdGgiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImFicnVwdCIsImhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzIiwiaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSIsIm1vZGFsUGFuZWwiLCJjaGlsZHJlbiIsIm9uR29Ub0NoYXQiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJoYW5kbGVTZXRSZWZldGNoQ2hhdHMiLCJhZ2VudHNOYXZBY3RpdmUiLCJmbG9hdGluZyIsIm9uTGF5b3V0TW9kZUNoYW5nZSIsImRyYWdnYWJsZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnTW92ZSIsIm9uRHJhZ0VuZCIsImhhc01vcmUiLCJoYXNfbW9yZSIsIm9uQWdlbnRVcGRhdGUiLCJoaWRlQWdlbnRTZWxlY3RvciIsIm9uQmFjayIsInJlZnMiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJsb2FkaW5nQWdlbnRzIiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25SZXN0YXJ0U3VtbWFyeSIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiY2hhdElkIiwic2hvd0ZhcXMiLCJyZWYiLCJjcmVhdGVQb3J0YWwiLCJlbGV2YXRlZCIsInRpbHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvQ2hhdEFJTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbm8tdXNlbGVzcy1mcmFnbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7XG4gIFJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICBQb2ludGVyRXZlbnQgYXMgUmVhY3RQb2ludGVyRXZlbnQsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBNQUlBRXJyb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBRXJyb3InXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcblxuaW1wb3J0IHsgQ2hhdEFJQ29udGVudCB9IGZyb20gJy4uL0NoYXRBSUNvbnRlbnQnXG5pbXBvcnQgeyBidWlsZEhhbmRsZXJzLCBvcHRpb25zIH0gZnJvbSAnLi9jb25zdGFudHMnXG5pbXBvcnQgeyBTaWRlYmFyIH0gZnJvbSAnLi4vU2lkZWJhcidcbmltcG9ydCB7IHVzZUdldEFnZW50cyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50cydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgQ2hhdEFJTW9kYWxIZWFkZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxIZWFkZXIvQ2hhdEFpTW9kYWxIZWFkZXInXG5pbXBvcnQgeyBTbmFja2JhciB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9TbmFja0Jhci9TbmFja2JhcidcbmltcG9ydCB7IFByb2plY3RTdW1tYXJ5Q29udGVudCB9IGZyb20gJy4uL1Byb2plY3RTdW1tYXJ5Q29udGVudCdcbmltcG9ydCB7IEFibUFnZW50TW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtQWdlbnRNb2RhbC9BYm1BZ2VudE1vZGFsJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgU0NDQUlNQ29udGVudCwgU0NDQUlNQ29udGVudFdyYXBwZXIsIFNDQ0FJTVdyYXBwZXIgfSBmcm9tICcuL0NoYXRBSU1vZGFsLnN0eWxlcydcbmltcG9ydCB7IGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCwgTWFpYUNoYXRNb2RhbExheW91dE1vZGUgfSBmcm9tICcuL2xheW91dCdcbmltcG9ydCB7IEZsb2F0aW5nUGFuZWxNb3Rpb24sIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdCB9IGZyb20gJy4vZmxvYXRpbmdQYW5lbE1vdGlvbidcbmltcG9ydCB7IENoYXRBaU1vZGFsRm9vdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsRm9vdGVyJ1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHsgdXNlRmFxc1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlRmFxc1N0b3JlJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxudHlwZSBDaGF0QUlNb2RhbFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgaGFuZGxlQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIHBhcmVudFJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbn1cblxuZXhwb3J0IGNvbnN0IElEX01PREFMX0NIQVRfQUdFTlQgPSAnbW9kYWxzLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnQnXG5cbmNvbnN0IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlID0gKHNlY3Rpb246IHN0cmluZykgPT4ge1xuICBpZiAoc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8IHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBpZiAoKHNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBzZWN0aW9uID09PSAnY2xpZW50JyB8fCBzZWN0aW9uID09PSAndGFzaycpICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTW9kYWwgPSAoeyBoYW5kbGVDbG9zZSB9OiBDaGF0QUlNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdXNlRmFxc1N0b3JlLmdldFN0YXRlKCkuY2xlYXJGYXFzKClcbiAgICBoYW5kbGVDbG9zZT8uKClcbiAgfSwgW2hhbmRsZUNsb3NlXSlcbiAgY29uc3QgW3VzZXJJbml0aWFsTWVzc2FnZSwgc2V0VXNlckluaXRpYWxNZXNzYWdlXSA9IHVzZVN0YXRlPHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXVxuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW11cbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIH0+KHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICBhdHRhY2htZW50czogW10sXG4gIH0pXG4gIGNvbnN0IFtpbml0aWFsQ2hhdElkLCBzZXRJbml0aWFsQ2hhdElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtuZXdDaGF0S2V5LCBzZXROZXdDaGF0S2V5XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uXSA9IHVzZVN0YXRlPFxuICAgIHwgKChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkKVxuICAgIHwgbnVsbFxuICA+KG51bGwpXG4gIGNvbnN0IFtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLCBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSA9IHVzZVN0YXRlPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc1N0cmVhbWluZywgc2V0SXNTdHJlYW1pbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBbcmVmZXRjaENoYXRzLCBzZXRSZWZldGNoQ2hhdHNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjdXJyZW50T3B0aW9uLCBzZXRDdXJyZW50T3B0aW9uXSA9IHVzZVN0YXRlKG9wdGlvbnMuaG9tZSlcbiAgY29uc3QgW2hhc0Vycm9yLCBzZXRIYXNFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkSGFuZGxlcnMoc2V0Q3VycmVudE9wdGlvbiwgc2V0SGFzRXJyb3IpLCBbXSlcbiAgY29uc3QgW3NpZGViYXJIYXNFcnJvciwgc2V0U2lkZWJhckhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCByZXNldFNlbGVjdGVkQ2hhdFJlZiA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBsYW5nID0gaTE4bi5sYW5ndWFnZSA9PT0gJ2JyJyA/ICdwdC1icicgOiBpMThuLmxhbmd1YWdlXG5cbiAgbW9tZW50LmxvY2FsZShsYW5nKVxuXG4gIGNvbnN0IHtcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBzZWN0aW9uLFxuICAgIGFnZW50LFxuICAgIHByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFByb2plY3QsXG4gICAgYmFubmVyRW50cnlGYXEsXG4gICAgc2V0VGFzayxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIC8vIFotaW5kZXggcGFyYSB0b29sdGlwcyBlbiBzZWN0aW9uICd0YXNrJyAobW9kYWwgZmxvdGFudGUgZWxldmFkbylcbiAgY29uc3QgdG9vbHRpcFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTUwMCwgJ292ZXJsYXknKVxuXG4gIGNvbnN0IHtcbiAgICBhZ2VudHMsXG4gICAgbG9hZGluZyxcbiAgICBsb2FkaW5nTW9yZSxcbiAgICBlcnJvcjogYWdlbnRFcnJvcixcbiAgICBoYW5kbGVHZXRBZ2VudHMsXG4gICAgbG9hZE1vcmVBZ2VudHMsXG4gICAgYWRkQWdlbnQsXG4gICAgcmVtb3ZlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgICBzZWxlY3RGaXJzdEFnZW50LFxuICAgIHNvcnRBZ2VudHNMaXN0LFxuICB9ID0gdXNlR2V0QWdlbnRzKHsgc2VsZWN0QWdlbnQsIHNlY3Rpb24sIGFnZW50LCBoYW5kbGVHb0hvbWU6IGhhbmRsZXJzLmhvbWUgfSlcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcblxuICBjb25zdCB1c2VySGFzUGVybWlzc2lvbnMgPVxuICAgICh1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5jcmVhdGUgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmVkaXQgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmRlbGV0ZSkgJiZcbiAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gIGNvbnN0IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGlzR2xvYmFsU3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJ1xuICAgIGNvbnN0IGlzUHJvamVjdFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09IG51bGwpXG4gICAgY29uc3QgaXNDbGllbnRTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnXG4gICAgY29uc3QgaXNNYWlha2VyID0gaXNHbG9iYWxTcGVjaWFsaXN0ICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15QWdlbnRzXG4gICAgfVxuXG4gICAgaWYgKGlzR2xvYmFsU3BlY2lhbGlzdCAmJiAhaXNNYWlha2VyICYmIGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2hhdFxuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNQcm9qZWN0U3BlY2lhbGlzdCAmJiAhcHJvamVjdFxuICAgIGNvbnN0IHNob3VsZFNob3dDbGllbnRTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc0NsaWVudFNwZWNpYWxpc3QgJiYgIWNsaWVudFxuXG4gICAgaWYgKHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnByb2plY3RTZWxlY3RvclxuICAgIH1cbiAgICBpZiAoc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jbGllbnRTZWxlY3RvclxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudE9wdGlvblxuICB9LCBbY3VycmVudE9wdGlvbiwgcHJvamVjdCwgY2xpZW50LCBpc01BSUEsIGFnZW50Py5lbnRpdHksIGFnZW50Py5uYW1lXSlcblxuICBjb25zdCBpc01haWFrZXJBZ2VudFNlbGVjdGVkID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgaXNNQUlBICYmXG4gICAgICBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJyAmJlxuICAgICAgYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiZcbiAgICAgIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKSxcbiAgICBbaXNNQUlBLCBhZ2VudD8uZW50aXR5LCBhZ2VudD8udHlwZSwgYWdlbnQ/Lm5hbWVdXG4gIClcblxuICBjb25zdCBzaWRlYmFyQWdlbnRzTmF2QWN0aXZlID0gdXNlTWVtbygoKTogJ21haWFrZXInIHwgJ215QWdlbnRzJyB8IG51bGwgPT4ge1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMpIHJldHVybiAnbXlBZ2VudHMnXG4gICAgaWYgKGlzTWFpYWtlckFnZW50U2VsZWN0ZWQpIHJldHVybiAnbWFpYWtlcidcbiAgICByZXR1cm4gbnVsbFxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBpc01haWFrZXJBZ2VudFNlbGVjdGVkXSlcblxuICAvKiBSZWFjdGl2YXIgY29uIGxhIGZpbGEg4oCcTWlzIGFnZW50ZXPigJ0gZW4gU2lkZWJhcjogbXlBZ2VudHNDb3VudCBwcm9wXG4gIGNvbnN0IHNpZGViYXJNeUFnZW50c0NvdW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGFnZW50cy5kYXRhLmZpbHRlcihcbiAgICAgIGEgPT4gIShhLnR5cGUgPT09ICdjbG9uZScgJiYgYS5lbnRpdHkgPT09ICdnbG9iYWwnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGEubmFtZSB8fCAnJykpXG4gICAgKVxuICAgICAgLmxlbmd0aFxuICB9LCBbYWdlbnRzLmRhdGFdKVxuICAqL1xuXG4gIGNvbnN0IGFnZW50c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtJRF9NT0RBTF9DSEFUX0FHRU5UfWApXG5cbiAgLy8gVGFzayBwYW5lbCB5IGJhbm5lciBkZSBwcm95ZWN0byBhYnJlbiBlbiBmbG90YW50ZSBwb3IgZGVmYXVsdCAobm8gdGFwYXIgZWwgY29udGV4dG8gZGV0csOhcykuXG4gIC8vIEVsIHVzdWFyaW8gcHVlZGUgY2FtYmlhciBhIHNpZGViYXIvZnVsbHNjcmVlbiBkZXNkZSBsb3MgY29udHJvbGVzIGRlbCBtb2RhbC5cbiAgY29uc3QgW2xheW91dE1vZGUsIHNldExheW91dE1vZGVdID0gdXNlU3RhdGU8TWFpYUNoYXRNb2RhbExheW91dE1vZGU+KCgpID0+IHtcbiAgICBpZiAoc2VjdGlvbiA9PT0gJ3Rhc2snKSByZXR1cm4gJ2Zsb2F0aW5nJ1xuICAgIGlmIChiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGU/LnRyaW0oKSkgcmV0dXJuICdmbG9hdGluZydcbiAgICByZXR1cm4gJ3NpZGViYXInXG4gIH0pXG4gIGNvbnN0IGV4cGFuZGVkID0gbGF5b3V0TW9kZSA9PT0gJ2Z1bGxzY3JlZW4nXG4gIGNvbnN0IGlzRmxvYXRpbmcgPSBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbZHJhZ1Bvc2l0aW9uLCBzZXREcmFnUG9zaXRpb25dID0gdXNlU3RhdGU8eyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyB0aWx0TW90aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZywgc2FtcGxlUG9pbnRlck1vdmUsIGVuZFBvaW50ZXJUcmFja2luZyB9ID1cbiAgICB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQoaXNGbG9hdGluZylcbiAgY29uc3QgZHJhZ1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBwb2ludGVySWQ6IG51bWJlclxuICAgIG9mZnNldFg6IG51bWJlclxuICAgIG9mZnNldFk6IG51bWJlclxuICB9IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGFtcERyYWdQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgIHJldHVybiB7IHgsIHkgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBvZmZzZXQgPSAxNlxuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lcldpZHRoIC0gd2lkdGggLSBvZmZzZXQpXG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVySGVpZ2h0IC0gaGVpZ2h0IC0gb2Zmc2V0KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IE1hdGgubWluKE1hdGgubWF4KHgsIG9mZnNldCksIG1heFgpLFxuICAgICAgeTogTWF0aC5taW4oTWF0aC5tYXgoeSwgb2Zmc2V0KSwgbWF4WSksXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbihwcmV2LngsIHByZXYueSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgICBjb25zdCB4ID0gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZFxuICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgICB9KVxuICB9LCBbbGF5b3V0TW9kZSwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZW5kUG9pbnRlclRyYWNraW5nKClcbiAgICAgIGlmIChkcmFnU3RhdGVSZWYuY3VycmVudD8ucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJydcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJydcbiAgICB9LFxuICAgIFtlbmRQb2ludGVyVHJhY2tpbmddXG4gIClcblxuICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBkcmFnU3RhdGUgPSBkcmFnU3RhdGVSZWYuY3VycmVudFxuICAgICAgaWYgKCFkcmFnU3RhdGUgfHwgZHJhZ1N0YXRlLnBvaW50ZXJJZCAhPT0gZXZlbnQucG9pbnRlcklkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzYW1wbGVQb2ludGVyTW92ZShldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuXG4gICAgICBjb25zdCBuZXh0UG9zaXRpb24gPSBjbGFtcERyYWdQb3NpdGlvbihldmVudC5jbGllbnRYIC0gZHJhZ1N0YXRlLm9mZnNldFgsIGV2ZW50LmNsaWVudFkgLSBkcmFnU3RhdGUub2Zmc2V0WSlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgICBpZiAocHJldiAmJiBwcmV2LnggPT09IG5leHRQb3NpdGlvbi54ICYmIHByZXYueSA9PT0gbmV4dFBvc2l0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0UG9zaXRpb25cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIHNhbXBsZVBvaW50ZXJNb3ZlXVxuICApXG5cbiAgY29uc3QgcmVzb2x2ZWREcmFnUG9zaXRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBpZiAoZHJhZ1Bvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgY29uc3QgeCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZCA6IHBhZFxuICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbih4LCBwYWQpXG4gIH0sIFtsYXlvdXRNb2RlLCBkcmFnUG9zaXRpb24sIGNsYW1wRHJhZ1Bvc2l0aW9uXSlcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFpc0Zsb2F0aW5nIHx8IGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoJ2J1dHRvbiwgYSwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtyb2xlPVwiYnV0dG9uXCJdLCBbZGF0YS1uby1kcmFnPVwidHJ1ZVwiXScpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250ZW50V3JhcHBlciA9IGNvbnRlbnRXcmFwcGVyUmVmLmN1cnJlbnRcbiAgICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlY3QgPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgaW5pdGlhbFBvc2l0aW9uID0gcmVzb2x2ZWREcmFnUG9zaXRpb24gPz8gY2xhbXBEcmFnUG9zaXRpb24ocmVjdC5sZWZ0LCByZWN0LnRvcClcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRYID0gZXZlbnQuY2xpZW50WCAtIGluaXRpYWxQb3NpdGlvbi54XG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WSA9IGV2ZW50LmNsaWVudFkgLSBpbml0aWFsUG9zaXRpb24ueVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24oaW5pdGlhbFBvc2l0aW9uKVxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgIHBvaW50ZXJJZDogZXZlbnQucG9pbnRlcklkLFxuICAgICAgICBvZmZzZXRYOiBwb2ludGVyT2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WTogcG9pbnRlck9mZnNldFksXG4gICAgICB9XG5cbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnbm9uZSdcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJ1xuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0RHJhZ2dhYmxlKVxuICAgICAgc3RhcnRQb2ludGVyVHJhY2tpbmcoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgaXNGbG9hdGluZywgcmVzb2x2ZWREcmFnUG9zaXRpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nXVxuICApXG5cbiAgY29uc3Qgc3RhcnRDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmcsXG4gICAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2lkZWJhckhhc0Vycm9yKSB7XG4gICAgICAgIHNldFNpZGViYXJIYXNFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgJycsXG4gICAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyB8fCBbXSxcbiAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihtZW50aW9ucyAmJiBtZW50aW9ucy5sZW5ndGggPiAwID8geyBtZW50aW9ucyB9IDoge30pLFxuICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihzY0lkID8geyBzY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihjb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgYmFubmVyRmFxQXV0b1NlbnRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbnRpdHlSZWFkeSA9IHNlY3Rpb24gPT09ICdwcm9qZWN0JyA/IEJvb2xlYW4ocHJvamVjdD8uaWQpIDogc2VjdGlvbiA9PT0gJ2NsaWVudCcgPyBCb29sZWFuKGNsaWVudD8uaWQpIDogdHJ1ZVxuXG4gICAgaWYgKCFiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGU/LnRyaW0oKSB8fCBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50IHx8IGxvYWRpbmcgfHwgIWFnZW50Py5pZCB8fCAhZW50aXR5UmVhZHkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgc3RhcnRDaGF0KFxuICAgICAgYmFubmVyRW50cnlGYXEuZmFxVGl0bGUsXG4gICAgICBbXSxcbiAgICAgIGJhbm5lckVudHJ5RmFxLmZhcUlkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYmFubmVyRW50cnlGYXEuY29udGV4dERhdGFcbiAgICApXG4gIH0sIFtcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxSWQsXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlLFxuICAgIGJhbm5lckVudHJ5RmFxPy5jb250ZXh0RGF0YSxcbiAgICBsb2FkaW5nLFxuICAgIGFnZW50Py5pZCxcbiAgICBhZ2VudD8uZW50aXR5LFxuICAgIHByb2plY3Q/LmlkLFxuICAgIGNsaWVudD8uaWQsXG4gICAgc2VjdGlvbixcbiAgICBzdGFydENoYXQsXG4gIF0pXG5cbiAgY29uc3QgZ29Ub0NoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hhdDogYW55KSA9PiB7XG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgICBjb25zdCBzZWxlY3RlZEFnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhZ2VudEl0ZW0gPT4gYWdlbnRJdGVtLmlkID09PSBjaGF0LmFnZW50SWQpXG4gICAgICBpZiAoc2VsZWN0ZWRBZ2VudCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzZWxlY3RlZEFnZW50KVxuICAgICAgfVxuICAgICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgIH0sXG4gICAgW2hhbmRsZXJzLCBhZ2VudHMsIHNlbGVjdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHNlbmRNZXNzYWdlOiAoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZCxcbiAgICAgIHN0b3BHZW5lcmF0aW9uOiAoKSA9PiB2b2lkLFxuICAgICAgc3RyZWFtaW5nOiBib29sZWFuLFxuICAgICAgd3JpdGluZzogYm9vbGVhblxuICAgICkgPT4ge1xuICAgICAgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbigoKSA9PiBzZW5kTWVzc2FnZSlcbiAgICAgIHNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb24oKCkgPT4gc3RvcEdlbmVyYXRpb24pXG4gICAgICBzZXRJc1N0cmVhbWluZyhzdHJlYW1pbmcpXG4gICAgICBzZXRJc1dyaXRpbmcod3JpdGluZylcbiAgICB9LFxuICAgIFtdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChzaWRlYmFySGFzRXJyb3IpIHtcbiAgICAgICAgc2V0U2lkZWJhckhhc0Vycm9yKGZhbHNlKVxuICAgICAgfVxuICAgICAgaWYgKHNlbmRNZXNzYWdlRnVuY3Rpb24gJiYgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgICAgc2VuZE1lc3NhZ2VGdW5jdGlvbihtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydENoYXQobWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlRnVuY3Rpb24sIHN0YXJ0Q2hhdCwgY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzaWRlYmFySGFzRXJyb3JdXG4gIClcblxuICBjb25zdCBoYW5kbGVHb0hvbWUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gU2kgZXN0YW1vcyBlbiB1bmEgY29udmVyc2FjacOzbiB5IHZhbW9zIGEgaG9tZSwgcmVzZXRlYXIgaW5pdGlhbENoYXRJZCB5IGluY3JlbWVudGFyIG5ld0NoYXRLZXlcbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uPy4oKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgLy8gTm8gYm9ycmFyIGVsIGNsaWVudGUgc2kgZXMgYWdlbnRlIGRlIGNsaWVudGVzIChpZ3VhbCBxdWUgZWwgcHJveWVjdG8gc2UgbWFudGllbmUpXG4gICAgICBpZiAoYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICAgIGlmIChzZWN0aW9uICE9PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgICghYWdlbnQgfHwgYWdlbnQ/LmlzX2RlbGV0ZWQgfHwgYWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHwgYWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8IGFnZW50Py5wcm9qZWN0X2RlbGV0ZWQpICYmXG4gICAgICBhZ2VudHMuZGF0YS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVswXSlcbiAgICB9XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIG9wdGlvbnMuY2hhdCxcbiAgICBjdXJyZW50T3B0aW9uLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBhZ2VudCxcbiAgICBhZ2VudHMsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFRhc2ssXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgICBzZWN0aW9uLFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIGhhbmRsZUdvSG9tZSgpXG4gIH0sIFtoYW5kbGVHb0hvbWVdKVxuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiIGRlbCBoZWFkZXIgKHNvbG8gYWdlbnRlcyBjbG9uZSk6XG4gIC8vIC0gQ29uIGNvbnZlcnNhY2nDs24gaW5pY2lhZGE6IGluaWNpYSB1bmEgbnVldmEgY29udmVyc2FjacOzbiB5IHZ1ZWx2ZSBhbCBob21lICh0b2RhcyBsYXMgc2VjY2lvbmVzKS5cbiAgLy8gLSBFbiBlbCBob21lIChGQVFzL0ZVQSk6IHZ1ZWx2ZSBhbCBzZWxlY3RvciBkZSBwcm95ZWN0b3MvY2xpZW50ZXMgbGltcGlhbmRvIGxhIGVudGl0eSBzZWxlY2Npb25hZGEuXG4gIGNvbnN0IGhhbmRsZUJhY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICBoYW5kbGVSZXNldENoYXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIC8vIEVuIHNlY3Rpb24gJ3Rhc2snIHByZXNlcnZhciBwcm9qZWN0L2NsaWVudDsgZW4gb3RyYXMgc2VjY2lvbmVzLCBpciBhbCBzZWxlY3RvciBsaW1waWFuZG8gcHJvamVjdC9jbGllbnRcbiAgICBpZiAoc2VjdGlvbiAhPT0gJ3Rhc2snKSB7XG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgfVxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzZWN0aW9uLCBoYW5kbGVSZXNldENoYXQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFza10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWFnZW50c0ZldGNoZWRSZWYuY3VycmVudCkge1xuICAgICAgYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgaGFuZGxlR2V0QWdlbnRzKClcbiAgICB9XG4gIH0sIFtoYW5kbGVHZXRBZ2VudHNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25NZXJnZUNyZWF0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKG5leHRBZ2VudD8uaWQpIHtcbiAgICAgICAgYWRkQWdlbnQobmV4dEFnZW50LCB7IG5hdmlnYXRlSG9tZTogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIG9uTWVyZ2VDcmVhdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIH1cbiAgfSwgW2FkZEFnZW50XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uU3luY0VkaXRlZEFnZW50ID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnQ6IG5leHRBZ2VudCB9ID0gKGV2dCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAoIW5leHRBZ2VudD8uaWQpIHJldHVyblxuICAgICAgdXBkYXRlQWdlbnQobmV4dEFnZW50KVxuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gbmV4dEFnZW50LmlkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KG5leHRBZ2VudClcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCBvblN5bmNFZGl0ZWRBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCBvblN5bmNFZGl0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFt1cGRhdGVBZ2VudCwgc2VsZWN0QWdlbnQsIGFnZW50Py5pZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuQ2hhdFZpZXcgPSAoKSA9PiB7XG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5jaGF0KVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1jaGF0LXZpZXcnLCBvcGVuQ2hhdFZpZXcpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1jaGF0LXZpZXcnLCBvcGVuQ2hhdFZpZXcpXG4gICAgfVxuICB9LCBbXSlcblxuICAvKiogTWlzbW8gZmx1am8gcXVlIENoYXRBSU15QWdlbnRzLmhhbmRsZVVzZUFnZW50ICsgb25CYWNrIChoYW5kbGVycy5ob21lKS5cbiAgICogIEVsIGRldGFpbCBwdWVkZSB0cmFlciBvcGNpb25hbG1lbnRlIGBwcm9qZWN0YCwgYGNsaWVudGAsIGB0YXNrYCBwYXJhIGZsb3dzIHF1ZVxuICAgKiAgbmVjZXNpdGFuIHByZXNlcnZhciBjb250ZXh0byAoZWouIHNlbGVjdG9yIGRlIGFnZW50ZXMgZGVzZGUgdW5hIHRhcmVhKS4gU2kgbm8gdmllbmVuLFxuICAgKiAgc2UgbWFudGllbmUgZWwgY29tcG9ydGFtaWVudG8gb3JpZ2luYWwgZGUgbGltcGlhciBwcm9qZWN0L2NsaWVudC4gKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuTmV3Q2hhdFdpdGhBZ2VudCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudCBhcyBDdXN0b21FdmVudDx7XG4gICAgICAgIGFnZW50OiBBZ2VudFxuICAgICAgICBwcm9qZWN0PzogUHJvamVjdCB8IG51bGxcbiAgICAgICAgY2xpZW50PzogQ2xpZW50IHwgbnVsbFxuICAgICAgICB0YXNrPzogVGFzayB8IG51bGxcbiAgICAgIH0+XG4gICAgICBjb25zdCBuZXh0QWdlbnQgPSBkZXRhaWw/LmFnZW50XG4gICAgICBpZiAoIW5leHRBZ2VudCkgcmV0dXJuXG5cbiAgICAgIHNldFByb2plY3QoZGV0YWlsPy5wcm9qZWN0ID8/IG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihkZXRhaWw/LmNsaWVudCA/PyBudWxsKVxuICAgICAgaWYgKGRldGFpbD8udGFzayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNldFRhc2s/LihkZXRhaWwudGFzaylcbiAgICAgIH1cbiAgICAgIHNlbGVjdEFnZW50KG5leHRBZ2VudClcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLW5ldy1jaGF0LXdpdGgtYWdlbnQnLCBvcGVuTmV3Q2hhdFdpdGhBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLW5ldy1jaGF0LXdpdGgtYWdlbnQnLCBvcGVuTmV3Q2hhdFdpdGhBZ2VudClcbiAgICB9XG4gIH0sIFtzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrXSlcblxuICBjb25zdCBzaG93TmV3Q2hhdCA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0XG4gIGNvbnN0IGhpZGVIZWFkZXJBZ2VudFNlbGVjdG9yID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzXG4gIGNvbnN0IHNob3dCYWNrQnV0dG9uID1cbiAgICBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJlxuICAgIGFnZW50Py5lbnRpdHkgIT09ICdnbG9iYWwnICYmXG4gICAgIWhhc0Vycm9yICYmXG4gICAgIWxvYWRpbmcgJiZcbiAgICAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQgfHwgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIHNlY3Rpb24gIT09ICd0YXNrJykpXG4gIGNvbnN0IGhhbmRsZU9wZW5NYXJrZXRwbGFjZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15QWdlbnRzKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVHb1RvTWFpYWtlciA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBsZXQgbWFpYWtlckFnZW50ID0gYWdlbnRzLmRhdGEuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcpXG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIG1haWFrZXJBZ2VudCA9IChkYXRhLmRhdGEgfHwgW10pLmZpbmQoKGE6IEFnZW50KSA9PiBhLnR5cGUgPT09ICdjbG9uZScgJiYgYS5lbnRpdHkgPT09ICdnbG9iYWwnKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNldFRhc2s/LihudWxsKVxuICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbYWdlbnRzLmRhdGEsIGkxOG4ubGFuZ3VhZ2UsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdKVxuICBjb25zdCBoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJlbW92ZUFnZW50KGFnZW50SWQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBhZ2VudElkKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoYWdlbnRJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudD8uaWQsIHJlbW92ZUFnZW50LCBzZWxlY3RGaXJzdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7dmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgJiYgIWlzRmxvYXRpbmcgPyAoXG4gICAgICAgIDxTaWRlYmFyXG4gICAgICAgICAgb25Hb1RvQ2hhdD17Z29Ub0NoYXR9XG4gICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgIGhhbmRsZUdvVG9Ib21lPXtoYW5kbGVHb0hvbWV9XG4gICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgc2hvd05ld0NoYXQ9e3Nob3dOZXdDaGF0fVxuICAgICAgICAgIHJlZmV0Y2hDaGF0cz17cmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cz17c2V0UmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhc0Vycm9yPXtzaWRlYmFySGFzRXJyb3J9XG4gICAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWY9e3Jlc2V0U2VsZWN0ZWRDaGF0UmVmfVxuICAgICAgICAgIGFnZW50c05hdkFjdGl2ZT17c2lkZWJhckFnZW50c05hdkFjdGl2ZX1cbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFNDQ0FJTUNvbnRlbnQgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30+XG4gICAgICAgIDxDaGF0QUlNb2RhbEhlYWRlclxuICAgICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgICAgb25MYXlvdXRNb2RlQ2hhbmdlPXtzZXRMYXlvdXRNb2RlfVxuICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICBkcmFnZ2FibGU9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICBvbkRyYWdNb3ZlPXtoYW5kbGVEcmFnTW92ZX1cbiAgICAgICAgICBvbkRyYWdFbmQ9e2hhbmRsZURyYWdFbmR9XG4gICAgICAgICAgaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICBoYXNFcnJvcj17ISFhZ2VudEVycm9yfVxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgbG9hZGluZ01vcmU9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgIGhhc01vcmU9e2FnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICBoYW5kbGVSZXNldENoYXQ9e2hhbmRsZVJlc2V0Q2hhdH1cbiAgICAgICAgICBvbkFnZW50VXBkYXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgIGxvYWRNb3JlQWdlbnRzPXtsb2FkTW9yZUFnZW50c31cbiAgICAgICAgICBzb3J0QWdlbnRzTGlzdD17c29ydEFnZW50c0xpc3R9XG4gICAgICAgICAgaGlkZUFnZW50U2VsZWN0b3I9e2hpZGVIZWFkZXJBZ2VudFNlbGVjdG9yfVxuICAgICAgICAgIHNob3dCYWNrQnV0dG9uPXtzaG93QmFja0J1dHRvbn1cbiAgICAgICAgICBvbkJhY2s9e2hhbmRsZUJhY2t9XG4gICAgICAgIC8+XG4gICAgICAgIHtoYXNFcnJvciA/IChcbiAgICAgICAgICA8TUFJQUVycm9yIC8+XG4gICAgICAgICkgOiB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uKSA/IChcbiAgICAgICAgICA8Q2hhdEFJQ29udGVudFxuICAgICAgICAgICAgY3VycmVudE9wdGlvbj17Y29tcHV0ZWRDdXJyZW50T3B0aW9ufVxuICAgICAgICAgICAgaGFuZGxlcnM9e3sgLi4uaGFuZGxlcnMsIGNoYXQ6IHN0YXJ0Q2hhdCwgaG9tZTogaGFuZGxlcnMuaG9tZSwgaGFuZGxlR29Ib21lIH19XG4gICAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIHJlZnM9e3sgdXNlckluaXRpYWxNZXNzYWdlLCBpbml0aWFsQ2hhdElkIH19XG4gICAgICAgICAgICBvblNlbmRNZXNzYWdlUmVhZHk9e2hhbmRsZVNlbmRNZXNzYWdlUmVhZHl9XG4gICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICBmbG9hdGluZz17aXNGbG9hdGluZ31cbiAgICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgICBsb2FkaW5nQWdlbnRzPXtsb2FkaW5nfVxuICAgICAgICAgICAgb25EZWxldGVBZ2VudD17aGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHN9XG4gICAgICAgICAgICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBoYXNNb3JlQWdlbnRzPXshIWFnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICAgIG9uTG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgICAgb25Hb1RvTWFpYWtlcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgICBhZ2VudEVycm9yPXthZ2VudEVycm9yfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFByb2plY3RTdW1tYXJ5Q29udGVudCBvblJlc3RhcnRTdW1tYXJ5PXtoYW5kbGVycy5ob21lfSAvPlxuICAgICAgICApfVxuICAgICAgICB7KChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiAhIWFnZW50cz8uZGF0YT8ubGVuZ3RoKSB8fFxuICAgICAgICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSAmJlxuICAgICAgICAgICFoaWRlRm9vdGVyT25NYWlha2VyTWFya2V0cGxhY2VIb21lICYmXG4gICAgICAgICAgIWhhc0Vycm9yICYmXG4gICAgICAgICAgIWxvYWRpbmcgJiZcbiAgICAgICAgICB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uKSAmJiAoXG4gICAgICAgICAgICA8Q2hhdEFpTW9kYWxGb290ZXJcbiAgICAgICAgICAgICAgYWdlbnQ9e2FnZW50fVxuICAgICAgICAgICAgICBoYW5kbGVTZW5kTWVzc2FnZT17aGFuZGxlU2VuZE1lc3NhZ2V9XG4gICAgICAgICAgICAgIGhhbmRsZVN0b3BHZW5lcmF0aW9uPXtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9ufVxuICAgICAgICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgICAgICAgIGlzV3JpdGluZz17aXNXcml0aW5nfVxuICAgICAgICAgICAgICBjaGF0SWQ9e2luaXRpYWxDaGF0SWR9XG4gICAgICAgICAgICAgIG5ld0NoYXRLZXk9e25ld0NoYXRLZXl9XG4gICAgICAgICAgICAgIHNob3dGYXFzPXtjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdH1cbiAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNQ29udGVudD5cbiAgICA8Lz5cbiAgKVxuXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gKFxuICAgIDxTQ0NBSU1Db250ZW50V3JhcHBlciBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfSByZWY9e2NvbnRlbnRXcmFwcGVyUmVmfT5cbiAgICAgIHttb2RhbFBhbmVsfVxuICAgIDwvU0NDQUlNQ29udGVudFdyYXBwZXI+XG4gIClcblxuICByZXR1cm4gKFxuICAgIHNlbGVjdG9yICYmXG4gICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgPFNDQ0FJTVdyYXBwZXJcbiAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICBkcmFnUG9zaXRpb249e3Jlc29sdmVkRHJhZ1Bvc2l0aW9ufVxuICAgICAgICBlbGV2YXRlZD17c2VjdGlvbiA9PT0gJ3Rhc2snfVxuICAgICAgPlxuICAgICAgICA8RmxvYXRpbmdQYW5lbE1vdGlvbiB0aWx0PXt0aWx0TW90aW9ufSBleHBhbmRlZD17ZXhwYW5kZWR9PlxuICAgICAgICAgIHtjb250ZW50V3JhcHBlcn1cbiAgICAgICAgPC9GbG9hdGluZ1BhbmVsTW90aW9uPlxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIChcbiAgICAgICAgICA8QWJtQWdlbnRNb2RhbFxuICAgICAgICAgICAgYWRkQWdlbnQ9e2FkZEFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnQ9e3VwZGF0ZUFnZW50fVxuICAgICAgICAgICAgcmVtb3ZlQWdlbnQ9e3JlbW92ZUFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIHNlbGVjdEZpcnN0QWdlbnQ9e3NlbGVjdEZpcnN0QWdlbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPFNuYWNrYmFyIC8+XG4gICAgICA8L1NDQ0FJTVdyYXBwZXI+LFxuICAgICAgc2VsZWN0b3JcbiAgICApXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUVFQSxXQUFXLEVBQ1hDLE9BQU8sRUFDUEMsUUFBUSxFQUNSQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsZUFBZSxRQUVWLE9BQU87QUFDZCxPQUFPQyxRQUFRLE1BQU0sV0FBVztBQUNoQyxPQUFPQyxNQUFNLE1BQU0sUUFBUTtBQUMzQixTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLFNBQVMsUUFBUSx1QkFBdUI7QUFDakQsU0FBU0Msc0JBQXNCLFFBQVEsdUNBQXVDO0FBRTlFLFNBQVNDLGFBQWEsUUFBUSxrQkFBa0I7QUFDaEQsU0FBU0MsYUFBYSxFQUFFQyxPQUFPLFFBQVEsYUFBYTtBQUNwRCxTQUFTQyxPQUFPLFFBQVEsWUFBWTtBQUNwQyxTQUFTQyxZQUFZLFFBQVEseUNBQXlDO0FBQ3RFLFNBQVNDLGdCQUFnQixRQUFRLGlDQUFpQztBQUdsRSxTQUFTQyxpQkFBaUIsUUFBUSxrREFBa0Q7QUFDcEYsU0FBU0MsUUFBUSxRQUFRLG1DQUFtQztBQUM1RCxTQUFTQyxxQkFBcUIsUUFBUSwwQkFBMEI7QUFDaEUsU0FBU0MsYUFBYSxRQUFRLDZDQUE2QztBQUMzRSxTQUFTQyxRQUFRLFFBQVEsMkJBQTJCO0FBQ3BELFNBQVNDLGFBQWEsRUFBRUMsb0JBQW9CLEVBQUVDLGFBQWEsUUFBUSxzQkFBc0I7QUFDekYsU0FBU0MsMkJBQTJCLFFB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
|