@projectcor/maia-components 2.50.0 → 2.50.1-1
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/App.js +44 -19
- package/lib/components/atoms/ActionableButton.spec.js +111 -0
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.spec.js +52 -0
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.spec.js +11 -0
- package/lib/components/atoms/ApprovalBox/ApprovalBox.helpers.spec.js +63 -0
- package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +183 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCard.spec.js +123 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +3 -1
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.spec.js +139 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.spec.js +385 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardImage.js +3 -1
- package/lib/components/atoms/AttachmentCard/AttachmentCardImage.spec.js +78 -0
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.spec.js +94 -0
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +24 -14
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.spec.js +396 -0
- package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.js +28 -10
- package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.spec.js +80 -0
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.spec.js +526 -0
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +19 -15
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +169 -0
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.spec.js +11 -0
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +8 -4
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.spec.js +77 -0
- package/lib/components/atoms/Backdrop/Backdrop.spec.js +28 -0
- package/lib/components/atoms/CardMenu/CardMenu.spec.js +56 -0
- package/lib/components/atoms/ChatClientSelector/ChatClientSelector.spec.js +67 -0
- package/lib/components/atoms/Checkbox/Checkbox.spec.js +27 -0
- package/lib/components/atoms/Chip/Chip.spec.js +82 -0
- package/lib/components/atoms/ChipLlm/ChipLlm.spec.js +26 -0
- package/lib/components/atoms/ClientSelector/ClientSelector.helpers.spec.js +45 -0
- package/lib/components/atoms/ClientSelector/ClientSelector.js +15 -13
- package/lib/components/atoms/ClientSelector/ClientSelector.spec.js +133 -0
- package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.spec.js +107 -0
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +29 -0
- package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.spec.js +46 -0
- package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.spec.js +109 -0
- package/lib/components/atoms/ContextMentionChip/buildChipElement.spec.js +81 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.spec.js +92 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.spec.js +319 -0
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.spec.js +107 -0
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.spec.js +136 -0
- package/lib/components/atoms/CopyToClipboard.spec.js +74 -0
- package/lib/components/atoms/EditableLabel/EditableLabel.spec.js +76 -0
- package/lib/components/atoms/EntitySelector/EntitySelector.spec.js +86 -0
- package/lib/components/atoms/Expand/Expand.spec.js +57 -0
- package/lib/components/atoms/Fade/Fade.js +10 -6
- package/lib/components/atoms/Fade/Fade.spec.js +66 -0
- package/lib/components/atoms/FeedbackButton/FeedbackButton.spec.js +75 -0
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.spec.js +104 -0
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +3 -1
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.spec.js +91 -0
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +19 -7
- package/lib/components/atoms/HelpButton.spec.js +87 -0
- package/lib/components/atoms/ImagePreview/ImagePreview.spec.js +96 -0
- package/lib/components/atoms/ListMenuOption/ListMenuOption.spec.js +54 -0
- package/lib/components/atoms/LoadingFaqs/LoadingFaqs.spec.js +21 -0
- package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.spec.js +20 -0
- package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.spec.js +26 -0
- package/lib/components/atoms/LoadingText/LoadingText.spec.js +25 -0
- package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +42 -0
- package/lib/components/atoms/MAIAError/MAIAError.spec.js +27 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.js +3 -2
- package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.spec.js +113 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +3 -2
- package/lib/components/atoms/MAIAInput/MAIAInput.helpers.spec.js +381 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.js +123 -99
- package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +719 -0
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.spec.js +92 -0
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.spec.js +193 -0
- package/lib/components/atoms/MAIAInput/maiaInputLayout.spec.js +32 -0
- package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.spec.js +64 -0
- package/lib/components/atoms/MaiaWrapper/MaiaWrapper.spec.js +43 -0
- package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.js +9 -4
- package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.spec.js +114 -0
- package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.spec.js +51 -0
- package/lib/components/atoms/ModalClientAccess/ModalClientAccess.spec.js +48 -0
- package/lib/components/atoms/ModalProject/ModalProject.spec.js +66 -0
- package/lib/components/atoms/NextPageLoader.spec.js +37 -0
- package/lib/components/atoms/OnboardingModalButton/OnboardingModal.spec.js +20 -0
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.spec.js +35 -0
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.spec.js +47 -0
- package/lib/components/atoms/OptionAccessibility/OptionAccessibility.js +4 -5
- package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +146 -0
- package/lib/components/atoms/PrimaryButton.spec.js +42 -0
- package/lib/components/atoms/ProjectSelector/ProjectSelector.spec.js +69 -0
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +7 -2
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +69 -0
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +41 -24
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +25 -10
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +59 -0
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +78 -43
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +170 -0
- package/lib/components/atoms/ReasoningBlock/groupParallelSteps.js +9 -11
- package/lib/components/atoms/ReasoningBlock/groupParallelSteps.spec.js +199 -0
- package/lib/components/atoms/ReasoningBlock/reasoningLeading.spec.js +70 -0
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +37 -15
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +120 -0
- package/lib/components/atoms/ReasoningBlock/reasoningMotion.js +8 -0
- package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.spec.js +31 -0
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +52 -0
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +90 -0
- package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.js +29 -0
- package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.spec.js +38 -0
- package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.spec.js +16 -0
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +107 -0
- package/lib/components/atoms/SlashCommandChip/SlashCommandChip.spec.js +24 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.helpers.spec.js +71 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +120 -0
- package/lib/components/atoms/Switch/Switch.spec.js +41 -0
- package/lib/components/atoms/TextArea/CustomTextArea.spec.js +52 -0
- package/lib/components/atoms/TextArea/TextArea.helpers.spec.js +25 -0
- package/lib/components/atoms/TextArea/TextArea.spec.js +126 -0
- package/lib/components/atoms/ThirdButton.spec.js +29 -0
- package/lib/components/atoms/VideoModal/VideoModal.spec.js +68 -0
- package/lib/components/atoms/WithAppCfg.spec.js +82 -0
- package/lib/components/index.js +2 -1
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.spec.js +53 -0
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +3 -2
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +742 -0
- package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.spec.js +107 -0
- package/lib/components/molecules/AbmSection/AbmGeneralSection.spec.js +256 -0
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +6 -4
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.spec.js +175 -0
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +25 -16
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.spec.js +318 -0
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.spec.js +50 -0
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.spec.js +94 -0
- package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +83 -0
- package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +30 -0
- package/lib/components/molecules/AgentInputBlock/index.js +5 -0
- package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +52 -0
- package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +76 -0
- package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +20 -0
- package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +34 -0
- package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +36 -0
- package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.spec.js +66 -0
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +7 -3
- package/lib/components/molecules/ChatAIContent/ChatAIContent.spec.js +145 -0
- package/lib/components/molecules/ChatAIHistory/ChatAIHistory.spec.js +204 -0
- package/lib/components/molecules/ChatAIHome/ChatAIHome.helpers.spec.js +622 -0
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +93 -72
- package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +264 -0
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.spec.js +86 -0
- package/lib/components/molecules/ChatAIHome/styles.js +85 -78
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +104 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.spec.js +742 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +30 -14
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +541 -0
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +46 -0
- package/lib/components/molecules/ChatAIMessages/newStyles.js +32 -35
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +8 -1
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +1394 -0
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +25 -8
- package/lib/components/molecules/ChatAIModal/ChatAIModal.spec.js +1401 -0
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.spec.js +33 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.spec.js +116 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +15 -153
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.spec.js +134 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +2 -26
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.spec.js +142 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +63 -367
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.spec.js +241 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.js +69 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.spec.js +144 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentDropdown.js +95 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentSelector.js +174 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.js +99 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.spec.js +65 -0
- package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +37 -0
- package/lib/components/molecules/ChatAIModal/constants.spec.js +16 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.spec.js +22 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.spec.js +67 -0
- package/lib/components/molecules/ChatAIModal/layout.spec.js +72 -0
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.helpers.spec.js +93 -0
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.spec.js +297 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.helpers.spec.js +62 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +221 -0
- package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.spec.js +66 -0
- package/lib/components/molecules/ChatFooter/ChatFooter.js +10 -4
- package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +369 -0
- package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.spec.js +10 -0
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.spec.js +104 -0
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +5 -2
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.spec.js +139 -0
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +84 -0
- package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +116 -0
- package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.spec.js +126 -0
- package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.spec.js +115 -0
- package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.spec.js +79 -0
- package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.spec.js +37 -0
- package/lib/components/molecules/Sidebar/Sidebar.helpers.spec.js +119 -0
- package/lib/components/molecules/Sidebar/Sidebar.js +41 -23
- package/lib/components/molecules/Sidebar/Sidebar.spec.js +464 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.spec.js +1067 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +2 -2
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +1236 -0
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.spec.js +112 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.helpers.spec.js +77 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +503 -0
- package/lib/components/organisms/ChatAI/ChatAI.spec.js +174 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPage.js +525 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +246 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +16 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +253 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +291 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +13 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +284 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +343 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +197 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +94 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +69 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +38 -0
- package/lib/components/organisms/ChatAIPage/getDaypart.js +9 -0
- package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +19 -0
- package/lib/components/organisms/ChatAIPage/index.js +3 -0
- package/lib/components/organisms/ClientAIButton/ClientAIButton.spec.js +53 -0
- package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +59 -0
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +79 -0
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +86 -0
- package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.spec.js +49 -0
- package/lib/components/organisms/ProjectAIButton/ProjectAIButton.spec.js +67 -0
- package/lib/components/organisms/ProjectSummary/ProjectSummary.js +11 -7
- package/lib/components/organisms/ProjectSummary/ProjectSummary.spec.js +117 -0
- package/lib/components/organisms/SnackBar/Snackbar.spec.js +66 -0
- package/lib/components/organisms/SourcesInformation/SourceItem.spec.js +19 -0
- package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +4 -1
- package/lib/components/organisms/SourcesInformation/SourcesInformationModal.spec.js +52 -0
- package/lib/constants/formatExtensions.spec.js +15 -0
- package/lib/constants/maiaExternalConnectorsAccess.spec.js +29 -0
- package/lib/constants/maiaFeatureAccess.spec.js +30 -0
- package/lib/constants/maiaHourAgentAccess.spec.js +30 -0
- package/lib/constants/maiaTaskPanelAccess.spec.js +41 -0
- package/lib/constants/permissions/clientRoleAccess.spec.js +65 -0
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +4 -1
- package/lib/constants/permissions/utils.spec.js +128 -0
- package/lib/constants/plannerSyncEvents.spec.js +31 -0
- package/lib/constants/taskUrls.spec.js +9 -0
- package/lib/dev/DevMaiaPage.js +30 -0
- package/lib/dev/DevReasoningTimeline.js +68 -37
- package/lib/dev/Providers.js +5 -3
- package/lib/hooks/frequentlyUsedActionsCache.js +17 -0
- package/lib/hooks/frequentlyUsedActionsCache.spec.js +25 -0
- package/lib/hooks/useAccessClient/useAccessClient.spec.js +149 -0
- package/lib/hooks/useAgentModel/useAgentModel.spec.js +83 -0
- package/lib/hooks/useAgentModel/useCreateAgent.helpers.spec.js +268 -0
- package/lib/hooks/useAgentModel/useCreateAgent.spec.js +314 -0
- package/lib/hooks/useAgentModel/useDeleteAgent.spec.js +183 -0
- package/lib/hooks/useAgentModel/useUpdateAgent.js +7 -6
- package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +374 -0
- package/lib/hooks/useAgentSuggestions.spec.js +89 -0
- package/lib/hooks/useCaretPosition.spec.js +58 -0
- package/lib/hooks/useChatManager/useChatManager.helpers.js +3 -3
- package/lib/hooks/useChatManager/useChatManager.helpers.spec.js +2027 -0
- package/lib/hooks/useChatManager/useChatManager.js +8 -7
- package/lib/hooks/useChatManager/useChatManager.spec.js +2409 -0
- package/lib/hooks/useChatMessages/useChatMessages.helpers.spec.js +491 -0
- package/lib/hooks/useChatMessages/useChatMessages.spec.js +729 -0
- package/lib/hooks/useChats/useChats.spec.js +208 -0
- package/lib/hooks/useClientSearch.helpers.spec.js +52 -0
- package/lib/hooks/useClientSearch.spec.js +86 -0
- package/lib/hooks/useContextMentions.helpers.spec.js +267 -0
- package/lib/hooks/useContextMentions.spec.js +338 -0
- package/lib/hooks/useContextPinPopover.helpers.spec.js +183 -0
- package/lib/hooks/useContextPinPopover.spec.js +159 -0
- package/lib/hooks/useContinueLegacyContextInNewChat/index.js +2 -0
- package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +93 -0
- package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.spec.js +257 -0
- package/lib/hooks/useDebounce.spec.js +42 -0
- package/lib/hooks/useEntitySearch.helpers.spec.js +723 -0
- package/lib/hooks/useEntitySearch.js +3 -1
- package/lib/hooks/useEntitySearch.spec.js +718 -0
- package/lib/hooks/useEvent.spec.js +45 -0
- package/lib/hooks/useFrequentlyAskedQuestions.spec.js +222 -0
- package/lib/hooks/useFrequentlyUsedActions.js +61 -22
- package/lib/hooks/useFrequentlyUsedActions.spec.js +293 -0
- package/lib/hooks/useIsMaiaPageRoute.js +26 -0
- package/lib/hooks/useIsMaiaPageRoute.spec.js +26 -0
- package/lib/hooks/useKnowledge/deleteKnowledge.spec.js +122 -0
- package/lib/hooks/useKnowledge/downloadKnowledge.js +4 -4
- package/lib/hooks/useKnowledge/downloadKnowledge.spec.js +148 -0
- package/lib/hooks/useKnowledge/saveKnowledge.spec.js +104 -0
- package/lib/hooks/useKnowledge/useKnowledgeOperations.js +16 -15
- package/lib/hooks/useKnowledge/useKnowledgeOperations.spec.js +178 -0
- package/lib/hooks/useMaiaChatSessionMeta/index.js +2 -0
- package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +24 -0
- package/lib/hooks/useMentionAllowedTypes.spec.js +89 -0
- package/lib/hooks/useMentionPopover.helpers.spec.js +100 -0
- package/lib/hooks/useMentionPopover.spec.js +392 -0
- package/lib/hooks/useMinimizedPillBottomOffset.helpers.spec.js +176 -0
- package/lib/hooks/useMinimizedPillBottomOffset.spec.js +89 -0
- package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +67 -0
- package/lib/hooks/useModal/useModal.spec.js +73 -0
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.helpers.spec.js +138 -0
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.spec.js +417 -0
- package/lib/hooks/useProjectSearch.helpers.spec.js +89 -0
- package/lib/hooks/useProjectSearch.spec.js +91 -0
- package/lib/hooks/useProjectSummary.spec.js +193 -0
- package/lib/hooks/useProjectSummaryConfig.helpers.spec.js +151 -0
- package/lib/hooks/useProjectSummaryConfig.js +10 -5
- package/lib/hooks/useProjectSummaryConfig.spec.js +133 -0
- package/lib/hooks/useReasoningTrace/reasoningStore.spec.js +112 -0
- package/lib/hooks/useRecentClientsSearch.helpers.spec.js +33 -0
- package/lib/hooks/useRecentClientsSearch.spec.js +85 -0
- package/lib/hooks/useRecentContexts.spec.js +139 -0
- package/lib/hooks/useResize.spec.js +37 -0
- package/lib/hooks/useSkillsCatalog.spec.js +88 -0
- package/lib/hooks/useSlashCommands.spec.js +139 -0
- package/lib/hooks/useSmoothStreamText/useSmoothStreamText.spec.js +101 -0
- package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +33 -0
- package/lib/hooks/useStreamResponse.spec.js +199 -0
- package/lib/hooks/useT.spec.js +20 -0
- package/lib/hooks/useToggle.spec.js +33 -0
- package/lib/hooks/useToggleFavorite/useToggleFavorite.spec.js +171 -0
- package/lib/index.js +5 -2
- package/lib/lang/br/index.js +26 -1
- package/lib/lang/en/index.js +26 -1
- package/lib/lang/es/index.js +26 -1
- package/lib/lang/fr/index.js +26 -1
- package/lib/services/appcues.spec.js +37 -0
- package/lib/services/maia/Access/updateAccess.spec.js +137 -0
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
- package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +121 -0
- package/lib/services/maia/Actions/getSlashCommands.spec.js +91 -0
- package/lib/services/maia/Agents/connectors.js +3 -1
- package/lib/services/maia/Agents/connectors.spec.js +496 -0
- package/lib/services/maia/Agents/createAgent.spec.js +55 -0
- package/lib/services/maia/Agents/deleteAgent.spec.js +57 -0
- package/lib/services/maia/Agents/fetchAgentDetail.spec.js +108 -0
- package/lib/services/maia/Agents/getAgentById.spec.js +190 -0
- package/lib/services/maia/Agents/getAgentModels.spec.js +190 -0
- package/lib/services/maia/Agents/getAgentSuggestions.spec.js +89 -0
- package/lib/services/maia/Agents/getAgents.helpers.spec.js +325 -0
- package/lib/services/maia/Agents/getAgents.spec.js +1135 -0
- package/lib/services/maia/Agents/setAgentToolGroups.spec.js +45 -0
- package/lib/services/maia/Agents/toggleFavorite.spec.js +59 -0
- package/lib/services/maia/Agents/updateAgent.spec.js +48 -0
- package/lib/services/maia/Chats/deleteChat.spec.js +31 -0
- package/lib/services/maia/Chats/getChatMessages.spec.js +150 -0
- package/lib/services/maia/Chats/getChatsByUserId.spec.js +149 -0
- package/lib/services/maia/Chats/markSessionAsRead.spec.js +30 -0
- package/lib/services/maia/Chats/patchChat.spec.js +41 -0
- package/lib/services/maia/Chats/wasHelpfulChat.spec.js +28 -0
- package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +58 -0
- package/lib/services/maia/Knowledge/delete.spec.js +45 -0
- package/lib/services/maia/Knowledge/download.spec.js +78 -0
- package/lib/services/maia/Knowledge/save.spec.js +58 -0
- package/lib/services/maia/Orchestrator/orchestrator.helpers.spec.js +225 -0
- package/lib/services/maia/Orchestrator/orchestrator.spec.js +181 -0
- package/lib/services/maia/RecentClients/getRecentClients.spec.js +52 -0
- package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +103 -0
- package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +82 -0
- package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +63 -0
- package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +82 -0
- package/lib/services/maia/Skills/createSkill.spec.js +68 -0
- package/lib/services/maia/Skills/deleteSkill.spec.js +42 -0
- package/lib/services/maia/Skills/generateSkill.spec.js +48 -0
- package/lib/services/maia/Skills/getSkills.spec.js +152 -0
- package/lib/services/maia/Skills/updateSkill.spec.js +62 -0
- package/lib/services/maia/client.spec.js +56 -0
- package/lib/services/utils/fetchCOR.spec.js +211 -0
- package/lib/services/utils/getCookie.spec.js +20 -0
- package/lib/services/utils/mapChatMessages.helpers.spec.js +336 -0
- package/lib/services/utils/mapChatMessages.spec.js +254 -0
- package/lib/store/chatsSidebarOptimistic.spec.js +145 -0
- package/lib/store/maiaLastChatPersistence.spec.js +22 -0
- package/lib/store/maiaPanelSessionPersistence.spec.js +62 -0
- package/lib/store/sessions/sessionNotificationSound.spec.js +145 -0
- package/lib/store/sessions/sessionNotifications.helpers.spec.js +63 -0
- package/lib/store/sessions/sessionNotifications.spec.js +106 -0
- package/lib/store/sessions/sessionStreamManager.helpers.spec.js +177 -0
- package/lib/store/sessions/sessionStreamManager.js +51 -55
- package/lib/store/sessions/sessionStreamManager.spec.js +939 -0
- package/lib/store/sessions/sessions.types.spec.js +16 -0
- package/lib/store/sessions/useSessionsStore.spec.js +135 -0
- package/lib/store/useChatsStore.js +4 -3
- package/lib/store/useChatsStore.spec.js +619 -0
- package/lib/store/useFaqsStore.spec.js +57 -0
- package/lib/styles/cascade.js +29 -3
- package/lib/styles/transitions.js +3 -1
- package/lib/types/global.d.js +1 -1
- package/lib/utils/actionCategoryMap.spec.js +18 -0
- package/lib/utils/agentDisplayName.spec.js +48 -0
- package/lib/utils/autoApproveStorage.spec.js +25 -0
- package/lib/utils/chatInputFiles.spec.js +39 -0
- package/lib/utils/contextMentionIcons.spec.js +41 -0
- package/lib/utils/contextMentionLabel.spec.js +13 -0
- package/lib/utils/contextMentionTriggers.spec.js +44 -0
- package/lib/utils/contextMentionTypeLabel.spec.js +14 -0
- package/lib/utils/corConnectorMentionTypes.spec.js +23 -0
- package/lib/utils/entityLinkRender.spec.js +72 -0
- package/lib/utils/fileDownloadHelper.spec.js +67 -0
- package/lib/utils/formatQuickActionMessage.spec.js +27 -0
- package/lib/utils/formatUnreadCount.spec.js +12 -0
- package/lib/utils/getUnitFileSize.spec.js +18 -0
- package/lib/utils/hitlAnalytics.spec.js +136 -0
- package/lib/utils/hoursPlannerQuickActionType.js +116 -1
- package/lib/utils/hoursPlannerQuickActionType.spec.js +124 -0
- package/lib/utils/imagePreprocessor.helpers.spec.js +28 -0
- package/lib/utils/imagePreprocessor.js +14 -3
- package/lib/utils/imagePreprocessor.spec.js +112 -0
- package/lib/utils/maiaPageRoute.js +24 -0
- package/lib/utils/maiaPageRoute.spec.js +23 -0
- package/lib/utils/mapBackendLang.spec.js +19 -0
- package/lib/utils/navigateContextEntity.js +2 -2
- package/lib/utils/navigateContextEntity.spec.js +50 -0
- package/lib/utils/normalizeAgentConnectors.spec.js +98 -0
- package/lib/utils/openTaskInCorPanel.js +2 -2
- package/lib/utils/openTaskInCorPanel.spec.js +43 -0
- package/lib/utils/orchestratorSubagents.spec.js +32 -0
- package/lib/utils/reasoningMappers.spec.js +103 -0
- package/lib/utils/recentContextsHomeLimit.spec.js +32 -0
- package/lib/utils/renderContextMentions.helpers.spec.js +87 -0
- package/lib/utils/renderContextMentions.spec.js +268 -0
- package/lib/utils/retryCompletion.spec.js +181 -0
- package/lib/utils/skillContentSize.spec.js +13 -0
- package/lib/utils/slashCommandMarker.spec.js +43 -0
- package/lib/utils/sortManagerHoursHomeFuas.spec.js +51 -0
- package/lib/utils/sseStreamContent.spec.js +31 -0
- package/lib/utils/streamActivityMessages.helpers.js +5 -4
- package/lib/utils/streamActivityMessages.helpers.spec.js +84 -0
- package/lib/utils/streamActivityMessages.js +32 -20
- package/lib/utils/streamActivityMessages.spec.js +336 -0
- package/lib/utils/validateTrimmedFields.spec.js +26 -0
- package/package.json +1 -1
- package/README.md +0 -2
|
@@ -184,7 +184,6 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
184
184
|
successUpdateAccess = _useAccessClient.success,
|
|
185
185
|
isLoadingUpdateAccess = _useAccessClient.isLoading,
|
|
186
186
|
resetSuccessUpdateAccess = _useAccessClient.handleResetSuccess;
|
|
187
|
-
if (!selector) return null;
|
|
188
187
|
var creationDraftDefaults = useMemo(function () {
|
|
189
188
|
var _agentModels$0$id, _agentModels$;
|
|
190
189
|
return {
|
|
@@ -960,6 +959,7 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
960
959
|
});
|
|
961
960
|
}
|
|
962
961
|
};
|
|
962
|
+
if (!selector) return null;
|
|
963
963
|
if (!isOpen || !canRenderAbmAgentModal(userPermissions)) return null;
|
|
964
964
|
return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(Backdrop, {
|
|
965
965
|
zIndex: abmAgentModalZIndex,
|
|
@@ -1157,4 +1157,4 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
1157
1157
|
})]
|
|
1158
1158
|
}), selector);
|
|
1159
1159
|
};
|
|
1160
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VDYWxsYmFjayIsImNyZWF0ZVBvcnRhbCIsInVzZVRyYW5zbGF0aW9uIiwiQ1VCdXR0b24iLCJDYXRlZ29yeSIsIkFsZXJ0IiwiVHJhc2giLCJTdGFyIiwiQ3Jvc3MiLCJTcGlubmVyTG90dGllIiwiVG9vbHRpcCIsIkFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIiwiQmFja2Ryb3AiLCJ1c2VVc2VyIiwiQWNjZXNzaWJpbGl0eUljb24iLCJCcmFpbkljb24iLCJ1c2VBZ2VudE1vZGVsIiwidXNlR2V0QWdlbnRCeUlkIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJBYm1Lbm93bGVkZ2VTZWN0aW9uIiwiU0NBQU1Db250ZW50IiwiU0NBQU1Gb290ZXIiLCJTQ0FBTUhlYWRlciIsIlNDQUFNSGVhZGVyVGl0bGUiLCJTQ0FBTUhlYWRlckxlZnQiLCJTQ0FBTUhlYWRlckZhdm9yaXRlIiwiU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbiIsIlNDQUFNU2lkZWJhciIsIlNDQUFNV3JhcHBlciIsIlNDQUFNU2lkZWJhckl0ZW0iLCJTQ0FBTVNpZGViYXJJdGVtVGl0bGUiLCJTQ0FBTURlbGV0ZUJ1dHRvbiIsIlNDQUFNU2F2ZUJ1dHRvbiIsIlNDQUFNV3JhcHBlclNwaW5uZXIiLCJTQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudCIsIlNDQUFNU2lkZWJhckl0ZW1FcnJvciIsInVzZUNyZWF0ZUFnZW50IiwidXNlRGVsZXRlQWdlbnQiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlVXBkYXRlQWdlbnQiLCJ1c2VLbm93bGVkZ2VPcGVyYXRpb25zIiwiQWJtTG9hZGVyRmlsZXMiLCJXcmFwcGVyQ2VudGVySWNvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VBY2Nlc3NDbGllbnQiLCJ1c2VUb2dnbGVGYXZvcml0ZSIsImJ1aWxkQWdlbnRUb29sR3JvdXBzUmVxdWVzdCIsIkRFRkFVTFRfQ09SX0FDQ0VTUyIsImRlcml2ZUFzc2lnbmVkQ29ubmVjdG9yU2x1Z3MiLCJhcHBseUtub3dsZWRnZUZpbGVTdGF0dXNVcGRhdGUiLCJidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbCIsImNyZWF0ZUluaXRpYWxBYm1Nb2RhbFZhbHVlcyIsImhhc0FibVBlbmRpbmdDaGFuZ2VzIiwiaGFzQWNjZXNzaWJpbGl0eVNlY3Rpb25DaGFuZ2VkIiwiaGFzSW5hY3RpdmVBY2Nlc3NpYmlsaXR5Q2xpZW50cyIsImlzQWJtU2F2ZURpc2FibGVkIiwiaXNTYW1lQWdlbnRNb2RhbFNuYXBzaG90IiwicmVzb2x2ZUtub3dsZWRnZVVwbG9hZE91dGNvbWUiLCJzaG91bGRDb25maXJtQWJtQ2xvc2UiLCJjYW5SZW5kZXJBYm1BZ2VudE1vZGFsIiwiaXNBYm1BY2Nlc3NEZW5pZWRFcnJvciIsInJlc29sdmVBYm1Qcm9jZXNzaW5nS25vd2xlZGdlTGFiZWxLZXkiLCJyZXNvbHZlUGVuZGluZ0FibUluaXRpYWxTZWN0aW9uIiwibWVyZ2VBYm1PcGVuQWdlbnRWYWx1ZXMiLCJzaG91bGRDbG9zZUFibU9uQmFja2Ryb3BDbGljayIsInJlc29sdmVBYm1DcmVhdGVBY2Nlc3NVcGRhdGVDb250ZXh0Iiwic2hvdWxkU3luY0FibUNsaWVudEFjY2Vzc09uQ3JlYXRlIiwicmVzb2x2ZUFibUNyZWF0ZVN1Y2Nlc3NQbGFuIiwic2hvdWxkU2hvd1Byb2Nlc3NGaWxlc0ZvckNyZWF0ZVBsYW4iLCJyZXNvbHZlQWJtVXBkYXRlU3VjY2Vzc1BsYW4iLCJyZXNvbHZlQWJtVXBkYXRlQWNjZXNzVXBkYXRlQ29udGV4dCIsInJlc29sdmVBYm1VcGRhdGVBY2Nlc3NPbmx5Q29udGV4dCIsInJlc29sdmVBYm1DcmVhdGVBY2Nlc3NPbmx5RGVjaXNpb24iLCJjcmVhdGVSZXNldEFibUFjY2Vzc1VwZGF0ZUNvbnRleHQiLCJzaG91bGRGaW5hbGl6ZUFibVVwZGF0ZVdpdGhvdXRQZW5kaW5nV29yayIsInJlc29sdmVLbm93bGVkZ2VXc0NvbXBsZXRpb25FZmZlY3RzIiwicmVzb2x2ZUFibUtub3dsZWRnZUVycm9yTWVzc2FnZUtleSIsInNob3VsZEJsb2NrS25vd2xlZGdlRGVsZXRlU3VjY2Vzc0Nsb3NlIiwic2hvdWxkRGVmZXJBY2Nlc3NVcGRhdGVVbnRpbEZpbGVzQ29tcGxldGUiLCJzaG91bGRDbG9zZUNyZWF0ZUFmdGVyS25vd2xlZGdlV2l0aG91dEFjY2VzcyIsInNob3VsZENsb3NlQ3JlYXRlQWZ0ZXJLbm93bGVkZ2VXaXRoQWNjZXNzIiwic2hvdWxkQXBwbHlQZW5kaW5nU2VjdGlvbkFmdGVyT3BlbiIsInJlc29sdmVBYm1PcGVuTW9kYWxMb2FkQWN0aW9uIiwiY2FuQXBwbHlBYm1FZGl0aW5nQWdlbnREZXRhaWwiLCJzaG91bGRTZXREZWZhdWx0QWlNb2RlbEZvck5ld0FnZW50Iiwic2hvdWxkU2tpcEFibUNvbmZpcm1XaXRob3V0TXVsdGlBZ2VudHMiLCJyZXNvbHZlQWJtRHJhZnRGYXZvcml0ZVZhbHVlIiwicmVzb2x2ZUFibUNyZWF0ZUZhdm9yaXRlQWdlbnRzIiwiYXBwbHlBYm1Lbm93bGVkZ2VGaWxlQWN0aW9ucyIsIm1lcmdlQWJtQWdlbnRWYWx1ZXNCeUtleSIsInNob3VsZFJ1bkFibUNyZWF0ZVN1Y2Nlc3NIYW5kbGVyIiwicmVzb2x2ZUFibUNyZWF0ZUtub3dsZWRnZUhhbmRsZXIiLCJzaG91bGRSZXBlYXREZWxldGVLbm93bGVkZ2VzT25DcmVhdGUiLCJzaG91bGRFbnF1ZXVlQWJtQ3JlYXRlRmF2b3JpdGVUb2dnbGUiLCJzaG91bGRIYW5kbGVBYm1DcmVhdGVBY2Nlc3NPbmx5Q2xpZW50Iiwic2hvdWxkUHJvY2Vzc0tub3dsZWRnZVdzU3RhdHVzIiwicmVzb2x2ZUFibUtub3dsZWRnZVdzQ2hhbm5lbCIsInJlc29sdmVBYm1GYXZvcml0ZVRvb2x0aXBLZXkiLCJzaG91bGRTZWxlY3RBZ2VudEFmdGVyRGVsZXRlIiwic2hvdWxkUnVuQWJtUHJvY2Vzc0ZpbGVzVGltZW91dCIsInJlc29sdmVBYm1Qcm9jZXNzRmlsZXNUaW1lb3V0U3VjY2Vzc0tleSIsInNob3VsZFN5bmNTZWxlY3RlZEFnZW50QWZ0ZXJNdXRhdGlvbiIsInNob3VsZEluY2x1ZGVBY2Nlc3NpYmlsaXR5VXBkYXRlSW5Lbm93bGVkZ2VCYXRjaCIsInNob3VsZFJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2Vzc09uQ3JlYXRlQ2xvc2UiLCJzaG91bGRIeWRyYXRlQWdlbnRDb25uZWN0b3JzT25FZGl0Iiwic2hvdWxkU2hvd0FibUxvYWRlckZpbGVzIiwicmVzb2x2ZUFibU1vZGFsVGl0bGVLZXkiLCJzaG91bGREaXNhYmxlQWJtSGVhZGVyQ2xvc2UiLCJyZXNvbHZlQWJtU2F2ZUFjdGlvbiIsInJlc29sdmVQcm9jZXNzRmlsZXNUaW1lb3V0RmxhZ0JlZm9yZVNhdmUiLCJnZXRBZ2VudENvbm5lY3RvcnMiLCJoYXNNYWlhRXh0ZXJuYWxDb25uZWN0b3JzQWNjZXNzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiaW5pdGlhbFZhbHVlcyIsIk9iamVjdCIsImZyZWV6ZSIsIlNlY3Rpb25CeUtleSIsImdlbmVyYWwiLCJwcm9wcyIsIl9vYmplY3RTcHJlYWQiLCJrbm93bGVkZ2UiLCJhY2Nlc3NpYmlsaXR5IiwiQWJtQWdlbnRNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl9tb2RhbFZhbHVlcyRhY2Nlc3NpYjMiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDMiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDQiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDUiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDYiLCJhZGRBZ2VudCIsInVwZGF0ZUFnZW50IiwicmVtb3ZlQWdlbnQiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2VsZWN0Rmlyc3RBZ2VudCIsInVzZXIiLCJldmVudEFtcGxpdHVkZSIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJfdXNlR2xvYmFsQ29udGV4dCIsImN1cnJlbnRTZWxlY3RlZEFnZW50IiwiYWdlbnQiLCJzZWxlY3RBZ2VudCIsImFibUFnZW50TW9kYWxaSW5kZXgiLCJ0b29sdGlwWkluZGV4IiwiX3VzZVRvZ2dsZUZhdm9yaXRlIiwidG9nZ2xlRmF2b3JpdGUiLCJzZWxlY3RvciIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc1N1YnNjcmliZWQiLCJzZXRJc1N1YnNjcmliZWQiLCJtb2RhbFJlZiIsImhhc1BlbmRpbmdGaWxlc1JlZiIsImFjdGlvbnNUb0ZpbGVzIiwidG9EZWxldGUiLCJ0b1VwbG9hZCIsImFjY2Vzc1VwZGF0ZUNvbnRleHQiLCJpc0Zyb21DcmVhdGlvbiIsImlzRnJvbUVkaXRpbmciLCJoYXNBY3Rpb25GaWxlcyIsIm9wZXJhdGlvblR5cGUiLCJoYXNCZWVuQ2FsbGVkIiwiYWNjZXNzSGFuZGxlZFJlZiIsImFnZW50Q3JlYXRlZFJlZiIsInBlbmRpbmdJbml0aWFsU2VjdGlvblJlZiIsInByZWZldGNoZWRBZ2VudEJ5SWRSZWYiLCJoeWRyYXRpbmdBZ2VudElkUmVmIiwiZmlsZXNGaW5pc2hlZFJlZiIsInByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJmaWxlc1Byb2Nlc3NlZCIsInNldEZpbGVzUHJvY2Vzc2VkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNob3dNb2RhbERlbGV0ZSIsInNldFNob3dNb2RhbERlbGV0ZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2VjdGlvbiIsInNldFNlY3Rpb24iLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwibW9kYWxWYWx1ZXMiLCJzZXRNb2RhbFZhbHVlcyIsIl91c2VHZXRBZ2VudEJ5SWQiLCJhZ2VudExvYWRpbmciLCJsb2FkaW5nIiwiaGFuZGxlR2V0QWdlbnRCeUlkIiwiYWdlbnRCeUlkIiwiaGFuZGxlQ2xlYW5BZ2VudCIsImVycm9yR2V0QWdlbnRCeUlkIiwiZXJyb3IiLCJfdXNlQWdlbnRNb2RlbCIsImFnZW50TW9kZWxzIiwiZ2V0QWxsQWdlbnRNb2RlbHMiLCJmaXJzdFZhbHVlQWdlbnQiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiaXNTaG93UHJvY2Vzc0ZpbGVzIiwic2V0SXNTaG93UHJvY2Vzc0ZpbGVzIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImhhc0ZpbGVFcnJvcnMiLCJzZXRIYXNGaWxlRXJyb3JzIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJfdXNlRGVsZXRlQWdlbnQiLCJoYW5kbGVEZWxldGVBZ2VudCIsInN1Y2Nlc3NEZWxldGUiLCJzdWNjZXNzIiwicmVzZXRTdWNjZXNzIiwiX3VzZVVwZGF0ZUFnZW50IiwiaGFuZGxlVXBkYXRlQWdlbnQiLCJzdWNjZXNzVXBkYXRlIiwicmVzZXRTdWNjZXNzVXBkYXRlIiwiX3VzZUNyZWF0ZUFnZW50IiwiaGFuZGxlQ3JlYXRlQWdlbnQiLCJpc0xvYWRpbmdDcmVhdGUiLCJzdWNjZXNzQ3JlYXRlIiwicmVzZXRTdWNjZXNzQ3JlYXRlIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyU3VjY2VzcyIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJfdXNlS25vd2xlZGdlT3BlcmF0aW8iLCJoYW5kbGVDcmVhdGVLbm93bGVkZ2VzIiwiaGFuZGxlRGVsZXRlS25vd2xlZGdlcyIsImhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMiLCJpc0xvYWRpbmdLbm93bGVkZ2UiLCJlcnJvcktub3dsZWRnZSIsInN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUiLCJoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlIiwiaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlIiwiX3VzZUFjY2Vzc0NsaWVudCIsImhhbmRsZUFjY2Vzc0NsaWVudCIsInN1Y2Nlc3NVcGRhdGVBY2Nlc3MiLCJpc0xvYWRpbmdVcGRhdGVBY2Nlc3MiLCJyZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MiLCJoYW5kbGVSZXNldFN1Y2Nlc3MiLCJjcmVhdGlvbkRyYWZ0RGVmYXVsdHMiLCJfYWdlbnRNb2RlbHMkMCRpZCIsIl9hZ2VudE1vZGVscyQiLCJkZWZhdWx0SW5wdXRQbGFjZWhvbGRlciIsImRlZmF1bHRVc2VyUHJvbXB0UGxhY2Vob2xkZXIiLCJkZWZhdWx0QWlNb2RlbElkIiwiaWQiLCJoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCIsIl9maXJzdFZhbHVlQWdlbnQkY3VyciIsImN1cnJlbnQiLCJoYXNQZW5kaW5nQ2hhbmdlcyIsInZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUiLCJCb29sZWFuIiwiaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudCIsImFnZW50SWQiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwidXBkYXRlZEFnZW50IiwiaXNfZmF2b3JpdGUiLCJoYW5kbGVDbG9zZSIsImNyZWF0ZSIsInVwZGF0ZSIsImNvbmZpcm1NZXNzYWdlIiwiaXNFZGl0aW5nIiwid2luZG93IiwiY29uZmlybSIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJldmVudCIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJoYW5kbGVTZWN0aW9uQ2hhbmdlIiwibmV3U2VjdGlvbiIsInRhYlNlY3Rpb24iLCJvcHRpb24iLCJoYW5kbGVTZXRBZ2VudFZhbHVlc0J5S2V5cyIsIl9yZWYyIiwia2V5IiwidmFsdWUiLCJkZWxldGVLbm93bGVkZ2UiLCJuZXh0QWN0aW9ucyIsInByZXYiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImNoYXQiLCJhY3Rpb24iLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWIiLCJjb3JBY2Nlc3MiLCJzYXZlQWN0aW9uIiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJhYnJ1cHQiLCJjb25maXJtQWN0aW9uIiwiY29yX3NsdWdzIiwiY29yX2FjY2VzcyIsInN0b3AiLCJfeCIsIl94MiIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJfYWdlbnRWYWx1ZXMkdmFsdWVzIiwiX2FnZW50VmFsdWVzJHZhbHVlczMiLCJhZ2VudFZhbHVlcyIsImRldGFpbCIsImluaXRpYWxTZWN0aW9uIiwib3BlbkxvYWRBY3Rpb24iLCJ2YWx1ZXMiLCJoYXNNdWx0aUFnZW50c0FjY2VzcyIsImhhc1ByZWZldGNoZWRBZ2VudCIsInByZWZldGNoZWRBZ2VudEJ5SWQiLCJfYWdlbnRWYWx1ZXMkdmFsdWVzMiIsIm5leHRWYWx1ZXMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInVuZGVmaW5lZCIsIl9kb2N1bWVudCIsImJvZHkiLCJvcmlnaW5hbE92ZXJmbG93Iiwic3R5bGUiLCJvdmVyZmxvdyIsImhhbmRsZUJlZm9yZVVubG9hZCIsInByZXZlbnREZWZhdWx0IiwicmV0dXJuVmFsdWUiLCJjcmVhdGVQbGFuIiwiX3Jlc29sdmVBYm1DcmVhdGVGYXZvIiwibGlzdEFnZW50IiwidG9nZ2xlQWdlbnQiLCJlbnF1ZXVlQ3JlYXRlRmF2b3JpdGUiLCJwcm9taXNlcyIsInB1c2giLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInRvU3RyaW5nIiwiYWNjZXNzVHlwZSIsImtub3dsZWRnZUhhbmRsZXIiLCJmaWxlc1RvRGVsZXRlIiwiZmlsZXNUb0NyZWF0ZSIsImZpbGVzIiwiYWxsIiwiYWNjZXNzT25seURlY2lzaW9uIiwibmV4dENvbnRleHQiLCJhaUNoYXRGYXZvcml0ZSIsImFjY2Vzc2liaWxpdHlDaGFuZ2VkIiwidXBkYXRlUGxhbiIsIl90b0NvbnN1bWFibGVBcnJheSIsImZpbGVzVG9VcGxvYWQiLCJjb25jYXQiLCJhY2Nlc3NPbmx5Q29udGV4dCIsImhhc1BlbmRpbmdGaWxlcyIsInRvVXBsb2FkQ291bnQiLCJsZW5ndGgiLCJhY2Nlc3NIYXNBY3Rpb25GaWxlcyIsInByb2Nlc3NGaWxlc1RpbWVkT3V0IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiaGFuZGxlUHJvY2Vzc0ZpbGVzVGltZW91dCIsIndlYlNvY2tldEZ1bmN0aW9uIiwiX3JlZjQiLCJtb2RlbERhdGEiLCJtb2RlbF9kYXRhIiwiZmlsZVN0YXR1cyIsInN0YXR1cyIsInVwZGF0ZWRLbm93bGVkZ2UiLCJ1cGxvYWRPdXRjb21lIiwid3NFZmZlY3RzIiwiY2xvc2VQcm9jZXNzRmlsZXMiLCJpbmNyZW1lbnRGaWxlc1Byb2Nlc3NlZCIsIm1hcmtGaWxlc0ZpbmlzaGVkRm9yQ3JlYXRlIiwicHJldkNvdW50IiwiY29udGV4dCIsIl9yZXNvbHZlQWJtQ3JlYXRlRmF2bzIiLCJmaWxlc0ZpbmlzaGVkIiwiaGFzU3VjY2Vzc0NyZWF0ZSIsImFjY2Vzc0hhbmRsZWQiLCJfc3VjY2Vzc0NyZWF0ZSRpZCIsImNoYW5uZWwiLCIkX3NjIiwiXyRfc2MiLCJzdWJzY3JpYmVIYW5kbGVyIiwiXyRfc2MyIiwiXyRfc2MzIiwiXyRfc2MkY2hhbm5lbFR5cGUiLCJtb2RlbF9oYXNoIiwiYWN0aW9uVHlwZSIsIlNVQlNDUklCRSIsInVwZGF0ZUNvbm5lY3Rpb25Nb2RlbCIsImNoYW5uZWxUeXBlIiwiTU9ERUxfQ0hBTk5FTCIsImFwcGx5RWRpdGluZ0FnZW50IiwiX3JlZjUiLCJfY2FsbGVlMiIsInNvdXJjZSIsImFnZW50VmFsdWVzVG9TZXQiLCJjb25uZWN0b3JzIiwiX3QiLCJfY29udGV4dDIiLCJzZXRUaW1lb3V0IiwiU3RyaW5nIiwic2VudCIsInNlbGVjdGVkQ29ubmVjdG9ycyIsImNvbm5lY3RvclN0YXR1c2VzIiwiZnJvbUVudHJpZXMiLCJtYXAiLCJjb25uZWN0b3IiLCJzbHVnIiwiY29ubmVjdGlvbl9zdGF0dXMiLCJ1c2VyX2F1dGhvcml6ZWQiLCJjb25zb2xlIiwiX3gzIiwicHJlZmV0Y2hlZCIsImhhc0FnZW50QnlJZCIsImFpTW9kZWwiLCJzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMiLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWIyIiwiY2xpZW50cyIsImhhbmRsZVRvZ2dsZUZhdm9yaXRlIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDIiLCJ6SW5kZXgiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJyZWYiLCJ0YWJJbmRleCIsInNpemUiLCJjb2xvciIsImF0dGFjaG1lbnRzIiwibGFiZWwiLCJvblRpbWVvdXQiLCJ0aXRsZSIsIndpZHRoIiwiaGVpZ2h0IiwiZmlsbCIsInZhcmlhbnQiLCJjbGFzc05hbWUiLCJjYW5jZWxNb2RhbCIsImRpc2FibGVkIiwiaGFzU2Nyb2xsIiwiaXNBY3RpdmUiLCIkaW5kZXgiLCJleGlzdGluZ0tub3dsZWRnZSIsIm5ld0tub3dsZWRnZSIsIm9uUmVtb3ZlRXhpc3RpbmdLbm93bGVkZ2UiLCJvblJlbW92ZU5ld0tub3dsZWRnZSIsIm9uRmlsZUVycm9yQ2hhbmdlIiwiY2hpbGRyZW5XaXRoSWNvbiIsImRpc3BsYXkiLCJnYXAiLCJpc0Rpc2FibGVkIiwiaW5pdGlhbCIsImZpbGVBY3Rpb25zIiwib25DbG9zZSIsImhhbmRsZXJzIiwibmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9BYm1BZ2VudE1vZGFsL0FibUFnZW50TW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWFsZXJ0ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tY3ljbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby11c2VsZXNzLWZyYWdtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5cbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DYXRlZ29yeSdcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQWxlcnQnXG5pbXBvcnQgeyBUcmFzaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1RyYXNoJ1xuaW1wb3J0IHsgU3RhciB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1N0YXInXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgU3Bpbm5lckxvdHRpZSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2Nvci1jb21tb25zL2xpYi9jb21wb25lbnRzL3NwaW5uZXItbG90dGllJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbidcbmltcG9ydCB7IEJhY2tkcm9wIH0gZnJvbSAnLi4vLi4vYXRvbXMvQmFja2Ryb3AnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlJY29uLCBCcmFpbkljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IHVzZUFnZW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBZ2VudE1vZGVsL3VzZUFnZW50TW9kZWwnXG5pbXBvcnQgeyBBZ2VudCwgQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgdXNlR2V0QWdlbnRCeUlkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRCeUlkJ1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQWJtR2VuZXJhbFNlY3Rpb24sIEFibUtub3dsZWRnZVNlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbidcbmltcG9ydCB7IE1vZGFsVmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnRNb2RhbCdcbmltcG9ydCB7XG4gIFNDQUFNQ29udGVudCxcbiAgU0NBQU1Gb290ZXIsXG4gIFNDQUFNSGVhZGVyLFxuICBTQ0FBTUhlYWRlclRpdGxlLFxuICBTQ0FBTUhlYWRlckxlZnQsXG4gIFNDQUFNSGVhZGVyRmF2b3JpdGUsXG4gIFNDQUFNSGVhZGVyQ2xvc2VCdXR0b24sXG4gIFNDQUFNU2lkZWJhcixcbiAgU0NBQU1XcmFwcGVyLFxuICBTQ0FBTVNpZGViYXJJdGVtLFxuICBTQ0FBTVNpZGViYXJJdGVtVGl0bGUsXG4gIFNDQUFNRGVsZXRlQnV0dG9uLFxuICBTQ0FBTVNhdmVCdXR0b24sXG4gIFNDQUFNV3JhcHBlclNwaW5uZXIsXG4gIFNDQUFNV3JhcHBlclNwaW5uZXJDb250ZW50LFxuICBTQ0FBTVNpZGViYXJJdGVtRXJyb3IsXG59IGZyb20gJy4vQWJtQWdlbnRNb2RhbC5zdHlsZXMnXG5pbXBvcnQgeyB1c2VDcmVhdGVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50TW9kZWwvdXNlQ3JlYXRlQWdlbnQnXG5pbXBvcnQgeyB1c2VEZWxldGVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50TW9kZWwvdXNlRGVsZXRlQWdlbnQnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VVcGRhdGVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50TW9kZWwvdXNlVXBkYXRlQWdlbnQnXG5pbXBvcnQgeyB1c2VLbm93bGVkZ2VPcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlS25vd2xlZGdlJ1xuaW1wb3J0IHsgQWJtTG9hZGVyRmlsZXMgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1Mb2FkZXJGaWxlcydcbmltcG9ydCB7IFdyYXBwZXJDZW50ZXJJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvV3JhcHBlckNlbnRlckljb24nXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBEZWxldGVRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vRGVsZXRlUXVlc3Rpb25Nb2RhbC9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5pbXBvcnQgeyB1c2VBY2Nlc3NDbGllbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBY2Nlc3NDbGllbnQvdXNlQWNjZXNzQ2xpZW50J1xuaW1wb3J0IHsgdXNlVG9nZ2xlRmF2b3JpdGUgfSBmcm9tICcuLi8uLi8uLi9ob29rcydcbmltcG9ydCB7XG4gIGJ1aWxkQWdlbnRUb29sR3JvdXBzUmVxdWVzdCxcbiAgREVGQVVMVF9DT1JfQUNDRVNTLFxuICBkZXJpdmVBc3NpZ25lZENvbm5lY3RvclNsdWdzLFxufSBmcm9tICcuLi8uLi8uLi91dGlscy9ub3JtYWxpemVBZ2VudENvbm5lY3RvcnMnXG5pbXBvcnQge1xuICBhcHBseUtub3dsZWRnZUZpbGVTdGF0dXNVcGRhdGUsXG4gIGJ1aWxkRWRpdGluZ01vZGFsVmFsdWVzRnJvbUFnZW50RGV0YWlsLFxuICBjcmVhdGVJbml0aWFsQWJtTW9kYWxWYWx1ZXMsXG4gIGhhc0FibVBlbmRpbmdDaGFuZ2VzLFxuICBoYXNBY2Nlc3NpYmlsaXR5U2VjdGlvbkNoYW5nZWQsXG4gIGhhc0luYWN0aXZlQWNjZXNzaWJpbGl0eUNsaWVudHMsXG4gIGlzQWJtU2F2ZURpc2FibGVkLFxuICBpc1NhbWVBZ2VudE1vZGFsU25hcHNob3QsXG4gIHJlc29sdmVLbm93bGVkZ2VVcGxvYWRPdXRjb21lLFxuICBzaG91bGRDb25maXJtQWJtQ2xvc2UsXG4gIGNhblJlbmRlckFibUFnZW50TW9kYWwsXG4gIGlzQWJtQWNjZXNzRGVuaWVkRXJyb3IsXG4gIHJlc29sdmVBYm1Qcm9jZXNzaW5nS25vd2xlZGdlTGFiZWxLZXksXG4gIHJlc29sdmVQZW5kaW5nQWJtSW5pdGlhbFNlY3Rpb24sXG4gIG1lcmdlQWJtT3BlbkFnZW50VmFsdWVzLFxuICBzaG91bGRDbG9zZUFibU9uQmFja2Ryb3BDbGljayxcbiAgcmVzb2x2ZUFibUNyZWF0ZUFjY2Vzc1VwZGF0ZUNvbnRleHQsXG4gIHNob3VsZFN5bmNBYm1DbGllbnRBY2Nlc3NPbkNyZWF0ZSxcbiAgcmVzb2x2ZUFibUNyZWF0ZVN1Y2Nlc3NQbGFuLFxuICBzaG91bGRTaG93UHJvY2Vzc0ZpbGVzRm9yQ3JlYXRlUGxhbixcbiAgcmVzb2x2ZUFibVVwZGF0ZVN1Y2Nlc3NQbGFuLFxuICByZXNvbHZlQWJtVXBkYXRlQWNjZXNzVXBkYXRlQ29udGV4dCxcbiAgcmVzb2x2ZUFibVVwZGF0ZUFjY2Vzc09ubHlDb250ZXh0LFxuICByZXNvbHZlQWJtQ3JlYXRlQWNjZXNzT25seURlY2lzaW9uLFxuICBjcmVhdGVSZXNldEFibUFjY2Vzc1VwZGF0ZUNvbnRleHQsXG4gIHNob3VsZEZpbmFsaXplQWJtVXBkYXRlV2l0aG91dFBlbmRpbmdXb3JrLFxuICByZXNvbHZlS25vd2xlZGdlV3NDb21wbGV0aW9uRWZmZWN0cyxcbiAgcmVzb2x2ZUFibUtub3dsZWRnZUVycm9yTWVzc2FnZUtleSxcbiAgc2hvdWxkQmxvY2tLbm93bGVkZ2VEZWxldGVTdWNjZXNzQ2xvc2UsXG4gIHNob3VsZERlZmVyQWNjZXNzVXBkYXRlVW50aWxGaWxlc0NvbXBsZXRlLFxuICBzaG91bGRDbG9zZUNyZWF0ZUFmdGVyS25vd2xlZGdlV2l0aG91dEFjY2VzcyxcbiAgc2hvdWxkQ2xvc2VDcmVhdGVBZnRlcktub3dsZWRnZVdpdGhBY2Nlc3MsXG4gIHNob3VsZEFwcGx5UGVuZGluZ1NlY3Rpb25BZnRlck9wZW4sXG4gIHJlc29sdmVBYm1PcGVuTW9kYWxMb2FkQWN0aW9uLFxuICBjYW5BcHBseUFibUVkaXRpbmdBZ2VudERldGFpbCxcbiAgc2hvdWxkU2V0RGVmYXVsdEFpTW9kZWxGb3JOZXdBZ2VudCxcbiAgc2hvdWxkU2tpcEFibUNvbmZpcm1XaXRob3V0TXVsdGlBZ2VudHMsXG4gIHJlc29sdmVBYm1EcmFmdEZhdm9yaXRlVmFsdWUsXG4gIHJlc29sdmVBYm1DcmVhdGVGYXZvcml0ZUFnZW50cyxcbiAgYXBwbHlBYm1Lbm93bGVkZ2VGaWxlQWN0aW9ucyxcbiAgbWVyZ2VBYm1BZ2VudFZhbHVlc0J5S2V5LFxuICBzaG91bGRSdW5BYm1DcmVhdGVTdWNjZXNzSGFuZGxlcixcbiAgcmVzb2x2ZUFibUNyZWF0ZUtub3dsZWRnZUhhbmRsZXIsXG4gIHNob3VsZFJlcGVhdERlbGV0ZUtub3dsZWRnZXNPbkNyZWF0ZSxcbiAgc2hvdWxkRW5xdWV1ZUFibUNyZWF0ZUZhdm9yaXRlVG9nZ2xlLFxuICBzaG91bGRIYW5kbGVBYm1DcmVhdGVBY2Nlc3NPbmx5Q2xpZW50LFxuICBzaG91bGRQcm9jZXNzS25vd2xlZGdlV3NTdGF0dXMsXG4gIHJlc29sdmVBYm1Lbm93bGVkZ2VXc0NoYW5uZWwsXG4gIHJlc29sdmVBYm1GYXZvcml0ZVRvb2x0aXBLZXksXG4gIHNob3VsZFNlbGVjdEFnZW50QWZ0ZXJEZWxldGUsXG4gIHNob3VsZFJ1bkFibVByb2Nlc3NGaWxlc1RpbWVvdXQsXG4gIHJlc29sdmVBYm1Qcm9jZXNzRmlsZXNUaW1lb3V0U3VjY2Vzc0tleSxcbiAgc2hvdWxkU3luY1NlbGVjdGVkQWdlbnRBZnRlck11dGF0aW9uLFxuICBzaG91bGRJbmNsdWRlQWNjZXNzaWJpbGl0eVVwZGF0ZUluS25vd2xlZGdlQmF0Y2gsXG4gIHNob3VsZFJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2Vzc09uQ3JlYXRlQ2xvc2UsXG4gIHNob3VsZEh5ZHJhdGVBZ2VudENvbm5lY3RvcnNPbkVkaXQsXG4gIHNob3VsZFNob3dBYm1Mb2FkZXJGaWxlcyxcbiAgcmVzb2x2ZUFibU1vZGFsVGl0bGVLZXksXG4gIHNob3VsZERpc2FibGVBYm1IZWFkZXJDbG9zZSxcbiAgcmVzb2x2ZUFibVNhdmVBY3Rpb24sXG4gIHJlc29sdmVQcm9jZXNzRmlsZXNUaW1lb3V0RmxhZ0JlZm9yZVNhdmUsXG59IGZyb20gJy4vQWJtQWdlbnRNb2RhbC5oZWxwZXJzJ1xuaW1wb3J0IHsgZ2V0QWdlbnRDb25uZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvY29ubmVjdG9ycydcbmltcG9ydCB7IGhhc01haWFFeHRlcm5hbENvbm5lY3RvcnNBY2Nlc3MgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvbWFpYUV4dGVybmFsQ29ubmVjdG9yc0FjY2VzcydcblxuY29uc3QgaW5pdGlhbFZhbHVlcyA9IE9iamVjdC5mcmVlemUoY3JlYXRlSW5pdGlhbEFibU1vZGFsVmFsdWVzKCkpXG5cbnR5cGUgQWJtU2VjdGlvbiA9ICdnZW5lcmFsJyB8ICdrbm93bGVkZ2UnIHwgJ3RyYWluaW5nJyB8ICd0ZXN0aW5nJyB8ICdhY2Nlc3NpYmlsaXR5J1xuXG5leHBvcnQgY29uc3QgU2VjdGlvbkJ5S2V5ID0ge1xuICBnZW5lcmFsOiAocHJvcHM6IHtcbiAgICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6ICh7XG4gICAgICBrZXksXG4gICAgICB2YWx1ZSxcbiAgICAgIGRlbGV0ZUtub3dsZWRnZSxcbiAgICB9OiB7XG4gICAgICBrZXk6IHN0cmluZ1xuICAgICAgdmFsdWU6IHVua25vd25cbiAgICAgIGRlbGV0ZUtub3dsZWRnZT86IGJvb2xlYW5cbiAgICB9KSA9PiB2b2lkXG4gICAgYWdlbnRNb2RlbHM6IEFnZW50TW9kZWxbXVxuICAgIGxvYWRpbmc6IGJvb2xlYW5cbiAgICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG4gIH0pID0+IDxBYm1HZW5lcmFsU2VjdGlvbiB7Li4ucHJvcHN9IC8+LFxuICBrbm93bGVkZ2U6IChwcm9wczoge1xuICAgIHZhbHVlczogTW9kYWxWYWx1ZXNcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gICAgZXhpc3RpbmdLbm93bGVkZ2U6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBuZXdLbm93bGVkZ2U6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBvblJlbW92ZUV4aXN0aW5nS25vd2xlZGdlOiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvblJlbW92ZU5ld0tub3dsZWRnZTogKGZpbGVJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25GaWxlRXJyb3JDaGFuZ2U6IChoYXNFcnJvcnM6IGJvb2xlYW4pID0+IHZvaWRcbiAgICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG4gIH0pID0+IDxBYm1Lbm93bGVkZ2VTZWN0aW9uIHsuLi5wcm9wc30gLz4sXG4gIGFjY2Vzc2liaWxpdHk6IChwcm9wczoge1xuICAgIHZhbHVlczogTW9kYWxWYWx1ZXNcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gIH0pID0+IDxBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiB7Li4ucHJvcHN9IC8+LFxufVxuXG50eXBlIEFibUFnZW50TW9kYWxQcm9wcyA9IHtcbiAgYWRkQWdlbnQ6IChuZXdBZ2VudDogQWdlbnQsIG9wdGlvbnM/OiB7IG5hdmlnYXRlSG9tZT86IGJvb2xlYW4gfSkgPT4gdm9pZFxuICByZW1vdmVBZ2VudDogKGFnZW50SWQ6IG51bWJlciB8IHN0cmluZykgPT4gdm9pZFxuICB1cGRhdGVBZ2VudDogKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgdXBkYXRlQWdlbnRGYXZvcml0ZTogKHVwZGF0ZWRBZ2VudDogQWdlbnQsIHNob3VsZFNvcnQ/OiBib29sZWFuKSA9PiB2b2lkXG4gIHNlbGVjdEZpcnN0QWdlbnQ6IChhZ2VudElkOiBzdHJpbmcpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IEFibUFnZW50TW9kYWwgPSAoe1xuICBhZGRBZ2VudCxcbiAgdXBkYXRlQWdlbnQsXG4gIHJlbW92ZUFnZW50LFxuICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICBzZWxlY3RGaXJzdEFnZW50LFxufTogQWJtQWdlbnRNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2FibV9hZ2VudF9zZWN0aW9uJylcbiAgLy8gY29uc3QgJF9zYzogYW55ID0gbnVsbFxuICBjb25zdCB7IGFnZW50OiBjdXJyZW50U2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBhYm1BZ2VudE1vZGFsWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMTEyLCAnYWdlbnRNb2RhbCcpXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICduZXN0ZWRNb2RhbCcpXG4gIGNvbnN0IHsgdG9nZ2xlRmF2b3JpdGUgfSA9IHVzZVRvZ2dsZUZhdm9yaXRlKClcbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWJtLWFnZW50LW1vZGFsJylcbiAgY29uc3QgW2lzU3Vic2NyaWJlZCwgc2V0SXNTdWJzY3JpYmVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBtb2RhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaGFzUGVuZGluZ0ZpbGVzUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBhY3Rpb25zVG9GaWxlcyA9IHVzZVJlZjxhbnk+KHtcbiAgICB0b0RlbGV0ZTogW10sXG4gICAgdG9VcGxvYWQ6IFtdLFxuICB9KVxuICBjb25zdCBhY2Nlc3NVcGRhdGVDb250ZXh0ID0gdXNlUmVmPHtcbiAgICBpc0Zyb21DcmVhdGlvbjogYm9vbGVhblxuICAgIGlzRnJvbUVkaXRpbmc6IGJvb2xlYW5cbiAgICBoYXNBY3Rpb25GaWxlczogYm9vbGVhblxuICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnIHwgJ3VwZGF0ZScgfCBudWxsXG4gICAgaGFzQmVlbkNhbGxlZD86IGJvb2xlYW5cbiAgfT4oe1xuICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgfSlcbiAgY29uc3QgYWNjZXNzSGFuZGxlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWdlbnRDcmVhdGVkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZiA9IHVzZVJlZjxBYm1TZWN0aW9uIHwgbnVsbD4obnVsbClcbiAgY29uc3QgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZiA9IHVzZVJlZjxhbnk+KG51bGwpXG4gIGNvbnN0IGh5ZHJhdGluZ0FnZW50SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgZmlsZXNGaW5pc2hlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgLy8gTWFyY2EgY3VhbmRvIGNlcnJhbW9zIGVsIGxvYWRlciBwb3IgZWwgdGltZW91dCBkZSBzZWd1cmlkYWQgZGUgYXJjaGl2b3MuXG4gIC8vIE1pZW50cmFzIGVzdMOpIGFjdGl2bywgbG9zIHVzZUVmZmVjdCBkZSBwb3N0LWd1YXJkYWRvIE5PIGRlYmVuIGRpc3BhcmFyXG4gIC8vIHNuYWNrYmFycyBkZSDDqXhpdG8gbmkgYXV0by1jZXJyYXIgZWwgbW9kYWwuXG4gIGNvbnN0IHByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBbZmlsZXNQcm9jZXNzZWQsIHNldEZpbGVzUHJvY2Vzc2VkXSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dNb2RhbERlbGV0ZSwgc2V0U2hvd01vZGFsRGVsZXRlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2VjdGlvbiwgc2V0U2VjdGlvbl0gPSB1c2VTdGF0ZTxBYm1TZWN0aW9uPignZ2VuZXJhbCcpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW21vZGFsVmFsdWVzLCBzZXRNb2RhbFZhbHVlc10gPSB1c2VTdGF0ZTx7XG4gICAgZ2VuZXJhbDogYW55XG4gICAga25vd2xlZGdlOiBhbnlcbiAgICBpc0VkaXRpbmc6IGJvb2xlYW5cbiAgICBhY2Nlc3NpYmlsaXR5OiBhbnlcbiAgfT4oaW5pdGlhbFZhbHVlcylcbiAgY29uc3Qge1xuICAgIGxvYWRpbmc6IGFnZW50TG9hZGluZyxcbiAgICBoYW5kbGVHZXRBZ2VudEJ5SWQsXG4gICAgYWdlbnQ6IGFnZW50QnlJZCxcbiAgICBoYW5kbGVDbGVhbkFnZW50LFxuICAgIGVycm9yOiBlcnJvckdldEFnZW50QnlJZCxcbiAgfSA9IHVzZUdldEFnZW50QnlJZCgpXG4gIGNvbnN0IHsgYWdlbnRNb2RlbHMsIGdldEFsbEFnZW50TW9kZWxzIH0gPSB1c2VBZ2VudE1vZGVsKClcbiAgY29uc3QgZmlyc3RWYWx1ZUFnZW50ID0gdXNlUmVmPGFueT4obnVsbClcbiAgY29uc3QgW2lzU2hvd1Byb2Nlc3NGaWxlcywgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaGFzRmlsZUVycm9ycywgc2V0SGFzRmlsZUVycm9yc10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG5cbiAgY29uc3QgeyBoYW5kbGVEZWxldGVBZ2VudCwgc3VjY2Vzczogc3VjY2Vzc0RlbGV0ZSwgcmVzZXRTdWNjZXNzIH0gPSB1c2VEZWxldGVBZ2VudCgpXG4gIGNvbnN0IHsgaGFuZGxlVXBkYXRlQWdlbnQsIHN1Y2Nlc3M6IHN1Y2Nlc3NVcGRhdGUsIHJlc2V0U3VjY2VzczogcmVzZXRTdWNjZXNzVXBkYXRlIH0gPSB1c2VVcGRhdGVBZ2VudCgpXG5cbiAgY29uc3Qge1xuICAgIGhhbmRsZUNyZWF0ZUFnZW50LFxuICAgIGlzTG9hZGluZzogaXNMb2FkaW5nQ3JlYXRlLFxuICAgIHN1Y2Nlc3M6IHN1Y2Nlc3NDcmVhdGUsXG4gICAgcmVzZXRTdWNjZXNzOiByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gIH0gPSB1c2VDcmVhdGVBZ2VudCgpXG5cbiAgY29uc3QgeyBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsIGhhbmRsZVNuYWNrYmFyRXJyb3IgfSA9IHVzZVNuYWNrQmFyTWFuYWdlcigpXG5cbiAgY29uc3Qge1xuICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGlzTG9hZGluZzogaXNMb2FkaW5nS25vd2xlZGdlLFxuICAgIGVycm9yOiBlcnJvcktub3dsZWRnZSxcbiAgICBzdWNjZXNzRGVsZXRlOiBzdWNjZXNzS25vd2xlZGdlRGVsZXRlLFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc1NhdmUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlLFxuICB9ID0gdXNlS25vd2xlZGdlT3BlcmF0aW9ucygpXG5cbiAgY29uc3Qge1xuICAgIGhhbmRsZUFjY2Vzc0NsaWVudCxcbiAgICBzdWNjZXNzOiBzdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGlzTG9hZGluZzogaXNMb2FkaW5nVXBkYXRlQWNjZXNzLFxuICAgIGhhbmRsZVJlc2V0U3VjY2VzczogcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzLFxuICB9ID0gdXNlQWNjZXNzQ2xpZW50KClcblxuICBpZiAoIXNlbGVjdG9yKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGNyZWF0aW9uRHJhZnREZWZhdWx0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHRJbnB1dFBsYWNlaG9sZGVyOiB0KCdnZW5lcmFsU2VjdGlvbi5pbnB1dFBsYWNlaG9sZGVyJyksXG4gICAgICBkZWZhdWx0VXNlclByb21wdFBsYWNlaG9sZGVyOiB0KCdnZW5lcmFsU2VjdGlvbi5pbml0aWFsUHJvbXB0UGxhY2Vob2xkZXInKSxcbiAgICAgIGRlZmF1bHRBaU1vZGVsSWQ6IGFnZW50TW9kZWxzWzBdPy5pZCA/PyBudWxsLFxuICAgIH0pLFxuICAgIFthZ2VudE1vZGVscywgdF1cbiAgKVxuXG4gIGNvbnN0IGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkID0gKCkgPT5cbiAgICBoYXNBY2Nlc3NpYmlsaXR5U2VjdGlvbkNoYW5nZWQobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSwgZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQ/LmFjY2Vzc2liaWxpdHkpXG5cbiAgY29uc3QgaGFzUGVuZGluZ0NoYW5nZXMgPSAoKSA9PlxuICAgIGhhc0FibVBlbmRpbmdDaGFuZ2VzKG1vZGFsVmFsdWVzLCBmaXJzdFZhbHVlQWdlbnQuY3VycmVudCwgYWN0aW9uc1RvRmlsZXMuY3VycmVudCwgY3JlYXRpb25EcmFmdERlZmF1bHRzKVxuXG4gIGNvbnN0IHZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUgPSAoKSA9PlxuICAgIEJvb2xlYW4oXG4gICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudCAmJiBpc1NhbWVBZ2VudE1vZGFsU25hcHNob3QobW9kYWxWYWx1ZXMsIGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LCBhY3Rpb25zVG9GaWxlcy5jdXJyZW50KVxuICAgIClcblxuICAvLyBIZWxwZXIgcGFyYSBtYW5lamFyIGVsIHRvZ2dsZSBkZSBmYXZvcml0byB5IGFjdHVhbGl6YXIgZWwgZXN0YWRvIGNvbiBvcmRlbmFtaWVudG9cbiAgY29uc3QgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudCA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkOiBzdHJpbmcsIGFnZW50OiBBZ2VudCwgb25TdWNjZXNzPzogKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHZvaWQsIG9uRXJyb3I/OiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICB0b2dnbGVGYXZvcml0ZShcbiAgICAgICAgYWdlbnRJZCxcbiAgICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgICAvLyBBY3R1YWxpemFyIGVsIGVzdGFkbyBkZSBhZ2VudGVzIGNvbiBlbCByZXN1bHRhZG8gZGVsIHNlcnZpZG9yIHkgb3JkZW5hclxuICAgICAgICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUodXBkYXRlZEFnZW50LCB0cnVlKVxuICAgICAgICAgIGlmIChvblN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIG9uU3VjY2Vzcyh1cGRhdGVkQWdlbnQpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgICAgICAgIG9uRXJyb3IoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYWdlbnQuaXNfZmF2b3JpdGVcbiAgICAgIClcbiAgICB9LFxuICAgIFt0b2dnbGVGYXZvcml0ZSwgdXBkYXRlQWdlbnRGYXZvcml0ZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHNob3VsZENvbmZpcm1BYm1DbG9zZShoYXNQZW5kaW5nQ2hhbmdlcygpLCB7XG4gICAgICAgIGNyZWF0ZTogc3VjY2Vzc0NyZWF0ZSxcbiAgICAgICAgdXBkYXRlOiBzdWNjZXNzVXBkYXRlLFxuICAgICAgICBkZWxldGU6IHN1Y2Nlc3NEZWxldGUsXG4gICAgICB9KVxuICAgICkge1xuICAgICAgY29uc3QgY29uZmlybU1lc3NhZ2UgPSBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyB0KCdjb25maXJtQ2xvc2VFZGl0QWdlbnQnKSA6IHQoJ2NvbmZpcm1DbG9zZUNyZWF0ZUFnZW50JylcblxuICAgICAgaWYgKCF3aW5kb3cuY29uZmlybShjb25maXJtTWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0TW9kYWxWYWx1ZXMoaW5pdGlhbFZhbHVlcylcbiAgICBoYW5kbGVDbGVhbkFnZW50KClcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlKClcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG4gICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudCA9IHtcbiAgICAgIHRvRGVsZXRlOiBbXSxcbiAgICAgIHRvVXBsb2FkOiBbXSxcbiAgICB9XG4gICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0gY3JlYXRlUmVzZXRBYm1BY2Nlc3NVcGRhdGVDb250ZXh0KClcbiAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpXG4gICAgc2V0SXNTdWJzY3JpYmVkKGZhbHNlKVxuICAgIHNldEZpbGVzUHJvY2Vzc2VkKDApXG4gICAgc2V0U2VjdGlvbignZ2VuZXJhbCcpXG4gICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgIGh5ZHJhdGluZ0FnZW50SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBhZ2VudENyZWF0ZWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9IG51bGxcbiAgICBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnQgPSBudWxsXG4gIH1cblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKHNob3VsZENsb3NlQWJtT25CYWNrZHJvcENsaWNrKGV2ZW50LnRhcmdldCwgZXZlbnQuY3VycmVudFRhcmdldCwgaXNTaG93UHJvY2Vzc0ZpbGVzKSkge1xuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlY3Rpb25DaGFuZ2UgPSAobmV3U2VjdGlvbjogQWJtU2VjdGlvbikgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy50YWJTZWN0aW9uLCB7IG9wdGlvbjogbmV3U2VjdGlvbiB9KVxuICAgIHNldFNlY3Rpb24obmV3U2VjdGlvbilcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNldEFnZW50VmFsdWVzQnlLZXlzID0gKHtcbiAgICBrZXksXG4gICAgdmFsdWUsXG4gICAgZGVsZXRlS25vd2xlZGdlLFxuICB9OiB7XG4gICAga2V5OiBzdHJpbmdcbiAgICB2YWx1ZTogYW55XG4gICAgZGVsZXRlS25vd2xlZGdlOiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBpZiAoa2V5ID09PSAna25vd2xlZGdlJykge1xuICAgICAgY29uc3QgbmV4dEFjdGlvbnMgPSBhcHBseUFibUtub3dsZWRnZUZpbGVBY3Rpb25zKFxuICAgICAgICB2YWx1ZSBhcyBBdHRhY2htZW50RmlsZVtdIHwgdW5kZWZpbmVkLFxuICAgICAgICBkZWxldGVLbm93bGVkZ2UsXG4gICAgICAgIG1vZGFsVmFsdWVzLmtub3dsZWRnZSxcbiAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudFxuICAgICAgKVxuICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudCA9IG5leHRBY3Rpb25zXG4gICAgfVxuICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4gbWVyZ2VBYm1BZ2VudFZhbHVlc0J5S2V5KHByZXYsIGtleSwgdmFsdWUsIGRlbGV0ZUtub3dsZWRnZSkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVDb25maXJtQWN0aW9uID0gYXN5bmMgKGNoYXQ6IGFueSwgYWN0aW9uOiAnZGVsZXRlJyB8ICd1cGRhdGUnIHwgJ2NyZWF0ZScpID0+IHtcbiAgICAvLyBTb2xvIHBlcm1pdGlyIG9wZXJhY2lvbmVzIGRlIGFnZW50ZXMgY3VzdG9tIHNpIGxhIGZlYXR1cmUgZmxhZyBlc3TDoSBoYWJpbGl0YWRhXG4gICAgaWYgKHNob3VsZFNraXBBYm1Db25maXJtV2l0aG91dE11bHRpQWdlbnRzKEJvb2xlYW4od2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbiA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5kZWxldGUpXG4gICAgICBoYW5kbGVEZWxldGVBZ2VudChjaGF0LmlkIGFzIHVua25vd24gYXMgc3RyaW5nKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGNvckFjY2VzcyA9IG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuY29yQWNjZXNzID8/IERFRkFVTFRfQ09SX0FDQ0VTU1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5jb25maXJtQWN0aW9uLCB7XG4gICAgICBvcHRpb246IG1vZGFsVmFsdWVzLmlzRWRpdGluZyA/ICdlZGl0JyA6ICdjcmVhdGUnLFxuICAgICAgY29yX3NsdWdzOiBidWlsZEFnZW50VG9vbEdyb3Vwc1JlcXVlc3QoY29yQWNjZXNzKSxcbiAgICAgIGNvcl9hY2Nlc3M6IGNvckFjY2VzcyxcbiAgICB9KVxuICAgIC8vIEFsIHJlaW50ZW50YXIgZ3VhcmRhciwgbGliZXJhciBlbCBmcmVubyBkZWwgdGltZW91dCBwcmV2aW8gcGFyYSBxdWUgbG9zXG4gICAgLy8gdXNlRWZmZWN0IGRlIHBvc3QtZ3VhcmRhZG8gdnVlbHZhbiBhIHBvZGVyIGRpc3BhcmFyIHNuYWNrYmFycyB5IGNlcnJhci5cbiAgICBwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50ID0gcmVzb2x2ZVByb2Nlc3NGaWxlc1RpbWVvdXRGbGFnQmVmb3JlU2F2ZSgpXG4gICAgY29uc3Qgc2F2ZUFjdGlvbiA9IHJlc29sdmVBYm1TYXZlQWN0aW9uKG1vZGFsVmFsdWVzLmlzRWRpdGluZywgdmFsaWRhdGVBZ2VudFZhbHVlc0lzU2FtZSgpKVxuICAgIGlmIChzYXZlQWN0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgYXdhaXQgaGFuZGxlVXBkYXRlQWdlbnQobW9kYWxWYWx1ZXMpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKHNhdmVBY3Rpb24gPT09ICdjcmVhdGUnKSB7XG4gICAgICBhd2FpdCBoYW5kbGVDcmVhdGVBZ2VudChtb2RhbFZhbHVlcylcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNldEFnZW50VmFsdWVzID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnRWYWx1ZXMgfSA9IGV2ZW50LmRldGFpbFxuICAgICAgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgPSByZXNvbHZlUGVuZGluZ0FibUluaXRpYWxTZWN0aW9uKGFnZW50VmFsdWVzPy5pbml0aWFsU2VjdGlvbilcbiAgICAgIGh5ZHJhdGluZ0FnZW50SWRSZWYuY3VycmVudCA9IG51bGxcblxuICAgICAgZ2V0QWxsQWdlbnRNb2RlbHMoKVxuICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgICBzZXRJc0xvYWRpbmcodHJ1ZSlcblxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0gY3JlYXRlUmVzZXRBYm1BY2Nlc3NVcGRhdGVDb250ZXh0KClcblxuICAgICAgY29uc3Qgb3BlbkxvYWRBY3Rpb24gPSByZXNvbHZlQWJtT3Blbk1vZGFsTG9hZEFjdGlvbih7XG4gICAgICAgIGlzRWRpdGluZzogYWdlbnRWYWx1ZXMudmFsdWVzPy5pc0VkaXRpbmcsXG4gICAgICAgIGhhc011bHRpQWdlbnRzQWNjZXNzOiBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSxcbiAgICAgICAgaGFzUHJlZmV0Y2hlZEFnZW50OiBCb29sZWFuKGFnZW50VmFsdWVzLnByZWZldGNoZWRBZ2VudEJ5SWQpLFxuICAgICAgfSlcblxuICAgICAgaWYgKG9wZW5Mb2FkQWN0aW9uID09PSAnZGVueV9lZGl0Jykge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWNjZXNzRGVuaWVkJykpXG4gICAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKG9wZW5Mb2FkQWN0aW9uID09PSAncHJlZmV0Y2hfZWRpdCcpIHtcbiAgICAgICAgaGFuZGxlQ2xlYW5BZ2VudCgpXG4gICAgICAgIHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCA9IGFnZW50VmFsdWVzLnByZWZldGNoZWRBZ2VudEJ5SWRcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChvcGVuTG9hZEFjdGlvbiA9PT0gJ2ZldGNoX2VkaXQnKSB7XG4gICAgICAgIGhhbmRsZUdldEFnZW50QnlJZChhZ2VudFZhbHVlcz8udmFsdWVzPy5nZW5lcmFsPy5pZCBhcyB1bmtub3duIGFzIHN0cmluZylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChhZ2VudFZhbHVlcy52YWx1ZXMpIHtcbiAgICAgICAgY29uc3QgbmV4dFZhbHVlcyA9IG1lcmdlQWJtT3BlbkFnZW50VmFsdWVzKGluaXRpYWxWYWx1ZXMsIGFnZW50VmFsdWVzLnZhbHVlcylcblxuICAgICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudCA9IG5leHRWYWx1ZXNcbiAgICAgICAgc2V0TW9kYWxWYWx1ZXMobmV4dFZhbHVlcylcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBzaG91bGRBcHBseVBlbmRpbmdTZWN0aW9uQWZ0ZXJPcGVuKEJvb2xlYW4oYWdlbnRWYWx1ZXMudmFsdWVzPy5pc0VkaXRpbmcpLCBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudClcbiAgICAgICkge1xuICAgICAgICBzZXRTZWN0aW9uKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50IGFzIEFibVNlY3Rpb24pXG4gICAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuXG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywgaGFuZGxlU2V0QWdlbnRWYWx1ZXMpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywgaGFuZGxlU2V0QWdlbnRWYWx1ZXMgYXMgRXZlbnRMaXN0ZW5lcilcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIHVzZUVmZmVjdCB0byBoYW5kbGUgdGhlIG92ZXJmbG93IG9mIHRoZSBib2R5IHdoZW4gdGhlIG1vZGFsIGlzIG9wZW5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHsgYm9keSB9ID0gZG9jdW1lbnRcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE92ZXJmbG93ID0gYm9keS5zdHlsZS5vdmVyZmxvd1xuICAgIGJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJ1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGJvZHkuc3R5bGUub3ZlcmZsb3cgPSBvcmlnaW5hbE92ZXJmbG93XG4gICAgfVxuICB9LCBbaXNPcGVuXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUJlZm9yZVVubG9hZCA9IChldmVudDogQmVmb3JlVW5sb2FkRXZlbnQpID0+IHtcbiAgICAgIGlmIChoYXNQZW5kaW5nQ2hhbmdlcygpKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gdCgnY29uZmlybVJlbG9hZEJyb3dzZXInKVxuICAgICAgICByZXR1cm4gdCgnY29uZmlybVJlbG9hZEJyb3dzZXInKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBoYW5kbGVCZWZvcmVVbmxvYWQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBoYW5kbGVCZWZvcmVVbmxvYWQpXG4gICAgfVxuICB9LCBbaXNPcGVuLCBoYXNQZW5kaW5nQ2hhbmdlcywgdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3VjY2Vzc0RlbGV0ZSkge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudERlbGV0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2VzcygpXG4gICAgICBpZiAoc2hvdWxkU2VsZWN0QWdlbnRBZnRlckRlbGV0ZShjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQsIG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkIGFzIHN0cmluZylcbiAgICAgIH1cbiAgICAgIHJlbW92ZUFnZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpXG4gICAgICBzZXRTaG93TW9kYWxEZWxldGUoZmFsc2UpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuICB9LCBbc3VjY2Vzc0RlbGV0ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXN1Y2Nlc3NDcmVhdGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghc2hvdWxkUnVuQWJtQ3JlYXRlU3VjY2Vzc0hhbmRsZXIoc3VjY2Vzc0NyZWF0ZS5pZCwgaXNMb2FkaW5nQ3JlYXRlLCBhZ2VudENyZWF0ZWRSZWYuY3VycmVudCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGFnZW50Q3JlYXRlZFJlZi5jdXJyZW50ID0gc3VjY2Vzc0NyZWF0ZS5pZFxuICAgIGNvbnN0IGNyZWF0ZVBsYW4gPSByZXNvbHZlQWJtQ3JlYXRlU3VjY2Vzc1BsYW4oYWN0aW9uc1RvRmlsZXMuY3VycmVudClcbiAgICBjb25zdCB7IGxpc3RBZ2VudCwgdG9nZ2xlQWdlbnQgfSA9IHJlc29sdmVBYm1DcmVhdGVGYXZvcml0ZUFnZW50cyhcbiAgICAgIHN1Y2Nlc3NDcmVhdGUsXG4gICAgICBCb29sZWFuKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpXG4gICAgKVxuXG4gICAgY29uc3QgZW5xdWV1ZUNyZWF0ZUZhdm9yaXRlID0gKHByb21pc2VzOiBQcm9taXNlPHVua25vd24+W10pID0+IHtcbiAgICAgIGFkZEFnZW50KGxpc3RBZ2VudClcbiAgICAgIGlmIChzaG91bGRFbnF1ZXVlQWJtQ3JlYXRlRmF2b3JpdGVUb2dnbGUodG9nZ2xlQWdlbnQpKSB7XG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICB0b2dnbGVBZ2VudCxcbiAgICAgICAgICAgICAgKCkgPT4gcmVzb2x2ZSgpLFxuICAgICAgICAgICAgICAoKSA9PiByZWplY3QoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlUGxhbiAhPT0gJ2FjY2Vzc09ubHknKSB7XG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSByZXNvbHZlQWJtQ3JlYXRlQWNjZXNzVXBkYXRlQ29udGV4dChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUpXG4gICAgICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx1bmtub3duPltdID0gW11cbiAgICAgIGNvbnN0IGtub3dsZWRnZUhhbmRsZXIgPSByZXNvbHZlQWJtQ3JlYXRlS25vd2xlZGdlSGFuZGxlcihjcmVhdGVQbGFuKVxuXG4gICAgICBpZiAoa25vd2xlZGdlSGFuZGxlciA9PT0gJ2RlbGV0ZUFuZENyZWF0ZScpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzKHtcbiAgICAgICAgICAgIGZpbGVzVG9EZWxldGU6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUsXG4gICAgICAgICAgICBmaWxlc1RvQ3JlYXRlOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLFxuICAgICAgICAgICAgYWdlbnRJZDogc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSBpZiAoa25vd2xlZGdlSGFuZGxlciA9PT0gJ2RlbGV0ZU9ubHknKSB7XG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyh7IGZpbGVzOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLCBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCkgfSlcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIGlmIChrbm93bGVkZ2VIYW5kbGVyID09PSAndXBsb2FkT25seScpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzKHsgZmlsZXM6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQsIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSB9KVxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGlmIChzaG91bGRTeW5jQWJtQ2xpZW50QWNjZXNzT25DcmVhdGUobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlKSkge1xuICAgICAgICBwcm9taXNlcy5wdXNoKGhhbmRsZUFjY2Vzc0NsaWVudChzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpKVxuICAgICAgfVxuXG4gICAgICBlbnF1ZXVlQ3JlYXRlRmF2b3JpdGUocHJvbWlzZXMpXG4gICAgICBQcm9taXNlLmFsbChwcm9taXNlcylcblxuICAgICAgaWYgKHNob3VsZFJlcGVhdERlbGV0ZUtub3dsZWRnZXNPbkNyZWF0ZShjcmVhdGVQbGFuKSkge1xuICAgICAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzKHsgZmlsZXM6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUsIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoc2hvdWxkU2hvd1Byb2Nlc3NGaWxlc0ZvckNyZWF0ZVBsYW4oY3JlYXRlUGxhbikpIHtcbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgYWNjZXNzT25seURlY2lzaW9uID0gcmVzb2x2ZUFibUNyZWF0ZUFjY2Vzc09ubHlEZWNpc2lvbihcbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCxcbiAgICAgIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZVxuICAgIClcbiAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSBhY2Nlc3NPbmx5RGVjaXNpb24ubmV4dENvbnRleHRcblxuICAgIGlmIChzaG91bGRIYW5kbGVBYm1DcmVhdGVBY2Nlc3NPbmx5Q2xpZW50KGFjY2Vzc09ubHlEZWNpc2lvbikpIHtcbiAgICAgIGhhbmRsZUFjY2Vzc0NsaWVudChzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCA9IHRydWVcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0b2dnbGVBZ2VudCkge1xuICAgICAgYWRkQWdlbnQobGlzdEFnZW50KVxuICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICB0b2dnbGVBZ2VudCxcbiAgICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0RmF2b3JpdGUsIHsgb3B0aW9uOiB1cGRhdGVkQWdlbnQuaXNfZmF2b3JpdGUgPyAnYWRkJyA6ICdyZW1vdmUnIH0pXG4gICAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgICAgICBzZWxlY3RBZ2VudCh7IC4uLmxpc3RBZ2VudCwgaXNfZmF2b3JpdGU6IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSB9KVxuICAgICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0RmF2b3JpdGUsIHsgb3B0aW9uOiAnYWRkJyB9KVxuICAgICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgICAgc2VsZWN0QWdlbnQobGlzdEFnZW50KVxuICAgICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgYWRkQWdlbnQobGlzdEFnZW50KVxuICAgIHNlbGVjdEFnZW50KGxpc3RBZ2VudClcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgaGFuZGxlQ2xvc2UoKVxuICB9LCBbXG4gICAgaXNMb2FkaW5nQ3JlYXRlLFxuICAgIHN1Y2Nlc3NDcmVhdGUsXG4gICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzLFxuICAgIHQsXG4gICAgYWRkQWdlbnQsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlLFxuICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSxcbiAgICBoYW5kbGVDbG9zZSxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICBdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzdWNjZXNzVXBkYXRlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBhY2Nlc3NpYmlsaXR5Q2hhbmdlZCA9IGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKClcbiAgICBjb25zdCB1cGRhdGVQbGFuID0gcmVzb2x2ZUFibVVwZGF0ZVN1Y2Nlc3NQbGFuKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQsIGFjY2Vzc2liaWxpdHlDaGFuZ2VkKVxuXG4gICAgaWYgKHVwZGF0ZVBsYW4gIT09ICdnZW5lcmFsT25seScgJiYgYWNjZXNzaWJpbGl0eUNoYW5nZWQgJiYgdXBkYXRlUGxhbiAhPT0gJ2FjY2Vzc09ubHknKSB7XG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSByZXNvbHZlQWJtVXBkYXRlQWNjZXNzVXBkYXRlQ29udGV4dCgpXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVBsYW4gPT09ICdkZWxldGVBbmRDcmVhdGUnICYmIG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgIGNvbnN0IGZpbGVzVG9EZWxldGUgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZV1cbiAgICAgIGNvbnN0IGZpbGVzVG9VcGxvYWQgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZF1cbiAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUgPSBbXVxuICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCA9IFtdXG5cbiAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyh7XG4gICAgICAgICAgZmlsZXNUb0RlbGV0ZSxcbiAgICAgICAgICBmaWxlc1RvQ3JlYXRlOiBmaWxlc1RvVXBsb2FkLFxuICAgICAgICAgIGFnZW50SWQ6IG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihzaG91bGRJbmNsdWRlQWNjZXNzaWJpbGl0eVVwZGF0ZUluS25vd2xlZGdlQmF0Y2goYWNjZXNzaWJpbGl0eUNoYW5nZWQpXG4gICAgICAgICAgPyBbaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSldXG4gICAgICAgICAgOiBbXSksXG4gICAgICBdKVxuICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh1cGRhdGVQbGFuID09PSAnZGVsZXRlT25seScgJiYgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgY29uc3QgZmlsZXNUb0RlbGV0ZSA9IFsuLi5hY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlXVxuICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSA9IFtdXG5cbiAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyh7XG4gICAgICAgICAgZmlsZXM6IGZpbGVzVG9EZWxldGUsXG4gICAgICAgICAgYWdlbnRJZDogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKHNob3VsZEluY2x1ZGVBY2Nlc3NpYmlsaXR5VXBkYXRlSW5Lbm93bGVkZ2VCYXRjaChhY2Nlc3NpYmlsaXR5Q2hhbmdlZClcbiAgICAgICAgICA/IFtoYW5kbGVBY2Nlc3NDbGllbnQobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KV1cbiAgICAgICAgICA6IFtdKSxcbiAgICAgIF0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodXBkYXRlUGxhbiA9PT0gJ3VwbG9hZE9ubHknICYmIG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgIGNvbnN0IGZpbGVzVG9VcGxvYWQgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZF1cbiAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQgPSBbXVxuXG4gICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgIGZpbGVzOiBmaWxlc1RvVXBsb2FkLFxuICAgICAgICAgIGFnZW50SWQ6IG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihzaG91bGRJbmNsdWRlQWNjZXNzaWJpbGl0eVVwZGF0ZUluS25vd2xlZGdlQmF0Y2goYWNjZXNzaWJpbGl0eUNoYW5nZWQpXG4gICAgICAgICAgPyBbaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSldXG4gICAgICAgICAgOiBbXSksXG4gICAgICBdKVxuICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh1cGRhdGVQbGFuID09PSAnYWNjZXNzT25seScpIHtcbiAgICAgIGNvbnN0IGFjY2Vzc09ubHlDb250ZXh0ID0gcmVzb2x2ZUFibVVwZGF0ZUFjY2Vzc09ubHlDb250ZXh0KGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudClcbiAgICAgIGlmIChhY2Nlc3NPbmx5Q29udGV4dCkge1xuICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSBhY2Nlc3NPbmx5Q29udGV4dFxuICAgICAgfVxuXG4gICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCAmJiAhYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQpIHtcbiAgICAgICAgaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSlcbiAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzaG91bGRGaW5hbGl6ZUFibVVwZGF0ZVdpdGhvdXRQZW5kaW5nV29yayh7XG4gICAgICAgIGhhc1BlbmRpbmdGaWxlczogaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzU2hvd1Byb2Nlc3NGaWxlcyxcbiAgICAgICAgdG9VcGxvYWRDb3VudDogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgsXG4gICAgICAgIGFjY2Vzc0hhc0FjdGlvbkZpbGVzOiBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQWN0aW9uRmlsZXMsXG4gICAgICAgIHN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gICAgICAgIHByb2Nlc3NGaWxlc1RpbWVkT3V0OiBwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50LFxuICAgICAgfSlcbiAgICApIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRVcGRhdGVkJykpXG4gICAgICB1cGRhdGVBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgaWYgKHNob3VsZFN5bmNTZWxlY3RlZEFnZW50QWZ0ZXJNdXRhdGlvbihjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQsIHN1Y2Nlc3NVcGRhdGUuaWQpKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICB9XG4gICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgcmVzZXRTdWNjZXNzVXBkYXRlKClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKSlcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG4gIH0sIFtcbiAgICBzdWNjZXNzVXBkYXRlLFxuICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQsXG4gICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzLFxuICAgIHQsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlLFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSxcbiAgICBoYW5kbGVDbG9zZSxcbiAgXSlcblxuICBjb25zdCBoYW5kbGVQcm9jZXNzRmlsZXNUaW1lb3V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghc2hvdWxkUnVuQWJtUHJvY2Vzc0ZpbGVzVGltZW91dChoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCwgaXNTaG93UHJvY2Vzc0ZpbGVzKSkgcmV0dXJuXG5cbiAgICAvLyBBbCBjdW1wbGlyc2UgZWwgdGltZW91dCBhc3VtaW1vcyBxdWUgZWwgZ3VhcmRhZG8gZGVsIGFnZW50ZSBmdWUgZXhpdG9zb1xuICAgIC8vIChlbCBzZXJ2ZXIgcmVzcG9uZGnDsyBPSykgeSBxdWUgbG9zIGFyY2hpdm9zIHNlIGVudmlhcm9uIGNvcnJlY3RhbWVudGUuXG4gICAgLy8gU29sbyBwZXJkaW1vcyBsYSBjb25maXJtYWNpw7NuIGFzaW5jcsOzbmljYSBkZWwgV2ViU29ja2V0IHNvYnJlIHN1XG4gICAgLy8gcHJvY2VzYW1pZW50by4gQ2VycmFtb3MgdG9kbyBtb3N0cmFuZG8gZWwgc25hY2tiYXIgZGUgw6l4aXRvIHF1ZSBodWJpZXNlXG4gICAgLy8gZGlzcGFyYWRvIGVsIGZsdWpvIG5vcm1hbCBkZSDDqXhpdG8uXG5cbiAgICAvLyBGcmVubyBwYXJhIHF1ZSBsb3MgdXNlRWZmZWN0IGRlIHBvc3QtZ3VhcmRhZG8gbm8gcmUtZGlzcGFyZW4gc25hY2tiYXJzXG4gICAgLy8gbyBjaWVycmVzIGR1cGxpY2Fkb3MgY3VhbmRvIHNldElzU2hvd1Byb2Nlc3NGaWxlcyhmYWxzZSkgbG9zIGdhdGlsbGUuXG4gICAgcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYuY3VycmVudCA9IHRydWVcblxuICAgIGlmIChtb2RhbFZhbHVlcy5pc0VkaXRpbmcgJiYgc3VjY2Vzc1VwZGF0ZSkge1xuICAgICAgdXBkYXRlQWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgIGlmIChzaG91bGRTeW5jU2VsZWN0ZWRBZ2VudEFmdGVyTXV0YXRpb24oY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkLCBzdWNjZXNzVXBkYXRlLmlkKSkge1xuICAgICAgICBzZWxlY3RBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgfVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpKVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQocmVzb2x2ZUFibVByb2Nlc3NGaWxlc1RpbWVvdXRTdWNjZXNzS2V5KHRydWUpKSlcbiAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSgpXG4gICAgfSBlbHNlIGlmICghbW9kYWxWYWx1ZXMuaXNFZGl0aW5nICYmIHN1Y2Nlc3NDcmVhdGUpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KHJlc29sdmVBYm1Qcm9jZXNzRmlsZXNUaW1lb3V0U3VjY2Vzc0tleShmYWxzZSkpKVxuICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICB9XG5cbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlKClcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG5cbiAgICBoYW5kbGVDbG9zZSgpXG4gIH0sIFtcbiAgICBpc1Nob3dQcm9jZXNzRmlsZXMsXG4gICAgbW9kYWxWYWx1ZXMuaXNFZGl0aW5nLFxuICAgIHN1Y2Nlc3NVcGRhdGUsXG4gICAgc3VjY2Vzc0NyZWF0ZSxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICBjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzLFxuICAgIHQsXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlLFxuICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlLFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSxcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gICAgaGFuZGxlQ2xvc2UsXG4gIF0pXG5cbiAgY29uc3Qgd2ViU29ja2V0RnVuY3Rpb24gPSAoeyBtb2RlbF9kYXRhOiBtb2RlbERhdGEgfTogeyBtb2RlbF9kYXRhOiBhbnkgfSkgPT4ge1xuICAgIGNvbnN0IGZpbGVTdGF0dXMgPSBtb2RlbERhdGFcbiAgICBpZiAoc2hvdWxkUHJvY2Vzc0tub3dsZWRnZVdzU3RhdHVzKGZpbGVTdGF0dXMuc3RhdHVzKSkge1xuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRLbm93bGVkZ2UgPSBhcHBseUtub3dsZWRnZUZpbGVTdGF0dXNVcGRhdGUocHJldi5rbm93bGVkZ2UsIGZpbGVTdGF0dXMpXG4gICAgICAgIGNvbnN0IHVwbG9hZE91dGNvbWUgPSByZXNvbHZlS25vd2xlZGdlVXBsb2FkT3V0Y29tZSh1cGRhdGVkS25vd2xlZGdlKVxuICAgICAgICBjb25zdCB3c0VmZmVjdHMgPSByZXNvbHZlS25vd2xlZGdlV3NDb21wbGV0aW9uRWZmZWN0cyhcbiAgICAgICAgICB1cGxvYWRPdXRjb21lLFxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCxcbiAgICAgICAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQsXG4gICAgICAgICAgZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50XG4gICAgICAgIClcblxuICAgICAgICBpZiAod3NFZmZlY3RzPy5jbG9zZVByb2Nlc3NGaWxlcykge1xuICAgICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXBsb2FkT3V0Y29tZSA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodChyZXNvbHZlQWJtS25vd2xlZGdlRXJyb3JNZXNzYWdlS2V5KG1vZGFsVmFsdWVzLmlzRWRpdGluZykpKVxuICAgICAgICB9IGVsc2UgaWYgKHdzRWZmZWN0cz8uaW5jcmVtZW50RmlsZXNQcm9jZXNzZWQpIHtcbiAgICAgICAgICBpZiAod3NFZmZlY3RzLm1hcmtGaWxlc0ZpbmlzaGVkRm9yQ3JlYXRlKSB7XG4gICAgICAgICAgICBmaWxlc0ZpbmlzaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICAgIHNldEZpbGVzUHJvY2Vzc2VkKHByZXZDb3VudCA9PiBwcmV2Q291bnQgKyAxKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBrbm93bGVkZ2U6IHVwZGF0ZWRLbm93bGVkZ2UsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3VjY2Vzc0tub3dsZWRnZURlbGV0ZSAmJiAhaXNMb2FkaW5nS25vd2xlZGdlICYmICFlcnJvcktub3dsZWRnZSkge1xuICAgICAgLy8gU29sbyBjZXJyYXIgc2kgTk8gaGF5IGFyY2hpdm9zIHNpZW5kbyBwcm9jZXNhZG9zXG4gICAgICBpZiAoXG4gICAgICAgIHNob3VsZEJsb2NrS25vd2xlZGdlRGVsZXRlU3VjY2Vzc0Nsb3NlKHtcbiAgICAgICAgICBoYXNQZW5kaW5nRmlsZXM6IGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50LFxuICAgICAgICAgIGlzU2hvd1Byb2Nlc3NGaWxlcyxcbiAgICAgICAgICB0b1VwbG9hZENvdW50OiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCxcbiAgICAgICAgICBwcm9jZXNzRmlsZXNUaW1lZE91dDogcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYuY3VycmVudCxcbiAgICAgICAgfSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRVcGRhdGVkJykpXG4gICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgICBpZiAoZXJyb3JLbm93bGVkZ2UpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodChyZXNvbHZlQWJtS25vd2xlZGdlRXJyb3JNZXNzYWdlS2V5KG1vZGFsVmFsdWVzLmlzRWRpdGluZykpKVxuICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICB9XG4gIH0sIFtzdWNjZXNzS25vd2xlZGdlRGVsZXRlLCBpc0xvYWRpbmdLbm93bGVkZ2UsIGVycm9yS25vd2xlZGdlLCBpc1Nob3dQcm9jZXNzRmlsZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudFxuXG4gICAgLy8gU2kgaGF5IGFyY2hpdm9zIHNpZW5kbyBwcm9jZXNhZG9zLCBlc3BlcmFyIGEgcXVlIHRlcm1pbmVuXG4gICAgaWYgKHNob3VsZERlZmVyQWNjZXNzVXBkYXRlVW50aWxGaWxlc0NvbXBsZXRlKGNvbnRleHQsIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50LCBpc1Nob3dQcm9jZXNzRmlsZXMpKSB7XG4gICAgICAvLyBTaSBzdWNjZXNzVXBkYXRlQWNjZXNzIGVzdMOhIGFjdGl2bywgbWFyY2FyIGNvbW8gbWFuZWphZG8gcGVybyBOTyByZXNldGVhciBoYXN0YSBxdWUgdGVybWluZW4gbG9zIGFyY2hpdm9zXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2VzcyAmJiAhYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFNpIHlhIGZ1ZSBtYW5lamFkbyB5IG5vIGhheSBhcmNoaXZvcyBwZW5kaWVudGVzLCBlamVjdXRhciBlbCBjaWVycmVcbiAgICBpZiAoYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ICYmIGNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiYgY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJykge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2Vzcykge1xuICAgICAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0gY3JlYXRlUmVzZXRBYm1BY2Nlc3NVcGRhdGVDb250ZXh0KClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghc3VjY2Vzc1VwZGF0ZUFjY2Vzcykge1xuICAgICAgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuXG4gICAgaWYgKGNvbnRleHQub3BlcmF0aW9uVHlwZSA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgIC8vIFNpIGhheSBhcmNoaXZvcywgZWwgYWdlbnRlIHlhIGZ1ZSBhZ3JlZ2FkbyB5IGVsIHRvZ2dsZSB5YSBzZSBoaXpvIGVuIHN1Y2Nlc3NDcmVhdGVcbiAgICAgIC8vIFNvbG8gbmVjZXNpdGFtb3MgY2VycmFyIGVsIG1vZGFsXG4gICAgICBpZiAoY29udGV4dC5oYXNBY3Rpb25GaWxlcykge1xuICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBTaSBlbCBhZ2VudGUgZnVlIGNyZWFkbyBjb24gZmF2b3JpdG8sIG5lY2VzaXRhbW9zIG9yZGVuYXIgZGVzcHXDqXMgZGUgYWdyZWdhcmxvXG4gICAgICBjb25zdCB7IGxpc3RBZ2VudCwgdG9nZ2xlQWdlbnQgfSA9IHJlc29sdmVBYm1DcmVhdGVGYXZvcml0ZUFnZW50cyhcbiAgICAgICAgc3VjY2Vzc0NyZWF0ZSxcbiAgICAgICAgQm9vbGVhbihtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKVxuICAgICAgKVxuXG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgYWRkQWdlbnQobGlzdEFnZW50KVxuICAgICAgc2VsZWN0QWdlbnQobGlzdEFnZW50KVxuXG4gICAgICBpZiAodG9nZ2xlQWdlbnQpIHtcbiAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgdG9nZ2xlQWdlbnQsXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgLy8gQ2VycmFyIGRlc3B1w6lzIGRlIHF1ZSBlbCB0b2dnbGUgY29tcGxldGUgeSBhY3R1YWxpY2UgZWwgZXN0YWRvXG4gICAgICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRleHQub3BlcmF0aW9uVHlwZSA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRVcGRhdGVkJykpXG4gICAgICB1cGRhdGVBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCA9PT0gc3VjY2Vzc1VwZGF0ZS5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgfVxuICAgICAgcmVzZXRTdWNjZXNzVXBkYXRlKClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKSlcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG5cbiAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSBjcmVhdGVSZXNldEFibUFjY2Vzc1VwZGF0ZUNvbnRleHQoKVxuICB9LCBbc3VjY2Vzc1VwZGF0ZUFjY2VzcywgZmlsZXNQcm9jZXNzZWRdKVxuXG4gIC8vIHVzZUVmZmVjdCBwYXJhIG1hbmVqYXIgZWwgY2llcnJlIGRlbCBtb2RhbCBjdWFuZG8gdGVybWluYW4gbG9zIGFyY2hpdm9zIGVuIGNyZWFjacOzbiBzaW4gYWNjZXNpYmlsaWRhZFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnRcblxuICAgIGlmIChcbiAgICAgIHNob3VsZENsb3NlQ3JlYXRlQWZ0ZXJLbm93bGVkZ2VXaXRob3V0QWNjZXNzKHtcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogY29udGV4dC5vcGVyYXRpb25UeXBlLFxuICAgICAgICBoYXNBY3Rpb25GaWxlczogY29udGV4dC5oYXNBY3Rpb25GaWxlcyxcbiAgICAgICAgZmlsZXNGaW5pc2hlZDogZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50LFxuICAgICAgICBoYXNTdWNjZXNzQ3JlYXRlOiBCb29sZWFuKHN1Y2Nlc3NDcmVhdGUpLFxuICAgICAgICBoYXNQZW5kaW5nRmlsZXM6IGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50LFxuICAgICAgICBpc1Nob3dQcm9jZXNzRmlsZXMsXG4gICAgICB9KVxuICAgICkge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICBmaWxlc0ZpbmlzaGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0gY3JlYXRlUmVzZXRBYm1BY2Nlc3NVcGRhdGVDb250ZXh0KClcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzaG91bGRDbG9zZUNyZWF0ZUFmdGVyS25vd2xlZGdlV2l0aEFjY2Vzcyh7XG4gICAgICAgIG9wZXJhdGlvblR5cGU6IGNvbnRleHQub3BlcmF0aW9uVHlwZSxcbiAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGNvbnRleHQuaGFzQWN0aW9uRmlsZXMsXG4gICAgICAgIGFjY2Vzc0hhbmRsZWQ6IGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCxcbiAgICAgICAgaGFzU3VjY2Vzc0NyZWF0ZTogQm9vbGVhbihzdWNjZXNzQ3JlYXRlKSxcbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzOiBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCxcbiAgICAgICAgaXNTaG93UHJvY2Vzc0ZpbGVzLFxuICAgICAgfSlcbiAgICApIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgaWYgKHNob3VsZFJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2Vzc09uQ3JlYXRlQ2xvc2UoQm9vbGVhbihzdWNjZXNzVXBkYXRlQWNjZXNzKSkpIHtcbiAgICAgICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzKClcbiAgICAgIH1cbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IGNyZWF0ZVJlc2V0QWJtQWNjZXNzVXBkYXRlQ29udGV4dCgpXG4gICAgfVxuICB9LCBbXG4gICAgZmlsZXNQcm9jZXNzZWQsXG4gICAgc3VjY2Vzc0NyZWF0ZSxcbiAgICBzdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGlzU2hvd1Byb2Nlc3NGaWxlcyxcbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsXG4gICAgdCxcbiAgICByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGhhbmRsZUNsb3NlLFxuICBdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzU2hvd1Byb2Nlc3NGaWxlcykge1xuICAgICAgY29uc3QgY2hhbm5lbCA9IHJlc29sdmVBYm1Lbm93bGVkZ2VXc0NoYW5uZWwoYWdlbnRCeUlkLCBzdWNjZXNzQ3JlYXRlPy5pZCA/PyBudWxsKVxuICAgICAgaWYgKCFjaGFubmVsKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKCRfc2MpIHtcbiAgICAgICAgaWYgKGlzU3Vic2NyaWJlZCkge1xuICAgICAgICAgICRfc2M/LnN1YnNjcmliZUhhbmRsZXIoY2hhbm5lbCwgd2ViU29ja2V0RnVuY3Rpb24pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbW9kZWxEYXRhID0ge1xuICAgICAgICAgICAgbW9kZWxfaGFzaDogY2hhbm5lbCxcbiAgICAgICAgICAgIGFjdGlvbjogJF9zYz8uYWN0aW9uVHlwZT8uU1VCU0NSSUJFLFxuICAgICAgICAgIH1cbiAgICAgICAgICAkX3NjPy51cGRhdGVDb25uZWN0aW9uTW9kZWwobW9kZWxEYXRhLCBjaGFubmVsLCB1c2VyLCB1c2VyLCAkX3NjLmNoYW5uZWxUeXBlPy5NT0RFTF9DSEFOTkVMKVxuICAgICAgICAgIHNldElzU3Vic2NyaWJlZCh0cnVlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNTaG93UHJvY2Vzc0ZpbGVzLCBpc1N1YnNjcmliZWQsICRfc2MsIGFnZW50QnlJZCwgc3VjY2Vzc0NyZWF0ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3BlbiB8fCAhYWdlbnRNb2RlbHMubGVuZ3RoKSByZXR1cm5cbiAgICBpZiAoYWdlbnRMb2FkaW5nICYmICFwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnQpIHJldHVyblxuXG4gICAgY29uc3QgYXBwbHlFZGl0aW5nQWdlbnQgPSBhc3luYyAoc291cmNlOiBhbnkpID0+IHtcbiAgICAgIGlmICghY2FuQXBwbHlBYm1FZGl0aW5nQWdlbnREZXRhaWwoc291cmNlLCBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSkpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdlcnJvckFjY2Vzc0RlbmllZCcpKVxuICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgfSwgMzAwMClcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCBhZ2VudElkID0gc291cmNlLmlkICE9IG51bGwgPyBTdHJpbmcoc291cmNlLmlkKSA6IG51bGxcbiAgICAgIGlmIChhZ2VudElkICYmIGh5ZHJhdGluZ0FnZW50SWRSZWYuY3VycmVudCA9PT0gYWdlbnRJZCkgcmV0dXJuIHRydWVcbiAgICAgIGh5ZHJhdGluZ0FnZW50SWRSZWYuY3VycmVudCA9IGFnZW50SWRcblxuICAgICAgbGV0IGFnZW50VmFsdWVzVG9TZXQgPSBidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbChzb3VyY2UsIGFnZW50TW9kZWxzLCBtb2RhbFZhbHVlcylcbiAgICAgIC8vIEtlZXAgdGhlIGxvYWRpbmcgdmlldyB1bnRpbCBib3RoIHRoZSBhZ2VudCBhbmQgaXRzIGNvbm5lY3RvciBzdGF0dXMgYXJlIHJlYWR5LlxuICAgICAgaWYgKHNob3VsZEh5ZHJhdGVBZ2VudENvbm5lY3RvcnNPbkVkaXQoYWdlbnRJZCwgaGFzTWFpYUV4dGVybmFsQ29ubmVjdG9yc0FjY2VzcygpKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGNvbm5lY3RvcnMgPSBhd2FpdCBnZXRBZ2VudENvbm5lY3RvcnMoYWdlbnRJZCBhcyBzdHJpbmcpXG4gICAgICAgICAgYWdlbnRWYWx1ZXNUb1NldCA9IHtcbiAgICAgICAgICAgIC4uLmFnZW50VmFsdWVzVG9TZXQsXG4gICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICAgICAgICAgIC4uLmFnZW50VmFsdWVzVG9TZXQuYWNjZXNzaWJpbGl0eSxcbiAgICAgICAgICAgICAgc2VsZWN0ZWRDb25uZWN0b3JzOiBkZXJpdmVBc3NpZ25lZENvbm5lY3RvclNsdWdzKGNvbm5lY3RvcnMpLFxuICAgICAgICAgICAgICBjb25uZWN0b3JTdGF0dXNlczogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICAgIGNvbm5lY3RvcnMubWFwKGNvbm5lY3RvciA9PiBbXG4gICAgICAgICAgICAgICAgICBjb25uZWN0b3Iuc2x1ZyxcbiAgICAgICAgICAgICAgICAgIGNvbm5lY3Rvci5jb25uZWN0aW9uX3N0YXR1cyB8fCAoY29ubmVjdG9yLnVzZXJfYXV0aG9yaXplZCA/ICdvaycgOiAnbmVlZHNfYXR0ZW50aW9uJyksXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGFnZW50IGNvbm5lY3RvcnM6JywgZXJyb3IpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChoeWRyYXRpbmdBZ2VudElkUmVmLmN1cnJlbnQgIT09IGFnZW50SWQpIHJldHVybiBmYWxzZVxuICAgICAgZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQgPSBhZ2VudFZhbHVlc1RvU2V0XG4gICAgICBzZXRNb2RhbFZhbHVlcyhhZ2VudFZhbHVlc1RvU2V0KVxuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgaWYgKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50KSB7XG4gICAgICAgIHNldFNlY3Rpb24ocGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQpXG4gICAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmZXRjaGVkID0gcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50XG4gICAgaWYgKHByZWZldGNoZWQpIHtcbiAgICAgIHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFwcGx5RWRpdGluZ0FnZW50KHByZWZldGNoZWQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoYWdlbnRCeUlkICYmICFhZ2VudExvYWRpbmcgJiYgYWdlbnRNb2RlbHMubGVuZ3RoKSB7XG4gICAgICBhcHBseUVkaXRpbmdBZ2VudChhZ2VudEJ5SWQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzaG91bGRTZXREZWZhdWx0QWlNb2RlbEZvck5ld0FnZW50KHtcbiAgICAgICAgaXNMb2FkaW5nLFxuICAgICAgICBhZ2VudExvYWRpbmcsXG4gICAgICAgIGhhc0FnZW50QnlJZDogQm9vbGVhbihhZ2VudEJ5SWQpLFxuICAgICAgICBpc0VkaXRpbmc6IG1vZGFsVmFsdWVzLmlzRWRpdGluZyxcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgYWlNb2RlbDogYWdlbnRNb2RlbHNbMF0sXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthZ2VudEJ5SWQsIGlzT3BlbiwgaXNMb2FkaW5nLCBhZ2VudExvYWRpbmcsIGFnZW50TW9kZWxzPy5sZW5ndGgsIG1vZGFsVmFsdWVzLmlzRWRpdGluZywgdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXJyb3JHZXRBZ2VudEJ5SWQpIHtcbiAgICAgIGlmIChpc0FibUFjY2Vzc0RlbmllZEVycm9yKGVycm9yR2V0QWdlbnRCeUlkKSkge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWNjZXNzRGVuaWVkJykpXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgfSwgMzAwMClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKGVycm9yR2V0QWdlbnRCeUlkKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIH0sIDMwMDApXG4gICAgfVxuICB9LCBbZXJyb3JHZXRBZ2VudEJ5SWRdKVxuXG4gIGNvbnN0IHNob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gaGFzSW5hY3RpdmVBY2Nlc3NpYmlsaXR5Q2xpZW50cyhtb2RhbFZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY2xpZW50cyksXG4gICAgW21vZGFsVmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5jbGllbnRzXVxuICApXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlRmF2b3JpdGUgPSAoKSA9PiB7XG4gICAgaWYgKG1vZGFsVmFsdWVzPy5nZW5lcmFsPy5pZCkge1xuICAgICAgLy8gRXhpc3RpbmcgYWdlbnRcbiAgICAgIHRvZ2dsZUZhdm9yaXRlKFxuICAgICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLFxuICAgICAgICB1cGRhdGVkQWdlbnQgPT4ge1xuICAgICAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4gKHtcbiAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgICAgIC4uLnByZXYuZ2VuZXJhbCxcbiAgICAgICAgICAgICAgaXNfZmF2b3JpdGU6IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSkpXG4gICAgICAgICAgLy8gQWN0dWFsaXphciBlbCBlc3RhZG8gZGUgYWdlbnRlcyB5IG9yZGVuYXIgY3VhbmRvIHNlIGhhY2UgZGVzZGUgZWwgbW9kYWwgQUJNXG4gICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZSh1cGRhdGVkQWdlbnQsIHRydWUpXG4gICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdEZhdm9yaXRlLCB7XG4gICAgICAgICAgICBvcHRpb246IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSA/ICdhZGQnIDogJ3JlbW92ZScsXG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICBtb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGVcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ3JlYXRlIG5ldyBhZ2VudFxuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgIGlzX2Zhdm9yaXRlOiByZXNvbHZlQWJtRHJhZnRGYXZvcml0ZVZhbHVlKHByZXYuZ2VuZXJhbC5pc19mYXZvcml0ZSksXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWlzT3BlbiB8fCAhY2FuUmVuZGVyQWJtQWdlbnRNb2RhbCh1c2VyUGVybWlzc2lvbnMpKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPEJhY2tkcm9wIHpJbmRleD17YWJtQWdlbnRNb2RhbFpJbmRleH0gb25DbGljaz17aGFuZGxlQmFja2Ryb3BDbGlja30+XG4gICAgICA8U0NBQU1XcmFwcGVyIHJlZj17bW9kYWxSZWZ9IHRhYkluZGV4PXstMX0+XG4gICAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgPFNDQUFNV3JhcHBlclNwaW5uZXI+XG4gICAgICAgICAgICA8U0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxTcGlubmVyTG90dGllIHNpemU9XCI4MHB4XCIgY29sb3I9XCJwcmltYXJ5XCIgLz5cbiAgICAgICAgICAgIDwvU0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQ+XG4gICAgICAgICAgPC9TQ0FBTVdyYXBwZXJTcGlubmVyPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7c2hvdWxkU2hvd0FibUxvYWRlckZpbGVzKGlzU2hvd1Byb2Nlc3NGaWxlcywgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQpID8gKFxuICAgICAgICAgICAgICA8QWJtTG9hZGVyRmlsZXNcbiAgICAgICAgICAgICAgICBhdHRhY2htZW50cz17bW9kYWxWYWx1ZXMua25vd2xlZGdlfVxuICAgICAgICAgICAgICAgIGxhYmVsPXt0KHJlc29sdmVBYm1Qcm9jZXNzaW5nS25vd2xlZGdlTGFiZWxLZXkobW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSl9XG4gICAgICAgICAgICAgICAgb25UaW1lb3V0PXtoYW5kbGVQcm9jZXNzRmlsZXNUaW1lb3V0fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJMZWZ0PlxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17dChyZXNvbHZlQWJtRmF2b3JpdGVUb29sdGlwS2V5KEJvb2xlYW4obW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlKSkpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyRmF2b3JpdGUgb25DbGljaz17aGFuZGxlVG9nZ2xlRmF2b3JpdGV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezIwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezIwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17bW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlID8gJyNGRkM2MjQnIDogJyNhNmE2YTYnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPXttb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGUgPyAnI0ZGQzYyNCcgOiAnbm9uZSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17bW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlID8gJycgOiAnc3Rhci1mYXZvcml0ZS1pY29uJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlckZhdm9yaXRlPlxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlclRpdGxlPnt0KHJlc29sdmVBYm1Nb2RhbFRpdGxlS2V5KEJvb2xlYW4obW9kYWxWYWx1ZXM/LmlzRWRpdGluZykpKX08L1NDQUFNSGVhZGVyVGl0bGU+XG4gICAgICAgICAgICAgICAgICA8L1NDQUFNSGVhZGVyTGVmdD5cbiAgICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlckNsb3NlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY2FuY2VsTW9kYWwpXG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2hvdWxkRGlzYWJsZUFibUhlYWRlckNsb3NlKFxuICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdLbm93bGVkZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nQ3JlYXRlLFxuICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VwZGF0ZUFjY2Vzc1xuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjYTZhNmE2XCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlckNsb3NlQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvU0NBQU1IZWFkZXI+XG4gICAgICAgICAgICAgICAgPFNDQUFNQ29udGVudCBoYXNTY3JvbGw9e3NlY3Rpb24gIT09ICdrbm93bGVkZ2UnfT5cbiAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXI+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdnZW5lcmFsJ31cbiAgICAgICAgICAgICAgICAgICAgICAkaW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VjdGlvbkNoYW5nZSgnZ2VuZXJhbCcpfVxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWJtLWFnZW50LW1vZGFsLWdlbmVyYWxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPENhdGVnb3J5XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17YCR7c2VjdGlvbiA9PT0gJ2dlbmVyYWwnID8gJ3JnYmEoNjMsIDYzLCA2MywgMSknIDogJ3JnYmEoMTY2LCAxNjYsIDE2NiwgMSknfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1UaXRsZSBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2dlbmVyYWwnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdnZW5lcmFsU2VjdGlvbi50aXRsZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2tub3dsZWRnZSd9XG4gICAgICAgICAgICAgICAgICAgICAgJGluZGV4PXsxfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlY3Rpb25DaGFuZ2UoJ2tub3dsZWRnZScpfVxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWJtLWFnZW50LW1vZGFsLWtub3dsZWRnZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8QnJhaW5JY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17YCR7c2VjdGlvbiA9PT0gJ2tub3dsZWRnZScgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAna25vd2xlZGdlJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgna25vd2xlZGdlU2VjdGlvbi50aXRsZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2FjY2Vzc2liaWxpdHknfVxuICAgICAgICAgICAgICAgICAgICAgICRpbmRleD17Mn1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWN0aW9uQ2hhbmdlKCdhY2Nlc3NpYmlsaXR5Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhYm0tYWdlbnQtbW9kYWwtYWNjZXNzaWJpbGl0eVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8QWNjZXNzaWJpbGl0eUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtgJHtzZWN0aW9uID09PSAnYWNjZXNzaWJpbGl0eScgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnYWNjZXNzaWJpbGl0eSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLnRpdGxlVGFiJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAge3Nob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY2xpZW50c0Vycm9yJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtRXJyb3I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IGNvbG9yPVwiI0M3MDUwNVwiIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1FcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG4gICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhcj5cbiAgICAgICAgICAgICAgICAgIHtTZWN0aW9uQnlLZXlbc2VjdGlvbl0oe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IG1vZGFsVmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogaGFuZGxlU2V0QWdlbnRWYWx1ZXNCeUtleXMsXG4gICAgICAgICAgICAgICAgICAgIGFnZW50TW9kZWxzLFxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdLbm93bGVkZ2U6IFtdLFxuICAgICAgICAgICAgICAgICAgICBuZXdLbm93bGVkZ2U6IFtdLFxuICAgICAgICAgICAgICAgICAgICBvblJlbW92ZUV4aXN0aW5nS25vd2xlZGdlOiAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAgICAgb25SZW1vdmVOZXdLbm93bGVkZ2U6ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgICAgICBvbkZpbGVFcnJvckNoYW5nZTogc2V0SGFzRmlsZUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleCxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvU0NBQU1Db250ZW50PlxuICAgICAgICAgICAgICAgIDxTQ0FBTUZvb3RlciBpc0VkaXRpbmc9eyEhbW9kYWxWYWx1ZXM/LmlzRWRpdGluZyAmJiAhIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlfT5cbiAgICAgICAgICAgICAgICAgIHshIW1vZGFsVmFsdWVzPy5pc0VkaXRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgISF1c2VyUGVybWlzc2lvbnM/LmRlbGV0ZSAmJlxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNRGVsZXRlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5XaXRoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd01vZGFsRGVsZXRlKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzaG91bGREaXNhYmxlQWJtSGVhZGVyQ2xvc2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0tub3dsZWRnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdDcmVhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXBkYXRlQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxXcmFwcGVyQ2VudGVySWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHJhc2ggY29sb3I9XCIjMDhjXCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdkZWxldGVBZ2VudCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1dyYXBwZXJDZW50ZXJJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNRGVsZXRlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogJzI0cHgnIH19PlxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1TYXZlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZD17aXNBYm1TYXZlRGlzYWJsZWQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBtb2RhbFZhbHVlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw6IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUFjdGlvbnM6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdLbm93bGVkZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdDcmVhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVcGRhdGVBY2Nlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNGaWxlRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uKG51bGwsICdjcmVhdGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0FibVNhdmVEaXNhYmxlZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogbW9kYWxWYWx1ZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw6IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlQWN0aW9uczogYWN0aW9uc1RvRmlsZXMuY3VycmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdLbm93bGVkZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0NyZWF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXBkYXRlQWNjZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNGaWxlRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge21vZGFsVmFsdWVzLmlzRWRpdGluZyA/IHQoJ3NhdmVDaGFuZ2VzJykgOiB0KCdjcmVhdGVBZ2VudExhYmVsQnV0dG9uJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNhdmVCdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L1NDQUFNRm9vdGVyPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1NDQUFNV3JhcHBlcj5cbiAgICAgIHtzaG93TW9kYWxEZWxldGUgJiYgKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dNb2RhbERlbGV0ZShmYWxzZSl9XG4gICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb246IChwcm9wczogYW55KSA9PiBoYW5kbGVDb25maXJtQWN0aW9uKHByb3BzLCAnZGVsZXRlJyksXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjaGF0PXt7IHRpdGxlOiBtb2RhbFZhbHVlcy5nZW5lcmFsLm5hbWUsIGlkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkIH19XG4gICAgICAgICAgYWN0aW9uPVwiYWdlbnRcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L0JhY2tkcm9wPixcbiAgICBzZWxlY3RvclxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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
|
|
1160
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VDYWxsYmFjayIsImNyZWF0ZVBvcnRhbCIsInVzZVRyYW5zbGF0aW9uIiwiQ1VCdXR0b24iLCJDYXRlZ29yeSIsIkFsZXJ0IiwiVHJhc2giLCJTdGFyIiwiQ3Jvc3MiLCJTcGlubmVyTG90dGllIiwiVG9vbHRpcCIsIkFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIiwiQmFja2Ryb3AiLCJ1c2VVc2VyIiwiQWNjZXNzaWJpbGl0eUljb24iLCJCcmFpbkljb24iLCJ1c2VBZ2VudE1vZGVsIiwidXNlR2V0QWdlbnRCeUlkIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJBYm1Lbm93bGVkZ2VTZWN0aW9uIiwiU0NBQU1Db250ZW50IiwiU0NBQU1Gb290ZXIiLCJTQ0FBTUhlYWRlciIsIlNDQUFNSGVhZGVyVGl0bGUiLCJTQ0FBTUhlYWRlckxlZnQiLCJTQ0FBTUhlYWRlckZhdm9yaXRlIiwiU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbiIsIlNDQUFNU2lkZWJhciIsIlNDQUFNV3JhcHBlciIsIlNDQUFNU2lkZWJhckl0ZW0iLCJTQ0FBTVNpZGViYXJJdGVtVGl0bGUiLCJTQ0FBTURlbGV0ZUJ1dHRvbiIsIlNDQUFNU2F2ZUJ1dHRvbiIsIlNDQUFNV3JhcHBlclNwaW5uZXIiLCJTQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudCIsIlNDQUFNU2lkZWJhckl0ZW1FcnJvciIsInVzZUNyZWF0ZUFnZW50IiwidXNlRGVsZXRlQWdlbnQiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlVXBkYXRlQWdlbnQiLCJ1c2VLbm93bGVkZ2VPcGVyYXRpb25zIiwiQWJtTG9hZGVyRmlsZXMiLCJXcmFwcGVyQ2VudGVySWNvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VBY2Nlc3NDbGllbnQiLCJ1c2VUb2dnbGVGYXZvcml0ZSIsImJ1aWxkQWdlbnRUb29sR3JvdXBzUmVxdWVzdCIsIkRFRkFVTFRfQ09SX0FDQ0VTUyIsImRlcml2ZUFzc2lnbmVkQ29ubmVjdG9yU2x1Z3MiLCJhcHBseUtub3dsZWRnZUZpbGVTdGF0dXNVcGRhdGUiLCJidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbCIsImNyZWF0ZUluaXRpYWxBYm1Nb2RhbFZhbHVlcyIsImhhc0FibVBlbmRpbmdDaGFuZ2VzIiwiaGFzQWNjZXNzaWJpbGl0eVNlY3Rpb25DaGFuZ2VkIiwiaGFzSW5hY3RpdmVBY2Nlc3NpYmlsaXR5Q2xpZW50cyIsImlzQWJtU2F2ZURpc2FibGVkIiwiaXNTYW1lQWdlbnRNb2RhbFNuYXBzaG90IiwicmVzb2x2ZUtub3dsZWRnZVVwbG9hZE91dGNvbWUiLCJzaG91bGRDb25maXJtQWJtQ2xvc2UiLCJjYW5SZW5kZXJBYm1BZ2VudE1vZGFsIiwiaXNBYm1BY2Nlc3NEZW5pZWRFcnJvciIsInJlc29sdmVBYm1Qcm9jZXNzaW5nS25vd2xlZGdlTGFiZWxLZXkiLCJyZXNvbHZlUGVuZGluZ0FibUluaXRpYWxTZWN0aW9uIiwibWVyZ2VBYm1PcGVuQWdlbnRWYWx1ZXMiLCJzaG91bGRDbG9zZUFibU9uQmFja2Ryb3BDbGljayIsInJlc29sdmVBYm1DcmVhdGVBY2Nlc3NVcGRhdGVDb250ZXh0Iiwic2hvdWxkU3luY0FibUNsaWVudEFjY2Vzc09uQ3JlYXRlIiwicmVzb2x2ZUFibUNyZWF0ZVN1Y2Nlc3NQbGFuIiwic2hvdWxkU2hvd1Byb2Nlc3NGaWxlc0ZvckNyZWF0ZVBsYW4iLCJyZXNvbHZlQWJtVXBkYXRlU3VjY2Vzc1BsYW4iLCJyZXNvbHZlQWJtVXBkYXRlQWNjZXNzVXBkYXRlQ29udGV4dCIsInJlc29sdmVBYm1VcGRhdGVBY2Nlc3NPbmx5Q29udGV4dCIsInJlc29sdmVBYm1DcmVhdGVBY2Nlc3NPbmx5RGVjaXNpb24iLCJjcmVhdGVSZXNldEFibUFjY2Vzc1VwZGF0ZUNvbnRleHQiLCJzaG91bGRGaW5hbGl6ZUFibVVwZGF0ZVdpdGhvdXRQZW5kaW5nV29yayIsInJlc29sdmVLbm93bGVkZ2VXc0NvbXBsZXRpb25FZmZlY3RzIiwicmVzb2x2ZUFibUtub3dsZWRnZUVycm9yTWVzc2FnZUtleSIsInNob3VsZEJsb2NrS25vd2xlZGdlRGVsZXRlU3VjY2Vzc0Nsb3NlIiwic2hvdWxkRGVmZXJBY2Nlc3NVcGRhdGVVbnRpbEZpbGVzQ29tcGxldGUiLCJzaG91bGRDbG9zZUNyZWF0ZUFmdGVyS25vd2xlZGdlV2l0aG91dEFjY2VzcyIsInNob3VsZENsb3NlQ3JlYXRlQWZ0ZXJLbm93bGVkZ2VXaXRoQWNjZXNzIiwic2hvdWxkQXBwbHlQZW5kaW5nU2VjdGlvbkFmdGVyT3BlbiIsInJlc29sdmVBYm1PcGVuTW9kYWxMb2FkQWN0aW9uIiwiY2FuQXBwbHlBYm1FZGl0aW5nQWdlbnREZXRhaWwiLCJzaG91bGRTZXREZWZhdWx0QWlNb2RlbEZvck5ld0FnZW50Iiwic2hvdWxkU2tpcEFibUNvbmZpcm1XaXRob3V0TXVsdGlBZ2VudHMiLCJyZXNvbHZlQWJtRHJhZnRGYXZvcml0ZVZhbHVlIiwicmVzb2x2ZUFibUNyZWF0ZUZhdm9yaXRlQWdlbnRzIiwiYXBwbHlBYm1Lbm93bGVkZ2VGaWxlQWN0aW9ucyIsIm1lcmdlQWJtQWdlbnRWYWx1ZXNCeUtleSIsInNob3VsZFJ1bkFibUNyZWF0ZVN1Y2Nlc3NIYW5kbGVyIiwicmVzb2x2ZUFibUNyZWF0ZUtub3dsZWRnZUhhbmRsZXIiLCJzaG91bGRSZXBlYXREZWxldGVLbm93bGVkZ2VzT25DcmVhdGUiLCJzaG91bGRFbnF1ZXVlQWJtQ3JlYXRlRmF2b3JpdGVUb2dnbGUiLCJzaG91bGRIYW5kbGVBYm1DcmVhdGVBY2Nlc3NPbmx5Q2xpZW50Iiwic2hvdWxkUHJvY2Vzc0tub3dsZWRnZVdzU3RhdHVzIiwicmVzb2x2ZUFibUtub3dsZWRnZVdzQ2hhbm5lbCIsInJlc29sdmVBYm1GYXZvcml0ZVRvb2x0aXBLZXkiLCJzaG91bGRTZWxlY3RBZ2VudEFmdGVyRGVsZXRlIiwic2hvdWxkUnVuQWJtUHJvY2Vzc0ZpbGVzVGltZW91dCIsInJlc29sdmVBYm1Qcm9jZXNzRmlsZXNUaW1lb3V0U3VjY2Vzc0tleSIsInNob3VsZFN5bmNTZWxlY3RlZEFnZW50QWZ0ZXJNdXRhdGlvbiIsInNob3VsZEluY2x1ZGVBY2Nlc3NpYmlsaXR5VXBkYXRlSW5Lbm93bGVkZ2VCYXRjaCIsInNob3VsZFJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2Vzc09uQ3JlYXRlQ2xvc2UiLCJzaG91bGRIeWRyYXRlQWdlbnRDb25uZWN0b3JzT25FZGl0Iiwic2hvdWxkU2hvd0FibUxvYWRlckZpbGVzIiwicmVzb2x2ZUFibU1vZGFsVGl0bGVLZXkiLCJzaG91bGREaXNhYmxlQWJtSGVhZGVyQ2xvc2UiLCJyZXNvbHZlQWJtU2F2ZUFjdGlvbiIsInJlc29sdmVQcm9jZXNzRmlsZXNUaW1lb3V0RmxhZ0JlZm9yZVNhdmUiLCJnZXRBZ2VudENvbm5lY3RvcnMiLCJoYXNNYWlhRXh0ZXJuYWxDb25uZWN0b3JzQWNjZXNzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiaW5pdGlhbFZhbHVlcyIsIk9iamVjdCIsImZyZWV6ZSIsIlNlY3Rpb25CeUtleSIsImdlbmVyYWwiLCJwcm9wcyIsIl9vYmplY3RTcHJlYWQiLCJrbm93bGVkZ2UiLCJhY2Nlc3NpYmlsaXR5IiwiQWJtQWdlbnRNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl9tb2RhbFZhbHVlcyRhY2Nlc3NpYjMiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDMiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDQiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDUiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDYiLCJhZGRBZ2VudCIsInVwZGF0ZUFnZW50IiwicmVtb3ZlQWdlbnQiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2VsZWN0Rmlyc3RBZ2VudCIsInVzZXIiLCJldmVudEFtcGxpdHVkZSIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJfdXNlR2xvYmFsQ29udGV4dCIsImN1cnJlbnRTZWxlY3RlZEFnZW50IiwiYWdlbnQiLCJzZWxlY3RBZ2VudCIsImFibUFnZW50TW9kYWxaSW5kZXgiLCJ0b29sdGlwWkluZGV4IiwiX3VzZVRvZ2dsZUZhdm9yaXRlIiwidG9nZ2xlRmF2b3JpdGUiLCJzZWxlY3RvciIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc1N1YnNjcmliZWQiLCJzZXRJc1N1YnNjcmliZWQiLCJtb2RhbFJlZiIsImhhc1BlbmRpbmdGaWxlc1JlZiIsImFjdGlvbnNUb0ZpbGVzIiwidG9EZWxldGUiLCJ0b1VwbG9hZCIsImFjY2Vzc1VwZGF0ZUNvbnRleHQiLCJpc0Zyb21DcmVhdGlvbiIsImlzRnJvbUVkaXRpbmciLCJoYXNBY3Rpb25GaWxlcyIsIm9wZXJhdGlvblR5cGUiLCJoYXNCZWVuQ2FsbGVkIiwiYWNjZXNzSGFuZGxlZFJlZiIsImFnZW50Q3JlYXRlZFJlZiIsInBlbmRpbmdJbml0aWFsU2VjdGlvblJlZiIsInByZWZldGNoZWRBZ2VudEJ5SWRSZWYiLCJoeWRyYXRpbmdBZ2VudElkUmVmIiwiZmlsZXNGaW5pc2hlZFJlZiIsInByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJmaWxlc1Byb2Nlc3NlZCIsInNldEZpbGVzUHJvY2Vzc2VkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNob3dNb2RhbERlbGV0ZSIsInNldFNob3dNb2RhbERlbGV0ZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2VjdGlvbiIsInNldFNlY3Rpb24iLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwibW9kYWxWYWx1ZXMiLCJzZXRNb2RhbFZhbHVlcyIsIl91c2VHZXRBZ2VudEJ5SWQiLCJhZ2VudExvYWRpbmciLCJsb2FkaW5nIiwiaGFuZGxlR2V0QWdlbnRCeUlkIiwiYWdlbnRCeUlkIiwiaGFuZGxlQ2xlYW5BZ2VudCIsImVycm9yR2V0QWdlbnRCeUlkIiwiZXJyb3IiLCJfdXNlQWdlbnRNb2RlbCIsImFnZW50TW9kZWxzIiwiZ2V0QWxsQWdlbnRNb2RlbHMiLCJmaXJzdFZhbHVlQWdlbnQiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiaXNTaG93UHJvY2Vzc0ZpbGVzIiwic2V0SXNTaG93UHJvY2Vzc0ZpbGVzIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImhhc0ZpbGVFcnJvcnMiLCJzZXRIYXNGaWxlRXJyb3JzIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJfdXNlRGVsZXRlQWdlbnQiLCJoYW5kbGVEZWxldGVBZ2VudCIsInN1Y2Nlc3NEZWxldGUiLCJzdWNjZXNzIiwicmVzZXRTdWNjZXNzIiwiX3VzZVVwZGF0ZUFnZW50IiwiaGFuZGxlVXBkYXRlQWdlbnQiLCJzdWNjZXNzVXBkYXRlIiwicmVzZXRTdWNjZXNzVXBkYXRlIiwiX3VzZUNyZWF0ZUFnZW50IiwiaGFuZGxlQ3JlYXRlQWdlbnQiLCJpc0xvYWRpbmdDcmVhdGUiLCJzdWNjZXNzQ3JlYXRlIiwicmVzZXRTdWNjZXNzQ3JlYXRlIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyU3VjY2VzcyIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJfdXNlS25vd2xlZGdlT3BlcmF0aW8iLCJoYW5kbGVDcmVhdGVLbm93bGVkZ2VzIiwiaGFuZGxlRGVsZXRlS25vd2xlZGdlcyIsImhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMiLCJpc0xvYWRpbmdLbm93bGVkZ2UiLCJlcnJvcktub3dsZWRnZSIsInN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUiLCJoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlIiwiaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlIiwiX3VzZUFjY2Vzc0NsaWVudCIsImhhbmRsZUFjY2Vzc0NsaWVudCIsInN1Y2Nlc3NVcGRhdGVBY2Nlc3MiLCJpc0xvYWRpbmdVcGRhdGVBY2Nlc3MiLCJyZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MiLCJoYW5kbGVSZXNldFN1Y2Nlc3MiLCJjcmVhdGlvbkRyYWZ0RGVmYXVsdHMiLCJfYWdlbnRNb2RlbHMkMCRpZCIsIl9hZ2VudE1vZGVscyQiLCJkZWZhdWx0SW5wdXRQbGFjZWhvbGRlciIsImRlZmF1bHRVc2VyUHJvbXB0UGxhY2Vob2xkZXIiLCJkZWZhdWx0QWlNb2RlbElkIiwiaWQiLCJoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCIsIl9maXJzdFZhbHVlQWdlbnQkY3VyciIsImN1cnJlbnQiLCJoYXNQZW5kaW5nQ2hhbmdlcyIsInZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUiLCJCb29sZWFuIiwiaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudCIsImFnZW50SWQiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwidXBkYXRlZEFnZW50IiwiaXNfZmF2b3JpdGUiLCJoYW5kbGVDbG9zZSIsImNyZWF0ZSIsInVwZGF0ZSIsImNvbmZpcm1NZXNzYWdlIiwiaXNFZGl0aW5nIiwid2luZG93IiwiY29uZmlybSIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJldmVudCIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJoYW5kbGVTZWN0aW9uQ2hhbmdlIiwibmV3U2VjdGlvbiIsInRhYlNlY3Rpb24iLCJvcHRpb24iLCJoYW5kbGVTZXRBZ2VudFZhbHVlc0J5S2V5cyIsIl9yZWYyIiwia2V5IiwidmFsdWUiLCJkZWxldGVLbm93bGVkZ2UiLCJuZXh0QWN0aW9ucyIsInByZXYiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImNoYXQiLCJhY3Rpb24iLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWIiLCJjb3JBY2Nlc3MiLCJzYXZlQWN0aW9uIiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJhYnJ1cHQiLCJjb25maXJtQWN0aW9uIiwiY29yX3NsdWdzIiwiY29yX2FjY2VzcyIsInN0b3AiLCJfeCIsIl94MiIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJfYWdlbnRWYWx1ZXMkdmFsdWVzIiwiX2FnZW50VmFsdWVzJHZhbHVlczMiLCJhZ2VudFZhbHVlcyIsImRldGFpbCIsImluaXRpYWxTZWN0aW9uIiwib3BlbkxvYWRBY3Rpb24iLCJ2YWx1ZXMiLCJoYXNNdWx0aUFnZW50c0FjY2VzcyIsImhhc1ByZWZldGNoZWRBZ2VudCIsInByZWZldGNoZWRBZ2VudEJ5SWQiLCJfYWdlbnRWYWx1ZXMkdmFsdWVzMiIsIm5leHRWYWx1ZXMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInVuZGVmaW5lZCIsIl9kb2N1bWVudCIsImJvZHkiLCJvcmlnaW5hbE92ZXJmbG93Iiwic3R5bGUiLCJvdmVyZmxvdyIsImhhbmRsZUJlZm9yZVVubG9hZCIsInByZXZlbnREZWZhdWx0IiwicmV0dXJuVmFsdWUiLCJjcmVhdGVQbGFuIiwiX3Jlc29sdmVBYm1DcmVhdGVGYXZvIiwibGlzdEFnZW50IiwidG9nZ2xlQWdlbnQiLCJlbnF1ZXVlQ3JlYXRlRmF2b3JpdGUiLCJwcm9taXNlcyIsInB1c2giLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInRvU3RyaW5nIiwiYWNjZXNzVHlwZSIsImtub3dsZWRnZUhhbmRsZXIiLCJmaWxlc1RvRGVsZXRlIiwiZmlsZXNUb0NyZWF0ZSIsImZpbGVzIiwiYWxsIiwiYWNjZXNzT25seURlY2lzaW9uIiwibmV4dENvbnRleHQiLCJhaUNoYXRGYXZvcml0ZSIsImFjY2Vzc2liaWxpdHlDaGFuZ2VkIiwidXBkYXRlUGxhbiIsIl90b0NvbnN1bWFibGVBcnJheSIsImZpbGVzVG9VcGxvYWQiLCJjb25jYXQiLCJhY2Nlc3NPbmx5Q29udGV4dCIsImhhc1BlbmRpbmdGaWxlcyIsInRvVXBsb2FkQ291bnQiLCJsZW5ndGgiLCJhY2Nlc3NIYXNBY3Rpb25GaWxlcyIsInByb2Nlc3NGaWxlc1RpbWVkT3V0IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiaGFuZGxlUHJvY2Vzc0ZpbGVzVGltZW91dCIsIndlYlNvY2tldEZ1bmN0aW9uIiwiX3JlZjQiLCJtb2RlbERhdGEiLCJtb2RlbF9kYXRhIiwiZmlsZVN0YXR1cyIsInN0YXR1cyIsInVwZGF0ZWRLbm93bGVkZ2UiLCJ1cGxvYWRPdXRjb21lIiwid3NFZmZlY3RzIiwiY2xvc2VQcm9jZXNzRmlsZXMiLCJpbmNyZW1lbnRGaWxlc1Byb2Nlc3NlZCIsIm1hcmtGaWxlc0ZpbmlzaGVkRm9yQ3JlYXRlIiwicHJldkNvdW50IiwiY29udGV4dCIsIl9yZXNvbHZlQWJtQ3JlYXRlRmF2bzIiLCJmaWxlc0ZpbmlzaGVkIiwiaGFzU3VjY2Vzc0NyZWF0ZSIsImFjY2Vzc0hhbmRsZWQiLCJfc3VjY2Vzc0NyZWF0ZSRpZCIsImNoYW5uZWwiLCIkX3NjIiwiXyRfc2MiLCJzdWJzY3JpYmVIYW5kbGVyIiwiXyRfc2MyIiwiXyRfc2MzIiwiXyRfc2MkY2hhbm5lbFR5cGUiLCJtb2RlbF9oYXNoIiwiYWN0aW9uVHlwZSIsIlNVQlNDUklCRSIsInVwZGF0ZUNvbm5lY3Rpb25Nb2RlbCIsImNoYW5uZWxUeXBlIiwiTU9ERUxfQ0hBTk5FTCIsImFwcGx5RWRpdGluZ0FnZW50IiwiX3JlZjUiLCJfY2FsbGVlMiIsInNvdXJjZSIsImFnZW50VmFsdWVzVG9TZXQiLCJjb25uZWN0b3JzIiwiX3QiLCJfY29udGV4dDIiLCJzZXRUaW1lb3V0IiwiU3RyaW5nIiwic2VudCIsInNlbGVjdGVkQ29ubmVjdG9ycyIsImNvbm5lY3RvclN0YXR1c2VzIiwiZnJvbUVudHJpZXMiLCJtYXAiLCJjb25uZWN0b3IiLCJzbHVnIiwiY29ubmVjdGlvbl9zdGF0dXMiLCJ1c2VyX2F1dGhvcml6ZWQiLCJjb25zb2xlIiwiX3gzIiwicHJlZmV0Y2hlZCIsImhhc0FnZW50QnlJZCIsImFpTW9kZWwiLCJzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMiLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWIyIiwiY2xpZW50cyIsImhhbmRsZVRvZ2dsZUZhdm9yaXRlIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDIiLCJ6SW5kZXgiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJyZWYiLCJ0YWJJbmRleCIsInNpemUiLCJjb2xvciIsImF0dGFjaG1lbnRzIiwibGFiZWwiLCJvblRpbWVvdXQiLCJ0aXRsZSIsIndpZHRoIiwiaGVpZ2h0IiwiZmlsbCIsInZhcmlhbnQiLCJjbGFzc05hbWUiLCJjYW5jZWxNb2RhbCIsImRpc2FibGVkIiwiaGFzU2Nyb2xsIiwiaXNBY3RpdmUiLCIkaW5kZXgiLCJleGlzdGluZ0tub3dsZWRnZSIsIm5ld0tub3dsZWRnZSIsIm9uUmVtb3ZlRXhpc3RpbmdLbm93bGVkZ2UiLCJvblJlbW92ZU5ld0tub3dsZWRnZSIsIm9uRmlsZUVycm9yQ2hhbmdlIiwiY2hpbGRyZW5XaXRoSWNvbiIsImRpc3BsYXkiLCJnYXAiLCJpc0Rpc2FibGVkIiwiaW5pdGlhbCIsImZpbGVBY3Rpb25zIiwib25DbG9zZSIsImhhbmRsZXJzIiwibmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9BYm1BZ2VudE1vZGFsL0FibUFnZW50TW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWFsZXJ0ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tY3ljbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby11c2VsZXNzLWZyYWdtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5cbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DYXRlZ29yeSdcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQWxlcnQnXG5pbXBvcnQgeyBUcmFzaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1RyYXNoJ1xuaW1wb3J0IHsgU3RhciB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1N0YXInXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgU3Bpbm5lckxvdHRpZSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2Nvci1jb21tb25zL2xpYi9jb21wb25lbnRzL3NwaW5uZXItbG90dGllJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbidcbmltcG9ydCB7IEJhY2tkcm9wIH0gZnJvbSAnLi4vLi4vYXRvbXMvQmFja2Ryb3AnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlJY29uLCBCcmFpbkljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IHVzZUFnZW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBZ2VudE1vZGVsL3VzZUFnZW50TW9kZWwnXG5pbXBvcnQgeyBBZ2VudCwgQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgdXNlR2V0QWdlbnRCeUlkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRCeUlkJ1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQWJtR2VuZXJhbFNlY3Rpb24sIEFibUtub3dsZWRnZVNlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbidcbmltcG9ydCB7IE1vZGFsVmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnRNb2RhbCdcbmltcG9ydCB7XG4gIFNDQUFNQ29udGVudCxcbiAgU0NBQU1Gb290ZXIsXG4gIFNDQUFNSGVhZGVyLFxuICBTQ0FBTUhlYWRlclRpdGxlLFxuICBTQ0FBTUhlYWRlckxlZnQsXG4gIFNDQUFNSGVhZGVyRmF2b3JpdGUsXG4gIFNDQUFNSGVhZGVyQ2xvc2VCdXR0b24sXG4gIFNDQUFNU2lkZWJhcixcbiAgU0NBQU1XcmFwcGVyLFxuICBTQ0FBTVNpZGViYXJJdGVtLFxuICBTQ0FBTVNpZGViYXJJdGVtVGl0bGUsXG4gIFNDQUFNRGVsZXRlQnV0dG9uLFxuICBTQ0FBTVNhdmVCdXR0b24sXG4gIFNDQUFNV3JhcHBlclNwaW5uZXIsXG4gIFNDQUFNV3JhcHBlclNwaW5uZXJDb250ZW50LFxuICBTQ0FBTVNpZGViYXJJdGVtRXJyb3IsXG59IGZyb20gJy4vQWJtQWdlbnRNb2RhbC5zdHlsZXMnXG5pbXBvcnQgeyB1c2VDcmVhdGVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50TW9kZWwvdXNlQ3JlYXRlQWdlbnQnXG5pbXBvcnQgeyB1c2VEZWxldGVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50TW9kZWwvdXNlRGVsZXRlQWdlbnQnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VVcGRhdGVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50TW9kZWwvdXNlVXBkYXRlQWdlbnQnXG5pbXBvcnQgeyB1c2VLbm93bGVkZ2VPcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlS25vd2xlZGdlJ1xuaW1wb3J0IHsgQWJtTG9hZGVyRmlsZXMgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1Mb2FkZXJGaWxlcydcbmltcG9ydCB7IFdyYXBwZXJDZW50ZXJJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvV3JhcHBlckNlbnRlckljb24nXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBEZWxldGVRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vRGVsZXRlUXVlc3Rpb25Nb2RhbC9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5pbXBvcnQgeyB1c2VBY2Nlc3NDbGllbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBY2Nlc3NDbGllbnQvdXNlQWNjZXNzQ2xpZW50J1xuaW1wb3J0IHsgdXNlVG9nZ2xlRmF2b3JpdGUgfSBmcm9tICcuLi8uLi8uLi9ob29rcydcbmltcG9ydCB7XG4gIGJ1aWxkQWdlbnRUb29sR3JvdXBzUmVxdWVzdCxcbiAgREVGQVVMVF9DT1JfQUNDRVNTLFxuICBkZXJpdmVBc3NpZ25lZENvbm5lY3RvclNsdWdzLFxufSBmcm9tICcuLi8uLi8uLi91dGlscy9ub3JtYWxpemVBZ2VudENvbm5lY3RvcnMnXG5pbXBvcnQge1xuICBhcHBseUtub3dsZWRnZUZpbGVTdGF0dXNVcGRhdGUsXG4gIGJ1aWxkRWRpdGluZ01vZGFsVmFsdWVzRnJvbUFnZW50RGV0YWlsLFxuICBjcmVhdGVJbml0aWFsQWJtTW9kYWxWYWx1ZXMsXG4gIGhhc0FibVBlbmRpbmdDaGFuZ2VzLFxuICBoYXNBY2Nlc3NpYmlsaXR5U2VjdGlvbkNoYW5nZWQsXG4gIGhhc0luYWN0aXZlQWNjZXNzaWJpbGl0eUNsaWVudHMsXG4gIGlzQWJtU2F2ZURpc2FibGVkLFxuICBpc1NhbWVBZ2VudE1vZGFsU25hcHNob3QsXG4gIHJlc29sdmVLbm93bGVkZ2VVcGxvYWRPdXRjb21lLFxuICBzaG91bGRDb25maXJtQWJtQ2xvc2UsXG4gIGNhblJlbmRlckFibUFnZW50TW9kYWwsXG4gIGlzQWJtQWNjZXNzRGVuaWVkRXJyb3IsXG4gIHJlc29sdmVBYm1Qcm9jZXNzaW5nS25vd2xlZGdlTGFiZWxLZXksXG4gIHJlc29sdmVQZW5kaW5nQWJtSW5pdGlhbFNlY3Rpb24sXG4gIG1lcmdlQWJtT3BlbkFnZW50VmFsdWVzLFxuICBzaG91bGRDbG9zZUFibU9uQmFja2Ryb3BDbGljayxcbiAgcmVzb2x2ZUFibUNyZWF0ZUFjY2Vzc1VwZGF0ZUNvbnRleHQsXG4gIHNob3VsZFN5bmNBYm1DbGllbnRBY2Nlc3NPbkNyZWF0ZSxcbiAgcmVzb2x2ZUFibUNyZWF0ZVN1Y2Nlc3NQbGFuLFxuICBzaG91bGRTaG93UHJvY2Vzc0ZpbGVzRm9yQ3JlYXRlUGxhbixcbiAgcmVzb2x2ZUFibVVwZGF0ZVN1Y2Nlc3NQbGFuLFxuICByZXNvbHZlQWJtVXBkYXRlQWNjZXNzVXBkYXRlQ29udGV4dCxcbiAgcmVzb2x2ZUFibVVwZGF0ZUFjY2Vzc09ubHlDb250ZXh0LFxuICByZXNvbHZlQWJtQ3JlYXRlQWNjZXNzT25seURlY2lzaW9uLFxuICBjcmVhdGVSZXNldEFibUFjY2Vzc1VwZGF0ZUNvbnRleHQsXG4gIHNob3VsZEZpbmFsaXplQWJtVXBkYXRlV2l0aG91dFBlbmRpbmdXb3JrLFxuICByZXNvbHZlS25vd2xlZGdlV3NDb21wbGV0aW9uRWZmZWN0cyxcbiAgcmVzb2x2ZUFibUtub3dsZWRnZUVycm9yTWVzc2FnZUtleSxcbiAgc2hvdWxkQmxvY2tLbm93bGVkZ2VEZWxldGVTdWNjZXNzQ2xvc2UsXG4gIHNob3VsZERlZmVyQWNjZXNzVXBkYXRlVW50aWxGaWxlc0NvbXBsZXRlLFxuICBzaG91bGRDbG9zZUNyZWF0ZUFmdGVyS25vd2xlZGdlV2l0aG91dEFjY2VzcyxcbiAgc2hvdWxkQ2xvc2VDcmVhdGVBZnRlcktub3dsZWRnZVdpdGhBY2Nlc3MsXG4gIHNob3VsZEFwcGx5UGVuZGluZ1NlY3Rpb25BZnRlck9wZW4sXG4gIHJlc29sdmVBYm1PcGVuTW9kYWxMb2FkQWN0aW9uLFxuICBjYW5BcHBseUFibUVkaXRpbmdBZ2VudERldGFpbCxcbiAgc2hvdWxkU2V0RGVmYXVsdEFpTW9kZWxGb3JOZXdBZ2VudCxcbiAgc2hvdWxkU2tpcEFibUNvbmZpcm1XaXRob3V0TXVsdGlBZ2VudHMsXG4gIHJlc29sdmVBYm1EcmFmdEZhdm9yaXRlVmFsdWUsXG4gIHJlc29sdmVBYm1DcmVhdGVGYXZvcml0ZUFnZW50cyxcbiAgYXBwbHlBYm1Lbm93bGVkZ2VGaWxlQWN0aW9ucyxcbiAgbWVyZ2VBYm1BZ2VudFZhbHVlc0J5S2V5LFxuICBzaG91bGRSdW5BYm1DcmVhdGVTdWNjZXNzSGFuZGxlcixcbiAgcmVzb2x2ZUFibUNyZWF0ZUtub3dsZWRnZUhhbmRsZXIsXG4gIHNob3VsZFJlcGVhdERlbGV0ZUtub3dsZWRnZXNPbkNyZWF0ZSxcbiAgc2hvdWxkRW5xdWV1ZUFibUNyZWF0ZUZhdm9yaXRlVG9nZ2xlLFxuICBzaG91bGRIYW5kbGVBYm1DcmVhdGVBY2Nlc3NPbmx5Q2xpZW50LFxuICBzaG91bGRQcm9jZXNzS25vd2xlZGdlV3NTdGF0dXMsXG4gIHJlc29sdmVBYm1Lbm93bGVkZ2VXc0NoYW5uZWwsXG4gIHJlc29sdmVBYm1GYXZvcml0ZVRvb2x0aXBLZXksXG4gIHNob3VsZFNlbGVjdEFnZW50QWZ0ZXJEZWxldGUsXG4gIHNob3VsZFJ1bkFibVByb2Nlc3NGaWxlc1RpbWVvdXQsXG4gIHJlc29sdmVBYm1Qcm9jZXNzRmlsZXNUaW1lb3V0U3VjY2Vzc0tleSxcbiAgc2hvdWxkU3luY1NlbGVjdGVkQWdlbnRBZnRlck11dGF0aW9uLFxuICBzaG91bGRJbmNsdWRlQWNjZXNzaWJpbGl0eVVwZGF0ZUluS25vd2xlZGdlQmF0Y2gsXG4gIHNob3VsZFJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2Vzc09uQ3JlYXRlQ2xvc2UsXG4gIHNob3VsZEh5ZHJhdGVBZ2VudENvbm5lY3RvcnNPbkVkaXQsXG4gIHNob3VsZFNob3dBYm1Mb2FkZXJGaWxlcyxcbiAgcmVzb2x2ZUFibU1vZGFsVGl0bGVLZXksXG4gIHNob3VsZERpc2FibGVBYm1IZWFkZXJDbG9zZSxcbiAgcmVzb2x2ZUFibVNhdmVBY3Rpb24sXG4gIHJlc29sdmVQcm9jZXNzRmlsZXNUaW1lb3V0RmxhZ0JlZm9yZVNhdmUsXG59IGZyb20gJy4vQWJtQWdlbnRNb2RhbC5oZWxwZXJzJ1xuaW1wb3J0IHsgZ2V0QWdlbnRDb25uZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvY29ubmVjdG9ycydcbmltcG9ydCB7IGhhc01haWFFeHRlcm5hbENvbm5lY3RvcnNBY2Nlc3MgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvbWFpYUV4dGVybmFsQ29ubmVjdG9yc0FjY2VzcydcblxuY29uc3QgaW5pdGlhbFZhbHVlcyA9IE9iamVjdC5mcmVlemUoY3JlYXRlSW5pdGlhbEFibU1vZGFsVmFsdWVzKCkpXG5cbnR5cGUgQWJtU2VjdGlvbiA9ICdnZW5lcmFsJyB8ICdrbm93bGVkZ2UnIHwgJ3RyYWluaW5nJyB8ICd0ZXN0aW5nJyB8ICdhY2Nlc3NpYmlsaXR5J1xuXG5leHBvcnQgY29uc3QgU2VjdGlvbkJ5S2V5ID0ge1xuICBnZW5lcmFsOiAocHJvcHM6IHtcbiAgICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6ICh7XG4gICAgICBrZXksXG4gICAgICB2YWx1ZSxcbiAgICAgIGRlbGV0ZUtub3dsZWRnZSxcbiAgICB9OiB7XG4gICAgICBrZXk6IHN0cmluZ1xuICAgICAgdmFsdWU6IHVua25vd25cbiAgICAgIGRlbGV0ZUtub3dsZWRnZT86IGJvb2xlYW5cbiAgICB9KSA9PiB2b2lkXG4gICAgYWdlbnRNb2RlbHM6IEFnZW50TW9kZWxbXVxuICAgIGxvYWRpbmc6IGJvb2xlYW5cbiAgICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG4gIH0pID0+IDxBYm1HZW5lcmFsU2VjdGlvbiB7Li4ucHJvcHN9IC8+LFxuICBrbm93bGVkZ2U6IChwcm9wczoge1xuICAgIHZhbHVlczogTW9kYWxWYWx1ZXNcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gICAgZXhpc3RpbmdLbm93bGVkZ2U6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBuZXdLbm93bGVkZ2U6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBvblJlbW92ZUV4aXN0aW5nS25vd2xlZGdlOiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvblJlbW92ZU5ld0tub3dsZWRnZTogKGZpbGVJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25GaWxlRXJyb3JDaGFuZ2U6IChoYXNFcnJvcnM6IGJvb2xlYW4pID0+IHZvaWRcbiAgICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG4gIH0pID0+IDxBYm1Lbm93bGVkZ2VTZWN0aW9uIHsuLi5wcm9wc30gLz4sXG4gIGFjY2Vzc2liaWxpdHk6IChwcm9wczoge1xuICAgIHZhbHVlczogTW9kYWxWYWx1ZXNcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gIH0pID0+IDxBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiB7Li4ucHJvcHN9IC8+LFxufVxuXG50eXBlIEFibUFnZW50TW9kYWxQcm9wcyA9IHtcbiAgYWRkQWdlbnQ6IChuZXdBZ2VudDogQWdlbnQsIG9wdGlvbnM/OiB7IG5hdmlnYXRlSG9tZT86IGJvb2xlYW4gfSkgPT4gdm9pZFxuICByZW1vdmVBZ2VudDogKGFnZW50SWQ6IG51bWJlciB8IHN0cmluZykgPT4gdm9pZFxuICB1cGRhdGVBZ2VudDogKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgdXBkYXRlQWdlbnRGYXZvcml0ZTogKHVwZGF0ZWRBZ2VudDogQWdlbnQsIHNob3VsZFNvcnQ/OiBib29sZWFuKSA9PiB2b2lkXG4gIHNlbGVjdEZpcnN0QWdlbnQ6IChhZ2VudElkOiBzdHJpbmcpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IEFibUFnZW50TW9kYWwgPSAoe1xuICBhZGRBZ2VudCxcbiAgdXBkYXRlQWdlbnQsXG4gIHJlbW92ZUFnZW50LFxuICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICBzZWxlY3RGaXJzdEFnZW50LFxufTogQWJtQWdlbnRNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2FibV9hZ2VudF9zZWN0aW9uJylcbiAgLy8gY29uc3QgJF9zYzogYW55ID0gbnVsbFxuICBjb25zdCB7IGFnZW50OiBjdXJyZW50U2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBhYm1BZ2VudE1vZGFsWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMTEyLCAnYWdlbnRNb2RhbCcpXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICduZXN0ZWRNb2RhbCcpXG4gIGNvbnN0IHsgdG9nZ2xlRmF2b3JpdGUgfSA9IHVzZVRvZ2dsZUZhdm9yaXRlKClcbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWJtLWFnZW50LW1vZGFsJylcbiAgY29uc3QgW2lzU3Vic2NyaWJlZCwgc2V0SXNTdWJzY3JpYmVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBtb2RhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaGFzUGVuZGluZ0ZpbGVzUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBhY3Rpb25zVG9GaWxlcyA9IHVzZVJlZjxhbnk+KHtcbiAgICB0b0RlbGV0ZTogW10sXG4gICAgdG9VcGxvYWQ6IFtdLFxuICB9KVxuICBjb25zdCBhY2Nlc3NVcGRhdGVDb250ZXh0ID0gdXNlUmVmPHtcbiAgICBpc0Zyb21DcmVhdGlvbjogYm9vbGVhblxuICAgIGlzRnJvbUVkaXRpbmc6IGJvb2xlYW5cbiAgICBoYXNBY3Rpb25GaWxlczogYm9vbGVhblxuICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnIHwgJ3VwZGF0ZScgfCBudWxsXG4gICAgaGFzQmVlbkNhbGxlZD86IGJvb2xlYW5cbiAgfT4oe1xuICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgfSlcbiAgY29uc3QgYWNjZXNzSGFuZGxlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWdlbnRDcmVhdGVkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZiA9IHVzZVJlZjxBYm1TZWN0aW9uIHwgbnVsbD4obnVsbClcbiAgY29uc3QgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZiA9IHVzZVJlZjxhbnk+KG51bGwpXG4gIGNvbnN0IGh5ZHJhdGluZ0FnZW50SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgZmlsZXNGaW5pc2hlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgLy8gTWFyY2EgY3VhbmRvIGNlcnJhbW9zIGVsIGxvYWRlciBwb3IgZWwgdGltZW91dCBkZSBzZWd1cmlkYWQgZGUgYXJjaGl2b3MuXG4gIC8vIE1pZW50cmFzIGVzdMOpIGFjdGl2bywgbG9zIHVzZUVmZmVjdCBkZSBwb3N0LWd1YXJkYWRvIE5PIGRlYmVuIGRpc3BhcmFyXG4gIC8vIHNuYWNrYmFycyBkZSDDqXhpdG8gbmkgYXV0by1jZXJyYXIgZWwgbW9kYWwuXG4gIGNvbnN0IHByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBbZmlsZXNQcm9jZXNzZWQsIHNldEZpbGVzUHJvY2Vzc2VkXSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dNb2RhbERlbGV0ZSwgc2V0U2hvd01vZGFsRGVsZXRlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2VjdGlvbiwgc2V0U2VjdGlvbl0gPSB1c2VTdGF0ZTxBYm1TZWN0aW9uPignZ2VuZXJhbCcpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW21vZGFsVmFsdWVzLCBzZXRNb2RhbFZhbHVlc10gPSB1c2VTdGF0ZTx7XG4gICAgZ2VuZXJhbDogYW55XG4gICAga25vd2xlZGdlOiBhbnlcbiAgICBpc0VkaXRpbmc6IGJvb2xlYW5cbiAgICBhY2Nlc3NpYmlsaXR5OiBhbnlcbiAgfT4oaW5pdGlhbFZhbHVlcylcbiAgY29uc3Qge1xuICAgIGxvYWRpbmc6IGFnZW50TG9hZGluZyxcbiAgICBoYW5kbGVHZXRBZ2VudEJ5SWQsXG4gICAgYWdlbnQ6IGFnZW50QnlJZCxcbiAgICBoYW5kbGVDbGVhbkFnZW50LFxuICAgIGVycm9yOiBlcnJvckdldEFnZW50QnlJZCxcbiAgfSA9IHVzZUdldEFnZW50QnlJZCgpXG4gIGNvbnN0IHsgYWdlbnRNb2RlbHMsIGdldEFsbEFnZW50TW9kZWxzIH0gPSB1c2VBZ2VudE1vZGVsKClcbiAgY29uc3QgZmlyc3RWYWx1ZUFnZW50ID0gdXNlUmVmPGFueT4obnVsbClcbiAgY29uc3QgW2lzU2hvd1Byb2Nlc3NGaWxlcywgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaGFzRmlsZUVycm9ycywgc2V0SGFzRmlsZUVycm9yc10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG5cbiAgY29uc3QgeyBoYW5kbGVEZWxldGVBZ2VudCwgc3VjY2Vzczogc3VjY2Vzc0RlbGV0ZSwgcmVzZXRTdWNjZXNzIH0gPSB1c2VEZWxldGVBZ2VudCgpXG4gIGNvbnN0IHsgaGFuZGxlVXBkYXRlQWdlbnQsIHN1Y2Nlc3M6IHN1Y2Nlc3NVcGRhdGUsIHJlc2V0U3VjY2VzczogcmVzZXRTdWNjZXNzVXBkYXRlIH0gPSB1c2VVcGRhdGVBZ2VudCgpXG5cbiAgY29uc3Qge1xuICAgIGhhbmRsZUNyZWF0ZUFnZW50LFxuICAgIGlzTG9hZGluZzogaXNMb2FkaW5nQ3JlYXRlLFxuICAgIHN1Y2Nlc3M6IHN1Y2Nlc3NDcmVhdGUsXG4gICAgcmVzZXRTdWNjZXNzOiByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gIH0gPSB1c2VDcmVhdGVBZ2VudCgpXG5cbiAgY29uc3QgeyBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsIGhhbmRsZVNuYWNrYmFyRXJyb3IgfSA9IHVzZVNuYWNrQmFyTWFuYWdlcigpXG5cbiAgY29uc3Qge1xuICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGlzTG9hZGluZzogaXNMb2FkaW5nS25vd2xlZGdlLFxuICAgIGVycm9yOiBlcnJvcktub3dsZWRnZSxcbiAgICBzdWNjZXNzRGVsZXRlOiBzdWNjZXNzS25vd2xlZGdlRGVsZXRlLFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc1NhdmUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlLFxuICB9ID0gdXNlS25vd2xlZGdlT3BlcmF0aW9ucygpXG5cbiAgY29uc3Qge1xuICAgIGhhbmRsZUFjY2Vzc0NsaWVudCxcbiAgICBzdWNjZXNzOiBzdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGlzTG9hZGluZzogaXNMb2FkaW5nVXBkYXRlQWNjZXNzLFxuICAgIGhhbmRsZVJlc2V0U3VjY2VzczogcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzLFxuICB9ID0gdXNlQWNjZXNzQ2xpZW50KClcblxuICBjb25zdCBjcmVhdGlvbkRyYWZ0RGVmYXVsdHMgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0SW5wdXRQbGFjZWhvbGRlcjogdCgnZ2VuZXJhbFNlY3Rpb24uaW5wdXRQbGFjZWhvbGRlcicpLFxuICAgICAgZGVmYXVsdFVzZXJQcm9tcHRQbGFjZWhvbGRlcjogdCgnZ2VuZXJhbFNlY3Rpb24uaW5pdGlhbFByb21wdFBsYWNlaG9sZGVyJyksXG4gICAgICBkZWZhdWx0QWlNb2RlbElkOiBhZ2VudE1vZGVsc1swXT8uaWQgPz8gbnVsbCxcbiAgICB9KSxcbiAgICBbYWdlbnRNb2RlbHMsIHRdXG4gIClcblxuICBjb25zdCBoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCA9ICgpID0+XG4gICAgaGFzQWNjZXNzaWJpbGl0eVNlY3Rpb25DaGFuZ2VkKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHksIGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50Py5hY2Nlc3NpYmlsaXR5KVxuXG4gIGNvbnN0IGhhc1BlbmRpbmdDaGFuZ2VzID0gKCkgPT5cbiAgICBoYXNBYm1QZW5kaW5nQ2hhbmdlcyhtb2RhbFZhbHVlcywgZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQsIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQsIGNyZWF0aW9uRHJhZnREZWZhdWx0cylcblxuICBjb25zdCB2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lID0gKCkgPT5cbiAgICBCb29sZWFuKFxuICAgICAgZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQgJiYgaXNTYW1lQWdlbnRNb2RhbFNuYXBzaG90KG1vZGFsVmFsdWVzLCBmaXJzdFZhbHVlQWdlbnQuY3VycmVudCwgYWN0aW9uc1RvRmlsZXMuY3VycmVudClcbiAgICApXG5cbiAgLy8gSGVscGVyIHBhcmEgbWFuZWphciBlbCB0b2dnbGUgZGUgZmF2b3JpdG8geSBhY3R1YWxpemFyIGVsIGVzdGFkbyBjb24gb3JkZW5hbWllbnRvXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoYWdlbnRJZDogc3RyaW5nLCBhZ2VudDogQWdlbnQsIG9uU3VjY2Vzcz86ICh1cGRhdGVkQWdlbnQ6IEFnZW50KSA9PiB2b2lkLCBvbkVycm9yPzogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgdG9nZ2xlRmF2b3JpdGUoXG4gICAgICAgIGFnZW50SWQsXG4gICAgICAgIHVwZGF0ZWRBZ2VudCA9PiB7XG4gICAgICAgICAgLy8gQWN0dWFsaXphciBlbCBlc3RhZG8gZGUgYWdlbnRlcyBjb24gZWwgcmVzdWx0YWRvIGRlbCBzZXJ2aWRvciB5IG9yZGVuYXJcbiAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlKHVwZGF0ZWRBZ2VudCwgdHJ1ZSlcbiAgICAgICAgICBpZiAob25TdWNjZXNzKSB7XG4gICAgICAgICAgICBvblN1Y2Nlc3ModXBkYXRlZEFnZW50KVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGlmIChvbkVycm9yKSB7XG4gICAgICAgICAgICBvbkVycm9yKClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGFnZW50LmlzX2Zhdm9yaXRlXG4gICAgICApXG4gICAgfSxcbiAgICBbdG9nZ2xlRmF2b3JpdGUsIHVwZGF0ZUFnZW50RmF2b3JpdGVdXG4gIClcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHtcbiAgICBpZiAoXG4gICAgICBzaG91bGRDb25maXJtQWJtQ2xvc2UoaGFzUGVuZGluZ0NoYW5nZXMoKSwge1xuICAgICAgICBjcmVhdGU6IHN1Y2Nlc3NDcmVhdGUsXG4gICAgICAgIHVwZGF0ZTogc3VjY2Vzc1VwZGF0ZSxcbiAgICAgICAgZGVsZXRlOiBzdWNjZXNzRGVsZXRlLFxuICAgICAgfSlcbiAgICApIHtcbiAgICAgIGNvbnN0IGNvbmZpcm1NZXNzYWdlID0gbW9kYWxWYWx1ZXMuaXNFZGl0aW5nID8gdCgnY29uZmlybUNsb3NlRWRpdEFnZW50JykgOiB0KCdjb25maXJtQ2xvc2VDcmVhdGVBZ2VudCcpXG5cbiAgICAgIGlmICghd2luZG93LmNvbmZpcm0oY29uZmlybU1lc3NhZ2UpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cblxuICAgIHNldE1vZGFsVmFsdWVzKGluaXRpYWxWYWx1ZXMpXG4gICAgaGFuZGxlQ2xlYW5BZ2VudCgpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSgpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQgPSB7XG4gICAgICB0b0RlbGV0ZTogW10sXG4gICAgICB0b1VwbG9hZDogW10sXG4gICAgfVxuICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IGNyZWF0ZVJlc2V0QWJtQWNjZXNzVXBkYXRlQ29udGV4dCgpXG4gICAgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKGZhbHNlKVxuICAgIHNldElzU3Vic2NyaWJlZChmYWxzZSlcbiAgICBzZXRGaWxlc1Byb2Nlc3NlZCgwKVxuICAgIHNldFNlY3Rpb24oJ2dlbmVyYWwnKVxuICAgIHNldElzT3BlbihmYWxzZSlcbiAgICBoeWRyYXRpbmdBZ2VudElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgYWdlbnRDcmVhdGVkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50ID0gbnVsbFxuICB9XG5cbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGlmIChzaG91bGRDbG9zZUFibU9uQmFja2Ryb3BDbGljayhldmVudC50YXJnZXQsIGV2ZW50LmN1cnJlbnRUYXJnZXQsIGlzU2hvd1Byb2Nlc3NGaWxlcykpIHtcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWN0aW9uQ2hhbmdlID0gKG5ld1NlY3Rpb246IEFibVNlY3Rpb24pID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMudGFiU2VjdGlvbiwgeyBvcHRpb246IG5ld1NlY3Rpb24gfSlcbiAgICBzZXRTZWN0aW9uKG5ld1NlY3Rpb24pXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZXRBZ2VudFZhbHVlc0J5S2V5cyA9ICh7XG4gICAga2V5LFxuICAgIHZhbHVlLFxuICAgIGRlbGV0ZUtub3dsZWRnZSxcbiAgfToge1xuICAgIGtleTogc3RyaW5nXG4gICAgdmFsdWU6IGFueVxuICAgIGRlbGV0ZUtub3dsZWRnZTogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgaWYgKGtleSA9PT0gJ2tub3dsZWRnZScpIHtcbiAgICAgIGNvbnN0IG5leHRBY3Rpb25zID0gYXBwbHlBYm1Lbm93bGVkZ2VGaWxlQWN0aW9ucyhcbiAgICAgICAgdmFsdWUgYXMgQXR0YWNobWVudEZpbGVbXSB8IHVuZGVmaW5lZCxcbiAgICAgICAgZGVsZXRlS25vd2xlZGdlLFxuICAgICAgICBtb2RhbFZhbHVlcy5rbm93bGVkZ2UsXG4gICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnRcbiAgICAgIClcbiAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQgPSBuZXh0QWN0aW9uc1xuICAgIH1cbiAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+IG1lcmdlQWJtQWdlbnRWYWx1ZXNCeUtleShwcmV2LCBrZXksIHZhbHVlLCBkZWxldGVLbm93bGVkZ2UpKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29uZmlybUFjdGlvbiA9IGFzeW5jIChjaGF0OiBhbnksIGFjdGlvbjogJ2RlbGV0ZScgfCAndXBkYXRlJyB8ICdjcmVhdGUnKSA9PiB7XG4gICAgLy8gU29sbyBwZXJtaXRpciBvcGVyYWNpb25lcyBkZSBhZ2VudGVzIGN1c3RvbSBzaSBsYSBmZWF0dXJlIGZsYWcgZXN0w6EgaGFiaWxpdGFkYVxuICAgIGlmIChzaG91bGRTa2lwQWJtQ29uZmlybVdpdGhvdXRNdWx0aUFnZW50cyhCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChhY3Rpb24gPT09ICdkZWxldGUnKSB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuZGVsZXRlKVxuICAgICAgaGFuZGxlRGVsZXRlQWdlbnQoY2hhdC5pZCBhcyB1bmtub3duIGFzIHN0cmluZylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBjb3JBY2Nlc3MgPSBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmNvckFjY2VzcyA/PyBERUZBVUxUX0NPUl9BQ0NFU1NcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY29uZmlybUFjdGlvbiwge1xuICAgICAgb3B0aW9uOiBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyAnZWRpdCcgOiAnY3JlYXRlJyxcbiAgICAgIGNvcl9zbHVnczogYnVpbGRBZ2VudFRvb2xHcm91cHNSZXF1ZXN0KGNvckFjY2VzcyksXG4gICAgICBjb3JfYWNjZXNzOiBjb3JBY2Nlc3MsXG4gICAgfSlcbiAgICAvLyBBbCByZWludGVudGFyIGd1YXJkYXIsIGxpYmVyYXIgZWwgZnJlbm8gZGVsIHRpbWVvdXQgcHJldmlvIHBhcmEgcXVlIGxvc1xuICAgIC8vIHVzZUVmZmVjdCBkZSBwb3N0LWd1YXJkYWRvIHZ1ZWx2YW4gYSBwb2RlciBkaXNwYXJhciBzbmFja2JhcnMgeSBjZXJyYXIuXG4gICAgcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYuY3VycmVudCA9IHJlc29sdmVQcm9jZXNzRmlsZXNUaW1lb3V0RmxhZ0JlZm9yZVNhdmUoKVxuICAgIGNvbnN0IHNhdmVBY3Rpb24gPSByZXNvbHZlQWJtU2F2ZUFjdGlvbihtb2RhbFZhbHVlcy5pc0VkaXRpbmcsIHZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSlcbiAgICBpZiAoc2F2ZUFjdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGF3YWl0IGhhbmRsZVVwZGF0ZUFnZW50KG1vZGFsVmFsdWVzKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChzYXZlQWN0aW9uID09PSAnY3JlYXRlJykge1xuICAgICAgYXdhaXQgaGFuZGxlQ3JlYXRlQWdlbnQobW9kYWxWYWx1ZXMpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXRBZ2VudFZhbHVlcyA9IChldmVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50VmFsdWVzIH0gPSBldmVudC5kZXRhaWxcbiAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gcmVzb2x2ZVBlbmRpbmdBYm1Jbml0aWFsU2VjdGlvbihhZ2VudFZhbHVlcz8uaW5pdGlhbFNlY3Rpb24pXG4gICAgICBoeWRyYXRpbmdBZ2VudElkUmVmLmN1cnJlbnQgPSBudWxsXG5cbiAgICAgIGdldEFsbEFnZW50TW9kZWxzKClcbiAgICAgIHNldElzT3Blbih0cnVlKVxuICAgICAgc2V0SXNMb2FkaW5nKHRydWUpXG5cbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IGNyZWF0ZVJlc2V0QWJtQWNjZXNzVXBkYXRlQ29udGV4dCgpXG5cbiAgICAgIGNvbnN0IG9wZW5Mb2FkQWN0aW9uID0gcmVzb2x2ZUFibU9wZW5Nb2RhbExvYWRBY3Rpb24oe1xuICAgICAgICBpc0VkaXRpbmc6IGFnZW50VmFsdWVzLnZhbHVlcz8uaXNFZGl0aW5nLFxuICAgICAgICBoYXNNdWx0aUFnZW50c0FjY2VzczogQm9vbGVhbih3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyksXG4gICAgICAgIGhhc1ByZWZldGNoZWRBZ2VudDogQm9vbGVhbihhZ2VudFZhbHVlcy5wcmVmZXRjaGVkQWdlbnRCeUlkKSxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChvcGVuTG9hZEFjdGlvbiA9PT0gJ2RlbnlfZWRpdCcpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdlcnJvckFjY2Vzc0RlbmllZCcpKVxuICAgICAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgICAgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgIHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChvcGVuTG9hZEFjdGlvbiA9PT0gJ3ByZWZldGNoX2VkaXQnKSB7XG4gICAgICAgIGhhbmRsZUNsZWFuQWdlbnQoKVxuICAgICAgICBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnQgPSBhZ2VudFZhbHVlcy5wcmVmZXRjaGVkQWdlbnRCeUlkXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAob3BlbkxvYWRBY3Rpb24gPT09ICdmZXRjaF9lZGl0Jykge1xuICAgICAgICBoYW5kbGVHZXRBZ2VudEJ5SWQoYWdlbnRWYWx1ZXM/LnZhbHVlcz8uZ2VuZXJhbD8uaWQgYXMgdW5rbm93biBhcyBzdHJpbmcpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoYWdlbnRWYWx1ZXMudmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZXMgPSBtZXJnZUFibU9wZW5BZ2VudFZhbHVlcyhpbml0aWFsVmFsdWVzLCBhZ2VudFZhbHVlcy52YWx1ZXMpXG5cbiAgICAgICAgZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQgPSBuZXh0VmFsdWVzXG4gICAgICAgIHNldE1vZGFsVmFsdWVzKG5leHRWYWx1ZXMpXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgc2hvdWxkQXBwbHlQZW5kaW5nU2VjdGlvbkFmdGVyT3BlbihCb29sZWFuKGFnZW50VmFsdWVzLnZhbHVlcz8uaXNFZGl0aW5nKSwgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQpXG4gICAgICApIHtcbiAgICAgICAgc2V0U2VjdGlvbihwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCBhcyBBYm1TZWN0aW9uKVxuICAgICAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cblxuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldEFnZW50VmFsdWVzKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldEFnZW50VmFsdWVzIGFzIEV2ZW50TGlzdGVuZXIpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyB1c2VFZmZlY3QgdG8gaGFuZGxlIHRoZSBvdmVyZmxvdyBvZiB0aGUgYm9keSB3aGVuIHRoZSBtb2RhbCBpcyBvcGVuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB7IGJvZHkgfSA9IGRvY3VtZW50XG4gICAgaWYgKCFib2R5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxPdmVyZmxvdyA9IGJvZHkuc3R5bGUub3ZlcmZsb3dcbiAgICBib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbidcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBib2R5LnN0eWxlLm92ZXJmbG93ID0gb3JpZ2luYWxPdmVyZmxvd1xuICAgIH1cbiAgfSwgW2lzT3Blbl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVCZWZvcmVVbmxvYWQgPSAoZXZlbnQ6IEJlZm9yZVVubG9hZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoaGFzUGVuZGluZ0NoYW5nZXMoKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IHQoJ2NvbmZpcm1SZWxvYWRCcm93c2VyJylcbiAgICAgICAgcmV0dXJuIHQoJ2NvbmZpcm1SZWxvYWRCcm93c2VyJylcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgaGFuZGxlQmVmb3JlVW5sb2FkKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgaGFuZGxlQmVmb3JlVW5sb2FkKVxuICAgIH1cbiAgfSwgW2lzT3BlbiwgaGFzUGVuZGluZ0NoYW5nZXMsIHRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3NEZWxldGUpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnREZWxldGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3MoKVxuICAgICAgaWYgKHNob3VsZFNlbGVjdEFnZW50QWZ0ZXJEZWxldGUoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkLCBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSkge1xuICAgICAgICBzZWxlY3RGaXJzdEFnZW50KGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCBhcyBzdHJpbmcpXG4gICAgICB9XG4gICAgICByZW1vdmVBZ2VudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKVxuICAgICAgc2V0U2hvd01vZGFsRGVsZXRlKGZhbHNlKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgfSwgW3N1Y2Nlc3NEZWxldGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzdWNjZXNzQ3JlYXRlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXNob3VsZFJ1bkFibUNyZWF0ZVN1Y2Nlc3NIYW5kbGVyKHN1Y2Nlc3NDcmVhdGUuaWQsIGlzTG9hZGluZ0NyZWF0ZSwgYWdlbnRDcmVhdGVkUmVmLmN1cnJlbnQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBhZ2VudENyZWF0ZWRSZWYuY3VycmVudCA9IHN1Y2Nlc3NDcmVhdGUuaWRcbiAgICBjb25zdCBjcmVhdGVQbGFuID0gcmVzb2x2ZUFibUNyZWF0ZVN1Y2Nlc3NQbGFuKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQpXG4gICAgY29uc3QgeyBsaXN0QWdlbnQsIHRvZ2dsZUFnZW50IH0gPSByZXNvbHZlQWJtQ3JlYXRlRmF2b3JpdGVBZ2VudHMoXG4gICAgICBzdWNjZXNzQ3JlYXRlLFxuICAgICAgQm9vbGVhbihtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKVxuICAgIClcblxuICAgIGNvbnN0IGVucXVldWVDcmVhdGVGYXZvcml0ZSA9IChwcm9taXNlczogUHJvbWlzZTx1bmtub3duPltdKSA9PiB7XG4gICAgICBhZGRBZ2VudChsaXN0QWdlbnQpXG4gICAgICBpZiAoc2hvdWxkRW5xdWV1ZUFibUNyZWF0ZUZhdm9yaXRlVG9nZ2xlKHRvZ2dsZUFnZW50KSkge1xuICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgdG9nZ2xlQWdlbnQsXG4gICAgICAgICAgICAgICgpID0+IHJlc29sdmUoKSxcbiAgICAgICAgICAgICAgKCkgPT4gcmVqZWN0KClcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZVBsYW4gIT09ICdhY2Nlc3NPbmx5Jykge1xuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0gcmVzb2x2ZUFibUNyZWF0ZUFjY2Vzc1VwZGF0ZUNvbnRleHQobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlKVxuICAgICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8dW5rbm93bj5bXSA9IFtdXG4gICAgICBjb25zdCBrbm93bGVkZ2VIYW5kbGVyID0gcmVzb2x2ZUFibUNyZWF0ZUtub3dsZWRnZUhhbmRsZXIoY3JlYXRlUGxhbilcblxuICAgICAgaWYgKGtub3dsZWRnZUhhbmRsZXIgPT09ICdkZWxldGVBbmRDcmVhdGUnKSB7XG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyh7XG4gICAgICAgICAgICBmaWxlc1RvRGVsZXRlOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLFxuICAgICAgICAgICAgZmlsZXNUb0NyZWF0ZTogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCxcbiAgICAgICAgICAgIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9IGVsc2UgaWYgKGtub3dsZWRnZUhhbmRsZXIgPT09ICdkZWxldGVPbmx5Jykge1xuICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMoeyBmaWxlczogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSwgYWdlbnRJZDogc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpIH0pXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSBpZiAoa25vd2xlZGdlSGFuZGxlciA9PT0gJ3VwbG9hZE9ubHknKSB7XG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyh7IGZpbGVzOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLCBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCkgfSlcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2hvdWxkU3luY0FibUNsaWVudEFjY2Vzc09uQ3JlYXRlKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSkpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChoYW5kbGVBY2Nlc3NDbGllbnQoc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KSlcbiAgICAgIH1cblxuICAgICAgZW5xdWV1ZUNyZWF0ZUZhdm9yaXRlKHByb21pc2VzKVxuICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG5cbiAgICAgIGlmIChzaG91bGRSZXBlYXREZWxldGVLbm93bGVkZ2VzT25DcmVhdGUoY3JlYXRlUGxhbikpIHtcbiAgICAgICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyh7IGZpbGVzOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLCBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCkgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKHNob3VsZFNob3dQcm9jZXNzRmlsZXNGb3JDcmVhdGVQbGFuKGNyZWF0ZVBsYW4pKSB7XG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGFjY2Vzc09ubHlEZWNpc2lvbiA9IHJlc29sdmVBYm1DcmVhdGVBY2Nlc3NPbmx5RGVjaXNpb24oXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQsXG4gICAgICBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGVcbiAgICApXG4gICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0gYWNjZXNzT25seURlY2lzaW9uLm5leHRDb250ZXh0XG5cbiAgICBpZiAoc2hvdWxkSGFuZGxlQWJtQ3JlYXRlQWNjZXNzT25seUNsaWVudChhY2Nlc3NPbmx5RGVjaXNpb24pKSB7XG4gICAgICBoYW5kbGVBY2Nlc3NDbGllbnQoc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KVxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQgPSB0cnVlXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodG9nZ2xlQWdlbnQpIHtcbiAgICAgIGFkZEFnZW50KGxpc3RBZ2VudClcbiAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgdG9nZ2xlQWdlbnQsXG4gICAgICAgIHVwZGF0ZWRBZ2VudCA9PiB7XG4gICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdEZhdm9yaXRlLCB7IG9wdGlvbjogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlID8gJ2FkZCcgOiAncmVtb3ZlJyB9KVxuICAgICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgICAgc2VsZWN0QWdlbnQoeyAuLi5saXN0QWdlbnQsIGlzX2Zhdm9yaXRlOiB1cGRhdGVkQWdlbnQuaXNfZmF2b3JpdGUgfSlcbiAgICAgICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdEZhdm9yaXRlLCB7IG9wdGlvbjogJ2FkZCcgfSlcbiAgICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgICAgIHNlbGVjdEFnZW50KGxpc3RBZ2VudClcbiAgICAgICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICB9XG4gICAgICApXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgIGFkZEFnZW50KGxpc3RBZ2VudClcbiAgICBzZWxlY3RBZ2VudChsaXN0QWdlbnQpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgIGhhbmRsZUNsb3NlKClcbiAgfSwgW1xuICAgIGlzTG9hZGluZ0NyZWF0ZSxcbiAgICBzdWNjZXNzQ3JlYXRlLFxuICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2VzcyxcbiAgICB0LFxuICAgIGFkZEFnZW50LFxuICAgIHNlbGVjdEFnZW50LFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSxcbiAgICByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gICAgaGFuZGxlQ2xvc2UsXG4gICAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc3VjY2Vzc1VwZGF0ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgYWNjZXNzaWJpbGl0eUNoYW5nZWQgPSBoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpXG4gICAgY29uc3QgdXBkYXRlUGxhbiA9IHJlc29sdmVBYm1VcGRhdGVTdWNjZXNzUGxhbihhY3Rpb25zVG9GaWxlcy5jdXJyZW50LCBhY2Nlc3NpYmlsaXR5Q2hhbmdlZClcblxuICAgIGlmICh1cGRhdGVQbGFuICE9PSAnZ2VuZXJhbE9ubHknICYmIGFjY2Vzc2liaWxpdHlDaGFuZ2VkICYmIHVwZGF0ZVBsYW4gIT09ICdhY2Nlc3NPbmx5Jykge1xuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0gcmVzb2x2ZUFibVVwZGF0ZUFjY2Vzc1VwZGF0ZUNvbnRleHQoKVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVQbGFuID09PSAnZGVsZXRlQW5kQ3JlYXRlJyAmJiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICBjb25zdCBmaWxlc1RvRGVsZXRlID0gWy4uLmFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGVdXG4gICAgICBjb25zdCBmaWxlc1RvVXBsb2FkID0gWy4uLmFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWRdXG4gICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlID0gW11cbiAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQgPSBbXVxuXG4gICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgIGZpbGVzVG9EZWxldGUsXG4gICAgICAgICAgZmlsZXNUb0NyZWF0ZTogZmlsZXNUb1VwbG9hZCxcbiAgICAgICAgICBhZ2VudElkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4oc2hvdWxkSW5jbHVkZUFjY2Vzc2liaWxpdHlVcGRhdGVJbktub3dsZWRnZUJhdGNoKGFjY2Vzc2liaWxpdHlDaGFuZ2VkKVxuICAgICAgICAgID8gW2hhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXVxuICAgICAgICAgIDogW10pLFxuICAgICAgXSlcbiAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodXBkYXRlUGxhbiA9PT0gJ2RlbGV0ZU9ubHknICYmIG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgIGNvbnN0IGZpbGVzVG9EZWxldGUgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZV1cbiAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUgPSBbXVxuXG4gICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgIGZpbGVzOiBmaWxlc1RvRGVsZXRlLFxuICAgICAgICAgIGFnZW50SWQ6IG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihzaG91bGRJbmNsdWRlQWNjZXNzaWJpbGl0eVVwZGF0ZUluS25vd2xlZGdlQmF0Y2goYWNjZXNzaWJpbGl0eUNoYW5nZWQpXG4gICAgICAgICAgPyBbaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSldXG4gICAgICAgICAgOiBbXSksXG4gICAgICBdKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVBsYW4gPT09ICd1cGxvYWRPbmx5JyAmJiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICBjb25zdCBmaWxlc1RvVXBsb2FkID0gWy4uLmFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWRdXG4gICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkID0gW11cblxuICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzKHtcbiAgICAgICAgICBmaWxlczogZmlsZXNUb1VwbG9hZCxcbiAgICAgICAgICBhZ2VudElkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4oc2hvdWxkSW5jbHVkZUFjY2Vzc2liaWxpdHlVcGRhdGVJbktub3dsZWRnZUJhdGNoKGFjY2Vzc2liaWxpdHlDaGFuZ2VkKVxuICAgICAgICAgID8gW2hhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXVxuICAgICAgICAgIDogW10pLFxuICAgICAgXSlcbiAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodXBkYXRlUGxhbiA9PT0gJ2FjY2Vzc09ubHknKSB7XG4gICAgICBjb25zdCBhY2Nlc3NPbmx5Q29udGV4dCA9IHJlc29sdmVBYm1VcGRhdGVBY2Nlc3NPbmx5Q29udGV4dChhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQpXG4gICAgICBpZiAoYWNjZXNzT25seUNvbnRleHQpIHtcbiAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0gYWNjZXNzT25seUNvbnRleHRcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQgJiYgIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkKSB7XG4gICAgICAgIGhhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXG4gICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgc2hvdWxkRmluYWxpemVBYm1VcGRhdGVXaXRob3V0UGVuZGluZ1dvcmsoe1xuICAgICAgICBoYXNQZW5kaW5nRmlsZXM6IGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50LFxuICAgICAgICBpc1Nob3dQcm9jZXNzRmlsZXMsXG4gICAgICAgIHRvVXBsb2FkQ291bnQ6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoLFxuICAgICAgICBhY2Nlc3NIYXNBY3Rpb25GaWxlczogYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0FjdGlvbkZpbGVzLFxuICAgICAgICBzdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgICAgICBwcm9jZXNzRmlsZXNUaW1lZE91dDogcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYuY3VycmVudCxcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgdXBkYXRlQWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgIGlmIChzaG91bGRTeW5jU2VsZWN0ZWRBZ2VudEFmdGVyTXV0YXRpb24oY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkLCBzdWNjZXNzVXBkYXRlLmlkKSkge1xuICAgICAgICBzZWxlY3RBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgfVxuICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSgpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJykpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuICB9LCBbXG4gICAgc3VjY2Vzc1VwZGF0ZSxcbiAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLFxuICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2VzcyxcbiAgICB0LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSxcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGUsXG4gICAgaGFuZGxlQ2xvc2UsXG4gIF0pXG5cbiAgY29uc3QgaGFuZGxlUHJvY2Vzc0ZpbGVzVGltZW91dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNob3VsZFJ1bkFibVByb2Nlc3NGaWxlc1RpbWVvdXQoaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQsIGlzU2hvd1Byb2Nlc3NGaWxlcykpIHJldHVyblxuXG4gICAgLy8gQWwgY3VtcGxpcnNlIGVsIHRpbWVvdXQgYXN1bWltb3MgcXVlIGVsIGd1YXJkYWRvIGRlbCBhZ2VudGUgZnVlIGV4aXRvc29cbiAgICAvLyAoZWwgc2VydmVyIHJlc3BvbmRpw7MgT0spIHkgcXVlIGxvcyBhcmNoaXZvcyBzZSBlbnZpYXJvbiBjb3JyZWN0YW1lbnRlLlxuICAgIC8vIFNvbG8gcGVyZGltb3MgbGEgY29uZmlybWFjacOzbiBhc2luY3LDs25pY2EgZGVsIFdlYlNvY2tldCBzb2JyZSBzdVxuICAgIC8vIHByb2Nlc2FtaWVudG8uIENlcnJhbW9zIHRvZG8gbW9zdHJhbmRvIGVsIHNuYWNrYmFyIGRlIMOpeGl0byBxdWUgaHViaWVzZVxuICAgIC8vIGRpc3BhcmFkbyBlbCBmbHVqbyBub3JtYWwgZGUgw6l4aXRvLlxuXG4gICAgLy8gRnJlbm8gcGFyYSBxdWUgbG9zIHVzZUVmZmVjdCBkZSBwb3N0LWd1YXJkYWRvIG5vIHJlLWRpc3BhcmVuIHNuYWNrYmFyc1xuICAgIC8vIG8gY2llcnJlcyBkdXBsaWNhZG9zIGN1YW5kbyBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpIGxvcyBnYXRpbGxlLlxuICAgIHByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmLmN1cnJlbnQgPSB0cnVlXG5cbiAgICBpZiAobW9kYWxWYWx1ZXMuaXNFZGl0aW5nICYmIHN1Y2Nlc3NVcGRhdGUpIHtcbiAgICAgIHVwZGF0ZUFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICBpZiAoc2hvdWxkU3luY1NlbGVjdGVkQWdlbnRBZnRlck11dGF0aW9uKGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCwgc3VjY2Vzc1VwZGF0ZS5pZCkpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKSlcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KHJlc29sdmVBYm1Qcm9jZXNzRmlsZXNUaW1lb3V0U3VjY2Vzc0tleSh0cnVlKSkpXG4gICAgICByZXNldFN1Y2Nlc3NVcGRhdGUoKVxuICAgIH0gZWxzZSBpZiAoIW1vZGFsVmFsdWVzLmlzRWRpdGluZyAmJiBzdWNjZXNzQ3JlYXRlKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModChyZXNvbHZlQWJtUHJvY2Vzc0ZpbGVzVGltZW91dFN1Y2Nlc3NLZXkoZmFsc2UpKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgfVxuXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSgpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuXG4gICAgaGFuZGxlQ2xvc2UoKVxuICB9LCBbXG4gICAgaXNTaG93UHJvY2Vzc0ZpbGVzLFxuICAgIG1vZGFsVmFsdWVzLmlzRWRpdGluZyxcbiAgICBzdWNjZXNzVXBkYXRlLFxuICAgIHN1Y2Nlc3NDcmVhdGUsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2VzcyxcbiAgICB0LFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSxcbiAgICByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGhhbmRsZUNsb3NlLFxuICBdKVxuXG4gIGNvbnN0IHdlYlNvY2tldEZ1bmN0aW9uID0gKHsgbW9kZWxfZGF0YTogbW9kZWxEYXRhIH06IHsgbW9kZWxfZGF0YTogYW55IH0pID0+IHtcbiAgICBjb25zdCBmaWxlU3RhdHVzID0gbW9kZWxEYXRhXG4gICAgaWYgKHNob3VsZFByb2Nlc3NLbm93bGVkZ2VXc1N0YXR1cyhmaWxlU3RhdHVzLnN0YXR1cykpIHtcbiAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkS25vd2xlZGdlID0gYXBwbHlLbm93bGVkZ2VGaWxlU3RhdHVzVXBkYXRlKHByZXYua25vd2xlZGdlLCBmaWxlU3RhdHVzKVxuICAgICAgICBjb25zdCB1cGxvYWRPdXRjb21lID0gcmVzb2x2ZUtub3dsZWRnZVVwbG9hZE91dGNvbWUodXBkYXRlZEtub3dsZWRnZSlcbiAgICAgICAgY29uc3Qgd3NFZmZlY3RzID0gcmVzb2x2ZUtub3dsZWRnZVdzQ29tcGxldGlvbkVmZmVjdHMoXG4gICAgICAgICAgdXBsb2FkT3V0Y29tZSxcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQsXG4gICAgICAgICAgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50LFxuICAgICAgICAgIGZpbGVzRmluaXNoZWRSZWYuY3VycmVudFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKHdzRWZmZWN0cz8uY2xvc2VQcm9jZXNzRmlsZXMpIHtcbiAgICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKGZhbHNlKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHVwbG9hZE91dGNvbWUgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQocmVzb2x2ZUFibUtub3dsZWRnZUVycm9yTWVzc2FnZUtleShtb2RhbFZhbHVlcy5pc0VkaXRpbmcpKSlcbiAgICAgICAgfSBlbHNlIGlmICh3c0VmZmVjdHM/LmluY3JlbWVudEZpbGVzUHJvY2Vzc2VkKSB7XG4gICAgICAgICAgaWYgKHdzRWZmZWN0cy5tYXJrRmlsZXNGaW5pc2hlZEZvckNyZWF0ZSkge1xuICAgICAgICAgICAgZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRGaWxlc1Byb2Nlc3NlZChwcmV2Q291bnQgPT4gcHJldkNvdW50ICsgMSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAga25vd2xlZGdlOiB1cGRhdGVkS25vd2xlZGdlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUgJiYgIWlzTG9hZGluZ0tub3dsZWRnZSAmJiAhZXJyb3JLbm93bGVkZ2UpIHtcbiAgICAgIC8vIFNvbG8gY2VycmFyIHNpIE5PIGhheSBhcmNoaXZvcyBzaWVuZG8gcHJvY2VzYWRvc1xuICAgICAgaWYgKFxuICAgICAgICBzaG91bGRCbG9ja0tub3dsZWRnZURlbGV0ZVN1Y2Nlc3NDbG9zZSh7XG4gICAgICAgICAgaGFzUGVuZGluZ0ZpbGVzOiBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCxcbiAgICAgICAgICBpc1Nob3dQcm9jZXNzRmlsZXMsXG4gICAgICAgICAgdG9VcGxvYWRDb3VudDogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgsXG4gICAgICAgICAgcHJvY2Vzc0ZpbGVzVGltZWRPdXQ6IHByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmLmN1cnJlbnQsXG4gICAgICAgIH0pXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG4gICAgaWYgKGVycm9yS25vd2xlZGdlKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQocmVzb2x2ZUFibUtub3dsZWRnZUVycm9yTWVzc2FnZUtleShtb2RhbFZhbHVlcy5pc0VkaXRpbmcpKSlcbiAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgfVxuICB9LCBbc3VjY2Vzc0tub3dsZWRnZURlbGV0ZSwgaXNMb2FkaW5nS25vd2xlZGdlLCBlcnJvcktub3dsZWRnZSwgaXNTaG93UHJvY2Vzc0ZpbGVzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnRcblxuICAgIC8vIFNpIGhheSBhcmNoaXZvcyBzaWVuZG8gcHJvY2VzYWRvcywgZXNwZXJhciBhIHF1ZSB0ZXJtaW5lblxuICAgIGlmIChzaG91bGREZWZlckFjY2Vzc1VwZGF0ZVVudGlsRmlsZXNDb21wbGV0ZShjb250ZXh0LCBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCwgaXNTaG93UHJvY2Vzc0ZpbGVzKSkge1xuICAgICAgLy8gU2kgc3VjY2Vzc1VwZGF0ZUFjY2VzcyBlc3TDoSBhY3Rpdm8sIG1hcmNhciBjb21vIG1hbmVqYWRvIHBlcm8gTk8gcmVzZXRlYXIgaGFzdGEgcXVlIHRlcm1pbmVuIGxvcyBhcmNoaXZvc1xuICAgICAgaWYgKHN1Y2Nlc3NVcGRhdGVBY2Nlc3MgJiYgIWFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCkge1xuICAgICAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBTaSB5YSBmdWUgbWFuZWphZG8geSBubyBoYXkgYXJjaGl2b3MgcGVuZGllbnRlcywgZWplY3V0YXIgZWwgY2llcnJlXG4gICAgaWYgKGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCAmJiBjb250ZXh0Lmhhc0FjdGlvbkZpbGVzICYmIGNvbnRleHQub3BlcmF0aW9uVHlwZSA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgaWYgKHN1Y2Nlc3NVcGRhdGVBY2Nlc3MpIHtcbiAgICAgICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzKClcbiAgICAgIH1cbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IGNyZWF0ZVJlc2V0QWJtQWNjZXNzVXBkYXRlQ29udGV4dCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXN1Y2Nlc3NVcGRhdGVBY2Nlc3MpIHtcbiAgICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzKClcblxuICAgIGlmIChjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnKSB7XG4gICAgICAvLyBTaSBoYXkgYXJjaGl2b3MsIGVsIGFnZW50ZSB5YSBmdWUgYWdyZWdhZG8geSBlbCB0b2dnbGUgeWEgc2UgaGl6byBlbiBzdWNjZXNzQ3JlYXRlXG4gICAgICAvLyBTb2xvIG5lY2VzaXRhbW9zIGNlcnJhciBlbCBtb2RhbFxuICAgICAgaWYgKGNvbnRleHQuaGFzQWN0aW9uRmlsZXMpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gU2kgZWwgYWdlbnRlIGZ1ZSBjcmVhZG8gY29uIGZhdm9yaXRvLCBuZWNlc2l0YW1vcyBvcmRlbmFyIGRlc3B1w6lzIGRlIGFncmVnYXJsb1xuICAgICAgY29uc3QgeyBsaXN0QWdlbnQsIHRvZ2dsZUFnZW50IH0gPSByZXNvbHZlQWJtQ3JlYXRlRmF2b3JpdGVBZ2VudHMoXG4gICAgICAgIHN1Y2Nlc3NDcmVhdGUsXG4gICAgICAgIEJvb2xlYW4obW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSlcbiAgICAgIClcblxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIGFkZEFnZW50KGxpc3RBZ2VudClcbiAgICAgIHNlbGVjdEFnZW50KGxpc3RBZ2VudClcblxuICAgICAgaWYgKHRvZ2dsZUFnZW50KSB7XG4gICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgIHRvZ2dsZUFnZW50LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIC8vIENlcnJhciBkZXNwdcOpcyBkZSBxdWUgZWwgdG9nZ2xlIGNvbXBsZXRlIHkgYWN0dWFsaWNlIGVsIGVzdGFkb1xuICAgICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICd1cGRhdGUnKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgdXBkYXRlQWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQgPT09IHN1Y2Nlc3NVcGRhdGUuaWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgIH1cbiAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSgpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJykpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuXG4gICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0gY3JlYXRlUmVzZXRBYm1BY2Nlc3NVcGRhdGVDb250ZXh0KClcbiAgfSwgW3N1Y2Nlc3NVcGRhdGVBY2Nlc3MsIGZpbGVzUHJvY2Vzc2VkXSlcblxuICAvLyB1c2VFZmZlY3QgcGFyYSBtYW5lamFyIGVsIGNpZXJyZSBkZWwgbW9kYWwgY3VhbmRvIHRlcm1pbmFuIGxvcyBhcmNoaXZvcyBlbiBjcmVhY2nDs24gc2luIGFjY2VzaWJpbGlkYWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50XG5cbiAgICBpZiAoXG4gICAgICBzaG91bGRDbG9zZUNyZWF0ZUFmdGVyS25vd2xlZGdlV2l0aG91dEFjY2Vzcyh7XG4gICAgICAgIG9wZXJhdGlvblR5cGU6IGNvbnRleHQub3BlcmF0aW9uVHlwZSxcbiAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGNvbnRleHQuaGFzQWN0aW9uRmlsZXMsXG4gICAgICAgIGZpbGVzRmluaXNoZWQ6IGZpbGVzRmluaXNoZWRSZWYuY3VycmVudCxcbiAgICAgICAgaGFzU3VjY2Vzc0NyZWF0ZTogQm9vbGVhbihzdWNjZXNzQ3JlYXRlKSxcbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzOiBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCxcbiAgICAgICAgaXNTaG93UHJvY2Vzc0ZpbGVzLFxuICAgICAgfSlcbiAgICApIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IGNyZWF0ZVJlc2V0QWJtQWNjZXNzVXBkYXRlQ29udGV4dCgpXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgc2hvdWxkQ2xvc2VDcmVhdGVBZnRlcktub3dsZWRnZVdpdGhBY2Nlc3Moe1xuICAgICAgICBvcGVyYXRpb25UeXBlOiBjb250ZXh0Lm9wZXJhdGlvblR5cGUsXG4gICAgICAgIGhhc0FjdGlvbkZpbGVzOiBjb250ZXh0Lmhhc0FjdGlvbkZpbGVzLFxuICAgICAgICBhY2Nlc3NIYW5kbGVkOiBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQsXG4gICAgICAgIGhhc1N1Y2Nlc3NDcmVhdGU6IEJvb2xlYW4oc3VjY2Vzc0NyZWF0ZSksXG4gICAgICAgIGhhc1BlbmRpbmdGaWxlczogaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzU2hvd1Byb2Nlc3NGaWxlcyxcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgIGlmIChzaG91bGRSZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3NPbkNyZWF0ZUNsb3NlKEJvb2xlYW4oc3VjY2Vzc1VwZGF0ZUFjY2VzcykpKSB7XG4gICAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG4gICAgICB9XG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSBjcmVhdGVSZXNldEFibUFjY2Vzc1VwZGF0ZUNvbnRleHQoKVxuICAgIH1cbiAgfSwgW1xuICAgIGZpbGVzUHJvY2Vzc2VkLFxuICAgIHN1Y2Nlc3NDcmVhdGUsXG4gICAgc3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBpc1Nob3dQcm9jZXNzRmlsZXMsXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzLFxuICAgIHQsXG4gICAgcmVzZXRTdWNjZXNzQ3JlYXRlLFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBoYW5kbGVDbG9zZSxcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1Nob3dQcm9jZXNzRmlsZXMpIHtcbiAgICAgIGNvbnN0IGNoYW5uZWwgPSByZXNvbHZlQWJtS25vd2xlZGdlV3NDaGFubmVsKGFnZW50QnlJZCwgc3VjY2Vzc0NyZWF0ZT8uaWQgPz8gbnVsbClcbiAgICAgIGlmICghY2hhbm5lbCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICgkX3NjKSB7XG4gICAgICAgIGlmIChpc1N1YnNjcmliZWQpIHtcbiAgICAgICAgICAkX3NjPy5zdWJzY3JpYmVIYW5kbGVyKGNoYW5uZWwsIHdlYlNvY2tldEZ1bmN0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG1vZGVsRGF0YSA9IHtcbiAgICAgICAgICAgIG1vZGVsX2hhc2g6IGNoYW5uZWwsXG4gICAgICAgICAgICBhY3Rpb246ICRfc2M/LmFjdGlvblR5cGU/LlNVQlNDUklCRSxcbiAgICAgICAgICB9XG4gICAgICAgICAgJF9zYz8udXBkYXRlQ29ubmVjdGlvbk1vZGVsKG1vZGVsRGF0YSwgY2hhbm5lbCwgdXNlciwgdXNlciwgJF9zYy5jaGFubmVsVHlwZT8uTU9ERUxfQ0hBTk5FTClcbiAgICAgICAgICBzZXRJc1N1YnNjcmliZWQodHJ1ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzU2hvd1Byb2Nlc3NGaWxlcywgaXNTdWJzY3JpYmVkLCAkX3NjLCBhZ2VudEJ5SWQsIHN1Y2Nlc3NDcmVhdGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4gfHwgIWFnZW50TW9kZWxzLmxlbmd0aCkgcmV0dXJuXG4gICAgaWYgKGFnZW50TG9hZGluZyAmJiAhcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50KSByZXR1cm5cblxuICAgIGNvbnN0IGFwcGx5RWRpdGluZ0FnZW50ID0gYXN5bmMgKHNvdXJjZTogYW55KSA9PiB7XG4gICAgICBpZiAoIWNhbkFwcGx5QWJtRWRpdGluZ0FnZW50RGV0YWlsKHNvdXJjZSwgQm9vbGVhbih3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykpKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnZXJyb3JBY2Nlc3NEZW5pZWQnKSlcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgIH0sIDMwMDApXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgY29uc3QgYWdlbnRJZCA9IHNvdXJjZS5pZCAhPSBudWxsID8gU3RyaW5nKHNvdXJjZS5pZCkgOiBudWxsXG4gICAgICBpZiAoYWdlbnRJZCAmJiBoeWRyYXRpbmdBZ2VudElkUmVmLmN1cnJlbnQgPT09IGFnZW50SWQpIHJldHVybiB0cnVlXG4gICAgICBoeWRyYXRpbmdBZ2VudElkUmVmLmN1cnJlbnQgPSBhZ2VudElkXG5cbiAgICAgIGxldCBhZ2VudFZhbHVlc1RvU2V0ID0gYnVpbGRFZGl0aW5nTW9kYWxWYWx1ZXNGcm9tQWdlbnREZXRhaWwoc291cmNlLCBhZ2VudE1vZGVscywgbW9kYWxWYWx1ZXMpXG4gICAgICAvLyBLZWVwIHRoZSBsb2FkaW5nIHZpZXcgdW50aWwgYm90aCB0aGUgYWdlbnQgYW5kIGl0cyBjb25uZWN0b3Igc3RhdHVzIGFyZSByZWFkeS5cbiAgICAgIGlmIChzaG91bGRIeWRyYXRlQWdlbnRDb25uZWN0b3JzT25FZGl0KGFnZW50SWQsIGhhc01haWFFeHRlcm5hbENvbm5lY3RvcnNBY2Nlc3MoKSkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBjb25uZWN0b3JzID0gYXdhaXQgZ2V0QWdlbnRDb25uZWN0b3JzKGFnZW50SWQgYXMgc3RyaW5nKVxuICAgICAgICAgIGFnZW50VmFsdWVzVG9TZXQgPSB7XG4gICAgICAgICAgICAuLi5hZ2VudFZhbHVlc1RvU2V0LFxuICAgICAgICAgICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgICAgICAgICAuLi5hZ2VudFZhbHVlc1RvU2V0LmFjY2Vzc2liaWxpdHksXG4gICAgICAgICAgICAgIHNlbGVjdGVkQ29ubmVjdG9yczogZGVyaXZlQXNzaWduZWRDb25uZWN0b3JTbHVncyhjb25uZWN0b3JzKSxcbiAgICAgICAgICAgICAgY29ubmVjdG9yU3RhdHVzZXM6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgICAgICBjb25uZWN0b3JzLm1hcChjb25uZWN0b3IgPT4gW1xuICAgICAgICAgICAgICAgICAgY29ubmVjdG9yLnNsdWcsXG4gICAgICAgICAgICAgICAgICBjb25uZWN0b3IuY29ubmVjdGlvbl9zdGF0dXMgfHwgKGNvbm5lY3Rvci51c2VyX2F1dGhvcml6ZWQgPyAnb2snIDogJ25lZWRzX2F0dGVudGlvbicpLFxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBhZ2VudCBjb25uZWN0b3JzOicsIGVycm9yKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaHlkcmF0aW5nQWdlbnRJZFJlZi5jdXJyZW50ICE9PSBhZ2VudElkKSByZXR1cm4gZmFsc2VcbiAgICAgIGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50ID0gYWdlbnRWYWx1ZXNUb1NldFxuICAgICAgc2V0TW9kYWxWYWx1ZXMoYWdlbnRWYWx1ZXNUb1NldClcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgIGlmIChwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCkge1xuICAgICAgICBzZXRTZWN0aW9uKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50KVxuICAgICAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgcHJlZmV0Y2hlZCA9IHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudFxuICAgIGlmIChwcmVmZXRjaGVkKSB7XG4gICAgICBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhcHBseUVkaXRpbmdBZ2VudChwcmVmZXRjaGVkKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGFnZW50QnlJZCAmJiAhYWdlbnRMb2FkaW5nICYmIGFnZW50TW9kZWxzLmxlbmd0aCkge1xuICAgICAgYXBwbHlFZGl0aW5nQWdlbnQoYWdlbnRCeUlkKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgc2hvdWxkU2V0RGVmYXVsdEFpTW9kZWxGb3JOZXdBZ2VudCh7XG4gICAgICAgIGlzTG9hZGluZyxcbiAgICAgICAgYWdlbnRMb2FkaW5nLFxuICAgICAgICBoYXNBZ2VudEJ5SWQ6IEJvb2xlYW4oYWdlbnRCeUlkKSxcbiAgICAgICAgaXNFZGl0aW5nOiBtb2RhbFZhbHVlcy5pc0VkaXRpbmcsXG4gICAgICB9KVxuICAgICkge1xuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgIGFpTW9kZWw6IGFnZW50TW9kZWxzWzBdLFxuICAgICAgICB9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYWdlbnRCeUlkLCBpc09wZW4sIGlzTG9hZGluZywgYWdlbnRMb2FkaW5nLCBhZ2VudE1vZGVscz8ubGVuZ3RoLCBtb2RhbFZhbHVlcy5pc0VkaXRpbmcsIHRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVycm9yR2V0QWdlbnRCeUlkKSB7XG4gICAgICBpZiAoaXNBYm1BY2Nlc3NEZW5pZWRFcnJvcihlcnJvckdldEFnZW50QnlJZCkpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdlcnJvckFjY2Vzc0RlbmllZCcpKVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgIH0sIDMwMDApXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcihlcnJvckdldEFnZW50QnlJZClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9LCAzMDAwKVxuICAgIH1cbiAgfSwgW2Vycm9yR2V0QWdlbnRCeUlkXSlcblxuICBjb25zdCBzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGhhc0luYWN0aXZlQWNjZXNzaWJpbGl0eUNsaWVudHMobW9kYWxWYWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmNsaWVudHMpLFxuICAgIFttb2RhbFZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY2xpZW50c11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUZhdm9yaXRlID0gKCkgPT4ge1xuICAgIGlmIChtb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaWQpIHtcbiAgICAgIC8vIEV4aXN0aW5nIGFnZW50XG4gICAgICB0b2dnbGVGYXZvcml0ZShcbiAgICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCxcbiAgICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgICAgIGlzX2Zhdm9yaXRlOiB1cGRhdGVkQWdlbnQuaXNfZmF2b3JpdGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pKVxuICAgICAgICAgIC8vIEFjdHVhbGl6YXIgZWwgZXN0YWRvIGRlIGFnZW50ZXMgeSBvcmRlbmFyIGN1YW5kbyBzZSBoYWNlIGRlc2RlIGVsIG1vZGFsIEFCTVxuICAgICAgICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUodXBkYXRlZEFnZW50LCB0cnVlKVxuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRGYXZvcml0ZSwge1xuICAgICAgICAgICAgb3B0aW9uOiB1cGRhdGVkQWdlbnQuaXNfZmF2b3JpdGUgPyAnYWRkJyA6ICdyZW1vdmUnLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgbW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENyZWF0ZSBuZXcgYWdlbnRcbiAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgIC4uLnByZXYuZ2VuZXJhbCxcbiAgICAgICAgICBpc19mYXZvcml0ZTogcmVzb2x2ZUFibURyYWZ0RmF2b3JpdGVWYWx1ZShwcmV2LmdlbmVyYWwuaXNfZmF2b3JpdGUpLFxuICAgICAgICB9LFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgaWYgKCFzZWxlY3RvcikgcmV0dXJuIG51bGxcblxuICBpZiAoIWlzT3BlbiB8fCAhY2FuUmVuZGVyQWJtQWdlbnRNb2RhbCh1c2VyUGVybWlzc2lvbnMpKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPEJhY2tkcm9wIHpJbmRleD17YWJtQWdlbnRNb2RhbFpJbmRleH0gb25DbGljaz17aGFuZGxlQmFja2Ryb3BDbGlja30+XG4gICAgICA8U0NBQU1XcmFwcGVyIHJlZj17bW9kYWxSZWZ9IHRhYkluZGV4PXstMX0+XG4gICAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgPFNDQUFNV3JhcHBlclNwaW5uZXI+XG4gICAgICAgICAgICA8U0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxTcGlubmVyTG90dGllIHNpemU9XCI4MHB4XCIgY29sb3I9XCJwcmltYXJ5XCIgLz5cbiAgICAgICAgICAgIDwvU0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQ+XG4gICAgICAgICAgPC9TQ0FBTVdyYXBwZXJTcGlubmVyPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7c2hvdWxkU2hvd0FibUxvYWRlckZpbGVzKGlzU2hvd1Byb2Nlc3NGaWxlcywgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQpID8gKFxuICAgICAgICAgICAgICA8QWJtTG9hZGVyRmlsZXNcbiAgICAgICAgICAgICAgICBhdHRhY2htZW50cz17bW9kYWxWYWx1ZXMua25vd2xlZGdlfVxuICAgICAgICAgICAgICAgIGxhYmVsPXt0KHJlc29sdmVBYm1Qcm9jZXNzaW5nS25vd2xlZGdlTGFiZWxLZXkobW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSl9XG4gICAgICAgICAgICAgICAgb25UaW1lb3V0PXtoYW5kbGVQcm9jZXNzRmlsZXNUaW1lb3V0fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJMZWZ0PlxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17dChyZXNvbHZlQWJtRmF2b3JpdGVUb29sdGlwS2V5KEJvb2xlYW4obW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlKSkpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyRmF2b3JpdGUgb25DbGljaz17aGFuZGxlVG9nZ2xlRmF2b3JpdGV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezIwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezIwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17bW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlID8gJyNGRkM2MjQnIDogJyNhNmE2YTYnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPXttb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGUgPyAnI0ZGQzYyNCcgOiAnbm9uZSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17bW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlID8gJycgOiAnc3Rhci1mYXZvcml0ZS1pY29uJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlckZhdm9yaXRlPlxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlclRpdGxlPnt0KHJlc29sdmVBYm1Nb2RhbFRpdGxlS2V5KEJvb2xlYW4obW9kYWxWYWx1ZXM/LmlzRWRpdGluZykpKX08L1NDQUFNSGVhZGVyVGl0bGU+XG4gICAgICAgICAgICAgICAgICA8L1NDQUFNSGVhZGVyTGVmdD5cbiAgICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlckNsb3NlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY2FuY2VsTW9kYWwpXG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2hvdWxkRGlzYWJsZUFibUhlYWRlckNsb3NlKFxuICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdLbm93bGVkZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nQ3JlYXRlLFxuICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VwZGF0ZUFjY2Vzc1xuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjYTZhNmE2XCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlckNsb3NlQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvU0NBQU1IZWFkZXI+XG4gICAgICAgICAgICAgICAgPFNDQUFNQ29udGVudCBoYXNTY3JvbGw9e3NlY3Rpb24gIT09ICdrbm93bGVkZ2UnfT5cbiAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXI+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdnZW5lcmFsJ31cbiAgICAgICAgICAgICAgICAgICAgICAkaW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VjdGlvbkNoYW5nZSgnZ2VuZXJhbCcpfVxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWJtLWFnZW50LW1vZGFsLWdlbmVyYWxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPENhdGVnb3J5XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17YCR7c2VjdGlvbiA9PT0gJ2dlbmVyYWwnID8gJ3JnYmEoNjMsIDYzLCA2MywgMSknIDogJ3JnYmEoMTY2LCAxNjYsIDE2NiwgMSknfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1UaXRsZSBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2dlbmVyYWwnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdnZW5lcmFsU2VjdGlvbi50aXRsZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2tub3dsZWRnZSd9XG4gICAgICAgICAgICAgICAgICAgICAgJGluZGV4PXsxfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlY3Rpb25DaGFuZ2UoJ2tub3dsZWRnZScpfVxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWJtLWFnZW50LW1vZGFsLWtub3dsZWRnZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8QnJhaW5JY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17YCR7c2VjdGlvbiA9PT0gJ2tub3dsZWRnZScgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAna25vd2xlZGdlJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgna25vd2xlZGdlU2VjdGlvbi50aXRsZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2FjY2Vzc2liaWxpdHknfVxuICAgICAgICAgICAgICAgICAgICAgICRpbmRleD17Mn1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWN0aW9uQ2hhbmdlKCdhY2Nlc3NpYmlsaXR5Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhYm0tYWdlbnQtbW9kYWwtYWNjZXNzaWJpbGl0eVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8QWNjZXNzaWJpbGl0eUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtgJHtzZWN0aW9uID09PSAnYWNjZXNzaWJpbGl0eScgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnYWNjZXNzaWJpbGl0eSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLnRpdGxlVGFiJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAge3Nob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY2xpZW50c0Vycm9yJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtRXJyb3I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IGNvbG9yPVwiI0M3MDUwNVwiIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1FcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG4gICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhcj5cbiAgICAgICAgICAgICAgICAgIHtTZWN0aW9uQnlLZXlbc2VjdGlvbl0oe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IG1vZGFsVmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogaGFuZGxlU2V0QWdlbnRWYWx1ZXNCeUtleXMsXG4gICAgICAgICAgICAgICAgICAgIGFnZW50TW9kZWxzLFxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdLbm93bGVkZ2U6IFtdLFxuICAgICAgICAgICAgICAgICAgICBuZXdLbm93bGVkZ2U6IFtdLFxuICAgICAgICAgICAgICAgICAgICBvblJlbW92ZUV4aXN0aW5nS25vd2xlZGdlOiAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAgICAgb25SZW1vdmVOZXdLbm93bGVkZ2U6ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgICAgICBvbkZpbGVFcnJvckNoYW5nZTogc2V0SGFzRmlsZUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleCxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvU0NBQU1Db250ZW50PlxuICAgICAgICAgICAgICAgIDxTQ0FBTUZvb3RlciBpc0VkaXRpbmc9eyEhbW9kYWxWYWx1ZXM/LmlzRWRpdGluZyAmJiAhIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlfT5cbiAgICAgICAgICAgICAgICAgIHshIW1vZGFsVmFsdWVzPy5pc0VkaXRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgISF1c2VyUGVybWlzc2lvbnM/LmRlbGV0ZSAmJlxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNRGVsZXRlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5XaXRoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd01vZGFsRGVsZXRlKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzaG91bGREaXNhYmxlQWJtSGVhZGVyQ2xvc2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0tub3dsZWRnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdDcmVhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXBkYXRlQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxXcmFwcGVyQ2VudGVySWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHJhc2ggY29sb3I9XCIjMDhjXCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdkZWxldGVBZ2VudCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1dyYXBwZXJDZW50ZXJJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNRGVsZXRlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogJzI0cHgnIH19PlxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1TYXZlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZD17aXNBYm1TYXZlRGlzYWJsZWQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBtb2RhbFZhbHVlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw6IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUFjdGlvbnM6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdLbm93bGVkZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdDcmVhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVcGRhdGVBY2Nlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNGaWxlRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uKG51bGwsICdjcmVhdGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0FibVNhdmVEaXNhYmxlZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogbW9kYWxWYWx1ZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw6IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlQWN0aW9uczogYWN0aW9uc1RvRmlsZXMuY3VycmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdLbm93bGVkZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0NyZWF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXBkYXRlQWNjZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNGaWxlRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge21vZGFsVmFsdWVzLmlzRWRpdGluZyA/IHQoJ3NhdmVDaGFuZ2VzJykgOiB0KCdjcmVhdGVBZ2VudExhYmVsQnV0dG9uJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNhdmVCdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L1NDQUFNRm9vdGVyPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1NDQUFNV3JhcHBlcj5cbiAgICAgIHtzaG93TW9kYWxEZWxldGUgJiYgKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dNb2RhbERlbGV0ZShmYWxzZSl9XG4gICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb246IChwcm9wczogYW55KSA9PiBoYW5kbGVDb25maXJtQWN0aW9uKHByb3BzLCAnZGVsZXRlJyksXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjaGF0PXt7IHRpdGxlOiBtb2RhbFZhbHVlcy5nZW5lcmFsLm5hbWUsIGlkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkIH19XG4gICAgICAgICAgYWN0aW9uPVwiYWdlbnRcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L0JhY2tkcm9wPixcbiAgICBzZWxlY3RvclxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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
|