@comet/cms-admin 9.0.0-beta.2 → 9.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/blocks/AnchorBlock.d.ts +1 -1
- package/lib/blocks/AnchorBlock.d.ts.map +1 -1
- package/lib/blocks/DamVideoBlock.d.ts +1 -1
- package/lib/blocks/DamVideoBlock.d.ts.map +1 -1
- package/lib/blocks/DamVideoBlock.js +6 -2
- package/lib/blocks/EmailLinkBlock.d.ts +1 -1
- package/lib/blocks/EmailLinkBlock.d.ts.map +1 -1
- package/lib/blocks/ExternalLinkBlock.d.ts +1 -1
- package/lib/blocks/ExternalLinkBlock.d.ts.map +1 -1
- package/lib/blocks/InternalLinkBlock.d.ts +1 -1
- package/lib/blocks/InternalLinkBlock.d.ts.map +1 -1
- package/lib/blocks/PhoneLinkBlock.d.ts +1 -1
- package/lib/blocks/PhoneLinkBlock.d.ts.map +1 -1
- package/lib/blocks/PixelImageBlock.d.ts +1 -1
- package/lib/blocks/PixelImageBlock.d.ts.map +1 -1
- package/lib/blocks/PixelImageBlock.js +10 -4
- package/lib/blocks/SpaceBlock.d.ts +1 -1
- package/lib/blocks/SpaceBlock.d.ts.map +1 -1
- package/lib/blocks/SvgImageBlock.d.ts +1 -1
- package/lib/blocks/SvgImageBlock.d.ts.map +1 -1
- package/lib/blocks/SvgImageBlock.js +9 -3
- package/lib/blocks/VimeoVideoBlock.d.ts +1 -1
- package/lib/blocks/VimeoVideoBlock.d.ts.map +1 -1
- package/lib/blocks/VimeoVideoBlock.js +9 -3
- package/lib/blocks/YouTubeVideoBlock.d.ts +1 -1
- package/lib/blocks/YouTubeVideoBlock.d.ts.map +1 -1
- package/lib/blocks/YouTubeVideoBlock.js +9 -3
- package/lib/blocks/clipboard/CannotPasteBlockDialog.d.ts +1 -1
- package/lib/blocks/clipboard/CannotPasteBlockDialog.d.ts.map +1 -1
- package/lib/blocks/clipboard/useBlockClipboard.d.ts +2 -2
- package/lib/blocks/clipboard/useBlockClipboard.d.ts.map +1 -1
- package/lib/blocks/common/AdminTabsTabContent.d.ts +1 -1
- package/lib/blocks/common/AdminTabsTabContent.d.ts.map +1 -1
- package/lib/blocks/common/AdminTabsTabContent.js +2 -2
- package/lib/blocks/common/BlockAdminComponentButton.d.ts +1 -1
- package/lib/blocks/common/BlockAdminComponentButton.d.ts.map +1 -1
- package/lib/blocks/common/BlockAdminComponentNestedButton.d.ts +1 -1
- package/lib/blocks/common/BlockAdminComponentNestedButton.d.ts.map +1 -1
- package/lib/blocks/common/BlockAdminComponentNestedButton.js +1 -1
- package/lib/blocks/common/BlockAdminComponentRoot.d.ts +1 -1
- package/lib/blocks/common/BlockAdminComponentRoot.d.ts.map +1 -1
- package/lib/blocks/common/BlockAdminComponentRoot.js +1 -1
- package/lib/blocks/common/BlockAdminComponentSection.d.ts +1 -1
- package/lib/blocks/common/BlockAdminComponentSection.d.ts.map +1 -1
- package/lib/blocks/common/BlockAdminComponentSection.js +2 -2
- package/lib/blocks/common/BlockAdminComponentSectionGroup.d.ts +1 -1
- package/lib/blocks/common/BlockAdminComponentSectionGroup.d.ts.map +1 -1
- package/lib/blocks/common/BlockAdminComponentSectionGroup.js +1 -1
- package/lib/blocks/common/BlockAdminTabLabel.d.ts +1 -1
- package/lib/blocks/common/BlockAdminTabLabel.d.ts.map +1 -1
- package/lib/blocks/common/BlockAdminTabLabel.js +1 -1
- package/lib/blocks/common/BlockAdminTabs.d.ts +1 -1
- package/lib/blocks/common/BlockAdminTabs.d.ts.map +1 -1
- package/lib/blocks/common/BlockAdminTabs.js +3 -3
- package/lib/blocks/common/Collapsible.d.ts +1 -1
- package/lib/blocks/common/Collapsible.d.ts.map +1 -1
- package/lib/blocks/common/CollapsibleSwitchButtonHeader.d.ts +1 -1
- package/lib/blocks/common/CollapsibleSwitchButtonHeader.d.ts.map +1 -1
- package/lib/blocks/common/CollapsibleSwitchButtonHeader.js +1 -1
- package/lib/blocks/common/HiddenInSubroute.d.ts +1 -1
- package/lib/blocks/common/HiddenInSubroute.d.ts.map +1 -1
- package/lib/blocks/common/blockRow/BlockPreviewContent.d.ts +1 -1
- package/lib/blocks/common/blockRow/BlockPreviewContent.d.ts.map +1 -1
- package/lib/blocks/common/blockRow/BlockRow.d.ts.map +1 -1
- package/lib/blocks/common/blockRow/BlockRow.js +3 -1
- package/lib/blocks/common/blockRow/image/StackedImages.d.ts +1 -1
- package/lib/blocks/common/blockRow/image/StackedImages.d.ts.map +1 -1
- package/lib/blocks/config/BlocksConfigContext.d.ts +2 -2
- package/lib/blocks/config/BlocksConfigContext.d.ts.map +1 -1
- package/lib/blocks/context/BlockContext.d.ts +2 -2
- package/lib/blocks/context/BlockContext.d.ts.map +1 -1
- package/lib/blocks/context/BlockContextProvider.d.ts +1 -1
- package/lib/blocks/context/BlockContextProvider.d.ts.map +1 -1
- package/lib/blocks/createImageLinkBlock.d.ts +1 -1
- package/lib/blocks/createImageLinkBlock.d.ts.map +1 -1
- package/lib/blocks/createLinkBlock.d.ts +1 -1
- package/lib/blocks/createLinkBlock.d.ts.map +1 -1
- package/lib/blocks/createRichTextBlock.d.ts +1 -1
- package/lib/blocks/createRichTextBlock.d.ts.map +1 -1
- package/lib/blocks/createSeoBlock.d.ts +1 -1
- package/lib/blocks/createSeoBlock.d.ts.map +1 -1
- package/lib/blocks/createSeoBlock.js +3 -3
- package/lib/blocks/createTableBlock.d.ts +2 -2
- package/lib/blocks/createTableBlock.d.ts.map +1 -1
- package/lib/blocks/createTextImageBlock.d.ts +2 -2
- package/lib/blocks/createTextImageBlock.d.ts.map +1 -1
- package/lib/blocks/createTextLinkBlock.d.ts +1 -1
- package/lib/blocks/createTextLinkBlock.d.ts.map +1 -1
- package/lib/blocks/factories/columnsBlock/FinalFormColumnsSelect.d.ts +1 -1
- package/lib/blocks/factories/columnsBlock/FinalFormColumnsSelect.d.ts.map +1 -1
- package/lib/blocks/factories/columnsBlock/FinalFormLayoutSelect.d.ts +2 -2
- package/lib/blocks/factories/columnsBlock/FinalFormLayoutSelect.d.ts.map +1 -1
- package/lib/blocks/factories/columnsBlock/FinalFormLayoutSelect.js +6 -6
- package/lib/blocks/factories/createBlocksBlock.d.ts +1 -1
- package/lib/blocks/factories/createBlocksBlock.d.ts.map +1 -1
- package/lib/blocks/factories/createBlocksBlock.js +6 -6
- package/lib/blocks/factories/createColumnsBlock.d.ts +2 -2
- package/lib/blocks/factories/createColumnsBlock.d.ts.map +1 -1
- package/lib/blocks/factories/createColumnsBlock.js +5 -5
- package/lib/blocks/factories/createCompositeBlock.d.ts +1 -1
- package/lib/blocks/factories/createCompositeBlock.d.ts.map +1 -1
- package/lib/blocks/factories/createCompositeBlock.js +3 -1
- package/lib/blocks/factories/createListBlock.d.ts +2 -2
- package/lib/blocks/factories/createListBlock.d.ts.map +1 -1
- package/lib/blocks/factories/createListBlock.js +8 -6
- package/lib/blocks/factories/createOptionalBlock.d.ts +3 -3
- package/lib/blocks/factories/createOptionalBlock.d.ts.map +1 -1
- package/lib/blocks/factories/listBlock/createUseAdminComponent.d.ts +2 -2
- package/lib/blocks/factories/listBlock/createUseAdminComponent.d.ts.map +1 -1
- package/lib/blocks/factories/spaceBlock/createSpaceBlock.d.ts +1 -1
- package/lib/blocks/factories/spaceBlock/createSpaceBlock.d.ts.map +1 -1
- package/lib/blocks/form/createFinalFormBlock.d.ts +2 -2
- package/lib/blocks/form/createFinalFormBlock.d.ts.map +1 -1
- package/lib/blocks/helpers/composeBlocks/composeBlocks.d.ts +4 -4
- package/lib/blocks/helpers/composeBlocks/composeBlocks.d.ts.map +1 -1
- package/lib/blocks/helpers/composeBlocks/createCompositeBlockField.d.ts +1 -1
- package/lib/blocks/helpers/composeBlocks/createCompositeBlockField.d.ts.map +1 -1
- package/lib/blocks/helpers/composeBlocks/createCompositeBlockFields.d.ts +1 -1
- package/lib/blocks/helpers/composeBlocks/createCompositeBlockFields.d.ts.map +1 -1
- package/lib/blocks/helpers/composeBlocks/createSettingsBlock.d.ts +1 -1
- package/lib/blocks/helpers/composeBlocks/createSettingsBlock.d.ts.map +1 -1
- package/lib/blocks/helpers/composeBlocks/types.d.ts +3 -3
- package/lib/blocks/helpers/composeBlocks/types.d.ts.map +1 -1
- package/lib/blocks/helpers/composeBlocks/utils.d.ts +2 -2
- package/lib/blocks/helpers/composeBlocks/utils.d.ts.map +1 -1
- package/lib/blocks/helpers/createCompositeBlockSelectField.d.ts +1 -1
- package/lib/blocks/helpers/createCompositeBlockSelectField.d.ts.map +1 -1
- package/lib/blocks/helpers/createCompositeBlockSwitchField.d.ts +1 -1
- package/lib/blocks/helpers/createCompositeBlockSwitchField.d.ts.map +1 -1
- package/lib/blocks/helpers/createCompositeBlockTextField.d.ts +1 -1
- package/lib/blocks/helpers/createCompositeBlockTextField.d.ts.map +1 -1
- package/lib/blocks/helpers/decomposeUpdateStateAction.d.ts +1 -1
- package/lib/blocks/helpers/decomposeUpdateStateAction.d.ts.map +1 -1
- package/lib/blocks/helpers/deduplicateBlockDependencies.d.ts +1 -1
- package/lib/blocks/helpers/deduplicateBlockDependencies.d.ts.map +1 -1
- package/lib/blocks/helpers/isBlockInterface.d.ts +1 -1
- package/lib/blocks/helpers/isBlockInterface.d.ts.map +1 -1
- package/lib/blocks/helpers/withAdditionalBlockAttributes.d.ts +1 -1
- package/lib/blocks/helpers/withAdditionalBlockAttributes.d.ts.map +1 -1
- package/lib/blocks/iframebridge/IFrameMessage.d.ts +1 -1
- package/lib/blocks/iframebridge/IFrameMessage.d.ts.map +1 -1
- package/lib/blocks/image/EditImageDialog.d.ts +1 -1
- package/lib/blocks/image/EditImageDialog.d.ts.map +1 -1
- package/lib/blocks/image/EditImageDialog.js +2 -2
- package/lib/blocks/rte/extension/CmsLink/Decorator.d.ts +1 -1
- package/lib/blocks/rte/extension/CmsLink/Decorator.d.ts.map +1 -1
- package/lib/blocks/rte/extension/CmsLink/EditorComponent.d.ts +2 -2
- package/lib/blocks/rte/extension/CmsLink/EditorComponent.d.ts.map +1 -1
- package/lib/blocks/rte/extension/CmsLink/createCmsLinkToolbarButton.d.ts +1 -1
- package/lib/blocks/rte/extension/CmsLink/createCmsLinkToolbarButton.d.ts.map +1 -1
- package/lib/blocks/rte/extension/CmsLink/createCmsLinkToolbarButton.js +2 -2
- package/lib/blocks/table/CellValue.d.ts +1 -1
- package/lib/blocks/table/CellValue.d.ts.map +1 -1
- package/lib/blocks/table/CellValue.js +6 -6
- package/lib/blocks/table/ColumnHeader.d.ts +4 -4
- package/lib/blocks/table/ColumnHeader.d.ts.map +1 -1
- package/lib/blocks/table/ColumnHeader.js +1 -1
- package/lib/blocks/table/EditCell.js +4 -4
- package/lib/blocks/table/RowActionsCell.d.ts +2 -2
- package/lib/blocks/table/RowActionsCell.d.ts.map +1 -1
- package/lib/blocks/table/TableBlockContext.d.ts +1 -1
- package/lib/blocks/table/TableBlockContext.d.ts.map +1 -1
- package/lib/blocks/table/TableBlockContext.js +3 -1
- package/lib/blocks/table/TableBlockGrid.d.ts +1 -1
- package/lib/blocks/table/TableBlockGrid.d.ts.map +1 -1
- package/lib/blocks/table/dataGridStyles.d.ts +1 -1
- package/lib/blocks/table/dataGridStyles.d.ts.map +1 -1
- package/lib/blocks/table/utils/column.d.ts +3 -3
- package/lib/blocks/table/utils/column.d.ts.map +1 -1
- package/lib/blocks/table/utils/ensureMinimumTableState.d.ts +2 -2
- package/lib/blocks/table/utils/ensureMinimumTableState.d.ts.map +1 -1
- package/lib/blocks/table/utils/getClipboardValueForSchema.d.ts +1 -1
- package/lib/blocks/table/utils/getClipboardValueForSchema.d.ts.map +1 -1
- package/lib/blocks/table/utils/row.d.ts +2 -2
- package/lib/blocks/table/utils/row.d.ts.map +1 -1
- package/lib/blocks/types.d.ts +2 -2
- package/lib/blocks/types.d.ts.map +1 -1
- package/lib/blocks/utils.d.ts +1 -1
- package/lib/blocks/utils.d.ts.map +1 -1
- package/lib/builds/BuildEntry.js +1 -1
- package/lib/builds/PublisherPage.js +1 -1
- package/lib/common/InsertInBetweenAction.d.ts +1 -1
- package/lib/common/InsertInBetweenAction.d.ts.map +1 -1
- package/lib/common/InsertInBetweenAction.js +3 -3
- package/lib/common/MasterMenuRoutes.d.ts +1 -1
- package/lib/common/MasterMenuRoutes.d.ts.map +1 -1
- package/lib/common/PageName.js +1 -1
- package/lib/common/errors/errorMessages.d.ts +1 -1
- package/lib/common/errors/errorMessages.d.ts.map +1 -1
- package/lib/common/header/Header.d.ts +1 -1
- package/lib/common/header/Header.d.ts.map +1 -1
- package/lib/common/header/Header.js +1 -1
- package/lib/common/header/about/AboutModal.d.ts +1 -1
- package/lib/common/header/about/AboutModal.d.ts.map +1 -1
- package/lib/common/header/about/AboutModal.js +6 -6
- package/lib/common/header/about/build-information/useBuildInformation.d.ts +1 -1
- package/lib/common/header/about/build-information/useBuildInformation.d.ts.map +1 -1
- package/lib/common/image/ChooseFocalPoint.d.ts +1 -1
- package/lib/common/image/ChooseFocalPoint.d.ts.map +1 -1
- package/lib/common/image/ImageCrop.sc.d.ts +1 -1
- package/lib/common/image/ImageCrop.sc.d.ts.map +1 -1
- package/lib/common/image/ImageCrop.sc.js +2 -2
- package/lib/common/signOutButton/SignOutButton.d.ts +1 -1
- package/lib/common/signOutButton/SignOutButton.d.ts.map +1 -1
- package/lib/common/useEditState.d.ts +1 -1
- package/lib/common/useEditState.d.ts.map +1 -1
- package/lib/config/CometConfigContext.d.ts +9 -9
- package/lib/config/CometConfigContext.d.ts.map +1 -1
- package/lib/contentLanguage/contentLanguageConfig.d.ts +1 -1
- package/lib/contentLanguage/contentLanguageConfig.d.ts.map +1 -1
- package/lib/contentLanguage/useContentLanguage.d.ts +1 -1
- package/lib/contentLanguage/useContentLanguage.d.ts.map +1 -1
- package/lib/contentScope/ContentScopeIndicator.d.ts +1 -1
- package/lib/contentScope/ContentScopeIndicator.d.ts.map +1 -1
- package/lib/contentScope/ContentScopeIndicator.js +4 -4
- package/lib/contentScope/ContentScopeSelect.d.ts +1 -1
- package/lib/contentScope/ContentScopeSelect.d.ts.map +1 -1
- package/lib/contentScope/ContentScopeSelect.js +2 -3
- package/lib/contentScope/Controls.d.ts +1 -1
- package/lib/contentScope/Controls.d.ts.map +1 -1
- package/lib/contentScope/noContentScopeFallback/NoContentScopeFallback.d.ts +1 -1
- package/lib/contentScope/noContentScopeFallback/NoContentScopeFallback.d.ts.map +1 -1
- package/lib/contentScope/utils/defaultCreatePath.d.ts +1 -1
- package/lib/contentScope/utils/defaultCreatePath.d.ts.map +1 -1
- package/lib/contentScope/utils/groupObjectsIntoArrays.d.ts +1 -1
- package/lib/contentScope/utils/groupObjectsIntoArrays.d.ts.map +1 -1
- package/lib/cronJobs/JobLogs.js +1 -1
- package/lib/cronJobs/JobStatus.d.ts +1 -1
- package/lib/cronJobs/JobStatus.d.ts.map +1 -1
- package/lib/cronJobs/JobStatus.js +1 -1
- package/lib/dam/DamPage.d.ts +1 -1
- package/lib/dam/DamPage.d.ts.map +1 -1
- package/lib/dam/DamTable.d.ts +4 -3
- package/lib/dam/DamTable.d.ts.map +1 -1
- package/lib/dam/DamTable.js +3 -17
- package/lib/dam/DataGrid/DamContextMenu.d.ts +1 -1
- package/lib/dam/DataGrid/DamContextMenu.d.ts.map +1 -1
- package/lib/dam/DataGrid/FolderDataGrid.d.ts +2 -2
- package/lib/dam/DataGrid/FolderDataGrid.d.ts.map +1 -1
- package/lib/dam/DataGrid/FolderDataGrid.js +256 -256
- package/lib/dam/DataGrid/duplicatedFilenames/ManualDuplicatedFilenamesHandler.d.ts +1 -1
- package/lib/dam/DataGrid/duplicatedFilenames/ManualDuplicatedFilenamesHandler.d.ts.map +1 -1
- package/lib/dam/DataGrid/duplicatedFilenames/ManuallyHandleDuplicatedFilenamesDialog.d.ts +1 -1
- package/lib/dam/DataGrid/duplicatedFilenames/ManuallyHandleDuplicatedFilenamesDialog.d.ts.map +1 -1
- package/lib/dam/DataGrid/duplicatedFilenames/ManuallyHandleDuplicatedFilenamesDialog.js +2 -2
- package/lib/dam/DataGrid/fileUpload/FileUploadContext.d.ts +1 -1
- package/lib/dam/DataGrid/fileUpload/FileUploadContext.d.ts.map +1 -1
- package/lib/dam/DataGrid/fileUpload/FileUploadErrorDialog.d.ts +1 -1
- package/lib/dam/DataGrid/fileUpload/FileUploadErrorDialog.d.ts.map +1 -1
- package/lib/dam/DataGrid/fileUpload/FileUploadErrorDialog.js +2 -2
- package/lib/dam/DataGrid/fileUpload/fileUpload.utils.d.ts +1 -1
- package/lib/dam/DataGrid/fileUpload/fileUpload.utils.d.ts.map +1 -1
- package/lib/dam/DataGrid/fileUpload/useDamFileUpload.d.ts +2 -2
- package/lib/dam/DataGrid/fileUpload/useDamFileUpload.d.ts.map +1 -1
- package/lib/dam/DataGrid/filter/DamTableFilter.d.ts +1 -1
- package/lib/dam/DataGrid/filter/DamTableFilter.d.ts.map +1 -1
- package/lib/dam/DataGrid/filter/DamTableFilter.js +0 -10
- package/lib/dam/DataGrid/footer/DamFooter.d.ts +1 -1
- package/lib/dam/DataGrid/footer/DamFooter.d.ts.map +1 -1
- package/lib/dam/DataGrid/footer/DamFooter.js +1 -1
- package/lib/dam/DataGrid/label/DamItemLabel.d.ts +1 -1
- package/lib/dam/DataGrid/label/DamItemLabel.d.ts.map +1 -1
- package/lib/dam/DataGrid/label/DamItemLabel.js +3 -3
- package/lib/dam/DataGrid/label/DamItemLabelColumn.d.ts +5 -5
- package/lib/dam/DataGrid/label/DamItemLabelColumn.d.ts.map +1 -1
- package/lib/dam/DataGrid/label/DamItemLabelColumn.js +2 -2
- package/lib/dam/DataGrid/selection/DamMoreActions.d.ts +2 -1
- package/lib/dam/DataGrid/selection/DamMoreActions.d.ts.map +1 -1
- package/lib/dam/DataGrid/selection/DamMoreActions.js +4 -3
- package/lib/dam/DataGrid/selection/DamSelectionContext.d.ts +1 -1
- package/lib/dam/DataGrid/selection/DamSelectionContext.d.ts.map +1 -1
- package/lib/dam/DataGrid/thumbnail/DamThumbnail.d.ts +2 -2
- package/lib/dam/DataGrid/thumbnail/DamThumbnail.d.ts.map +1 -1
- package/lib/dam/DataGrid/thumbnail/DamThumbnail.js +4 -4
- package/lib/dam/DataGrid/useDamSearchHighlighting.d.ts +1 -1
- package/lib/dam/DataGrid/useDamSearchHighlighting.d.ts.map +1 -1
- package/lib/dam/FileForm/CropSettingsFields.d.ts +1 -1
- package/lib/dam/FileForm/CropSettingsFields.d.ts.map +1 -1
- package/lib/dam/FileForm/CropSettingsFields.js +1 -1
- package/lib/dam/FileForm/Duplicates.js +5 -5
- package/lib/dam/FileForm/EditFile.d.ts +3 -3
- package/lib/dam/FileForm/EditFile.d.ts.map +1 -1
- package/lib/dam/FileForm/EditFile.js +2 -2
- package/lib/dam/FileForm/FilePreview.d.ts +1 -1
- package/lib/dam/FileForm/FilePreview.d.ts.map +1 -1
- package/lib/dam/FileForm/FilePreview.js +4 -4
- package/lib/dam/FileForm/FileSettingsFields.d.ts +1 -1
- package/lib/dam/FileForm/FileSettingsFields.d.ts.map +1 -1
- package/lib/dam/FileForm/FileSettingsFields.js +1 -1
- package/lib/dam/FileForm/ReplaceFileButton.d.ts +1 -1
- package/lib/dam/FileForm/ReplaceFileButton.d.ts.map +1 -1
- package/lib/dam/FileForm/licenseType.d.ts +2 -2
- package/lib/dam/FileForm/licenseType.d.ts.map +1 -1
- package/lib/dam/FileForm/previews/AudioPreview.d.ts +1 -1
- package/lib/dam/FileForm/previews/AudioPreview.d.ts.map +1 -1
- package/lib/dam/FileForm/previews/AudioPreview.js +5 -5
- package/lib/dam/FileForm/previews/DefaultFilePreview.d.ts +1 -1
- package/lib/dam/FileForm/previews/DefaultFilePreview.d.ts.map +1 -1
- package/lib/dam/FileForm/previews/DefaultFilePreview.js +3 -3
- package/lib/dam/FileForm/previews/ImagePreview.d.ts +1 -1
- package/lib/dam/FileForm/previews/ImagePreview.d.ts.map +1 -1
- package/lib/dam/FileForm/previews/PdfPreview.d.ts +1 -1
- package/lib/dam/FileForm/previews/PdfPreview.d.ts.map +1 -1
- package/lib/dam/FileForm/previews/PdfPreview.js +2 -2
- package/lib/dam/FileForm/previews/VideoPreview.d.ts +1 -1
- package/lib/dam/FileForm/previews/VideoPreview.d.ts.map +1 -1
- package/lib/dam/FileForm/previews/VideoPreview.js +2 -2
- package/lib/dam/MoveDamItemDialog/ChooseFolder.d.ts +2 -2
- package/lib/dam/MoveDamItemDialog/ChooseFolder.d.ts.map +1 -1
- package/lib/dam/MoveDamItemDialog/ChooseFolder.js +1 -1
- package/lib/dam/MoveDamItemDialog/MoveDamItemDialog.d.ts +1 -1
- package/lib/dam/MoveDamItemDialog/MoveDamItemDialog.d.ts.map +1 -1
- package/lib/dam/MoveDamItemDialog/MoveDamItemDialog.js +1 -1
- package/lib/dam/MoveDamItemDialog/useFolderTree.d.ts +1 -1
- package/lib/dam/MoveDamItemDialog/useFolderTree.d.ts.map +1 -1
- package/lib/dam/MoveDamItemDialog/useFolderTreeSearch.d.ts +2 -2
- package/lib/dam/MoveDamItemDialog/useFolderTreeSearch.d.ts.map +1 -1
- package/lib/dam/blocks/DamFileDownloadLinkBlock.d.ts +1 -1
- package/lib/dam/blocks/DamFileDownloadLinkBlock.d.ts.map +1 -1
- package/lib/dam/blocks/DamFileDownloadLinkBlock.js +6 -2
- package/lib/dam/config/DamScopeProvider.d.ts +1 -1
- package/lib/dam/config/DamScopeProvider.d.ts.map +1 -1
- package/lib/dam/config/damConfig.d.ts +1 -1
- package/lib/dam/config/damConfig.d.ts.map +1 -1
- package/lib/dam/dependencies/createDamFileDependency.d.ts +1 -1
- package/lib/dam/dependencies/createDamFileDependency.d.ts.map +1 -1
- package/lib/dam/helpers/clearDamItemCache.d.ts +1 -1
- package/lib/dam/helpers/clearDamItemCache.d.ts.map +1 -1
- package/lib/dam/helpers/isFile.d.ts +1 -1
- package/lib/dam/helpers/isFile.d.ts.map +1 -1
- package/lib/dam/helpers/isFolder.d.ts +1 -1
- package/lib/dam/helpers/isFolder.d.ts.map +1 -1
- package/lib/dam/mediaAlternatives/MediaAlternativeForm.d.ts +1 -1
- package/lib/dam/mediaAlternatives/MediaAlternativeForm.d.ts.map +1 -1
- package/lib/dam/mediaAlternatives/MediaAlternativesGrid.d.ts +1 -1
- package/lib/dam/mediaAlternatives/MediaAlternativesGrid.d.ts.map +1 -1
- package/lib/dam/mediaAlternatives/MediaAlternativesGrid.js +3 -1
- package/lib/dashboard/DashboardHeader.d.ts +1 -1
- package/lib/dashboard/DashboardHeader.d.ts.map +1 -1
- package/lib/dashboard/DashboardHeader.js +2 -2
- package/lib/dashboard/__stories__/DateTime.stories.d.ts +7 -0
- package/lib/dashboard/__stories__/DateTime.stories.d.ts.map +1 -0
- package/lib/dashboard/__stories__/DateTime.stories.js +7 -0
- package/lib/dashboard/widgets/DashboardWidgetRoot.d.ts +1 -1
- package/lib/dashboard/widgets/DashboardWidgetRoot.d.ts.map +1 -1
- package/lib/dashboard/widgets/DashboardWidgetRoot.js +1 -1
- package/lib/dependencies/DependenciesList.d.ts +1 -1
- package/lib/dependencies/DependenciesList.d.ts.map +1 -1
- package/lib/dependencies/DependenciesList.js +3 -1
- package/lib/dependencies/DependentsList.d.ts +1 -1
- package/lib/dependencies/DependentsList.d.ts.map +1 -1
- package/lib/dependencies/DependentsList.js +3 -1
- package/lib/dependencies/createDependencyMethods.d.ts +3 -3
- package/lib/dependencies/createDependencyMethods.d.ts.map +1 -1
- package/lib/dependencies/createDocumentDependencyMethods.d.ts +3 -3
- package/lib/dependencies/createDocumentDependencyMethods.d.ts.map +1 -1
- package/lib/dependencies/dependenciesConfig.d.ts +1 -1
- package/lib/dependencies/dependenciesConfig.d.ts.map +1 -1
- package/lib/dependencies/getDisplayNameString.d.ts.map +1 -1
- package/lib/dependencies/getDisplayNameString.js +3 -1
- package/lib/dependencies/types.d.ts +2 -2
- package/lib/dependencies/types.d.ts.map +1 -1
- package/lib/documents/createDocumentRootBlocksMethods.d.ts +2 -2
- package/lib/documents/createDocumentRootBlocksMethods.d.ts.map +1 -1
- package/lib/documents/types.d.ts +10 -6
- package/lib/documents/types.d.ts.map +1 -1
- package/lib/form/file/FileField.d.ts +2 -2
- package/lib/form/file/FileField.d.ts.map +1 -1
- package/lib/form/file/FileField.js +5 -3
- package/lib/form/file/FileUploadField.d.ts +1 -1
- package/lib/form/file/FileUploadField.d.ts.map +1 -1
- package/lib/form/file/FinalFormFileUpload.d.ts +2 -2
- package/lib/form/file/FinalFormFileUpload.d.ts.map +1 -1
- package/lib/form/file/chooseFile/ChooseDamFileDialog.d.ts +10 -0
- package/lib/form/file/chooseFile/ChooseDamFileDialog.d.ts.map +1 -0
- package/lib/form/file/chooseFile/ChooseDamFileDialog.js +118 -0
- package/lib/form/file/upload.d.ts +1 -1
- package/lib/form/file/upload.d.ts.map +1 -1
- package/lib/form/queryUpdatedAt.d.ts.map +1 -1
- package/lib/form/useFormSaveConflict.d.ts +2 -2
- package/lib/form/useFormSaveConflict.d.ts.map +1 -1
- package/lib/graphql.generated.d.ts +7 -13
- package/lib/graphql.generated.d.ts.map +1 -1
- package/lib/index.d.ts +4 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/pages/createEditPageNode.d.ts +2 -2
- package/lib/pages/createEditPageNode.d.ts.map +1 -1
- package/lib/pages/createUsePage.d.ts +2 -2
- package/lib/pages/createUsePage.d.ts.map +1 -1
- package/lib/pages/pageSearch/PageSearch.d.ts +1 -1
- package/lib/pages/pageSearch/PageSearch.d.ts.map +1 -1
- package/lib/pages/pageSearch/usePageSearch.d.ts +3 -3
- package/lib/pages/pageSearch/usePageSearch.d.ts.map +1 -1
- package/lib/pages/pageTree/CopyPasteMenuItem.d.ts +1 -1
- package/lib/pages/pageTree/CopyPasteMenuItem.d.ts.map +1 -1
- package/lib/pages/pageTree/MovePageMenuItem.d.ts +1 -1
- package/lib/pages/pageTree/MovePageMenuItem.d.ts.map +1 -1
- package/lib/pages/pageTree/PageActions.d.ts +1 -1
- package/lib/pages/pageTree/PageActions.d.ts.map +1 -1
- package/lib/pages/pageTree/PageActions.js +3 -1
- package/lib/pages/pageTree/PageDeleteDialog.d.ts +1 -1
- package/lib/pages/pageTree/PageDeleteDialog.d.ts.map +1 -1
- package/lib/pages/pageTree/PageInfo.d.ts +2 -2
- package/lib/pages/pageTree/PageInfo.d.ts.map +1 -1
- package/lib/pages/pageTree/PageInfo.js +3 -3
- package/lib/pages/pageTree/PageLabel.d.ts +2 -2
- package/lib/pages/pageTree/PageLabel.d.ts.map +1 -1
- package/lib/pages/pageTree/PageLabel.js +5 -5
- package/lib/pages/pageTree/PageTree.d.ts +1 -1
- package/lib/pages/pageTree/PageTree.d.ts.map +1 -1
- package/lib/pages/pageTree/PageTree.js +2 -2
- package/lib/pages/pageTree/PageTreeContext.d.ts +4 -4
- package/lib/pages/pageTree/PageTreeContext.d.ts.map +1 -1
- package/lib/pages/pageTree/PageTreeRow.d.ts +3 -3
- package/lib/pages/pageTree/PageTreeRow.d.ts.map +1 -1
- package/lib/pages/pageTree/PageTreeService.d.ts +2 -2
- package/lib/pages/pageTree/PageTreeService.d.ts.map +1 -1
- package/lib/pages/pageTree/PageTypeIcon.d.ts +2 -2
- package/lib/pages/pageTree/PageTypeIcon.d.ts.map +1 -1
- package/lib/pages/pageTree/PageVisibility.d.ts +1 -1
- package/lib/pages/pageTree/PageVisibility.d.ts.map +1 -1
- package/lib/pages/pageTree/PageVisibilityIcon.d.ts +1 -1
- package/lib/pages/pageTree/PageVisibilityIcon.d.ts.map +1 -1
- package/lib/pages/pageTree/common/PageTreeTableRow.d.ts +1 -1
- package/lib/pages/pageTree/common/PageTreeTableRow.d.ts.map +1 -1
- package/lib/pages/pageTree/common/PageTreeTableRow.js +2 -2
- package/lib/pages/pageTree/useCopyPastePages/sendPages.d.ts +4 -4
- package/lib/pages/pageTree/useCopyPastePages/sendPages.d.ts.map +1 -1
- package/lib/pages/pageTree/useCopyPastePages.d.ts +3 -3
- package/lib/pages/pageTree/useCopyPastePages.d.ts.map +1 -1
- package/lib/pages/pageTree/useDndWindowScroll/useDndWindowScroll.d.ts +1 -1
- package/lib/pages/pageTree/useDndWindowScroll/useDndWindowScroll.d.ts.map +1 -1
- package/lib/pages/pageTree/usePageTree.d.ts +2 -2
- package/lib/pages/pageTree/usePageTree.d.ts.map +1 -1
- package/lib/pages/pageTreeConfig.d.ts +3 -3
- package/lib/pages/pageTreeConfig.d.ts.map +1 -1
- package/lib/pages/pageTreeSelect/FinalFormPageTreeSelect.d.ts +2 -2
- package/lib/pages/pageTreeSelect/FinalFormPageTreeSelect.d.ts.map +1 -1
- package/lib/pages/pageTreeSelect/PageTreeSelectDialog.d.ts +2 -2
- package/lib/pages/pageTreeSelect/PageTreeSelectDialog.d.ts.map +1 -1
- package/lib/pages/pageTreeSelect/PageTreeSelectDialog.js +5 -5
- package/lib/pages/pagesPage/ConfirmPageActionDialog.d.ts +1 -1
- package/lib/pages/pagesPage/ConfirmPageActionDialog.d.ts.map +1 -1
- package/lib/pages/pagesPage/PagesPage.d.ts +2 -2
- package/lib/pages/pagesPage/PagesPage.d.ts.map +1 -1
- package/lib/pages/pagesPage/PagesPageActionToolbar.d.ts +1 -1
- package/lib/pages/pagesPage/PagesPageActionToolbar.d.ts.map +1 -1
- package/lib/pages/pagesPage/PagesPageActionToolbarBatchUpdateHelper.d.ts +3 -3
- package/lib/pages/pagesPage/PagesPageActionToolbarBatchUpdateHelper.d.ts.map +1 -1
- package/lib/pages/pagesPage/createPagesQuery.d.ts +1 -1
- package/lib/pages/pagesPage/createPagesQuery.d.ts.map +1 -1
- package/lib/pages/useSaveConflictQuery.d.ts.map +1 -1
- package/lib/preview/block/BlockPreview.d.ts +1 -1
- package/lib/preview/block/BlockPreview.d.ts.map +1 -1
- package/lib/preview/block/BlockPreview.js +6 -4
- package/lib/preview/block/BlockPreviewWithTabs.d.ts +2 -2
- package/lib/preview/block/BlockPreviewWithTabs.d.ts.map +1 -1
- package/lib/preview/block/SplitPreview.d.ts +1 -1
- package/lib/preview/block/SplitPreview.d.ts.map +1 -1
- package/lib/preview/block/useBlockPreview.d.ts +1 -1
- package/lib/preview/block/useBlockPreview.d.ts.map +1 -1
- package/lib/preview/common/DeviceToggle.js +1 -1
- package/lib/preview/site/OpenLinkDialog.d.ts +1 -1
- package/lib/preview/site/OpenLinkDialog.d.ts.map +1 -1
- package/lib/preview/site/OpenLinkDialog.js +1 -1
- package/lib/preview/site/SitePreview.d.ts.map +1 -1
- package/lib/preview/site/SitePreview.js +9 -3
- package/lib/preview/site/iframebridge/SitePreviewIFrameMessage.d.ts +1 -1
- package/lib/preview/site/iframebridge/SitePreviewIFrameMessage.d.ts.map +1 -1
- package/lib/redirects/RedirectActiveness.d.ts +1 -1
- package/lib/redirects/RedirectActiveness.d.ts.map +1 -1
- package/lib/redirects/RedirectForm.d.ts +3 -3
- package/lib/redirects/RedirectForm.d.ts.map +1 -1
- package/lib/redirects/RedirectForm.gql.generated.d.ts +4 -4
- package/lib/redirects/RedirectForm.gql.generated.d.ts.map +1 -1
- package/lib/redirects/RedirectsGrid.d.ts +1 -1
- package/lib/redirects/RedirectsGrid.d.ts.map +1 -1
- package/lib/redirects/RedirectsGrid.gql.generated.d.ts +2 -2
- package/lib/redirects/RedirectsGrid.gql.generated.d.ts.map +1 -1
- package/lib/redirects/RedirectsGrid.js +2 -2
- package/lib/redirects/createRedirectsPage.d.ts +2 -2
- package/lib/redirects/createRedirectsPage.d.ts.map +1 -1
- package/lib/redirects/submitMutation.d.ts +3 -3
- package/lib/redirects/submitMutation.d.ts.map +1 -1
- package/lib/siteConfigs/siteConfigsConfig.d.ts +1 -1
- package/lib/siteConfigs/siteConfigsConfig.d.ts.map +1 -1
- package/lib/siteConfigs/useSiteConfig.d.ts +2 -2
- package/lib/siteConfigs/useSiteConfig.d.ts.map +1 -1
- package/lib/siteConfigs/useSiteConfigs.d.ts +1 -1
- package/lib/siteConfigs/useSiteConfigs.d.ts.map +1 -1
- package/lib/testing/test-utils.d.ts +1 -1
- package/lib/testing/test-utils.d.ts.map +1 -1
- package/lib/translation/AzureAiTranslatorProvider.d.ts +1 -1
- package/lib/translation/AzureAiTranslatorProvider.d.ts.map +1 -1
- package/lib/userPermissions/UserGrid.d.ts +1 -1
- package/lib/userPermissions/UserGrid.d.ts.map +1 -1
- package/lib/userPermissions/UserGrid.js +4 -2
- package/lib/userPermissions/hooks/currentUser.d.ts +1 -1
- package/lib/userPermissions/hooks/currentUser.d.ts.map +1 -1
- package/lib/userPermissions/hooks/currentUser.js +14 -6
- package/lib/userPermissions/user/ImpersonationButtons.d.ts.map +1 -1
- package/lib/userPermissions/user/ImpersonationButtons.js +3 -1
- package/lib/userPermissions/user/UserPageToolbar.js +2 -2
- package/lib/userPermissions/user/basicData/UserBasicData.js +1 -1
- package/lib/userPermissions/user/permissions/ContentScopeGrid.d.ts +1 -1
- package/lib/userPermissions/user/permissions/ContentScopeGrid.d.ts.map +1 -1
- package/lib/userPermissions/user/permissions/ContentScopeGrid.js +3 -1
- package/lib/userPermissions/user/permissions/PermissionGrid.d.ts.map +1 -1
- package/lib/userPermissions/user/permissions/PermissionGrid.js +3 -1
- package/lib/userPermissions/user/permissions/selectScopesDialogContent/SelectScopesDialogContent.d.ts +2 -2
- package/lib/userPermissions/user/permissions/selectScopesDialogContent/SelectScopesDialogContent.d.ts.map +1 -1
- package/lib/userPermissions/user/permissions/selectScopesDialogContent/SelectScopesDialogContent.js +3 -1
- package/lib/warnings/WarningActions.d.ts.map +1 -1
- package/lib/warnings/WarningActions.js +3 -1
- package/lib/warnings/WarningMessage.d.ts +1 -1
- package/lib/warnings/WarningMessage.d.ts.map +1 -1
- package/lib/warnings/WarningSeverity.d.ts +1 -1
- package/lib/warnings/WarningSeverity.d.ts.map +1 -1
- package/lib/warnings/WarningsGrid.d.ts.map +1 -1
- package/lib/warnings/WarningsGrid.js +3 -1
- package/lib/warnings/warningsConfig.d.ts +1 -1
- package/lib/warnings/warningsConfig.d.ts.map +1 -1
- package/package.json +22 -14
- package/lib/dam/DataGrid/filter/DamSortPopover.d.ts +0 -8
- package/lib/dam/DataGrid/filter/DamSortPopover.d.ts.map +0 -1
- package/lib/dam/DataGrid/filter/DamSortPopover.js +0 -124
- package/lib/dam/DataGrid/filter/DamSortPopover.sc.d.ts +0 -20
- package/lib/dam/DataGrid/filter/DamSortPopover.sc.d.ts.map +0 -1
- package/lib/dam/DataGrid/filter/DamSortPopover.sc.js +0 -71
- package/lib/form/file/chooseFile/ChooseFileDialog.d.ts +0 -10
- package/lib/form/file/chooseFile/ChooseFileDialog.d.ts.map +0 -1
- package/lib/form/file/chooseFile/ChooseFileDialog.js +0 -115
|
@@ -541,7 +541,7 @@ var BlockListHeader = /*#__PURE__*/styled("div", process.env.NODE_ENV === "produ
|
|
|
541
541
|
styles: "display:flex;justify-content:space-between;align-items:center"
|
|
542
542
|
} : {
|
|
543
543
|
name: "1066lcq",
|
|
544
|
-
styles: "display:flex;justify-content:space-between;align-items:center/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK2VxQyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvYmxvY2tzL2ZhY3Rvcmllcy9jcmVhdGVDb2x1bW5zQmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIFN0YWNrUGFnZSwgU3RhY2tQYWdlVGl0bGUsIFN0YWNrU3dpdGNoLCBTdGFja1N3aXRjaEFwaUNvbnRleHQgfSBmcm9tIFwiQGNvbWV0L2FkbWluXCI7XG5pbXBvcnQgeyBBZGQsIENvcHksIERlbGV0ZSwgSW52aXNpYmxlLCBQYXN0ZSwgVmlzaWJsZSB9IGZyb20gXCJAY29tZXQvYWRtaW4taWNvbnNcIjtcbmltcG9ydCB7IENoZWNrYm94LCBEaXZpZGVyLCBGb3JtQ29udHJvbExhYmVsLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHsgdHlwZSBEaXNwYXRjaCwgdHlwZSBSZWFjdE5vZGUsIHR5cGUgU2V0U3RhdGVBY3Rpb24gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHR5cGUgSW50bFNoYXBlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yLCB1c2VJbnRsIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFNlY3Rpb25cIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgQmxvY2tzRmluYWxGb3JtIH0gZnJvbSBcIi4uL2Zvcm0vQmxvY2tzRmluYWxGb3JtXCI7XG5pbXBvcnQgeyBjcmVhdGVCbG9ja1NrZWxldG9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvY3JlYXRlQmxvY2tTa2VsZXRvblwiO1xuaW1wb3J0IHsgZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llcyB9IGZyb20gXCIuLi9oZWxwZXJzL2RlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IEhvdmVyUHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvSG92ZXJQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQgeyBTZWxlY3RQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9TZWxlY3RQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIEJsb2NrQ2F0ZWdvcnksXG4gICAgdHlwZSBCbG9ja0RlcGVuZGVuY3ksXG4gICAgdHlwZSBCbG9ja0lucHV0QXBpLFxuICAgIHR5cGUgQmxvY2tJbnRlcmZhY2UsXG4gICAgdHlwZSBDdXN0b21CbG9ja0NhdGVnb3J5LFxuICAgIHR5cGUgUHJldmlld0NvbnRlbnQsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZU5ld1N0YXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBwYXJhbGxlbEFzeW5jRXZlcnkgfSBmcm9tIFwiLi4vdXRpbHMvcGFyYWxsZWxBc3luY0V2ZXJ5XCI7XG5pbXBvcnQgeyBGaW5hbEZvcm1Db2x1bW5zU2VsZWN0IH0gZnJvbSBcIi4vY29sdW1uc0Jsb2NrL0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3RcIjtcbmltcG9ydCB7IEZpbmFsRm9ybUxheW91dFNlbGVjdCB9IGZyb20gXCIuL2NvbHVtbnNCbG9jay9GaW5hbEZvcm1MYXlvdXRTZWxlY3RcIjtcbmltcG9ydCB7IHR5cGUgTGlzdEJsb2NrSXRlbSwgdHlwZSBMaXN0QmxvY2tTdGF0ZSB9IGZyb20gXCIuL2NyZWF0ZUxpc3RCbG9ja1wiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgYXMgY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQmxvY2tMYXlvdXQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb2x1bW5zOiBudW1iZXI7XG4gICAgbGFiZWw6IFJlYWN0Tm9kZTtcbiAgICBwcmV2aWV3OiBSZWFjdE5vZGU7XG4gICAgc2VjdGlvbj86XG4gICAgICAgIHwgc3RyaW5nXG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIGxhYmVsPzogUmVhY3ROb2RlO1xuICAgICAgICAgIH07XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tGcmFnbWVudDxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IHN0cmluZztcbiAgICBjb2x1bW5zOiBBcnJheTx7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgICAgICBwcm9wczogQmxvY2tJbnB1dEFwaTxUPjtcbiAgICB9Pjtcbn1cblxuaW50ZXJmYWNlIENvbHVtbnNCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIGxheW91dDogQ29sdW1uc0Jsb2NrTGF5b3V0O1xuICAgIGNvbHVtbnM6IExpc3RCbG9ja0l0ZW08VD5bXTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNvbHVtbnNCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBSZWFjdE5vZGU7XG4gICAgY2F0ZWdvcnk/OiBCbG9ja0NhdGVnb3J5IHwgQ3VzdG9tQmxvY2tDYXRlZ29yeTtcbiAgICBjb250ZW50QmxvY2s6IFQ7XG4gICAgbGF5b3V0czogQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbnNCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+KFxuICAgIHsgbmFtZSwgZGlzcGxheU5hbWUsIGNhdGVnb3J5ID0gQmxvY2tDYXRlZ29yeS5MYXlvdXQsIGNvbnRlbnRCbG9jaywgbGF5b3V0cywgdGFncyB9OiBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQ+LFxuICAgIG92ZXJyaWRlPzogKFxuICAgICAgICBibG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4gICAgKSA9PiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+Pixcbik6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+IHtcbiAgICBpZiAobGF5b3V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOdW1iZXIgb2YgbGF5b3V0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50ID0gY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBibG9jazogY29udGVudEJsb2NrIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRW1wdHlDb2x1bW5zKG51bWJlcjogbnVtYmVyKTogTGlzdEJsb2NrSXRlbTxUPltdIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShudW1iZXIpLmZpbGwodW5kZWZpbmVkKS5tYXAoKCkgPT4gKHtcbiAgICAgICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5kZWZhdWx0VmFsdWVzKCksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgQ29sdW1uc0Jsb2NrOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBjb250ZW50QmxvY2sudGFncyxcblxuICAgICAgICBjYXRlZ29yeSxcblxuICAgICAgICBkZWZhdWx0VmFsdWVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gbGF5b3V0c1swXTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IENvbHVtbnNCbG9ja1N0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIGxheW91dDogZGVmYXVsdExheW91dCxcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1wdHkgY29sdW1ucyBzbyB0aGUgbGlzdCBpcyBub3QgZW1wdHkgaW5pdGlhbGx5XG4gICAgICAgICAgICAgICAgY29sdW1uczogY3JlYXRlRW1wdHlDb2x1bW5zKGRlZmF1bHRMYXlvdXQuY29sdW1ucyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBpbnB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke2lucHV0LmxheW91dH1cIiFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogaW5wdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmlucHV0MlN0YXRlKGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RhdGUyT3V0cHV0OiAob3V0cHV0KSA9PiAoe1xuICAgICAgICAgICAgbGF5b3V0OiBvdXRwdXQubGF5b3V0Lm5hbWUsXG4gICAgICAgICAgICBjb2x1bW5zOiBvdXRwdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5zdGF0ZTJPdXRwdXQoY29sdW1uLnByb3BzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSBsYXlvdXRzLmZpbmQoKGxheW91dCkgPT4gbGF5b3V0Lm5hbWUgPT09IG91dHB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke291dHB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbnMgb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYXdhaXQgY29udGVudEJsb2NrLm91dHB1dDJTdGF0ZShjb2x1bW5zLnByb3BzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0NvbnRleHQucGFyZW50VXJsIH0sXG4gICAgICAgICAgICBsYXlvdXQ6IHN0YXRlLmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogc3RhdGUuY29sdW1uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IChwcmV2aWV3Q29udGV4dC5zaG93VmlzaWJsZU9ubHkgPyBjLnZpc2libGUgOiB0cnVlKSkgLy8gZGVwZW5kaW5nIG9uIGNvbnRleHQgc2hvdyBhbGwgYmxvY2tzIG9yIG9ubHkgdmlzaWJsZSBibG9ja3NcbiAgICAgICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0NvbnRleHQucGFyZW50VXJsU3ViUm91dGUgPz8gcHJldmlld0NvbnRleHQucGFyZW50VXJsfS8ke2NvbHVtbi5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNvbHVtbi5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50VXJsOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogYmxvY2tBZG1pblJvdXRlIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGlzVmFsaWQ6IChzdGF0ZSkgPT4gcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmNvbHVtbnMsIChjb2x1bW4pID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcykpLFxuXG4gICAgICAgIGFuY2hvcnM6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmNvbHVtbnMucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oY29udGVudEJsb2NrLmFuY2hvcnM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmNvbHVtbnMucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmRlcGVuZGVuY2llcywgLi4uKGNvbnRlbnRCbG9jay5kZXBlbmRlbmNpZXM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4gPSB7IC4uLm91dHB1dCwgY29sdW1uczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBuZXdPdXRwdXQuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLnJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dChjb2x1bW4ucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpID0gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2U6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPExpc3RCbG9ja1N0YXRlPFQ+Pj4gPSAobGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9ja1N0YXRlID0gcmVzb2x2ZU5ld1N0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogeyBibG9ja3M6IHByZXZTdGF0ZS5jb2x1bW5zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZUFjdGlvbjogbGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogbGlzdEJsb2NrU3RhdGUuYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgY3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4sXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJsZSxcbiAgICAgICAgICAgIH0gPSB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCh7IHN0YXRlOiB7IGJsb2Nrczogc3RhdGUuY29sdW1ucyB9LCB1cGRhdGVTdGF0ZTogaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoIGluaXRpYWxQYWdlPVwibGlzdFwiIGRpc2FibGVGb3JjZVByb21wdFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja3NGaW5hbEZvcm08eyBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDsgY29sdW1uczogbnVtYmVyIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsoeyBsYXlvdXQsIGNvbHVtbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgPSBncm91cExheW91dHNCeUNvbHVtbnNBcGkuZ2V0RGVmYXVsdExheW91dChjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMYXlvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuY29sdW1ucyAhPT0gY29sdW1ucyAmJiBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID8gZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA6IGxheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW5nRW1wdHlDb2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA+IHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IGNyZWF0ZUVtcHR5Q29sdW1ucyhjb2x1bW5zIC0gcHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoKSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBuZXdMYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5wcmV2U3RhdGUuY29sdW1ucywgLi4ubWlzc2luZ0VtcHR5Q29sdW1uc10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWVzPXt7IGxheW91dDogc3RhdGUubGF5b3V0LCBjb2x1bW5zOiBzdGF0ZS5sYXlvdXQuY29sdW1ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5zXCIgZGVmYXVsdE1lc3NhZ2U9XCJDb2x1bW5zXCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtncm91cExheW91dHNCeUNvbHVtbnNBcGkuY29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMubGF5b3V0XCIgZGVmYXVsdE1lc3NhZ2U9XCJMYXlvdXRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD17RmluYWxGb3JtTGF5b3V0U2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0cz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldExheW91dHMoc3RhdGUubGF5b3V0LmNvbHVtbnMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja3NGaW5hbEZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIHRpdGxlPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLml0ZW1zXCIgZGVmYXVsdE1lc3NhZ2U9XCJJdGVtc1wiIC8+fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZENvdW50ID09PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmNvbHVtbnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2NvbHVtbi5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2NvbHVtbi5rZXl9L2NvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17Y29sdW1uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUHJldmlld0NvbnRlbnQgYmxvY2s9e2NvbnRlbnRCbG9ja30gc3RhdGU9e2NvbHVtbi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17Y29sdW1uSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgY29sdW1uLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbY29sdW1uLmtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gWy4uLnByZXZTdGF0ZS5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uVG9Nb3ZlID0gY29sdW1ucy5zcGxpY2UoZnJvbSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKHRvLCAwLCBjb2x1bW5Ub01vdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGNvbHVtbnMgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB0b2dnbGVWaXNpYmxlKGNvbHVtbi5rZXkpfSBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpc2libGUgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudEJsb2NrLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb2x1bW4ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYXN0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhjb2x1bW5JbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtjb2x1bW4uc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGNvbHVtbiwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRGbj17KCkgPT4gY29udGVudEJsb2NrLmlzVmFsaWQoY29sdW1uLnByb3BzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2NvbHVtbi5zbGlkZUlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2NvbHVtbkluZGV4ID49IHN0YXRlLmNvbHVtbnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5hZGRJdGVtXCIgZGVmYXVsdE1lc3NhZ2U9XCJBZGQgaXRlbVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8QWRkIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmVkaXRDb2x1bW5cIiwgZGVmYXVsdE1lc3NhZ2U6IFwiRWRpdCBjb2x1bW5cIiB9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IHN0YXRlLmNvbHVtbnMuZmluZEluZGV4KChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy51bmtub3duQ29sdW1uXCIgZGVmYXVsdE1lc3NhZ2U9XCJDYW4ndCBmaW5kIGNvbHVtblwiIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5jb2x1bW5zW21hdGNoSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlVGl0bGUgdGl0bGU9e2NvbHVtbkNvdW50TGFiZWwoaW50bCwgbWF0Y2hJbmRleCArIDEpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29udGVudEJsb2NrLkFkbWluQ29tcG9uZW50IHN0YXRlPXttYXRjaC5wcm9wc30gdXBkYXRlU3RhdGU9e2NyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuKGtleSl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLm5vQ29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8gY29sdW1uc1wiIC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxQcmV2aWV3Q29udGVudFtdPihcbiAgICAgICAgICAgICAgICAocHJldmlld0NvbnRlbnQsIGN1cnJlbnRDb2x1bW4pID0+IFsuLi5wcmV2aWV3Q29udGVudCwgLi4uY29udGVudEJsb2NrLnByZXZpZXdDb250ZW50KGN1cnJlbnRDb2x1bW4ucHJvcHMsIGNvbnRleHQpXSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eY29sdW1ucy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbnNCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmNvbHVtbnNbbnVtXTtcblxuICAgICAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29udGVudEJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBleHRyYWN0VGV4dENvbnRlbnRzOiAoc3RhdGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluY2x1ZGVJbnZpc2libGVDb250ZW50ID0gb3B0aW9ucz8uaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29sdW1uLnZpc2libGUgJiYgIWluY2x1ZGVJbnZpc2libGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY29udGVudCwgLi4uKGNvbnRlbnRCbG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY29sdW1uLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKENvbHVtbnNCbG9jayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbHVtbnNCbG9jaztcbn1cblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgcGFkZGluZzogMTJweCAwO1xuYDtcblxuY29uc3QgU2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbCA9IHN0eWxlZChGb3JtQ29udHJvbExhYmVsKWBcbiAgICBwYWRkaW5nOiAxNXB4IDEwcHggMTVweCA3cHg7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkNvbnRlbnQgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDRweCAwO1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25JY29uID0gc3R5bGVkKEFkZClgXG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbnR5cGUgR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkgPSB7XG4gICAgY29sdW1uczogbnVtYmVyW107XG4gICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0IHwgdW5kZWZpbmVkO1xufTtcblxuZnVuY3Rpb24gY29sdW1uQ291bnRMYWJlbChpbnRsOiBJbnRsU2hhcGUsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmNvbHVtblRpdGxlXCIsXG4gICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogXCJDb2x1bW4ge251bWJlcn1cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBudW1iZXI6IGNvdW50IH0sXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdKTogR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkge1xuICAgIGNvbnN0IGdyb3VwZWRMYXlvdXRzID0gbGF5b3V0cy5yZWR1Y2UoKGFjYywgYykgPT4ge1xuICAgICAgICBhY2Muc2V0KGMuY29sdW1ucywgWy4uLihhY2MuZ2V0KGMuY29sdW1ucykgfHwgW10pLCBjXSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbmV3IE1hcDxudW1iZXIsIENvbHVtbnNCbG9ja0xheW91dFtdPigpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbnM6IEFycmF5LmZyb20oZ3JvdXBlZExheW91dHMua2V5cygpKSxcbiAgICAgICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0cyA9IGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiBsYXlvdXRzLmxlbmd0aCA/IGxheW91dHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ== */",
|
|
544
|
+
styles: "display:flex;justify-content:space-between;align-items:center/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK2VxQyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvYmxvY2tzL2ZhY3Rvcmllcy9jcmVhdGVDb2x1bW5zQmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIFN0YWNrUGFnZSwgU3RhY2tQYWdlVGl0bGUsIFN0YWNrU3dpdGNoLCBTdGFja1N3aXRjaEFwaUNvbnRleHQgfSBmcm9tIFwiQGNvbWV0L2FkbWluXCI7XG5pbXBvcnQgeyBBZGQsIENvcHksIERlbGV0ZSwgSW52aXNpYmxlLCBQYXN0ZSwgVmlzaWJsZSB9IGZyb20gXCJAY29tZXQvYWRtaW4taWNvbnNcIjtcbmltcG9ydCB7IENoZWNrYm94LCBEaXZpZGVyLCBGb3JtQ29udHJvbExhYmVsLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXNwYXRjaCwgUmVhY3ROb2RlLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBJbnRsU2hhcGUsIHR5cGUgTWVzc2FnZURlc2NyaXB0b3IsIHVzZUludGwgfSBmcm9tIFwicmVhY3QtaW50bFwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9BZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlclwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50UGFwZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvblwiO1xuaW1wb3J0IHsgQmxvY2tQcmV2aWV3Q29udGVudCB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tQcmV2aWV3Q29udGVudFwiO1xuaW1wb3J0IHsgQmxvY2tSb3cgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUm93XCI7XG5pbXBvcnQgeyBCbG9ja3NGaW5hbEZvcm0gfSBmcm9tIFwiLi4vZm9ybS9CbG9ja3NGaW5hbEZvcm1cIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7XG4gICAgQmxvY2tDYXRlZ29yeSxcbiAgICB0eXBlIEJsb2NrRGVwZW5kZW5jeSxcbiAgICB0eXBlIEJsb2NrSW5wdXRBcGksXG4gICAgdHlwZSBCbG9ja0ludGVyZmFjZSxcbiAgICB0eXBlIEN1c3RvbUJsb2NrQ2F0ZWdvcnksXG4gICAgdHlwZSBQcmV2aWV3Q29udGVudCxcbn0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyByZXNvbHZlTmV3U3RhdGUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IEZpbmFsRm9ybUNvbHVtbnNTZWxlY3QgfSBmcm9tIFwiLi9jb2x1bW5zQmxvY2svRmluYWxGb3JtQ29sdW1uc1NlbGVjdFwiO1xuaW1wb3J0IHsgRmluYWxGb3JtTGF5b3V0U2VsZWN0IH0gZnJvbSBcIi4vY29sdW1uc0Jsb2NrL0ZpbmFsRm9ybUxheW91dFNlbGVjdFwiO1xuaW1wb3J0IHR5cGUgeyBMaXN0QmxvY2tJdGVtLCBMaXN0QmxvY2tTdGF0ZSB9IGZyb20gXCIuL2NyZWF0ZUxpc3RCbG9ja1wiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgYXMgY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQmxvY2tMYXlvdXQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb2x1bW5zOiBudW1iZXI7XG4gICAgbGFiZWw6IFJlYWN0Tm9kZTtcbiAgICBwcmV2aWV3OiBSZWFjdE5vZGU7XG4gICAgc2VjdGlvbj86XG4gICAgICAgIHwgc3RyaW5nXG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIGxhYmVsPzogUmVhY3ROb2RlO1xuICAgICAgICAgIH07XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tGcmFnbWVudDxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IHN0cmluZztcbiAgICBjb2x1bW5zOiBBcnJheTx7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgICAgICBwcm9wczogQmxvY2tJbnB1dEFwaTxUPjtcbiAgICB9Pjtcbn1cblxuaW50ZXJmYWNlIENvbHVtbnNCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIGxheW91dDogQ29sdW1uc0Jsb2NrTGF5b3V0O1xuICAgIGNvbHVtbnM6IExpc3RCbG9ja0l0ZW08VD5bXTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNvbHVtbnNCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBSZWFjdE5vZGU7XG4gICAgY2F0ZWdvcnk/OiBCbG9ja0NhdGVnb3J5IHwgQ3VzdG9tQmxvY2tDYXRlZ29yeTtcbiAgICBjb250ZW50QmxvY2s6IFQ7XG4gICAgbGF5b3V0czogQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbnNCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+KFxuICAgIHsgbmFtZSwgZGlzcGxheU5hbWUsIGNhdGVnb3J5ID0gQmxvY2tDYXRlZ29yeS5MYXlvdXQsIGNvbnRlbnRCbG9jaywgbGF5b3V0cywgdGFncyB9OiBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQ+LFxuICAgIG92ZXJyaWRlPzogKFxuICAgICAgICBibG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4gICAgKSA9PiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+Pixcbik6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+IHtcbiAgICBpZiAobGF5b3V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOdW1iZXIgb2YgbGF5b3V0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50ID0gY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBibG9jazogY29udGVudEJsb2NrIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRW1wdHlDb2x1bW5zKG51bWJlcjogbnVtYmVyKTogTGlzdEJsb2NrSXRlbTxUPltdIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShudW1iZXIpLmZpbGwodW5kZWZpbmVkKS5tYXAoKCkgPT4gKHtcbiAgICAgICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5kZWZhdWx0VmFsdWVzKCksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgQ29sdW1uc0Jsb2NrOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBjb250ZW50QmxvY2sudGFncyxcblxuICAgICAgICBjYXRlZ29yeSxcblxuICAgICAgICBkZWZhdWx0VmFsdWVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gbGF5b3V0c1swXTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IENvbHVtbnNCbG9ja1N0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIGxheW91dDogZGVmYXVsdExheW91dCxcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1wdHkgY29sdW1ucyBzbyB0aGUgbGlzdCBpcyBub3QgZW1wdHkgaW5pdGlhbGx5XG4gICAgICAgICAgICAgICAgY29sdW1uczogY3JlYXRlRW1wdHlDb2x1bW5zKGRlZmF1bHRMYXlvdXQuY29sdW1ucyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBpbnB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke2lucHV0LmxheW91dH1cIiFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogaW5wdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmlucHV0MlN0YXRlKGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RhdGUyT3V0cHV0OiAob3V0cHV0KSA9PiAoe1xuICAgICAgICAgICAgbGF5b3V0OiBvdXRwdXQubGF5b3V0Lm5hbWUsXG4gICAgICAgICAgICBjb2x1bW5zOiBvdXRwdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5zdGF0ZTJPdXRwdXQoY29sdW1uLnByb3BzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSBsYXlvdXRzLmZpbmQoKGxheW91dCkgPT4gbGF5b3V0Lm5hbWUgPT09IG91dHB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke291dHB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbnMgb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYXdhaXQgY29udGVudEJsb2NrLm91dHB1dDJTdGF0ZShjb2x1bW5zLnByb3BzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0NvbnRleHQucGFyZW50VXJsIH0sXG4gICAgICAgICAgICBsYXlvdXQ6IHN0YXRlLmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogc3RhdGUuY29sdW1uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IChwcmV2aWV3Q29udGV4dC5zaG93VmlzaWJsZU9ubHkgPyBjLnZpc2libGUgOiB0cnVlKSkgLy8gZGVwZW5kaW5nIG9uIGNvbnRleHQgc2hvdyBhbGwgYmxvY2tzIG9yIG9ubHkgdmlzaWJsZSBibG9ja3NcbiAgICAgICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0NvbnRleHQucGFyZW50VXJsU3ViUm91dGUgPz8gcHJldmlld0NvbnRleHQucGFyZW50VXJsfS8ke2NvbHVtbi5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNvbHVtbi5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50VXJsOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogYmxvY2tBZG1pblJvdXRlIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGlzVmFsaWQ6IChzdGF0ZSkgPT4gcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmNvbHVtbnMsIChjb2x1bW4pID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcykpLFxuXG4gICAgICAgIGFuY2hvcnM6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmNvbHVtbnMucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oY29udGVudEJsb2NrLmFuY2hvcnM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmNvbHVtbnMucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmRlcGVuZGVuY2llcywgLi4uKGNvbnRlbnRCbG9jay5kZXBlbmRlbmNpZXM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4gPSB7IC4uLm91dHB1dCwgY29sdW1uczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBuZXdPdXRwdXQuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLnJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dChjb2x1bW4ucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpID0gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2U6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPExpc3RCbG9ja1N0YXRlPFQ+Pj4gPSAobGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9ja1N0YXRlID0gcmVzb2x2ZU5ld1N0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogeyBibG9ja3M6IHByZXZTdGF0ZS5jb2x1bW5zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZUFjdGlvbjogbGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogbGlzdEJsb2NrU3RhdGUuYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgY3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4sXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJsZSxcbiAgICAgICAgICAgIH0gPSB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCh7IHN0YXRlOiB7IGJsb2Nrczogc3RhdGUuY29sdW1ucyB9LCB1cGRhdGVTdGF0ZTogaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoIGluaXRpYWxQYWdlPVwibGlzdFwiIGRpc2FibGVGb3JjZVByb21wdFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja3NGaW5hbEZvcm08eyBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDsgY29sdW1uczogbnVtYmVyIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsoeyBsYXlvdXQsIGNvbHVtbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgPSBncm91cExheW91dHNCeUNvbHVtbnNBcGkuZ2V0RGVmYXVsdExheW91dChjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMYXlvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuY29sdW1ucyAhPT0gY29sdW1ucyAmJiBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID8gZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA6IGxheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW5nRW1wdHlDb2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA+IHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IGNyZWF0ZUVtcHR5Q29sdW1ucyhjb2x1bW5zIC0gcHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoKSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBuZXdMYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5wcmV2U3RhdGUuY29sdW1ucywgLi4ubWlzc2luZ0VtcHR5Q29sdW1uc10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWVzPXt7IGxheW91dDogc3RhdGUubGF5b3V0LCBjb2x1bW5zOiBzdGF0ZS5sYXlvdXQuY29sdW1ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5zXCIgZGVmYXVsdE1lc3NhZ2U9XCJDb2x1bW5zXCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtncm91cExheW91dHNCeUNvbHVtbnNBcGkuY29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMubGF5b3V0XCIgZGVmYXVsdE1lc3NhZ2U9XCJMYXlvdXRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD17RmluYWxGb3JtTGF5b3V0U2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0cz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldExheW91dHMoc3RhdGUubGF5b3V0LmNvbHVtbnMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja3NGaW5hbEZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIHRpdGxlPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLml0ZW1zXCIgZGVmYXVsdE1lc3NhZ2U9XCJJdGVtc1wiIC8+fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZENvdW50ID09PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmNvbHVtbnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2NvbHVtbi5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2NvbHVtbi5rZXl9L2NvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17Y29sdW1uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUHJldmlld0NvbnRlbnQgYmxvY2s9e2NvbnRlbnRCbG9ja30gc3RhdGU9e2NvbHVtbi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17Y29sdW1uSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgY29sdW1uLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbY29sdW1uLmtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gWy4uLnByZXZTdGF0ZS5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uVG9Nb3ZlID0gY29sdW1ucy5zcGxpY2UoZnJvbSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKHRvLCAwLCBjb2x1bW5Ub01vdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGNvbHVtbnMgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB0b2dnbGVWaXNpYmxlKGNvbHVtbi5rZXkpfSBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpc2libGUgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudEJsb2NrLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb2x1bW4ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYXN0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhjb2x1bW5JbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtjb2x1bW4uc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGNvbHVtbiwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRGbj17KCkgPT4gY29udGVudEJsb2NrLmlzVmFsaWQoY29sdW1uLnByb3BzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2NvbHVtbi5zbGlkZUlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2NvbHVtbkluZGV4ID49IHN0YXRlLmNvbHVtbnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5hZGRJdGVtXCIgZGVmYXVsdE1lc3NhZ2U9XCJBZGQgaXRlbVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8QWRkIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmVkaXRDb2x1bW5cIiwgZGVmYXVsdE1lc3NhZ2U6IFwiRWRpdCBjb2x1bW5cIiB9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IHN0YXRlLmNvbHVtbnMuZmluZEluZGV4KChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy51bmtub3duQ29sdW1uXCIgZGVmYXVsdE1lc3NhZ2U9XCJDYW4ndCBmaW5kIGNvbHVtblwiIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5jb2x1bW5zW21hdGNoSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlVGl0bGUgdGl0bGU9e2NvbHVtbkNvdW50TGFiZWwoaW50bCwgbWF0Y2hJbmRleCArIDEpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29udGVudEJsb2NrLkFkbWluQ29tcG9uZW50IHN0YXRlPXttYXRjaC5wcm9wc30gdXBkYXRlU3RhdGU9e2NyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuKGtleSl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLm5vQ29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8gY29sdW1uc1wiIC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxQcmV2aWV3Q29udGVudFtdPihcbiAgICAgICAgICAgICAgICAocHJldmlld0NvbnRlbnQsIGN1cnJlbnRDb2x1bW4pID0+IFsuLi5wcmV2aWV3Q29udGVudCwgLi4uY29udGVudEJsb2NrLnByZXZpZXdDb250ZW50KGN1cnJlbnRDb2x1bW4ucHJvcHMsIGNvbnRleHQpXSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eY29sdW1ucy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbnNCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmNvbHVtbnNbbnVtXTtcblxuICAgICAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29udGVudEJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBleHRyYWN0VGV4dENvbnRlbnRzOiAoc3RhdGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluY2x1ZGVJbnZpc2libGVDb250ZW50ID0gb3B0aW9ucz8uaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29sdW1uLnZpc2libGUgJiYgIWluY2x1ZGVJbnZpc2libGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY29udGVudCwgLi4uKGNvbnRlbnRCbG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY29sdW1uLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKENvbHVtbnNCbG9jayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbHVtbnNCbG9jaztcbn1cblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgcGFkZGluZzogMTJweCAwO1xuYDtcblxuY29uc3QgU2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbCA9IHN0eWxlZChGb3JtQ29udHJvbExhYmVsKWBcbiAgICBwYWRkaW5nOiAxNXB4IDEwcHggMTVweCA3cHg7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkNvbnRlbnQgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDRweCAwO1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25JY29uID0gc3R5bGVkKEFkZClgXG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbnR5cGUgR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkgPSB7XG4gICAgY29sdW1uczogbnVtYmVyW107XG4gICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0IHwgdW5kZWZpbmVkO1xufTtcblxuZnVuY3Rpb24gY29sdW1uQ291bnRMYWJlbChpbnRsOiBJbnRsU2hhcGUsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmNvbHVtblRpdGxlXCIsXG4gICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogXCJDb2x1bW4ge251bWJlcn1cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBudW1iZXI6IGNvdW50IH0sXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdKTogR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkge1xuICAgIGNvbnN0IGdyb3VwZWRMYXlvdXRzID0gbGF5b3V0cy5yZWR1Y2UoKGFjYywgYykgPT4ge1xuICAgICAgICBhY2Muc2V0KGMuY29sdW1ucywgWy4uLihhY2MuZ2V0KGMuY29sdW1ucykgfHwgW10pLCBjXSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbmV3IE1hcDxudW1iZXIsIENvbHVtbnNCbG9ja0xheW91dFtdPigpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbnM6IEFycmF5LmZyb20oZ3JvdXBlZExheW91dHMua2V5cygpKSxcbiAgICAgICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0cyA9IGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiBsYXlvdXRzLmxlbmd0aCA/IGxheW91dHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ== */",
|
|
545
545
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
546
546
|
});
|
|
547
547
|
var BlockListHeaderActionContainer = /*#__PURE__*/styled("div", process.env.NODE_ENV === "production" ? {
|
|
@@ -554,7 +554,7 @@ var BlockListHeaderActionContainer = /*#__PURE__*/styled("div", process.env.NODE
|
|
|
554
554
|
styles: "padding:12px 0"
|
|
555
555
|
} : {
|
|
556
556
|
name: "14o5m2r",
|
|
557
|
-
styles: "padding:12px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcWZvRCIsImZpbGUiOiIuLi8uLi8uLi9zcmMvYmxvY2tzL2ZhY3Rvcmllcy9jcmVhdGVDb2x1bW5zQmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIFN0YWNrUGFnZSwgU3RhY2tQYWdlVGl0bGUsIFN0YWNrU3dpdGNoLCBTdGFja1N3aXRjaEFwaUNvbnRleHQgfSBmcm9tIFwiQGNvbWV0L2FkbWluXCI7XG5pbXBvcnQgeyBBZGQsIENvcHksIERlbGV0ZSwgSW52aXNpYmxlLCBQYXN0ZSwgVmlzaWJsZSB9IGZyb20gXCJAY29tZXQvYWRtaW4taWNvbnNcIjtcbmltcG9ydCB7IENoZWNrYm94LCBEaXZpZGVyLCBGb3JtQ29udHJvbExhYmVsLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHsgdHlwZSBEaXNwYXRjaCwgdHlwZSBSZWFjdE5vZGUsIHR5cGUgU2V0U3RhdGVBY3Rpb24gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHR5cGUgSW50bFNoYXBlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yLCB1c2VJbnRsIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFNlY3Rpb25cIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgQmxvY2tzRmluYWxGb3JtIH0gZnJvbSBcIi4uL2Zvcm0vQmxvY2tzRmluYWxGb3JtXCI7XG5pbXBvcnQgeyBjcmVhdGVCbG9ja1NrZWxldG9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvY3JlYXRlQmxvY2tTa2VsZXRvblwiO1xuaW1wb3J0IHsgZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llcyB9IGZyb20gXCIuLi9oZWxwZXJzL2RlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IEhvdmVyUHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvSG92ZXJQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQgeyBTZWxlY3RQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9TZWxlY3RQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIEJsb2NrQ2F0ZWdvcnksXG4gICAgdHlwZSBCbG9ja0RlcGVuZGVuY3ksXG4gICAgdHlwZSBCbG9ja0lucHV0QXBpLFxuICAgIHR5cGUgQmxvY2tJbnRlcmZhY2UsXG4gICAgdHlwZSBDdXN0b21CbG9ja0NhdGVnb3J5LFxuICAgIHR5cGUgUHJldmlld0NvbnRlbnQsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZU5ld1N0YXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBwYXJhbGxlbEFzeW5jRXZlcnkgfSBmcm9tIFwiLi4vdXRpbHMvcGFyYWxsZWxBc3luY0V2ZXJ5XCI7XG5pbXBvcnQgeyBGaW5hbEZvcm1Db2x1bW5zU2VsZWN0IH0gZnJvbSBcIi4vY29sdW1uc0Jsb2NrL0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3RcIjtcbmltcG9ydCB7IEZpbmFsRm9ybUxheW91dFNlbGVjdCB9IGZyb20gXCIuL2NvbHVtbnNCbG9jay9GaW5hbEZvcm1MYXlvdXRTZWxlY3RcIjtcbmltcG9ydCB7IHR5cGUgTGlzdEJsb2NrSXRlbSwgdHlwZSBMaXN0QmxvY2tTdGF0ZSB9IGZyb20gXCIuL2NyZWF0ZUxpc3RCbG9ja1wiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgYXMgY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQmxvY2tMYXlvdXQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb2x1bW5zOiBudW1iZXI7XG4gICAgbGFiZWw6IFJlYWN0Tm9kZTtcbiAgICBwcmV2aWV3OiBSZWFjdE5vZGU7XG4gICAgc2VjdGlvbj86XG4gICAgICAgIHwgc3RyaW5nXG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIGxhYmVsPzogUmVhY3ROb2RlO1xuICAgICAgICAgIH07XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tGcmFnbWVudDxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IHN0cmluZztcbiAgICBjb2x1bW5zOiBBcnJheTx7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgICAgICBwcm9wczogQmxvY2tJbnB1dEFwaTxUPjtcbiAgICB9Pjtcbn1cblxuaW50ZXJmYWNlIENvbHVtbnNCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIGxheW91dDogQ29sdW1uc0Jsb2NrTGF5b3V0O1xuICAgIGNvbHVtbnM6IExpc3RCbG9ja0l0ZW08VD5bXTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNvbHVtbnNCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBSZWFjdE5vZGU7XG4gICAgY2F0ZWdvcnk/OiBCbG9ja0NhdGVnb3J5IHwgQ3VzdG9tQmxvY2tDYXRlZ29yeTtcbiAgICBjb250ZW50QmxvY2s6IFQ7XG4gICAgbGF5b3V0czogQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbnNCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+KFxuICAgIHsgbmFtZSwgZGlzcGxheU5hbWUsIGNhdGVnb3J5ID0gQmxvY2tDYXRlZ29yeS5MYXlvdXQsIGNvbnRlbnRCbG9jaywgbGF5b3V0cywgdGFncyB9OiBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQ+LFxuICAgIG92ZXJyaWRlPzogKFxuICAgICAgICBibG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4gICAgKSA9PiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+Pixcbik6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+IHtcbiAgICBpZiAobGF5b3V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOdW1iZXIgb2YgbGF5b3V0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50ID0gY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBibG9jazogY29udGVudEJsb2NrIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRW1wdHlDb2x1bW5zKG51bWJlcjogbnVtYmVyKTogTGlzdEJsb2NrSXRlbTxUPltdIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShudW1iZXIpLmZpbGwodW5kZWZpbmVkKS5tYXAoKCkgPT4gKHtcbiAgICAgICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5kZWZhdWx0VmFsdWVzKCksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgQ29sdW1uc0Jsb2NrOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBjb250ZW50QmxvY2sudGFncyxcblxuICAgICAgICBjYXRlZ29yeSxcblxuICAgICAgICBkZWZhdWx0VmFsdWVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gbGF5b3V0c1swXTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IENvbHVtbnNCbG9ja1N0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIGxheW91dDogZGVmYXVsdExheW91dCxcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1wdHkgY29sdW1ucyBzbyB0aGUgbGlzdCBpcyBub3QgZW1wdHkgaW5pdGlhbGx5XG4gICAgICAgICAgICAgICAgY29sdW1uczogY3JlYXRlRW1wdHlDb2x1bW5zKGRlZmF1bHRMYXlvdXQuY29sdW1ucyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBpbnB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke2lucHV0LmxheW91dH1cIiFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogaW5wdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmlucHV0MlN0YXRlKGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RhdGUyT3V0cHV0OiAob3V0cHV0KSA9PiAoe1xuICAgICAgICAgICAgbGF5b3V0OiBvdXRwdXQubGF5b3V0Lm5hbWUsXG4gICAgICAgICAgICBjb2x1bW5zOiBvdXRwdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5zdGF0ZTJPdXRwdXQoY29sdW1uLnByb3BzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSBsYXlvdXRzLmZpbmQoKGxheW91dCkgPT4gbGF5b3V0Lm5hbWUgPT09IG91dHB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke291dHB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbnMgb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYXdhaXQgY29udGVudEJsb2NrLm91dHB1dDJTdGF0ZShjb2x1bW5zLnByb3BzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0NvbnRleHQucGFyZW50VXJsIH0sXG4gICAgICAgICAgICBsYXlvdXQ6IHN0YXRlLmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogc3RhdGUuY29sdW1uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IChwcmV2aWV3Q29udGV4dC5zaG93VmlzaWJsZU9ubHkgPyBjLnZpc2libGUgOiB0cnVlKSkgLy8gZGVwZW5kaW5nIG9uIGNvbnRleHQgc2hvdyBhbGwgYmxvY2tzIG9yIG9ubHkgdmlzaWJsZSBibG9ja3NcbiAgICAgICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0NvbnRleHQucGFyZW50VXJsU3ViUm91dGUgPz8gcHJldmlld0NvbnRleHQucGFyZW50VXJsfS8ke2NvbHVtbi5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNvbHVtbi5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50VXJsOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogYmxvY2tBZG1pblJvdXRlIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGlzVmFsaWQ6IChzdGF0ZSkgPT4gcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmNvbHVtbnMsIChjb2x1bW4pID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcykpLFxuXG4gICAgICAgIGFuY2hvcnM6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmNvbHVtbnMucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oY29udGVudEJsb2NrLmFuY2hvcnM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmNvbHVtbnMucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmRlcGVuZGVuY2llcywgLi4uKGNvbnRlbnRCbG9jay5kZXBlbmRlbmNpZXM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4gPSB7IC4uLm91dHB1dCwgY29sdW1uczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBuZXdPdXRwdXQuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLnJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dChjb2x1bW4ucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpID0gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2U6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPExpc3RCbG9ja1N0YXRlPFQ+Pj4gPSAobGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9ja1N0YXRlID0gcmVzb2x2ZU5ld1N0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogeyBibG9ja3M6IHByZXZTdGF0ZS5jb2x1bW5zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZUFjdGlvbjogbGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogbGlzdEJsb2NrU3RhdGUuYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgY3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4sXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJsZSxcbiAgICAgICAgICAgIH0gPSB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCh7IHN0YXRlOiB7IGJsb2Nrczogc3RhdGUuY29sdW1ucyB9LCB1cGRhdGVTdGF0ZTogaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoIGluaXRpYWxQYWdlPVwibGlzdFwiIGRpc2FibGVGb3JjZVByb21wdFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja3NGaW5hbEZvcm08eyBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDsgY29sdW1uczogbnVtYmVyIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsoeyBsYXlvdXQsIGNvbHVtbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgPSBncm91cExheW91dHNCeUNvbHVtbnNBcGkuZ2V0RGVmYXVsdExheW91dChjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMYXlvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuY29sdW1ucyAhPT0gY29sdW1ucyAmJiBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID8gZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA6IGxheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW5nRW1wdHlDb2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA+IHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IGNyZWF0ZUVtcHR5Q29sdW1ucyhjb2x1bW5zIC0gcHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoKSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBuZXdMYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5wcmV2U3RhdGUuY29sdW1ucywgLi4ubWlzc2luZ0VtcHR5Q29sdW1uc10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWVzPXt7IGxheW91dDogc3RhdGUubGF5b3V0LCBjb2x1bW5zOiBzdGF0ZS5sYXlvdXQuY29sdW1ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5zXCIgZGVmYXVsdE1lc3NhZ2U9XCJDb2x1bW5zXCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtncm91cExheW91dHNCeUNvbHVtbnNBcGkuY29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMubGF5b3V0XCIgZGVmYXVsdE1lc3NhZ2U9XCJMYXlvdXRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD17RmluYWxGb3JtTGF5b3V0U2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0cz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldExheW91dHMoc3RhdGUubGF5b3V0LmNvbHVtbnMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja3NGaW5hbEZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIHRpdGxlPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLml0ZW1zXCIgZGVmYXVsdE1lc3NhZ2U9XCJJdGVtc1wiIC8+fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZENvdW50ID09PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmNvbHVtbnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2NvbHVtbi5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2NvbHVtbi5rZXl9L2NvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17Y29sdW1uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUHJldmlld0NvbnRlbnQgYmxvY2s9e2NvbnRlbnRCbG9ja30gc3RhdGU9e2NvbHVtbi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17Y29sdW1uSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgY29sdW1uLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbY29sdW1uLmtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gWy4uLnByZXZTdGF0ZS5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uVG9Nb3ZlID0gY29sdW1ucy5zcGxpY2UoZnJvbSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKHRvLCAwLCBjb2x1bW5Ub01vdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGNvbHVtbnMgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB0b2dnbGVWaXNpYmxlKGNvbHVtbi5rZXkpfSBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpc2libGUgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudEJsb2NrLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb2x1bW4ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYXN0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhjb2x1bW5JbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtjb2x1bW4uc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGNvbHVtbiwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRGbj17KCkgPT4gY29udGVudEJsb2NrLmlzVmFsaWQoY29sdW1uLnByb3BzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2NvbHVtbi5zbGlkZUlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2NvbHVtbkluZGV4ID49IHN0YXRlLmNvbHVtbnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5hZGRJdGVtXCIgZGVmYXVsdE1lc3NhZ2U9XCJBZGQgaXRlbVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8QWRkIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmVkaXRDb2x1bW5cIiwgZGVmYXVsdE1lc3NhZ2U6IFwiRWRpdCBjb2x1bW5cIiB9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IHN0YXRlLmNvbHVtbnMuZmluZEluZGV4KChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy51bmtub3duQ29sdW1uXCIgZGVmYXVsdE1lc3NhZ2U9XCJDYW4ndCBmaW5kIGNvbHVtblwiIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5jb2x1bW5zW21hdGNoSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlVGl0bGUgdGl0bGU9e2NvbHVtbkNvdW50TGFiZWwoaW50bCwgbWF0Y2hJbmRleCArIDEpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29udGVudEJsb2NrLkFkbWluQ29tcG9uZW50IHN0YXRlPXttYXRjaC5wcm9wc30gdXBkYXRlU3RhdGU9e2NyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuKGtleSl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLm5vQ29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8gY29sdW1uc1wiIC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxQcmV2aWV3Q29udGVudFtdPihcbiAgICAgICAgICAgICAgICAocHJldmlld0NvbnRlbnQsIGN1cnJlbnRDb2x1bW4pID0+IFsuLi5wcmV2aWV3Q29udGVudCwgLi4uY29udGVudEJsb2NrLnByZXZpZXdDb250ZW50KGN1cnJlbnRDb2x1bW4ucHJvcHMsIGNvbnRleHQpXSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eY29sdW1ucy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbnNCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmNvbHVtbnNbbnVtXTtcblxuICAgICAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29udGVudEJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBleHRyYWN0VGV4dENvbnRlbnRzOiAoc3RhdGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluY2x1ZGVJbnZpc2libGVDb250ZW50ID0gb3B0aW9ucz8uaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29sdW1uLnZpc2libGUgJiYgIWluY2x1ZGVJbnZpc2libGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY29udGVudCwgLi4uKGNvbnRlbnRCbG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY29sdW1uLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKENvbHVtbnNCbG9jayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbHVtbnNCbG9jaztcbn1cblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgcGFkZGluZzogMTJweCAwO1xuYDtcblxuY29uc3QgU2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbCA9IHN0eWxlZChGb3JtQ29udHJvbExhYmVsKWBcbiAgICBwYWRkaW5nOiAxNXB4IDEwcHggMTVweCA3cHg7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkNvbnRlbnQgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDRweCAwO1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25JY29uID0gc3R5bGVkKEFkZClgXG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbnR5cGUgR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkgPSB7XG4gICAgY29sdW1uczogbnVtYmVyW107XG4gICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0IHwgdW5kZWZpbmVkO1xufTtcblxuZnVuY3Rpb24gY29sdW1uQ291bnRMYWJlbChpbnRsOiBJbnRsU2hhcGUsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmNvbHVtblRpdGxlXCIsXG4gICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogXCJDb2x1bW4ge251bWJlcn1cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBudW1iZXI6IGNvdW50IH0sXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdKTogR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkge1xuICAgIGNvbnN0IGdyb3VwZWRMYXlvdXRzID0gbGF5b3V0cy5yZWR1Y2UoKGFjYywgYykgPT4ge1xuICAgICAgICBhY2Muc2V0KGMuY29sdW1ucywgWy4uLihhY2MuZ2V0KGMuY29sdW1ucykgfHwgW10pLCBjXSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbmV3IE1hcDxudW1iZXIsIENvbHVtbnNCbG9ja0xheW91dFtdPigpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbnM6IEFycmF5LmZyb20oZ3JvdXBlZExheW91dHMua2V5cygpKSxcbiAgICAgICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0cyA9IGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiBsYXlvdXRzLmxlbmd0aCA/IGxheW91dHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ== */",
|
|
557
|
+
styles: "padding:12px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcWZvRCIsImZpbGUiOiIuLi8uLi8uLi9zcmMvYmxvY2tzL2ZhY3Rvcmllcy9jcmVhdGVDb2x1bW5zQmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIFN0YWNrUGFnZSwgU3RhY2tQYWdlVGl0bGUsIFN0YWNrU3dpdGNoLCBTdGFja1N3aXRjaEFwaUNvbnRleHQgfSBmcm9tIFwiQGNvbWV0L2FkbWluXCI7XG5pbXBvcnQgeyBBZGQsIENvcHksIERlbGV0ZSwgSW52aXNpYmxlLCBQYXN0ZSwgVmlzaWJsZSB9IGZyb20gXCJAY29tZXQvYWRtaW4taWNvbnNcIjtcbmltcG9ydCB7IENoZWNrYm94LCBEaXZpZGVyLCBGb3JtQ29udHJvbExhYmVsLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXNwYXRjaCwgUmVhY3ROb2RlLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBJbnRsU2hhcGUsIHR5cGUgTWVzc2FnZURlc2NyaXB0b3IsIHVzZUludGwgfSBmcm9tIFwicmVhY3QtaW50bFwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9BZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlclwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50UGFwZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvblwiO1xuaW1wb3J0IHsgQmxvY2tQcmV2aWV3Q29udGVudCB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tQcmV2aWV3Q29udGVudFwiO1xuaW1wb3J0IHsgQmxvY2tSb3cgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUm93XCI7XG5pbXBvcnQgeyBCbG9ja3NGaW5hbEZvcm0gfSBmcm9tIFwiLi4vZm9ybS9CbG9ja3NGaW5hbEZvcm1cIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7XG4gICAgQmxvY2tDYXRlZ29yeSxcbiAgICB0eXBlIEJsb2NrRGVwZW5kZW5jeSxcbiAgICB0eXBlIEJsb2NrSW5wdXRBcGksXG4gICAgdHlwZSBCbG9ja0ludGVyZmFjZSxcbiAgICB0eXBlIEN1c3RvbUJsb2NrQ2F0ZWdvcnksXG4gICAgdHlwZSBQcmV2aWV3Q29udGVudCxcbn0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyByZXNvbHZlTmV3U3RhdGUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IEZpbmFsRm9ybUNvbHVtbnNTZWxlY3QgfSBmcm9tIFwiLi9jb2x1bW5zQmxvY2svRmluYWxGb3JtQ29sdW1uc1NlbGVjdFwiO1xuaW1wb3J0IHsgRmluYWxGb3JtTGF5b3V0U2VsZWN0IH0gZnJvbSBcIi4vY29sdW1uc0Jsb2NrL0ZpbmFsRm9ybUxheW91dFNlbGVjdFwiO1xuaW1wb3J0IHR5cGUgeyBMaXN0QmxvY2tJdGVtLCBMaXN0QmxvY2tTdGF0ZSB9IGZyb20gXCIuL2NyZWF0ZUxpc3RCbG9ja1wiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgYXMgY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQmxvY2tMYXlvdXQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb2x1bW5zOiBudW1iZXI7XG4gICAgbGFiZWw6IFJlYWN0Tm9kZTtcbiAgICBwcmV2aWV3OiBSZWFjdE5vZGU7XG4gICAgc2VjdGlvbj86XG4gICAgICAgIHwgc3RyaW5nXG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIGxhYmVsPzogUmVhY3ROb2RlO1xuICAgICAgICAgIH07XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tGcmFnbWVudDxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IHN0cmluZztcbiAgICBjb2x1bW5zOiBBcnJheTx7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgICAgICBwcm9wczogQmxvY2tJbnB1dEFwaTxUPjtcbiAgICB9Pjtcbn1cblxuaW50ZXJmYWNlIENvbHVtbnNCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIGxheW91dDogQ29sdW1uc0Jsb2NrTGF5b3V0O1xuICAgIGNvbHVtbnM6IExpc3RCbG9ja0l0ZW08VD5bXTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNvbHVtbnNCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBSZWFjdE5vZGU7XG4gICAgY2F0ZWdvcnk/OiBCbG9ja0NhdGVnb3J5IHwgQ3VzdG9tQmxvY2tDYXRlZ29yeTtcbiAgICBjb250ZW50QmxvY2s6IFQ7XG4gICAgbGF5b3V0czogQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbnNCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+KFxuICAgIHsgbmFtZSwgZGlzcGxheU5hbWUsIGNhdGVnb3J5ID0gQmxvY2tDYXRlZ29yeS5MYXlvdXQsIGNvbnRlbnRCbG9jaywgbGF5b3V0cywgdGFncyB9OiBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQ+LFxuICAgIG92ZXJyaWRlPzogKFxuICAgICAgICBibG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4gICAgKSA9PiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+Pixcbik6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+IHtcbiAgICBpZiAobGF5b3V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOdW1iZXIgb2YgbGF5b3V0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50ID0gY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBibG9jazogY29udGVudEJsb2NrIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRW1wdHlDb2x1bW5zKG51bWJlcjogbnVtYmVyKTogTGlzdEJsb2NrSXRlbTxUPltdIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShudW1iZXIpLmZpbGwodW5kZWZpbmVkKS5tYXAoKCkgPT4gKHtcbiAgICAgICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5kZWZhdWx0VmFsdWVzKCksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgQ29sdW1uc0Jsb2NrOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBjb250ZW50QmxvY2sudGFncyxcblxuICAgICAgICBjYXRlZ29yeSxcblxuICAgICAgICBkZWZhdWx0VmFsdWVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gbGF5b3V0c1swXTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IENvbHVtbnNCbG9ja1N0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIGxheW91dDogZGVmYXVsdExheW91dCxcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1wdHkgY29sdW1ucyBzbyB0aGUgbGlzdCBpcyBub3QgZW1wdHkgaW5pdGlhbGx5XG4gICAgICAgICAgICAgICAgY29sdW1uczogY3JlYXRlRW1wdHlDb2x1bW5zKGRlZmF1bHRMYXlvdXQuY29sdW1ucyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBpbnB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke2lucHV0LmxheW91dH1cIiFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogaW5wdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmlucHV0MlN0YXRlKGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RhdGUyT3V0cHV0OiAob3V0cHV0KSA9PiAoe1xuICAgICAgICAgICAgbGF5b3V0OiBvdXRwdXQubGF5b3V0Lm5hbWUsXG4gICAgICAgICAgICBjb2x1bW5zOiBvdXRwdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5zdGF0ZTJPdXRwdXQoY29sdW1uLnByb3BzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSBsYXlvdXRzLmZpbmQoKGxheW91dCkgPT4gbGF5b3V0Lm5hbWUgPT09IG91dHB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke291dHB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbnMgb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYXdhaXQgY29udGVudEJsb2NrLm91dHB1dDJTdGF0ZShjb2x1bW5zLnByb3BzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0NvbnRleHQucGFyZW50VXJsIH0sXG4gICAgICAgICAgICBsYXlvdXQ6IHN0YXRlLmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogc3RhdGUuY29sdW1uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IChwcmV2aWV3Q29udGV4dC5zaG93VmlzaWJsZU9ubHkgPyBjLnZpc2libGUgOiB0cnVlKSkgLy8gZGVwZW5kaW5nIG9uIGNvbnRleHQgc2hvdyBhbGwgYmxvY2tzIG9yIG9ubHkgdmlzaWJsZSBibG9ja3NcbiAgICAgICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0NvbnRleHQucGFyZW50VXJsU3ViUm91dGUgPz8gcHJldmlld0NvbnRleHQucGFyZW50VXJsfS8ke2NvbHVtbi5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNvbHVtbi5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50VXJsOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogYmxvY2tBZG1pblJvdXRlIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGlzVmFsaWQ6IChzdGF0ZSkgPT4gcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmNvbHVtbnMsIChjb2x1bW4pID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcykpLFxuXG4gICAgICAgIGFuY2hvcnM6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmNvbHVtbnMucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oY29udGVudEJsb2NrLmFuY2hvcnM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmNvbHVtbnMucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmRlcGVuZGVuY2llcywgLi4uKGNvbnRlbnRCbG9jay5kZXBlbmRlbmNpZXM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4gPSB7IC4uLm91dHB1dCwgY29sdW1uczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBuZXdPdXRwdXQuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLnJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dChjb2x1bW4ucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpID0gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2U6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPExpc3RCbG9ja1N0YXRlPFQ+Pj4gPSAobGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9ja1N0YXRlID0gcmVzb2x2ZU5ld1N0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogeyBibG9ja3M6IHByZXZTdGF0ZS5jb2x1bW5zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZUFjdGlvbjogbGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogbGlzdEJsb2NrU3RhdGUuYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgY3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4sXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJsZSxcbiAgICAgICAgICAgIH0gPSB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCh7IHN0YXRlOiB7IGJsb2Nrczogc3RhdGUuY29sdW1ucyB9LCB1cGRhdGVTdGF0ZTogaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoIGluaXRpYWxQYWdlPVwibGlzdFwiIGRpc2FibGVGb3JjZVByb21wdFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja3NGaW5hbEZvcm08eyBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDsgY29sdW1uczogbnVtYmVyIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsoeyBsYXlvdXQsIGNvbHVtbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgPSBncm91cExheW91dHNCeUNvbHVtbnNBcGkuZ2V0RGVmYXVsdExheW91dChjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMYXlvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuY29sdW1ucyAhPT0gY29sdW1ucyAmJiBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID8gZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA6IGxheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW5nRW1wdHlDb2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA+IHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IGNyZWF0ZUVtcHR5Q29sdW1ucyhjb2x1bW5zIC0gcHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoKSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBuZXdMYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5wcmV2U3RhdGUuY29sdW1ucywgLi4ubWlzc2luZ0VtcHR5Q29sdW1uc10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWVzPXt7IGxheW91dDogc3RhdGUubGF5b3V0LCBjb2x1bW5zOiBzdGF0ZS5sYXlvdXQuY29sdW1ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5zXCIgZGVmYXVsdE1lc3NhZ2U9XCJDb2x1bW5zXCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtncm91cExheW91dHNCeUNvbHVtbnNBcGkuY29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMubGF5b3V0XCIgZGVmYXVsdE1lc3NhZ2U9XCJMYXlvdXRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD17RmluYWxGb3JtTGF5b3V0U2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0cz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldExheW91dHMoc3RhdGUubGF5b3V0LmNvbHVtbnMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja3NGaW5hbEZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIHRpdGxlPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLml0ZW1zXCIgZGVmYXVsdE1lc3NhZ2U9XCJJdGVtc1wiIC8+fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZENvdW50ID09PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmNvbHVtbnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2NvbHVtbi5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2NvbHVtbi5rZXl9L2NvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17Y29sdW1uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUHJldmlld0NvbnRlbnQgYmxvY2s9e2NvbnRlbnRCbG9ja30gc3RhdGU9e2NvbHVtbi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17Y29sdW1uSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgY29sdW1uLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbY29sdW1uLmtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gWy4uLnByZXZTdGF0ZS5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uVG9Nb3ZlID0gY29sdW1ucy5zcGxpY2UoZnJvbSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKHRvLCAwLCBjb2x1bW5Ub01vdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGNvbHVtbnMgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB0b2dnbGVWaXNpYmxlKGNvbHVtbi5rZXkpfSBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpc2libGUgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudEJsb2NrLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb2x1bW4ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYXN0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhjb2x1bW5JbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtjb2x1bW4uc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGNvbHVtbiwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRGbj17KCkgPT4gY29udGVudEJsb2NrLmlzVmFsaWQoY29sdW1uLnByb3BzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2NvbHVtbi5zbGlkZUlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2NvbHVtbkluZGV4ID49IHN0YXRlLmNvbHVtbnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5hZGRJdGVtXCIgZGVmYXVsdE1lc3NhZ2U9XCJBZGQgaXRlbVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8QWRkIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmVkaXRDb2x1bW5cIiwgZGVmYXVsdE1lc3NhZ2U6IFwiRWRpdCBjb2x1bW5cIiB9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IHN0YXRlLmNvbHVtbnMuZmluZEluZGV4KChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy51bmtub3duQ29sdW1uXCIgZGVmYXVsdE1lc3NhZ2U9XCJDYW4ndCBmaW5kIGNvbHVtblwiIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5jb2x1bW5zW21hdGNoSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlVGl0bGUgdGl0bGU9e2NvbHVtbkNvdW50TGFiZWwoaW50bCwgbWF0Y2hJbmRleCArIDEpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29udGVudEJsb2NrLkFkbWluQ29tcG9uZW50IHN0YXRlPXttYXRjaC5wcm9wc30gdXBkYXRlU3RhdGU9e2NyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuKGtleSl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLm5vQ29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8gY29sdW1uc1wiIC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxQcmV2aWV3Q29udGVudFtdPihcbiAgICAgICAgICAgICAgICAocHJldmlld0NvbnRlbnQsIGN1cnJlbnRDb2x1bW4pID0+IFsuLi5wcmV2aWV3Q29udGVudCwgLi4uY29udGVudEJsb2NrLnByZXZpZXdDb250ZW50KGN1cnJlbnRDb2x1bW4ucHJvcHMsIGNvbnRleHQpXSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eY29sdW1ucy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbnNCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmNvbHVtbnNbbnVtXTtcblxuICAgICAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29udGVudEJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBleHRyYWN0VGV4dENvbnRlbnRzOiAoc3RhdGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluY2x1ZGVJbnZpc2libGVDb250ZW50ID0gb3B0aW9ucz8uaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29sdW1uLnZpc2libGUgJiYgIWluY2x1ZGVJbnZpc2libGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY29udGVudCwgLi4uKGNvbnRlbnRCbG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY29sdW1uLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKENvbHVtbnNCbG9jayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbHVtbnNCbG9jaztcbn1cblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgcGFkZGluZzogMTJweCAwO1xuYDtcblxuY29uc3QgU2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbCA9IHN0eWxlZChGb3JtQ29udHJvbExhYmVsKWBcbiAgICBwYWRkaW5nOiAxNXB4IDEwcHggMTVweCA3cHg7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkNvbnRlbnQgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDRweCAwO1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25JY29uID0gc3R5bGVkKEFkZClgXG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbnR5cGUgR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkgPSB7XG4gICAgY29sdW1uczogbnVtYmVyW107XG4gICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0IHwgdW5kZWZpbmVkO1xufTtcblxuZnVuY3Rpb24gY29sdW1uQ291bnRMYWJlbChpbnRsOiBJbnRsU2hhcGUsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmNvbHVtblRpdGxlXCIsXG4gICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogXCJDb2x1bW4ge251bWJlcn1cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBudW1iZXI6IGNvdW50IH0sXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdKTogR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkge1xuICAgIGNvbnN0IGdyb3VwZWRMYXlvdXRzID0gbGF5b3V0cy5yZWR1Y2UoKGFjYywgYykgPT4ge1xuICAgICAgICBhY2Muc2V0KGMuY29sdW1ucywgWy4uLihhY2MuZ2V0KGMuY29sdW1ucykgfHwgW10pLCBjXSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbmV3IE1hcDxudW1iZXIsIENvbHVtbnNCbG9ja0xheW91dFtdPigpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbnM6IEFycmF5LmZyb20oZ3JvdXBlZExheW91dHMua2V5cygpKSxcbiAgICAgICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0cyA9IGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiBsYXlvdXRzLmxlbmd0aCA/IGxheW91dHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ== */",
|
|
558
558
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
559
559
|
});
|
|
560
560
|
var SelectAllFromControlLabel = /*#__PURE__*/styled(FormControlLabel, process.env.NODE_ENV === "production" ? {
|
|
@@ -567,7 +567,7 @@ var SelectAllFromControlLabel = /*#__PURE__*/styled(FormControlLabel, process.en
|
|
|
567
567
|
styles: "padding:15px 10px 15px 7px"
|
|
568
568
|
} : {
|
|
569
569
|
name: "gqnhuy",
|
|
570
|
-
styles: "padding:15px 10px 15px 7px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeWYwRCIsImZpbGUiOiIuLi8uLi8uLi9zcmMvYmxvY2tzL2ZhY3Rvcmllcy9jcmVhdGVDb2x1bW5zQmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIFN0YWNrUGFnZSwgU3RhY2tQYWdlVGl0bGUsIFN0YWNrU3dpdGNoLCBTdGFja1N3aXRjaEFwaUNvbnRleHQgfSBmcm9tIFwiQGNvbWV0L2FkbWluXCI7XG5pbXBvcnQgeyBBZGQsIENvcHksIERlbGV0ZSwgSW52aXNpYmxlLCBQYXN0ZSwgVmlzaWJsZSB9IGZyb20gXCJAY29tZXQvYWRtaW4taWNvbnNcIjtcbmltcG9ydCB7IENoZWNrYm94LCBEaXZpZGVyLCBGb3JtQ29udHJvbExhYmVsLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHsgdHlwZSBEaXNwYXRjaCwgdHlwZSBSZWFjdE5vZGUsIHR5cGUgU2V0U3RhdGVBY3Rpb24gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHR5cGUgSW50bFNoYXBlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yLCB1c2VJbnRsIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFNlY3Rpb25cIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgQmxvY2tzRmluYWxGb3JtIH0gZnJvbSBcIi4uL2Zvcm0vQmxvY2tzRmluYWxGb3JtXCI7XG5pbXBvcnQgeyBjcmVhdGVCbG9ja1NrZWxldG9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvY3JlYXRlQmxvY2tTa2VsZXRvblwiO1xuaW1wb3J0IHsgZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llcyB9IGZyb20gXCIuLi9oZWxwZXJzL2RlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IEhvdmVyUHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvSG92ZXJQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQgeyBTZWxlY3RQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9TZWxlY3RQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIEJsb2NrQ2F0ZWdvcnksXG4gICAgdHlwZSBCbG9ja0RlcGVuZGVuY3ksXG4gICAgdHlwZSBCbG9ja0lucHV0QXBpLFxuICAgIHR5cGUgQmxvY2tJbnRlcmZhY2UsXG4gICAgdHlwZSBDdXN0b21CbG9ja0NhdGVnb3J5LFxuICAgIHR5cGUgUHJldmlld0NvbnRlbnQsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZU5ld1N0YXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBwYXJhbGxlbEFzeW5jRXZlcnkgfSBmcm9tIFwiLi4vdXRpbHMvcGFyYWxsZWxBc3luY0V2ZXJ5XCI7XG5pbXBvcnQgeyBGaW5hbEZvcm1Db2x1bW5zU2VsZWN0IH0gZnJvbSBcIi4vY29sdW1uc0Jsb2NrL0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3RcIjtcbmltcG9ydCB7IEZpbmFsRm9ybUxheW91dFNlbGVjdCB9IGZyb20gXCIuL2NvbHVtbnNCbG9jay9GaW5hbEZvcm1MYXlvdXRTZWxlY3RcIjtcbmltcG9ydCB7IHR5cGUgTGlzdEJsb2NrSXRlbSwgdHlwZSBMaXN0QmxvY2tTdGF0ZSB9IGZyb20gXCIuL2NyZWF0ZUxpc3RCbG9ja1wiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgYXMgY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQmxvY2tMYXlvdXQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb2x1bW5zOiBudW1iZXI7XG4gICAgbGFiZWw6IFJlYWN0Tm9kZTtcbiAgICBwcmV2aWV3OiBSZWFjdE5vZGU7XG4gICAgc2VjdGlvbj86XG4gICAgICAgIHwgc3RyaW5nXG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIGxhYmVsPzogUmVhY3ROb2RlO1xuICAgICAgICAgIH07XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tGcmFnbWVudDxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IHN0cmluZztcbiAgICBjb2x1bW5zOiBBcnJheTx7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgICAgICBwcm9wczogQmxvY2tJbnB1dEFwaTxUPjtcbiAgICB9Pjtcbn1cblxuaW50ZXJmYWNlIENvbHVtbnNCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIGxheW91dDogQ29sdW1uc0Jsb2NrTGF5b3V0O1xuICAgIGNvbHVtbnM6IExpc3RCbG9ja0l0ZW08VD5bXTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNvbHVtbnNCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBSZWFjdE5vZGU7XG4gICAgY2F0ZWdvcnk/OiBCbG9ja0NhdGVnb3J5IHwgQ3VzdG9tQmxvY2tDYXRlZ29yeTtcbiAgICBjb250ZW50QmxvY2s6IFQ7XG4gICAgbGF5b3V0czogQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbnNCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+KFxuICAgIHsgbmFtZSwgZGlzcGxheU5hbWUsIGNhdGVnb3J5ID0gQmxvY2tDYXRlZ29yeS5MYXlvdXQsIGNvbnRlbnRCbG9jaywgbGF5b3V0cywgdGFncyB9OiBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQ+LFxuICAgIG92ZXJyaWRlPzogKFxuICAgICAgICBibG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4gICAgKSA9PiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+Pixcbik6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+IHtcbiAgICBpZiAobGF5b3V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOdW1iZXIgb2YgbGF5b3V0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50ID0gY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBibG9jazogY29udGVudEJsb2NrIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRW1wdHlDb2x1bW5zKG51bWJlcjogbnVtYmVyKTogTGlzdEJsb2NrSXRlbTxUPltdIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShudW1iZXIpLmZpbGwodW5kZWZpbmVkKS5tYXAoKCkgPT4gKHtcbiAgICAgICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5kZWZhdWx0VmFsdWVzKCksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgQ29sdW1uc0Jsb2NrOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBjb250ZW50QmxvY2sudGFncyxcblxuICAgICAgICBjYXRlZ29yeSxcblxuICAgICAgICBkZWZhdWx0VmFsdWVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gbGF5b3V0c1swXTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IENvbHVtbnNCbG9ja1N0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIGxheW91dDogZGVmYXVsdExheW91dCxcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1wdHkgY29sdW1ucyBzbyB0aGUgbGlzdCBpcyBub3QgZW1wdHkgaW5pdGlhbGx5XG4gICAgICAgICAgICAgICAgY29sdW1uczogY3JlYXRlRW1wdHlDb2x1bW5zKGRlZmF1bHRMYXlvdXQuY29sdW1ucyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBpbnB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke2lucHV0LmxheW91dH1cIiFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogaW5wdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmlucHV0MlN0YXRlKGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RhdGUyT3V0cHV0OiAob3V0cHV0KSA9PiAoe1xuICAgICAgICAgICAgbGF5b3V0OiBvdXRwdXQubGF5b3V0Lm5hbWUsXG4gICAgICAgICAgICBjb2x1bW5zOiBvdXRwdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5zdGF0ZTJPdXRwdXQoY29sdW1uLnByb3BzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSBsYXlvdXRzLmZpbmQoKGxheW91dCkgPT4gbGF5b3V0Lm5hbWUgPT09IG91dHB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke291dHB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbnMgb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYXdhaXQgY29udGVudEJsb2NrLm91dHB1dDJTdGF0ZShjb2x1bW5zLnByb3BzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0NvbnRleHQucGFyZW50VXJsIH0sXG4gICAgICAgICAgICBsYXlvdXQ6IHN0YXRlLmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogc3RhdGUuY29sdW1uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IChwcmV2aWV3Q29udGV4dC5zaG93VmlzaWJsZU9ubHkgPyBjLnZpc2libGUgOiB0cnVlKSkgLy8gZGVwZW5kaW5nIG9uIGNvbnRleHQgc2hvdyBhbGwgYmxvY2tzIG9yIG9ubHkgdmlzaWJsZSBibG9ja3NcbiAgICAgICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0NvbnRleHQucGFyZW50VXJsU3ViUm91dGUgPz8gcHJldmlld0NvbnRleHQucGFyZW50VXJsfS8ke2NvbHVtbi5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNvbHVtbi5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50VXJsOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogYmxvY2tBZG1pblJvdXRlIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGlzVmFsaWQ6IChzdGF0ZSkgPT4gcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmNvbHVtbnMsIChjb2x1bW4pID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcykpLFxuXG4gICAgICAgIGFuY2hvcnM6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmNvbHVtbnMucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oY29udGVudEJsb2NrLmFuY2hvcnM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmNvbHVtbnMucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmRlcGVuZGVuY2llcywgLi4uKGNvbnRlbnRCbG9jay5kZXBlbmRlbmNpZXM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4gPSB7IC4uLm91dHB1dCwgY29sdW1uczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBuZXdPdXRwdXQuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLnJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dChjb2x1bW4ucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpID0gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2U6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPExpc3RCbG9ja1N0YXRlPFQ+Pj4gPSAobGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9ja1N0YXRlID0gcmVzb2x2ZU5ld1N0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogeyBibG9ja3M6IHByZXZTdGF0ZS5jb2x1bW5zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZUFjdGlvbjogbGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogbGlzdEJsb2NrU3RhdGUuYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgY3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4sXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJsZSxcbiAgICAgICAgICAgIH0gPSB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCh7IHN0YXRlOiB7IGJsb2Nrczogc3RhdGUuY29sdW1ucyB9LCB1cGRhdGVTdGF0ZTogaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoIGluaXRpYWxQYWdlPVwibGlzdFwiIGRpc2FibGVGb3JjZVByb21wdFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja3NGaW5hbEZvcm08eyBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDsgY29sdW1uczogbnVtYmVyIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsoeyBsYXlvdXQsIGNvbHVtbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgPSBncm91cExheW91dHNCeUNvbHVtbnNBcGkuZ2V0RGVmYXVsdExheW91dChjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMYXlvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuY29sdW1ucyAhPT0gY29sdW1ucyAmJiBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID8gZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA6IGxheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW5nRW1wdHlDb2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA+IHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IGNyZWF0ZUVtcHR5Q29sdW1ucyhjb2x1bW5zIC0gcHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoKSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBuZXdMYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5wcmV2U3RhdGUuY29sdW1ucywgLi4ubWlzc2luZ0VtcHR5Q29sdW1uc10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWVzPXt7IGxheW91dDogc3RhdGUubGF5b3V0LCBjb2x1bW5zOiBzdGF0ZS5sYXlvdXQuY29sdW1ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5zXCIgZGVmYXVsdE1lc3NhZ2U9XCJDb2x1bW5zXCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtncm91cExheW91dHNCeUNvbHVtbnNBcGkuY29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMubGF5b3V0XCIgZGVmYXVsdE1lc3NhZ2U9XCJMYXlvdXRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD17RmluYWxGb3JtTGF5b3V0U2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0cz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldExheW91dHMoc3RhdGUubGF5b3V0LmNvbHVtbnMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja3NGaW5hbEZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIHRpdGxlPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLml0ZW1zXCIgZGVmYXVsdE1lc3NhZ2U9XCJJdGVtc1wiIC8+fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZENvdW50ID09PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmNvbHVtbnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2NvbHVtbi5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2NvbHVtbi5rZXl9L2NvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17Y29sdW1uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUHJldmlld0NvbnRlbnQgYmxvY2s9e2NvbnRlbnRCbG9ja30gc3RhdGU9e2NvbHVtbi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17Y29sdW1uSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgY29sdW1uLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbY29sdW1uLmtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gWy4uLnByZXZTdGF0ZS5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uVG9Nb3ZlID0gY29sdW1ucy5zcGxpY2UoZnJvbSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKHRvLCAwLCBjb2x1bW5Ub01vdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGNvbHVtbnMgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB0b2dnbGVWaXNpYmxlKGNvbHVtbi5rZXkpfSBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpc2libGUgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudEJsb2NrLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb2x1bW4ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYXN0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhjb2x1bW5JbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtjb2x1bW4uc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGNvbHVtbiwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRGbj17KCkgPT4gY29udGVudEJsb2NrLmlzVmFsaWQoY29sdW1uLnByb3BzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2NvbHVtbi5zbGlkZUlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2NvbHVtbkluZGV4ID49IHN0YXRlLmNvbHVtbnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5hZGRJdGVtXCIgZGVmYXVsdE1lc3NhZ2U9XCJBZGQgaXRlbVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8QWRkIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmVkaXRDb2x1bW5cIiwgZGVmYXVsdE1lc3NhZ2U6IFwiRWRpdCBjb2x1bW5cIiB9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IHN0YXRlLmNvbHVtbnMuZmluZEluZGV4KChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy51bmtub3duQ29sdW1uXCIgZGVmYXVsdE1lc3NhZ2U9XCJDYW4ndCBmaW5kIGNvbHVtblwiIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5jb2x1bW5zW21hdGNoSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlVGl0bGUgdGl0bGU9e2NvbHVtbkNvdW50TGFiZWwoaW50bCwgbWF0Y2hJbmRleCArIDEpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29udGVudEJsb2NrLkFkbWluQ29tcG9uZW50IHN0YXRlPXttYXRjaC5wcm9wc30gdXBkYXRlU3RhdGU9e2NyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuKGtleSl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLm5vQ29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8gY29sdW1uc1wiIC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxQcmV2aWV3Q29udGVudFtdPihcbiAgICAgICAgICAgICAgICAocHJldmlld0NvbnRlbnQsIGN1cnJlbnRDb2x1bW4pID0+IFsuLi5wcmV2aWV3Q29udGVudCwgLi4uY29udGVudEJsb2NrLnByZXZpZXdDb250ZW50KGN1cnJlbnRDb2x1bW4ucHJvcHMsIGNvbnRleHQpXSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eY29sdW1ucy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbnNCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmNvbHVtbnNbbnVtXTtcblxuICAgICAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29udGVudEJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBleHRyYWN0VGV4dENvbnRlbnRzOiAoc3RhdGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluY2x1ZGVJbnZpc2libGVDb250ZW50ID0gb3B0aW9ucz8uaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29sdW1uLnZpc2libGUgJiYgIWluY2x1ZGVJbnZpc2libGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY29udGVudCwgLi4uKGNvbnRlbnRCbG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY29sdW1uLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKENvbHVtbnNCbG9jayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbHVtbnNCbG9jaztcbn1cblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgcGFkZGluZzogMTJweCAwO1xuYDtcblxuY29uc3QgU2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbCA9IHN0eWxlZChGb3JtQ29udHJvbExhYmVsKWBcbiAgICBwYWRkaW5nOiAxNXB4IDEwcHggMTVweCA3cHg7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkNvbnRlbnQgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDRweCAwO1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25JY29uID0gc3R5bGVkKEFkZClgXG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbnR5cGUgR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkgPSB7XG4gICAgY29sdW1uczogbnVtYmVyW107XG4gICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0IHwgdW5kZWZpbmVkO1xufTtcblxuZnVuY3Rpb24gY29sdW1uQ291bnRMYWJlbChpbnRsOiBJbnRsU2hhcGUsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmNvbHVtblRpdGxlXCIsXG4gICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogXCJDb2x1bW4ge251bWJlcn1cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBudW1iZXI6IGNvdW50IH0sXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdKTogR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkge1xuICAgIGNvbnN0IGdyb3VwZWRMYXlvdXRzID0gbGF5b3V0cy5yZWR1Y2UoKGFjYywgYykgPT4ge1xuICAgICAgICBhY2Muc2V0KGMuY29sdW1ucywgWy4uLihhY2MuZ2V0KGMuY29sdW1ucykgfHwgW10pLCBjXSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbmV3IE1hcDxudW1iZXIsIENvbHVtbnNCbG9ja0xheW91dFtdPigpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbnM6IEFycmF5LmZyb20oZ3JvdXBlZExheW91dHMua2V5cygpKSxcbiAgICAgICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0cyA9IGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiBsYXlvdXRzLmxlbmd0aCA/IGxheW91dHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ== */",
|
|
570
|
+
styles: "padding:15px 10px 15px 7px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeWYwRCIsImZpbGUiOiIuLi8uLi8uLi9zcmMvYmxvY2tzL2ZhY3Rvcmllcy9jcmVhdGVDb2x1bW5zQmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIFN0YWNrUGFnZSwgU3RhY2tQYWdlVGl0bGUsIFN0YWNrU3dpdGNoLCBTdGFja1N3aXRjaEFwaUNvbnRleHQgfSBmcm9tIFwiQGNvbWV0L2FkbWluXCI7XG5pbXBvcnQgeyBBZGQsIENvcHksIERlbGV0ZSwgSW52aXNpYmxlLCBQYXN0ZSwgVmlzaWJsZSB9IGZyb20gXCJAY29tZXQvYWRtaW4taWNvbnNcIjtcbmltcG9ydCB7IENoZWNrYm94LCBEaXZpZGVyLCBGb3JtQ29udHJvbExhYmVsLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXNwYXRjaCwgUmVhY3ROb2RlLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBJbnRsU2hhcGUsIHR5cGUgTWVzc2FnZURlc2NyaXB0b3IsIHVzZUludGwgfSBmcm9tIFwicmVhY3QtaW50bFwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9BZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlclwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50UGFwZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvblwiO1xuaW1wb3J0IHsgQmxvY2tQcmV2aWV3Q29udGVudCB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tQcmV2aWV3Q29udGVudFwiO1xuaW1wb3J0IHsgQmxvY2tSb3cgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUm93XCI7XG5pbXBvcnQgeyBCbG9ja3NGaW5hbEZvcm0gfSBmcm9tIFwiLi4vZm9ybS9CbG9ja3NGaW5hbEZvcm1cIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7XG4gICAgQmxvY2tDYXRlZ29yeSxcbiAgICB0eXBlIEJsb2NrRGVwZW5kZW5jeSxcbiAgICB0eXBlIEJsb2NrSW5wdXRBcGksXG4gICAgdHlwZSBCbG9ja0ludGVyZmFjZSxcbiAgICB0eXBlIEN1c3RvbUJsb2NrQ2F0ZWdvcnksXG4gICAgdHlwZSBQcmV2aWV3Q29udGVudCxcbn0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyByZXNvbHZlTmV3U3RhdGUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IEZpbmFsRm9ybUNvbHVtbnNTZWxlY3QgfSBmcm9tIFwiLi9jb2x1bW5zQmxvY2svRmluYWxGb3JtQ29sdW1uc1NlbGVjdFwiO1xuaW1wb3J0IHsgRmluYWxGb3JtTGF5b3V0U2VsZWN0IH0gZnJvbSBcIi4vY29sdW1uc0Jsb2NrL0ZpbmFsRm9ybUxheW91dFNlbGVjdFwiO1xuaW1wb3J0IHR5cGUgeyBMaXN0QmxvY2tJdGVtLCBMaXN0QmxvY2tTdGF0ZSB9IGZyb20gXCIuL2NyZWF0ZUxpc3RCbG9ja1wiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgYXMgY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQmxvY2tMYXlvdXQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb2x1bW5zOiBudW1iZXI7XG4gICAgbGFiZWw6IFJlYWN0Tm9kZTtcbiAgICBwcmV2aWV3OiBSZWFjdE5vZGU7XG4gICAgc2VjdGlvbj86XG4gICAgICAgIHwgc3RyaW5nXG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIGxhYmVsPzogUmVhY3ROb2RlO1xuICAgICAgICAgIH07XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tGcmFnbWVudDxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IHN0cmluZztcbiAgICBjb2x1bW5zOiBBcnJheTx7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgICAgICBwcm9wczogQmxvY2tJbnB1dEFwaTxUPjtcbiAgICB9Pjtcbn1cblxuaW50ZXJmYWNlIENvbHVtbnNCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIGxheW91dDogQ29sdW1uc0Jsb2NrTGF5b3V0O1xuICAgIGNvbHVtbnM6IExpc3RCbG9ja0l0ZW08VD5bXTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNvbHVtbnNCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBSZWFjdE5vZGU7XG4gICAgY2F0ZWdvcnk/OiBCbG9ja0NhdGVnb3J5IHwgQ3VzdG9tQmxvY2tDYXRlZ29yeTtcbiAgICBjb250ZW50QmxvY2s6IFQ7XG4gICAgbGF5b3V0czogQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbnNCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+KFxuICAgIHsgbmFtZSwgZGlzcGxheU5hbWUsIGNhdGVnb3J5ID0gQmxvY2tDYXRlZ29yeS5MYXlvdXQsIGNvbnRlbnRCbG9jaywgbGF5b3V0cywgdGFncyB9OiBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQ+LFxuICAgIG92ZXJyaWRlPzogKFxuICAgICAgICBibG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4gICAgKSA9PiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+Pixcbik6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+IHtcbiAgICBpZiAobGF5b3V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOdW1iZXIgb2YgbGF5b3V0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50ID0gY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBibG9jazogY29udGVudEJsb2NrIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRW1wdHlDb2x1bW5zKG51bWJlcjogbnVtYmVyKTogTGlzdEJsb2NrSXRlbTxUPltdIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShudW1iZXIpLmZpbGwodW5kZWZpbmVkKS5tYXAoKCkgPT4gKHtcbiAgICAgICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5kZWZhdWx0VmFsdWVzKCksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgQ29sdW1uc0Jsb2NrOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBjb250ZW50QmxvY2sudGFncyxcblxuICAgICAgICBjYXRlZ29yeSxcblxuICAgICAgICBkZWZhdWx0VmFsdWVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gbGF5b3V0c1swXTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IENvbHVtbnNCbG9ja1N0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIGxheW91dDogZGVmYXVsdExheW91dCxcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1wdHkgY29sdW1ucyBzbyB0aGUgbGlzdCBpcyBub3QgZW1wdHkgaW5pdGlhbGx5XG4gICAgICAgICAgICAgICAgY29sdW1uczogY3JlYXRlRW1wdHlDb2x1bW5zKGRlZmF1bHRMYXlvdXQuY29sdW1ucyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBpbnB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke2lucHV0LmxheW91dH1cIiFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogaW5wdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmlucHV0MlN0YXRlKGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RhdGUyT3V0cHV0OiAob3V0cHV0KSA9PiAoe1xuICAgICAgICAgICAgbGF5b3V0OiBvdXRwdXQubGF5b3V0Lm5hbWUsXG4gICAgICAgICAgICBjb2x1bW5zOiBvdXRwdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5zdGF0ZTJPdXRwdXQoY29sdW1uLnByb3BzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSBsYXlvdXRzLmZpbmQoKGxheW91dCkgPT4gbGF5b3V0Lm5hbWUgPT09IG91dHB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke291dHB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbnMgb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYXdhaXQgY29udGVudEJsb2NrLm91dHB1dDJTdGF0ZShjb2x1bW5zLnByb3BzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0NvbnRleHQucGFyZW50VXJsIH0sXG4gICAgICAgICAgICBsYXlvdXQ6IHN0YXRlLmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogc3RhdGUuY29sdW1uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IChwcmV2aWV3Q29udGV4dC5zaG93VmlzaWJsZU9ubHkgPyBjLnZpc2libGUgOiB0cnVlKSkgLy8gZGVwZW5kaW5nIG9uIGNvbnRleHQgc2hvdyBhbGwgYmxvY2tzIG9yIG9ubHkgdmlzaWJsZSBibG9ja3NcbiAgICAgICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0NvbnRleHQucGFyZW50VXJsU3ViUm91dGUgPz8gcHJldmlld0NvbnRleHQucGFyZW50VXJsfS8ke2NvbHVtbi5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNvbHVtbi5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50VXJsOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogYmxvY2tBZG1pblJvdXRlIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGlzVmFsaWQ6IChzdGF0ZSkgPT4gcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmNvbHVtbnMsIChjb2x1bW4pID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcykpLFxuXG4gICAgICAgIGFuY2hvcnM6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmNvbHVtbnMucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oY29udGVudEJsb2NrLmFuY2hvcnM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmNvbHVtbnMucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmRlcGVuZGVuY2llcywgLi4uKGNvbnRlbnRCbG9jay5kZXBlbmRlbmNpZXM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4gPSB7IC4uLm91dHB1dCwgY29sdW1uczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBuZXdPdXRwdXQuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLnJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dChjb2x1bW4ucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpID0gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2U6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPExpc3RCbG9ja1N0YXRlPFQ+Pj4gPSAobGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9ja1N0YXRlID0gcmVzb2x2ZU5ld1N0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogeyBibG9ja3M6IHByZXZTdGF0ZS5jb2x1bW5zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZUFjdGlvbjogbGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogbGlzdEJsb2NrU3RhdGUuYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgY3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4sXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJsZSxcbiAgICAgICAgICAgIH0gPSB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCh7IHN0YXRlOiB7IGJsb2Nrczogc3RhdGUuY29sdW1ucyB9LCB1cGRhdGVTdGF0ZTogaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoIGluaXRpYWxQYWdlPVwibGlzdFwiIGRpc2FibGVGb3JjZVByb21wdFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja3NGaW5hbEZvcm08eyBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDsgY29sdW1uczogbnVtYmVyIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsoeyBsYXlvdXQsIGNvbHVtbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgPSBncm91cExheW91dHNCeUNvbHVtbnNBcGkuZ2V0RGVmYXVsdExheW91dChjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMYXlvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuY29sdW1ucyAhPT0gY29sdW1ucyAmJiBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID8gZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA6IGxheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW5nRW1wdHlDb2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA+IHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IGNyZWF0ZUVtcHR5Q29sdW1ucyhjb2x1bW5zIC0gcHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoKSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBuZXdMYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5wcmV2U3RhdGUuY29sdW1ucywgLi4ubWlzc2luZ0VtcHR5Q29sdW1uc10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWVzPXt7IGxheW91dDogc3RhdGUubGF5b3V0LCBjb2x1bW5zOiBzdGF0ZS5sYXlvdXQuY29sdW1ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5zXCIgZGVmYXVsdE1lc3NhZ2U9XCJDb2x1bW5zXCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtncm91cExheW91dHNCeUNvbHVtbnNBcGkuY29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMubGF5b3V0XCIgZGVmYXVsdE1lc3NhZ2U9XCJMYXlvdXRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD17RmluYWxGb3JtTGF5b3V0U2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0cz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldExheW91dHMoc3RhdGUubGF5b3V0LmNvbHVtbnMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja3NGaW5hbEZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIHRpdGxlPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLml0ZW1zXCIgZGVmYXVsdE1lc3NhZ2U9XCJJdGVtc1wiIC8+fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZENvdW50ID09PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmNvbHVtbnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2NvbHVtbi5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2NvbHVtbi5rZXl9L2NvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17Y29sdW1uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUHJldmlld0NvbnRlbnQgYmxvY2s9e2NvbnRlbnRCbG9ja30gc3RhdGU9e2NvbHVtbi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17Y29sdW1uSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgY29sdW1uLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbY29sdW1uLmtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gWy4uLnByZXZTdGF0ZS5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uVG9Nb3ZlID0gY29sdW1ucy5zcGxpY2UoZnJvbSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKHRvLCAwLCBjb2x1bW5Ub01vdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGNvbHVtbnMgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB0b2dnbGVWaXNpYmxlKGNvbHVtbi5rZXkpfSBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpc2libGUgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudEJsb2NrLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb2x1bW4ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYXN0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhjb2x1bW5JbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtjb2x1bW4uc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGNvbHVtbiwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRGbj17KCkgPT4gY29udGVudEJsb2NrLmlzVmFsaWQoY29sdW1uLnByb3BzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2NvbHVtbi5zbGlkZUlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2NvbHVtbkluZGV4ID49IHN0YXRlLmNvbHVtbnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5hZGRJdGVtXCIgZGVmYXVsdE1lc3NhZ2U9XCJBZGQgaXRlbVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8QWRkIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmVkaXRDb2x1bW5cIiwgZGVmYXVsdE1lc3NhZ2U6IFwiRWRpdCBjb2x1bW5cIiB9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IHN0YXRlLmNvbHVtbnMuZmluZEluZGV4KChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy51bmtub3duQ29sdW1uXCIgZGVmYXVsdE1lc3NhZ2U9XCJDYW4ndCBmaW5kIGNvbHVtblwiIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5jb2x1bW5zW21hdGNoSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlVGl0bGUgdGl0bGU9e2NvbHVtbkNvdW50TGFiZWwoaW50bCwgbWF0Y2hJbmRleCArIDEpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29udGVudEJsb2NrLkFkbWluQ29tcG9uZW50IHN0YXRlPXttYXRjaC5wcm9wc30gdXBkYXRlU3RhdGU9e2NyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuKGtleSl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLm5vQ29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8gY29sdW1uc1wiIC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxQcmV2aWV3Q29udGVudFtdPihcbiAgICAgICAgICAgICAgICAocHJldmlld0NvbnRlbnQsIGN1cnJlbnRDb2x1bW4pID0+IFsuLi5wcmV2aWV3Q29udGVudCwgLi4uY29udGVudEJsb2NrLnByZXZpZXdDb250ZW50KGN1cnJlbnRDb2x1bW4ucHJvcHMsIGNvbnRleHQpXSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eY29sdW1ucy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbnNCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmNvbHVtbnNbbnVtXTtcblxuICAgICAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29udGVudEJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBleHRyYWN0VGV4dENvbnRlbnRzOiAoc3RhdGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluY2x1ZGVJbnZpc2libGVDb250ZW50ID0gb3B0aW9ucz8uaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29sdW1uLnZpc2libGUgJiYgIWluY2x1ZGVJbnZpc2libGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY29udGVudCwgLi4uKGNvbnRlbnRCbG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY29sdW1uLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKENvbHVtbnNCbG9jayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbHVtbnNCbG9jaztcbn1cblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgcGFkZGluZzogMTJweCAwO1xuYDtcblxuY29uc3QgU2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbCA9IHN0eWxlZChGb3JtQ29udHJvbExhYmVsKWBcbiAgICBwYWRkaW5nOiAxNXB4IDEwcHggMTVweCA3cHg7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkNvbnRlbnQgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDRweCAwO1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25JY29uID0gc3R5bGVkKEFkZClgXG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbnR5cGUgR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkgPSB7XG4gICAgY29sdW1uczogbnVtYmVyW107XG4gICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0IHwgdW5kZWZpbmVkO1xufTtcblxuZnVuY3Rpb24gY29sdW1uQ291bnRMYWJlbChpbnRsOiBJbnRsU2hhcGUsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmNvbHVtblRpdGxlXCIsXG4gICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogXCJDb2x1bW4ge251bWJlcn1cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBudW1iZXI6IGNvdW50IH0sXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdKTogR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkge1xuICAgIGNvbnN0IGdyb3VwZWRMYXlvdXRzID0gbGF5b3V0cy5yZWR1Y2UoKGFjYywgYykgPT4ge1xuICAgICAgICBhY2Muc2V0KGMuY29sdW1ucywgWy4uLihhY2MuZ2V0KGMuY29sdW1ucykgfHwgW10pLCBjXSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbmV3IE1hcDxudW1iZXIsIENvbHVtbnNCbG9ja0xheW91dFtdPigpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbnM6IEFycmF5LmZyb20oZ3JvdXBlZExheW91dHMua2V5cygpKSxcbiAgICAgICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0cyA9IGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiBsYXlvdXRzLmxlbmd0aCA/IGxheW91dHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ== */",
|
|
571
571
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
572
572
|
});
|
|
573
573
|
var LargeAddButtonContent = /*#__PURE__*/styled("span", process.env.NODE_ENV === "production" ? {
|
|
@@ -580,7 +580,7 @@ var LargeAddButtonContent = /*#__PURE__*/styled("span", process.env.NODE_ENV ===
|
|
|
580
580
|
styles: "display:flex;flex-direction:column;align-items:center;padding:4px 0"
|
|
581
581
|
} : {
|
|
582
582
|
name: "3g6o2",
|
|
583
|
-
styles: "display:flex;flex-direction:column;align-items:center;padding:4px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNmY0QyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvYmxvY2tzL2ZhY3Rvcmllcy9jcmVhdGVDb2x1bW5zQmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIFN0YWNrUGFnZSwgU3RhY2tQYWdlVGl0bGUsIFN0YWNrU3dpdGNoLCBTdGFja1N3aXRjaEFwaUNvbnRleHQgfSBmcm9tIFwiQGNvbWV0L2FkbWluXCI7XG5pbXBvcnQgeyBBZGQsIENvcHksIERlbGV0ZSwgSW52aXNpYmxlLCBQYXN0ZSwgVmlzaWJsZSB9IGZyb20gXCJAY29tZXQvYWRtaW4taWNvbnNcIjtcbmltcG9ydCB7IENoZWNrYm94LCBEaXZpZGVyLCBGb3JtQ29udHJvbExhYmVsLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHsgdHlwZSBEaXNwYXRjaCwgdHlwZSBSZWFjdE5vZGUsIHR5cGUgU2V0U3RhdGVBY3Rpb24gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHR5cGUgSW50bFNoYXBlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yLCB1c2VJbnRsIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFNlY3Rpb25cIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgQmxvY2tzRmluYWxGb3JtIH0gZnJvbSBcIi4uL2Zvcm0vQmxvY2tzRmluYWxGb3JtXCI7XG5pbXBvcnQgeyBjcmVhdGVCbG9ja1NrZWxldG9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvY3JlYXRlQmxvY2tTa2VsZXRvblwiO1xuaW1wb3J0IHsgZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llcyB9IGZyb20gXCIuLi9oZWxwZXJzL2RlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IEhvdmVyUHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvSG92ZXJQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQgeyBTZWxlY3RQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9TZWxlY3RQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIEJsb2NrQ2F0ZWdvcnksXG4gICAgdHlwZSBCbG9ja0RlcGVuZGVuY3ksXG4gICAgdHlwZSBCbG9ja0lucHV0QXBpLFxuICAgIHR5cGUgQmxvY2tJbnRlcmZhY2UsXG4gICAgdHlwZSBDdXN0b21CbG9ja0NhdGVnb3J5LFxuICAgIHR5cGUgUHJldmlld0NvbnRlbnQsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZU5ld1N0YXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBwYXJhbGxlbEFzeW5jRXZlcnkgfSBmcm9tIFwiLi4vdXRpbHMvcGFyYWxsZWxBc3luY0V2ZXJ5XCI7XG5pbXBvcnQgeyBGaW5hbEZvcm1Db2x1bW5zU2VsZWN0IH0gZnJvbSBcIi4vY29sdW1uc0Jsb2NrL0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3RcIjtcbmltcG9ydCB7IEZpbmFsRm9ybUxheW91dFNlbGVjdCB9IGZyb20gXCIuL2NvbHVtbnNCbG9jay9GaW5hbEZvcm1MYXlvdXRTZWxlY3RcIjtcbmltcG9ydCB7IHR5cGUgTGlzdEJsb2NrSXRlbSwgdHlwZSBMaXN0QmxvY2tTdGF0ZSB9IGZyb20gXCIuL2NyZWF0ZUxpc3RCbG9ja1wiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgYXMgY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQmxvY2tMYXlvdXQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb2x1bW5zOiBudW1iZXI7XG4gICAgbGFiZWw6IFJlYWN0Tm9kZTtcbiAgICBwcmV2aWV3OiBSZWFjdE5vZGU7XG4gICAgc2VjdGlvbj86XG4gICAgICAgIHwgc3RyaW5nXG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIGxhYmVsPzogUmVhY3ROb2RlO1xuICAgICAgICAgIH07XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tGcmFnbWVudDxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IHN0cmluZztcbiAgICBjb2x1bW5zOiBBcnJheTx7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgICAgICBwcm9wczogQmxvY2tJbnB1dEFwaTxUPjtcbiAgICB9Pjtcbn1cblxuaW50ZXJmYWNlIENvbHVtbnNCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIGxheW91dDogQ29sdW1uc0Jsb2NrTGF5b3V0O1xuICAgIGNvbHVtbnM6IExpc3RCbG9ja0l0ZW08VD5bXTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNvbHVtbnNCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBSZWFjdE5vZGU7XG4gICAgY2F0ZWdvcnk/OiBCbG9ja0NhdGVnb3J5IHwgQ3VzdG9tQmxvY2tDYXRlZ29yeTtcbiAgICBjb250ZW50QmxvY2s6IFQ7XG4gICAgbGF5b3V0czogQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbnNCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+KFxuICAgIHsgbmFtZSwgZGlzcGxheU5hbWUsIGNhdGVnb3J5ID0gQmxvY2tDYXRlZ29yeS5MYXlvdXQsIGNvbnRlbnRCbG9jaywgbGF5b3V0cywgdGFncyB9OiBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQ+LFxuICAgIG92ZXJyaWRlPzogKFxuICAgICAgICBibG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4gICAgKSA9PiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+Pixcbik6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+IHtcbiAgICBpZiAobGF5b3V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOdW1iZXIgb2YgbGF5b3V0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50ID0gY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBibG9jazogY29udGVudEJsb2NrIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRW1wdHlDb2x1bW5zKG51bWJlcjogbnVtYmVyKTogTGlzdEJsb2NrSXRlbTxUPltdIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShudW1iZXIpLmZpbGwodW5kZWZpbmVkKS5tYXAoKCkgPT4gKHtcbiAgICAgICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5kZWZhdWx0VmFsdWVzKCksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgQ29sdW1uc0Jsb2NrOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBjb250ZW50QmxvY2sudGFncyxcblxuICAgICAgICBjYXRlZ29yeSxcblxuICAgICAgICBkZWZhdWx0VmFsdWVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gbGF5b3V0c1swXTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IENvbHVtbnNCbG9ja1N0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIGxheW91dDogZGVmYXVsdExheW91dCxcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1wdHkgY29sdW1ucyBzbyB0aGUgbGlzdCBpcyBub3QgZW1wdHkgaW5pdGlhbGx5XG4gICAgICAgICAgICAgICAgY29sdW1uczogY3JlYXRlRW1wdHlDb2x1bW5zKGRlZmF1bHRMYXlvdXQuY29sdW1ucyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBpbnB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke2lucHV0LmxheW91dH1cIiFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogaW5wdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmlucHV0MlN0YXRlKGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RhdGUyT3V0cHV0OiAob3V0cHV0KSA9PiAoe1xuICAgICAgICAgICAgbGF5b3V0OiBvdXRwdXQubGF5b3V0Lm5hbWUsXG4gICAgICAgICAgICBjb2x1bW5zOiBvdXRwdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5zdGF0ZTJPdXRwdXQoY29sdW1uLnByb3BzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSBsYXlvdXRzLmZpbmQoKGxheW91dCkgPT4gbGF5b3V0Lm5hbWUgPT09IG91dHB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke291dHB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbnMgb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYXdhaXQgY29udGVudEJsb2NrLm91dHB1dDJTdGF0ZShjb2x1bW5zLnByb3BzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0NvbnRleHQucGFyZW50VXJsIH0sXG4gICAgICAgICAgICBsYXlvdXQ6IHN0YXRlLmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogc3RhdGUuY29sdW1uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IChwcmV2aWV3Q29udGV4dC5zaG93VmlzaWJsZU9ubHkgPyBjLnZpc2libGUgOiB0cnVlKSkgLy8gZGVwZW5kaW5nIG9uIGNvbnRleHQgc2hvdyBhbGwgYmxvY2tzIG9yIG9ubHkgdmlzaWJsZSBibG9ja3NcbiAgICAgICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0NvbnRleHQucGFyZW50VXJsU3ViUm91dGUgPz8gcHJldmlld0NvbnRleHQucGFyZW50VXJsfS8ke2NvbHVtbi5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNvbHVtbi5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50VXJsOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogYmxvY2tBZG1pblJvdXRlIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGlzVmFsaWQ6IChzdGF0ZSkgPT4gcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmNvbHVtbnMsIChjb2x1bW4pID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcykpLFxuXG4gICAgICAgIGFuY2hvcnM6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmNvbHVtbnMucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oY29udGVudEJsb2NrLmFuY2hvcnM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmNvbHVtbnMucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmRlcGVuZGVuY2llcywgLi4uKGNvbnRlbnRCbG9jay5kZXBlbmRlbmNpZXM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4gPSB7IC4uLm91dHB1dCwgY29sdW1uczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBuZXdPdXRwdXQuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLnJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dChjb2x1bW4ucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpID0gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2U6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPExpc3RCbG9ja1N0YXRlPFQ+Pj4gPSAobGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9ja1N0YXRlID0gcmVzb2x2ZU5ld1N0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogeyBibG9ja3M6IHByZXZTdGF0ZS5jb2x1bW5zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZUFjdGlvbjogbGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogbGlzdEJsb2NrU3RhdGUuYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgY3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4sXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJsZSxcbiAgICAgICAgICAgIH0gPSB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCh7IHN0YXRlOiB7IGJsb2Nrczogc3RhdGUuY29sdW1ucyB9LCB1cGRhdGVTdGF0ZTogaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoIGluaXRpYWxQYWdlPVwibGlzdFwiIGRpc2FibGVGb3JjZVByb21wdFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja3NGaW5hbEZvcm08eyBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDsgY29sdW1uczogbnVtYmVyIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsoeyBsYXlvdXQsIGNvbHVtbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgPSBncm91cExheW91dHNCeUNvbHVtbnNBcGkuZ2V0RGVmYXVsdExheW91dChjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMYXlvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuY29sdW1ucyAhPT0gY29sdW1ucyAmJiBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID8gZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA6IGxheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW5nRW1wdHlDb2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA+IHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IGNyZWF0ZUVtcHR5Q29sdW1ucyhjb2x1bW5zIC0gcHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoKSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBuZXdMYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5wcmV2U3RhdGUuY29sdW1ucywgLi4ubWlzc2luZ0VtcHR5Q29sdW1uc10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWVzPXt7IGxheW91dDogc3RhdGUubGF5b3V0LCBjb2x1bW5zOiBzdGF0ZS5sYXlvdXQuY29sdW1ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5zXCIgZGVmYXVsdE1lc3NhZ2U9XCJDb2x1bW5zXCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtncm91cExheW91dHNCeUNvbHVtbnNBcGkuY29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMubGF5b3V0XCIgZGVmYXVsdE1lc3NhZ2U9XCJMYXlvdXRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD17RmluYWxGb3JtTGF5b3V0U2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0cz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldExheW91dHMoc3RhdGUubGF5b3V0LmNvbHVtbnMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja3NGaW5hbEZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIHRpdGxlPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLml0ZW1zXCIgZGVmYXVsdE1lc3NhZ2U9XCJJdGVtc1wiIC8+fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZENvdW50ID09PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmNvbHVtbnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2NvbHVtbi5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2NvbHVtbi5rZXl9L2NvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17Y29sdW1uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUHJldmlld0NvbnRlbnQgYmxvY2s9e2NvbnRlbnRCbG9ja30gc3RhdGU9e2NvbHVtbi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17Y29sdW1uSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgY29sdW1uLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbY29sdW1uLmtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gWy4uLnByZXZTdGF0ZS5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uVG9Nb3ZlID0gY29sdW1ucy5zcGxpY2UoZnJvbSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKHRvLCAwLCBjb2x1bW5Ub01vdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGNvbHVtbnMgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB0b2dnbGVWaXNpYmxlKGNvbHVtbi5rZXkpfSBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpc2libGUgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudEJsb2NrLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb2x1bW4ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYXN0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhjb2x1bW5JbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtjb2x1bW4uc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGNvbHVtbiwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRGbj17KCkgPT4gY29udGVudEJsb2NrLmlzVmFsaWQoY29sdW1uLnByb3BzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2NvbHVtbi5zbGlkZUlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2NvbHVtbkluZGV4ID49IHN0YXRlLmNvbHVtbnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5hZGRJdGVtXCIgZGVmYXVsdE1lc3NhZ2U9XCJBZGQgaXRlbVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8QWRkIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmVkaXRDb2x1bW5cIiwgZGVmYXVsdE1lc3NhZ2U6IFwiRWRpdCBjb2x1bW5cIiB9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IHN0YXRlLmNvbHVtbnMuZmluZEluZGV4KChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy51bmtub3duQ29sdW1uXCIgZGVmYXVsdE1lc3NhZ2U9XCJDYW4ndCBmaW5kIGNvbHVtblwiIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5jb2x1bW5zW21hdGNoSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlVGl0bGUgdGl0bGU9e2NvbHVtbkNvdW50TGFiZWwoaW50bCwgbWF0Y2hJbmRleCArIDEpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29udGVudEJsb2NrLkFkbWluQ29tcG9uZW50IHN0YXRlPXttYXRjaC5wcm9wc30gdXBkYXRlU3RhdGU9e2NyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuKGtleSl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLm5vQ29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8gY29sdW1uc1wiIC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxQcmV2aWV3Q29udGVudFtdPihcbiAgICAgICAgICAgICAgICAocHJldmlld0NvbnRlbnQsIGN1cnJlbnRDb2x1bW4pID0+IFsuLi5wcmV2aWV3Q29udGVudCwgLi4uY29udGVudEJsb2NrLnByZXZpZXdDb250ZW50KGN1cnJlbnRDb2x1bW4ucHJvcHMsIGNvbnRleHQpXSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eY29sdW1ucy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbnNCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmNvbHVtbnNbbnVtXTtcblxuICAgICAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29udGVudEJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBleHRyYWN0VGV4dENvbnRlbnRzOiAoc3RhdGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluY2x1ZGVJbnZpc2libGVDb250ZW50ID0gb3B0aW9ucz8uaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29sdW1uLnZpc2libGUgJiYgIWluY2x1ZGVJbnZpc2libGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY29udGVudCwgLi4uKGNvbnRlbnRCbG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY29sdW1uLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKENvbHVtbnNCbG9jayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbHVtbnNCbG9jaztcbn1cblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgcGFkZGluZzogMTJweCAwO1xuYDtcblxuY29uc3QgU2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbCA9IHN0eWxlZChGb3JtQ29udHJvbExhYmVsKWBcbiAgICBwYWRkaW5nOiAxNXB4IDEwcHggMTVweCA3cHg7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkNvbnRlbnQgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDRweCAwO1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25JY29uID0gc3R5bGVkKEFkZClgXG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbnR5cGUgR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkgPSB7XG4gICAgY29sdW1uczogbnVtYmVyW107XG4gICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0IHwgdW5kZWZpbmVkO1xufTtcblxuZnVuY3Rpb24gY29sdW1uQ291bnRMYWJlbChpbnRsOiBJbnRsU2hhcGUsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmNvbHVtblRpdGxlXCIsXG4gICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogXCJDb2x1bW4ge251bWJlcn1cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBudW1iZXI6IGNvdW50IH0sXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdKTogR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkge1xuICAgIGNvbnN0IGdyb3VwZWRMYXlvdXRzID0gbGF5b3V0cy5yZWR1Y2UoKGFjYywgYykgPT4ge1xuICAgICAgICBhY2Muc2V0KGMuY29sdW1ucywgWy4uLihhY2MuZ2V0KGMuY29sdW1ucykgfHwgW10pLCBjXSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbmV3IE1hcDxudW1iZXIsIENvbHVtbnNCbG9ja0xheW91dFtdPigpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbnM6IEFycmF5LmZyb20oZ3JvdXBlZExheW91dHMua2V5cygpKSxcbiAgICAgICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0cyA9IGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiBsYXlvdXRzLmxlbmd0aCA/IGxheW91dHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ== */",
|
|
583
|
+
styles: "display:flex;flex-direction:column;align-items:center;padding:4px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNmY0QyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvYmxvY2tzL2ZhY3Rvcmllcy9jcmVhdGVDb2x1bW5zQmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIFN0YWNrUGFnZSwgU3RhY2tQYWdlVGl0bGUsIFN0YWNrU3dpdGNoLCBTdGFja1N3aXRjaEFwaUNvbnRleHQgfSBmcm9tIFwiQGNvbWV0L2FkbWluXCI7XG5pbXBvcnQgeyBBZGQsIENvcHksIERlbGV0ZSwgSW52aXNpYmxlLCBQYXN0ZSwgVmlzaWJsZSB9IGZyb20gXCJAY29tZXQvYWRtaW4taWNvbnNcIjtcbmltcG9ydCB7IENoZWNrYm94LCBEaXZpZGVyLCBGb3JtQ29udHJvbExhYmVsLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXNwYXRjaCwgUmVhY3ROb2RlLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBJbnRsU2hhcGUsIHR5cGUgTWVzc2FnZURlc2NyaXB0b3IsIHVzZUludGwgfSBmcm9tIFwicmVhY3QtaW50bFwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9BZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlclwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50UGFwZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvblwiO1xuaW1wb3J0IHsgQmxvY2tQcmV2aWV3Q29udGVudCB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tQcmV2aWV3Q29udGVudFwiO1xuaW1wb3J0IHsgQmxvY2tSb3cgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUm93XCI7XG5pbXBvcnQgeyBCbG9ja3NGaW5hbEZvcm0gfSBmcm9tIFwiLi4vZm9ybS9CbG9ja3NGaW5hbEZvcm1cIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7XG4gICAgQmxvY2tDYXRlZ29yeSxcbiAgICB0eXBlIEJsb2NrRGVwZW5kZW5jeSxcbiAgICB0eXBlIEJsb2NrSW5wdXRBcGksXG4gICAgdHlwZSBCbG9ja0ludGVyZmFjZSxcbiAgICB0eXBlIEN1c3RvbUJsb2NrQ2F0ZWdvcnksXG4gICAgdHlwZSBQcmV2aWV3Q29udGVudCxcbn0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyByZXNvbHZlTmV3U3RhdGUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IEZpbmFsRm9ybUNvbHVtbnNTZWxlY3QgfSBmcm9tIFwiLi9jb2x1bW5zQmxvY2svRmluYWxGb3JtQ29sdW1uc1NlbGVjdFwiO1xuaW1wb3J0IHsgRmluYWxGb3JtTGF5b3V0U2VsZWN0IH0gZnJvbSBcIi4vY29sdW1uc0Jsb2NrL0ZpbmFsRm9ybUxheW91dFNlbGVjdFwiO1xuaW1wb3J0IHR5cGUgeyBMaXN0QmxvY2tJdGVtLCBMaXN0QmxvY2tTdGF0ZSB9IGZyb20gXCIuL2NyZWF0ZUxpc3RCbG9ja1wiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgYXMgY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQmxvY2tMYXlvdXQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb2x1bW5zOiBudW1iZXI7XG4gICAgbGFiZWw6IFJlYWN0Tm9kZTtcbiAgICBwcmV2aWV3OiBSZWFjdE5vZGU7XG4gICAgc2VjdGlvbj86XG4gICAgICAgIHwgc3RyaW5nXG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIGxhYmVsPzogUmVhY3ROb2RlO1xuICAgICAgICAgIH07XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tGcmFnbWVudDxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IHN0cmluZztcbiAgICBjb2x1bW5zOiBBcnJheTx7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgICAgICBwcm9wczogQmxvY2tJbnB1dEFwaTxUPjtcbiAgICB9Pjtcbn1cblxuaW50ZXJmYWNlIENvbHVtbnNCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIGxheW91dDogQ29sdW1uc0Jsb2NrTGF5b3V0O1xuICAgIGNvbHVtbnM6IExpc3RCbG9ja0l0ZW08VD5bXTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNvbHVtbnNCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBSZWFjdE5vZGU7XG4gICAgY2F0ZWdvcnk/OiBCbG9ja0NhdGVnb3J5IHwgQ3VzdG9tQmxvY2tDYXRlZ29yeTtcbiAgICBjb250ZW50QmxvY2s6IFQ7XG4gICAgbGF5b3V0czogQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbnNCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+KFxuICAgIHsgbmFtZSwgZGlzcGxheU5hbWUsIGNhdGVnb3J5ID0gQmxvY2tDYXRlZ29yeS5MYXlvdXQsIGNvbnRlbnRCbG9jaywgbGF5b3V0cywgdGFncyB9OiBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQ+LFxuICAgIG92ZXJyaWRlPzogKFxuICAgICAgICBibG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4gICAgKSA9PiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+Pixcbik6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+IHtcbiAgICBpZiAobGF5b3V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOdW1iZXIgb2YgbGF5b3V0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50ID0gY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBibG9jazogY29udGVudEJsb2NrIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRW1wdHlDb2x1bW5zKG51bWJlcjogbnVtYmVyKTogTGlzdEJsb2NrSXRlbTxUPltdIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShudW1iZXIpLmZpbGwodW5kZWZpbmVkKS5tYXAoKCkgPT4gKHtcbiAgICAgICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5kZWZhdWx0VmFsdWVzKCksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgQ29sdW1uc0Jsb2NrOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBjb250ZW50QmxvY2sudGFncyxcblxuICAgICAgICBjYXRlZ29yeSxcblxuICAgICAgICBkZWZhdWx0VmFsdWVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gbGF5b3V0c1swXTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IENvbHVtbnNCbG9ja1N0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIGxheW91dDogZGVmYXVsdExheW91dCxcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1wdHkgY29sdW1ucyBzbyB0aGUgbGlzdCBpcyBub3QgZW1wdHkgaW5pdGlhbGx5XG4gICAgICAgICAgICAgICAgY29sdW1uczogY3JlYXRlRW1wdHlDb2x1bW5zKGRlZmF1bHRMYXlvdXQuY29sdW1ucyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBpbnB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke2lucHV0LmxheW91dH1cIiFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogaW5wdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmlucHV0MlN0YXRlKGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RhdGUyT3V0cHV0OiAob3V0cHV0KSA9PiAoe1xuICAgICAgICAgICAgbGF5b3V0OiBvdXRwdXQubGF5b3V0Lm5hbWUsXG4gICAgICAgICAgICBjb2x1bW5zOiBvdXRwdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5zdGF0ZTJPdXRwdXQoY29sdW1uLnByb3BzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSBsYXlvdXRzLmZpbmQoKGxheW91dCkgPT4gbGF5b3V0Lm5hbWUgPT09IG91dHB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke291dHB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbnMgb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYXdhaXQgY29udGVudEJsb2NrLm91dHB1dDJTdGF0ZShjb2x1bW5zLnByb3BzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0NvbnRleHQucGFyZW50VXJsIH0sXG4gICAgICAgICAgICBsYXlvdXQ6IHN0YXRlLmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogc3RhdGUuY29sdW1uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IChwcmV2aWV3Q29udGV4dC5zaG93VmlzaWJsZU9ubHkgPyBjLnZpc2libGUgOiB0cnVlKSkgLy8gZGVwZW5kaW5nIG9uIGNvbnRleHQgc2hvdyBhbGwgYmxvY2tzIG9yIG9ubHkgdmlzaWJsZSBibG9ja3NcbiAgICAgICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0NvbnRleHQucGFyZW50VXJsU3ViUm91dGUgPz8gcHJldmlld0NvbnRleHQucGFyZW50VXJsfS8ke2NvbHVtbi5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNvbHVtbi5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50VXJsOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogYmxvY2tBZG1pblJvdXRlIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGlzVmFsaWQ6IChzdGF0ZSkgPT4gcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmNvbHVtbnMsIChjb2x1bW4pID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcykpLFxuXG4gICAgICAgIGFuY2hvcnM6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmNvbHVtbnMucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oY29udGVudEJsb2NrLmFuY2hvcnM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmNvbHVtbnMucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmRlcGVuZGVuY2llcywgLi4uKGNvbnRlbnRCbG9jay5kZXBlbmRlbmNpZXM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4gPSB7IC4uLm91dHB1dCwgY29sdW1uczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBuZXdPdXRwdXQuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLnJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dChjb2x1bW4ucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpID0gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2U6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPExpc3RCbG9ja1N0YXRlPFQ+Pj4gPSAobGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9ja1N0YXRlID0gcmVzb2x2ZU5ld1N0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogeyBibG9ja3M6IHByZXZTdGF0ZS5jb2x1bW5zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZUFjdGlvbjogbGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogbGlzdEJsb2NrU3RhdGUuYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgY3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4sXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJsZSxcbiAgICAgICAgICAgIH0gPSB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCh7IHN0YXRlOiB7IGJsb2Nrczogc3RhdGUuY29sdW1ucyB9LCB1cGRhdGVTdGF0ZTogaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoIGluaXRpYWxQYWdlPVwibGlzdFwiIGRpc2FibGVGb3JjZVByb21wdFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja3NGaW5hbEZvcm08eyBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDsgY29sdW1uczogbnVtYmVyIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsoeyBsYXlvdXQsIGNvbHVtbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgPSBncm91cExheW91dHNCeUNvbHVtbnNBcGkuZ2V0RGVmYXVsdExheW91dChjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMYXlvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuY29sdW1ucyAhPT0gY29sdW1ucyAmJiBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID8gZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA6IGxheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW5nRW1wdHlDb2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA+IHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IGNyZWF0ZUVtcHR5Q29sdW1ucyhjb2x1bW5zIC0gcHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoKSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBuZXdMYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5wcmV2U3RhdGUuY29sdW1ucywgLi4ubWlzc2luZ0VtcHR5Q29sdW1uc10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWVzPXt7IGxheW91dDogc3RhdGUubGF5b3V0LCBjb2x1bW5zOiBzdGF0ZS5sYXlvdXQuY29sdW1ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5zXCIgZGVmYXVsdE1lc3NhZ2U9XCJDb2x1bW5zXCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtncm91cExheW91dHNCeUNvbHVtbnNBcGkuY29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMubGF5b3V0XCIgZGVmYXVsdE1lc3NhZ2U9XCJMYXlvdXRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD17RmluYWxGb3JtTGF5b3V0U2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0cz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldExheW91dHMoc3RhdGUubGF5b3V0LmNvbHVtbnMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja3NGaW5hbEZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIHRpdGxlPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLml0ZW1zXCIgZGVmYXVsdE1lc3NhZ2U9XCJJdGVtc1wiIC8+fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZENvdW50ID09PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmNvbHVtbnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2NvbHVtbi5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2NvbHVtbi5rZXl9L2NvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17Y29sdW1uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUHJldmlld0NvbnRlbnQgYmxvY2s9e2NvbnRlbnRCbG9ja30gc3RhdGU9e2NvbHVtbi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17Y29sdW1uSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgY29sdW1uLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbY29sdW1uLmtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gWy4uLnByZXZTdGF0ZS5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uVG9Nb3ZlID0gY29sdW1ucy5zcGxpY2UoZnJvbSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKHRvLCAwLCBjb2x1bW5Ub01vdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGNvbHVtbnMgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB0b2dnbGVWaXNpYmxlKGNvbHVtbi5rZXkpfSBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpc2libGUgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudEJsb2NrLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb2x1bW4ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYXN0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhjb2x1bW5JbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtjb2x1bW4uc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGNvbHVtbiwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRGbj17KCkgPT4gY29udGVudEJsb2NrLmlzVmFsaWQoY29sdW1uLnByb3BzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2NvbHVtbi5zbGlkZUlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2NvbHVtbkluZGV4ID49IHN0YXRlLmNvbHVtbnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5hZGRJdGVtXCIgZGVmYXVsdE1lc3NhZ2U9XCJBZGQgaXRlbVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8QWRkIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmVkaXRDb2x1bW5cIiwgZGVmYXVsdE1lc3NhZ2U6IFwiRWRpdCBjb2x1bW5cIiB9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IHN0YXRlLmNvbHVtbnMuZmluZEluZGV4KChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy51bmtub3duQ29sdW1uXCIgZGVmYXVsdE1lc3NhZ2U9XCJDYW4ndCBmaW5kIGNvbHVtblwiIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5jb2x1bW5zW21hdGNoSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlVGl0bGUgdGl0bGU9e2NvbHVtbkNvdW50TGFiZWwoaW50bCwgbWF0Y2hJbmRleCArIDEpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29udGVudEJsb2NrLkFkbWluQ29tcG9uZW50IHN0YXRlPXttYXRjaC5wcm9wc30gdXBkYXRlU3RhdGU9e2NyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuKGtleSl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLm5vQ29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8gY29sdW1uc1wiIC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxQcmV2aWV3Q29udGVudFtdPihcbiAgICAgICAgICAgICAgICAocHJldmlld0NvbnRlbnQsIGN1cnJlbnRDb2x1bW4pID0+IFsuLi5wcmV2aWV3Q29udGVudCwgLi4uY29udGVudEJsb2NrLnByZXZpZXdDb250ZW50KGN1cnJlbnRDb2x1bW4ucHJvcHMsIGNvbnRleHQpXSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eY29sdW1ucy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbnNCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmNvbHVtbnNbbnVtXTtcblxuICAgICAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29udGVudEJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBleHRyYWN0VGV4dENvbnRlbnRzOiAoc3RhdGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluY2x1ZGVJbnZpc2libGVDb250ZW50ID0gb3B0aW9ucz8uaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29sdW1uLnZpc2libGUgJiYgIWluY2x1ZGVJbnZpc2libGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY29udGVudCwgLi4uKGNvbnRlbnRCbG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY29sdW1uLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKENvbHVtbnNCbG9jayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbHVtbnNCbG9jaztcbn1cblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgcGFkZGluZzogMTJweCAwO1xuYDtcblxuY29uc3QgU2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbCA9IHN0eWxlZChGb3JtQ29udHJvbExhYmVsKWBcbiAgICBwYWRkaW5nOiAxNXB4IDEwcHggMTVweCA3cHg7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkNvbnRlbnQgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDRweCAwO1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25JY29uID0gc3R5bGVkKEFkZClgXG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbnR5cGUgR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkgPSB7XG4gICAgY29sdW1uczogbnVtYmVyW107XG4gICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0IHwgdW5kZWZpbmVkO1xufTtcblxuZnVuY3Rpb24gY29sdW1uQ291bnRMYWJlbChpbnRsOiBJbnRsU2hhcGUsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmNvbHVtblRpdGxlXCIsXG4gICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogXCJDb2x1bW4ge251bWJlcn1cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBudW1iZXI6IGNvdW50IH0sXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdKTogR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkge1xuICAgIGNvbnN0IGdyb3VwZWRMYXlvdXRzID0gbGF5b3V0cy5yZWR1Y2UoKGFjYywgYykgPT4ge1xuICAgICAgICBhY2Muc2V0KGMuY29sdW1ucywgWy4uLihhY2MuZ2V0KGMuY29sdW1ucykgfHwgW10pLCBjXSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbmV3IE1hcDxudW1iZXIsIENvbHVtbnNCbG9ja0xheW91dFtdPigpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbnM6IEFycmF5LmZyb20oZ3JvdXBlZExheW91dHMua2V5cygpKSxcbiAgICAgICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0cyA9IGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiBsYXlvdXRzLmxlbmd0aCA/IGxheW91dHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ== */",
|
|
584
584
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
585
585
|
});
|
|
586
586
|
var LargeAddButtonIcon = /*#__PURE__*/styled(Add, process.env.NODE_ENV === "production" ? {
|
|
@@ -593,7 +593,7 @@ var LargeAddButtonIcon = /*#__PURE__*/styled(Add, process.env.NODE_ENV === "prod
|
|
|
593
593
|
styles: "font-size:24px;margin-bottom:8px"
|
|
594
594
|
} : {
|
|
595
595
|
name: "1yvy7h3",
|
|
596
|
-
styles: "font-size:24px;margin-bottom:8px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb2dCc0MiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlQ29sdW1uc0Jsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkLCBTdGFja1BhZ2UsIFN0YWNrUGFnZVRpdGxlLCBTdGFja1N3aXRjaCwgU3RhY2tTd2l0Y2hBcGlDb250ZXh0IH0gZnJvbSBcIkBjb21ldC9hZG1pblwiO1xuaW1wb3J0IHsgQWRkLCBDb3B5LCBEZWxldGUsIEludmlzaWJsZSwgUGFzdGUsIFZpc2libGUgfSBmcm9tIFwiQGNvbWV0L2FkbWluLWljb25zXCI7XG5pbXBvcnQgeyBDaGVja2JveCwgRGl2aWRlciwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB7IHR5cGUgRGlzcGF0Y2gsIHR5cGUgUmVhY3ROb2RlLCB0eXBlIFNldFN0YXRlQWN0aW9uIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlLCB0eXBlIEludGxTaGFwZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciwgdXNlSW50bCB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBCbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uXCI7XG5pbXBvcnQgeyBCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlclwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudFNlY3Rpb24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IEJsb2Nrc0ZpbmFsRm9ybSB9IGZyb20gXCIuLi9mb3JtL0Jsb2Nrc0ZpbmFsRm9ybVwiO1xuaW1wb3J0IHsgY3JlYXRlQmxvY2tTa2VsZXRvbiB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZUJsb2NrU2tlbGV0b25cIjtcbmltcG9ydCB7IGRlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXMgfSBmcm9tIFwiLi4vaGVscGVycy9kZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgeyBIb3ZlclByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL0hvdmVyUHJldmlld0NvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2VsZWN0UHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvU2VsZWN0UHJldmlld0NvbXBvbmVudFwiO1xuaW1wb3J0IHtcbiAgICBCbG9ja0NhdGVnb3J5LFxuICAgIHR5cGUgQmxvY2tEZXBlbmRlbmN5LFxuICAgIHR5cGUgQmxvY2tJbnB1dEFwaSxcbiAgICB0eXBlIEJsb2NrSW50ZXJmYWNlLFxuICAgIHR5cGUgQ3VzdG9tQmxvY2tDYXRlZ29yeSxcbiAgICB0eXBlIFByZXZpZXdDb250ZW50LFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHJlc29sdmVOZXdTdGF0ZSB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgcGFyYWxsZWxBc3luY0V2ZXJ5IH0gZnJvbSBcIi4uL3V0aWxzL3BhcmFsbGVsQXN5bmNFdmVyeVwiO1xuaW1wb3J0IHsgRmluYWxGb3JtQ29sdW1uc1NlbGVjdCB9IGZyb20gXCIuL2NvbHVtbnNCbG9jay9GaW5hbEZvcm1Db2x1bW5zU2VsZWN0XCI7XG5pbXBvcnQgeyBGaW5hbEZvcm1MYXlvdXRTZWxlY3QgfSBmcm9tIFwiLi9jb2x1bW5zQmxvY2svRmluYWxGb3JtTGF5b3V0U2VsZWN0XCI7XG5pbXBvcnQgeyB0eXBlIExpc3RCbG9ja0l0ZW0sIHR5cGUgTGlzdEJsb2NrU3RhdGUgfSBmcm9tIFwiLi9jcmVhdGVMaXN0QmxvY2tcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IGFzIGNyZWF0ZVVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uc0Jsb2NrTGF5b3V0IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY29sdW1uczogbnVtYmVyO1xuICAgIGxhYmVsOiBSZWFjdE5vZGU7XG4gICAgcHJldmlldzogUmVhY3ROb2RlO1xuICAgIHNlY3Rpb24/OlxuICAgICAgICB8IHN0cmluZ1xuICAgICAgICB8IHtcbiAgICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgICBsYWJlbD86IFJlYWN0Tm9kZTtcbiAgICAgICAgICB9O1xufVxuXG5pbnRlcmZhY2UgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbGF5b3V0OiBzdHJpbmc7XG4gICAgY29sdW1uczogQXJyYXk8e1xuICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgICAgcHJvcHM6IEJsb2NrSW5wdXRBcGk8VD47XG4gICAgfT47XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDtcbiAgICBjb2x1bW5zOiBMaXN0QmxvY2tJdGVtPFQ+W107XG59XG5cbmludGVyZmFjZSBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogUmVhY3ROb2RlO1xuICAgIGNhdGVnb3J5PzogQmxvY2tDYXRlZ29yeSB8IEN1c3RvbUJsb2NrQ2F0ZWdvcnk7XG4gICAgY29udGVudEJsb2NrOiBUO1xuICAgIGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdO1xuICAgIHRhZ3M/OiBBcnJheTxNZXNzYWdlRGVzY3JpcHRvciB8IHN0cmluZz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb2x1bW5zQmxvY2s8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPihcbiAgICB7IG5hbWUsIGRpc3BsYXlOYW1lLCBjYXRlZ29yeSA9IEJsb2NrQ2F0ZWdvcnkuTGF5b3V0LCBjb250ZW50QmxvY2ssIGxheW91dHMsIHRhZ3MgfTogQ3JlYXRlQ29sdW1uc0Jsb2NrT3B0aW9uczxUPixcbiAgICBvdmVycmlkZT86IChcbiAgICAgICAgYmxvY2s6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+LFxuICAgICkgPT4gQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4pOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiB7XG4gICAgaWYgKGxheW91dHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTnVtYmVyIG9mIGxheW91dHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCFgKTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCA9IGNyZWF0ZVVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50KHsgYmxvY2s6IGNvbnRlbnRCbG9jayB9KTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUVtcHR5Q29sdW1ucyhudW1iZXI6IG51bWJlcik6IExpc3RCbG9ja0l0ZW08VD5bXSB7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXkobnVtYmVyKS5maWxsKHVuZGVmaW5lZCkubWFwKCgpID0+ICh7XG4gICAgICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suZGVmYXVsdFZhbHVlcygpLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICB9KSk7XG4gICAgfVxuICAgIGNvbnN0IENvbHVtbnNCbG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4gPSB7XG4gICAgICAgIC4uLmNyZWF0ZUJsb2NrU2tlbGV0b24oKSxcblxuICAgICAgICBuYW1lLFxuXG4gICAgICAgIGRpc3BsYXlOYW1lLFxuXG4gICAgICAgIHRhZ3M6IHRhZ3MgPyB0YWdzIDogY29udGVudEJsb2NrLnRhZ3MsXG5cbiAgICAgICAgY2F0ZWdvcnksXG5cbiAgICAgICAgZGVmYXVsdFZhbHVlczogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdExheW91dCA9IGxheW91dHNbMF07XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQ6IGRlZmF1bHRMYXlvdXQsXG4gICAgICAgICAgICAgICAgLy8gQWRkIGVtcHR5IGNvbHVtbnMgc28gdGhlIGxpc3QgaXMgbm90IGVtcHR5IGluaXRpYWxseVxuICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNyZWF0ZUVtcHR5Q29sdW1ucyhkZWZhdWx0TGF5b3V0LmNvbHVtbnMpLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxheW91dCA9IGxheW91dHMuZmluZCgobGF5b3V0KSA9PiBsYXlvdXQubmFtZSA9PT0gaW5wdXQubGF5b3V0KTtcblxuICAgICAgICAgICAgaWYgKCFsYXlvdXQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbGF5b3V0IFwiJHtpbnB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGF5b3V0LFxuICAgICAgICAgICAgICAgIGNvbHVtbnM6IGlucHV0LmNvbHVtbnMubWFwKChjb2x1bW4pID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGtleTogY29sdW1uLmtleSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5pbnB1dDJTdGF0ZShjb2x1bW4ucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIHN0YXRlMk91dHB1dDogKG91dHB1dCkgPT4gKHtcbiAgICAgICAgICAgIGxheW91dDogb3V0cHV0LmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogb3V0cHV0LmNvbHVtbnMubWFwKChjb2x1bW4pID0+ICh7XG4gICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suc3RhdGUyT3V0cHV0KGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBvdXRwdXQubGF5b3V0KTtcblxuICAgICAgICAgICAgaWYgKCFsYXlvdXQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbGF5b3V0IFwiJHtvdXRwdXQubGF5b3V0fVwiIWApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzdGF0ZTogQ29sdW1uc0Jsb2NrU3RhdGU8VD4gPSB7XG4gICAgICAgICAgICAgICAgbGF5b3V0LFxuICAgICAgICAgICAgICAgIGNvbHVtbnM6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW5zIG9mIG91dHB1dC5jb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGF3YWl0IGNvbnRlbnRCbG9jay5vdXRwdXQyU3RhdGUoY29sdW1ucy5wcm9wcywgY29udGV4dCksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0NvbnRleHQpID0+ICh7XG4gICAgICAgICAgICBhZG1pbk1ldGE6IHsgcm91dGU6IHByZXZpZXdDb250ZXh0LnBhcmVudFVybCB9LFxuICAgICAgICAgICAgbGF5b3V0OiBzdGF0ZS5sYXlvdXQubmFtZSxcbiAgICAgICAgICAgIGNvbHVtbnM6IHN0YXRlLmNvbHVtbnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChjKSA9PiAocHJldmlld0NvbnRleHQuc2hvd1Zpc2libGVPbmx5ID8gYy52aXNpYmxlIDogdHJ1ZSkpIC8vIGRlcGVuZGluZyBvbiBjb250ZXh0IHNob3cgYWxsIGJsb2NrcyBvciBvbmx5IHZpc2libGUgYmxvY2tzXG4gICAgICAgICAgICAgICAgLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrQWRtaW5Sb3V0ZSA9IGAke3ByZXZpZXdDb250ZXh0LnBhcmVudFVybFN1YlJvdXRlID8/IHByZXZpZXdDb250ZXh0LnBhcmVudFVybH0vJHtjb2x1bW4ua2V5fS9lZGl0YDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjb2x1bW4ucHJvcHMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybDogYmxvY2tBZG1pblJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZG1pbk1ldGE6IHsgcm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9KSxcblxuICAgICAgICBpc1ZhbGlkOiAoc3RhdGUpID0+IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5jb2x1bW5zLCAoY29sdW1uKSA9PiBjb250ZW50QmxvY2suaXNWYWxpZChjb2x1bW4ucHJvcHMpKSxcblxuICAgICAgICBhbmNob3JzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uYW5jaG9ycywgLi4uKGNvbnRlbnRCbG9jay5hbmNob3JzPy4oY29sdW1uLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxCbG9ja0RlcGVuZGVuY3lbXT4oKGRlcGVuZGVuY2llcywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5kZXBlbmRlbmNpZXMsIC4uLihjb250ZW50QmxvY2suZGVwZW5kZW5jaWVzPy4oY29sdW1uLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuXG4gICAgICAgICAgICByZXR1cm4gZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llcyhtZXJnZWREZXBlbmRlbmNpZXMpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dDogKG91dHB1dCwgcmVwbGFjZW1lbnRzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdPdXRwdXQ6IENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+ID0geyAuLi5vdXRwdXQsIGNvbHVtbnM6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIG91dHB1dC5jb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgbmV3T3V0cHV0LmNvbHVtbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5yZXBsYWNlRGVwZW5kZW5jaWVzSW5PdXRwdXQoY29sdW1uLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwTGF5b3V0c0J5Q29sdW1uc0FwaSA9IGNyZWF0ZUdyb3VwTGF5b3V0c0J5Q29sdW1uc0FwaShsYXlvdXRzKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUxpc3RCbG9ja0FkbWluQ2hhbmdlOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxMaXN0QmxvY2tTdGF0ZTxUPj4+ID0gKGxpc3RCbG9ja1NldFN0YXRlQWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaXN0QmxvY2tTdGF0ZSA9IHJlc29sdmVOZXdTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2U3RhdGU6IHsgYmxvY2tzOiBwcmV2U3RhdGUuY29sdW1ucyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGVBY3Rpb246IGxpc3RCbG9ja1NldFN0YXRlQWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGxpc3RCbG9ja1N0YXRlLmJsb2NrcyxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgY2Fubm90UGFzdGVCbG9ja0Vycm9yRGlhbG9nLFxuICAgICAgICAgICAgICAgIGNyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuLFxuICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQsXG4gICAgICAgICAgICAgICAgYWRkTmV3QmxvY2ssXG4gICAgICAgICAgICAgICAgY29weVNlbGVjdGVkQmxvY2tzLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUFsbFNlbGVjdGVkQmxvY2tzLFxuICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrLFxuICAgICAgICAgICAgICAgIGhhbmRsZVRvZ2dsZVNlbGVjdEFsbCxcbiAgICAgICAgICAgICAgICBwYXN0ZUJsb2NrLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQsXG4gICAgICAgICAgICAgICAgZGVsZXRlQmxvY2tzLFxuICAgICAgICAgICAgICAgIHRvZ2dsZVZpc2libGUsXG4gICAgICAgICAgICB9ID0gdXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBzdGF0ZTogeyBibG9ja3M6IHN0YXRlLmNvbHVtbnMgfSwgdXBkYXRlU3RhdGU6IGhhbmRsZUxpc3RCbG9ja0FkbWluQ2hhbmdlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaCBpbml0aWFsUGFnZT1cImxpc3RcIiBkaXNhYmxlRm9yY2VQcm9tcHRSb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1BhZ2UgbmFtZT1cImxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tzRmluYWxGb3JtPHsgbGF5b3V0OiBDb2x1bW5zQmxvY2tMYXlvdXQ7IGNvbHVtbnM6IG51bWJlciB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17KHsgbGF5b3V0LCBjb2x1bW5zIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID0gZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldERlZmF1bHRMYXlvdXQoY29sdW1ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3TGF5b3V0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0LmNvbHVtbnMgIT09IGNvbHVtbnMgJiYgZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA/IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgOiBsYXlvdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWlzc2luZ0VtcHR5Q29sdW1ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgPiBwcmV2U3RhdGUuY29sdW1ucy5sZW5ndGggPyBjcmVhdGVFbXB0eUNvbHVtbnMoY29sdW1ucyAtIHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCkgOiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dDogbmV3TGF5b3V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBbLi4ucHJldlN0YXRlLmNvbHVtbnMsIC4uLm1pc3NpbmdFbXB0eUNvbHVtbnNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlcz17eyBsYXlvdXQ6IHN0YXRlLmxheW91dCwgY29sdW1uczogc3RhdGUubGF5b3V0LmNvbHVtbnMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuY29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiQ29sdW1uc1wiIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PXtGaW5hbEZvcm1Db2x1bW5zU2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmNvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibGF5b3V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmxheW91dFwiIGRlZmF1bHRNZXNzYWdlPVwiTGF5b3V0XCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUxheW91dFNlbGVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dHM9e2dyb3VwTGF5b3V0c0J5Q29sdW1uc0FwaS5nZXRMYXlvdXRzKHN0YXRlLmxheW91dC5jb2x1bW5zKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tzRmluYWxGb3JtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvbiB0aXRsZT17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5pdGVtc1wiIGRlZmF1bHRNZXNzYWdlPVwiSXRlbXNcIiAvPn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0xpc3RIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWRDb3VudCA9PT0gc3RhdGUuY29sdW1ucy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVUb2dnbGVTZWxlY3RBbGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5zZWxlY3RBbGxcIiBkZWZhdWx0TWVzc2FnZT1cIlNlbGVjdCBhbGxcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRDb3VudCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2RlbGV0ZUFsbFNlbGVjdGVkQmxvY2tzfSBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEZWxldGUgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXtjb3B5U2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENvcHkgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9eygpID0+IHBhc3RlQmxvY2soMCl9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQYXN0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrTGlzdEhlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubWFwKChjb2x1bW4sIGNvbHVtbkluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIb3ZlclByZXZpZXdDb21wb25lbnQga2V5PXtjb2x1bW4ua2V5fSBjb21wb25lbnRTbHVnPXtgJHtjb2x1bW4ua2V5fS9jb250ZW50YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2NvbHVtbi5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJQcmV2aWV3Q29udGVudD17KCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1ByZXZpZXdDb250ZW50IGJsb2NrPXtjb250ZW50QmxvY2t9IHN0YXRlPXtjb2x1bW4ucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2NvbHVtbkluZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGNvbHVtbi5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2NvbHVtbi5rZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlQmxvY2s9eyhmcm9tLCB0bykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1ucyA9IFsuLi5wcmV2U3RhdGUuY29sdW1uc107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtblRvTW92ZSA9IGNvbHVtbnMuc3BsaWNlKGZyb20sIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLnNwbGljZSh0bywgMCwgY29sdW1uVG9Nb3ZlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBjb2x1bW5zIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eUJ1dHRvbj17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gdG9nZ2xlVmlzaWJsZShjb2x1bW4ua2V5KX0gc2l6ZT1cInNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb2x1bW4udmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaXNpYmxlIGNvbG9yPVwic3VjY2Vzc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jayhiZWZvcmVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29weUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnRlbnRCbG9jay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogY29sdW1uLnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUGFzdGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soY29sdW1uSW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17Y29sdW1uLnNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RCbG9jayhjb2x1bW4sIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkRm49eygpID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtjb2x1bW4uc2xpZGVJbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtjb2x1bW5JbmRleCA+PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAtIDF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ib3ZlclByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWRkTmV3QmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25JY29uIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SWNvbj17PEFkZCAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmFkZEl0ZW1cIiBkZWZhdWx0TWVzc2FnZT1cIkFkZCBpdGVtXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50UGFwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tQYWdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwiZWRpdFwiIHRpdGxlPXtpbnRsLmZvcm1hdE1lc3NhZ2UoeyBpZDogXCJjb21ldC5ibG9ja3MuY29sdW1ucy5lZGl0Q29sdW1uXCIsIGRlZmF1bHRNZXNzYWdlOiBcIkVkaXQgY29sdW1uXCIgfSl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoSW5kZXggPSBzdGF0ZS5jb2x1bW5zLmZpbmRJbmRleCgoY29sdW1uKSA9PiBjb2x1bW4ua2V5ID09PSBrZXkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMudW5rbm93bkNvbHVtblwiIGRlZmF1bHRNZXNzYWdlPVwiQ2FuJ3QgZmluZCBjb2x1bW5cIiAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuY29sdW1uc1ttYXRjaEluZGV4XTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZVRpdGxlIHRpdGxlPXtjb2x1bW5Db3VudExhYmVsKGludGwsIG1hdGNoSW5kZXggKyAxKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbnRlbnRCbG9jay5BZG1pbkNvbXBvbmVudCBzdGF0ZT17bWF0Y2gucHJvcHN9IHVwZGF0ZVN0YXRlPXtjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbihrZXkpfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2VUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuXG4gICAgICAgIHByZXZpZXdDb250ZW50OiAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5ub0NvbHVtbnNcIiBkZWZhdWx0TWVzc2FnZT1cIk5vIGNvbHVtbnNcIiAvPixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuY29sdW1ucy5yZWR1Y2U8UHJldmlld0NvbnRlbnRbXT4oXG4gICAgICAgICAgICAgICAgKHByZXZpZXdDb250ZW50LCBjdXJyZW50Q29sdW1uKSA9PiBbLi4ucHJldmlld0NvbnRlbnQsIC4uLmNvbnRlbnRCbG9jay5wcmV2aWV3Q29udGVudChjdXJyZW50Q29sdW1uLnByb3BzLCBjb250ZXh0KV0sXG4gICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmNvbHVtbnMuXFxkKy5wcm9wcy8udGVzdChqc29uUGF0aCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb2x1bW5zQmxvY2s6IEludmFsaWQganNvblBhdGhcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHBhdGhBcnIgPSBqc29uUGF0aC5zcGxpdChcIi5cIik7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIocGF0aEFyclsxXSk7XG4gICAgICAgICAgICBjb25zdCBibG9ja0l0ZW0gPSBzdGF0ZS5jb2x1bW5zW251bV07XG5cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkUGF0aCA9IGNvbnRlbnRCbG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXh0cmFjdFRleHRDb250ZW50czogKHN0YXRlLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmNsdWRlSW52aXNpYmxlQ29udGVudCA9IG9wdGlvbnM/LmluY2x1ZGVJbnZpc2libGVDb250ZW50ID8/IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuY29sdW1ucy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbHVtbi52aXNpYmxlICYmICFpbmNsdWRlSW52aXNpYmxlQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmNvbnRlbnQsIC4uLihjb250ZW50QmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNvbHVtbi5wcm9wcywgb3B0aW9ucykgPz8gW10pXTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKG92ZXJyaWRlKSB7XG4gICAgICAgIHJldHVybiBvdmVycmlkZShDb2x1bW5zQmxvY2spO1xuICAgIH1cblxuICAgIHJldHVybiBDb2x1bW5zQmxvY2s7XG59XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIHBhZGRpbmc6IDEycHggMDtcbmA7XG5cbmNvbnN0IFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWwgPSBzdHlsZWQoRm9ybUNvbnRyb2xMYWJlbClgXG4gICAgcGFkZGluZzogMTVweCAxMHB4IDE1cHggN3B4O1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25Db250ZW50ID0gc3R5bGVkKFwic3BhblwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiA0cHggMDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uSWNvbiA9IHN0eWxlZChBZGQpYFxuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG5gO1xuXG50eXBlIEdyb3VwZWRMYXlvdXRzQnlDb2x1bW5zQXBpID0ge1xuICAgIGNvbHVtbnM6IG51bWJlcltdO1xuICAgIGdldExheW91dHM6IChjb2x1bW5zOiBudW1iZXIpID0+IENvbHVtbnNCbG9ja0xheW91dFtdO1xuICAgIGdldERlZmF1bHRMYXlvdXQ6IChjb2x1bW5zOiBudW1iZXIpID0+IENvbHVtbnNCbG9ja0xheW91dCB8IHVuZGVmaW5lZDtcbn07XG5cbmZ1bmN0aW9uIGNvbHVtbkNvdW50TGFiZWwoaW50bDogSW50bFNoYXBlLCBjb3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaW50bC5mb3JtYXRNZXNzYWdlKFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogXCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5UaXRsZVwiLFxuICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6IFwiQ29sdW1uIHtudW1iZXJ9XCIsXG4gICAgICAgIH0sXG4gICAgICAgIHsgbnVtYmVyOiBjb3VudCB9LFxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUdyb3VwTGF5b3V0c0J5Q29sdW1uc0FwaShsYXlvdXRzOiBDb2x1bW5zQmxvY2tMYXlvdXRbXSk6IEdyb3VwZWRMYXlvdXRzQnlDb2x1bW5zQXBpIHtcbiAgICBjb25zdCBncm91cGVkTGF5b3V0cyA9IGxheW91dHMucmVkdWNlKChhY2MsIGMpID0+IHtcbiAgICAgICAgYWNjLnNldChjLmNvbHVtbnMsIFsuLi4oYWNjLmdldChjLmNvbHVtbnMpIHx8IFtdKSwgY10pO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIG5ldyBNYXA8bnVtYmVyLCBDb2x1bW5zQmxvY2tMYXlvdXRbXT4oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjb2x1bW5zOiBBcnJheS5mcm9tKGdyb3VwZWRMYXlvdXRzLmtleXMoKSksXG4gICAgICAgIGdldExheW91dHM6IChjb2x1bW5zOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBncm91cGVkTGF5b3V0cy5nZXQoY29sdW1ucykgfHwgW107XG4gICAgICAgIH0sXG4gICAgICAgIGdldERlZmF1bHRMYXlvdXQ6IChjb2x1bW5zOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxheW91dHMgPSBncm91cGVkTGF5b3V0cy5nZXQoY29sdW1ucykgfHwgW107XG4gICAgICAgICAgICByZXR1cm4gbGF5b3V0cy5sZW5ndGggPyBsYXlvdXRzWzBdIDogdW5kZWZpbmVkO1xuICAgICAgICB9LFxuICAgIH07XG59XG4iXX0= */",
|
|
596
|
+
styles: "font-size:24px;margin-bottom:8px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb2dCc0MiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlQ29sdW1uc0Jsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkLCBTdGFja1BhZ2UsIFN0YWNrUGFnZVRpdGxlLCBTdGFja1N3aXRjaCwgU3RhY2tTd2l0Y2hBcGlDb250ZXh0IH0gZnJvbSBcIkBjb21ldC9hZG1pblwiO1xuaW1wb3J0IHsgQWRkLCBDb3B5LCBEZWxldGUsIEludmlzaWJsZSwgUGFzdGUsIFZpc2libGUgfSBmcm9tIFwiQGNvbWV0L2FkbWluLWljb25zXCI7XG5pbXBvcnQgeyBDaGVja2JveCwgRGl2aWRlciwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRGlzcGF0Y2gsIFJlYWN0Tm9kZSwgU2V0U3RhdGVBY3Rpb24gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHR5cGUgSW50bFNoYXBlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yLCB1c2VJbnRsIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFNlY3Rpb25cIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgQmxvY2tzRmluYWxGb3JtIH0gZnJvbSBcIi4uL2Zvcm0vQmxvY2tzRmluYWxGb3JtXCI7XG5pbXBvcnQgeyBjcmVhdGVCbG9ja1NrZWxldG9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvY3JlYXRlQmxvY2tTa2VsZXRvblwiO1xuaW1wb3J0IHsgZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llcyB9IGZyb20gXCIuLi9oZWxwZXJzL2RlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IEhvdmVyUHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvSG92ZXJQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQgeyBTZWxlY3RQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9TZWxlY3RQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIEJsb2NrQ2F0ZWdvcnksXG4gICAgdHlwZSBCbG9ja0RlcGVuZGVuY3ksXG4gICAgdHlwZSBCbG9ja0lucHV0QXBpLFxuICAgIHR5cGUgQmxvY2tJbnRlcmZhY2UsXG4gICAgdHlwZSBDdXN0b21CbG9ja0NhdGVnb3J5LFxuICAgIHR5cGUgUHJldmlld0NvbnRlbnQsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZU5ld1N0YXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBwYXJhbGxlbEFzeW5jRXZlcnkgfSBmcm9tIFwiLi4vdXRpbHMvcGFyYWxsZWxBc3luY0V2ZXJ5XCI7XG5pbXBvcnQgeyBGaW5hbEZvcm1Db2x1bW5zU2VsZWN0IH0gZnJvbSBcIi4vY29sdW1uc0Jsb2NrL0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3RcIjtcbmltcG9ydCB7IEZpbmFsRm9ybUxheW91dFNlbGVjdCB9IGZyb20gXCIuL2NvbHVtbnNCbG9jay9GaW5hbEZvcm1MYXlvdXRTZWxlY3RcIjtcbmltcG9ydCB0eXBlIHsgTGlzdEJsb2NrSXRlbSwgTGlzdEJsb2NrU3RhdGUgfSBmcm9tIFwiLi9jcmVhdGVMaXN0QmxvY2tcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IGFzIGNyZWF0ZVVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uc0Jsb2NrTGF5b3V0IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY29sdW1uczogbnVtYmVyO1xuICAgIGxhYmVsOiBSZWFjdE5vZGU7XG4gICAgcHJldmlldzogUmVhY3ROb2RlO1xuICAgIHNlY3Rpb24/OlxuICAgICAgICB8IHN0cmluZ1xuICAgICAgICB8IHtcbiAgICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgICBsYWJlbD86IFJlYWN0Tm9kZTtcbiAgICAgICAgICB9O1xufVxuXG5pbnRlcmZhY2UgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbGF5b3V0OiBzdHJpbmc7XG4gICAgY29sdW1uczogQXJyYXk8e1xuICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgICAgcHJvcHM6IEJsb2NrSW5wdXRBcGk8VD47XG4gICAgfT47XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDtcbiAgICBjb2x1bW5zOiBMaXN0QmxvY2tJdGVtPFQ+W107XG59XG5cbmludGVyZmFjZSBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogUmVhY3ROb2RlO1xuICAgIGNhdGVnb3J5PzogQmxvY2tDYXRlZ29yeSB8IEN1c3RvbUJsb2NrQ2F0ZWdvcnk7XG4gICAgY29udGVudEJsb2NrOiBUO1xuICAgIGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdO1xuICAgIHRhZ3M/OiBBcnJheTxNZXNzYWdlRGVzY3JpcHRvciB8IHN0cmluZz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb2x1bW5zQmxvY2s8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPihcbiAgICB7IG5hbWUsIGRpc3BsYXlOYW1lLCBjYXRlZ29yeSA9IEJsb2NrQ2F0ZWdvcnkuTGF5b3V0LCBjb250ZW50QmxvY2ssIGxheW91dHMsIHRhZ3MgfTogQ3JlYXRlQ29sdW1uc0Jsb2NrT3B0aW9uczxUPixcbiAgICBvdmVycmlkZT86IChcbiAgICAgICAgYmxvY2s6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+LFxuICAgICkgPT4gQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4pOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiB7XG4gICAgaWYgKGxheW91dHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTnVtYmVyIG9mIGxheW91dHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCFgKTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCA9IGNyZWF0ZVVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50KHsgYmxvY2s6IGNvbnRlbnRCbG9jayB9KTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUVtcHR5Q29sdW1ucyhudW1iZXI6IG51bWJlcik6IExpc3RCbG9ja0l0ZW08VD5bXSB7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXkobnVtYmVyKS5maWxsKHVuZGVmaW5lZCkubWFwKCgpID0+ICh7XG4gICAgICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suZGVmYXVsdFZhbHVlcygpLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICB9KSk7XG4gICAgfVxuICAgIGNvbnN0IENvbHVtbnNCbG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4gPSB7XG4gICAgICAgIC4uLmNyZWF0ZUJsb2NrU2tlbGV0b24oKSxcblxuICAgICAgICBuYW1lLFxuXG4gICAgICAgIGRpc3BsYXlOYW1lLFxuXG4gICAgICAgIHRhZ3M6IHRhZ3MgPyB0YWdzIDogY29udGVudEJsb2NrLnRhZ3MsXG5cbiAgICAgICAgY2F0ZWdvcnksXG5cbiAgICAgICAgZGVmYXVsdFZhbHVlczogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdExheW91dCA9IGxheW91dHNbMF07XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQ6IGRlZmF1bHRMYXlvdXQsXG4gICAgICAgICAgICAgICAgLy8gQWRkIGVtcHR5IGNvbHVtbnMgc28gdGhlIGxpc3QgaXMgbm90IGVtcHR5IGluaXRpYWxseVxuICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNyZWF0ZUVtcHR5Q29sdW1ucyhkZWZhdWx0TGF5b3V0LmNvbHVtbnMpLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxheW91dCA9IGxheW91dHMuZmluZCgobGF5b3V0KSA9PiBsYXlvdXQubmFtZSA9PT0gaW5wdXQubGF5b3V0KTtcblxuICAgICAgICAgICAgaWYgKCFsYXlvdXQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbGF5b3V0IFwiJHtpbnB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGF5b3V0LFxuICAgICAgICAgICAgICAgIGNvbHVtbnM6IGlucHV0LmNvbHVtbnMubWFwKChjb2x1bW4pID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGtleTogY29sdW1uLmtleSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5pbnB1dDJTdGF0ZShjb2x1bW4ucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIHN0YXRlMk91dHB1dDogKG91dHB1dCkgPT4gKHtcbiAgICAgICAgICAgIGxheW91dDogb3V0cHV0LmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogb3V0cHV0LmNvbHVtbnMubWFwKChjb2x1bW4pID0+ICh7XG4gICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suc3RhdGUyT3V0cHV0KGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBvdXRwdXQubGF5b3V0KTtcblxuICAgICAgICAgICAgaWYgKCFsYXlvdXQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbGF5b3V0IFwiJHtvdXRwdXQubGF5b3V0fVwiIWApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzdGF0ZTogQ29sdW1uc0Jsb2NrU3RhdGU8VD4gPSB7XG4gICAgICAgICAgICAgICAgbGF5b3V0LFxuICAgICAgICAgICAgICAgIGNvbHVtbnM6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW5zIG9mIG91dHB1dC5jb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGF3YWl0IGNvbnRlbnRCbG9jay5vdXRwdXQyU3RhdGUoY29sdW1ucy5wcm9wcywgY29udGV4dCksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0NvbnRleHQpID0+ICh7XG4gICAgICAgICAgICBhZG1pbk1ldGE6IHsgcm91dGU6IHByZXZpZXdDb250ZXh0LnBhcmVudFVybCB9LFxuICAgICAgICAgICAgbGF5b3V0OiBzdGF0ZS5sYXlvdXQubmFtZSxcbiAgICAgICAgICAgIGNvbHVtbnM6IHN0YXRlLmNvbHVtbnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChjKSA9PiAocHJldmlld0NvbnRleHQuc2hvd1Zpc2libGVPbmx5ID8gYy52aXNpYmxlIDogdHJ1ZSkpIC8vIGRlcGVuZGluZyBvbiBjb250ZXh0IHNob3cgYWxsIGJsb2NrcyBvciBvbmx5IHZpc2libGUgYmxvY2tzXG4gICAgICAgICAgICAgICAgLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrQWRtaW5Sb3V0ZSA9IGAke3ByZXZpZXdDb250ZXh0LnBhcmVudFVybFN1YlJvdXRlID8/IHByZXZpZXdDb250ZXh0LnBhcmVudFVybH0vJHtjb2x1bW4ua2V5fS9lZGl0YDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjb2x1bW4ucHJvcHMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybDogYmxvY2tBZG1pblJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZG1pbk1ldGE6IHsgcm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9KSxcblxuICAgICAgICBpc1ZhbGlkOiAoc3RhdGUpID0+IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5jb2x1bW5zLCAoY29sdW1uKSA9PiBjb250ZW50QmxvY2suaXNWYWxpZChjb2x1bW4ucHJvcHMpKSxcblxuICAgICAgICBhbmNob3JzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uYW5jaG9ycywgLi4uKGNvbnRlbnRCbG9jay5hbmNob3JzPy4oY29sdW1uLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxCbG9ja0RlcGVuZGVuY3lbXT4oKGRlcGVuZGVuY2llcywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5kZXBlbmRlbmNpZXMsIC4uLihjb250ZW50QmxvY2suZGVwZW5kZW5jaWVzPy4oY29sdW1uLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuXG4gICAgICAgICAgICByZXR1cm4gZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llcyhtZXJnZWREZXBlbmRlbmNpZXMpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dDogKG91dHB1dCwgcmVwbGFjZW1lbnRzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdPdXRwdXQ6IENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+ID0geyAuLi5vdXRwdXQsIGNvbHVtbnM6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIG91dHB1dC5jb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgbmV3T3V0cHV0LmNvbHVtbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5yZXBsYWNlRGVwZW5kZW5jaWVzSW5PdXRwdXQoY29sdW1uLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwTGF5b3V0c0J5Q29sdW1uc0FwaSA9IGNyZWF0ZUdyb3VwTGF5b3V0c0J5Q29sdW1uc0FwaShsYXlvdXRzKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUxpc3RCbG9ja0FkbWluQ2hhbmdlOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxMaXN0QmxvY2tTdGF0ZTxUPj4+ID0gKGxpc3RCbG9ja1NldFN0YXRlQWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaXN0QmxvY2tTdGF0ZSA9IHJlc29sdmVOZXdTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2U3RhdGU6IHsgYmxvY2tzOiBwcmV2U3RhdGUuY29sdW1ucyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGVBY3Rpb246IGxpc3RCbG9ja1NldFN0YXRlQWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGxpc3RCbG9ja1N0YXRlLmJsb2NrcyxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgY2Fubm90UGFzdGVCbG9ja0Vycm9yRGlhbG9nLFxuICAgICAgICAgICAgICAgIGNyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuLFxuICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQsXG4gICAgICAgICAgICAgICAgYWRkTmV3QmxvY2ssXG4gICAgICAgICAgICAgICAgY29weVNlbGVjdGVkQmxvY2tzLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUFsbFNlbGVjdGVkQmxvY2tzLFxuICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrLFxuICAgICAgICAgICAgICAgIGhhbmRsZVRvZ2dsZVNlbGVjdEFsbCxcbiAgICAgICAgICAgICAgICBwYXN0ZUJsb2NrLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQsXG4gICAgICAgICAgICAgICAgZGVsZXRlQmxvY2tzLFxuICAgICAgICAgICAgICAgIHRvZ2dsZVZpc2libGUsXG4gICAgICAgICAgICB9ID0gdXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBzdGF0ZTogeyBibG9ja3M6IHN0YXRlLmNvbHVtbnMgfSwgdXBkYXRlU3RhdGU6IGhhbmRsZUxpc3RCbG9ja0FkbWluQ2hhbmdlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaCBpbml0aWFsUGFnZT1cImxpc3RcIiBkaXNhYmxlRm9yY2VQcm9tcHRSb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1BhZ2UgbmFtZT1cImxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tzRmluYWxGb3JtPHsgbGF5b3V0OiBDb2x1bW5zQmxvY2tMYXlvdXQ7IGNvbHVtbnM6IG51bWJlciB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17KHsgbGF5b3V0LCBjb2x1bW5zIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID0gZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldERlZmF1bHRMYXlvdXQoY29sdW1ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3TGF5b3V0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0LmNvbHVtbnMgIT09IGNvbHVtbnMgJiYgZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA/IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgOiBsYXlvdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWlzc2luZ0VtcHR5Q29sdW1ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgPiBwcmV2U3RhdGUuY29sdW1ucy5sZW5ndGggPyBjcmVhdGVFbXB0eUNvbHVtbnMoY29sdW1ucyAtIHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCkgOiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dDogbmV3TGF5b3V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBbLi4ucHJldlN0YXRlLmNvbHVtbnMsIC4uLm1pc3NpbmdFbXB0eUNvbHVtbnNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlcz17eyBsYXlvdXQ6IHN0YXRlLmxheW91dCwgY29sdW1uczogc3RhdGUubGF5b3V0LmNvbHVtbnMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuY29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiQ29sdW1uc1wiIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PXtGaW5hbEZvcm1Db2x1bW5zU2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmNvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibGF5b3V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmxheW91dFwiIGRlZmF1bHRNZXNzYWdlPVwiTGF5b3V0XCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUxheW91dFNlbGVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dHM9e2dyb3VwTGF5b3V0c0J5Q29sdW1uc0FwaS5nZXRMYXlvdXRzKHN0YXRlLmxheW91dC5jb2x1bW5zKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tzRmluYWxGb3JtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvbiB0aXRsZT17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5pdGVtc1wiIGRlZmF1bHRNZXNzYWdlPVwiSXRlbXNcIiAvPn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0xpc3RIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWRDb3VudCA9PT0gc3RhdGUuY29sdW1ucy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVUb2dnbGVTZWxlY3RBbGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5zZWxlY3RBbGxcIiBkZWZhdWx0TWVzc2FnZT1cIlNlbGVjdCBhbGxcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRDb3VudCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2RlbGV0ZUFsbFNlbGVjdGVkQmxvY2tzfSBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEZWxldGUgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXtjb3B5U2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENvcHkgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9eygpID0+IHBhc3RlQmxvY2soMCl9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQYXN0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrTGlzdEhlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubWFwKChjb2x1bW4sIGNvbHVtbkluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIb3ZlclByZXZpZXdDb21wb25lbnQga2V5PXtjb2x1bW4ua2V5fSBjb21wb25lbnRTbHVnPXtgJHtjb2x1bW4ua2V5fS9jb250ZW50YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2NvbHVtbi5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJQcmV2aWV3Q29udGVudD17KCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1ByZXZpZXdDb250ZW50IGJsb2NrPXtjb250ZW50QmxvY2t9IHN0YXRlPXtjb2x1bW4ucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2NvbHVtbkluZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGNvbHVtbi5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2NvbHVtbi5rZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlQmxvY2s9eyhmcm9tLCB0bykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1ucyA9IFsuLi5wcmV2U3RhdGUuY29sdW1uc107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtblRvTW92ZSA9IGNvbHVtbnMuc3BsaWNlKGZyb20sIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLnNwbGljZSh0bywgMCwgY29sdW1uVG9Nb3ZlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBjb2x1bW5zIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eUJ1dHRvbj17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gdG9nZ2xlVmlzaWJsZShjb2x1bW4ua2V5KX0gc2l6ZT1cInNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb2x1bW4udmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaXNpYmxlIGNvbG9yPVwic3VjY2Vzc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jayhiZWZvcmVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29weUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnRlbnRCbG9jay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogY29sdW1uLnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUGFzdGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soY29sdW1uSW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17Y29sdW1uLnNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RCbG9jayhjb2x1bW4sIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkRm49eygpID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtjb2x1bW4uc2xpZGVJbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtjb2x1bW5JbmRleCA+PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAtIDF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ib3ZlclByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWRkTmV3QmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25JY29uIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SWNvbj17PEFkZCAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmFkZEl0ZW1cIiBkZWZhdWx0TWVzc2FnZT1cIkFkZCBpdGVtXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50UGFwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tQYWdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwiZWRpdFwiIHRpdGxlPXtpbnRsLmZvcm1hdE1lc3NhZ2UoeyBpZDogXCJjb21ldC5ibG9ja3MuY29sdW1ucy5lZGl0Q29sdW1uXCIsIGRlZmF1bHRNZXNzYWdlOiBcIkVkaXQgY29sdW1uXCIgfSl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoSW5kZXggPSBzdGF0ZS5jb2x1bW5zLmZpbmRJbmRleCgoY29sdW1uKSA9PiBjb2x1bW4ua2V5ID09PSBrZXkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMudW5rbm93bkNvbHVtblwiIGRlZmF1bHRNZXNzYWdlPVwiQ2FuJ3QgZmluZCBjb2x1bW5cIiAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuY29sdW1uc1ttYXRjaEluZGV4XTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZVRpdGxlIHRpdGxlPXtjb2x1bW5Db3VudExhYmVsKGludGwsIG1hdGNoSW5kZXggKyAxKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbnRlbnRCbG9jay5BZG1pbkNvbXBvbmVudCBzdGF0ZT17bWF0Y2gucHJvcHN9IHVwZGF0ZVN0YXRlPXtjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbihrZXkpfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2VUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuXG4gICAgICAgIHByZXZpZXdDb250ZW50OiAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5ub0NvbHVtbnNcIiBkZWZhdWx0TWVzc2FnZT1cIk5vIGNvbHVtbnNcIiAvPixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuY29sdW1ucy5yZWR1Y2U8UHJldmlld0NvbnRlbnRbXT4oXG4gICAgICAgICAgICAgICAgKHByZXZpZXdDb250ZW50LCBjdXJyZW50Q29sdW1uKSA9PiBbLi4ucHJldmlld0NvbnRlbnQsIC4uLmNvbnRlbnRCbG9jay5wcmV2aWV3Q29udGVudChjdXJyZW50Q29sdW1uLnByb3BzLCBjb250ZXh0KV0sXG4gICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmNvbHVtbnMuXFxkKy5wcm9wcy8udGVzdChqc29uUGF0aCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb2x1bW5zQmxvY2s6IEludmFsaWQganNvblBhdGhcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHBhdGhBcnIgPSBqc29uUGF0aC5zcGxpdChcIi5cIik7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIocGF0aEFyclsxXSk7XG4gICAgICAgICAgICBjb25zdCBibG9ja0l0ZW0gPSBzdGF0ZS5jb2x1bW5zW251bV07XG5cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkUGF0aCA9IGNvbnRlbnRCbG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXh0cmFjdFRleHRDb250ZW50czogKHN0YXRlLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmNsdWRlSW52aXNpYmxlQ29udGVudCA9IG9wdGlvbnM/LmluY2x1ZGVJbnZpc2libGVDb250ZW50ID8/IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuY29sdW1ucy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbHVtbi52aXNpYmxlICYmICFpbmNsdWRlSW52aXNpYmxlQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmNvbnRlbnQsIC4uLihjb250ZW50QmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNvbHVtbi5wcm9wcywgb3B0aW9ucykgPz8gW10pXTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKG92ZXJyaWRlKSB7XG4gICAgICAgIHJldHVybiBvdmVycmlkZShDb2x1bW5zQmxvY2spO1xuICAgIH1cblxuICAgIHJldHVybiBDb2x1bW5zQmxvY2s7XG59XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIHBhZGRpbmc6IDEycHggMDtcbmA7XG5cbmNvbnN0IFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWwgPSBzdHlsZWQoRm9ybUNvbnRyb2xMYWJlbClgXG4gICAgcGFkZGluZzogMTVweCAxMHB4IDE1cHggN3B4O1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25Db250ZW50ID0gc3R5bGVkKFwic3BhblwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiA0cHggMDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uSWNvbiA9IHN0eWxlZChBZGQpYFxuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG5gO1xuXG50eXBlIEdyb3VwZWRMYXlvdXRzQnlDb2x1bW5zQXBpID0ge1xuICAgIGNvbHVtbnM6IG51bWJlcltdO1xuICAgIGdldExheW91dHM6IChjb2x1bW5zOiBudW1iZXIpID0+IENvbHVtbnNCbG9ja0xheW91dFtdO1xuICAgIGdldERlZmF1bHRMYXlvdXQ6IChjb2x1bW5zOiBudW1iZXIpID0+IENvbHVtbnNCbG9ja0xheW91dCB8IHVuZGVmaW5lZDtcbn07XG5cbmZ1bmN0aW9uIGNvbHVtbkNvdW50TGFiZWwoaW50bDogSW50bFNoYXBlLCBjb3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaW50bC5mb3JtYXRNZXNzYWdlKFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogXCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5UaXRsZVwiLFxuICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6IFwiQ29sdW1uIHtudW1iZXJ9XCIsXG4gICAgICAgIH0sXG4gICAgICAgIHsgbnVtYmVyOiBjb3VudCB9LFxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUdyb3VwTGF5b3V0c0J5Q29sdW1uc0FwaShsYXlvdXRzOiBDb2x1bW5zQmxvY2tMYXlvdXRbXSk6IEdyb3VwZWRMYXlvdXRzQnlDb2x1bW5zQXBpIHtcbiAgICBjb25zdCBncm91cGVkTGF5b3V0cyA9IGxheW91dHMucmVkdWNlKChhY2MsIGMpID0+IHtcbiAgICAgICAgYWNjLnNldChjLmNvbHVtbnMsIFsuLi4oYWNjLmdldChjLmNvbHVtbnMpIHx8IFtdKSwgY10pO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIG5ldyBNYXA8bnVtYmVyLCBDb2x1bW5zQmxvY2tMYXlvdXRbXT4oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjb2x1bW5zOiBBcnJheS5mcm9tKGdyb3VwZWRMYXlvdXRzLmtleXMoKSksXG4gICAgICAgIGdldExheW91dHM6IChjb2x1bW5zOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBncm91cGVkTGF5b3V0cy5nZXQoY29sdW1ucykgfHwgW107XG4gICAgICAgIH0sXG4gICAgICAgIGdldERlZmF1bHRMYXlvdXQ6IChjb2x1bW5zOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxheW91dHMgPSBncm91cGVkTGF5b3V0cy5nZXQoY29sdW1ucykgfHwgW107XG4gICAgICAgICAgICByZXR1cm4gbGF5b3V0cy5sZW5ndGggPyBsYXlvdXRzWzBdIDogdW5kZWZpbmVkO1xuICAgICAgICB9LFxuICAgIH07XG59XG4iXX0= */",
|
|
597
597
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
598
598
|
});
|
|
599
599
|
function columnCountLabel(intl, count) {
|