@projectcor/maia-components 2.11.48-2 → 2.11.49-0
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/ContextMentionEditor/ContextMentionEditor.js +40 -3
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +38 -69
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +9 -9
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +94 -0
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +49 -0
- package/lib/components/atoms/FrequentlyUsedActions/index.js +2 -0
- package/lib/components/atoms/IconButton.js +12 -5
- package/lib/components/atoms/MAIAInput/MAIAInput.js +86 -11
- package/lib/components/atoms/SlashCommandChip/SlashCommandChip.js +16 -0
- package/lib/components/atoms/SlashCommandChip/SlashCommandChip.styles.js +24 -0
- package/lib/components/atoms/SlashCommandChip/buildSlashChipElement.js +18 -0
- package/lib/components/atoms/SlashCommandChip/index.js +4 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +180 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +41 -0
- package/lib/components/atoms/SlashCommandDropdown/index.js +2 -0
- package/lib/components/atoms/icons/ActionChargeHoursIcon.js +111 -0
- package/lib/components/atoms/icons/ActionCreateReworkIcon.js +37 -0
- package/lib/components/atoms/icons/ActionCreateSubtaskIcon.js +37 -0
- package/lib/components/atoms/icons/ActionSummaryMessagesIcon.js +88 -0
- package/lib/components/atoms/icons/ActionSummaryTaskIcon.js +37 -0
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +1 -2
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +44 -4
- package/lib/components/molecules/ChatAIHome/styles.js +2 -2
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +3 -6
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +36 -15
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +19 -16
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +22 -8
- package/lib/components/molecules/ChatFooter/ChatFooter.js +3 -3
- package/lib/components/organisms/ChatAI/ChatAI.js +5 -6
- package/lib/constants/maiaTaskPanelAccess.js +26 -0
- package/lib/constants/permissions/utils.js +2 -2
- package/lib/context/global-context.js +1 -1
- package/lib/dev/DevChatAI.js +89 -17
- package/lib/dev/DevContextMentionInput.js +3 -1
- package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
- package/lib/hooks/useChatManager/useChatManager.js +121 -22
- package/lib/hooks/useChatMessages/useChatMessages.interface.js +1 -1
- package/lib/hooks/useChatMessages/useChatMessages.js +10 -3
- package/lib/hooks/useContextMentions.js +153 -9
- package/lib/hooks/useEvent.js +3 -1
- package/lib/hooks/useFrequentlyUsedActions.js +81 -0
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +12 -4
- package/lib/hooks/useProjectSearch.js +2 -4
- package/lib/hooks/useProjectSummaryConfig.js +24 -6
- package/lib/hooks/useSlashCommands.js +81 -0
- package/lib/lang/br/index.js +16 -1
- package/lib/lang/en/index.js +16 -1
- package/lib/lang/es/index.js +16 -1
- package/lib/lang/fr/index.js +16 -1
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +39 -0
- package/lib/services/maia/Actions/getSlashCommands.js +39 -0
- package/lib/services/maia/Actions/index.js +7 -0
- package/lib/services/maia/Agents/getAgents.js +13 -12
- package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
- package/lib/services/maia/Orchestrator/orchestrator.js +14 -4
- package/lib/services/maia/RecentProjects/getRecentProjects.js +6 -10
- package/lib/services/maia/index.js +3 -1
- package/lib/store/chatsStore.types.js +1 -1
- package/lib/types/Action.js +2 -0
- package/lib/types/Task.js +2 -0
- package/lib/types/contextMention.js +2 -2
- package/lib/types/global.d.js +1 -1
- package/lib/utils/actionCategoryMap.js +33 -0
- package/lib/utils/actionIconMap.js +49 -0
- package/lib/utils/formatQuickActionMessage.js +16 -0
- package/lib/utils/mapBackendLang.js +8 -0
- package/lib/utils/renderContextMentions.js +70 -27
- package/lib/utils/slashCommandMarker.js +23 -0
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNZXNzYWdlcy91c2VDaGF0TWVzc2FnZXMuaW50ZXJmYWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2VVc2VyIH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuXG5leHBvcnQgdHlwZSBVc2VDaGF0TWVzc2FnZXNQcm9wcyA9IHtcbiAgb25FcnJvcj86ICgpID0+IHZvaWRcbiAgY2hhdElkOiBzdHJpbmdcbiAgY3VycmVudFVzZXI6IENoYXRNZXNzYWdlVXNlclxuICB1c2VySW5pdGlhbE1lc3NhZ2U/
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNZXNzYWdlcy91c2VDaGF0TWVzc2FnZXMuaW50ZXJmYWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2VVc2VyIH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuXG5leHBvcnQgdHlwZSBVc2VDaGF0TWVzc2FnZXNQcm9wcyA9IHtcbiAgb25FcnJvcj86ICgpID0+IHZvaWRcbiAgY2hhdElkOiBzdHJpbmdcbiAgY3VycmVudFVzZXI6IENoYXRNZXNzYWdlVXNlclxuICB1c2VySW5pdGlhbE1lc3NhZ2U/OiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW11cbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgfVxuICBhZ2VudHM/OiBBZ2VudFtdXG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -16,6 +16,7 @@ import { useUser } from '../../context/cor-user';
|
|
|
16
16
|
import { useTabTaskDefault } from '../useTabTaskDefault';
|
|
17
17
|
import { TASK_URL_REGEX_PATTERN } from '../../constants/taskUrls';
|
|
18
18
|
import { mapCORLang } from '../../lang/utils';
|
|
19
|
+
import { formatQuickActionMessageForDisplay } from '../../utils/formatQuickActionMessage';
|
|
19
20
|
var rewriteTaskUrlsInContent = function rewriteTaskUrlsInContent(content, tabSegment) {
|
|
20
21
|
var taskUrlRegex = new RegExp(TASK_URL_REGEX_PATTERN, 'g');
|
|
21
22
|
return content.replace(taskUrlRegex, function (url) {
|
|
@@ -43,7 +44,10 @@ export var useChatMessages = function useChatMessages(_ref) {
|
|
|
43
44
|
id: 'user-initial-message',
|
|
44
45
|
date: new Date(),
|
|
45
46
|
user: currentUser,
|
|
46
|
-
message: userInitialMessage.message
|
|
47
|
+
message: formatQuickActionMessageForDisplay(userInitialMessage.message, {
|
|
48
|
+
fuaId: userInitialMessage.fuaId,
|
|
49
|
+
scId: userInitialMessage.scId
|
|
50
|
+
})
|
|
47
51
|
}, userInitialMessage.attachments ? {
|
|
48
52
|
attachments: userInitialMessage.attachments
|
|
49
53
|
} : {}), buildContextMessage(userInitialMessage.mentions) ? {
|
|
@@ -423,7 +427,10 @@ export var useChatMessages = function useChatMessages(_ref) {
|
|
|
423
427
|
id: 'user-initial-message',
|
|
424
428
|
date: new Date(),
|
|
425
429
|
user: currentUser,
|
|
426
|
-
message: userInitialMessage.message
|
|
430
|
+
message: formatQuickActionMessageForDisplay(userInitialMessage.message, {
|
|
431
|
+
fuaId: userInitialMessage.fuaId,
|
|
432
|
+
scId: userInitialMessage.scId
|
|
433
|
+
})
|
|
427
434
|
}, userInitialMessage.attachments ? {
|
|
428
435
|
attachments: userInitialMessage.attachments
|
|
429
436
|
} : {}), buildContextMessage(userInitialMessage.mentions) ? {
|
|
@@ -506,4 +513,4 @@ export var useChatMessages = function useChatMessages(_ref) {
|
|
|
506
513
|
handleScroll: handleScroll
|
|
507
514
|
};
|
|
508
515
|
};
|
|
509
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlUHJvamVjdHMiLCJidWlsZENvbnRleHRNZXNzYWdlIiwibWFpYSIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlVXNlciIsInVzZVRhYlRhc2tEZWZhdWx0IiwiVEFTS19VUkxfUkVHRVhfUEFUVEVSTiIsIm1hcENPUkxhbmciLCJyZXdyaXRlVGFza1VybHNJbkNvbnRlbnQiLCJjb250ZW50IiwidGFiU2VnbWVudCIsInRhc2tVcmxSZWdleCIsIlJlZ0V4cCIsInJlcGxhY2UiLCJ1cmwiLCJ1c2VDaGF0TWVzc2FnZXMiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJvbkVycm9yIiwiY2hhdElkIiwiY3VycmVudFVzZXIiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJfcmVmJGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwidCIsImkxOG4iLCJ1c2VyIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJsb2FkaW5nTWVzc2FnZXMiLCJzZXRMb2FkaW5nTWVzc2FnZXMiLCJfdXNlU3RhdGUzIiwiX29iamVjdFNwcmVhZCIsImlkIiwiZGF0ZSIsIkRhdGUiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJtZW50aW9ucyIsImNvbnRleHRNZXNzYWdlIiwiX3VzZVN0YXRlNCIsIm1lc3NhZ2VzIiwic2V0TWVzc2FnZXMiLCJfdXNlUHJvamVjdHMiLCJmZXRjaFByb2plY3RzIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RBZ2VudCIsInNldENoaXBzUHJvamVjdCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJwcm9qZWN0IiwiX3VzZVRhYlRhc2tEZWZhdWx0IiwiZ2V0VGFiVGFza0RlZmF1bHQiLCJ0YWJUYXNrRGVmYXVsdCIsInJlZmV0Y2hUYWJUYXNrRGVmYXVsdCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNMb2FkaW5nTW9yZU1lc3NhZ2VzIiwic2V0SXNMb2FkaW5nTW9yZU1lc3NhZ2VzIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJsYXN0RXZhbHVhdGVkS2V5Iiwic2V0TGFzdEV2YWx1YXRlZEtleSIsImlzTG9hZGluZ1JlZiIsImluaXRpYWxMb2FkRG9uZSIsInByZXZpb3VzQ2hhdElkIiwic2V0Q29udmVyc2F0aW9uQ29udGV4dEZyb21NZXRhZGF0YSIsIl9yZWYzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfcmVmMiIsInByb2plY3RJZE1lc3NhZ2UiLCJwcm9qZWN0TmFtZUZyb21TZXNzaW9uIiwiY2xpZW50SWRGcm9tU2Vzc2lvbiIsImNsaWVudE5hbWVGcm9tU2Vzc2lvbiIsInByb2plY3RzIiwiaGFzTXVsdGlBZ2VudHNBY2Nlc3MiLCJwcm9qZWN0SWROdW0iLCJmb3VuZFByb2plY3QiLCJfZm91bmRQcm9qZWN0JGNsaWVudCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiTnVtYmVyIiwibmFtZSIsImFicnVwdCIsInNlbnQiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiZmluZCIsInAiLCJwcm9qZWN0TmFtZSIsImNsaWVudE5hbWUiLCJjbGllbnQiLCJwcm9qZWN0SWQiLCJTdHJpbmciLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImxvYWRNZXNzYWdlcyIsIl9jYWxsZWUyIiwiX3lpZWxkJG1haWEkQ2hhdHMkZ2V0IiwiaXRlbXMiLCJuZXh0SXRlbSIsImFnZW50RGVsZXRlZCIsImFnZW50Tm9QZXJtaXNzaW9uIiwiaGFzQWdlbnRBY2Nlc3MiLCJoYXNBZ2VudFBlcm1pc3Npb24iLCJwcm9qZWN0RGVsZXRlZCIsImFnZW50SW5MaXN0IiwiY29udGV4dFByb2plY3RJZCIsIml0ZW1zVG9TZXQiLCJ0YWIiLCJfdCIsIl9jb250ZXh0MiIsImN1cnJlbnQiLCJDaGF0cyIsImdldENoYXRNZXNzYWdlcyIsIm9mZnNldCIsImNhbmNlbGxlZFRleHQiLCJsYW5nIiwibGFuZ3VhZ2UiLCJjbGllbnRJZCIsImVtb2ppIiwidHlwZSIsImlzX2RlbGV0ZWQiLCJkZWxldGVkX2F0IiwiZGVsZXRlZEF0IiwiY29ubmVjdG9ycyIsInZpZXciLCJhZ2VudCIsImlzX2Zyb21fY29udmVyc2F0aW9uIiwicHJvamVjdF9kZWxldGVkIiwiYSIsInVuZGVmaW5lZCIsImhhc19ub3RfYWNjZXNzIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsInBhcnNlSW50IiwiY29uY2F0IiwibWFwIiwiaXRlbSIsImZpbmlzaCIsImxvYWRNb3JlTWVzc2FnZXMiLCJfcmVmNSIsIl9jYWxsZWUzIiwiY29udGFpbmVyIiwib2xkU2Nyb2xsSGVpZ2h0Iiwib2xkU2Nyb2xsVG9wIiwiX3lpZWxkJG1haWEkQ2hhdHMkZ2V0MiIsIml0ZW1zVG9NZXJnZSIsIm5ld01lc3NhZ2VzIiwiX3QyIiwiX2NvbnRleHQzIiwic2Nyb2xsSGVpZ2h0Iiwic2Nyb2xsVG9wIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic2xpY2UiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjb250YWluZXJSZWYiLCJuZXdTY3JvbGxIZWlnaHQiLCJoZWlnaHREaWZmZXJlbmNlIiwiX3gyIiwiaGFuZGxlU2Nyb2xsIiwiY2xpZW50SGVpZ2h0Iiwic2Nyb2xsUGVyY2VudGFnZSIsImRpZFJld3JpdGVSZWYiLCJsZW5ndGgiLCJuZWVkc1Jld3JpdGUiLCJzb21lIiwibXNnIiwibWF0Y2hlcyIsIm1hdGNoIiwiZW5kc1dpdGgiLCJpbmNsdWRlcyIsInJld3JpdHRlbiIsImFkZE1lc3NhZ2UiLCJleGlzdGluZ01lc3NhZ2VJbmRleCIsImZpbmRJbmRleCIsInJlbW92ZU1lc3NhZ2UiLCJtZXNzYWdlSWQiLCJmaWx0ZXIiLCJoYXNNb3JlTWVzc2FnZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlQ2hhdE1lc3NhZ2VzL3VzZUNoYXRNZXNzYWdlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VQcm9qZWN0cyB9IGZyb20gJy4uL3VzZVByb2plY3RzJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgYnVpbGRDb250ZXh0TWVzc2FnZSB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IFVzZUNoYXRNZXNzYWdlc1Byb3BzIH0gZnJvbSAnLi91c2VDaGF0TWVzc2FnZXMuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlVGFiVGFza0RlZmF1bHQgfSBmcm9tICcuLi91c2VUYWJUYXNrRGVmYXVsdCdcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vbGFuZy91dGlscydcblxuY29uc3QgcmV3cml0ZVRhc2tVcmxzSW5Db250ZW50ID0gKGNvbnRlbnQ6IHN0cmluZywgdGFiU2VnbWVudDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gIHJldHVybiBjb250ZW50LnJlcGxhY2UodGFza1VybFJlZ2V4LCB1cmwgPT5cbiAgICB1cmwucmVwbGFjZSgvXFwvKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpKD89JHxcXD8pLywgdGFiU2VnbWVudClcbiAgKVxufVxuXG5leHBvcnQgY29uc3QgdXNlQ2hhdE1lc3NhZ2VzID0gKHtcbiAgb25FcnJvcixcbiAgY2hhdElkLFxuICBjdXJyZW50VXNlcixcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBhZ2VudHMgPSBbXSxcbn06IFVzZUNoYXRNZXNzYWdlc1Byb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgdXNlclBlcm1pc3Npb25zID0gdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50c1xuICBjb25zdCBbbG9hZGluZ01lc3NhZ2VzLCBzZXRMb2FkaW5nTWVzc2FnZXNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFttZXNzYWdlcywgc2V0TWVzc2FnZXNdID0gdXNlU3RhdGU8Q2hhdE1lc3NhZ2VbXT4oXG4gICAgdXNlckluaXRpYWxNZXNzYWdlXG4gICAgICA/IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3VzZXItaW5pdGlhbC1tZXNzYWdlJyxcbiAgICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgICAgIG1lc3NhZ2U6IHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgICAgLi4uKGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKVxuICAgICAgICAgICAgICA/IHsgY29udGV4dE1lc3NhZ2U6IGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKSB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIDogW11cbiAgKVxuICBjb25zdCB7IGZldGNoUHJvamVjdHMgfSA9IHVzZVByb2plY3RzKClcbiAgY29uc3QgeyBzZWxlY3RBZ2VudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHByb2plY3QgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7IGdldFRhYlRhc2tEZWZhdWx0LCB0YWJUYXNrRGVmYXVsdCwgcmVmZXRjaFRhYlRhc2tEZWZhdWx0IH0gPSB1c2VUYWJUYXNrRGVmYXVsdCgpXG4gIGNvbnN0IFtpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIHNldElzTG9hZGluZ01vcmVNZXNzYWdlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xhc3RFdmFsdWF0ZWRLZXksIHNldExhc3RFdmFsdWF0ZWRLZXldID0gdXNlU3RhdGU8bnVtYmVyIHwgdW5kZWZpbmVkPigwKVxuICBjb25zdCBpc0xvYWRpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGluaXRpYWxMb2FkRG9uZSA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgcHJldmlvdXNDaGF0SWQgPSB1c2VSZWYoY2hhdElkKVxuXG4gIGNvbnN0IHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoe1xuICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgIH06IHtcbiAgICAgIHByb2plY3RJZE1lc3NhZ2U6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIGNsaWVudElkRnJvbVNlc3Npb246IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIGNsaWVudE5hbWVGcm9tU2Vzc2lvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgIH0pID0+IHtcbiAgICAgIC8vIENvbnZlcnNhY2nDs24gY29uIGNsaWVudF9tZXRhZGF0YTogc2V0ZWFyIGNsaWVudGUgeSBsaW1waWFyIHByb3llY3RvXG4gICAgICBpZiAoY2xpZW50SWRGcm9tU2Vzc2lvbiAhPSBudWxsICYmIGNsaWVudE5hbWVGcm9tU2Vzc2lvbikge1xuICAgICAgICBzZXRDbGllbnQoeyBpZDogTnVtYmVyKGNsaWVudElkRnJvbVNlc3Npb24pLCBuYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhwcm9qZWN0SWRNZXNzYWdlKVxuICAgICAgY29uc3QgaGFzTXVsdGlBZ2VudHNBY2Nlc3MgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgICAgIGlmIChwcm9qZWN0SWRNZXNzYWdlICYmIGhhc011bHRpQWdlbnRzQWNjZXNzKSB7XG4gICAgICAgIGNvbnN0IHByb2plY3RJZE51bSA9IE51bWJlcihwcm9qZWN0SWRNZXNzYWdlKVxuICAgICAgICBjb25zdCBmb3VuZFByb2plY3QgPSBwcm9qZWN0cz8uZmluZChwID0+IE51bWJlcihwLmlkKSA9PT0gcHJvamVjdElkTnVtKVxuXG4gICAgICAgIGlmIChmb3VuZFByb2plY3QpIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgcHJvamVjdE5hbWU6IGZvdW5kUHJvamVjdC5uYW1lLFxuICAgICAgICAgICAgY2xpZW50TmFtZTogZm91bmRQcm9qZWN0LmNsaWVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGZvdW5kUHJvamVjdC5pZCksXG4gICAgICAgICAgfSlcbiAgICAgICAgICBzZXRQcm9qZWN0KGZvdW5kUHJvamVjdClcbiAgICAgICAgfSBlbHNlIGlmIChwcm9qZWN0TmFtZUZyb21TZXNzaW9uKSB7XG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhwcm9qZWN0SWRNZXNzYWdlKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHNldFByb2plY3QoeyBpZDogcHJvamVjdElkTnVtLCBuYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9XG4gICAgfSxcbiAgICBbZmV0Y2hQcm9qZWN0cywgc2V0Q2xpZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldFByb2plY3RdXG4gIClcblxuICBjb25zdCBsb2FkTWVzc2FnZXMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlcyh0cnVlKVxuICAgICAgaW5pdGlhbExvYWREb25lLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgY29uc3Qge1xuICAgICAgICBpdGVtcyxcbiAgICAgICAgbmV4dEl0ZW0sXG4gICAgICAgIGFnZW50RGVsZXRlZCxcbiAgICAgICAgYWdlbnROb1Blcm1pc3Npb24sXG4gICAgICAgIGhhc0FnZW50QWNjZXNzLFxuICAgICAgICBoYXNBZ2VudFBlcm1pc3Npb24sXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIHByb2plY3REZWxldGVkLFxuICAgICAgICBjbGllbnRJZDogY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgY2xpZW50TmFtZTogY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgfSA9IGF3YWl0IG1haWEuQ2hhdHMuZ2V0Q2hhdE1lc3NhZ2VzKHtcbiAgICAgICAgY2hhdElkLFxuICAgICAgICBjdXJyZW50VXNlcixcbiAgICAgICAgb2Zmc2V0OiBsYXN0RXZhbHVhdGVkS2V5LFxuICAgICAgICBjYW5jZWxsZWRUZXh0OiB0KCdjaGF0LmNhbmNlbGxlZCcpLFxuICAgICAgICBsYW5nOiBtYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpLFxuICAgICAgfSlcbiAgICAgIGlmIChhZ2VudERlbGV0ZWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgIGlkOiBhZ2VudERlbGV0ZWQuaWQsXG4gICAgICAgICAgbmFtZTogYWdlbnREZWxldGVkLm5hbWUsXG4gICAgICAgICAgZW1vamk6IGFnZW50RGVsZXRlZC5lbW9qaSxcbiAgICAgICAgICB0eXBlOiAnY3VzdG9tJyxcbiAgICAgICAgICBpc19kZWxldGVkOiB0cnVlLFxuICAgICAgICAgIGRlbGV0ZWRfYXQ6IGFnZW50RGVsZXRlZC5kZWxldGVkQXQsXG4gICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uPy5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGVsIGFnZW50ZSBubyBlc3TDoSBlbiBsYSBsaXN0YSBwZXJvIHRpZW5lIHBlcm1pc29zLCBhY2Nlc28geSBubyBlc3TDoSBlbGltaW5hZG8sIHNldGVhcmxvIG5vcm1hbG1lbnRlXG4gICAgICAvLyBFeGNsdWlyIGFnZW50ZXMgbm8tY3VzdG9tIHBhcmEgdXN1YXJpb3MgY29uIHJvbGVzIGRlc2hhYmlsaXRhZG9zXG4gICAgICBpZiAoXG4gICAgICAgIGFnZW50Tm9QZXJtaXNzaW9uICYmXG4gICAgICAgICFhZ2VudERlbGV0ZWQgJiZcbiAgICAgICAgdXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAgIGhhc0FnZW50QWNjZXNzICYmXG4gICAgICAgIGhhc0FnZW50UGVybWlzc2lvbiAmJlxuICAgICAgICAhYWdlbnRzLmZpbmQoYWdlbnQgPT4gYWdlbnQuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKVxuICAgICAgKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHtcbiAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICBlbW9qaTogYWdlbnROb1Blcm1pc3Npb24uZW1vamksXG4gICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnLFxuICAgICAgICAgIGlzX2Zyb21fY29udmVyc2F0aW9uOiB0cnVlLFxuICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHByb2plY3REZWxldGVkID8geyBwcm9qZWN0X2RlbGV0ZWQ6IHsgbmFtZTogcHJvamVjdERlbGV0ZWQubmFtZSB9IH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGVsIGFnZW50ZSBlc3TDoSBlbiBsYSBsaXN0YSB5IHRpZW5lIGFjY2Vzby9wZXJtaXNvcywgYWN0dWFsaXphciBwcm9qZWN0X2RlbGV0ZWQgKG8gbGltcGlhcmxvIGFsIGNhbWJpYXIgZGUgY2hhdClcbiAgICAgIGlmIChcbiAgICAgICAgYWdlbnROb1Blcm1pc3Npb24gJiZcbiAgICAgICAgIWFnZW50RGVsZXRlZCAmJlxuICAgICAgICBoYXNBZ2VudEFjY2VzcyAmJlxuICAgICAgICBoYXNBZ2VudFBlcm1pc3Npb24gJiZcbiAgICAgICAgYWdlbnRzLmZpbmQoYSA9PiBhLmlkID09PSBhZ2VudE5vUGVybWlzc2lvbi5pZClcbiAgICAgICkge1xuICAgICAgICBjb25zdCBhZ2VudEluTGlzdCA9IGFnZW50cy5maW5kKGEgPT4gYS5pZCA9PT0gYWdlbnROb1Blcm1pc3Npb24uaWQpXG4gICAgICAgIGlmIChhZ2VudEluTGlzdCkge1xuICAgICAgICAgIHNlbGVjdEFnZW50KHtcbiAgICAgICAgICAgIC4uLmFnZW50SW5MaXN0LFxuICAgICAgICAgICAgLi4uKHByb2plY3REZWxldGVkID8geyBwcm9qZWN0X2RlbGV0ZWQ6IHsgbmFtZTogcHJvamVjdERlbGV0ZWQubmFtZSB9IH0gOiB7IHByb2plY3RfZGVsZXRlZDogdW5kZWZpbmVkIH0pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU2kgZWwgYWdlbnRlIG5vIHRpZW5lIGFjY2VzbyBvIHBlcm1pc29zIHNlZ8O6biBsYSByZXNwdWVzdGEgZGUgc2Vzc2lvbnMsIHNlbGVjY2lvbmFybG8gY29uIGVsIGZsYWcgY29ycmVzcG9uZGllbnRlXG4gICAgICAvLyBMYSB2YWxpZGFjacOzbiBhaG9yYSBzZSBiYXNhIGVuIGxhcyBwcm9waWVkYWRlcyBoYXNfYWdlbnRfYWNjZXNzIHkgaGFzX2FnZW50X3Blcm1pc3Npb24gZGUgbGEgcmVzcHVlc3RhXG4gICAgICBpZiAoYWdlbnROb1Blcm1pc3Npb24gJiYgIWFnZW50RGVsZXRlZCkge1xuICAgICAgICBpZiAoIWhhc0FnZW50QWNjZXNzKSB7XG4gICAgICAgICAgLy8gQ2FzbyAxOiBObyB0aWVuZSBhY2Nlc28gYWwgYWdlbnRlXG4gICAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgICAgaWQ6IGFnZW50Tm9QZXJtaXNzaW9uLmlkLFxuICAgICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICAgIGVtb2ppOiBhZ2VudE5vUGVybWlzc2lvbi5lbW9qaSxcbiAgICAgICAgICAgIHR5cGU6IGFnZW50Tm9QZXJtaXNzaW9uLnR5cGUgYXMgJ3BtJyB8ICdjdXN0b20nIHwgJ2Nsb25lJyxcbiAgICAgICAgICAgIGhhc19ub3RfYWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihwcm9qZWN0RGVsZXRlZCA/IHsgcHJvamVjdF9kZWxldGVkOiB7IG5hbWU6IHByb2plY3REZWxldGVkLm5hbWUgfSB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc0FnZW50UGVybWlzc2lvbikge1xuICAgICAgICAgIC8vIENhc28gMjogTm8gdGllbmUgcGVybWlzb3MgcGFyYSB2aXN1YWxpemFyL2ludGVyYWN0dWFyIGNvbiBlbCBhZ2VudGVcbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnLFxuICAgICAgICAgICAgaGFzX25vdF9wZXJtaXNzaW9uczogdHJ1ZSxcbiAgICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKHByb2plY3REZWxldGVkKSB7XG4gICAgICAgICAgLy8gQ2FzbyAzOiBFbCBwcm95ZWN0byBkZSBsYSBjb252ZXJzYWNpw7NuIGZ1ZSBlbGltaW5hZG9cbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnLFxuICAgICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAgIHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhKHtcbiAgICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgfSlcblxuICAgICAgLy8gU2kgaGF5IHByb3llY3RvIGVuIGxhIGNvbnZlcnNhY2nDs24sIHJlZXNjcmliaXIgVVJMcyBkZSB0YXJlYXMgY29uIGVsIHRhYiBkZWwgdXN1YXJpbyAobWUpXG4gICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gcHJvamVjdElkTWVzc2FnZSA/IHBhcnNlSW50KFN0cmluZyhwcm9qZWN0SWRNZXNzYWdlKSwgMTApIDogbnVsbFxuICAgICAgbGV0IGl0ZW1zVG9TZXQgPSBpdGVtc1xuICAgICAgaWYgKGNvbnRleHRQcm9qZWN0SWQpIHtcbiAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQoMSlcbiAgICAgICAgY29uc3QgdGFiU2VnbWVudCA9IHRhYiA/IGAvJHt0YWJ9YCA6ICcvZGV0YWlsJ1xuICAgICAgICBpdGVtc1RvU2V0ID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIG1lc3NhZ2U6IHJld3JpdGVUYXNrVXJsc0luQ29udGVudChpdGVtLm1lc3NhZ2UgfHwgJycsIHRhYlNlZ21lbnQpLFxuICAgICAgICB9KSlcbiAgICAgIH1cbiAgICAgIHNldE1lc3NhZ2VzKGl0ZW1zVG9TZXQpXG4gICAgICBzZXRMYXN0RXZhbHVhdGVkS2V5KE51bWJlcihuZXh0SXRlbSkpXG4gICAgICBpbml0aWFsTG9hZERvbmUuY3VycmVudCA9IHRydWVcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgb25FcnJvcj8uKClcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZ01lc3NhZ2VzKGZhbHNlKVxuICAgIH1cbiAgfSwgW2NoYXRJZCwgY3VycmVudFVzZXIsIHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEsIG9uRXJyb3IsIGdldFRhYlRhc2tEZWZhdWx0XSlcblxuICBjb25zdCBsb2FkTW9yZU1lc3NhZ2VzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoaXNMb2FkaW5nUmVmLmN1cnJlbnQgfHwgIWxhc3RFdmFsdWF0ZWRLZXkgfHwgIWNvbnRhaW5lcikgcmV0dXJuXG4gICAgICB0cnkge1xuICAgICAgICBpc0xvYWRpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNMb2FkaW5nTW9yZU1lc3NhZ2VzKHRydWUpXG5cbiAgICAgICAgY29uc3Qgb2xkU2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyLnNjcm9sbEhlaWdodFxuICAgICAgICBjb25zdCBvbGRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wXG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgIG5leHRJdGVtLFxuICAgICAgICAgIHByb2plY3RJZDogcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnROYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIH0gPSBhd2FpdCBtYWlhLkNoYXRzLmdldENoYXRNZXNzYWdlcyh7XG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgICAgIG9mZnNldDogbGFzdEV2YWx1YXRlZEtleSxcbiAgICAgICAgICBsYW5nOiBtYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpLFxuICAgICAgICB9KVxuXG4gICAgICAgIGF3YWl0IHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEoe1xuICAgICAgICAgIHByb2plY3RJZE1lc3NhZ2UsXG4gICAgICAgICAgcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTaSBoYXkgcHJveWVjdG8gZW4gbGEgY29udmVyc2FjacOzbiwgcmVlc2NyaWJpciBVUkxzIGRlIHRhcmVhcyBlbiBsb3MgbWVuc2FqZXMgY2FyZ2Fkb3NcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3RJZE1lc3NhZ2UgPyBwYXJzZUludChTdHJpbmcocHJvamVjdElkTWVzc2FnZSksIDEwKSA6IG51bGxcbiAgICAgICAgbGV0IGl0ZW1zVG9NZXJnZSA9IGl0ZW1zXG4gICAgICAgIGlmIChjb250ZXh0UHJvamVjdElkKSB7XG4gICAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQoMSlcbiAgICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgICAgaXRlbXNUb01lcmdlID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICBtZXNzYWdlOiByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQoaXRlbS5tZXNzYWdlIHx8ICcnLCB0YWJTZWdtZW50KSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFsuLi5tZXNzYWdlcy5zbGljZSgwLCAxKSwgLi4uaXRlbXNUb01lcmdlLCAuLi5tZXNzYWdlcy5zbGljZSgxKV1cbiAgICAgICAgc2V0TWVzc2FnZXMobmV3TWVzc2FnZXMpXG4gICAgICAgIHNldExhc3RFdmFsdWF0ZWRLZXkoTnVtYmVyKG5leHRJdGVtKSlcblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBjb250YWluZXJcbiAgICAgICAgICAgIGlmIChjb250YWluZXJSZWYpIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3U2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyUmVmLnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICBjb25zdCBoZWlnaHREaWZmZXJlbmNlID0gbmV3U2Nyb2xsSGVpZ2h0IC0gb2xkU2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgIGNvbnRhaW5lclJlZi5zY3JvbGxUb3AgPSBvbGRTY3JvbGxUb3AgKyBoZWlnaHREaWZmZXJlbmNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG9uRXJyb3I/LigpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXMoZmFsc2UpXG4gICAgICAgIGlzTG9hZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjaGF0SWQsIGN1cnJlbnRVc2VyLCBsYXN0RXZhbHVhdGVkS2V5LCBvbkVycm9yLCBtZXNzYWdlcywgZ2V0VGFiVGFza0RlZmF1bHQsIHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGFdXG4gIClcblxuICBjb25zdCBoYW5kbGVTY3JvbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIGlmICghY29udGFpbmVyIHx8IGlzTG9hZGluZ1JlZi5jdXJyZW50IHx8ICFpbml0aWFsTG9hZERvbmUuY3VycmVudCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgICBjb25zdCBzY3JvbGxQZXJjZW50YWdlID0gc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0ID4gMCA/IChzY3JvbGxUb3AgLyAoc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0KSkgKiAxMDAgOiAwXG5cbiAgICAgIGlmIChzY3JvbGxQZXJjZW50YWdlIDwgMTApIHtcbiAgICAgICAgbG9hZE1vcmVNZXNzYWdlcyhjb250YWluZXIpXG4gICAgICB9XG4gICAgfSxcbiAgICBbbG9hZE1vcmVNZXNzYWdlc11cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoYXRJZCAhPT0gcHJldmlvdXNDaGF0SWQuY3VycmVudCkge1xuICAgICAgc2V0TWVzc2FnZXMoXG4gICAgICAgIHVzZXJJbml0aWFsTWVzc2FnZVxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICd1c2VyLWluaXRpYWwtbWVzc2FnZScsXG4gICAgICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgICAgICAgLi4uKGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKVxuICAgICAgICAgICAgICAgICAgPyB7IGNvbnRleHRNZXNzYWdlOiBidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucykgfVxuICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiBbXVxuICAgICAgKVxuICAgICAgc2V0TGFzdEV2YWx1YXRlZEtleSgwKVxuICAgICAgaXNMb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaW5pdGlhbExvYWREb25lLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcHJldmlvdXNDaGF0SWQuY3VycmVudCA9IGNoYXRJZFxuXG4gICAgICAvLyBMaW1waWFyIGVsIGVzdGFkbyBkZWwgcHJveWVjdG8gY3VhbmRvIGNhbWJpYSBkZSBjb252ZXJzYWNpw7NuXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgIHNldFByb2plY3QobnVsbClcblxuICAgICAgLy8gVm9sdmVyIGEgZWplY3V0YXIgbGEgcXVlcnkgbWUgcGFyYSB0ZW5lciB0YWJUYXNrRGVmYXVsdCBhY3R1YWxpemFkbyBlbiBsYSBudWV2YSBjb252ZXJzYWNpw7NuXG4gICAgICByZWZldGNoVGFiVGFza0RlZmF1bHQoKVxuXG4gICAgICBpZiAoIXVzZXJJbml0aWFsTWVzc2FnZSkge1xuICAgICAgICBsb2FkTWVzc2FnZXMoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2NoYXRJZCwgdXNlckluaXRpYWxNZXNzYWdlLCBjdXJyZW50VXNlciwgbG9hZE1lc3NhZ2VzLCBzZXRDaGlwc1Byb2plY3QsIHNldFByb2plY3QsIHJlZmV0Y2hUYWJUYXNrRGVmYXVsdF0pXG5cbiAgLy8gQ3VhbmRvIHRhYlRhc2tEZWZhdWx0IHBhc2EgYSBlc3RhciBkaXNwb25pYmxlIGRlc3B1w6lzIGRlIGNhcmdhciwgcmVlc2NyaWJpciBVUkxzIGRlIHRhcmVhcyBlbiBsb3MgbWVuc2FqZXMgeWEgY2FyZ2Fkb3MuXG4gIC8vIFJlZiBwYXJhIGV2aXRhciBidWNsZTogc2V0TWVzc2FnZXMocmV3cml0dGVuKSBjYW1iaWEgbWVzc2FnZXMgeSByZS1lamVjdXRhIGVsIGVmZWN0bzsgc29sbyByZWVzY3JpYmltb3MgdW5hIHZleiBwb3IgbG90ZS5cbiAgY29uc3QgZGlkUmV3cml0ZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXRhYlRhc2tEZWZhdWx0IHx8ICFwcm9qZWN0Py5pZCB8fCBtZXNzYWdlcy5sZW5ndGggPT09IDApIHJldHVyblxuICAgIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICAgIGNvbnN0IHRhYlNlZ21lbnQgPSBgLyR7dGFiVGFza0RlZmF1bHR9YFxuICAgIGNvbnN0IG5lZWRzUmV3cml0ZSA9IG1lc3NhZ2VzLnNvbWUobXNnID0+IHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBtc2cubWVzc2FnZSB8fCAnJ1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGNvbnRlbnQubWF0Y2godGFza1VybFJlZ2V4KVxuICAgICAgaWYgKCFtYXRjaGVzPy5sZW5ndGgpIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIG1hdGNoZXMuc29tZSh1cmwgPT4gIXVybC5lbmRzV2l0aChgLyR7dGFiVGFza0RlZmF1bHR9YCkgJiYgIXVybC5pbmNsdWRlcyhgLyR7dGFiVGFza0RlZmF1bHR9P2ApKVxuICAgIH0pXG4gICAgaWYgKCFuZWVkc1Jld3JpdGUpIHtcbiAgICAgIGRpZFJld3JpdGVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGRpZFJld3JpdGVSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgZGlkUmV3cml0ZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIGNvbnN0IHJld3JpdHRlbiA9IG1lc3NhZ2VzLm1hcChtc2cgPT4gKHtcbiAgICAgIC4uLm1zZyxcbiAgICAgIG1lc3NhZ2U6IHJld3JpdGVUYXNrVXJsc0luQ29udGVudChtc2cubWVzc2FnZSB8fCAnJywgdGFiU2VnbWVudCksXG4gICAgfSkpXG4gICAgc2V0TWVzc2FnZXMocmV3cml0dGVuKVxuICB9LCBbdGFiVGFza0RlZmF1bHQsIHByb2plY3Q/LmlkLCBtZXNzYWdlc10pXG5cbiAgY29uc3QgYWRkTWVzc2FnZSA9IHVzZUNhbGxiYWNrKChtZXNzYWdlOiBDaGF0TWVzc2FnZSkgPT4ge1xuICAgIHNldE1lc3NhZ2VzKHByZXYgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmdNZXNzYWdlSW5kZXggPSBwcmV2LmZpbmRJbmRleChtc2cgPT4gbXNnLmlkID09PSBtZXNzYWdlLmlkKVxuXG4gICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFsuLi5wcmV2XVxuICAgICAgICBuZXdNZXNzYWdlc1tleGlzdGluZ01lc3NhZ2VJbmRleF0gPSBtZXNzYWdlXG4gICAgICAgIHJldHVybiBuZXdNZXNzYWdlc1xuICAgICAgfVxuICAgICAgcmV0dXJuIFsuLi5wcmV2LCBtZXNzYWdlXVxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHJlbW92ZU1lc3NhZ2UgPSB1c2VDYWxsYmFjaygobWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBzZXRNZXNzYWdlcyhwcmV2ID0+IHByZXYuZmlsdGVyKG1zZyA9PiBtc2cuaWQgIT09IG1lc3NhZ2VJZCkpXG4gIH0sIFtdKVxuXG4gIHJldHVybiB7XG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIG1lc3NhZ2VzLFxuICAgIGhhc01vcmVNZXNzYWdlczogISFsYXN0RXZhbHVhdGVkS2V5LFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICBsb2FkTWVzc2FnZXMsXG4gICAgbG9hZE1vcmVNZXNzYWdlcyxcbiAgICBhZGRNZXNzYWdlLFxuICAgIHJlbW92ZU1lc3NhZ2UsXG4gICAgaGFuZGxlU2Nyb2xsLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBLFNBQVNBLFdBQVcsRUFBRUMsUUFBUSxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsUUFB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
|
|
516
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlUHJvamVjdHMiLCJidWlsZENvbnRleHRNZXNzYWdlIiwibWFpYSIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlVXNlciIsInVzZVRhYlRhc2tEZWZhdWx0IiwiVEFTS19VUkxfUkVHRVhfUEFUVEVSTiIsIm1hcENPUkxhbmciLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwicmV3cml0ZVRhc2tVcmxzSW5Db250ZW50IiwiY29udGVudCIsInRhYlNlZ21lbnQiLCJ0YXNrVXJsUmVnZXgiLCJSZWdFeHAiLCJyZXBsYWNlIiwidXJsIiwidXNlQ2hhdE1lc3NhZ2VzIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwib25FcnJvciIsImNoYXRJZCIsImN1cnJlbnRVc2VyIiwidXNlckluaXRpYWxNZXNzYWdlIiwiX3JlZiRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsInQiLCJpMThuIiwidXNlciIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibG9hZGluZ01lc3NhZ2VzIiwic2V0TG9hZGluZ01lc3NhZ2VzIiwiX3VzZVN0YXRlMyIsIl9vYmplY3RTcHJlYWQiLCJpZCIsImRhdGUiLCJEYXRlIiwibWVzc2FnZSIsImZ1YUlkIiwic2NJZCIsImF0dGFjaG1lbnRzIiwibWVudGlvbnMiLCJjb250ZXh0TWVzc2FnZSIsIl91c2VTdGF0ZTQiLCJtZXNzYWdlcyIsInNldE1lc3NhZ2VzIiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJzZXRDaGlwc1Byb2plY3QiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50IiwicHJvamVjdCIsIl91c2VUYWJUYXNrRGVmYXVsdCIsImdldFRhYlRhc2tEZWZhdWx0IiwidGFiVGFza0RlZmF1bHQiLCJyZWZldGNoVGFiVGFza0RlZmF1bHQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsInNldElzTG9hZGluZ01vcmVNZXNzYWdlcyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibGFzdEV2YWx1YXRlZEtleSIsInNldExhc3RFdmFsdWF0ZWRLZXkiLCJpc0xvYWRpbmdSZWYiLCJpbml0aWFsTG9hZERvbmUiLCJwcmV2aW91c0NoYXRJZCIsInNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEiLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZjIiLCJwcm9qZWN0SWRNZXNzYWdlIiwicHJvamVjdE5hbWVGcm9tU2Vzc2lvbiIsImNsaWVudElkRnJvbVNlc3Npb24iLCJjbGllbnROYW1lRnJvbVNlc3Npb24iLCJwcm9qZWN0cyIsImhhc011bHRpQWdlbnRzQWNjZXNzIiwicHJvamVjdElkTnVtIiwiZm91bmRQcm9qZWN0IiwiX2ZvdW5kUHJvamVjdCRjbGllbnQiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIk51bWJlciIsIm5hbWUiLCJhYnJ1cHQiLCJzZW50Iiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImZpbmQiLCJwIiwicHJvamVjdE5hbWUiLCJjbGllbnROYW1lIiwiY2xpZW50IiwicHJvamVjdElkIiwiU3RyaW5nIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJsb2FkTWVzc2FnZXMiLCJfY2FsbGVlMiIsIl95aWVsZCRtYWlhJENoYXRzJGdldCIsIml0ZW1zIiwibmV4dEl0ZW0iLCJhZ2VudERlbGV0ZWQiLCJhZ2VudE5vUGVybWlzc2lvbiIsImhhc0FnZW50QWNjZXNzIiwiaGFzQWdlbnRQZXJtaXNzaW9uIiwicHJvamVjdERlbGV0ZWQiLCJhZ2VudEluTGlzdCIsImNvbnRleHRQcm9qZWN0SWQiLCJpdGVtc1RvU2V0IiwidGFiIiwiX3QiLCJfY29udGV4dDIiLCJjdXJyZW50IiwiQ2hhdHMiLCJnZXRDaGF0TWVzc2FnZXMiLCJvZmZzZXQiLCJjYW5jZWxsZWRUZXh0IiwibGFuZyIsImxhbmd1YWdlIiwiY2xpZW50SWQiLCJlbW9qaSIsInR5cGUiLCJpc19kZWxldGVkIiwiZGVsZXRlZF9hdCIsImRlbGV0ZWRBdCIsImNvbm5lY3RvcnMiLCJ2aWV3IiwiYWdlbnQiLCJpc19mcm9tX2NvbnZlcnNhdGlvbiIsInByb2plY3RfZGVsZXRlZCIsImEiLCJ1bmRlZmluZWQiLCJoYXNfbm90X2FjY2VzcyIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJwYXJzZUludCIsImNvbmNhdCIsIm1hcCIsIml0ZW0iLCJmaW5pc2giLCJsb2FkTW9yZU1lc3NhZ2VzIiwiX3JlZjUiLCJfY2FsbGVlMyIsImNvbnRhaW5lciIsIm9sZFNjcm9sbEhlaWdodCIsIm9sZFNjcm9sbFRvcCIsIl95aWVsZCRtYWlhJENoYXRzJGdldDIiLCJpdGVtc1RvTWVyZ2UiLCJuZXdNZXNzYWdlcyIsIl90MiIsIl9jb250ZXh0MyIsInNjcm9sbEhlaWdodCIsInNjcm9sbFRvcCIsIl90b0NvbnN1bWFibGVBcnJheSIsInNsaWNlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY29udGFpbmVyUmVmIiwibmV3U2Nyb2xsSGVpZ2h0IiwiaGVpZ2h0RGlmZmVyZW5jZSIsIl94MiIsImhhbmRsZVNjcm9sbCIsImNsaWVudEhlaWdodCIsInNjcm9sbFBlcmNlbnRhZ2UiLCJkaWRSZXdyaXRlUmVmIiwibGVuZ3RoIiwibmVlZHNSZXdyaXRlIiwic29tZSIsIm1zZyIsIm1hdGNoZXMiLCJtYXRjaCIsImVuZHNXaXRoIiwiaW5jbHVkZXMiLCJyZXdyaXR0ZW4iLCJhZGRNZXNzYWdlIiwiZXhpc3RpbmdNZXNzYWdlSW5kZXgiLCJmaW5kSW5kZXgiLCJyZW1vdmVNZXNzYWdlIiwibWVzc2FnZUlkIiwiZmlsdGVyIiwiaGFzTW9yZU1lc3NhZ2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNZXNzYWdlcy91c2VDaGF0TWVzc2FnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IENoYXRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBVc2VDaGF0TWVzc2FnZXNQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1lc3NhZ2VzLmludGVyZmFjZSdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQgeyBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlJ1xuXG5jb25zdCByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQgPSAoY29udGVudDogc3RyaW5nLCB0YWJTZWdtZW50OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZSh0YXNrVXJsUmVnZXgsIHVybCA9PlxuICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICApXG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWVzc2FnZXMgPSAoe1xuICBvbkVycm9yLFxuICBjaGF0SWQsXG4gIGN1cnJlbnRVc2VyLFxuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIGFnZW50cyA9IFtdLFxufTogVXNlQ2hhdE1lc3NhZ2VzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUKClcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG4gIGNvbnN0IFtsb2FkaW5nTWVzc2FnZXMsIHNldExvYWRpbmdNZXNzYWdlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW21lc3NhZ2VzLCBzZXRNZXNzYWdlc10gPSB1c2VTdGF0ZTxDaGF0TWVzc2FnZVtdPihcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2VcbiAgICAgID8gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAndXNlci1pbml0aWFsLW1lc3NhZ2UnLFxuICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICAgICAgbWVzc2FnZTogZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheSh1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSwge1xuICAgICAgICAgICAgICBmdWFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkLFxuICAgICAgICAgICAgICBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgICAgLi4uKGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKVxuICAgICAgICAgICAgICA/IHsgY29udGV4dE1lc3NhZ2U6IGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKSB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIDogW11cbiAgKVxuICBjb25zdCB7IGZldGNoUHJvamVjdHMgfSA9IHVzZVByb2plY3RzKClcbiAgY29uc3QgeyBzZWxlY3RBZ2VudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHByb2plY3QgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7IGdldFRhYlRhc2tEZWZhdWx0LCB0YWJUYXNrRGVmYXVsdCwgcmVmZXRjaFRhYlRhc2tEZWZhdWx0IH0gPSB1c2VUYWJUYXNrRGVmYXVsdCgpXG4gIGNvbnN0IFtpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIHNldElzTG9hZGluZ01vcmVNZXNzYWdlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xhc3RFdmFsdWF0ZWRLZXksIHNldExhc3RFdmFsdWF0ZWRLZXldID0gdXNlU3RhdGU8bnVtYmVyIHwgdW5kZWZpbmVkPigwKVxuICBjb25zdCBpc0xvYWRpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGluaXRpYWxMb2FkRG9uZSA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgcHJldmlvdXNDaGF0SWQgPSB1c2VSZWYoY2hhdElkKVxuXG4gIGNvbnN0IHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoe1xuICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgIH06IHtcbiAgICAgIHByb2plY3RJZE1lc3NhZ2U6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIGNsaWVudElkRnJvbVNlc3Npb246IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIGNsaWVudE5hbWVGcm9tU2Vzc2lvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgIH0pID0+IHtcbiAgICAgIC8vIENvbnZlcnNhY2nDs24gY29uIGNsaWVudF9tZXRhZGF0YTogc2V0ZWFyIGNsaWVudGUgeSBsaW1waWFyIHByb3llY3RvXG4gICAgICBpZiAoY2xpZW50SWRGcm9tU2Vzc2lvbiAhPSBudWxsICYmIGNsaWVudE5hbWVGcm9tU2Vzc2lvbikge1xuICAgICAgICBzZXRDbGllbnQoeyBpZDogTnVtYmVyKGNsaWVudElkRnJvbVNlc3Npb24pLCBuYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhwcm9qZWN0SWRNZXNzYWdlKVxuICAgICAgY29uc3QgaGFzTXVsdGlBZ2VudHNBY2Nlc3MgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgICAgIGlmIChwcm9qZWN0SWRNZXNzYWdlICYmIGhhc011bHRpQWdlbnRzQWNjZXNzKSB7XG4gICAgICAgIGNvbnN0IHByb2plY3RJZE51bSA9IE51bWJlcihwcm9qZWN0SWRNZXNzYWdlKVxuICAgICAgICBjb25zdCBmb3VuZFByb2plY3QgPSBwcm9qZWN0cz8uZmluZChwID0+IE51bWJlcihwLmlkKSA9PT0gcHJvamVjdElkTnVtKVxuXG4gICAgICAgIGlmIChmb3VuZFByb2plY3QpIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgcHJvamVjdE5hbWU6IGZvdW5kUHJvamVjdC5uYW1lLFxuICAgICAgICAgICAgY2xpZW50TmFtZTogZm91bmRQcm9qZWN0LmNsaWVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGZvdW5kUHJvamVjdC5pZCksXG4gICAgICAgICAgfSlcbiAgICAgICAgICBzZXRQcm9qZWN0KGZvdW5kUHJvamVjdClcbiAgICAgICAgfSBlbHNlIGlmIChwcm9qZWN0TmFtZUZyb21TZXNzaW9uKSB7XG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhwcm9qZWN0SWRNZXNzYWdlKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHNldFByb2plY3QoeyBpZDogcHJvamVjdElkTnVtLCBuYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9XG4gICAgfSxcbiAgICBbZmV0Y2hQcm9qZWN0cywgc2V0Q2xpZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldFByb2plY3RdXG4gIClcblxuICBjb25zdCBsb2FkTWVzc2FnZXMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlcyh0cnVlKVxuICAgICAgaW5pdGlhbExvYWREb25lLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgY29uc3Qge1xuICAgICAgICBpdGVtcyxcbiAgICAgICAgbmV4dEl0ZW0sXG4gICAgICAgIGFnZW50RGVsZXRlZCxcbiAgICAgICAgYWdlbnROb1Blcm1pc3Npb24sXG4gICAgICAgIGhhc0FnZW50QWNjZXNzLFxuICAgICAgICBoYXNBZ2VudFBlcm1pc3Npb24sXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIHByb2plY3REZWxldGVkLFxuICAgICAgICBjbGllbnRJZDogY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgY2xpZW50TmFtZTogY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgfSA9IGF3YWl0IG1haWEuQ2hhdHMuZ2V0Q2hhdE1lc3NhZ2VzKHtcbiAgICAgICAgY2hhdElkLFxuICAgICAgICBjdXJyZW50VXNlcixcbiAgICAgICAgb2Zmc2V0OiBsYXN0RXZhbHVhdGVkS2V5LFxuICAgICAgICBjYW5jZWxsZWRUZXh0OiB0KCdjaGF0LmNhbmNlbGxlZCcpLFxuICAgICAgICBsYW5nOiBtYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpLFxuICAgICAgfSlcbiAgICAgIGlmIChhZ2VudERlbGV0ZWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgIGlkOiBhZ2VudERlbGV0ZWQuaWQsXG4gICAgICAgICAgbmFtZTogYWdlbnREZWxldGVkLm5hbWUsXG4gICAgICAgICAgZW1vamk6IGFnZW50RGVsZXRlZC5lbW9qaSxcbiAgICAgICAgICB0eXBlOiAnY3VzdG9tJyxcbiAgICAgICAgICBpc19kZWxldGVkOiB0cnVlLFxuICAgICAgICAgIGRlbGV0ZWRfYXQ6IGFnZW50RGVsZXRlZC5kZWxldGVkQXQsXG4gICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uPy5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGVsIGFnZW50ZSBubyBlc3TDoSBlbiBsYSBsaXN0YSBwZXJvIHRpZW5lIHBlcm1pc29zLCBhY2Nlc28geSBubyBlc3TDoSBlbGltaW5hZG8sIHNldGVhcmxvIG5vcm1hbG1lbnRlXG4gICAgICAvLyBFeGNsdWlyIGFnZW50ZXMgbm8tY3VzdG9tIHBhcmEgdXN1YXJpb3MgY29uIHJvbGVzIGRlc2hhYmlsaXRhZG9zXG4gICAgICBpZiAoXG4gICAgICAgIGFnZW50Tm9QZXJtaXNzaW9uICYmXG4gICAgICAgICFhZ2VudERlbGV0ZWQgJiZcbiAgICAgICAgdXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAgIGhhc0FnZW50QWNjZXNzICYmXG4gICAgICAgIGhhc0FnZW50UGVybWlzc2lvbiAmJlxuICAgICAgICAhYWdlbnRzLmZpbmQoYWdlbnQgPT4gYWdlbnQuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKVxuICAgICAgKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHtcbiAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICBlbW9qaTogYWdlbnROb1Blcm1pc3Npb24uZW1vamksXG4gICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnLFxuICAgICAgICAgIGlzX2Zyb21fY29udmVyc2F0aW9uOiB0cnVlLFxuICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHByb2plY3REZWxldGVkID8geyBwcm9qZWN0X2RlbGV0ZWQ6IHsgbmFtZTogcHJvamVjdERlbGV0ZWQubmFtZSB9IH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGVsIGFnZW50ZSBlc3TDoSBlbiBsYSBsaXN0YSB5IHRpZW5lIGFjY2Vzby9wZXJtaXNvcywgYWN0dWFsaXphciBwcm9qZWN0X2RlbGV0ZWQgKG8gbGltcGlhcmxvIGFsIGNhbWJpYXIgZGUgY2hhdClcbiAgICAgIGlmIChcbiAgICAgICAgYWdlbnROb1Blcm1pc3Npb24gJiZcbiAgICAgICAgIWFnZW50RGVsZXRlZCAmJlxuICAgICAgICBoYXNBZ2VudEFjY2VzcyAmJlxuICAgICAgICBoYXNBZ2VudFBlcm1pc3Npb24gJiZcbiAgICAgICAgYWdlbnRzLmZpbmQoYSA9PiBhLmlkID09PSBhZ2VudE5vUGVybWlzc2lvbi5pZClcbiAgICAgICkge1xuICAgICAgICBjb25zdCBhZ2VudEluTGlzdCA9IGFnZW50cy5maW5kKGEgPT4gYS5pZCA9PT0gYWdlbnROb1Blcm1pc3Npb24uaWQpXG4gICAgICAgIGlmIChhZ2VudEluTGlzdCkge1xuICAgICAgICAgIHNlbGVjdEFnZW50KHtcbiAgICAgICAgICAgIC4uLmFnZW50SW5MaXN0LFxuICAgICAgICAgICAgLi4uKHByb2plY3REZWxldGVkID8geyBwcm9qZWN0X2RlbGV0ZWQ6IHsgbmFtZTogcHJvamVjdERlbGV0ZWQubmFtZSB9IH0gOiB7IHByb2plY3RfZGVsZXRlZDogdW5kZWZpbmVkIH0pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU2kgZWwgYWdlbnRlIG5vIHRpZW5lIGFjY2VzbyBvIHBlcm1pc29zIHNlZ8O6biBsYSByZXNwdWVzdGEgZGUgc2Vzc2lvbnMsIHNlbGVjY2lvbmFybG8gY29uIGVsIGZsYWcgY29ycmVzcG9uZGllbnRlXG4gICAgICAvLyBMYSB2YWxpZGFjacOzbiBhaG9yYSBzZSBiYXNhIGVuIGxhcyBwcm9waWVkYWRlcyBoYXNfYWdlbnRfYWNjZXNzIHkgaGFzX2FnZW50X3Blcm1pc3Npb24gZGUgbGEgcmVzcHVlc3RhXG4gICAgICBpZiAoYWdlbnROb1Blcm1pc3Npb24gJiYgIWFnZW50RGVsZXRlZCkge1xuICAgICAgICBpZiAoIWhhc0FnZW50QWNjZXNzKSB7XG4gICAgICAgICAgLy8gQ2FzbyAxOiBObyB0aWVuZSBhY2Nlc28gYWwgYWdlbnRlXG4gICAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgICAgaWQ6IGFnZW50Tm9QZXJtaXNzaW9uLmlkLFxuICAgICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICAgIGVtb2ppOiBhZ2VudE5vUGVybWlzc2lvbi5lbW9qaSxcbiAgICAgICAgICAgIHR5cGU6IGFnZW50Tm9QZXJtaXNzaW9uLnR5cGUgYXMgJ3BtJyB8ICdjdXN0b20nIHwgJ2Nsb25lJyxcbiAgICAgICAgICAgIGhhc19ub3RfYWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihwcm9qZWN0RGVsZXRlZCA/IHsgcHJvamVjdF9kZWxldGVkOiB7IG5hbWU6IHByb2plY3REZWxldGVkLm5hbWUgfSB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc0FnZW50UGVybWlzc2lvbikge1xuICAgICAgICAgIC8vIENhc28gMjogTm8gdGllbmUgcGVybWlzb3MgcGFyYSB2aXN1YWxpemFyL2ludGVyYWN0dWFyIGNvbiBlbCBhZ2VudGVcbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnLFxuICAgICAgICAgICAgaGFzX25vdF9wZXJtaXNzaW9uczogdHJ1ZSxcbiAgICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKHByb2plY3REZWxldGVkKSB7XG4gICAgICAgICAgLy8gQ2FzbyAzOiBFbCBwcm95ZWN0byBkZSBsYSBjb252ZXJzYWNpw7NuIGZ1ZSBlbGltaW5hZG9cbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnLFxuICAgICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAgIHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhKHtcbiAgICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgfSlcblxuICAgICAgLy8gU2kgaGF5IHByb3llY3RvIGVuIGxhIGNvbnZlcnNhY2nDs24sIHJlZXNjcmliaXIgVVJMcyBkZSB0YXJlYXMgY29uIGVsIHRhYiBkZWwgdXN1YXJpbyAobWUpXG4gICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gcHJvamVjdElkTWVzc2FnZSA/IHBhcnNlSW50KFN0cmluZyhwcm9qZWN0SWRNZXNzYWdlKSwgMTApIDogbnVsbFxuICAgICAgbGV0IGl0ZW1zVG9TZXQgPSBpdGVtc1xuICAgICAgaWYgKGNvbnRleHRQcm9qZWN0SWQpIHtcbiAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQoMSlcbiAgICAgICAgY29uc3QgdGFiU2VnbWVudCA9IHRhYiA/IGAvJHt0YWJ9YCA6ICcvZGV0YWlsJ1xuICAgICAgICBpdGVtc1RvU2V0ID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIG1lc3NhZ2U6IHJld3JpdGVUYXNrVXJsc0luQ29udGVudChpdGVtLm1lc3NhZ2UgfHwgJycsIHRhYlNlZ21lbnQpLFxuICAgICAgICB9KSlcbiAgICAgIH1cbiAgICAgIHNldE1lc3NhZ2VzKGl0ZW1zVG9TZXQpXG4gICAgICBzZXRMYXN0RXZhbHVhdGVkS2V5KE51bWJlcihuZXh0SXRlbSkpXG4gICAgICBpbml0aWFsTG9hZERvbmUuY3VycmVudCA9IHRydWVcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgb25FcnJvcj8uKClcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZ01lc3NhZ2VzKGZhbHNlKVxuICAgIH1cbiAgfSwgW2NoYXRJZCwgY3VycmVudFVzZXIsIHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEsIG9uRXJyb3IsIGdldFRhYlRhc2tEZWZhdWx0XSlcblxuICBjb25zdCBsb2FkTW9yZU1lc3NhZ2VzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoaXNMb2FkaW5nUmVmLmN1cnJlbnQgfHwgIWxhc3RFdmFsdWF0ZWRLZXkgfHwgIWNvbnRhaW5lcikgcmV0dXJuXG4gICAgICB0cnkge1xuICAgICAgICBpc0xvYWRpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNMb2FkaW5nTW9yZU1lc3NhZ2VzKHRydWUpXG5cbiAgICAgICAgY29uc3Qgb2xkU2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyLnNjcm9sbEhlaWdodFxuICAgICAgICBjb25zdCBvbGRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wXG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgIG5leHRJdGVtLFxuICAgICAgICAgIHByb2plY3RJZDogcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnROYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIH0gPSBhd2FpdCBtYWlhLkNoYXRzLmdldENoYXRNZXNzYWdlcyh7XG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgICAgIG9mZnNldDogbGFzdEV2YWx1YXRlZEtleSxcbiAgICAgICAgICBsYW5nOiBtYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpLFxuICAgICAgICB9KVxuXG4gICAgICAgIGF3YWl0IHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEoe1xuICAgICAgICAgIHByb2plY3RJZE1lc3NhZ2UsXG4gICAgICAgICAgcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTaSBoYXkgcHJveWVjdG8gZW4gbGEgY29udmVyc2FjacOzbiwgcmVlc2NyaWJpciBVUkxzIGRlIHRhcmVhcyBlbiBsb3MgbWVuc2FqZXMgY2FyZ2Fkb3NcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3RJZE1lc3NhZ2UgPyBwYXJzZUludChTdHJpbmcocHJvamVjdElkTWVzc2FnZSksIDEwKSA6IG51bGxcbiAgICAgICAgbGV0IGl0ZW1zVG9NZXJnZSA9IGl0ZW1zXG4gICAgICAgIGlmIChjb250ZXh0UHJvamVjdElkKSB7XG4gICAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQoMSlcbiAgICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgICAgaXRlbXNUb01lcmdlID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICBtZXNzYWdlOiByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQoaXRlbS5tZXNzYWdlIHx8ICcnLCB0YWJTZWdtZW50KSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFsuLi5tZXNzYWdlcy5zbGljZSgwLCAxKSwgLi4uaXRlbXNUb01lcmdlLCAuLi5tZXNzYWdlcy5zbGljZSgxKV1cbiAgICAgICAgc2V0TWVzc2FnZXMobmV3TWVzc2FnZXMpXG4gICAgICAgIHNldExhc3RFdmFsdWF0ZWRLZXkoTnVtYmVyKG5leHRJdGVtKSlcblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBjb250YWluZXJcbiAgICAgICAgICAgIGlmIChjb250YWluZXJSZWYpIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3U2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyUmVmLnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICBjb25zdCBoZWlnaHREaWZmZXJlbmNlID0gbmV3U2Nyb2xsSGVpZ2h0IC0gb2xkU2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgIGNvbnRhaW5lclJlZi5zY3JvbGxUb3AgPSBvbGRTY3JvbGxUb3AgKyBoZWlnaHREaWZmZXJlbmNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG9uRXJyb3I/LigpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXMoZmFsc2UpXG4gICAgICAgIGlzTG9hZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjaGF0SWQsIGN1cnJlbnRVc2VyLCBsYXN0RXZhbHVhdGVkS2V5LCBvbkVycm9yLCBtZXNzYWdlcywgZ2V0VGFiVGFza0RlZmF1bHQsIHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGFdXG4gIClcblxuICBjb25zdCBoYW5kbGVTY3JvbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIGlmICghY29udGFpbmVyIHx8IGlzTG9hZGluZ1JlZi5jdXJyZW50IHx8ICFpbml0aWFsTG9hZERvbmUuY3VycmVudCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgICBjb25zdCBzY3JvbGxQZXJjZW50YWdlID0gc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0ID4gMCA/IChzY3JvbGxUb3AgLyAoc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0KSkgKiAxMDAgOiAwXG5cbiAgICAgIGlmIChzY3JvbGxQZXJjZW50YWdlIDwgMTApIHtcbiAgICAgICAgbG9hZE1vcmVNZXNzYWdlcyhjb250YWluZXIpXG4gICAgICB9XG4gICAgfSxcbiAgICBbbG9hZE1vcmVNZXNzYWdlc11cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoYXRJZCAhPT0gcHJldmlvdXNDaGF0SWQuY3VycmVudCkge1xuICAgICAgc2V0TWVzc2FnZXMoXG4gICAgICAgIHVzZXJJbml0aWFsTWVzc2FnZVxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICd1c2VyLWluaXRpYWwtbWVzc2FnZScsXG4gICAgICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlLCB7XG4gICAgICAgICAgICAgICAgICBmdWFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkLFxuICAgICAgICAgICAgICAgICAgc2NJZDogdXNlckluaXRpYWxNZXNzYWdlLnNjSWQsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgICAgICAgIC4uLihidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucylcbiAgICAgICAgICAgICAgICAgID8geyBjb250ZXh0TWVzc2FnZTogYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpIH1cbiAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogW11cbiAgICAgIClcbiAgICAgIHNldExhc3RFdmFsdWF0ZWRLZXkoMClcbiAgICAgIGlzTG9hZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGluaXRpYWxMb2FkRG9uZS5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHByZXZpb3VzQ2hhdElkLmN1cnJlbnQgPSBjaGF0SWRcblxuICAgICAgLy8gTGltcGlhciBlbCBlc3RhZG8gZGVsIHByb3llY3RvIGN1YW5kbyBjYW1iaWEgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG5cbiAgICAgIC8vIFZvbHZlciBhIGVqZWN1dGFyIGxhIHF1ZXJ5IG1lIHBhcmEgdGVuZXIgdGFiVGFza0RlZmF1bHQgYWN0dWFsaXphZG8gZW4gbGEgbnVldmEgY29udmVyc2FjacOzblxuICAgICAgcmVmZXRjaFRhYlRhc2tEZWZhdWx0KClcblxuICAgICAgaWYgKCF1c2VySW5pdGlhbE1lc3NhZ2UpIHtcbiAgICAgICAgbG9hZE1lc3NhZ2VzKClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtjaGF0SWQsIHVzZXJJbml0aWFsTWVzc2FnZSwgY3VycmVudFVzZXIsIGxvYWRNZXNzYWdlcywgc2V0Q2hpcHNQcm9qZWN0LCBzZXRQcm9qZWN0LCByZWZldGNoVGFiVGFza0RlZmF1bHRdKVxuXG4gIC8vIEN1YW5kbyB0YWJUYXNrRGVmYXVsdCBwYXNhIGEgZXN0YXIgZGlzcG9uaWJsZSBkZXNwdcOpcyBkZSBjYXJnYXIsIHJlZXNjcmliaXIgVVJMcyBkZSB0YXJlYXMgZW4gbG9zIG1lbnNhamVzIHlhIGNhcmdhZG9zLlxuICAvLyBSZWYgcGFyYSBldml0YXIgYnVjbGU6IHNldE1lc3NhZ2VzKHJld3JpdHRlbikgY2FtYmlhIG1lc3NhZ2VzIHkgcmUtZWplY3V0YSBlbCBlZmVjdG87IHNvbG8gcmVlc2NyaWJpbW9zIHVuYSB2ZXogcG9yIGxvdGUuXG4gIGNvbnN0IGRpZFJld3JpdGVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF0YWJUYXNrRGVmYXVsdCB8fCAhcHJvamVjdD8uaWQgfHwgbWVzc2FnZXMubGVuZ3RoID09PSAwKSByZXR1cm5cbiAgICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgICBjb25zdCB0YWJTZWdtZW50ID0gYC8ke3RhYlRhc2tEZWZhdWx0fWBcbiAgICBjb25zdCBuZWVkc1Jld3JpdGUgPSBtZXNzYWdlcy5zb21lKG1zZyA9PiB7XG4gICAgICBjb25zdCBjb250ZW50ID0gbXNnLm1lc3NhZ2UgfHwgJydcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBjb250ZW50Lm1hdGNoKHRhc2tVcmxSZWdleClcbiAgICAgIGlmICghbWF0Y2hlcz8ubGVuZ3RoKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiBtYXRjaGVzLnNvbWUodXJsID0+ICF1cmwuZW5kc1dpdGgoYC8ke3RhYlRhc2tEZWZhdWx0fWApICYmICF1cmwuaW5jbHVkZXMoYC8ke3RhYlRhc2tEZWZhdWx0fT9gKSlcbiAgICB9KVxuICAgIGlmICghbmVlZHNSZXdyaXRlKSB7XG4gICAgICBkaWRSZXdyaXRlUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChkaWRSZXdyaXRlUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIGRpZFJld3JpdGVSZWYuY3VycmVudCA9IHRydWVcbiAgICBjb25zdCByZXdyaXR0ZW4gPSBtZXNzYWdlcy5tYXAobXNnID0+ICh7XG4gICAgICAuLi5tc2csXG4gICAgICBtZXNzYWdlOiByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQobXNnLm1lc3NhZ2UgfHwgJycsIHRhYlNlZ21lbnQpLFxuICAgIH0pKVxuICAgIHNldE1lc3NhZ2VzKHJld3JpdHRlbilcbiAgfSwgW3RhYlRhc2tEZWZhdWx0LCBwcm9qZWN0Py5pZCwgbWVzc2FnZXNdKVxuXG4gIGNvbnN0IGFkZE1lc3NhZ2UgPSB1c2VDYWxsYmFjaygobWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHtcbiAgICBzZXRNZXNzYWdlcyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nTWVzc2FnZUluZGV4ID0gcHJldi5maW5kSW5kZXgobXNnID0+IG1zZy5pZCA9PT0gbWVzc2FnZS5pZClcblxuICAgICAgaWYgKGV4aXN0aW5nTWVzc2FnZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3TWVzc2FnZXMgPSBbLi4ucHJldl1cbiAgICAgICAgbmV3TWVzc2FnZXNbZXhpc3RpbmdNZXNzYWdlSW5kZXhdID0gbWVzc2FnZVxuICAgICAgICByZXR1cm4gbmV3TWVzc2FnZXNcbiAgICAgIH1cbiAgICAgIHJldHVybiBbLi4ucHJldiwgbWVzc2FnZV1cbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCByZW1vdmVNZXNzYWdlID0gdXNlQ2FsbGJhY2soKG1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgc2V0TWVzc2FnZXMocHJldiA9PiBwcmV2LmZpbHRlcihtc2cgPT4gbXNnLmlkICE9PSBtZXNzYWdlSWQpKVxuICB9LCBbXSlcblxuICByZXR1cm4ge1xuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBtZXNzYWdlcyxcbiAgICBoYXNNb3JlTWVzc2FnZXM6ICEhbGFzdEV2YWx1YXRlZEtleSxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgbG9hZE1lc3NhZ2VzLFxuICAgIGxvYWRNb3JlTWVzc2FnZXMsXG4gICAgYWRkTWVzc2FnZSxcbiAgICByZW1vdmVNZXNzYWdlLFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLFFBQVEsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxXQUFXLFFBQVEsZ0JBQWdCO0FBRTVDLFNBQVNDLG1CQUFtQixRQUFRLDRCQUE0QjtBQUNoRSxPQUFPQyxJQUFJLE1BQU0scUJBQXFCO0FBRXRDLFNBQVNDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUMvRCxTQUFTQyxJQUFJLFFBQVEsU0FBUztBQUM5QixTQUFTQyxPQUFPLFFBQVEsd0JBQXdCO0FBQ2hELFNBQVNDLGlCQUFpQixRQUFRLHNCQUFzQjtBQUN4RCxTQUFTQyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFDakUsU0FBU0MsVUFBVSxRQUFRLGtCQUFrQjtBQUM3QyxTQUFTQyxrQ0FBa0MsUUFBUSxzQ0FBc0M7QUFFekYsSUFBTUMsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBSUMsT0FBZSxFQUFFQyxVQUFrQixFQUFhO0VBQ2hGLElBQU1DLFlBQVksR0FBRyxJQUFJQyxNQUFNLENBQUNQLHNCQUFzQixFQUFFLEdBQUcsQ0FBQztFQUM1RCxPQUFPSSxPQUFP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
|