@projectcor/maia-components 2.50.0 → 2.50.1-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/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 +14 -7
- package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +641 -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 +139 -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 +275 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +196 -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/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 +60 -22
- package/lib/hooks/useFrequentlyUsedActions.spec.js +135 -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 +56 -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 +74 -1
- package/lib/utils/hoursPlannerQuickActionType.spec.js +64 -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
|
@@ -3,12 +3,14 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
|
3
3
|
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
4
4
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
5
5
|
import { useEffect, useLayoutEffect, useRef, useState, useCallback, useMemo } from 'react';
|
|
6
|
+
// flushSync intencional: el contexto debe quedar limpio antes de que onStartChat lo lea
|
|
7
|
+
// react-doctor-disable-next-line react-doctor/no-flush-sync
|
|
6
8
|
import { flushSync } from 'react-dom';
|
|
7
9
|
import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
|
|
8
10
|
import { ListChecklist } from '@projectcor/icons/lib/components/ListChecklist';
|
|
9
11
|
import { useT } from '../../../hooks/useT';
|
|
10
12
|
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
11
|
-
import { SCCAIHomeContainer, SCCAIHomeContent, SCCAIHomeContentInner, SCCAIHomeGradientTop, SCCAIHomeGradientBottom, SCCAIHomeHeader, SCCAIHomeGreeting, SCCAIHomeAgentInfoContainer, SCCAIHomeAgentInfo, SCCAIHomeProjectSummary, SCCAIHomeProjectSummaryContent, SCCAIHomeProjectSummaryTitle, SCCAIHomeProjectSummaryDescription, SCCAHWrapperSummaryProject, SCCAIHomeIntroduction, SCCAIHomeCreatedByContainer, SCCAIHomeCreatedByText, SCCAIHomeCreatedByTextName, SCCAIHomeIconContainer, SCCAIHomeLogoWrapper, SCCAIHomeMaiaHeaderStack, SCCAIHomeTitle, SCCAIHomeTitleBlock, SCCAIHomeSubtitle, SCCAIHomeDynamicSection, SCCAIHomeRecentContexts, SCCAIHomeRecentContextsList, SCCAIHomeRecentContextsSectionHeader, SCCAIHomeRecentContextsSectionTitle, SCCAIHomeRecentContextsSectionSubtitle, SCCAIHomeRecentContextPill, SCCAIHomeRecentContextPillIcon, SCCAIHomeRecentContextPillText, SCCAIHomeRecentContextPillSkeleton, MAIA_HEADER_COLLABORATOR_HOME_CONTENT_WIDTH_PX } from './styles';
|
|
13
|
+
import { SCCAIHomeContainer, SCCAIHomeScroll, SCCAIHomeContent, SCCAIHomeContentInner, SCCAIHomeGradientTop, SCCAIHomeGradientBottom, SCCAIHomeHeader, SCCAIHomeGreeting, SCCAIHomeAgentInfoContainer, SCCAIHomeAgentInfo, SCCAIHomeProjectSummary, SCCAIHomeProjectSummaryContent, SCCAIHomeProjectSummaryTitle, SCCAIHomeProjectSummaryDescription, SCCAHWrapperSummaryProject, SCCAIHomeIntroduction, SCCAIHomeCreatedByContainer, SCCAIHomeCreatedByText, SCCAIHomeCreatedByTextName, SCCAIHomeIconContainer, SCCAIHomeLogoWrapper, SCCAIHomeMaiaHeaderStack, SCCAIHomeTitle, SCCAIHomeTitleBlock, SCCAIHomeSubtitle, SCCAIHomeDynamicSection, SCCAIHomeRecentContexts, SCCAIHomeRecentContextsList, SCCAIHomeRecentContextsSectionHeader, SCCAIHomeRecentContextsSectionTitle, SCCAIHomeRecentContextsSectionSubtitle, SCCAIHomeRecentContextPill, SCCAIHomeRecentContextPillIcon, SCCAIHomeRecentContextPillText, SCCAIHomeRecentContextPillSkeleton, MAIA_HEADER_COLLABORATOR_HOME_CONTENT_WIDTH_PX } from './styles';
|
|
12
14
|
import { useGlobalContext } from '../../../context/global-context';
|
|
13
15
|
import { useUser, isCollaboratorRole, isManagerRole } from '../../../context/cor-user';
|
|
14
16
|
import { useResizeListener } from '../../../hooks/useResize';
|
|
@@ -210,6 +212,12 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
210
212
|
var _useFrequentlyUsedAct3 = useFrequentlyUsedActions(isHeaderManagerHoursHome ? agent === null || agent === void 0 ? void 0 : agent.id : undefined, 'home_with_hours'),
|
|
211
213
|
managerHomeFuas = _useFrequentlyUsedAct3.actions,
|
|
212
214
|
managerHomeFuasLoading = _useFrequentlyUsedAct3.loading;
|
|
215
|
+
// A11: my-day + should-review CTAs only for collaborator (role_id=4) + fullscreen header home.
|
|
216
|
+
// Both FUAs share section=home_collaborator (order 1 my-day / order 2 should-review).
|
|
217
|
+
var shouldFetchCollaboratorFullscreenFuas = Boolean(expanded && isCollaboratorRole(user.role_id) && isHeaderHome);
|
|
218
|
+
var _useFrequentlyUsedAct4 = useFrequentlyUsedActions(shouldFetchCollaboratorFullscreenFuas ? agent === null || agent === void 0 ? void 0 : agent.id : undefined, 'home_collaborator'),
|
|
219
|
+
collaboratorFullscreenFuas = _useFrequentlyUsedAct4.actions,
|
|
220
|
+
collaboratorFullscreenFuasLoading = _useFrequentlyUsedAct4.loading;
|
|
213
221
|
var headerHoursFuas = useMemo(function () {
|
|
214
222
|
if (isHeaderManagerHoursHome) return sortManagerHoursHomeFuas(managerHomeFuas);
|
|
215
223
|
return collaboratorPlannerFuas;
|
|
@@ -288,13 +296,16 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
288
296
|
headerHoursFuasCount: headerHoursFuas.length
|
|
289
297
|
}),
|
|
290
298
|
shouldShowPlannerFuas = _resolvePlannerFuasVi.shouldShowPlannerFuas;
|
|
299
|
+
var shouldShowCollaboratorFullscreenFuasLoading = shouldFetchCollaboratorFullscreenFuas && collaboratorFullscreenFuasLoading && collaboratorFullscreenFuas.length === 0;
|
|
300
|
+
var shouldShowCollaboratorFullscreenFuasContent = shouldFetchCollaboratorFullscreenFuas && collaboratorFullscreenFuas.length > 0;
|
|
301
|
+
var shouldShowCollaboratorFullscreenFuas = shouldShowCollaboratorFullscreenFuasLoading || shouldShowCollaboratorFullscreenFuasContent;
|
|
291
302
|
var showProjectSummaryCard = showProjectSummary && (agent === null || agent === void 0 ? void 0 : agent.entity) === 'project';
|
|
292
303
|
var showRecentContextsBlock = resolveShowRecentContextsBlock(isRecentContextsStep, recentContextsLoading, recentContexts.length);
|
|
293
304
|
var _resolveHomeDynamicPa = resolveHomeDynamicPanelVisibility({
|
|
294
305
|
showRecentContextsBlock: showRecentContextsBlock,
|
|
295
306
|
shouldShowFaqs: shouldShowFaqs,
|
|
296
307
|
shouldShowFuas: shouldShowFuas,
|
|
297
|
-
shouldShowPlannerFuas: shouldShowPlannerFuas,
|
|
308
|
+
shouldShowPlannerFuas: shouldShowPlannerFuas || shouldShowCollaboratorFullscreenFuas,
|
|
298
309
|
isMaiaker: isMaiaker,
|
|
299
310
|
showProjectSummaryCard: showProjectSummaryCard
|
|
300
311
|
}),
|
|
@@ -356,7 +367,7 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
356
367
|
document.dispatchEvent(new CustomEvent('maia-input-refocus'));
|
|
357
368
|
});
|
|
358
369
|
}, [event, setChipsProject, setClient, setProject, setTask, t]);
|
|
359
|
-
var handleHomeStartChat = useCallback(function (message, attachments, faqId, agentSuggestionId, mentions, fuaId) {
|
|
370
|
+
var handleHomeStartChat = useCallback(function (message, attachments, faqId, agentSuggestionId, mentions, fuaId, scId, contextData) {
|
|
360
371
|
if (shouldClearPinnedContextOnHomeStart(isHeaderManagerHoursHome, fuaId)) {
|
|
361
372
|
flushSync(function () {
|
|
362
373
|
setSelectedContext(null);
|
|
@@ -366,7 +377,7 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
366
377
|
setChipsProject(null);
|
|
367
378
|
});
|
|
368
379
|
}
|
|
369
|
-
onStartChat(message, attachments, faqId, agentSuggestionId, mentions, fuaId);
|
|
380
|
+
onStartChat(message, attachments, faqId, agentSuggestionId, mentions, fuaId, scId, contextData);
|
|
370
381
|
}, [isHeaderManagerHoursHome, onStartChat, setChipsProject, setClient, setProject, setTask]);
|
|
371
382
|
var renderRecentContexts = function renderRecentContexts() {
|
|
372
383
|
if (!shouldRenderRecentContextsPanel(isRecentContextsStep)) return null;
|
|
@@ -550,83 +561,93 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
550
561
|
fixedHomeContentWidthCollaborator = _resolveMaiaHeaderSta2.fixedHomeContentWidthCollaborator;
|
|
551
562
|
var fixedHomeContentWidth = fixedHomeContentWidthCollaborator ? MAIA_HEADER_COLLABORATOR_HOME_CONTENT_WIDTH_PX : undefined;
|
|
552
563
|
var showAgentIntroduction = resolveShowAgentIntroduction(section, isMAIA, Boolean(agent === null || agent === void 0 ? void 0 : agent.introduction));
|
|
553
|
-
|
|
554
|
-
showFAQs:
|
|
564
|
+
var homeMain = /*#__PURE__*/_jsx(SCCAIHomeContent, {
|
|
565
|
+
showFAQs: homeScrollableLayout,
|
|
566
|
+
$isAgentView: !isMAIA,
|
|
567
|
+
$floatingCustomCenter: floatingCustomCenter,
|
|
568
|
+
$centerVertically: isPlannerHome,
|
|
555
569
|
$alignStart: isLeftAlignedOrchestratorHome,
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
}), /*#__PURE__*/_jsx(SCCAIHomeContent, {
|
|
559
|
-
ref: contentContainerRef,
|
|
570
|
+
$fixedContentWidth: fixedHomeContentWidth,
|
|
571
|
+
children: /*#__PURE__*/_jsxs(SCCAIHomeContentInner, {
|
|
560
572
|
showFAQs: homeScrollableLayout,
|
|
561
573
|
$isAgentView: !isMAIA,
|
|
562
574
|
$floatingCustomCenter: floatingCustomCenter,
|
|
563
575
|
$centerVertically: isPlannerHome,
|
|
564
|
-
$alignStart: isLeftAlignedOrchestratorHome,
|
|
565
|
-
$
|
|
566
|
-
|
|
567
|
-
|
|
576
|
+
$alignStart: isHeaderTaskContextHome || isLeftAlignedOrchestratorHome,
|
|
577
|
+
$headerCollaboratorHome: isHeaderTaskContextHome,
|
|
578
|
+
$sectionOrchestratorHome: isLeftAlignedOrchestratorHome,
|
|
579
|
+
children: [/*#__PURE__*/_jsxs(SCCAIHomeHeader, {
|
|
580
|
+
$gap: showAgentIntroduction ? '20px' : '0',
|
|
581
|
+
$maxWidth: isMAIA ? '100%' : '380px',
|
|
568
582
|
$isAgentView: !isMAIA,
|
|
569
|
-
$
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
children: /*#__PURE__*/_jsx(TemplateGradientIcon, {
|
|
587
|
-
height: 24,
|
|
588
|
-
width: 24
|
|
589
|
-
})
|
|
590
|
-
}), /*#__PURE__*/_jsxs(SCCAIHomeProjectSummaryContent, {
|
|
591
|
-
children: [/*#__PURE__*/_jsx(SCCAIHomeProjectSummaryTitle, {
|
|
592
|
-
children: t('homeMenu.projectSummary.title')
|
|
593
|
-
}), /*#__PURE__*/_jsx(SCCAIHomeProjectSummaryDescription, {
|
|
594
|
-
children: t('homeMenu.projectSummary.description')
|
|
595
|
-
})]
|
|
583
|
+
$align: contentAlignStart ? 'start' : 'center',
|
|
584
|
+
children: [renderHeaderContent(), showAgentIntroduction && agent ? /*#__PURE__*/_jsx(SCCAIHomeIntroduction, {
|
|
585
|
+
expanded: expanded,
|
|
586
|
+
children: agent.introduction
|
|
587
|
+
}) : null]
|
|
588
|
+
}), showProjectSummaryCard && /*#__PURE__*/_jsxs(SCCAHWrapperSummaryProject, {
|
|
589
|
+
onClick: handlers.projectSummary,
|
|
590
|
+
children: [/*#__PURE__*/_jsx(SCCAIHomeProjectSummary, {
|
|
591
|
+
children: /*#__PURE__*/_jsx(TemplateGradientIcon, {
|
|
592
|
+
height: 24,
|
|
593
|
+
width: 24
|
|
594
|
+
})
|
|
595
|
+
}), /*#__PURE__*/_jsxs(SCCAIHomeProjectSummaryContent, {
|
|
596
|
+
children: [/*#__PURE__*/_jsx(SCCAIHomeProjectSummaryTitle, {
|
|
597
|
+
children: t('homeMenu.projectSummary.title')
|
|
598
|
+
}), /*#__PURE__*/_jsx(SCCAIHomeProjectSummaryDescription, {
|
|
599
|
+
children: t('homeMenu.projectSummary.description')
|
|
596
600
|
})]
|
|
597
|
-
}), showDynamicSection && /*#__PURE__*/_jsxs(SCCAIHomeDynamicSection, {
|
|
598
|
-
$grow: isMaiaker,
|
|
599
|
-
$alignStart: isHeaderTaskContextHome || isLeftAlignedOrchestratorHome,
|
|
600
|
-
children: [shouldShowPlannerFuas ? /*#__PURE__*/_jsx(FrequentlyUsedActions, {
|
|
601
|
-
variant: "planner",
|
|
602
|
-
onStartChat: handleHomeStartChat,
|
|
603
|
-
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
604
|
-
isScrolling: isScrolling,
|
|
605
|
-
actions: headerHoursFuas,
|
|
606
|
-
loading: headerHoursFuasLoading
|
|
607
|
-
}) : null, renderRecentContexts(), shouldShowFaqs && /*#__PURE__*/_jsx(FrequentlyAskedQuestions, {
|
|
608
|
-
onStartChat: onStartChat,
|
|
609
|
-
showFAQs: showFAQs,
|
|
610
|
-
showProjectSummary: showProjectSummary,
|
|
611
|
-
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
612
|
-
lang: lang,
|
|
613
|
-
isScrolling: isScrolling,
|
|
614
|
-
faqs: faqs,
|
|
615
|
-
loading: faqsAreLoading
|
|
616
|
-
}), shouldShowFuas && /*#__PURE__*/_jsx(FrequentlyUsedActions, {
|
|
617
|
-
onStartChat: onStartChat,
|
|
618
|
-
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
619
|
-
isScrolling: isScrolling,
|
|
620
|
-
actions: fuas,
|
|
621
|
-
loading: fuasAreLoading
|
|
622
|
-
}), isMaiaker ? /*#__PURE__*/_jsx(ChatAIHomeMaiaker, {
|
|
623
|
-
onStartChat: onStartChat
|
|
624
|
-
}) : null]
|
|
625
601
|
})]
|
|
626
|
-
})
|
|
627
|
-
|
|
602
|
+
}), showDynamicSection && /*#__PURE__*/_jsxs(SCCAIHomeDynamicSection, {
|
|
603
|
+
$grow: isMaiaker,
|
|
604
|
+
$alignStart: isHeaderTaskContextHome || isLeftAlignedOrchestratorHome,
|
|
605
|
+
children: [shouldShowCollaboratorFullscreenFuas ? /*#__PURE__*/_jsx(FrequentlyUsedActions, {
|
|
606
|
+
onStartChat: handleHomeStartChat,
|
|
607
|
+
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
608
|
+
isScrolling: isScrolling,
|
|
609
|
+
actions: collaboratorFullscreenFuas,
|
|
610
|
+
loading: collaboratorFullscreenFuasLoading
|
|
611
|
+
}) : null, shouldShowPlannerFuas ? /*#__PURE__*/_jsx(FrequentlyUsedActions, {
|
|
612
|
+
variant: "planner",
|
|
613
|
+
onStartChat: handleHomeStartChat,
|
|
614
|
+
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
615
|
+
isScrolling: isScrolling,
|
|
616
|
+
actions: headerHoursFuas,
|
|
617
|
+
loading: headerHoursFuasLoading
|
|
618
|
+
}) : null, renderRecentContexts(), shouldShowFaqs && /*#__PURE__*/_jsx(FrequentlyAskedQuestions, {
|
|
619
|
+
onStartChat: onStartChat,
|
|
620
|
+
showFAQs: showFAQs,
|
|
621
|
+
showProjectSummary: showProjectSummary,
|
|
622
|
+
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
623
|
+
lang: lang,
|
|
624
|
+
isScrolling: isScrolling,
|
|
625
|
+
faqs: faqs,
|
|
626
|
+
loading: faqsAreLoading
|
|
627
|
+
}), shouldShowFuas && /*#__PURE__*/_jsx(FrequentlyUsedActions, {
|
|
628
|
+
onStartChat: onStartChat,
|
|
629
|
+
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
630
|
+
isScrolling: isScrolling,
|
|
631
|
+
actions: fuas,
|
|
632
|
+
loading: fuasAreLoading
|
|
633
|
+
}), isMaiaker ? /*#__PURE__*/_jsx(ChatAIHomeMaiaker, {
|
|
634
|
+
onStartChat: onStartChat
|
|
635
|
+
}) : null]
|
|
636
|
+
})]
|
|
637
|
+
})
|
|
638
|
+
});
|
|
639
|
+
return /*#__PURE__*/_jsxs(SCCAIHomeContainer, {
|
|
640
|
+
showFAQs: showFAQs,
|
|
641
|
+
$alignStart: isLeftAlignedOrchestratorHome,
|
|
642
|
+
children: [homeScrollableLayout && /*#__PURE__*/_jsx(SCCAIHomeGradientTop, {
|
|
643
|
+
$show: showTopGradient
|
|
644
|
+
}), homeScrollableLayout ? /*#__PURE__*/_jsx(SCCAIHomeScroll, {
|
|
645
|
+
ref: contentContainerRef,
|
|
646
|
+
$scrollable: true,
|
|
647
|
+
children: homeMain
|
|
648
|
+
}) : homeMain, homeScrollableLayout && /*#__PURE__*/_jsx(SCCAIHomeGradientBottom, {
|
|
628
649
|
$show: showBottomGradient
|
|
629
650
|
})]
|
|
630
651
|
});
|
|
631
652
|
};
|
|
632
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsImZsdXNoU3luYyIsIlRvb2x0aXAiLCJMaXN0Q2hlY2tsaXN0IiwidXNlVCIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0NDQUlIb21lQ29udGFpbmVyIiwiU0NDQUlIb21lQ29udGVudCIsIlNDQ0FJSG9tZUNvbnRlbnRJbm5lciIsIlNDQ0FJSG9tZUdyYWRpZW50VG9wIiwiU0NDQUlIb21lR3JhZGllbnRCb3R0b20iLCJTQ0NBSUhvbWVIZWFkZXIiLCJTQ0NBSUhvbWVHcmVldGluZyIsIlNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lciIsIlNDQ0FJSG9tZUFnZW50SW5mbyIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24iLCJTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCIsIlNDQ0FJSG9tZUludHJvZHVjdGlvbiIsIlNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lciIsIlNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQiLCJTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQ0FJSG9tZUljb25Db250YWluZXIiLCJTQ0NBSUhvbWVMb2dvV3JhcHBlciIsIlNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayIsIlNDQ0FJSG9tZVRpdGxlIiwiU0NDQUlIb21lVGl0bGVCbG9jayIsIlNDQ0FJSG9tZVN1YnRpdGxlIiwiU0NDQUlIb21lRHluYW1pY1NlY3Rpb24iLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0cyIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlciIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlIiwiU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGUiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbiIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsVGV4dCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24iLCJNQUlBX0hFQURFUl9DT0xMQUJPUkFUT1JfSE9NRV9DT05URU5UX1dJRFRIX1BYIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJpc0NvbGxhYm9yYXRvclJvbGUiLCJpc01hbmFnZXJSb2xlIiwidXNlUmVzaXplTGlzdGVuZXIiLCJnZXRDb250ZXh0TWVudGlvbkljb24iLCJvcmNoZXN0cmF0b3JIYXNIb3Vyc1N1YmFnZW50IiwidmFsaWRhdGVJc01haWEiLCJpc01haWFrZXJBZ2VudCIsIkZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyIsIkZyZXF1ZW50bHlVc2VkQWN0aW9ucyIsInVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyIsInNvcnRNYW5hZ2VySG91cnNIb21lRnVhcyIsInJlc29sdmVSZWNlbnRDb250ZXh0c0hvbWVMaW1pdCIsInVzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyIsInVzZVJlY2VudENvbnRleHRzIiwiTUFJQUlzb2xvZ28iLCJUZW1wbGF0ZUdyYWRpZW50SWNvbiIsIkNoYXRBSUhvbWVNYWlha2VyIiwicmVzb2x2ZUFjdGl2ZUNvbnRleHRGcm9tR2xvYmFsIiwicmVzb2x2ZUFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMiLCJyZXNvbHZlRmFxc0NvbnRleHRFbnRpdHlUeXBlIiwicmVzb2x2ZUZ1YXNTZWN0aW9uIiwicmVzb2x2ZUhhc1Bpbm5lZENvbnRleHQiLCJyZXNvbHZlSGVhZGVyVGFza0NvbnRleHRTdWJ0aXRsZUtleSIsInJlc29sdmVIb21lR3JlZXRpbmciLCJyZXNvbHZlSG9tZVNjcm9sbEdyYWRpZW50cyIsInJlc29sdmVNYWlhSG9tZUxhbmciLCJyZXNvbHZlT3JjaGVzdHJhdG9ySG9tZUxheW91dCIsInJlc29sdmVQaW5uZWRFbnRpdHlUeXBlIiwicmVzb2x2ZVByb2plY3RTdW1tYXJ5RmVhdHVyZUFjY2VzcyIsInJlc29sdmVSZWFsTGlzdHNBZ2VudElkIiwicmVzb2x2ZVJlYWxMaXN0c0VudGl0eVR5cGUiLCJyZXNvbHZlUmVjZW50Q29udGV4dFBpbk91dGNvbWUiLCJyZXNvbHZlU2hvdWxkU2hvd0ZhcXMiLCJyZXNvbHZlU2hvdWxkU2hvd0Z1YXMiLCJyZXNvbHZlRmxvYXRpbmdDdXN0b21DZW50ZXIiLCJmaWx0ZXJSZWNlbnRDb250ZXh0c0J5VHlwZXMiLCJidWlsZFJlY2VudENvbnRleHRTa2VsZXRvbktleXMiLCJyZXNvbHZlU2hvd1JlY2VudENvbnRleHRzQmxvY2siLCJyZXNvbHZlUGxhbm5lckZ1YXNWaXNpYmlsaXR5IiwicmVzb2x2ZUhvbWVEeW5hbWljUGFuZWxWaXNpYmlsaXR5IiwicmVzb2x2ZU1haWFIZWFkZXJTdGFja0xheW91dCIsInJlc29sdmVTaG93QWdlbnRJbnRyb2R1Y3Rpb24iLCJidWlsZEZhcXNGZXRjaEtleSIsInNob3VsZFJlZmV0Y2hGYXFzIiwic2hvdWxkQ2xlYXJQaW5uZWRDb250ZXh0T25Ib21lU3RhcnQiLCJyZXNvbHZlUmVjZW50Q29udGV4dHNTZWN0aW9uQ29weUtleXMiLCJyZXNvbHZlT3JjaGVzdHJhdG9yUmVjZW50Q29udGV4dHNTdWJ0aXRsZUtleSIsImJ1aWxkUGluR2xvYmFsQ29udGV4dFBhdGNoIiwicmVzb2x2ZUhvbWVDb250ZXh0R3JlZXRpbmdLZXkiLCJzaG91bGRDaGVja0hvbWVTY3JvbGwiLCJzaG91bGRPYnNlcnZlSG9tZVNjcm9sbENvbnRlbnQiLCJzaG91bGRSZW5kZXJSZWNlbnRDb250ZXh0c1BhbmVsIiwic2hvdWxkUmVzZXRIb21lU2Nyb2xsR3JhZGllbnRzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiRnJlcXVlbnRRdWVzdGlvbnMiLCJSRUNFTlRfQ09OVEVYVF9JQ09OX0NPTE9SIiwiUkVDRU5UX0NPTlRFWFRfSUNPTl9TSVpFX1BYIiwiUmVjZW50Q29udGV4dFBpbGwiLCJfcmVmIiwiY29udGV4dCIsImxhYmVsIiwib25DbGljayIsIl9yZWYkZnVsbFdpZHRoIiwiZnVsbFdpZHRoIiwidGV4dFJlZiIsIl91c2VSZXNpemVMaXN0ZW5lciIsInNob3dUb29sdGlwIiwidHlwZSIsIiRmdWxsV2lkdGgiLCJjaGlsZHJlbiIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJ1bmRlZmluZWQiLCJyZWYiLCJ0aXRsZSIsIkNoYXRBSUhvbWUiLCJfcmVmMiIsImhhbmRsZXJzIiwib25TdGFydENoYXQiLCJleHBhbmRlZCIsImZsb2F0aW5nIiwiX3VzZVQiLCJ0IiwiaTE4biIsImV2ZW50IiwidXNlciIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJzZWN0aW9uIiwiY2xpZW50IiwicHJvamVjdCIsInRhc2siLCJjaGlwc1Byb2plY3QiLCJzZXRDbGllbnQiLCJzZXRQcm9qZWN0Iiwic2V0VGFzayIsInNldENoaXBzUHJvamVjdCIsImlzTUFJQSIsImZsb2F0aW5nQ3VzdG9tQ2VudGVyIiwibGFuZyIsImxhbmd1YWdlIiwic3VtbWFyeVByb2plY3RBY2Nlc3MiLCJ3aW5kb3ciLCJmYXFzQWNjZXNzIiwic2hvd1Byb2plY3RTdW1tYXJ5IiwiaXNNYWlha2VyIiwiaGFzSG91cnNTdWJhZ2VudCIsImhhc1Bpbm5lZENvbnRleHQiLCJ0YXNrSWQiLCJpZCIsImNoaXBzUHJvamVjdElkIiwicHJvamVjdElkIiwiY2xpZW50SWQiLCJfcmVzb2x2ZU9yY2hlc3RyYXRvckgiLCJhZ2VudFR5cGUiLCJpc01haWEiLCJyb2xlSWQiLCJyb2xlX2lkIiwiaXNIZWFkZXJIb21lIiwiaXNPcmNoZXN0cmF0b3IiLCJpc1BsYW5uZXJIb21lIiwiaXNSZWNlbnRDb250ZXh0c1N0ZXAiLCJpc0hlYWRlclRhc2tDb250ZXh0SG9tZSIsImlzSGVhZGVySG91cnNBZ2VudEhvbWUiLCJpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUiLCJpc0NvbnRleHRIb21lU3RlcCIsImlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lIiwiaGVhZGVyVGFza0NvbnRleHRTdWJ0aXRsZUtleSIsImlzTWFuYWdlciIsImFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZWxlY3RlZENvbnRleHQiLCJzZXRTZWxlY3RlZENvbnRleHQiLCJhY3RpdmVDb250ZXh0IiwibmFtZSIsInByb2plY3ROYW1lIiwicGlubmVkRW50aXR5VHlwZSIsImZhcXNDb250ZXh0RW50aXR5VHlwZSIsImFjdGl2ZUNvbnRleHRUeXBlIiwiaXNDbGllbnRDb250ZXh0Rm9yRmFxcyIsImZ1YXNTZWN0aW9uIiwicmVhbExpc3RzQWdlbnRJZCIsImFnZW50SWQiLCJyZWFsTGlzdHNFbnRpdHlUeXBlIiwiX3VzZUZyZXF1ZW50bHlVc2VkQWN0IiwiYWdlbnRGdWFzIiwiYWN0aW9ucyIsImZ1YXNMb2FkaW5nIiwibG9hZGluZyIsIl91c2VGcmVxdWVudGx5VXNlZEFjdDIiLCJjb2xsYWJvcmF0b3JQbGFubmVyRnVhcyIsImNvbGxhYm9yYXRvclBsYW5uZXJGdWFzTG9hZGluZyIsIl91c2VGcmVxdWVudGx5VXNlZEFjdDMiLCJtYW5hZ2VySG9tZUZ1YXMiLCJtYW5hZ2VySG9tZUZ1YXNMb2FkaW5nIiwiaGVhZGVySG91cnNGdWFzIiwiaGVhZGVySG91cnNGdWFzTG9hZGluZyIsInJlY2VudENvbnRleHRzTGltaXQiLCJmdWFzQ291bnQiLCJsZW5ndGgiLCJfdXNlUmVjZW50Q29udGV4dHMiLCJlbmFibGVkIiwibGltaXQiLCJmZXRjaGVkUmVjZW50Q29udGV4dHMiLCJjb250ZXh0cyIsInJlY2VudENvbnRleHRzTG9hZGluZyIsInJlY2VudENvbnRleHRzIiwicmVjZW50Q29udGV4dFNrZWxldG9uS2V5cyIsImZhcXNMaXN0QWdlbnRJZCIsImZhcXNMaXN0RW50aXR5VHlwZSIsIl91c2VGcmVxdWVudGx5QXNrZWRRdSIsImFnZW50RmFxcyIsImZhcXMiLCJmYXFzTG9hZGluZyIsImhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyIsImZhcXNGZXRjaFJlZiIsImN1cnJlbnRLZXkiLCJsYXN0S2V5IiwiY3VycmVudCIsImVudGl0eVR5cGUiLCJmdWFzIiwiZmFxc0FyZUxvYWRpbmciLCJmdWFzQXJlTG9hZGluZyIsInNob3VsZFNob3dGYXFzIiwiZmFxc0NvdW50Iiwic2hvdWxkU2hvd0Z1YXMiLCJfcmVzb2x2ZVBsYW5uZXJGdWFzVmkiLCJoZWFkZXJIb3Vyc0Z1YXNDb3VudCIsInNob3VsZFNob3dQbGFubmVyRnVhcyIsInNob3dQcm9qZWN0U3VtbWFyeUNhcmQiLCJlbnRpdHkiLCJzaG93UmVjZW50Q29udGV4dHNCbG9jayIsIl9yZXNvbHZlSG9tZUR5bmFtaWNQYSIsInNob3dGQVFzIiwic2hvd0R5bmFtaWNTZWN0aW9uIiwiaG9tZVNjcm9sbGFibGVMYXlvdXQiLCJjb250ZW50Q29udGFpbmVyUmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzaG93VG9wR3JhZGllbnQiLCJzZXRTaG93VG9wR3JhZGllbnQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNob3dCb3R0b21HcmFkaWVudCIsInNldFNob3dCb3R0b21HcmFkaWVudCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNTY3JvbGxpbmciLCJzZXRJc1Njcm9sbGluZyIsInNjcm9sbFRpbWVvdXRSZWYiLCJncmVldGluZyIsIl9hZ2VudCRpbnRyb2R1Y3Rpb24iLCJjb250ZXh0R3JlZXRpbmciLCJncmVldGluZ0tleSIsImFnZW50SW50cm9kdWN0aW9uIiwiaW50cm9kdWN0aW9uIiwiaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dCIsIm9yZGVyIiwiYWlDaGF0Q29udGV4dFNlbGVjdGVkIiwicGluT3V0Y29tZSIsImNvbnRleHRQYXRjaCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiaGFuZGxlSG9tZVN0YXJ0Q2hhdCIsIm1lc3NhZ2UiLCJhdHRhY2htZW50cyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwicmVuZGVyUmVjZW50Q29udGV4dHMiLCIkZml4ZWRDb250ZW50V2lkdGgiLCJfcmVzb2x2ZVJlY2VudENvbnRleHQiLCJ0aXRsZUtleSIsInN1YnRpdGxlS2V5IiwiJGZsdXNoUGlsbHMiLCJtYXAiLCJrZXkiLCJpbmRleCIsInRyaW0iLCJjb25jYXQiLCJjaGVja1Njcm9sbCIsImNvbnRhaW5lciIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImdyYWRpZW50cyIsInNob3dUb3AiLCJzaG93Qm90dG9tIiwiaGFuZGxlU2Nyb2xsIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInNjaGVkdWxlQ2hlY2tTY3JvbGwiLCJhZGRFdmVudExpc3RlbmVyIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJzY3JvbGxDb250ZW50IiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJ0aW1lb3V0SWQiLCJsYXRlVGltZW91dElkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRpc2Nvbm5lY3QiLCJyZW5kZXJIZWFkZXJDb250ZW50IiwiX2FnZW50JGNyZWF0ZWRfYnkiLCJfYWdlbnQkY3JlYXRlZF9ieTIiLCJlbW9qaSIsImNyZWF0ZWRfYnkiLCJpc19kZWxldGVkIiwiX3Jlc29sdmVNYWlhSGVhZGVyU3RhIiwiaGFzR3JlZXRpbmciLCJCb29sZWFuIiwiY29udGVudEFsaWduU3RhcnQiLCJtYWlhSGVhZGVyU3RhY2tOZWVkc0dhcCIsIiRub0dhcCIsIiRhbGlnbiIsIiRzaXplIiwiZmlyc3ROYW1lIiwiJGNvbGxhYm9yYXRvckhvbWUiLCJfcmVzb2x2ZU1haWFIZWFkZXJTdGEyIiwiZml4ZWRIb21lQ29udGVudFdpZHRoQ29sbGFib3JhdG9yIiwiZml4ZWRIb21lQ29udGVudFdpZHRoIiwic2hvd0FnZW50SW50cm9kdWN0aW9uIiwiJGFsaWduU3RhcnQiLCIkc2hvdyIsIiRpc0FnZW50VmlldyIsIiRmbG9hdGluZ0N1c3RvbUNlbnRlciIsIiRjZW50ZXJWZXJ0aWNhbGx5IiwiJGhlYWRlckNvbGxhYm9yYXRvckhvbWUiLCIkc2VjdGlvbk9yY2hlc3RyYXRvckhvbWUiLCIkZ2FwIiwiJG1heFdpZHRoIiwicHJvamVjdFN1bW1hcnkiLCIkZ3JvdyIsInZhcmlhbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJSG9tZS9DaGF0QUlIb21lLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGZsdXNoU3luYyB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgTGlzdENoZWNrbGlzdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0xpc3RDaGVja2xpc3QnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxuaW1wb3J0IHsgb3B0aW9ucyB9IGZyb20gJy4uL0NoYXRBSU1vZGFsL2NvbnN0YW50cydcblxuaW1wb3J0IHtcbiAgU0NDQUlIb21lQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVDb250ZW50LFxuICBTQ0NBSUhvbWVDb250ZW50SW5uZXIsXG4gIFNDQ0FJSG9tZUdyYWRpZW50VG9wLFxuICBTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSxcbiAgU0NDQUlIb21lSGVhZGVyLFxuICBTQ0NBSUhvbWVHcmVldGluZyxcbiAgU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVBZ2VudEluZm8sXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5LFxuICBTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGUsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24sXG4gIFNDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0LFxuICBTQ0NBSUhvbWVJbnRyb2R1Y3Rpb24sXG4gIFNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lcixcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dCxcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWUsXG4gIFNDQ0FJSG9tZUljb25Db250YWluZXIsXG4gIFNDQ0FJSG9tZUxvZ29XcmFwcGVyLFxuICBTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2ssXG4gIFNDQ0FJSG9tZVRpdGxlLFxuICBTQ0NBSUhvbWVUaXRsZUJsb2NrLFxuICBTQ0NBSUhvbWVTdWJ0aXRsZSxcbiAgU0NDQUlIb21lRHluYW1pY1NlY3Rpb24sXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3QsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcixcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGUsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblN1YnRpdGxlLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxJY29uLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24sXG4gIE1BSUFfSEVBREVSX0NPTExBQk9SQVRPUl9IT01FX0NPTlRFTlRfV0lEVEhfUFgsXG59IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCwgdHlwZSBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVzZXIsIGlzQ29sbGFib3JhdG9yUm9sZSwgaXNNYW5hZ2VyUm9sZSB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VSZXNpemVMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlc2l6ZSdcbmltcG9ydCB7IGdldENvbnRleHRNZW50aW9uSWNvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvbnRleHRNZW50aW9uSWNvbnMnXG5pbXBvcnQgeyBvcmNoZXN0cmF0b3JIYXNIb3Vyc1N1YmFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvb3JjaGVzdHJhdG9yU3ViYWdlbnRzJ1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IGlzTWFpYWtlckFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyB9IGZyb20gJy4uLy4uL2F0b21zL0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucydcbmltcG9ydCB7IEZyZXF1ZW50bHlVc2VkQWN0aW9ucyB9IGZyb20gJy4uLy4uL2F0b21zL0ZyZXF1ZW50bHlVc2VkQWN0aW9ucydcbmltcG9ydCB7IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucydcbmltcG9ydCB7IHNvcnRNYW5hZ2VySG91cnNIb21lRnVhcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3NvcnRNYW5hZ2VySG91cnNIb21lRnVhcydcbmltcG9ydCB7IHJlc29sdmVSZWNlbnRDb250ZXh0c0hvbWVMaW1pdCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3JlY2VudENvbnRleHRzSG9tZUxpbWl0J1xuaW1wb3J0IHsgdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zJ1xuaW1wb3J0IHsgdXNlUmVjZW50Q29udGV4dHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VSZWNlbnRDb250ZXh0cydcbmltcG9ydCB0eXBlIHsgUmVjZW50Q29udGV4dEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1JlY2VudENvbnRleHRzJ1xuaW1wb3J0IHsgTUFJQUlzb2xvZ28gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9NQUlBSXNvbG9nbydcbmltcG9ydCB7IFRlbXBsYXRlR3JhZGllbnRJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvVGVtcGxhdGVHcmFkaWVudEljb24nXG5pbXBvcnQgeyBDaGF0QUlIb21lTWFpYWtlciB9IGZyb20gJy4vQ2hhdEFJSG9tZU1haWFrZXInXG5pbXBvcnQge1xuICByZXNvbHZlQWN0aXZlQ29udGV4dEZyb21HbG9iYWwsXG4gIHJlc29sdmVBbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzLFxuICByZXNvbHZlRmFxc0NvbnRleHRFbnRpdHlUeXBlLFxuICByZXNvbHZlRnVhc1NlY3Rpb24sXG4gIHJlc29sdmVIYXNQaW5uZWRDb250ZXh0LFxuICByZXNvbHZlSGVhZGVyVGFza0NvbnRleHRTdWJ0aXRsZUtleSxcbiAgcmVzb2x2ZUhvbWVHcmVldGluZyxcbiAgcmVzb2x2ZUhvbWVTY3JvbGxHcmFkaWVudHMsXG4gIHJlc29sdmVNYWlhSG9tZUxhbmcsXG4gIHJlc29sdmVPcmNoZXN0cmF0b3JIb21lTGF5b3V0LFxuICByZXNvbHZlUGlubmVkRW50aXR5VHlwZSxcbiAgcmVzb2x2ZVByb2plY3RTdW1tYXJ5RmVhdHVyZUFjY2VzcyxcbiAgcmVzb2x2ZVJlYWxMaXN0c0FnZW50SWQsXG4gIHJlc29sdmVSZWFsTGlzdHNFbnRpdHlUeXBlLFxuICByZXNvbHZlUmVjZW50Q29udGV4dFBpbk91dGNvbWUsXG4gIHJlc29sdmVTaG91bGRTaG93RmFxcyxcbiAgcmVzb2x2ZVNob3VsZFNob3dGdWFzLFxuICByZXNvbHZlRmxvYXRpbmdDdXN0b21DZW50ZXIsXG4gIGZpbHRlclJlY2VudENvbnRleHRzQnlUeXBlcyxcbiAgYnVpbGRSZWNlbnRDb250ZXh0U2tlbGV0b25LZXlzLFxuICByZXNvbHZlU2hvd1JlY2VudENvbnRleHRzQmxvY2ssXG4gIHJlc29sdmVQbGFubmVyRnVhc1Zpc2liaWxpdHksXG4gIHJlc29sdmVIb21lRHluYW1pY1BhbmVsVmlzaWJpbGl0eSxcbiAgcmVzb2x2ZU1haWFIZWFkZXJTdGFja0xheW91dCxcbiAgcmVzb2x2ZVNob3dBZ2VudEludHJvZHVjdGlvbixcbiAgYnVpbGRGYXFzRmV0Y2hLZXksXG4gIHNob3VsZFJlZmV0Y2hGYXFzLFxuICBzaG91bGRDbGVhclBpbm5lZENvbnRleHRPbkhvbWVTdGFydCxcbiAgcmVzb2x2ZVJlY2VudENvbnRleHRzU2VjdGlvbkNvcHlLZXlzLFxuICByZXNvbHZlT3JjaGVzdHJhdG9yUmVjZW50Q29udGV4dHNTdWJ0aXRsZUtleSxcbiAgYnVpbGRQaW5HbG9iYWxDb250ZXh0UGF0Y2gsXG4gIHJlc29sdmVIb21lQ29udGV4dEdyZWV0aW5nS2V5LFxuICBzaG91bGRDaGVja0hvbWVTY3JvbGwsXG4gIHNob3VsZE9ic2VydmVIb21lU2Nyb2xsQ29udGVudCxcbiAgc2hvdWxkUmVuZGVyUmVjZW50Q29udGV4dHNQYW5lbCxcbiAgc2hvdWxkUmVzZXRIb21lU2Nyb2xsR3JhZGllbnRzLFxufSBmcm9tICcuL0NoYXRBSUhvbWUuaGVscGVycydcblxudHlwZSBDaGF0QUlIb21lUHJvcHMgPSB7XG4gIG9uU3RhcnRDaGF0OiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSB8IG51bGwsXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgbWVudGlvbnM/OiBudWxsLFxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICkgPT4gdm9pZFxuICBoYW5kbGVyczogUmVjb3JkPG9wdGlvbnMsICgpID0+IHZvaWQ+XG4gIGV4cGFuZGVkPzogYm9vbGVhblxuICBmbG9hdGluZz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGVudW0gRnJlcXVlbnRRdWVzdGlvbnMge1xuICByZW50YWJpbGlkYWRfcHJveWVjdG8gPSAncmVudGFiaWxpZGFkX3Byb3llY3RvJyxcbiAgYXZhbmNlX3Byb3llY3RvID0gJ2F2YW5jZV9wcm95ZWN0bycsXG59XG5cbmNvbnN0IFJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IgPSAnIzRENEQ0RCdcbmNvbnN0IFJFQ0VOVF9DT05URVhUX0lDT05fU0laRV9QWCA9IDE1XG5cbmNvbnN0IFJlY2VudENvbnRleHRQaWxsID0gKHtcbiAgY29udGV4dCxcbiAgbGFiZWwsXG4gIG9uQ2xpY2ssXG4gIGZ1bGxXaWR0aCA9IGZhbHNlLFxufToge1xuICBjb250ZXh0OiBSZWNlbnRDb250ZXh0SXRlbVxuICBsYWJlbDogc3RyaW5nXG4gIG9uQ2xpY2s6ICgpID0+IHZvaWRcbiAgZnVsbFdpZHRoPzogYm9vbGVhblxufSkgPT4ge1xuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBzaG93VG9vbHRpcCB9ID0gdXNlUmVzaXplTGlzdGVuZXIodGV4dFJlZiwgW2xhYmVsXSlcblxuICByZXR1cm4gKFxuICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17b25DbGlja30gJGZ1bGxXaWR0aD17ZnVsbFdpZHRofT5cbiAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24+XG4gICAgICAgIHtjb250ZXh0LnR5cGUgPT09ICd0YXNrJyA/IChcbiAgICAgICAgICA8TGlzdENoZWNrbGlzdCBjb2xvcj17UkVDRU5UX0NPTlRFWFRfSUNPTl9DT0xPUn0gd2lkdGg9XCIxNXB4XCIgaGVpZ2h0PVwiMTVweFwiIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgZ2V0Q29udGV4dE1lbnRpb25JY29uKGNvbnRleHQudHlwZSwgUkVDRU5UX0NPTlRFWFRfSUNPTl9DT0xPUiwgdW5kZWZpbmVkLCBSRUNFTlRfQ09OVEVYVF9JQ09OX1NJWkVfUFgpXG4gICAgICAgICl9XG4gICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbj5cbiAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQgcmVmPXt0ZXh0UmVmfT5cbiAgICAgICAge3Nob3dUb29sdGlwID8gKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtsYWJlbH0+XG4gICAgICAgICAgICA8c3Bhbj57bGFiZWx9PC9zcGFuPlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBsYWJlbFxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQ+XG4gICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbD5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJSG9tZSA9ICh7IGhhbmRsZXJzLCBvblN0YXJ0Q2hhdCwgZXhwYW5kZWQsIGZsb2F0aW5nIH06IENoYXRBSUhvbWVQcm9wcykgPT4ge1xuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGFnZW50LCBzZWN0aW9uLCBjbGllbnQsIHByb2plY3QsIHRhc2ssIGNoaXBzUHJvamVjdCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCBzZXRDaGlwc1Byb2plY3QgfSA9XG4gICAgdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgY29uc3QgaXNNQUlBID0gdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpXG4gIGNvbnN0IGZsb2F0aW5nQ3VzdG9tQ2VudGVyID0gcmVzb2x2ZUZsb2F0aW5nQ3VzdG9tQ2VudGVyKGZsb2F0aW5nLCBhZ2VudD8udHlwZSlcbiAgY29uc3QgbGFuZyA9IHJlc29sdmVNYWlhSG9tZUxhbmcoaTE4bi5sYW5ndWFnZSlcblxuICBjb25zdCBzdW1tYXJ5UHJvamVjdEFjY2VzcyA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHJlc29sdmVQcm9qZWN0U3VtbWFyeUZlYXR1cmVBY2Nlc3Mod2luZG93KVxuICBjb25zdCBmYXFzQWNjZXNzID0gdHJ1ZVxuICBjb25zdCBzaG93UHJvamVjdFN1bW1hcnkgPSAhIShpc01BSUEgJiYgc3VtbWFyeVByb2plY3RBY2Nlc3MpXG4gIC8vIEVsIG9yY2hlc3RyYXRvciAodHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIG11ZXN0cmEgRkFRcy9GVUFzIGFncmVnYWRhcyBkZSBzdXMgc3ViYWdlbnRlcyxcbiAgLy8gYXPDrSBxdWUgTk8gc2UgdHJhdGEgY29tbyBtYWlha2VyIGFjw6EuXG4gIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuICBjb25zdCBoYXNIb3Vyc1N1YmFnZW50ID0gb3JjaGVzdHJhdG9ySGFzSG91cnNTdWJhZ2VudChhZ2VudClcbiAgY29uc3QgaGFzUGlubmVkQ29udGV4dCA9IHJlc29sdmVIYXNQaW5uZWRDb250ZXh0KHtcbiAgICB0YXNrSWQ6IHRhc2s/LmlkLFxuICAgIGNoaXBzUHJvamVjdElkOiBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCxcbiAgICBjbGllbnRJZDogY2xpZW50Py5pZCxcbiAgICBwcm9qZWN0SWQ6IHByb2plY3Q/LmlkLFxuICB9KVxuICBjb25zdCB7XG4gICAgaXNIZWFkZXJIb21lLFxuICAgIGlzT3JjaGVzdHJhdG9yLFxuICAgIGlzUGxhbm5lckhvbWUsXG4gICAgaXNSZWNlbnRDb250ZXh0c1N0ZXAsXG4gICAgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUsXG4gICAgaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSxcbiAgICBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUsXG4gICAgaXNDb250ZXh0SG9tZVN0ZXAsXG4gICAgaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUsXG4gIH0gPSByZXNvbHZlT3JjaGVzdHJhdG9ySG9tZUxheW91dCh7XG4gICAgc2VjdGlvbixcbiAgICBhZ2VudFR5cGU6IGFnZW50Py50eXBlLFxuICAgIGlzTWFpYTogaXNNQUlBLFxuICAgIGhhc0hvdXJzU3ViYWdlbnQsXG4gICAgcm9sZUlkOiB1c2VyLnJvbGVfaWQsXG4gICAgaGFzUGlubmVkQ29udGV4dCxcbiAgfSlcbiAgY29uc3QgaGVhZGVyVGFza0NvbnRleHRTdWJ0aXRsZUtleSA9IHJlc29sdmVIZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5KHtcbiAgICBpc0hlYWRlckhvdXJzQWdlbnRIb21lLFxuICAgIGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSxcbiAgICBpc01hbmFnZXI6IGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKSxcbiAgfSlcbiAgY29uc3QgYWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIHJlc29sdmVBbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzKHtcbiAgICAgICAgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLFxuICAgICAgICBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSxcbiAgICAgICAgcm9sZUlkOiB1c2VyLnJvbGVfaWQsXG4gICAgICB9KSxcbiAgICBbdXNlci5yb2xlX2lkLCBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUsIGlzSGVhZGVyVGFza0NvbnRleHRIb21lXVxuICApXG5cbiAgLy8gQ29udGV4dG8gYWN0aXZvIHBhcmEgZGVyaXZhciBGQVFzL2FjY2lvbmVzIChwYXNvIDIpLiBQcmVmZXJpbW9zIGVsIHBpbGwgY2xpY2tlYWRvO1xuICAvLyBzaSBubywgbG8gcmVjb25zdHJ1aW1vcyBkZXNkZSBlbCBjb250ZXh0byBnbG9iYWwuXG4gIGNvbnN0IFtzZWxlY3RlZENvbnRleHQsIHNldFNlbGVjdGVkQ29udGV4dF0gPSB1c2VTdGF0ZTxSZWNlbnRDb250ZXh0SXRlbSB8IG51bGw+KG51bGwpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFoYXNQaW5uZWRDb250ZXh0KSBzZXRTZWxlY3RlZENvbnRleHQobnVsbClcbiAgfSwgW2hhc1Bpbm5lZENvbnRleHRdKVxuXG4gIGNvbnN0IGFjdGl2ZUNvbnRleHQgPSB1c2VNZW1vPFJlY2VudENvbnRleHRJdGVtIHwgbnVsbD4oXG4gICAgKCkgPT5cbiAgICAgIHJlc29sdmVBY3RpdmVDb250ZXh0RnJvbUdsb2JhbCh7XG4gICAgICAgIGlzQ29udGV4dEhvbWVTdGVwLFxuICAgICAgICBzZWxlY3RlZENvbnRleHQsXG4gICAgICAgIHRhc2s6IHRhc2s/LmlkID8geyBpZDogdGFzay5pZCwgbmFtZTogdGFzay5uYW1lIH0gOiBudWxsLFxuICAgICAgICBjaGlwc1Byb2plY3Q6IGNoaXBzUHJvamVjdD8ucHJvamVjdElkXG4gICAgICAgICAgPyB7IHByb2plY3RJZDogY2hpcHNQcm9qZWN0LnByb2plY3RJZCwgcHJvamVjdE5hbWU6IGNoaXBzUHJvamVjdC5wcm9qZWN0TmFtZSB9XG4gICAgICAgICAgOiBudWxsLFxuICAgICAgICBjbGllbnQ6IGNsaWVudD8uaWQgPyB7IGlkOiBjbGllbnQuaWQsIG5hbWU6IGNsaWVudC5uYW1lIH0gOiBudWxsLFxuICAgICAgfSksXG4gICAgW1xuICAgICAgc2VsZWN0ZWRDb250ZXh0LFxuICAgICAgaXNDb250ZXh0SG9tZVN0ZXAsXG4gICAgICB0YXNrPy5pZCxcbiAgICAgIHRhc2s/Lm5hbWUsXG4gICAgICBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCxcbiAgICAgIGNoaXBzUHJvamVjdD8ucHJvamVjdE5hbWUsXG4gICAgICBjbGllbnQ/LmlkLFxuICAgICAgY2xpZW50Py5uYW1lLFxuICAgIF1cbiAgKVxuXG4gIGNvbnN0IHBpbm5lZEVudGl0eVR5cGUgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICByZXNvbHZlUGlubmVkRW50aXR5VHlwZSh7XG4gICAgICAgIHRhc2tJZDogdGFzaz8uaWQsXG4gICAgICAgIGNoaXBzUHJvamVjdElkOiBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCxcbiAgICAgICAgY2xpZW50SWQ6IGNsaWVudD8uaWQsXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdD8uaWQsXG4gICAgICB9KSxcbiAgICBbdGFzaz8uaWQsIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLCBwcm9qZWN0Py5pZCwgY2xpZW50Py5pZF1cbiAgKVxuXG4gIGNvbnN0IGZhcXNDb250ZXh0RW50aXR5VHlwZSA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIHJlc29sdmVGYXFzQ29udGV4dEVudGl0eVR5cGUoe1xuICAgICAgICBpc1BsYW5uZXJIb21lLFxuICAgICAgICBpc1JlY2VudENvbnRleHRzU3RlcCxcbiAgICAgICAgaXNIZWFkZXJIb21lLFxuICAgICAgICBpc0NvbnRleHRIb21lU3RlcCxcbiAgICAgICAgYWN0aXZlQ29udGV4dFR5cGU6IGFjdGl2ZUNvbnRleHQ/LnR5cGUsXG4gICAgICAgIHBpbm5lZEVudGl0eVR5cGUsXG4gICAgICB9KSxcbiAgICBbaXNQbGFubmVySG9tZSwgaXNSZWNlbnRDb250ZXh0c1N0ZXAsIGlzSGVhZGVySG9tZSwgaXNDb250ZXh0SG9tZVN0ZXAsIGFjdGl2ZUNvbnRleHQ/LnR5cGUsIHBpbm5lZEVudGl0eVR5cGVdXG4gIClcbiAgY29uc3QgaXNDbGllbnRDb250ZXh0Rm9yRmFxcyA9IGZhcXNDb250ZXh0RW50aXR5VHlwZSA9PT0gJ2NsaWVudCdcbiAgLy8gYHNlY3Rpb25gIHF1ZSBzZSBjb25zdWx0YSBwYXJhIGxhcyBGVUFzOiBlbiBuby1oZWFkZXIgc2lndWUgZWwgdGlwbyBkZSBjb250ZXh0byBwaW5lYWRvLlxuICAvLyBFbiBwbGFubmVyIHNlIGZ1ZXJ6YSBsYSBzZWN0aW9uIEFQSSBgcGxhbm5lcmAuXG4gIGNvbnN0IGZ1YXNTZWN0aW9uOiBTZWN0aW9uID0gcmVzb2x2ZUZ1YXNTZWN0aW9uKHtcbiAgICBpc1BsYW5uZXJIb21lLFxuICAgIGlzSGVhZGVySG9tZSxcbiAgICBwaW5uZWRFbnRpdHlUeXBlLFxuICAgIHNlY3Rpb24sXG4gIH0pXG5cbiAgY29uc3QgcmVhbExpc3RzQWdlbnRJZCA9IHJlc29sdmVSZWFsTGlzdHNBZ2VudElkKHtcbiAgICBpc01haWE6IGlzTUFJQSxcbiAgICBpc01haWFrZXIsXG4gICAgaXNSZWNlbnRDb250ZXh0c1N0ZXAsXG4gICAgaXNIZWFkZXJIb21lLFxuICAgIGlzQ29udGV4dEhvbWVTdGVwLFxuICAgIGFnZW50SWQ6IGFnZW50Py5pZCxcbiAgfSlcbiAgY29uc3QgcmVhbExpc3RzRW50aXR5VHlwZSA9IHJlc29sdmVSZWFsTGlzdHNFbnRpdHlUeXBlKHtcbiAgICBpc1BsYW5uZXJIb21lLFxuICAgIGlzSGVhZGVySG9tZSxcbiAgICBpc0NvbnRleHRIb21lU3RlcCxcbiAgICBhY3RpdmVDb250ZXh0VHlwZTogYWN0aXZlQ29udGV4dD8udHlwZSxcbiAgICBwaW5uZWRFbnRpdHlUeXBlLFxuICB9KVxuICBjb25zdCB7IGFjdGlvbnM6IGFnZW50RnVhcywgbG9hZGluZzogZnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICByZWFsTGlzdHNBZ2VudElkLFxuICAgIGZ1YXNTZWN0aW9uLFxuICAgIHJlYWxMaXN0c0VudGl0eVR5cGVcbiAgKVxuICBjb25zdCB7IGFjdGlvbnM6IGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzLCBsb2FkaW5nOiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICBpc0hlYWRlckhvdXJzQWdlbnRIb21lICYmICFpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWQsXG4gICAgJ3BsYW5uZXInXG4gIClcbiAgY29uc3QgeyBhY3Rpb25zOiBtYW5hZ2VySG9tZUZ1YXMsIGxvYWRpbmc6IG1hbmFnZXJIb21lRnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWQsXG4gICAgJ2hvbWVfd2l0aF9ob3VycydcbiAgKVxuICBjb25zdCBoZWFkZXJIb3Vyc0Z1YXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lKSByZXR1cm4gc29ydE1hbmFnZXJIb3Vyc0hvbWVGdWFzKG1hbmFnZXJIb21lRnVhcylcbiAgICByZXR1cm4gY29sbGFib3JhdG9yUGxhbm5lckZ1YXNcbiAgfSwgW2lzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSwgbWFuYWdlckhvbWVGdWFzLCBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc10pXG4gIGNvbnN0IGhlYWRlckhvdXJzRnVhc0xvYWRpbmcgPSBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPyBtYW5hZ2VySG9tZUZ1YXNMb2FkaW5nIDogY29sbGFib3JhdG9yUGxhbm5lckZ1YXNMb2FkaW5nXG4gIGNvbnN0IHJlY2VudENvbnRleHRzTGltaXQgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICByZXNvbHZlUmVjZW50Q29udGV4dHNIb21lTGltaXQoe1xuICAgICAgICBpc0hlYWRlckhvdXJzQWdlbnRIb21lLFxuICAgICAgICBmdWFzTG9hZGluZzogaGVhZGVySG91cnNGdWFzTG9hZGluZyxcbiAgICAgICAgZnVhc0NvdW50OiBoZWFkZXJIb3Vyc0Z1YXMubGVuZ3RoLFxuICAgICAgfSksXG4gICAgW2lzSGVhZGVySG91cnNBZ2VudEhvbWUsIGhlYWRlckhvdXJzRnVhc0xvYWRpbmcsIGhlYWRlckhvdXJzRnVhcy5sZW5ndGhdXG4gIClcbiAgY29uc3QgeyBjb250ZXh0czogZmV0Y2hlZFJlY2VudENvbnRleHRzLCBsb2FkaW5nOiByZWNlbnRDb250ZXh0c0xvYWRpbmcgfSA9IHVzZVJlY2VudENvbnRleHRzKHtcbiAgICBlbmFibGVkOiBpc09yY2hlc3RyYXRvciAmJiAhaXNQbGFubmVySG9tZSxcbiAgICBsaW1pdDogcmVjZW50Q29udGV4dHNMaW1pdCxcbiAgfSlcbiAgY29uc3QgcmVjZW50Q29udGV4dHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGZpbHRlclJlY2VudENvbnRleHRzQnlUeXBlcyhmZXRjaGVkUmVjZW50Q29udGV4dHMsIGFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMpLFxuICAgIFtmZXRjaGVkUmVjZW50Q29udGV4dHMsIGFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXNdXG4gIClcbiAgY29uc3QgcmVjZW50Q29udGV4dFNrZWxldG9uS2V5cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gYnVpbGRSZWNlbnRDb250ZXh0U2tlbGV0b25LZXlzKHJlY2VudENvbnRleHRzTGltaXQpLFxuICAgIFtyZWNlbnRDb250ZXh0c0xpbWl0XVxuICApXG4gIGNvbnN0IGZhcXNMaXN0QWdlbnRJZCA9IGlzQ2xpZW50Q29udGV4dEZvckZhcXMgPyByZWFsTGlzdHNBZ2VudElkIDogdW5kZWZpbmVkXG4gIGNvbnN0IGZhcXNMaXN0RW50aXR5VHlwZSA9IGlzQ2xpZW50Q29udGV4dEZvckZhcXMgPyByZWFsTGlzdHNFbnRpdHlUeXBlIDogdW5kZWZpbmVkXG4gIGNvbnN0IHtcbiAgICBmYXFzOiBhZ2VudEZhcXMsXG4gICAgbG9hZGluZzogZmFxc0xvYWRpbmcsXG4gICAgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLFxuICB9ID0gdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zKGZhcXNMaXN0QWdlbnRJZCwgbGFuZywgZmFxc0xpc3RFbnRpdHlUeXBlKVxuICBjb25zdCBmYXFzRmV0Y2hSZWYgPSB1c2VSZWY8eyBhZ2VudElkOiBzdHJpbmc7IGxhbmc6IHN0cmluZzsgZW50aXR5VHlwZT86IHN0cmluZyB9IHwgbnVsbD4obnVsbClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBGQVFzIHNvbG8gcGFyYSBjb250ZXh0byBjbGllbnRlOyBlbCByZXN0byBtdWVzdHJhIHNvbG8gRlVBcy5cbiAgICBpZiAoIXJlYWxMaXN0c0FnZW50SWQgfHwgIWlzQ2xpZW50Q29udGV4dEZvckZhcXMpIHJldHVyblxuICAgIGNvbnN0IGN1cnJlbnRLZXkgPSBidWlsZEZhcXNGZXRjaEtleShyZWFsTGlzdHNBZ2VudElkLCBsYW5nLCByZWFsTGlzdHNFbnRpdHlUeXBlKVxuICAgIGNvbnN0IGxhc3RLZXkgPSBmYXFzRmV0Y2hSZWYuY3VycmVudFxuICAgICAgPyBidWlsZEZhcXNGZXRjaEtleShmYXFzRmV0Y2hSZWYuY3VycmVudC5hZ2VudElkLCBmYXFzRmV0Y2hSZWYuY3VycmVudC5sYW5nLCBmYXFzRmV0Y2hSZWYuY3VycmVudC5lbnRpdHlUeXBlKVxuICAgICAgOiBudWxsXG4gICAgaWYgKHNob3VsZFJlZmV0Y2hGYXFzKGN1cnJlbnRLZXksIGxhc3RLZXkpKSB7XG4gICAgICBmYXFzRmV0Y2hSZWYuY3VycmVudCA9IHsgYWdlbnRJZDogcmVhbExpc3RzQWdlbnRJZCwgbGFuZywgZW50aXR5VHlwZTogcmVhbExpc3RzRW50aXR5VHlwZSB9XG4gICAgICBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMoeyBhZ2VudElkOiByZWFsTGlzdHNBZ2VudElkLCBsYW5nLCBlbnRpdHlUeXBlOiByZWFsTGlzdHNFbnRpdHlUeXBlIH0pXG4gICAgfVxuICB9LCBbcmVhbExpc3RzQWdlbnRJZCwgcmVhbExpc3RzRW50aXR5VHlwZSwgaXNDbGllbnRDb250ZXh0Rm9yRmFxcywgbGFuZywgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXSlcblxuICBjb25zdCBmYXFzID0gYWdlbnRGYXFzXG4gIGNvbnN0IGZ1YXMgPSBhZ2VudEZ1YXNcbiAgY29uc3QgZmFxc0FyZUxvYWRpbmcgPSBmYXFzTG9hZGluZ1xuICBjb25zdCBmdWFzQXJlTG9hZGluZyA9IGZ1YXNMb2FkaW5nXG5cbiAgY29uc3Qgc2hvdWxkU2hvd0ZhcXMgPSByZXNvbHZlU2hvdWxkU2hvd0ZhcXMoe1xuICAgIGlzTWFpYTogaXNNQUlBLFxuICAgIGlzQ2xpZW50Q29udGV4dEZvckZhcXMsXG4gICAgaXNSZWNlbnRDb250ZXh0c1N0ZXAsXG4gICAgaXNDb250ZXh0SG9tZVN0ZXAsXG4gICAgaXNIZWFkZXJIb21lLFxuICAgIGZhcXNBY2Nlc3MsXG4gICAgaXNNYWlha2VyLFxuICAgIGZhcXNDb3VudDogZmFxcy5sZW5ndGgsXG4gICAgZmFxc0xvYWRpbmc6IGZhcXNBcmVMb2FkaW5nLFxuICB9KVxuICBjb25zdCBzaG91bGRTaG93RnVhcyA9IHJlc29sdmVTaG91bGRTaG93RnVhcyh7XG4gICAgaXNSZWNlbnRDb250ZXh0c1N0ZXAsXG4gICAgaXNNYWlha2VyLFxuICAgIGlzQ29udGV4dEhvbWVTdGVwLFxuICAgIGlzSGVhZGVySG9tZSxcbiAgICBmdWFzQ291bnQ6IGZ1YXMubGVuZ3RoLFxuICAgIGZ1YXNMb2FkaW5nOiBmdWFzQXJlTG9hZGluZyxcbiAgfSlcbiAgY29uc3QgeyBzaG91bGRTaG93UGxhbm5lckZ1YXMgfSA9IHJlc29sdmVQbGFubmVyRnVhc1Zpc2liaWxpdHkoe1xuICAgIGlzSGVhZGVySG91cnNBZ2VudEhvbWUsXG4gICAgaGVhZGVySG91cnNGdWFzTG9hZGluZyxcbiAgICBoZWFkZXJIb3Vyc0Z1YXNDb3VudDogaGVhZGVySG91cnNGdWFzLmxlbmd0aCxcbiAgfSlcblxuICBjb25zdCBzaG93UHJvamVjdFN1bW1hcnlDYXJkID0gc2hvd1Byb2plY3RTdW1tYXJ5ICYmIGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0J1xuICBjb25zdCBzaG93UmVjZW50Q29udGV4dHNCbG9jayA9IHJlc29sdmVTaG93UmVjZW50Q29udGV4dHNCbG9jayhcbiAgICBpc1JlY2VudENvbnRleHRzU3RlcCxcbiAgICByZWNlbnRDb250ZXh0c0xvYWRpbmcsXG4gICAgcmVjZW50Q29udGV4dHMubGVuZ3RoXG4gIClcbiAgY29uc3QgeyBzaG93RkFRcywgc2hvd0R5bmFtaWNTZWN0aW9uLCBob21lU2Nyb2xsYWJsZUxheW91dCB9ID0gcmVzb2x2ZUhvbWVEeW5hbWljUGFuZWxWaXNpYmlsaXR5KHtcbiAgICBzaG93UmVjZW50Q29udGV4dHNCbG9jayxcbiAgICBzaG91bGRTaG93RmFxcyxcbiAgICBzaG91bGRTaG93RnVhcyxcbiAgICBzaG91bGRTaG93UGxhbm5lckZ1YXMsXG4gICAgaXNNYWlha2VyLFxuICAgIHNob3dQcm9qZWN0U3VtbWFyeUNhcmQsXG4gIH0pXG5cbiAgLy8gTMOzZ2ljYSBkZWwgc2Nyb2xsIGNvbiBncmFkaWVudGVzXG4gIGNvbnN0IGNvbnRlbnRDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzaG93VG9wR3JhZGllbnQsIHNldFNob3dUb3BHcmFkaWVudF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dCb3R0b21HcmFkaWVudCwgc2V0U2hvd0JvdHRvbUdyYWRpZW50XSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNTY3JvbGxpbmcsIHNldElzU2Nyb2xsaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBzY3JvbGxUaW1lb3V0UmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbClcblxuICAvLyBTYWx1ZG8gZmlqbyBwb3IgdGlwbyBkZSBjb250ZXh0byAoaTE4bikuIEN1c3RvbSBhZ2VudHMgc2lndWVuIHVzYW5kbyBhZ2VudC5pbnRyb2R1Y3Rpb24uXG4gIC8vIFBsYW5uZXIgdXNhIHTDrXR1bG8gKyBiYWphZGEgcHJvcGlvcyAoYHBsYW5uZXJIb21lYCksIG5vIGVzdGUgZ3JlZXRpbmcuXG4gIGNvbnN0IGdyZWV0aW5nID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgcmVzb2x2ZUhvbWVHcmVldGluZyh7XG4gICAgICAgIGlzTWFpYWtlcixcbiAgICAgICAgaXNQbGFubmVySG9tZSxcbiAgICAgICAgaXNSZWNlbnRDb250ZXh0c1N0ZXAsXG4gICAgICAgIGlzTWFpYTogaXNNQUlBLFxuICAgICAgICBwaW5uZWRFbnRpdHlUeXBlLFxuICAgICAgICBjb250ZXh0R3JlZXRpbmc6ICgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZ3JlZXRpbmdLZXkgPSByZXNvbHZlSG9tZUNvbnRleHRHcmVldGluZ0tleShpc01BSUEsIHBpbm5lZEVudGl0eVR5cGUpXG4gICAgICAgICAgcmV0dXJuIGdyZWV0aW5nS2V5ID8gdChncmVldGluZ0tleSkgOiB1bmRlZmluZWRcbiAgICAgICAgfSkoKSxcbiAgICAgICAgYWdlbnRJbnRyb2R1Y3Rpb246IGFnZW50Py5pbnRyb2R1Y3Rpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgfSksXG4gICAgW2FnZW50Py5pZCwgYWdlbnQ/LmludHJvZHVjdGlvbiwgaXNNYWlha2VyLCBpc1BsYW5uZXJIb21lLCBpc01BSUEsIHBpbm5lZEVudGl0eVR5cGUsIGlzUmVjZW50Q29udGV4dHNTdGVwLCB0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dCA9IHVzZUNhbGxiYWNrKFxuICAgIChjb250ZXh0OiBSZWNlbnRDb250ZXh0SXRlbSwgb3JkZXI6IG51bWJlcikgPT4ge1xuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdENvbnRleHRTZWxlY3RlZCwgeyBvcmRlciwgdHlwZTogY29udGV4dC50eXBlIH0pXG5cbiAgICAgIGNvbnN0IHBpbk91dGNvbWUgPSByZXNvbHZlUmVjZW50Q29udGV4dFBpbk91dGNvbWUoY29udGV4dCwgdCgnaG9tZU1lbnUucmVjZW50Q29udGV4dHMudHlwZXMucHJvamVjdCcpKVxuXG4gICAgICBzZXRTZWxlY3RlZENvbnRleHQoY29udGV4dClcbiAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcblxuICAgICAgY29uc3QgY29udGV4dFBhdGNoID0gYnVpbGRQaW5HbG9iYWxDb250ZXh0UGF0Y2gocGluT3V0Y29tZSlcbiAgICAgIGlmICghY29udGV4dFBhdGNoKSByZXR1cm5cblxuICAgICAgc2V0Q2xpZW50Py4oY29udGV4dFBhdGNoLmNsaWVudClcbiAgICAgIHNldFByb2plY3QoY29udGV4dFBhdGNoLnByb2plY3QpXG4gICAgICBzZXRUYXNrKGNvbnRleHRQYXRjaC50YXNrKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KGNvbnRleHRQYXRjaC5jaGlwc1Byb2plY3QpXG5cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdtYWlhLWlucHV0LXJlZm9jdXMnKSlcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZXZlbnQsIHNldENoaXBzUHJvamVjdCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCB0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlSG9tZVN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSB8IG51bGwsXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBudWxsLFxuICAgICAgZnVhSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChzaG91bGRDbGVhclBpbm5lZENvbnRleHRPbkhvbWVTdGFydChpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUsIGZ1YUlkKSkge1xuICAgICAgICBmbHVzaFN5bmMoKCkgPT4ge1xuICAgICAgICAgIHNldFNlbGVjdGVkQ29udGV4dChudWxsKVxuICAgICAgICAgIHNldFRhc2sobnVsbClcbiAgICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIG9uU3RhcnRDaGF0KG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZClcbiAgICB9LFxuICAgIFtpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUsIG9uU3RhcnRDaGF0LCBzZXRDaGlwc1Byb2plY3QsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza11cbiAgKVxuXG4gIGNvbnN0IHJlbmRlclJlY2VudENvbnRleHRzID0gKCkgPT4ge1xuICAgIGlmICghc2hvdWxkUmVuZGVyUmVjZW50Q29udGV4dHNQYW5lbChpc1JlY2VudENvbnRleHRzU3RlcCkpIHJldHVybiBudWxsXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRzXG4gICAgICAgICRmaXhlZENvbnRlbnRXaWR0aD17aXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgPyBNQUlBX0hFQURFUl9DT0xMQUJPUkFUT1JfSE9NRV9DT05URU5UX1dJRFRIX1BYIDogdW5kZWZpbmVkfVxuICAgICAgPlxuICAgICAgICB7aXNIZWFkZXJIb3Vyc0FnZW50SG9tZSA/IChcbiAgICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uSGVhZGVyPlxuICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgdGl0bGVLZXksIHN1YnRpdGxlS2V5IH0gPSByZXNvbHZlUmVjZW50Q29udGV4dHNTZWN0aW9uQ29weUtleXMoeyBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgfSlcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlPnt0KHRpdGxlS2V5KX08L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblN1YnRpdGxlPnt0KHN1YnRpdGxlS2V5KX08L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblN1YnRpdGxlPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KSgpfVxuICAgICAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uSGVhZGVyPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCAkZmx1c2hQaWxscz17aXNIZWFkZXJUYXNrQ29udGV4dEhvbWV9PlxuICAgICAgICAgIHtyZWNlbnRDb250ZXh0c0xvYWRpbmcgJiZcbiAgICAgICAgICAgIHJlY2VudENvbnRleHRTa2VsZXRvbktleXMubWFwKGtleSA9PiA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxTa2VsZXRvbiBrZXk9e2tleX0gLz4pfVxuICAgICAgICAgIHshcmVjZW50Q29udGV4dHNMb2FkaW5nICYmXG4gICAgICAgICAgICByZWNlbnRDb250ZXh0cy5tYXAoKGNvbnRleHQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxSZWNlbnRDb250ZXh0UGlsbFxuICAgICAgICAgICAgICAgIGtleT17YCR7Y29udGV4dC50eXBlfS0ke2NvbnRleHQuaWR9YH1cbiAgICAgICAgICAgICAgICBjb250ZXh0PXtjb250ZXh0fVxuICAgICAgICAgICAgICAgIGxhYmVsPXtjb250ZXh0Lm5hbWUudHJpbSgpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdFJlY2VudENvbnRleHQoY29udGV4dCwgaW5kZXggKyAxKX1cbiAgICAgICAgICAgICAgICBmdWxsV2lkdGg9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHNMaXN0PlxuICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0cz5cbiAgICApXG4gIH1cblxuICBjb25zdCBjaGVja1Njcm9sbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSBjb250ZW50Q29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICBpZiAoIWNvbnRhaW5lciB8fCAhc2hvdWxkQ2hlY2tIb21lU2Nyb2xsKGNvbnRhaW5lciwgaG9tZVNjcm9sbGFibGVMYXlvdXQpKSByZXR1cm5cblxuICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgY29uc3QgZ3JhZGllbnRzID0gcmVzb2x2ZUhvbWVTY3JvbGxHcmFkaWVudHMoc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodClcbiAgICBzZXRTaG93VG9wR3JhZGllbnQoZ3JhZGllbnRzLnNob3dUb3ApXG4gICAgc2V0U2hvd0JvdHRvbUdyYWRpZW50KGdyYWRpZW50cy5zaG93Qm90dG9tKVxuICB9LCBbaG9tZVNjcm9sbGFibGVMYXlvdXRdKVxuXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjaGVja1Njcm9sbCgpXG4gICAgc2V0SXNTY3JvbGxpbmcodHJ1ZSlcblxuICAgIGlmIChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRJc1Njcm9sbGluZyhmYWxzZSlcbiAgICB9LCAxNTApXG4gIH0sIFtjaGVja1Njcm9sbF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvdWxkUmVzZXRIb21lU2Nyb2xsR3JhZGllbnRzKGhvbWVTY3JvbGxhYmxlTGF5b3V0KSkge1xuICAgICAgc2V0U2hvd1RvcEdyYWRpZW50KGZhbHNlKVxuICAgICAgc2V0U2hvd0JvdHRvbUdyYWRpZW50KGZhbHNlKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRlbnRDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgc2NoZWR1bGVDaGVja1Njcm9sbCA9ICgpID0+IHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGNoZWNrU2Nyb2xsKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgc2NoZWR1bGVDaGVja1Njcm9sbCgpXG4gICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcblxuICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKHNjaGVkdWxlQ2hlY2tTY3JvbGwpXG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIpXG4gICAgY29uc3Qgc2Nyb2xsQ29udGVudCA9IGNvbnRhaW5lci5maXJzdEVsZW1lbnRDaGlsZFxuICAgIGlmIChzaG91bGRPYnNlcnZlSG9tZVNjcm9sbENvbnRlbnQoc2Nyb2xsQ29udGVudCkpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoc2Nyb2xsQ29udGVudClcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dChzY2hlZHVsZUNoZWNrU2Nyb2xsLCAxMDApXG4gICAgY29uc3QgbGF0ZVRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KHNjaGVkdWxlQ2hlY2tTY3JvbGwsIDQwMClcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKVxuICAgICAgY2xlYXJUaW1lb3V0KGxhdGVUaW1lb3V0SWQpXG4gICAgICBpZiAoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNsZWFyVGltZW91dChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpXG4gICAgICB9XG4gICAgfVxuICB9LCBbaG9tZVNjcm9sbGFibGVMYXlvdXQsIGNoZWNrU2Nyb2xsLCBoYW5kbGVTY3JvbGxdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFob21lU2Nyb2xsYWJsZUxheW91dCkgcmV0dXJuXG4gICAgY2hlY2tTY3JvbGwoKVxuICB9LCBbXG4gICAgaG9tZVNjcm9sbGFibGVMYXlvdXQsXG4gICAgY2hlY2tTY3JvbGwsXG4gICAgcmVjZW50Q29udGV4dHNMb2FkaW5nLFxuICAgIHJlY2VudENvbnRleHRzLmxlbmd0aCxcbiAgICBoZWFkZXJIb3Vyc0Z1YXNMb2FkaW5nLFxuICAgIGhlYWRlckhvdXJzRnVhcy5sZW5ndGgsXG4gICAgZnVhc0xvYWRpbmcsXG4gICAgZnVhcy5sZW5ndGgsXG4gICAgZmFxc0FyZUxvYWRpbmcsXG4gICAgZmFxcy5sZW5ndGgsXG4gICAgc2hvdWxkU2hvd1BsYW5uZXJGdWFzLFxuICAgIGlzTWFpYWtlcixcbiAgXSlcblxuICBjb25zdCByZW5kZXJIZWFkZXJDb250ZW50ID0gKCkgPT4ge1xuICAgIGlmICghaXNNQUlBKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyPlxuICAgICAgICAgIDxTQ0NBSUhvbWVBZ2VudEluZm8+XG4gICAgICAgICAgICB7YWdlbnQ/LmVtb2ppfSB7YWdlbnQ/Lm5hbWV9XG4gICAgICAgICAgPC9TQ0NBSUhvbWVBZ2VudEluZm8+XG4gICAgICAgICAge2FnZW50Py5jcmVhdGVkX2J5ICYmICFpc01BSUEgJiYgKFxuICAgICAgICAgICAgPFNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICBhZ2VudD8uY3JlYXRlZF9ieT8uaXNfZGVsZXRlZCA/IHQoJ2hvbWVNZW51LmNyZWF0ZWRCeVRvb2x0aXBEZWxldGVkJykgOiB0KCdob21lTWVudS5jcmVhdGVkQnlUb29sdGlwJylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U0NDQUlIb21lQ3JlYXRlZEJ5VGV4dD5cbiAgICAgICAgICAgICAgICAgIHt0KCdob21lTWVudS5jcmVhdGVkQnknKX17JyAnfVxuICAgICAgICAgICAgICAgICAgPFNDQ0FJSG9tZUNyZWF0ZWRCeVRleHROYW1lPnthZ2VudD8uY3JlYXRlZF9ieT8ubmFtZX08L1NDQ0FJSG9tZUNyZWF0ZWRCeVRleHROYW1lPlxuICAgICAgICAgICAgICAgIDwvU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dD5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVDcmVhdGVkQnlDb250YWluZXI+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0NBSUhvbWVBZ2VudEluZm9Db250YWluZXI+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgeyBjb250ZW50QWxpZ25TdGFydCwgbWFpYUhlYWRlclN0YWNrTmVlZHNHYXAgfSA9IHJlc29sdmVNYWlhSGVhZGVyU3RhY2tMYXlvdXQoe1xuICAgICAgaXNQbGFubmVySG9tZSxcbiAgICAgIGlzSGVhZGVyVGFza0NvbnRleHRIb21lLFxuICAgICAgaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUsXG4gICAgICBpc1JlY2VudENvbnRleHRzU3RlcCxcbiAgICAgIGhhc0dyZWV0aW5nOiBCb29sZWFuKGdyZWV0aW5nKSxcbiAgICB9KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2sgJG5vR2FwPXshbWFpYUhlYWRlclN0YWNrTmVlZHNHYXB9ICRhbGlnbj17Y29udGVudEFsaWduU3RhcnQgPyAnc3RhcnQnIDogJ2NlbnRlcid9PlxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgIWlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmICFpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSAmJiAoXG4gICAgICAgICAgPFNDQ0FJSG9tZUljb25Db250YWluZXI+XG4gICAgICAgICAgICA8U0NDQUlIb21lTG9nb1dyYXBwZXI+XG4gICAgICAgICAgICAgIDxNQUlBSXNvbG9nbyAvPlxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVMb2dvV3JhcHBlcj5cbiAgICAgICAgICA8L1NDQ0FJSG9tZUljb25Db250YWluZXI+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1BsYW5uZXJIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lVGl0bGVCbG9jayAkYWxpZ249XCJzdGFydFwiPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlICRzaXplPVwibWRcIiAkYWxpZ249XCJzdGFydFwiPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUucGxhbm5lckhvbWUudGl0bGUnKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGUgJGFsaWduPVwic3RhcnRcIj57dCgnaG9tZU1lbnUucGxhbm5lckhvbWUuc3VidGl0bGUnKX08L1NDQ0FJSG9tZVN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGVCbG9jaz5cbiAgICAgICAgKX1cbiAgICAgICAgeyFpc1BsYW5uZXJIb21lICYmIGlzUmVjZW50Q29udGV4dHNTdGVwICYmIGlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lVGl0bGVCbG9jayAkYWxpZ249XCJzdGFydFwiICRmdWxsV2lkdGg+XG4gICAgICAgICAgICA8U0NDQUlIb21lVGl0bGUgJHNpemU9XCJjb250ZXh0XCIgJGFsaWduPVwic3RhcnRcIiAkZnVsbFdpZHRoPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY29udGV4dEhvbWUuZ3JlZXRpbmcnLCB7IG5hbWU6IHVzZXIuZmlyc3ROYW1lIH0pfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVTdWJ0aXRsZSAkYWxpZ249XCJzdGFydFwiICRjb2xsYWJvcmF0b3JIb21lPlxuICAgICAgICAgICAgICB7dChoZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5KX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZUJsb2NrPlxuICAgICAgICApfVxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgIWlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlICRhbGlnbj17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnc3RhcnQnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LmNvbnRleHRIb21lLmdyZWV0aW5nJywgeyBuYW1lOiB1c2VyLmZpcnN0TmFtZSB9KX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGUgJGFsaWduPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA/ICdzdGFydCcgOiB1bmRlZmluZWR9PlxuICAgICAgICAgICAgICB7dChyZXNvbHZlT3JjaGVzdHJhdG9yUmVjZW50Q29udGV4dHNTdWJ0aXRsZUtleShpc0NvbGxhYm9yYXRvclJvbGUodXNlci5yb2xlX2lkKSkpfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVTdWJ0aXRsZT5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgICAgeyFpc1BsYW5uZXJIb21lICYmICFpc1JlY2VudENvbnRleHRzU3RlcCAmJiBncmVldGluZyAmJiAoXG4gICAgICAgICAgPFNDQ0FJSG9tZUdyZWV0aW5nXG4gICAgICAgICAgICAkYWxpZ249e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lID8gJ3N0YXJ0JyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICRzaXplPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA/ICdtZCcgOiAnbGcnfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtncmVldGluZ31cbiAgICAgICAgICA8L1NDQ0FJSG9tZUdyZWV0aW5nPlxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2s+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgeyBjb250ZW50QWxpZ25TdGFydCwgZml4ZWRIb21lQ29udGVudFdpZHRoQ29sbGFib3JhdG9yIH0gPSByZXNvbHZlTWFpYUhlYWRlclN0YWNrTGF5b3V0KHtcbiAgICBpc1BsYW5uZXJIb21lLFxuICAgIGlzSGVhZGVyVGFza0NvbnRleHRIb21lLFxuICAgIGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lLFxuICAgIGlzUmVjZW50Q29udGV4dHNTdGVwLFxuICAgIGhhc0dyZWV0aW5nOiBCb29sZWFuKGdyZWV0aW5nKSxcbiAgfSlcbiAgY29uc3QgZml4ZWRIb21lQ29udGVudFdpZHRoID0gZml4ZWRIb21lQ29udGVudFdpZHRoQ29sbGFib3JhdG9yXG4gICAgPyBNQUlBX0hFQURFUl9DT0xMQUJPUkFUT1JfSE9NRV9DT05URU5UX1dJRFRIX1BYXG4gICAgOiB1bmRlZmluZWRcbiAgY29uc3Qgc2hvd0FnZW50SW50cm9kdWN0aW9uID0gcmVzb2x2ZVNob3dBZ2VudEludHJvZHVjdGlvbihzZWN0aW9uLCBpc01BSUEsIEJvb2xlYW4oYWdlbnQ/LmludHJvZHVjdGlvbikpXG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlIb21lQ29udGFpbmVyIHNob3dGQVFzPXtzaG93RkFRc30gJGFsaWduU3RhcnQ9e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfT5cbiAgICAgIHtob21lU2Nyb2xsYWJsZUxheW91dCAmJiA8U0NDQUlIb21lR3JhZGllbnRUb3AgJHNob3c9e3Nob3dUb3BHcmFkaWVudH0gLz59XG4gICAgICA8U0NDQUlIb21lQ29udGVudFxuICAgICAgICByZWY9e2NvbnRlbnRDb250YWluZXJSZWZ9XG4gICAgICAgIHNob3dGQVFzPXtob21lU2Nyb2xsYWJsZUxheW91dH1cbiAgICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgICAkZmxvYXRpbmdDdXN0b21DZW50ZXI9e2Zsb2F0aW5nQ3VzdG9tQ2VudGVyfVxuICAgICAgICAkY2VudGVyVmVydGljYWxseT17aXNQbGFubmVySG9tZX1cbiAgICAgICAgJGFsaWduU3RhcnQ9e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICAkZml4ZWRDb250ZW50V2lkdGg9e2ZpeGVkSG9tZUNvbnRlbnRXaWR0aH1cbiAgICAgID5cbiAgICAgICAgPFNDQ0FJSG9tZUNvbnRlbnRJbm5lclxuICAgICAgICAgIHNob3dGQVFzPXtob21lU2Nyb2xsYWJsZUxheW91dH1cbiAgICAgICAgICAkaXNBZ2VudFZpZXc9eyFpc01BSUF9XG4gICAgICAgICAgJGZsb2F0aW5nQ3VzdG9tQ2VudGVyPXtmbG9hdGluZ0N1c3RvbUNlbnRlcn1cbiAgICAgICAgICAkY2VudGVyVmVydGljYWxseT17aXNQbGFubmVySG9tZX1cbiAgICAgICAgICAkYWxpZ25TdGFydD17aXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgfHwgaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWV9XG4gICAgICAgICAgJGhlYWRlckNvbGxhYm9yYXRvckhvbWU9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lfVxuICAgICAgICAgICRzZWN0aW9uT3JjaGVzdHJhdG9ySG9tZT17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWV9XG4gICAgICAgID5cbiAgICAgICAgICA8U0NDQUlIb21lSGVhZGVyXG4gICAgICAgICAgICAkZ2FwPXtzaG93QWdlbnRJbnRyb2R1Y3Rpb24gPyAnMjBweCcgOiAnMCd9XG4gICAgICAgICAgICAkbWF4V2lkdGg9e2lzTUFJQSA/ICcxMDAlJyA6ICczODBweCd9XG4gICAgICAgICAgICAkaXNBZ2VudFZpZXc9eyFpc01BSUF9XG4gICAgICAgICAgICAkYWxpZ249e2NvbnRlbnRBbGlnblN0YXJ0ID8gJ3N0YXJ0JyA6ICdjZW50ZXInfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtyZW5kZXJIZWFkZXJDb250ZW50KCl9XG5cbiAgICAgICAgICAgIHtzaG93QWdlbnRJbnRyb2R1Y3Rpb24gJiYgYWdlbnQgPyAoXG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVJbnRyb2R1Y3Rpb24gZXhwYW5kZWQ9e2V4cGFuZGVkfT57YWdlbnQuaW50cm9kdWN0aW9ufTwvU0NDQUlIb21lSW50cm9kdWN0aW9uPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9TQ0NBSUhvbWVIZWFkZXI+XG4gICAgICAgICAge3Nob3dQcm9qZWN0U3VtbWFyeUNhcmQgJiYgKFxuICAgICAgICAgICAgPFNDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0IG9uQ2xpY2s9e2hhbmRsZXJzLnByb2plY3RTdW1tYXJ5fT5cbiAgICAgICAgICAgICAgPFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5PlxuICAgICAgICAgICAgICAgIDxUZW1wbGF0ZUdyYWRpZW50SWNvbiBoZWlnaHQ9ezI0fSB3aWR0aD17MjR9IC8+XG4gICAgICAgICAgICAgIDwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnk+XG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGU+e3QoJ2hvbWVNZW51LnByb2plY3RTdW1tYXJ5LnRpdGxlJyl9PC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeVRpdGxlPlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeURlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LnByb2plY3RTdW1tYXJ5LmRlc2NyaXB0aW9uJyl9XG4gICAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeURlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICA8L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5Q29udGVudD5cbiAgICAgICAgICAgIDwvU0NDQUhXcmFwcGVyU3VtbWFyeVByb2plY3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2hvd0R5bmFtaWNTZWN0aW9uICYmIChcbiAgICAgICAgICAgIDxTQ0NBSUhvbWVEeW5hbWljU2VjdGlvblxuICAgICAgICAgICAgICAkZ3Jvdz17aXNNYWlha2VyfVxuICAgICAgICAgICAgICAkYWxpZ25TdGFydD17aXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgfHwgaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtzaG91bGRTaG93UGxhbm5lckZ1YXMgPyAoXG4gICAgICAgICAgICAgICAgPEZyZXF1ZW50bHlVc2VkQWN0aW9uc1xuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInBsYW5uZXJcIlxuICAgICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e2hhbmRsZUhvbWVTdGFydENoYXR9XG4gICAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgICBhY3Rpb25zPXtoZWFkZXJIb3Vyc0Z1YXN9XG4gICAgICAgICAgICAgICAgICBsb2FkaW5nPXtoZWFkZXJIb3Vyc0Z1YXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICB7cmVuZGVyUmVjZW50Q29udGV4dHMoKX1cbiAgICAgICAgICAgICAge3Nob3VsZFNob3dGYXFzICYmIChcbiAgICAgICAgICAgICAgICA8RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXG4gICAgICAgICAgICAgICAgICBvblN0YXJ0Q2hhdD17b25TdGFydENoYXR9XG4gICAgICAgICAgICAgICAgICBzaG93RkFRcz17c2hvd0ZBUXN9XG4gICAgICAgICAgICAgICAgICBzaG93UHJvamVjdFN1bW1hcnk9e3Nob3dQcm9qZWN0U3VtbWFyeX1cbiAgICAgICAgICAgICAgICAgIGFnZW50SWQ9e2FnZW50Py5pZH1cbiAgICAgICAgICAgICAgICAgIGxhbmc9e2xhbmd9XG4gICAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgICBmYXFzPXtmYXFzfVxuICAgICAgICAgICAgICAgICAgbG9hZGluZz17ZmFxc0FyZUxvYWRpbmd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge3Nob3VsZFNob3dGdWFzICYmIChcbiAgICAgICAgICAgICAgICA8RnJlcXVlbnRseVVzZWRBY3Rpb25zXG4gICAgICAgICAgICAgICAgICBvblN0YXJ0Q2hhdD17b25TdGFydENoYXR9XG4gICAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgICBhY3Rpb25zPXtmdWFzfVxuICAgICAgICAgICAgICAgICAgbG9hZGluZz17ZnVhc0FyZUxvYWRpbmd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzTWFpYWtlciA/IDxDaGF0QUlIb21lTWFpYWtlciBvblN0YXJ0Q2hhdD17b25TdGFydENoYXR9IC8+IDogbnVsbH1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lRHluYW1pY1NlY3Rpb24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0NBSUhvbWVDb250ZW50SW5uZXI+XG4gICAgICA8L1NDQ0FJSG9tZUNvbnRlbnQ+XG4gICAgICB7aG9tZVNjcm9sbGFibGVMYXlvdXQgJiYgPFNDQ0FJSG9tZUdyYWRpZW50Qm90dG9tICRzaG93PXtzaG93Qm90dG9tR3JhZGllbnR9IC8+fVxuICAgIDwvU0NDQUlIb21l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
|
|
653
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsImZsdXNoU3luYyIsIlRvb2x0aXAiLCJMaXN0Q2hlY2tsaXN0IiwidXNlVCIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0NDQUlIb21lQ29udGFpbmVyIiwiU0NDQUlIb21lU2Nyb2xsIiwiU0NDQUlIb21lQ29udGVudCIsIlNDQ0FJSG9tZUNvbnRlbnRJbm5lciIsIlNDQ0FJSG9tZUdyYWRpZW50VG9wIiwiU0NDQUlIb21lR3JhZGllbnRCb3R0b20iLCJTQ0NBSUhvbWVIZWFkZXIiLCJTQ0NBSUhvbWVHcmVldGluZyIsIlNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lciIsIlNDQ0FJSG9tZUFnZW50SW5mbyIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24iLCJTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCIsIlNDQ0FJSG9tZUludHJvZHVjdGlvbiIsIlNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lciIsIlNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQiLCJTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQ0FJSG9tZUljb25Db250YWluZXIiLCJTQ0NBSUhvbWVMb2dvV3JhcHBlciIsIlNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayIsIlNDQ0FJSG9tZVRpdGxlIiwiU0NDQUlIb21lVGl0bGVCbG9jayIsIlNDQ0FJSG9tZVN1YnRpdGxlIiwiU0NDQUlIb21lRHluYW1pY1NlY3Rpb24iLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0cyIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlciIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlIiwiU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGUiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbiIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsVGV4dCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24iLCJNQUlBX0hFQURFUl9DT0xMQUJPUkFUT1JfSE9NRV9DT05URU5UX1dJRFRIX1BYIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJpc0NvbGxhYm9yYXRvclJvbGUiLCJpc01hbmFnZXJSb2xlIiwidXNlUmVzaXplTGlzdGVuZXIiLCJnZXRDb250ZXh0TWVudGlvbkljb24iLCJvcmNoZXN0cmF0b3JIYXNIb3Vyc1N1YmFnZW50IiwidmFsaWRhdGVJc01haWEiLCJpc01haWFrZXJBZ2VudCIsIkZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyIsIkZyZXF1ZW50bHlVc2VkQWN0aW9ucyIsInVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyIsInNvcnRNYW5hZ2VySG91cnNIb21lRnVhcyIsInJlc29sdmVSZWNlbnRDb250ZXh0c0hvbWVMaW1pdCIsInVzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyIsInVzZVJlY2VudENvbnRleHRzIiwiTUFJQUlzb2xvZ28iLCJUZW1wbGF0ZUdyYWRpZW50SWNvbiIsIkNoYXRBSUhvbWVNYWlha2VyIiwicmVzb2x2ZUFjdGl2ZUNvbnRleHRGcm9tR2xvYmFsIiwicmVzb2x2ZUFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMiLCJyZXNvbHZlRmFxc0NvbnRleHRFbnRpdHlUeXBlIiwicmVzb2x2ZUZ1YXNTZWN0aW9uIiwicmVzb2x2ZUhhc1Bpbm5lZENvbnRleHQiLCJyZXNvbHZlSGVhZGVyVGFza0NvbnRleHRTdWJ0aXRsZUtleSIsInJlc29sdmVIb21lR3JlZXRpbmciLCJyZXNvbHZlSG9tZVNjcm9sbEdyYWRpZW50cyIsInJlc29sdmVNYWlhSG9tZUxhbmciLCJyZXNvbHZlT3JjaGVzdHJhdG9ySG9tZUxheW91dCIsInJlc29sdmVQaW5uZWRFbnRpdHlUeXBlIiwicmVzb2x2ZVByb2plY3RTdW1tYXJ5RmVhdHVyZUFjY2VzcyIsInJlc29sdmVSZWFsTGlzdHNBZ2VudElkIiwicmVzb2x2ZVJlYWxMaXN0c0VudGl0eVR5cGUiLCJyZXNvbHZlUmVjZW50Q29udGV4dFBpbk91dGNvbWUiLCJyZXNvbHZlU2hvdWxkU2hvd0ZhcXMiLCJyZXNvbHZlU2hvdWxkU2hvd0Z1YXMiLCJyZXNvbHZlRmxvYXRpbmdDdXN0b21DZW50ZXIiLCJmaWx0ZXJSZWNlbnRDb250ZXh0c0J5VHlwZXMiLCJidWlsZFJlY2VudENvbnRleHRTa2VsZXRvbktleXMiLCJyZXNvbHZlU2hvd1JlY2VudENvbnRleHRzQmxvY2siLCJyZXNvbHZlUGxhbm5lckZ1YXNWaXNpYmlsaXR5IiwicmVzb2x2ZUhvbWVEeW5hbWljUGFuZWxWaXNpYmlsaXR5IiwicmVzb2x2ZU1haWFIZWFkZXJTdGFja0xheW91dCIsInJlc29sdmVTaG93QWdlbnRJbnRyb2R1Y3Rpb24iLCJidWlsZEZhcXNGZXRjaEtleSIsInNob3VsZFJlZmV0Y2hGYXFzIiwic2hvdWxkQ2xlYXJQaW5uZWRDb250ZXh0T25Ib21lU3RhcnQiLCJyZXNvbHZlUmVjZW50Q29udGV4dHNTZWN0aW9uQ29weUtleXMiLCJyZXNvbHZlT3JjaGVzdHJhdG9yUmVjZW50Q29udGV4dHNTdWJ0aXRsZUtleSIsImJ1aWxkUGluR2xvYmFsQ29udGV4dFBhdGNoIiwicmVzb2x2ZUhvbWVDb250ZXh0R3JlZXRpbmdLZXkiLCJzaG91bGRDaGVja0hvbWVTY3JvbGwiLCJzaG91bGRPYnNlcnZlSG9tZVNjcm9sbENvbnRlbnQiLCJzaG91bGRSZW5kZXJSZWNlbnRDb250ZXh0c1BhbmVsIiwic2hvdWxkUmVzZXRIb21lU2Nyb2xsR3JhZGllbnRzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiRnJlcXVlbnRRdWVzdGlvbnMiLCJSRUNFTlRfQ09OVEVYVF9JQ09OX0NPTE9SIiwiUkVDRU5UX0NPTlRFWFRfSUNPTl9TSVpFX1BYIiwiUmVjZW50Q29udGV4dFBpbGwiLCJfcmVmIiwiY29udGV4dCIsImxhYmVsIiwib25DbGljayIsIl9yZWYkZnVsbFdpZHRoIiwiZnVsbFdpZHRoIiwidGV4dFJlZiIsIl91c2VSZXNpemVMaXN0ZW5lciIsInNob3dUb29sdGlwIiwidHlwZSIsIiRmdWxsV2lkdGgiLCJjaGlsZHJlbiIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJ1bmRlZmluZWQiLCJyZWYiLCJ0aXRsZSIsIkNoYXRBSUhvbWUiLCJfcmVmMiIsImhhbmRsZXJzIiwib25TdGFydENoYXQiLCJleHBhbmRlZCIsImZsb2F0aW5nIiwiX3VzZVQiLCJ0IiwiaTE4biIsImV2ZW50IiwidXNlciIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJzZWN0aW9uIiwiY2xpZW50IiwicHJvamVjdCIsInRhc2siLCJjaGlwc1Byb2plY3QiLCJzZXRDbGllbnQiLCJzZXRQcm9qZWN0Iiwic2V0VGFzayIsInNldENoaXBzUHJvamVjdCIsImlzTUFJQSIsImZsb2F0aW5nQ3VzdG9tQ2VudGVyIiwibGFuZyIsImxhbmd1YWdlIiwic3VtbWFyeVByb2plY3RBY2Nlc3MiLCJ3aW5kb3ciLCJmYXFzQWNjZXNzIiwic2hvd1Byb2plY3RTdW1tYXJ5IiwiaXNNYWlha2VyIiwiaGFzSG91cnNTdWJhZ2VudCIsImhhc1Bpbm5lZENvbnRleHQiLCJ0YXNrSWQiLCJpZCIsImNoaXBzUHJvamVjdElkIiwicHJvamVjdElkIiwiY2xpZW50SWQiLCJfcmVzb2x2ZU9yY2hlc3RyYXRvckgiLCJhZ2VudFR5cGUiLCJpc01haWEiLCJyb2xlSWQiLCJyb2xlX2lkIiwiaXNIZWFkZXJIb21lIiwiaXNPcmNoZXN0cmF0b3IiLCJpc1BsYW5uZXJIb21lIiwiaXNSZWNlbnRDb250ZXh0c1N0ZXAiLCJpc0hlYWRlclRhc2tDb250ZXh0SG9tZSIsImlzSGVhZGVySG91cnNBZ2VudEhvbWUiLCJpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUiLCJpc0NvbnRleHRIb21lU3RlcCIsImlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lIiwiaGVhZGVyVGFza0NvbnRleHRTdWJ0aXRsZUtleSIsImlzTWFuYWdlciIsImFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZWxlY3RlZENvbnRleHQiLCJzZXRTZWxlY3RlZENvbnRleHQiLCJhY3RpdmVDb250ZXh0IiwibmFtZSIsInByb2plY3ROYW1lIiwicGlubmVkRW50aXR5VHlwZSIsImZhcXNDb250ZXh0RW50aXR5VHlwZSIsImFjdGl2ZUNvbnRleHRUeXBlIiwiaXNDbGllbnRDb250ZXh0Rm9yRmFxcyIsImZ1YXNTZWN0aW9uIiwicmVhbExpc3RzQWdlbnRJZCIsImFnZW50SWQiLCJyZWFsTGlzdHNFbnRpdHlUeXBlIiwiX3VzZUZyZXF1ZW50bHlVc2VkQWN0IiwiYWdlbnRGdWFzIiwiYWN0aW9ucyIsImZ1YXNMb2FkaW5nIiwibG9hZGluZyIsIl91c2VGcmVxdWVudGx5VXNlZEFjdDIiLCJjb2xsYWJvcmF0b3JQbGFubmVyRnVhcyIsImNvbGxhYm9yYXRvclBsYW5uZXJGdWFzTG9hZGluZyIsIl91c2VGcmVxdWVudGx5VXNlZEFjdDMiLCJtYW5hZ2VySG9tZUZ1YXMiLCJtYW5hZ2VySG9tZUZ1YXNMb2FkaW5nIiwic2hvdWxkRmV0Y2hDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcyIsIkJvb2xlYW4iLCJfdXNlRnJlcXVlbnRseVVzZWRBY3Q0IiwiY29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMiLCJjb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0xvYWRpbmciLCJoZWFkZXJIb3Vyc0Z1YXMiLCJoZWFkZXJIb3Vyc0Z1YXNMb2FkaW5nIiwicmVjZW50Q29udGV4dHNMaW1pdCIsImZ1YXNDb3VudCIsImxlbmd0aCIsIl91c2VSZWNlbnRDb250ZXh0cyIsImVuYWJsZWQiLCJsaW1pdCIsImZldGNoZWRSZWNlbnRDb250ZXh0cyIsImNvbnRleHRzIiwicmVjZW50Q29udGV4dHNMb2FkaW5nIiwicmVjZW50Q29udGV4dHMiLCJyZWNlbnRDb250ZXh0U2tlbGV0b25LZXlzIiwiZmFxc0xpc3RBZ2VudElkIiwiZmFxc0xpc3RFbnRpdHlUeXBlIiwiX3VzZUZyZXF1ZW50bHlBc2tlZFF1IiwiYWdlbnRGYXFzIiwiZmFxcyIsImZhcXNMb2FkaW5nIiwiaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiZmFxc0ZldGNoUmVmIiwiY3VycmVudEtleSIsImxhc3RLZXkiLCJjdXJyZW50IiwiZW50aXR5VHlwZSIsImZ1YXMiLCJmYXFzQXJlTG9hZGluZyIsImZ1YXNBcmVMb2FkaW5nIiwic2hvdWxkU2hvd0ZhcXMiLCJmYXFzQ291bnQiLCJzaG91bGRTaG93RnVhcyIsIl9yZXNvbHZlUGxhbm5lckZ1YXNWaSIsImhlYWRlckhvdXJzRnVhc0NvdW50Iiwic2hvdWxkU2hvd1BsYW5uZXJGdWFzIiwic2hvdWxkU2hvd0NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzTG9hZGluZyIsInNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0NvbnRlbnQiLCJzaG91bGRTaG93Q29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMiLCJzaG93UHJvamVjdFN1bW1hcnlDYXJkIiwiZW50aXR5Iiwic2hvd1JlY2VudENvbnRleHRzQmxvY2siLCJfcmVzb2x2ZUhvbWVEeW5hbWljUGEiLCJzaG93RkFRcyIsInNob3dEeW5hbWljU2VjdGlvbiIsImhvbWVTY3JvbGxhYmxlTGF5b3V0IiwiY29udGVudENvbnRhaW5lclJlZiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2hvd1RvcEdyYWRpZW50Iiwic2V0U2hvd1RvcEdyYWRpZW50IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93Qm90dG9tR3JhZGllbnQiLCJzZXRTaG93Qm90dG9tR3JhZGllbnQiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzU2Nyb2xsaW5nIiwic2V0SXNTY3JvbGxpbmciLCJzY3JvbGxUaW1lb3V0UmVmIiwiZ3JlZXRpbmciLCJfYWdlbnQkaW50cm9kdWN0aW9uIiwiY29udGV4dEdyZWV0aW5nIiwiZ3JlZXRpbmdLZXkiLCJhZ2VudEludHJvZHVjdGlvbiIsImludHJvZHVjdGlvbiIsImhhbmRsZVNlbGVjdFJlY2VudENvbnRleHQiLCJvcmRlciIsImFpQ2hhdENvbnRleHRTZWxlY3RlZCIsInBpbk91dGNvbWUiLCJjb250ZXh0UGF0Y2giLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZUhvbWVTdGFydENoYXQiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJjb250ZXh0RGF0YSIsInJlbmRlclJlY2VudENvbnRleHRzIiwiJGZpeGVkQ29udGVudFdpZHRoIiwiX3Jlc29sdmVSZWNlbnRDb250ZXh0IiwidGl0bGVLZXkiLCJzdWJ0aXRsZUtleSIsIiRmbHVzaFBpbGxzIiwibWFwIiwia2V5IiwiaW5kZXgiLCJ0cmltIiwiY29uY2F0IiwiY2hlY2tTY3JvbGwiLCJjb250YWluZXIiLCJzY3JvbGxUb3AiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJncmFkaWVudHMiLCJzaG93VG9wIiwic2hvd0JvdHRvbSIsImhhbmRsZVNjcm9sbCIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJzY2hlZHVsZUNoZWNrU2Nyb2xsIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJvYnNlcnZlIiwic2Nyb2xsQ29udGVudCIsImZpcnN0RWxlbWVudENoaWxkIiwidGltZW91dElkIiwibGF0ZVRpbWVvdXRJZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkaXNjb25uZWN0IiwicmVuZGVySGVhZGVyQ29udGVudCIsIl9hZ2VudCRjcmVhdGVkX2J5IiwiX2FnZW50JGNyZWF0ZWRfYnkyIiwiZW1vamkiLCJjcmVhdGVkX2J5IiwiaXNfZGVsZXRlZCIsIl9yZXNvbHZlTWFpYUhlYWRlclN0YSIsImhhc0dyZWV0aW5nIiwiY29udGVudEFsaWduU3RhcnQiLCJtYWlhSGVhZGVyU3RhY2tOZWVkc0dhcCIsIiRub0dhcCIsIiRhbGlnbiIsIiRzaXplIiwiZmlyc3ROYW1lIiwiJGNvbGxhYm9yYXRvckhvbWUiLCJfcmVzb2x2ZU1haWFIZWFkZXJTdGEyIiwiZml4ZWRIb21lQ29udGVudFdpZHRoQ29sbGFib3JhdG9yIiwiZml4ZWRIb21lQ29udGVudFdpZHRoIiwic2hvd0FnZW50SW50cm9kdWN0aW9uIiwiaG9tZU1haW4iLCIkaXNBZ2VudFZpZXciLCIkZmxvYXRpbmdDdXN0b21DZW50ZXIiLCIkY2VudGVyVmVydGljYWxseSIsIiRhbGlnblN0YXJ0IiwiJGhlYWRlckNvbGxhYm9yYXRvckhvbWUiLCIkc2VjdGlvbk9yY2hlc3RyYXRvckhvbWUiLCIkZ2FwIiwiJG1heFdpZHRoIiwicHJvamVjdFN1bW1hcnkiLCIkZ3JvdyIsInZhcmlhbnQiLCIkc2hvdyIsIiRzY3JvbGxhYmxlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSUhvbWUvQ2hhdEFJSG9tZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG4vLyBmbHVzaFN5bmMgaW50ZW5jaW9uYWw6IGVsIGNvbnRleHRvIGRlYmUgcXVlZGFyIGxpbXBpbyBhbnRlcyBkZSBxdWUgb25TdGFydENoYXQgbG8gbGVhXG4vLyByZWFjdC1kb2N0b3ItZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtZG9jdG9yL25vLWZsdXNoLXN5bmNcbmltcG9ydCB7IGZsdXNoU3luYyB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgTGlzdENoZWNrbGlzdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0xpc3RDaGVja2xpc3QnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxuaW1wb3J0IHsgb3B0aW9ucyB9IGZyb20gJy4uL0NoYXRBSU1vZGFsL2NvbnN0YW50cydcblxuaW1wb3J0IHtcbiAgU0NDQUlIb21lQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVTY3JvbGwsXG4gIFNDQ0FJSG9tZUNvbnRlbnQsXG4gIFNDQ0FJSG9tZUNvbnRlbnRJbm5lcixcbiAgU0NDQUlIb21lR3JhZGllbnRUb3AsXG4gIFNDQ0FJSG9tZUdyYWRpZW50Qm90dG9tLFxuICBTQ0NBSUhvbWVIZWFkZXIsXG4gIFNDQ0FJSG9tZUdyZWV0aW5nLFxuICBTQ0NBSUhvbWVBZ2VudEluZm9Db250YWluZXIsXG4gIFNDQ0FJSG9tZUFnZW50SW5mbyxcbiAgU0NDQUlIb21lUHJvamVjdFN1bW1hcnksXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5Q29udGVudCxcbiAgU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSxcbiAgU0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbixcbiAgU0NDQUhXcmFwcGVyU3VtbWFyeVByb2plY3QsXG4gIFNDQ0FJSG9tZUludHJvZHVjdGlvbixcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyLFxuICBTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0LFxuICBTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSxcbiAgU0NDQUlIb21lSWNvbkNvbnRhaW5lcixcbiAgU0NDQUlIb21lTG9nb1dyYXBwZXIsXG4gIFNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayxcbiAgU0NDQUlIb21lVGl0bGUsXG4gIFNDQ0FJSG9tZVRpdGxlQmxvY2ssXG4gIFNDQ0FJSG9tZVN1YnRpdGxlLFxuICBTQ0NBSUhvbWVEeW5hbWljU2VjdGlvbixcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHMsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uSGVhZGVyLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25UaXRsZSxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGUsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24sXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsVGV4dCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxTa2VsZXRvbixcbiAgTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWCxcbn0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0LCB0eXBlIFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVXNlciwgaXNDb2xsYWJvcmF0b3JSb2xlLCBpc01hbmFnZXJSb2xlIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgZ2V0Q29udGV4dE1lbnRpb25JY29uIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29udGV4dE1lbnRpb25JY29ucydcbmltcG9ydCB7IG9yY2hlc3RyYXRvckhhc0hvdXJzU3ViYWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9vcmNoZXN0cmF0b3JTdWJhZ2VudHMnXG5pbXBvcnQgeyB2YWxpZGF0ZUlzTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL3ZhbGlkYXRlSXNNYWlhJ1xuaW1wb3J0IHsgaXNNYWlha2VyQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIH0gZnJvbSAnLi4vLi4vYXRvbXMvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zJ1xuaW1wb3J0IHsgRnJlcXVlbnRseVVzZWRBY3Rpb25zIH0gZnJvbSAnLi4vLi4vYXRvbXMvRnJlcXVlbnRseVVzZWRBY3Rpb25zJ1xuaW1wb3J0IHsgdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zJ1xuaW1wb3J0IHsgc29ydE1hbmFnZXJIb3Vyc0hvbWVGdWFzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc29ydE1hbmFnZXJIb3Vyc0hvbWVGdWFzJ1xuaW1wb3J0IHsgcmVzb2x2ZVJlY2VudENvbnRleHRzSG9tZUxpbWl0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcmVjZW50Q29udGV4dHNIb21lTGltaXQnXG5pbXBvcnQgeyB1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMnXG5pbXBvcnQgeyB1c2VSZWNlbnRDb250ZXh0cyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlY2VudENvbnRleHRzJ1xuaW1wb3J0IHR5cGUgeyBSZWNlbnRDb250ZXh0SXRlbSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvUmVjZW50Q29udGV4dHMnXG5pbXBvcnQgeyBNQUlBSXNvbG9nbyB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL01BSUFJc29sb2dvJ1xuaW1wb3J0IHsgVGVtcGxhdGVHcmFkaWVudEljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9UZW1wbGF0ZUdyYWRpZW50SWNvbidcbmltcG9ydCB7IENoYXRBSUhvbWVNYWlha2VyIH0gZnJvbSAnLi9DaGF0QUlIb21lTWFpYWtlcidcbmltcG9ydCB7XG4gIHJlc29sdmVBY3RpdmVDb250ZXh0RnJvbUdsb2JhbCxcbiAgcmVzb2x2ZUFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMsXG4gIHJlc29sdmVGYXFzQ29udGV4dEVudGl0eVR5cGUsXG4gIHJlc29sdmVGdWFzU2VjdGlvbixcbiAgcmVzb2x2ZUhhc1Bpbm5lZENvbnRleHQsXG4gIHJlc29sdmVIZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5LFxuICByZXNvbHZlSG9tZUdyZWV0aW5nLFxuICByZXNvbHZlSG9tZVNjcm9sbEdyYWRpZW50cyxcbiAgcmVzb2x2ZU1haWFIb21lTGFuZyxcbiAgcmVzb2x2ZU9yY2hlc3RyYXRvckhvbWVMYXlvdXQsXG4gIHJlc29sdmVQaW5uZWRFbnRpdHlUeXBlLFxuICByZXNvbHZlUHJvamVjdFN1bW1hcnlGZWF0dXJlQWNjZXNzLFxuICByZXNvbHZlUmVhbExpc3RzQWdlbnRJZCxcbiAgcmVzb2x2ZVJlYWxMaXN0c0VudGl0eVR5cGUsXG4gIHJlc29sdmVSZWNlbnRDb250ZXh0UGluT3V0Y29tZSxcbiAgcmVzb2x2ZVNob3VsZFNob3dGYXFzLFxuICByZXNvbHZlU2hvdWxkU2hvd0Z1YXMsXG4gIHJlc29sdmVGbG9hdGluZ0N1c3RvbUNlbnRlcixcbiAgZmlsdGVyUmVjZW50Q29udGV4dHNCeVR5cGVzLFxuICBidWlsZFJlY2VudENvbnRleHRTa2VsZXRvbktleXMsXG4gIHJlc29sdmVTaG93UmVjZW50Q29udGV4dHNCbG9jayxcbiAgcmVzb2x2ZVBsYW5uZXJGdWFzVmlzaWJpbGl0eSxcbiAgcmVzb2x2ZUhvbWVEeW5hbWljUGFuZWxWaXNpYmlsaXR5LFxuICByZXNvbHZlTWFpYUhlYWRlclN0YWNrTGF5b3V0LFxuICByZXNvbHZlU2hvd0FnZW50SW50cm9kdWN0aW9uLFxuICBidWlsZEZhcXNGZXRjaEtleSxcbiAgc2hvdWxkUmVmZXRjaEZhcXMsXG4gIHNob3VsZENsZWFyUGlubmVkQ29udGV4dE9uSG9tZVN0YXJ0LFxuICByZXNvbHZlUmVjZW50Q29udGV4dHNTZWN0aW9uQ29weUtleXMsXG4gIHJlc29sdmVPcmNoZXN0cmF0b3JSZWNlbnRDb250ZXh0c1N1YnRpdGxlS2V5LFxuICBidWlsZFBpbkdsb2JhbENvbnRleHRQYXRjaCxcbiAgcmVzb2x2ZUhvbWVDb250ZXh0R3JlZXRpbmdLZXksXG4gIHNob3VsZENoZWNrSG9tZVNjcm9sbCxcbiAgc2hvdWxkT2JzZXJ2ZUhvbWVTY3JvbGxDb250ZW50LFxuICBzaG91bGRSZW5kZXJSZWNlbnRDb250ZXh0c1BhbmVsLFxuICBzaG91bGRSZXNldEhvbWVTY3JvbGxHcmFkaWVudHMsXG59IGZyb20gJy4vQ2hhdEFJSG9tZS5oZWxwZXJzJ1xuXG50eXBlIENoYXRBSUhvbWVQcm9wcyA9IHtcbiAgb25TdGFydENoYXQ6IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdIHwgbnVsbCxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBtZW50aW9ucz86IG51bGwsXG4gICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgc2NJZD86IHN0cmluZyxcbiAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICkgPT4gdm9pZFxuICBoYW5kbGVyczogUmVjb3JkPG9wdGlvbnMsICgpID0+IHZvaWQ+XG4gIGV4cGFuZGVkPzogYm9vbGVhblxuICBmbG9hdGluZz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGVudW0gRnJlcXVlbnRRdWVzdGlvbnMge1xuICByZW50YWJpbGlkYWRfcHJveWVjdG8gPSAncmVudGFiaWxpZGFkX3Byb3llY3RvJyxcbiAgYXZhbmNlX3Byb3llY3RvID0gJ2F2YW5jZV9wcm95ZWN0bycsXG59XG5cbmNvbnN0IFJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IgPSAnIzRENEQ0RCdcbmNvbnN0IFJFQ0VOVF9DT05URVhUX0lDT05fU0laRV9QWCA9IDE1XG5cbmNvbnN0IFJlY2VudENvbnRleHRQaWxsID0gKHtcbiAgY29udGV4dCxcbiAgbGFiZWwsXG4gIG9uQ2xpY2ssXG4gIGZ1bGxXaWR0aCA9IGZhbHNlLFxufToge1xuICBjb250ZXh0OiBSZWNlbnRDb250ZXh0SXRlbVxuICBsYWJlbDogc3RyaW5nXG4gIG9uQ2xpY2s6ICgpID0+IHZvaWRcbiAgZnVsbFdpZHRoPzogYm9vbGVhblxufSkgPT4ge1xuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBzaG93VG9vbHRpcCB9ID0gdXNlUmVzaXplTGlzdGVuZXIodGV4dFJlZiwgW2xhYmVsXSlcblxuICByZXR1cm4gKFxuICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17b25DbGlja30gJGZ1bGxXaWR0aD17ZnVsbFdpZHRofT5cbiAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24+XG4gICAgICAgIHtjb250ZXh0LnR5cGUgPT09ICd0YXNrJyA/IChcbiAgICAgICAgICA8TGlzdENoZWNrbGlzdCBjb2xvcj17UkVDRU5UX0NPTlRFWFRfSUNPTl9DT0xPUn0gd2lkdGg9XCIxNXB4XCIgaGVpZ2h0PVwiMTVweFwiIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgZ2V0Q29udGV4dE1lbnRpb25JY29uKGNvbnRleHQudHlwZSwgUkVDRU5UX0NPTlRFWFRfSUNPTl9DT0xPUiwgdW5kZWZpbmVkLCBSRUNFTlRfQ09OVEVYVF9JQ09OX1NJWkVfUFgpXG4gICAgICAgICl9XG4gICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbj5cbiAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQgcmVmPXt0ZXh0UmVmfT5cbiAgICAgICAge3Nob3dUb29sdGlwID8gKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtsYWJlbH0+XG4gICAgICAgICAgICA8c3Bhbj57bGFiZWx9PC9zcGFuPlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBsYWJlbFxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQ+XG4gICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbD5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJSG9tZSA9ICh7IGhhbmRsZXJzLCBvblN0YXJ0Q2hhdCwgZXhwYW5kZWQsIGZsb2F0aW5nIH06IENoYXRBSUhvbWVQcm9wcykgPT4ge1xuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGFnZW50LCBzZWN0aW9uLCBjbGllbnQsIHByb2plY3QsIHRhc2ssIGNoaXBzUHJvamVjdCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCBzZXRDaGlwc1Byb2plY3QgfSA9XG4gICAgdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgY29uc3QgaXNNQUlBID0gdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpXG4gIGNvbnN0IGZsb2F0aW5nQ3VzdG9tQ2VudGVyID0gcmVzb2x2ZUZsb2F0aW5nQ3VzdG9tQ2VudGVyKGZsb2F0aW5nLCBhZ2VudD8udHlwZSlcbiAgY29uc3QgbGFuZyA9IHJlc29sdmVNYWlhSG9tZUxhbmcoaTE4bi5sYW5ndWFnZSlcblxuICBjb25zdCBzdW1tYXJ5UHJvamVjdEFjY2VzcyA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHJlc29sdmVQcm9qZWN0U3VtbWFyeUZlYXR1cmVBY2Nlc3Mod2luZG93KVxuICBjb25zdCBmYXFzQWNjZXNzID0gdHJ1ZVxuICBjb25zdCBzaG93UHJvamVjdFN1bW1hcnkgPSAhIShpc01BSUEgJiYgc3VtbWFyeVByb2plY3RBY2Nlc3MpXG4gIC8vIEVsIG9yY2hlc3RyYXRvciAodHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIG11ZXN0cmEgRkFRcy9GVUFzIGFncmVnYWRhcyBkZSBzdXMgc3ViYWdlbnRlcyxcbiAgLy8gYXPDrSBxdWUgTk8gc2UgdHJhdGEgY29tbyBtYWlha2VyIGFjw6EuXG4gIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuICBjb25zdCBoYXNIb3Vyc1N1YmFnZW50ID0gb3JjaGVzdHJhdG9ySGFzSG91cnNTdWJhZ2VudChhZ2VudClcbiAgY29uc3QgaGFzUGlubmVkQ29udGV4dCA9IHJlc29sdmVIYXNQaW5uZWRDb250ZXh0KHtcbiAgICB0YXNrSWQ6IHRhc2s/LmlkLFxuICAgIGNoaXBzUHJvamVjdElkOiBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCxcbiAgICBjbGllbnRJZDogY2xpZW50Py5pZCxcbiAgICBwcm9qZWN0SWQ6IHByb2plY3Q/LmlkLFxuICB9KVxuICBjb25zdCB7XG4gICAgaXNIZWFkZXJIb21lLFxuICAgIGlzT3JjaGVzdHJhdG9yLFxuICAgIGlzUGxhbm5lckhvbWUsXG4gICAgaXNSZWNlbnRDb250ZXh0c1N0ZXAsXG4gICAgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUsXG4gICAgaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSxcbiAgICBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUsXG4gICAgaXNDb250ZXh0SG9tZVN0ZXAsXG4gICAgaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUsXG4gIH0gPSByZXNvbHZlT3JjaGVzdHJhdG9ySG9tZUxheW91dCh7XG4gICAgc2VjdGlvbixcbiAgICBhZ2VudFR5cGU6IGFnZW50Py50eXBlLFxuICAgIGlzTWFpYTogaXNNQUlBLFxuICAgIGhhc0hvdXJzU3ViYWdlbnQsXG4gICAgcm9sZUlkOiB1c2VyLnJvbGVfaWQsXG4gICAgaGFzUGlubmVkQ29udGV4dCxcbiAgfSlcbiAgY29uc3QgaGVhZGVyVGFza0NvbnRleHRTdWJ0aXRsZUtleSA9IHJlc29sdmVIZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5KHtcbiAgICBpc0hlYWRlckhvdXJzQWdlbnRIb21lLFxuICAgIGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSxcbiAgICBpc01hbmFnZXI6IGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKSxcbiAgfSlcbiAgY29uc3QgYWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIHJlc29sdmVBbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzKHtcbiAgICAgICAgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLFxuICAgICAgICBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSxcbiAgICAgICAgcm9sZUlkOiB1c2VyLnJvbGVfaWQsXG4gICAgICB9KSxcbiAgICBbdXNlci5yb2xlX2lkLCBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUsIGlzSGVhZGVyVGFza0NvbnRleHRIb21lXVxuICApXG5cbiAgLy8gQ29udGV4dG8gYWN0aXZvIHBhcmEgZGVyaXZhciBGQVFzL2FjY2lvbmVzIChwYXNvIDIpLiBQcmVmZXJpbW9zIGVsIHBpbGwgY2xpY2tlYWRvO1xuICAvLyBzaSBubywgbG8gcmVjb25zdHJ1aW1vcyBkZXNkZSBlbCBjb250ZXh0byBnbG9iYWwuXG4gIGNvbnN0IFtzZWxlY3RlZENvbnRleHQsIHNldFNlbGVjdGVkQ29udGV4dF0gPSB1c2VTdGF0ZTxSZWNlbnRDb250ZXh0SXRlbSB8IG51bGw+KG51bGwpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFoYXNQaW5uZWRDb250ZXh0KSBzZXRTZWxlY3RlZENvbnRleHQobnVsbClcbiAgfSwgW2hhc1Bpbm5lZENvbnRleHRdKVxuXG4gIGNvbnN0IGFjdGl2ZUNvbnRleHQgPSB1c2VNZW1vPFJlY2VudENvbnRleHRJdGVtIHwgbnVsbD4oXG4gICAgKCkgPT5cbiAgICAgIHJlc29sdmVBY3RpdmVDb250ZXh0RnJvbUdsb2JhbCh7XG4gICAgICAgIGlzQ29udGV4dEhvbWVTdGVwLFxuICAgICAgICBzZWxlY3RlZENvbnRleHQsXG4gICAgICAgIHRhc2s6IHRhc2s/LmlkID8geyBpZDogdGFzay5pZCwgbmFtZTogdGFzay5uYW1lIH0gOiBudWxsLFxuICAgICAgICBjaGlwc1Byb2plY3Q6IGNoaXBzUHJvamVjdD8ucHJvamVjdElkXG4gICAgICAgICAgPyB7IHByb2plY3RJZDogY2hpcHNQcm9qZWN0LnByb2plY3RJZCwgcHJvamVjdE5hbWU6IGNoaXBzUHJvamVjdC5wcm9qZWN0TmFtZSB9XG4gICAgICAgICAgOiBudWxsLFxuICAgICAgICBjbGllbnQ6IGNsaWVudD8uaWQgPyB7IGlkOiBjbGllbnQuaWQsIG5hbWU6IGNsaWVudC5uYW1lIH0gOiBudWxsLFxuICAgICAgfSksXG4gICAgW1xuICAgICAgc2VsZWN0ZWRDb250ZXh0LFxuICAgICAgaXNDb250ZXh0SG9tZVN0ZXAsXG4gICAgICB0YXNrPy5pZCxcbiAgICAgIHRhc2s/Lm5hbWUsXG4gICAgICBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCxcbiAgICAgIGNoaXBzUHJvamVjdD8ucHJvamVjdE5hbWUsXG4gICAgICBjbGllbnQ/LmlkLFxuICAgICAgY2xpZW50Py5uYW1lLFxuICAgIF1cbiAgKVxuXG4gIGNvbnN0IHBpbm5lZEVudGl0eVR5cGUgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICByZXNvbHZlUGlubmVkRW50aXR5VHlwZSh7XG4gICAgICAgIHRhc2tJZDogdGFzaz8uaWQsXG4gICAgICAgIGNoaXBzUHJvamVjdElkOiBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCxcbiAgICAgICAgY2xpZW50SWQ6IGNsaWVudD8uaWQsXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdD8uaWQsXG4gICAgICB9KSxcbiAgICBbdGFzaz8uaWQsIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLCBwcm9qZWN0Py5pZCwgY2xpZW50Py5pZF1cbiAgKVxuXG4gIGNvbnN0IGZhcXNDb250ZXh0RW50aXR5VHlwZSA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIHJlc29sdmVGYXFzQ29udGV4dEVudGl0eVR5cGUoe1xuICAgICAgICBpc1BsYW5uZXJIb21lLFxuICAgICAgICBpc1JlY2VudENvbnRleHRzU3RlcCxcbiAgICAgICAgaXNIZWFkZXJIb21lLFxuICAgICAgICBpc0NvbnRleHRIb21lU3RlcCxcbiAgICAgICAgYWN0aXZlQ29udGV4dFR5cGU6IGFjdGl2ZUNvbnRleHQ/LnR5cGUsXG4gICAgICAgIHBpbm5lZEVudGl0eVR5cGUsXG4gICAgICB9KSxcbiAgICBbaXNQbGFubmVySG9tZSwgaXNSZWNlbnRDb250ZXh0c1N0ZXAsIGlzSGVhZGVySG9tZSwgaXNDb250ZXh0SG9tZVN0ZXAsIGFjdGl2ZUNvbnRleHQ/LnR5cGUsIHBpbm5lZEVudGl0eVR5cGVdXG4gIClcbiAgY29uc3QgaXNDbGllbnRDb250ZXh0Rm9yRmFxcyA9IGZhcXNDb250ZXh0RW50aXR5VHlwZSA9PT0gJ2NsaWVudCdcbiAgLy8gYHNlY3Rpb25gIHF1ZSBzZSBjb25zdWx0YSBwYXJhIGxhcyBGVUFzOiBlbiBuby1oZWFkZXIgc2lndWUgZWwgdGlwbyBkZSBjb250ZXh0byBwaW5lYWRvLlxuICAvLyBFbiBwbGFubmVyIHNlIGZ1ZXJ6YSBsYSBzZWN0aW9uIEFQSSBgcGxhbm5lcmAuXG4gIGNvbnN0IGZ1YXNTZWN0aW9uOiBTZWN0aW9uID0gcmVzb2x2ZUZ1YXNTZWN0aW9uKHtcbiAgICBpc1BsYW5uZXJIb21lLFxuICAgIGlzSGVhZGVySG9tZSxcbiAgICBwaW5uZWRFbnRpdHlUeXBlLFxuICAgIHNlY3Rpb24sXG4gIH0pXG5cbiAgY29uc3QgcmVhbExpc3RzQWdlbnRJZCA9IHJlc29sdmVSZWFsTGlzdHNBZ2VudElkKHtcbiAgICBpc01haWE6IGlzTUFJQSxcbiAgICBpc01haWFrZXIsXG4gICAgaXNSZWNlbnRDb250ZXh0c1N0ZXAsXG4gICAgaXNIZWFkZXJIb21lLFxuICAgIGlzQ29udGV4dEhvbWVTdGVwLFxuICAgIGFnZW50SWQ6IGFnZW50Py5pZCxcbiAgfSlcbiAgY29uc3QgcmVhbExpc3RzRW50aXR5VHlwZSA9IHJlc29sdmVSZWFsTGlzdHNFbnRpdHlUeXBlKHtcbiAgICBpc1BsYW5uZXJIb21lLFxuICAgIGlzSGVhZGVySG9tZSxcbiAgICBpc0NvbnRleHRIb21lU3RlcCxcbiAgICBhY3RpdmVDb250ZXh0VHlwZTogYWN0aXZlQ29udGV4dD8udHlwZSxcbiAgICBwaW5uZWRFbnRpdHlUeXBlLFxuICB9KVxuICBjb25zdCB7IGFjdGlvbnM6IGFnZW50RnVhcywgbG9hZGluZzogZnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICByZWFsTGlzdHNBZ2VudElkLFxuICAgIGZ1YXNTZWN0aW9uLFxuICAgIHJlYWxMaXN0c0VudGl0eVR5cGVcbiAgKVxuICBjb25zdCB7IGFjdGlvbnM6IGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzLCBsb2FkaW5nOiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICBpc0hlYWRlckhvdXJzQWdlbnRIb21lICYmICFpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWQsXG4gICAgJ3BsYW5uZXInXG4gIClcbiAgY29uc3QgeyBhY3Rpb25zOiBtYW5hZ2VySG9tZUZ1YXMsIGxvYWRpbmc6IG1hbmFnZXJIb21lRnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWQsXG4gICAgJ2hvbWVfd2l0aF9ob3VycydcbiAgKVxuICAvLyBBMTE6IG15LWRheSArIHNob3VsZC1yZXZpZXcgQ1RBcyBvbmx5IGZvciBjb2xsYWJvcmF0b3IgKHJvbGVfaWQ9NCkgKyBmdWxsc2NyZWVuIGhlYWRlciBob21lLlxuICAvLyBCb3RoIEZVQXMgc2hhcmUgc2VjdGlvbj1ob21lX2NvbGxhYm9yYXRvciAob3JkZXIgMSBteS1kYXkgLyBvcmRlciAyIHNob3VsZC1yZXZpZXcpLlxuICBjb25zdCBzaG91bGRGZXRjaENvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzID0gQm9vbGVhbihleHBhbmRlZCAmJiBpc0NvbGxhYm9yYXRvclJvbGUodXNlci5yb2xlX2lkKSAmJiBpc0hlYWRlckhvbWUpXG4gIGNvbnN0IHsgYWN0aW9uczogY29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMsIGxvYWRpbmc6IGNvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzTG9hZGluZyB9ID0gdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zKFxuICAgIHNob3VsZEZldGNoQ29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWQsXG4gICAgJ2hvbWVfY29sbGFib3JhdG9yJ1xuICApXG4gIGNvbnN0IGhlYWRlckhvdXJzRnVhcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUpIHJldHVybiBzb3J0TWFuYWdlckhvdXJzSG9tZUZ1YXMobWFuYWdlckhvbWVGdWFzKVxuICAgIHJldHVybiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc1xuICB9LCBbaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCBtYW5hZ2VySG9tZUZ1YXMsIGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzXSlcbiAgY29uc3QgaGVhZGVySG91cnNGdWFzTG9hZGluZyA9IGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSA/IG1hbmFnZXJIb21lRnVhc0xvYWRpbmcgOiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc0xvYWRpbmdcbiAgY29uc3QgcmVjZW50Q29udGV4dHNMaW1pdCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIHJlc29sdmVSZWNlbnRDb250ZXh0c0hvbWVMaW1pdCh7XG4gICAgICAgIGlzSGVhZGVySG91cnNBZ2VudEhvbWUsXG4gICAgICAgIGZ1YXNMb2FkaW5nOiBoZWFkZXJIb3Vyc0Z1YXNMb2FkaW5nLFxuICAgICAgICBmdWFzQ291bnQ6IGhlYWRlckhvdXJzRnVhcy5sZW5ndGgsXG4gICAgICB9KSxcbiAgICBbaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSwgaGVhZGVySG91cnNGdWFzTG9hZGluZywgaGVhZGVySG91cnNGdWFzLmxlbmd0aF1cbiAgKVxuICBjb25zdCB7IGNvbnRleHRzOiBmZXRjaGVkUmVjZW50Q29udGV4dHMsIGxvYWRpbmc6IHJlY2VudENvbnRleHRzTG9hZGluZyB9ID0gdXNlUmVjZW50Q29udGV4dHMoe1xuICAgIGVuYWJsZWQ6IGlzT3JjaGVzdHJhdG9yICYmICFpc1BsYW5uZXJIb21lLFxuICAgIGxpbWl0OiByZWNlbnRDb250ZXh0c0xpbWl0LFxuICB9KVxuICBjb25zdCByZWNlbnRDb250ZXh0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZmlsdGVyUmVjZW50Q29udGV4dHNCeVR5cGVzKGZldGNoZWRSZWNlbnRDb250ZXh0cywgYWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyksXG4gICAgW2ZldGNoZWRSZWNlbnRDb250ZXh0cywgYWxsb3dlZFJlY2VudENvbnRleHRUeXBlc11cbiAgKVxuICBjb25zdCByZWNlbnRDb250ZXh0U2tlbGV0b25LZXlzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBidWlsZFJlY2VudENvbnRleHRTa2VsZXRvbktleXMocmVjZW50Q29udGV4dHNMaW1pdCksXG4gICAgW3JlY2VudENvbnRleHRzTGltaXRdXG4gIClcbiAgY29uc3QgZmFxc0xpc3RBZ2VudElkID0gaXNDbGllbnRDb250ZXh0Rm9yRmFxcyA/IHJlYWxMaXN0c0FnZW50SWQgOiB1bmRlZmluZWRcbiAgY29uc3QgZmFxc0xpc3RFbnRpdHlUeXBlID0gaXNDbGllbnRDb250ZXh0Rm9yRmFxcyA/IHJlYWxMaXN0c0VudGl0eVR5cGUgOiB1bmRlZmluZWRcbiAgY29uc3Qge1xuICAgIGZhcXM6IGFnZW50RmFxcyxcbiAgICBsb2FkaW5nOiBmYXFzTG9hZGluZyxcbiAgICBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMsXG4gIH0gPSB1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMoZmFxc0xpc3RBZ2VudElkLCBsYW5nLCBmYXFzTGlzdEVudGl0eVR5cGUpXG4gIGNvbnN0IGZhcXNGZXRjaFJlZiA9IHVzZVJlZjx7IGFnZW50SWQ6IHN0cmluZzsgbGFuZzogc3RyaW5nOyBlbnRpdHlUeXBlPzogc3RyaW5nIH0gfCBudWxsPihudWxsKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIEZBUXMgc29sbyBwYXJhIGNvbnRleHRvIGNsaWVudGU7IGVsIHJlc3RvIG11ZXN0cmEgc29sbyBGVUFzLlxuICAgIGlmICghcmVhbExpc3RzQWdlbnRJZCB8fCAhaXNDbGllbnRDb250ZXh0Rm9yRmFxcykgcmV0dXJuXG4gICAgY29uc3QgY3VycmVudEtleSA9IGJ1aWxkRmFxc0ZldGNoS2V5KHJlYWxMaXN0c0FnZW50SWQsIGxhbmcsIHJlYWxMaXN0c0VudGl0eVR5cGUpXG4gICAgY29uc3QgbGFzdEtleSA9IGZhcXNGZXRjaFJlZi5jdXJyZW50XG4gICAgICA/IGJ1aWxkRmFxc0ZldGNoS2V5KGZhcXNGZXRjaFJlZi5jdXJyZW50LmFnZW50SWQsIGZhcXNGZXRjaFJlZi5jdXJyZW50LmxhbmcsIGZhcXNGZXRjaFJlZi5jdXJyZW50LmVudGl0eVR5cGUpXG4gICAgICA6IG51bGxcbiAgICBpZiAoc2hvdWxkUmVmZXRjaEZhcXMoY3VycmVudEtleSwgbGFzdEtleSkpIHtcbiAgICAgIGZhcXNGZXRjaFJlZi5jdXJyZW50ID0geyBhZ2VudElkOiByZWFsTGlzdHNBZ2VudElkLCBsYW5nLCBlbnRpdHlUeXBlOiByZWFsTGlzdHNFbnRpdHlUeXBlIH1cbiAgICAgIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyh7IGFnZW50SWQ6IHJlYWxMaXN0c0FnZW50SWQsIGxhbmcsIGVudGl0eVR5cGU6IHJlYWxMaXN0c0VudGl0eVR5cGUgfSlcbiAgICB9XG4gIH0sIFtyZWFsTGlzdHNBZ2VudElkLCByZWFsTGlzdHNFbnRpdHlUeXBlLCBpc0NsaWVudENvbnRleHRGb3JGYXFzLCBsYW5nLCBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNdKVxuXG4gIGNvbnN0IGZhcXMgPSBhZ2VudEZhcXNcbiAgY29uc3QgZnVhcyA9IGFnZW50RnVhc1xuICBjb25zdCBmYXFzQXJlTG9hZGluZyA9IGZhcXNMb2FkaW5nXG4gIGNvbnN0IGZ1YXNBcmVMb2FkaW5nID0gZnVhc0xvYWRpbmdcblxuICBjb25zdCBzaG91bGRTaG93RmFxcyA9IHJlc29sdmVTaG91bGRTaG93RmFxcyh7XG4gICAgaXNNYWlhOiBpc01BSUEsXG4gICAgaXNDbGllbnRDb250ZXh0Rm9yRmFxcyxcbiAgICBpc1JlY2VudENvbnRleHRzU3RlcCxcbiAgICBpc0NvbnRleHRIb21lU3RlcCxcbiAgICBpc0hlYWRlckhvbWUsXG4gICAgZmFxc0FjY2VzcyxcbiAgICBpc01haWFrZXIsXG4gICAgZmFxc0NvdW50OiBmYXFzLmxlbmd0aCxcbiAgICBmYXFzTG9hZGluZzogZmFxc0FyZUxvYWRpbmcsXG4gIH0pXG4gIGNvbnN0IHNob3VsZFNob3dGdWFzID0gcmVzb2x2ZVNob3VsZFNob3dGdWFzKHtcbiAgICBpc1JlY2VudENvbnRleHRzU3RlcCxcbiAgICBpc01haWFrZXIsXG4gICAgaXNDb250ZXh0SG9tZVN0ZXAsXG4gICAgaXNIZWFkZXJIb21lLFxuICAgIGZ1YXNDb3VudDogZnVhcy5sZW5ndGgsXG4gICAgZnVhc0xvYWRpbmc6IGZ1YXNBcmVMb2FkaW5nLFxuICB9KVxuICBjb25zdCB7IHNob3VsZFNob3dQbGFubmVyRnVhcyB9ID0gcmVzb2x2ZVBsYW5uZXJGdWFzVmlzaWJpbGl0eSh7XG4gICAgaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSxcbiAgICBoZWFkZXJIb3Vyc0Z1YXNMb2FkaW5nLFxuICAgIGhlYWRlckhvdXJzRnVhc0NvdW50OiBoZWFkZXJIb3Vyc0Z1YXMubGVuZ3RoLFxuICB9KVxuICBjb25zdCBzaG91bGRTaG93Q29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXNMb2FkaW5nID1cbiAgICBzaG91bGRGZXRjaENvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzICYmXG4gICAgY29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXNMb2FkaW5nICYmXG4gICAgY29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMubGVuZ3RoID09PSAwXG4gIGNvbnN0IHNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0NvbnRlbnQgPVxuICAgIHNob3VsZEZldGNoQ29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMgJiYgY29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMubGVuZ3RoID4gMFxuICBjb25zdCBzaG91bGRTaG93Q29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMgPVxuICAgIHNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0xvYWRpbmcgfHwgc2hvdWxkU2hvd0NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzQ29udGVudFxuXG4gIGNvbnN0IHNob3dQcm9qZWN0U3VtbWFyeUNhcmQgPSBzaG93UHJvamVjdFN1bW1hcnkgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnXG4gIGNvbnN0IHNob3dSZWNlbnRDb250ZXh0c0Jsb2NrID0gcmVzb2x2ZVNob3dSZWNlbnRDb250ZXh0c0Jsb2NrKFxuICAgIGlzUmVjZW50Q29udGV4dHNTdGVwLFxuICAgIHJlY2VudENvbnRleHRzTG9hZGluZyxcbiAgICByZWNlbnRDb250ZXh0cy5sZW5ndGhcbiAgKVxuICBjb25zdCB7IHNob3dGQVFzLCBzaG93RHluYW1pY1NlY3Rpb24sIGhvbWVTY3JvbGxhYmxlTGF5b3V0IH0gPSByZXNvbHZlSG9tZUR5bmFtaWNQYW5lbFZpc2liaWxpdHkoe1xuICAgIHNob3dSZWNlbnRDb250ZXh0c0Jsb2NrLFxuICAgIHNob3VsZFNob3dGYXFzLFxuICAgIHNob3VsZFNob3dGdWFzLFxuICAgIHNob3VsZFNob3dQbGFubmVyRnVhczogc2hvdWxkU2hvd1BsYW5uZXJGdWFzIHx8IHNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcyxcbiAgICBpc01haWFrZXIsXG4gICAgc2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCxcbiAgfSlcblxuICAvLyBMw7NnaWNhIGRlbCBzY3JvbGwgY29uIGdyYWRpZW50ZXNcbiAgY29uc3QgY29udGVudENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3Nob3dUb3BHcmFkaWVudCwgc2V0U2hvd1RvcEdyYWRpZW50XSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd0JvdHRvbUdyYWRpZW50LCBzZXRTaG93Qm90dG9tR3JhZGllbnRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1Njcm9sbGluZywgc2V0SXNTY3JvbGxpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFRpbWVvdXRSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuXG4gIC8vIFNhbHVkbyBmaWpvIHBvciB0aXBvIGRlIGNvbnRleHRvIChpMThuKS4gQ3VzdG9tIGFnZW50cyBzaWd1ZW4gdXNhbmRvIGFnZW50LmludHJvZHVjdGlvbi5cbiAgLy8gUGxhbm5lciB1c2EgdMOtdHVsbyArIGJhamFkYSBwcm9waW9zIChgcGxhbm5lckhvbWVgKSwgbm8gZXN0ZSBncmVldGluZy5cbiAgY29uc3QgZ3JlZXRpbmcgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICByZXNvbHZlSG9tZUdyZWV0aW5nKHtcbiAgICAgICAgaXNNYWlha2VyLFxuICAgICAgICBpc1BsYW5uZXJIb21lLFxuICAgICAgICBpc1JlY2VudENvbnRleHRzU3RlcCxcbiAgICAgICAgaXNNYWlhOiBpc01BSUEsXG4gICAgICAgIHBpbm5lZEVudGl0eVR5cGUsXG4gICAgICAgIGNvbnRleHRHcmVldGluZzogKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBncmVldGluZ0tleSA9IHJlc29sdmVIb21lQ29udGV4dEdyZWV0aW5nS2V5KGlzTUFJQSwgcGlubmVkRW50aXR5VHlwZSlcbiAgICAgICAgICByZXR1cm4gZ3JlZXRpbmdLZXkgPyB0KGdyZWV0aW5nS2V5KSA6IHVuZGVmaW5lZFxuICAgICAgICB9KSgpLFxuICAgICAgICBhZ2VudEludHJvZHVjdGlvbjogYWdlbnQ/LmludHJvZHVjdGlvbiA/PyB1bmRlZmluZWQsXG4gICAgICB9KSxcbiAgICBbYWdlbnQ/LmlkLCBhZ2VudD8uaW50cm9kdWN0aW9uLCBpc01haWFrZXIsIGlzUGxhbm5lckhvbWUsIGlzTUFJQSwgcGlubmVkRW50aXR5VHlwZSwgaXNSZWNlbnRDb250ZXh0c1N0ZXAsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbnRleHQ6IFJlY2VudENvbnRleHRJdGVtLCBvcmRlcjogbnVtYmVyKSA9PiB7XG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0Q29udGV4dFNlbGVjdGVkLCB7IG9yZGVyLCB0eXBlOiBjb250ZXh0LnR5cGUgfSlcblxuICAgICAgY29uc3QgcGluT3V0Y29tZSA9IHJlc29sdmVSZWNlbnRDb250ZXh0UGluT3V0Y29tZShjb250ZXh0LCB0KCdob21lTWVudS5yZWNlbnRDb250ZXh0cy50eXBlcy5wcm9qZWN0JykpXG5cbiAgICAgIHNldFNlbGVjdGVkQ29udGV4dChjb250ZXh0KVxuICAgICAgc2V0VGFzayhudWxsKVxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuXG4gICAgICBjb25zdCBjb250ZXh0UGF0Y2ggPSBidWlsZFBpbkdsb2JhbENvbnRleHRQYXRjaChwaW5PdXRjb21lKVxuICAgICAgaWYgKCFjb250ZXh0UGF0Y2gpIHJldHVyblxuXG4gICAgICBzZXRDbGllbnQ/Lihjb250ZXh0UGF0Y2guY2xpZW50KVxuICAgICAgc2V0UHJvamVjdChjb250ZXh0UGF0Y2gucHJvamVjdClcbiAgICAgIHNldFRhc2soY29udGV4dFBhdGNoLnRhc2spXG4gICAgICBzZXRDaGlwc1Byb2plY3QoY29udGV4dFBhdGNoLmNoaXBzUHJvamVjdClcblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ21haWEtaW5wdXQtcmVmb2N1cycpKVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtldmVudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVIb21lU3RhcnRDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdIHwgbnVsbCxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IG51bGwsXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmcsXG4gICAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2hvdWxkQ2xlYXJQaW5uZWRDb250ZXh0T25Ib21lU3RhcnQoaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCBmdWFJZCkpIHtcbiAgICAgICAgZmx1c2hTeW5jKCgpID0+IHtcbiAgICAgICAgICBzZXRTZWxlY3RlZENvbnRleHQobnVsbClcbiAgICAgICAgICBzZXRUYXNrKG51bGwpXG4gICAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBvblN0YXJ0Q2hhdChtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQsIGNvbnRleHREYXRhKVxuICAgIH0sXG4gICAgW2lzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSwgb25TdGFydENoYXQsIHNldENoaXBzUHJvamVjdCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrXVxuICApXG5cbiAgY29uc3QgcmVuZGVyUmVjZW50Q29udGV4dHMgPSAoKSA9PiB7XG4gICAgaWYgKCFzaG91bGRSZW5kZXJSZWNlbnRDb250ZXh0c1BhbmVsKGlzUmVjZW50Q29udGV4dHNTdGVwKSkgcmV0dXJuIG51bGxcblxuICAgIHJldHVybiAoXG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNcbiAgICAgICAgJGZpeGVkQ29udGVudFdpZHRoPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZSA/IE1BSUFfSEVBREVSX0NPTExBQk9SQVRPUl9IT01FX0NPTlRFTlRfV0lEVEhfUFggOiB1bmRlZmluZWR9XG4gICAgICA+XG4gICAgICAgIHtpc0hlYWRlckhvdXJzQWdlbnRIb21lID8gKFxuICAgICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgeyB0aXRsZUtleSwgc3VidGl0bGVLZXkgfSA9IHJlc29sdmVSZWNlbnRDb250ZXh0c1NlY3Rpb25Db3B5S2V5cyh7IGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSB9KVxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGU+e3QodGl0bGVLZXkpfTwvU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGU+e3Qoc3VidGl0bGVLZXkpfTwvU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNMaXN0ICRmbHVzaFBpbGxzPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZX0+XG4gICAgICAgICAge3JlY2VudENvbnRleHRzTG9hZGluZyAmJlxuICAgICAgICAgICAgcmVjZW50Q29udGV4dFNrZWxldG9uS2V5cy5tYXAoa2V5ID0+IDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFNrZWxldG9uIGtleT17a2V5fSAvPil9XG4gICAgICAgICAgeyFyZWNlbnRDb250ZXh0c0xvYWRpbmcgJiZcbiAgICAgICAgICAgIHJlY2VudENvbnRleHRzLm1hcCgoY29udGV4dCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPFJlY2VudENvbnRleHRQaWxsXG4gICAgICAgICAgICAgICAga2V5PXtgJHtjb250ZXh0LnR5cGV9LSR7Y29udGV4dC5pZH1gfVxuICAgICAgICAgICAgICAgIGNvbnRleHQ9e2NvbnRleHR9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2NvbnRleHQubmFtZS50cmltKCl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dChjb250ZXh0LCBpbmRleCArIDEpfVxuICAgICAgICAgICAgICAgIGZ1bGxXaWR0aD17aXNIZWFkZXJUYXNrQ29udGV4dEhvbWV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3Q+XG4gICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGNoZWNrU2Nyb2xsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRlbnRDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGFpbmVyIHx8ICFzaG91bGRDaGVja0hvbWVTY3JvbGwoY29udGFpbmVyLCBob21lU2Nyb2xsYWJsZUxheW91dCkpIHJldHVyblxuXG4gICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJcbiAgICBjb25zdCBncmFkaWVudHMgPSByZXNvbHZlSG9tZVNjcm9sbEdyYWRpZW50cyhzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0KVxuICAgIHNldFNob3dUb3BHcmFkaWVudChncmFkaWVudHMuc2hvd1RvcClcbiAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoZ3JhZGllbnRzLnNob3dCb3R0b20pXG4gIH0sIFtob21lU2Nyb2xsYWJsZUxheW91dF0pXG5cbiAgY29uc3QgaGFuZGxlU2Nyb2xsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNoZWNrU2Nyb2xsKClcbiAgICBzZXRJc1Njcm9sbGluZyh0cnVlKVxuXG4gICAgaWYgKHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudClcbiAgICB9XG5cbiAgICBzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldElzU2Nyb2xsaW5nKGZhbHNlKVxuICAgIH0sIDE1MClcbiAgfSwgW2NoZWNrU2Nyb2xsXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRSZXNldEhvbWVTY3JvbGxHcmFkaWVudHMoaG9tZVNjcm9sbGFibGVMYXlvdXQpKSB7XG4gICAgICBzZXRTaG93VG9wR3JhZGllbnQoZmFsc2UpXG4gICAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoZmFsc2UpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlZHVsZUNoZWNrU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgY2hlY2tTY3JvbGwoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBzY2hlZHVsZUNoZWNrU2Nyb2xsKClcbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoc2NoZWR1bGVDaGVja1Njcm9sbClcbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lcilcbiAgICBjb25zdCBzY3JvbGxDb250ZW50ID0gY29udGFpbmVyLmZpcnN0RWxlbWVudENoaWxkXG4gICAgaWYgKHNob3VsZE9ic2VydmVIb21lU2Nyb2xsQ29udGVudChzY3JvbGxDb250ZW50KSkge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShzY3JvbGxDb250ZW50KVxuICAgIH1cblxuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KHNjaGVkdWxlQ2hlY2tTY3JvbGwsIDEwMClcbiAgICBjb25zdCBsYXRlVGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoc2NoZWR1bGVDaGVja1Njcm9sbCwgNDAwKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICByZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpXG4gICAgICBjbGVhclRpbWVvdXQobGF0ZVRpbWVvdXRJZClcbiAgICAgIGlmIChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtob21lU2Nyb2xsYWJsZUxheW91dCwgY2hlY2tTY3JvbGwsIGhhbmRsZVNjcm9sbF0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSByZXR1cm5cbiAgICBjaGVja1Njcm9sbCgpXG4gIH0sIFtcbiAgICBob21lU2Nyb2xsYWJsZUxheW91dCxcbiAgICBjaGVja1Njcm9sbCxcbiAgICByZWNlbnRDb250ZXh0c0xvYWRpbmcsXG4gICAgcmVjZW50Q29udGV4dHMubGVuZ3RoLFxuICAgIGhlYWRlckhvdXJzRnVhc0xvYWRpbmcsXG4gICAgaGVhZGVySG91cnNGdWFzLmxlbmd0aCxcbiAgICBmdWFzTG9hZGluZyxcbiAgICBmdWFzLmxlbmd0aCxcbiAgICBmYXFzQXJlTG9hZGluZyxcbiAgICBmYXFzLmxlbmd0aCxcbiAgICBzaG91bGRTaG93UGxhbm5lckZ1YXMsXG4gICAgaXNNYWlha2VyLFxuICBdKVxuXG4gIGNvbnN0IHJlbmRlckhlYWRlckNvbnRlbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFpc01BSUEpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTQ0NBSUhvbWVBZ2VudEluZm9Db250YWluZXI+XG4gICAgICAgICAgPFNDQ0FJSG9tZUFnZW50SW5mbz5cbiAgICAgICAgICAgIHthZ2VudD8uZW1vaml9IHthZ2VudD8ubmFtZX1cbiAgICAgICAgICA8L1NDQ0FJSG9tZUFnZW50SW5mbz5cbiAgICAgICAgICB7YWdlbnQ/LmNyZWF0ZWRfYnkgJiYgIWlzTUFJQSAmJiAoXG4gICAgICAgICAgICA8U0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyPlxuICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgIGFnZW50Py5jcmVhdGVkX2J5Py5pc19kZWxldGVkID8gdCgnaG9tZU1lbnUuY3JlYXRlZEJ5VG9vbHRpcERlbGV0ZWQnKSA6IHQoJ2hvbWVNZW51LmNyZWF0ZWRCeVRvb2x0aXAnKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0PlxuICAgICAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LmNyZWF0ZWRCeScpfXsnICd9XG4gICAgICAgICAgICAgICAgICA8U0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWU+e2FnZW50Py5jcmVhdGVkX2J5Py5uYW1lfTwvU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWU+XG4gICAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVDcmVhdGVkQnlUZXh0PlxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lcj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lcj5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCB7IGNvbnRlbnRBbGlnblN0YXJ0LCBtYWlhSGVhZGVyU3RhY2tOZWVkc0dhcCB9ID0gcmVzb2x2ZU1haWFIZWFkZXJTdGFja0xheW91dCh7XG4gICAgICBpc1BsYW5uZXJIb21lLFxuICAgICAgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUsXG4gICAgICBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSxcbiAgICAgIGlzUmVjZW50Q29udGV4dHNTdGVwLFxuICAgICAgaGFzR3JlZXRpbmc6IEJvb2xlYW4oZ3JlZXRpbmcpLFxuICAgIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayAkbm9HYXA9eyFtYWlhSGVhZGVyU3RhY2tOZWVkc0dhcH0gJGFsaWduPXtjb250ZW50QWxpZ25TdGFydCA/ICdzdGFydCcgOiAnY2VudGVyJ30+XG4gICAgICAgIHshaXNQbGFubmVySG9tZSAmJiAhaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgJiYgIWlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lSWNvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVMb2dvV3JhcHBlcj5cbiAgICAgICAgICAgICAgPE1BSUFJc29sb2dvIC8+XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZUxvZ29XcmFwcGVyPlxuICAgICAgICAgIDwvU0NDQUlIb21lSWNvbkNvbnRhaW5lcj5cbiAgICAgICAgKX1cbiAgICAgICAge2lzUGxhbm5lckhvbWUgJiYgKFxuICAgICAgICAgIDxTQ0NBSUhvbWVUaXRsZUJsb2NrICRhbGlnbj1cInN0YXJ0XCI+XG4gICAgICAgICAgICA8U0NDQUlIb21lVGl0bGUgJHNpemU9XCJtZFwiICRhbGlnbj1cInN0YXJ0XCI+XG4gICAgICAgICAgICAgIHt0KCdob21lTWVudS5wbGFubmVySG9tZS50aXRsZScpfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVTdWJ0aXRsZSAkYWxpZ249XCJzdGFydFwiPnt0KCdob21lTWVudS5wbGFubmVySG9tZS5zdWJ0aXRsZScpfTwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZUJsb2NrPlxuICAgICAgICApfVxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgJiYgKFxuICAgICAgICAgIDxTQ0NBSUhvbWVUaXRsZUJsb2NrICRhbGlnbj1cInN0YXJ0XCIgJGZ1bGxXaWR0aD5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVUaXRsZSAkc2l6ZT1cImNvbnRleHRcIiAkYWxpZ249XCJzdGFydFwiICRmdWxsV2lkdGg+XG4gICAgICAgICAgICAgIHt0KCdob21lTWVudS5jb250ZXh0SG9tZS5ncmVldGluZycsIHsgbmFtZTogdXNlci5maXJzdE5hbWUgfSl9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZVRpdGxlPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVN1YnRpdGxlICRhbGlnbj1cInN0YXJ0XCIgJGNvbGxhYm9yYXRvckhvbWU+XG4gICAgICAgICAgICAgIHt0KGhlYWRlclRhc2tDb250ZXh0U3VidGl0bGVLZXkpfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVTdWJ0aXRsZT5cbiAgICAgICAgICA8L1NDQ0FJSG9tZVRpdGxlQmxvY2s+XG4gICAgICAgICl9XG4gICAgICAgIHshaXNQbGFubmVySG9tZSAmJiBpc1JlY2VudENvbnRleHRzU3RlcCAmJiAhaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8U0NDQUlIb21lVGl0bGUgJGFsaWduPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA/ICdzdGFydCcgOiB1bmRlZmluZWR9PlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY29udGV4dEhvbWUuZ3JlZXRpbmcnLCB7IG5hbWU6IHVzZXIuZmlyc3ROYW1lIH0pfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVTdWJ0aXRsZSAkYWxpZ249e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lID8gJ3N0YXJ0JyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgIHt0KHJlc29sdmVPcmNoZXN0cmF0b3JSZWNlbnRDb250ZXh0c1N1YnRpdGxlS2V5KGlzQ29sbGFib3JhdG9yUm9sZSh1c2VyLnJvbGVfaWQpKSl9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZVN1YnRpdGxlPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgIWlzUmVjZW50Q29udGV4dHNTdGVwICYmIGdyZWV0aW5nICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lR3JlZXRpbmdcbiAgICAgICAgICAgICRhbGlnbj17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnc3RhcnQnIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgJHNpemU9e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lID8gJ21kJyA6ICdsZyd9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2dyZWV0aW5nfVxuICAgICAgICAgIDwvU0NDQUlIb21lR3JlZXRpbmc+XG4gICAgICAgICl9XG4gICAgICA8L1NDQ0FJSG9tZU1haWFIZWFkZXJTdGFjaz5cbiAgICApXG4gIH1cblxuICBjb25zdCB7IGNvbnRlbnRBbGlnblN0YXJ0LCBmaXhlZEhvbWVDb250ZW50V2lkdGhDb2xsYWJvcmF0b3IgfSA9IHJlc29sdmVNYWlhSGVhZGVyU3RhY2tMYXlvdXQoe1xuICAgIGlzUGxhbm5lckhvbWUsXG4gICAgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUsXG4gICAgaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUsXG4gICAgaXNSZWNlbnRDb250ZXh0c1N0ZXAsXG4gICAgaGFzR3JlZXRpbmc6IEJvb2xlYW4oZ3JlZXRpbmcpLFxuICB9KVxuICBjb25zdCBmaXhlZEhvbWVDb250ZW50V2lkdGggPSBmaXhlZEhvbWVDb250ZW50V2lkdGhDb2xsYWJvcmF0b3JcbiAgICA/IE1BSUFfSEVBREVSX0NPTExBQk9SQVRPUl9IT01FX0NPTlRFTlRfV0lEVEhfUFhcbiAgICA6IHVuZGVmaW5lZFxuICBjb25zdCBzaG93QWdlbnRJbnRyb2R1Y3Rpb24gPSByZXNvbHZlU2hvd0FnZW50SW50cm9kdWN0aW9uKHNlY3Rpb24sIGlzTUFJQSwgQm9vbGVhbihhZ2VudD8uaW50cm9kdWN0aW9uKSlcblxuICBjb25zdCBob21lTWFpbiA9IChcbiAgICA8U0NDQUlIb21lQ29udGVudFxuICAgICAgc2hvd0ZBUXM9e2hvbWVTY3JvbGxhYmxlTGF5b3V0fVxuICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgJGZsb2F0aW5nQ3VzdG9tQ2VudGVyPXtmbG9hdGluZ0N1c3RvbUNlbnRlcn1cbiAgICAgICRjZW50ZXJWZXJ0aWNhbGx5PXtpc1BsYW5uZXJIb21lfVxuICAgICAgJGFsaWduU3RhcnQ9e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgJGZpeGVkQ29udGVudFdpZHRoPXtmaXhlZEhvbWVDb250ZW50V2lkdGh9XG4gICAgPlxuICAgICAgPFNDQ0FJSG9tZUNvbnRlbnRJbm5lclxuICAgICAgICBzaG93RkFRcz17aG9tZVNjcm9sbGFibGVMYXlvdXR9XG4gICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgJGZsb2F0aW5nQ3VzdG9tQ2VudGVyPXtmbG9hdGluZ0N1c3RvbUNlbnRlcn1cbiAgICAgICAgJGNlbnRlclZlcnRpY2FsbHk9e2lzUGxhbm5lckhvbWV9XG4gICAgICAgICRhbGlnblN0YXJ0PXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZSB8fCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZX1cbiAgICAgICAgJGhlYWRlckNvbGxhYm9yYXRvckhvbWU9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lfVxuICAgICAgICAkc2VjdGlvbk9yY2hlc3RyYXRvckhvbWU9e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgPlxuICAgICAgICA8U0NDQUlIb21lSGVhZGVyXG4gICAgICAgICAgJGdhcD17c2hvd0FnZW50SW50cm9kdWN0aW9uID8gJzIwcHgnIDogJzAnfVxuICAgICAgICAgICRtYXhXaWR0aD17aXNNQUlBID8gJzEwMCUnIDogJzM4MHB4J31cbiAgICAgICAgICAkaXNBZ2VudFZpZXc9eyFpc01BSUF9XG4gICAgICAgICAgJGFsaWduPXtjb250ZW50QWxpZ25TdGFydCA/ICdzdGFydCcgOiAnY2VudGVyJ31cbiAgICAgICAgPlxuICAgICAgICAgIHtyZW5kZXJIZWFkZXJDb250ZW50KCl9XG5cbiAgICAgICAgICB7c2hvd0FnZW50SW50cm9kdWN0aW9uICYmIGFnZW50ID8gKFxuICAgICAgICAgICAgPFNDQ0FJSG9tZUludHJvZHVjdGlvbiBleHBhbmRlZD17ZXhwYW5kZWR9PnthZ2VudC5pbnRyb2R1Y3Rpb259PC9TQ0NBSUhvbWVJbnRyb2R1Y3Rpb24+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU0NDQUlIb21lSGVhZGVyPlxuICAgICAgICB7c2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCAmJiAoXG4gICAgICAgICAgPFNDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0IG9uQ2xpY2s9e2hhbmRsZXJzLnByb2plY3RTdW1tYXJ5fT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeT5cbiAgICAgICAgICAgICAgPFRlbXBsYXRlR3JhZGllbnRJY29uIGhlaWdodD17MjR9IHdpZHRoPXsyNH0gLz5cbiAgICAgICAgICAgIDwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnk+XG4gICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50PlxuICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZT57dCgnaG9tZU1lbnUucHJvamVjdFN1bW1hcnkudGl0bGUnKX08L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGU+XG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeURlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgIHt0KCdob21lTWVudS5wcm9qZWN0U3VtbWFyeS5kZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICA8L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24+XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5Q29udGVudD5cbiAgICAgICAgICA8L1NDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0PlxuICAgICAgICApfVxuICAgICAgICB7c2hvd0R5bmFtaWNTZWN0aW9uICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lRHluYW1pY1NlY3Rpb25cbiAgICAgICAgICAgICRncm93PXtpc01haWFrZXJ9XG4gICAgICAgICAgICAkYWxpZ25TdGFydD17aXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgfHwgaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWV9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcyA/IChcbiAgICAgICAgICAgICAgPEZyZXF1ZW50bHlVc2VkQWN0aW9uc1xuICAgICAgICAgICAgICAgIG9uU3RhcnRDaGF0PXtoYW5kbGVIb21lU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgIGFnZW50SWQ9e2FnZW50Py5pZH1cbiAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgYWN0aW9ucz17Y29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXN9XG4gICAgICAgICAgICAgICAgbG9hZGluZz17Y29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXNMb2FkaW5nfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICB7c2hvdWxkU2hvd1BsYW5uZXJGdWFzID8gKFxuICAgICAgICAgICAgICA8RnJlcXVlbnRseVVzZWRBY3Rpb25zXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cInBsYW5uZXJcIlxuICAgICAgICAgICAgICAgIG9uU3RhcnRDaGF0PXtoYW5kbGVIb21lU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgIGFnZW50SWQ9e2FnZW50Py5pZH1cbiAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgYWN0aW9ucz17aGVhZGVySG91cnNGdWFzfVxuICAgICAgICAgICAgICAgIGxvYWRpbmc9e2hlYWRlckhvdXJzRnVhc0xvYWRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtyZW5kZXJSZWNlbnRDb250ZXh0cygpfVxuICAgICAgICAgICAge3Nob3VsZFNob3dGYXFzICYmIChcbiAgICAgICAgICAgICAgPEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1xuICAgICAgICAgICAgICAgIG9uU3RhcnRDaGF0PXtvblN0YXJ0Q2hhdH1cbiAgICAgICAgICAgICAgICBzaG93RkFRcz17c2hvd0ZBUXN9XG4gICAgICAgICAgICAgICAgc2hvd1Byb2plY3RTdW1tYXJ5PXtzaG93UHJvamVjdFN1bW1hcnl9XG4gICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgIGxhbmc9e2xhbmd9XG4gICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgIGZhcXM9e2ZhcXN9XG4gICAgICAgICAgICAgICAgbG9hZGluZz17ZmFxc0FyZUxvYWRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge3Nob3VsZFNob3dGdWFzICYmIChcbiAgICAgICAgICAgICAgPEZyZXF1ZW50bHlVc2VkQWN0aW9uc1xuICAgICAgICAgICAgICAgIG9uU3RhcnRDaGF0PXtvblN0YXJ0Q2hhdH1cbiAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgIGFjdGlvbnM9e2Z1YXN9XG4gICAgICAgICAgICAgICAgbG9hZGluZz17ZnVhc0FyZUxvYWRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2lzTWFpYWtlciA/IDxDaGF0QUlIb21lTWFpYWtlciBvblN0YXJ0Q2hhdD17b25TdGFydENoYXR9IC8+IDogbnVsbH1cbiAgICAgICAgICA8L1NDQ0FJSG9tZUR5bmFtaWNTZWN0aW9uPlxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVDb250ZW50SW5uZXI+XG4gICAgPC9TQ0NBSUhvbWVDb250ZW50PlxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlIb21lQ29udGFpbmVyIHNob3dGQVFzPXtzaG93RkFRc30gJGFsaWduU3RhcnQ9e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfT5cbiAgICAgIHtob21lU2Nyb2xsYWJsZUxheW91dCAmJiA8U0NDQUlIb21lR3JhZGllbnRUb3AgJHNob3c9e3Nob3dUb3BHcmFkaWVudH0gLz59XG4gICAgICB7aG9tZVNjcm9sbGFibGVMYXlvdXQgPyAoXG4gICAgICAgIDxTQ0NBSUhvbWVTY3JvbGwgcmVmPXtjb250ZW50Q29udGFpbmVyUmVmfSAkc2Nyb2xsYWJsZT5cbiAgICAgICAgICB7aG9tZU1haW59XG4gICAgICAgIDwvU0NDQUlIb21lU2Nyb2xsPlxuICAgICAgKSA6IChcbiAgICAgICAgaG9tZU1haW5cbiAgICAgICl9XG4gICAgICB7aG9tZVNjcm9sbGFibGVMYXlvdXQgJiYgPFNDQ0FJSG9tZUdyYWRpZW50Qm90dG9tICRzaG93PXtzaG93Qm90dG9tR3JhZGllbnR9IC8+fVxuICAgIDwvU0NDQUlIb21lQ29udGFpbmVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxTQUFTLEVBQUVDLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxRQUFRLE9BQU87QUFDMUY7QUFDQTtBQUNBLFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBRXJDLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsYUFBYSxRQUFRLGdEQUFnRDtBQUM5RSxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5QjtBQUkxRCxTQUNFQyxrQkFBa0IsRUFDbEJDLGVBQWUsRUFDZkMsZ0JBQWdCLEVBQ2hCQyxxQkFBcUIsRUFDckJDLG9CQUFvQixFQUNwQkMsdUJBQXVCLEVBQ3ZCQyxlQUFlLEVBQ2ZDLGlCQUFpQixFQUNqQkMsMkJBQTJCLEVBQzNCQyxrQkFBa0IsRUFDbEJDLHVCQUF1QixFQUN2QkMsOEJBQThCLEVBQzlCQyw0QkFBNEIsRUFDNUJDLGtDQUFrQyxFQUNsQ0MsMEJBQTBCLEVBQzFCQyxxQkFBcUIsRUFDckJDLDJCQUEyQixFQUMzQkMsc0JBQXNCLEVBQ3RCQywwQkFBMEIsRUFDMUJDLHNCQUFzQixFQUN0QkMsb0JBQW9CLEVBQ3BC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dUIsQ0FDakMsQ0FBQyxHQUNBLElBQUksRUFDUGlGLG9CQUFvQixDQUFDLENBQUMsRUFDdEJ0RCxjQUFjLGlCQUNiOUksSUFBQSxDQUFDL0Msd0JBQXdCO1VBQ3ZCNkUsV0FBVyxFQUFFQSxXQUFZO1VBQ3pCNkgsUUFBUSxFQUFFQSxRQUFTO1VBQ25Cbkcsa0JBQWtCLEVBQUVBLGtCQUFtQjtVQUN2Q3dDLE9BQU8sRUFBRXpELEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFc0IsRUFBRztVQUNuQlYsSUFBSSxFQUFFQSxJQUFLO1VBQ1hzSCxXQUFXLEVBQUVBLFdBQVk7VUFDekJ0QyxJQUFJLEVBQUVBLElBQUs7VUFDWDdCLE9BQU8sRUFBRXNDO1FBQWUsQ0FDekIsQ0FDRixFQUNBSSxjQUFjLGlCQUNiaEosSUFBQSxDQUFDOUMscUJBQXFCO1VBQ3BCNEUsV0FBVyxFQUFFQSxXQUFZO1VBQ3pCa0UsT0FBTyxFQUFFekQsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVzQixFQUFHO1VBQ25CNEcsV0FBVyxFQUFFQSxXQUFZO1VBQ3pCckUsT0FBTyxFQUFFdUMsSUFBSztVQUNkckMsT0FBTyxFQUFFdUM7UUFBZSxDQUN6QixDQUNGLEVBQ0FwRixTQUFTLGdCQUFHekQsSUFBQSxDQUFDdEMsaUJBQWlCO1VBQUNvRSxXQUFXLEVBQUVBO1FBQVksQ0FBRSxDQUFDLEdBQUcsSUFBSTtNQUFBLENBQzVDLENBQzFCO0lBQUEsQ0FDb0I7RUFBQyxDQUNSLENBQ25CO0VBRUQsb0JBQ0U1QixLQUFBLENBQUM5RixrQkFBa0I7SUFBQ3VQLFFBQVEsRUFBRUEsUUFBUztJQUFDaUcsV0FBVyxFQUFFOUssNkJBQThCO0lBQUExRCxRQUFBLEdBQ2hGeUksb0JBQW9CLGlCQUFJN0osSUFBQSxDQUFDeEYsb0JBQW9CO01BQUM0VixLQUFLLEVBQUVuRztJQUFnQixDQUFFLENBQUMsRUFDeEVKLG9CQUFvQixnQkFDbkI3SixJQUFBLENBQUMzRixlQUFlO01BQUNvSCxHQUFHLEVBQUVxSSxtQkFBb0I7TUFBQ3VHLFdBQVc7TUFBQWpQLFFBQUEsRUFDbkRvTztJQUFRLENBQ00sQ0FBQyxHQUVsQkEsUUFDRCxFQUNBM0Ysb0JBQW9CLGlCQUFJN0osSUFBQSxDQUFDdkYsdUJBQXVCO01BQUMyVixLQUFLLEVBQUUvRjtJQUFtQixDQUFFLENBQUM7RUFBQSxDQUM3RCxDQUFDO0FBRXpCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|