@thetradeengineorg1/snova-shell-module 0.0.8 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js +1091 -2159
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
- package/esm2015/lib/globaldependencies/helpers/dom.helper.js +2 -1
- package/esm2015/lib/shell-components/components/Payments/document.component.js +1 -1
- package/esm2015/lib/shell-components/components/admin-layout/admin-layout.component.js +39 -81
- package/esm2015/lib/shell-components/components/feed-time/feed-time.component.js +1 -1
- package/esm2015/lib/shell-components/components/header-side/header-side.component.js +296 -323
- package/esm2015/lib/shell-components/components/header-top/header-top.component.js +82 -357
- package/esm2015/lib/shell-components/components/menu/menu.component.js +136 -724
- package/esm2015/lib/shell-components/components/sidenav/side-bar.component.js +105 -99
- package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +1 -1
- package/esm2015/lib/shell-components/components/submit-feedback/submit-feedback.component.js +1 -1
- package/esm2015/lib/shell-components/shell.module.js +9 -11
- package/esm2015/public-api.js +1 -1
- package/fesm2015/thetradeengineorg1-snova-shell-module.js +1065 -1986
- package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
- package/lib/globaldependencies/components/componentbase.d.ts +0 -1
- package/lib/globaldependencies/constants/feature-ids.d.ts +0 -1
- package/lib/globaldependencies/constants/localstorage-properties.d.ts +0 -1
- package/lib/globaldependencies/helpers/dom.helper.d.ts +0 -1
- package/lib/globaldependencies/helpers/fontawesome-icons.d.ts +0 -1
- package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts +0 -1
- package/lib/globaldependencies/helpers/window.helper.d.ts +0 -1
- package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts +0 -1
- package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts +0 -1
- package/lib/globaldependencies/pipes/highLightText.pipe.d.ts +0 -1
- package/lib/globaldependencies/pipes/orderby-pipe.d.ts +0 -1
- package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts +0 -1
- package/lib/globaldependencies/pipes/sanitize.pipe.d.ts +0 -1
- package/lib/globaldependencies/pipes/softlabels.pipes.d.ts +0 -1
- package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts +0 -1
- package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts +0 -1
- package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts +0 -1
- package/lib/shell-components/components/Payments/account.component.d.ts +0 -1
- package/lib/shell-components/components/Payments/company-information.d.ts +0 -1
- package/lib/shell-components/components/Payments/company-plans.component.d.ts +0 -1
- package/lib/shell-components/components/Payments/document.component.d.ts +1 -2
- package/lib/shell-components/components/Payments/payment-method.component.d.ts +0 -1
- package/lib/shell-components/components/Payments/product-service.component.d.ts +0 -1
- package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts +0 -1
- package/lib/shell-components/components/Payments/transactions.component.d.ts +0 -1
- package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts +0 -1
- package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts +0 -1
- package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts +0 -1
- package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts +0 -1
- package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts +0 -1
- package/lib/shell-components/components/feed-time/feed-time.component.d.ts +0 -1
- package/lib/shell-components/components/header-side/header-side.component.d.ts +1 -2
- package/lib/shell-components/components/header-top/header-top.component.d.ts +0 -1
- package/lib/shell-components/components/lives/lives-welcome-page.d.ts +0 -1
- package/lib/shell-components/components/menu/menu.component.d.ts +0 -1
- package/lib/shell-components/components/menu/searchTask.enum.d.ts +0 -1
- package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts +0 -1
- package/lib/shell-components/components/notifications/notifications.component.d.ts +0 -1
- package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts +0 -1
- package/lib/shell-components/components/sidenav/side-bar.component.d.ts +26 -16
- package/lib/shell-components/components/sidenav/sidenav.component.d.ts +0 -1
- package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts +0 -1
- package/lib/shell-components/constants/api-urls.d.ts +0 -1
- package/lib/shell-components/constants/available-languages.d.ts +0 -1
- package/lib/shell-components/constants/channel-names.d.ts +0 -1
- package/lib/shell-components/constants/menu-categories.d.ts +0 -1
- package/lib/shell-components/constants/notification-routes.d.ts +0 -1
- package/lib/shell-components/constants/notification-type-ids.d.ts +0 -1
- package/lib/shell-components/enum/recentSearchType.enum.d.ts +0 -1
- package/lib/shell-components/models/AppMenuItemModel.d.ts +0 -1
- package/lib/shell-components/models/AppNotification.d.ts +0 -1
- package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts +0 -1
- package/lib/shell-components/models/ChannelUpdateModel.d.ts +0 -1
- package/lib/shell-components/models/EmployeeStatusModel.d.ts +0 -1
- package/lib/shell-components/models/IAdjust-screen-options.d.ts +0 -1
- package/lib/shell-components/models/IBadge.d.ts +0 -1
- package/lib/shell-components/models/IChildItem.d.ts +0 -1
- package/lib/shell-components/models/ILayout-change-options.d.ts +0 -1
- package/lib/shell-components/models/IMenuItem.d.ts +0 -1
- package/lib/shell-components/models/IlayoutConf.d.ts +0 -1
- package/lib/shell-components/models/IntroModel.d.ts +0 -1
- package/lib/shell-components/models/MessageDetails.d.ts +0 -1
- package/lib/shell-components/models/MessageTypingDetails.d.ts +0 -1
- package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts +0 -1
- package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts +0 -1
- package/lib/shell-components/models/NotificationsOutPutModel.d.ts +0 -1
- package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts +0 -1
- package/lib/shell-components/models/RecentSearchModel.d.ts +0 -1
- package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts +0 -1
- package/lib/shell-components/models/ReportSubmittedNotification.d.ts +0 -1
- package/lib/shell-components/models/RoleUpdatedNotification.d.ts +0 -1
- package/lib/shell-components/models/UserStoryAssignedNotification.d.ts +0 -1
- package/lib/shell-components/models/archiveUserStoryModel.d.ts +0 -1
- package/lib/shell-components/models/companieslist.model.d.ts +0 -1
- package/lib/shell-components/models/company-model.d.ts +0 -1
- package/lib/shell-components/models/company-payment-model.d.ts +0 -1
- package/lib/shell-components/models/dragedWidget.d.ts +0 -1
- package/lib/shell-components/models/employee-List.d.ts +0 -1
- package/lib/shell-components/models/employee.d.ts +0 -1
- package/lib/shell-components/models/entityRoleFeature.d.ts +0 -1
- package/lib/shell-components/models/export-configuration-model.d.ts +0 -1
- package/lib/shell-components/models/export-data.module.d.ts +0 -1
- package/lib/shell-components/models/goalApprovedNotificationModel.d.ts +0 -1
- package/lib/shell-components/models/import-configuration-model.d.ts +0 -1
- package/lib/shell-components/models/initialStatusofUsers.d.ts +0 -1
- package/lib/shell-components/models/invoiceOutput-model.d.ts +0 -1
- package/lib/shell-components/models/leaveApplicationNotifiction.d.ts +0 -1
- package/lib/shell-components/models/multiChartsScheduling.d.ts +0 -1
- package/lib/shell-components/models/parkUserStoryInputModel.d.ts +0 -1
- package/lib/shell-components/models/project.d.ts +0 -1
- package/lib/shell-components/models/recentSearchApiModel.d.ts +0 -1
- package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts +0 -1
- package/lib/shell-components/models/shellModulesInfo.d.ts +0 -1
- package/lib/shell-components/models/softlabels-model.d.ts +0 -1
- package/lib/shell-components/models/sprintReplanRequestedModel.d.ts +0 -1
- package/lib/shell-components/models/sprintStartedNotificationModel.d.ts +0 -1
- package/lib/shell-components/models/store-model.d.ts +0 -1
- package/lib/shell-components/models/store-search-model.d.ts +0 -1
- package/lib/shell-components/models/themes.model.d.ts +0 -1
- package/lib/shell-components/models/timesheetenabledisable.d.ts +0 -1
- package/lib/shell-components/models/user.d.ts +0 -1
- package/lib/shell-components/models/userStory.d.ts +0 -1
- package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts +0 -1
- package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts +0 -1
- package/lib/shell-components/models/userstory-custom-fields.model.d.ts +0 -1
- package/lib/shell-components/models/validation.model.d.ts +0 -1
- package/lib/shell-components/models/widgetlist.d.ts +0 -1
- package/lib/shell-components/models/workspaceList.d.ts +0 -1
- package/lib/shell-components/services/authentication.service.d.ts +0 -1
- package/lib/shell-components/services/chat.service.d.ts +0 -1
- package/lib/shell-components/services/common-used.service.d.ts +0 -1
- package/lib/shell-components/services/feature.service.d.ts +0 -1
- package/lib/shell-components/services/google-analytics.service.d.ts +0 -1
- package/lib/shell-components/services/layout.service.d.ts +0 -1
- package/lib/shell-components/services/payment.service.d.ts +0 -1
- package/lib/shell-components/services/recentSearch.service.d.ts +0 -1
- package/lib/shell-components/services/shell.modules.service.d.ts +0 -1
- package/lib/shell-components/services/signalr.service.d.ts +0 -1
- package/lib/shell-components/services/theme.service.d.ts +0 -1
- package/lib/shell-components/shell.module.d.ts +1 -2
- package/lib/shell-components/shell.routing.d.ts +0 -1
- package/lib/shell-components/store/actions/authentication.actions.d.ts +0 -1
- package/lib/shell-components/store/actions/chat.actions.d.ts +0 -1
- package/lib/shell-components/store/actions/menuitems.actions.d.ts +0 -1
- package/lib/shell-components/store/actions/notification-validator.action.d.ts +0 -1
- package/lib/shell-components/store/actions/notifications.actions.d.ts +0 -1
- package/lib/shell-components/store/effects/authentication.effects.d.ts +0 -1
- package/lib/shell-components/store/effects/chat.effects.d.ts +0 -1
- package/lib/shell-components/store/effects/index.d.ts +0 -1
- package/lib/shell-components/store/effects/menuitems.effects.d.ts +0 -1
- package/lib/shell-components/store/effects/notification-validator.effects.d.ts +0 -1
- package/lib/shell-components/store/effects/notifications.effects.d.ts +0 -1
- package/lib/shell-components/store/reducers/authentication.reducers.d.ts +0 -1
- package/lib/shell-components/store/reducers/chat.reducers.d.ts +0 -1
- package/lib/shell-components/store/reducers/index.d.ts +0 -1
- package/lib/shell-components/store/reducers/menuitems.reducers.d.ts +0 -1
- package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts +0 -1
- package/lib/shell-components/store/reducers/notifications.reducers.d.ts +0 -1
- package/package.json +1 -1
- package/public-api.d.ts +0 -1
- package/store/reducers/index.d.ts +0 -1
- package/thetradeengineorg1-snova-shell-module.d.ts +0 -1
- package/lib/globaldependencies/components/componentbase.d.ts.map +0 -1
- package/lib/globaldependencies/constants/feature-ids.d.ts.map +0 -1
- package/lib/globaldependencies/constants/localstorage-properties.d.ts.map +0 -1
- package/lib/globaldependencies/helpers/dom.helper.d.ts.map +0 -1
- package/lib/globaldependencies/helpers/fontawesome-icons.d.ts.map +0 -1
- package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts.map +0 -1
- package/lib/globaldependencies/helpers/window.helper.d.ts.map +0 -1
- package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts.map +0 -1
- package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts.map +0 -1
- package/lib/globaldependencies/pipes/highLightText.pipe.d.ts.map +0 -1
- package/lib/globaldependencies/pipes/orderby-pipe.d.ts.map +0 -1
- package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts.map +0 -1
- package/lib/globaldependencies/pipes/sanitize.pipe.d.ts.map +0 -1
- package/lib/globaldependencies/pipes/softlabels.pipes.d.ts.map +0 -1
- package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts.map +0 -1
- package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts.map +0 -1
- package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts.map +0 -1
- package/lib/shell-components/components/Payments/account.component.d.ts.map +0 -1
- package/lib/shell-components/components/Payments/company-information.d.ts.map +0 -1
- package/lib/shell-components/components/Payments/company-plans.component.d.ts.map +0 -1
- package/lib/shell-components/components/Payments/document.component.d.ts.map +0 -1
- package/lib/shell-components/components/Payments/payment-method.component.d.ts.map +0 -1
- package/lib/shell-components/components/Payments/product-service.component.d.ts.map +0 -1
- package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts.map +0 -1
- package/lib/shell-components/components/Payments/transactions.component.d.ts.map +0 -1
- package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts.map +0 -1
- package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts.map +0 -1
- package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts.map +0 -1
- package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts.map +0 -1
- package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts.map +0 -1
- package/lib/shell-components/components/feed-time/feed-time.component.d.ts.map +0 -1
- package/lib/shell-components/components/header-side/header-side.component.d.ts.map +0 -1
- package/lib/shell-components/components/header-top/header-top.component.d.ts.map +0 -1
- package/lib/shell-components/components/lives/lives-welcome-page.d.ts.map +0 -1
- package/lib/shell-components/components/menu/menu.component.d.ts.map +0 -1
- package/lib/shell-components/components/menu/searchTask.enum.d.ts.map +0 -1
- package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts.map +0 -1
- package/lib/shell-components/components/notifications/notifications.component.d.ts.map +0 -1
- package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts.map +0 -1
- package/lib/shell-components/components/sidenav/side-bar.component.d.ts.map +0 -1
- package/lib/shell-components/components/sidenav/sidenav.component.d.ts.map +0 -1
- package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts.map +0 -1
- package/lib/shell-components/constants/api-urls.d.ts.map +0 -1
- package/lib/shell-components/constants/available-languages.d.ts.map +0 -1
- package/lib/shell-components/constants/channel-names.d.ts.map +0 -1
- package/lib/shell-components/constants/menu-categories.d.ts.map +0 -1
- package/lib/shell-components/constants/notification-routes.d.ts.map +0 -1
- package/lib/shell-components/constants/notification-type-ids.d.ts.map +0 -1
- package/lib/shell-components/enum/recentSearchType.enum.d.ts.map +0 -1
- package/lib/shell-components/models/AppMenuItemModel.d.ts.map +0 -1
- package/lib/shell-components/models/AppNotification.d.ts.map +0 -1
- package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts.map +0 -1
- package/lib/shell-components/models/ChannelUpdateModel.d.ts.map +0 -1
- package/lib/shell-components/models/EmployeeStatusModel.d.ts.map +0 -1
- package/lib/shell-components/models/IAdjust-screen-options.d.ts.map +0 -1
- package/lib/shell-components/models/IBadge.d.ts.map +0 -1
- package/lib/shell-components/models/IChildItem.d.ts.map +0 -1
- package/lib/shell-components/models/ILayout-change-options.d.ts.map +0 -1
- package/lib/shell-components/models/IMenuItem.d.ts.map +0 -1
- package/lib/shell-components/models/IlayoutConf.d.ts.map +0 -1
- package/lib/shell-components/models/IntroModel.d.ts.map +0 -1
- package/lib/shell-components/models/MessageDetails.d.ts.map +0 -1
- package/lib/shell-components/models/MessageTypingDetails.d.ts.map +0 -1
- package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts.map +0 -1
- package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts.map +0 -1
- package/lib/shell-components/models/NotificationsOutPutModel.d.ts.map +0 -1
- package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts.map +0 -1
- package/lib/shell-components/models/RecentSearchModel.d.ts.map +0 -1
- package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts.map +0 -1
- package/lib/shell-components/models/ReportSubmittedNotification.d.ts.map +0 -1
- package/lib/shell-components/models/RoleUpdatedNotification.d.ts.map +0 -1
- package/lib/shell-components/models/UserStoryAssignedNotification.d.ts.map +0 -1
- package/lib/shell-components/models/archiveUserStoryModel.d.ts.map +0 -1
- package/lib/shell-components/models/companieslist.model.d.ts.map +0 -1
- package/lib/shell-components/models/company-model.d.ts.map +0 -1
- package/lib/shell-components/models/company-payment-model.d.ts.map +0 -1
- package/lib/shell-components/models/dragedWidget.d.ts.map +0 -1
- package/lib/shell-components/models/employee-List.d.ts.map +0 -1
- package/lib/shell-components/models/employee.d.ts.map +0 -1
- package/lib/shell-components/models/entityRoleFeature.d.ts.map +0 -1
- package/lib/shell-components/models/export-configuration-model.d.ts.map +0 -1
- package/lib/shell-components/models/export-data.module.d.ts.map +0 -1
- package/lib/shell-components/models/goalApprovedNotificationModel.d.ts.map +0 -1
- package/lib/shell-components/models/import-configuration-model.d.ts.map +0 -1
- package/lib/shell-components/models/initialStatusofUsers.d.ts.map +0 -1
- package/lib/shell-components/models/invoiceOutput-model.d.ts.map +0 -1
- package/lib/shell-components/models/leaveApplicationNotifiction.d.ts.map +0 -1
- package/lib/shell-components/models/multiChartsScheduling.d.ts.map +0 -1
- package/lib/shell-components/models/parkUserStoryInputModel.d.ts.map +0 -1
- package/lib/shell-components/models/project.d.ts.map +0 -1
- package/lib/shell-components/models/recentSearchApiModel.d.ts.map +0 -1
- package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts.map +0 -1
- package/lib/shell-components/models/shellModulesInfo.d.ts.map +0 -1
- package/lib/shell-components/models/softlabels-model.d.ts.map +0 -1
- package/lib/shell-components/models/sprintReplanRequestedModel.d.ts.map +0 -1
- package/lib/shell-components/models/sprintStartedNotificationModel.d.ts.map +0 -1
- package/lib/shell-components/models/store-model.d.ts.map +0 -1
- package/lib/shell-components/models/store-search-model.d.ts.map +0 -1
- package/lib/shell-components/models/themes.model.d.ts.map +0 -1
- package/lib/shell-components/models/timesheetenabledisable.d.ts.map +0 -1
- package/lib/shell-components/models/user.d.ts.map +0 -1
- package/lib/shell-components/models/userStory.d.ts.map +0 -1
- package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts.map +0 -1
- package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts.map +0 -1
- package/lib/shell-components/models/userstory-custom-fields.model.d.ts.map +0 -1
- package/lib/shell-components/models/validation.model.d.ts.map +0 -1
- package/lib/shell-components/models/widgetlist.d.ts.map +0 -1
- package/lib/shell-components/models/workspaceList.d.ts.map +0 -1
- package/lib/shell-components/services/authentication.service.d.ts.map +0 -1
- package/lib/shell-components/services/chat.service.d.ts.map +0 -1
- package/lib/shell-components/services/common-used.service.d.ts.map +0 -1
- package/lib/shell-components/services/feature.service.d.ts.map +0 -1
- package/lib/shell-components/services/google-analytics.service.d.ts.map +0 -1
- package/lib/shell-components/services/layout.service.d.ts.map +0 -1
- package/lib/shell-components/services/payment.service.d.ts.map +0 -1
- package/lib/shell-components/services/recentSearch.service.d.ts.map +0 -1
- package/lib/shell-components/services/shell.modules.service.d.ts.map +0 -1
- package/lib/shell-components/services/signalr.service.d.ts.map +0 -1
- package/lib/shell-components/services/theme.service.d.ts.map +0 -1
- package/lib/shell-components/shell.module.d.ts.map +0 -1
- package/lib/shell-components/shell.routing.d.ts.map +0 -1
- package/lib/shell-components/store/actions/authentication.actions.d.ts.map +0 -1
- package/lib/shell-components/store/actions/chat.actions.d.ts.map +0 -1
- package/lib/shell-components/store/actions/menuitems.actions.d.ts.map +0 -1
- package/lib/shell-components/store/actions/notification-validator.action.d.ts.map +0 -1
- package/lib/shell-components/store/actions/notifications.actions.d.ts.map +0 -1
- package/lib/shell-components/store/effects/authentication.effects.d.ts.map +0 -1
- package/lib/shell-components/store/effects/chat.effects.d.ts.map +0 -1
- package/lib/shell-components/store/effects/index.d.ts.map +0 -1
- package/lib/shell-components/store/effects/menuitems.effects.d.ts.map +0 -1
- package/lib/shell-components/store/effects/notification-validator.effects.d.ts.map +0 -1
- package/lib/shell-components/store/effects/notifications.effects.d.ts.map +0 -1
- package/lib/shell-components/store/reducers/authentication.reducers.d.ts.map +0 -1
- package/lib/shell-components/store/reducers/chat.reducers.d.ts.map +0 -1
- package/lib/shell-components/store/reducers/index.d.ts.map +0 -1
- package/lib/shell-components/store/reducers/menuitems.reducers.d.ts.map +0 -1
- package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts.map +0 -1
- package/lib/shell-components/store/reducers/notifications.reducers.d.ts.map +0 -1
- package/public-api.d.ts.map +0 -1
- package/store/reducers/index.d.ts.map +0 -1
- package/thetradeengineorg1-snova-shell-module.d.ts.map +0 -1
|
@@ -39,7 +39,7 @@ import { NewProjectFeatureCreatedNotificationModel } from '../../models/NewProje
|
|
|
39
39
|
import { UserStoryArchiveNotificationModel } from '../../models/archiveUserStoryModel';
|
|
40
40
|
import { UserStoryParkNotificationModel } from '../../models/parkUserStoryInputModel';
|
|
41
41
|
import { ExportConfigurationDialogComponent } from '../export-import-configuration/export-configuration.component';
|
|
42
|
-
import { FileResultModel } from
|
|
42
|
+
import { FileResultModel } from '@thetradeengineorg1/snova-document-management';
|
|
43
43
|
// import { ConstantVariables } from "../constants/constant-variables";
|
|
44
44
|
import Resumable from "resumablejs";
|
|
45
45
|
import { ApiUrls } from '../../constants/api-urls';
|
|
@@ -67,35 +67,33 @@ import * as i15 from "@thetradeengineorg1/snova-document-management";
|
|
|
67
67
|
import * as i16 from "../../services/shell.modules.service";
|
|
68
68
|
import * as i17 from "../../services/chat.service";
|
|
69
69
|
import * as i18 from "../../services/signalr.service";
|
|
70
|
-
import * as i19 from "
|
|
71
|
-
import * as i20 from "@angular/
|
|
72
|
-
import * as i21 from "
|
|
73
|
-
import * as i22 from "@angular/
|
|
74
|
-
import * as i23 from "@
|
|
75
|
-
import * as i24 from "@angular/material/
|
|
76
|
-
import * as i25 from "
|
|
77
|
-
import * as i26 from "
|
|
78
|
-
import * as i27 from "
|
|
79
|
-
import * as i28 from "@angular/material/
|
|
80
|
-
import * as i29 from "@angular/material/
|
|
81
|
-
import * as i30 from "@angular/
|
|
82
|
-
import * as i31 from "@angular
|
|
83
|
-
import * as i32 from "
|
|
84
|
-
import * as i33 from "
|
|
85
|
-
import * as i34 from "@angular/
|
|
86
|
-
import * as i35 from "@angular/
|
|
87
|
-
import * as i36 from "@angular/material/
|
|
88
|
-
import * as i37 from "@angular/
|
|
70
|
+
import * as i19 from "../menu/menu.component";
|
|
71
|
+
import * as i20 from "@angular/common";
|
|
72
|
+
import * as i21 from "@angular/material/button";
|
|
73
|
+
import * as i22 from "@angular/material/tooltip";
|
|
74
|
+
import * as i23 from "@ncstate/sat-popover";
|
|
75
|
+
import * as i24 from "@angular/material/icon";
|
|
76
|
+
import * as i25 from "@angular/material/menu";
|
|
77
|
+
import * as i26 from "../notifications/notifications.component";
|
|
78
|
+
import * as i27 from "@angular/material/divider";
|
|
79
|
+
import * as i28 from "@angular/material/card";
|
|
80
|
+
import * as i29 from "@angular/material/list";
|
|
81
|
+
import * as i30 from "@angular/flex-layout/flex";
|
|
82
|
+
import * as i31 from "@fortawesome/angular-fontawesome";
|
|
83
|
+
import * as i32 from "ngx-dropzone";
|
|
84
|
+
import * as i33 from "@angular/material/select";
|
|
85
|
+
import * as i34 from "@angular/forms";
|
|
86
|
+
import * as i35 from "@angular/material/form-field";
|
|
87
|
+
import * as i36 from "@angular/material/input";
|
|
88
|
+
import * as i37 from "@angular/flex-layout/extended";
|
|
89
89
|
import * as i38 from "@thetradeengineorg1/snova-avatar";
|
|
90
|
-
import * as i39 from "@angular/material/
|
|
91
|
-
import * as i40 from "
|
|
92
|
-
import * as i41 from "@angular/material/
|
|
93
|
-
import * as i42 from "../
|
|
94
|
-
import * as i43 from "
|
|
95
|
-
import * as i44 from "
|
|
96
|
-
import * as i45 from "../../../globaldependencies/pipes/
|
|
97
|
-
import * as i46 from "../../../globaldependencies/pipes/fetchSizedAndCachedImage.pipe";
|
|
98
|
-
import * as i47 from "../../../globaldependencies/pipes/softlabels.pipes";
|
|
90
|
+
import * as i39 from "@angular/material/core";
|
|
91
|
+
import * as i40 from "../submit-feedback/submit-feedback.component";
|
|
92
|
+
import * as i41 from "@angular/material/progress-bar";
|
|
93
|
+
import * as i42 from "../notifications/announcement-dialog.component";
|
|
94
|
+
import * as i43 from "../../../globaldependencies/pipes/removeSpecialCharacters.pipe";
|
|
95
|
+
import * as i44 from "../../../globaldependencies/pipes/fetchSizedAndCachedImage.pipe";
|
|
96
|
+
import * as i45 from "../../../globaldependencies/pipes/softlabels.pipes";
|
|
99
97
|
const _c0 = ["feedTimeSheet"];
|
|
100
98
|
const _c1 = ["feedBackPopover"];
|
|
101
99
|
const _c2 = ["documentPopover"];
|
|
@@ -103,83 +101,83 @@ const _c3 = ["openAnnoucementDialogComponent"];
|
|
|
103
101
|
const _c4 = ["fileUploadDropzonePopup"];
|
|
104
102
|
const _c5 = function (a0) { return { "margin-bottom": a0 }; };
|
|
105
103
|
function HeaderSideComponent_div_5_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
106
|
-
i0.ɵɵelementStart(0, "div",
|
|
107
|
-
i0.ɵɵelementStart(1, "div",
|
|
108
|
-
i0.ɵɵelement(2, "app-avatar",
|
|
104
|
+
i0.ɵɵelementStart(0, "div", 58);
|
|
105
|
+
i0.ɵɵelementStart(1, "div", 59);
|
|
106
|
+
i0.ɵɵelement(2, "app-avatar", 60);
|
|
109
107
|
i0.ɵɵpipe(3, "removeSpecialCharacters");
|
|
110
108
|
i0.ɵɵpipe(4, "fetchSizedAndCachedImage");
|
|
111
109
|
i0.ɵɵelementEnd();
|
|
112
|
-
i0.ɵɵelementStart(5, "span",
|
|
110
|
+
i0.ɵɵelementStart(5, "span", 61);
|
|
113
111
|
i0.ɵɵtext(6);
|
|
114
112
|
i0.ɵɵelementEnd();
|
|
115
113
|
i0.ɵɵelementEnd();
|
|
116
114
|
} if (rf & 2) {
|
|
117
|
-
const
|
|
115
|
+
const ctx_r32 = i0.ɵɵnextContext(2);
|
|
118
116
|
i0.ɵɵadvance(1);
|
|
119
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(13, _c5,
|
|
117
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(13, _c5, ctx_r32.selectedCompany.companyMiniLogo ? "10px" : "0px"));
|
|
120
118
|
i0.ɵɵadvance(1);
|
|
121
|
-
i0.ɵɵpropertyInterpolate("matTooltip",
|
|
122
|
-
i0.ɵɵproperty("name", i0.ɵɵpipeBind1(3, 7,
|
|
119
|
+
i0.ɵɵpropertyInterpolate("matTooltip", ctx_r32.selectedCompany.companyName);
|
|
120
|
+
i0.ɵɵproperty("name", i0.ɵɵpipeBind1(3, 7, ctx_r32.selectedCompany.companyName))("src", i0.ɵɵpipeBind3(4, 9, ctx_r32.selectedCompany.companyMiniLogo, "20", ""))("isRound", true);
|
|
123
121
|
i0.ɵɵadvance(3);
|
|
124
|
-
i0.ɵɵpropertyInterpolate("matTooltip",
|
|
122
|
+
i0.ɵɵpropertyInterpolate("matTooltip", ctx_r32.selectedCompany.companyName);
|
|
125
123
|
i0.ɵɵadvance(1);
|
|
126
|
-
i0.ɵɵ
|
|
124
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r32.selectedCompanyName, " ");
|
|
127
125
|
} }
|
|
128
126
|
function HeaderSideComponent_div_5_span_10_Template(rf, ctx) { if (rf & 1) {
|
|
129
127
|
i0.ɵɵelement(0, "span");
|
|
130
128
|
} }
|
|
131
129
|
function HeaderSideComponent_div_5_mat_icon_11_Template(rf, ctx) { if (rf & 1) {
|
|
132
|
-
const
|
|
133
|
-
i0.ɵɵelementStart(0, "mat-icon",
|
|
134
|
-
i0.ɵɵlistener("click", function HeaderSideComponent_div_5_mat_icon_11_Template_mat_icon_click_0_listener() { i0.ɵɵrestoreView(
|
|
135
|
-
i0.ɵɵtext(1, " close");
|
|
130
|
+
const _r37 = i0.ɵɵgetCurrentView();
|
|
131
|
+
i0.ɵɵelementStart(0, "mat-icon", 62);
|
|
132
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_div_5_mat_icon_11_Template_mat_icon_click_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r36 = i0.ɵɵnextContext(2); return ctx_r36.closeSearch(); });
|
|
133
|
+
i0.ɵɵtext(1, " close ");
|
|
136
134
|
i0.ɵɵelementEnd();
|
|
137
135
|
} }
|
|
138
136
|
function HeaderSideComponent_div_5_mat_option_12_Template(rf, ctx) { if (rf & 1) {
|
|
139
|
-
i0.ɵɵelementStart(0, "mat-option",
|
|
140
|
-
i0.ɵɵelementStart(1, "div",
|
|
141
|
-
i0.ɵɵelement(2, "app-avatar",
|
|
137
|
+
i0.ɵɵelementStart(0, "mat-option", 63);
|
|
138
|
+
i0.ɵɵelementStart(1, "div", 64);
|
|
139
|
+
i0.ɵɵelement(2, "app-avatar", 65);
|
|
142
140
|
i0.ɵɵpipe(3, "removeSpecialCharacters");
|
|
143
141
|
i0.ɵɵpipe(4, "fetchSizedAndCachedImage");
|
|
144
|
-
i0.ɵɵelementStart(5, "div",
|
|
142
|
+
i0.ɵɵelementStart(5, "div", 66);
|
|
145
143
|
i0.ɵɵtext(6);
|
|
146
144
|
i0.ɵɵelementEnd();
|
|
147
145
|
i0.ɵɵelementEnd();
|
|
148
146
|
i0.ɵɵelementEnd();
|
|
149
147
|
} if (rf & 2) {
|
|
150
|
-
const
|
|
151
|
-
i0.ɵɵpropertyInterpolate("matTooltip",
|
|
152
|
-
i0.ɵɵproperty("value",
|
|
148
|
+
const companyList_r38 = ctx.$implicit;
|
|
149
|
+
i0.ɵɵpropertyInterpolate("matTooltip", companyList_r38.companyName);
|
|
150
|
+
i0.ɵɵproperty("value", companyList_r38);
|
|
153
151
|
i0.ɵɵadvance(2);
|
|
154
|
-
i0.ɵɵpropertyInterpolate("matTooltip",
|
|
155
|
-
i0.ɵɵproperty("name", i0.ɵɵpipeBind1(3, 8,
|
|
152
|
+
i0.ɵɵpropertyInterpolate("matTooltip", companyList_r38.companyName);
|
|
153
|
+
i0.ɵɵproperty("name", i0.ɵɵpipeBind1(3, 8, companyList_r38.companyName))("ngStyle", i0.ɵɵpureFunction1(14, _c5, companyList_r38.companyMiniLogo ? "10px" : "0px"))("src", i0.ɵɵpipeBind3(4, 10, companyList_r38.companyMiniLogo, "20", ""))("isRound", true);
|
|
156
154
|
i0.ɵɵadvance(4);
|
|
157
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
155
|
+
i0.ɵɵtextInterpolate1(" ", companyList_r38.companyName, " ");
|
|
158
156
|
} }
|
|
159
157
|
function HeaderSideComponent_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
160
|
-
const
|
|
161
|
-
i0.ɵɵelementStart(0, "div",
|
|
158
|
+
const _r41 = i0.ɵɵgetCurrentView();
|
|
159
|
+
i0.ɵɵelementStart(0, "div", 48);
|
|
162
160
|
i0.ɵɵlistener("click", function HeaderSideComponent_div_5_Template_div_click_0_listener($event) { return $event.stopPropagation(); });
|
|
163
|
-
i0.ɵɵelementStart(1, "mat-select",
|
|
164
|
-
i0.ɵɵlistener("ngModelChange", function HeaderSideComponent_div_5_Template_mat_select_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(
|
|
161
|
+
i0.ɵɵelementStart(1, "mat-select", 49);
|
|
162
|
+
i0.ɵɵlistener("ngModelChange", function HeaderSideComponent_div_5_Template_mat_select_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r41); const ctx_r40 = i0.ɵɵnextContext(); return ctx_r40.selectedCompany = $event; })("selectionChange", function HeaderSideComponent_div_5_Template_mat_select_selectionChange_1_listener($event) { i0.ɵɵrestoreView(_r41); const ctx_r42 = i0.ɵɵnextContext(); return ctx_r42.selectCompany($event.value); });
|
|
165
163
|
i0.ɵɵelementStart(2, "mat-select-trigger");
|
|
166
|
-
i0.ɵɵtemplate(3, HeaderSideComponent_div_5_div_3_Template, 7, 15, "div",
|
|
164
|
+
i0.ɵɵtemplate(3, HeaderSideComponent_div_5_div_3_Template, 7, 15, "div", 50);
|
|
167
165
|
i0.ɵɵelementEnd();
|
|
168
|
-
i0.ɵɵelementStart(4, "div",
|
|
169
|
-
i0.ɵɵelementStart(5, "div",
|
|
170
|
-
i0.ɵɵelementStart(6, "mat-form-field",
|
|
171
|
-
i0.ɵɵelementStart(7, "input",
|
|
172
|
-
i0.ɵɵlistener("ngModelChange", function HeaderSideComponent_div_5_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(
|
|
166
|
+
i0.ɵɵelementStart(4, "div", 51);
|
|
167
|
+
i0.ɵɵelementStart(5, "div", 52);
|
|
168
|
+
i0.ɵɵelementStart(6, "mat-form-field", 53);
|
|
169
|
+
i0.ɵɵelementStart(7, "input", 54);
|
|
170
|
+
i0.ɵɵlistener("ngModelChange", function HeaderSideComponent_div_5_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r41); const ctx_r43 = i0.ɵɵnextContext(); return ctx_r43.searchText = $event; });
|
|
173
171
|
i0.ɵɵpipe(8, "translate");
|
|
174
172
|
i0.ɵɵelementEnd();
|
|
175
173
|
i0.ɵɵelementEnd();
|
|
176
174
|
i0.ɵɵelementEnd();
|
|
177
|
-
i0.ɵɵelementStart(9, "span",
|
|
175
|
+
i0.ɵɵelementStart(9, "span", 55);
|
|
178
176
|
i0.ɵɵtemplate(10, HeaderSideComponent_div_5_span_10_Template, 1, 0, "span", 6);
|
|
179
|
-
i0.ɵɵtemplate(11, HeaderSideComponent_div_5_mat_icon_11_Template, 2, 0, "mat-icon",
|
|
177
|
+
i0.ɵɵtemplate(11, HeaderSideComponent_div_5_mat_icon_11_Template, 2, 0, "mat-icon", 56);
|
|
180
178
|
i0.ɵɵelementEnd();
|
|
181
179
|
i0.ɵɵelementEnd();
|
|
182
|
-
i0.ɵɵtemplate(12, HeaderSideComponent_div_5_mat_option_12_Template, 7, 16, "mat-option",
|
|
180
|
+
i0.ɵɵtemplate(12, HeaderSideComponent_div_5_mat_option_12_Template, 7, 16, "mat-option", 57);
|
|
183
181
|
i0.ɵɵelementEnd();
|
|
184
182
|
i0.ɵɵelementEnd();
|
|
185
183
|
} if (rf & 2) {
|
|
@@ -199,12 +197,12 @@ function HeaderSideComponent_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
199
197
|
i0.ɵɵproperty("ngForOf", ctx_r0.searchCompanies(ctx_r0.companiesList, ctx_r0.searchText));
|
|
200
198
|
} }
|
|
201
199
|
function HeaderSideComponent_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
202
|
-
const
|
|
200
|
+
const _r45 = i0.ɵɵgetCurrentView();
|
|
203
201
|
i0.ɵɵelementStart(0, "div");
|
|
204
|
-
i0.ɵɵelementStart(1, "button",
|
|
205
|
-
i0.ɵɵlistener("click", function HeaderSideComponent_div_6_Template_button_click_1_listener() { i0.ɵɵrestoreView(
|
|
202
|
+
i0.ɵɵelementStart(1, "button", 67);
|
|
203
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_div_6_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r45); const ctx_r44 = i0.ɵɵnextContext(); return ctx_r44.navigateToSettings(); });
|
|
206
204
|
i0.ɵɵpipe(2, "translate");
|
|
207
|
-
i0.ɵɵelementStart(3, "mat-icon");
|
|
205
|
+
i0.ɵɵelementStart(3, "mat-icon", 9);
|
|
208
206
|
i0.ɵɵtext(4, "settings");
|
|
209
207
|
i0.ɵɵelementEnd();
|
|
210
208
|
i0.ɵɵelementEnd();
|
|
@@ -216,12 +214,12 @@ function HeaderSideComponent_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
216
214
|
i0.ɵɵproperty("ngClass", ctx_r1.router.url.includes("/settings") ? "icon_active_class" : "");
|
|
217
215
|
} }
|
|
218
216
|
function HeaderSideComponent_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
219
|
-
const
|
|
217
|
+
const _r47 = i0.ɵɵgetCurrentView();
|
|
220
218
|
i0.ɵɵelementStart(0, "div");
|
|
221
|
-
i0.ɵɵelementStart(1, "button",
|
|
222
|
-
i0.ɵɵlistener("click", function HeaderSideComponent_div_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(
|
|
219
|
+
i0.ɵɵelementStart(1, "button", 68);
|
|
220
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_div_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r47); const ctx_r46 = i0.ɵɵnextContext(); return ctx_r46.navigateToStatusReport(); });
|
|
223
221
|
i0.ɵɵpipe(2, "translate");
|
|
224
|
-
i0.ɵɵelementStart(3, "mat-icon");
|
|
222
|
+
i0.ɵɵelementStart(3, "mat-icon", 9);
|
|
225
223
|
i0.ɵɵtext(4, "assignment");
|
|
226
224
|
i0.ɵɵelementEnd();
|
|
227
225
|
i0.ɵɵelementEnd();
|
|
@@ -230,93 +228,54 @@ function HeaderSideComponent_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
|
230
228
|
i0.ɵɵadvance(1);
|
|
231
229
|
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind1(2, 1, "SHELL.MYWORK"));
|
|
232
230
|
} }
|
|
233
|
-
function
|
|
234
|
-
|
|
235
|
-
i0.ɵɵelementStart(0, "div");
|
|
236
|
-
i0.ɵɵelementStart(1, "button", 67);
|
|
237
|
-
i0.ɵɵlistener("click", function HeaderSideComponent_div_8_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r50); const ctx_r49 = i0.ɵɵnextContext(); return ctx_r49.openTimeSheet(); });
|
|
238
|
-
i0.ɵɵpipe(2, "translate");
|
|
239
|
-
i0.ɵɵelementStart(3, "mat-icon");
|
|
240
|
-
i0.ɵɵtext(4, "access_time");
|
|
241
|
-
i0.ɵɵelementEnd();
|
|
242
|
-
i0.ɵɵelementEnd();
|
|
243
|
-
i0.ɵɵelementEnd();
|
|
244
|
-
} if (rf & 2) {
|
|
245
|
-
i0.ɵɵnextContext();
|
|
246
|
-
const _r7 = i0.ɵɵreference(15);
|
|
247
|
-
i0.ɵɵadvance(1);
|
|
248
|
-
i0.ɵɵstyleProp("overflow", "visible");
|
|
249
|
-
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind1(2, 4, "SHELL.LOGTIME"));
|
|
250
|
-
i0.ɵɵproperty("satPopoverAnchorFor", _r7);
|
|
251
|
-
} }
|
|
252
|
-
function HeaderSideComponent_button_9_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
253
|
-
i0.ɵɵelementStart(0, "span", 70);
|
|
231
|
+
function HeaderSideComponent_button_13_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
232
|
+
i0.ɵɵelementStart(0, "span", 71);
|
|
254
233
|
i0.ɵɵtext(1);
|
|
255
234
|
i0.ɵɵelementEnd();
|
|
256
235
|
} if (rf & 2) {
|
|
257
|
-
const
|
|
236
|
+
const ctx_r48 = i0.ɵɵnextContext(2);
|
|
258
237
|
i0.ɵɵadvance(1);
|
|
259
|
-
i0.ɵɵ
|
|
238
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r48.newNotificationsCount, " ");
|
|
260
239
|
} }
|
|
261
|
-
function
|
|
262
|
-
const
|
|
263
|
-
i0.ɵɵelementStart(0, "button",
|
|
264
|
-
i0.ɵɵlistener("click", function
|
|
240
|
+
function HeaderSideComponent_button_13_Template(rf, ctx) { if (rf & 1) {
|
|
241
|
+
const _r50 = i0.ɵɵgetCurrentView();
|
|
242
|
+
i0.ɵɵelementStart(0, "button", 69);
|
|
243
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_button_13_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r50); const ctx_r49 = i0.ɵɵnextContext(); return ctx_r49.toggleNotific(); });
|
|
265
244
|
i0.ɵɵpipe(1, "translate");
|
|
266
|
-
i0.ɵɵelementStart(2, "mat-icon");
|
|
245
|
+
i0.ɵɵelementStart(2, "mat-icon", 9);
|
|
267
246
|
i0.ɵɵtext(3, "notifications");
|
|
268
247
|
i0.ɵɵelementEnd();
|
|
269
|
-
i0.ɵɵtemplate(4,
|
|
248
|
+
i0.ɵɵtemplate(4, HeaderSideComponent_button_13_span_4_Template, 2, 1, "span", 70);
|
|
270
249
|
i0.ɵɵelementEnd();
|
|
271
250
|
} if (rf & 2) {
|
|
272
251
|
const ctx_r4 = i0.ɵɵnextContext();
|
|
273
|
-
const _r5 = i0.ɵɵreference(
|
|
252
|
+
const _r5 = i0.ɵɵreference(15);
|
|
274
253
|
i0.ɵɵstyleProp("overflow", "visible");
|
|
275
254
|
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind1(1, 5, "SHELL.NOTIFICATIONS"));
|
|
276
255
|
i0.ɵɵproperty("matMenuTriggerFor", _r5);
|
|
277
256
|
i0.ɵɵadvance(4);
|
|
278
257
|
i0.ɵɵproperty("ngIf", ctx_r4.newNotificationsCount != 0);
|
|
279
258
|
} }
|
|
280
|
-
function
|
|
281
|
-
i0.ɵɵ
|
|
282
|
-
i0.ɵɵ
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
i0.ɵɵ
|
|
286
|
-
} }
|
|
287
|
-
function HeaderSideComponent_button_13_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
288
|
-
i0.ɵɵelementStart(0, "div", 75);
|
|
289
|
-
i0.ɵɵelement(1, "app-avatar", 76);
|
|
290
|
-
i0.ɵɵpipe(2, "removeSpecialCharacters");
|
|
259
|
+
function HeaderSideComponent_button_17_Template(rf, ctx) { if (rf & 1) {
|
|
260
|
+
const _r52 = i0.ɵɵgetCurrentView();
|
|
261
|
+
i0.ɵɵelementStart(0, "button", 72);
|
|
262
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_button_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r52); const ctx_r51 = i0.ɵɵnextContext(); return ctx_r51.toggleRecording(); });
|
|
263
|
+
i0.ɵɵelementStart(1, "mat-icon", 73);
|
|
264
|
+
i0.ɵɵtext(2, "person");
|
|
291
265
|
i0.ɵɵelementEnd();
|
|
292
|
-
} if (rf & 2) {
|
|
293
|
-
const ctx_r55 = i0.ɵɵnextContext(2);
|
|
294
|
-
i0.ɵɵadvance(1);
|
|
295
|
-
i0.ɵɵproperty("name", i0.ɵɵpipeBind1(2, 2, ctx_r55.authenticatedUserRecord.fullName))("isRound", true);
|
|
296
|
-
} }
|
|
297
|
-
function HeaderSideComponent_button_13_Template(rf, ctx) { if (rf & 1) {
|
|
298
|
-
const _r57 = i0.ɵɵgetCurrentView();
|
|
299
|
-
i0.ɵɵelementStart(0, "button", 71);
|
|
300
|
-
i0.ɵɵlistener("click", function HeaderSideComponent_button_13_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r57); const ctx_r56 = i0.ɵɵnextContext(); return ctx_r56.toggleRecording(); });
|
|
301
|
-
i0.ɵɵtemplate(1, HeaderSideComponent_button_13_img_1_Template, 2, 5, "img", 72);
|
|
302
|
-
i0.ɵɵtemplate(2, HeaderSideComponent_button_13_div_2_Template, 3, 4, "div", 73);
|
|
303
266
|
i0.ɵɵelementEnd();
|
|
304
267
|
} if (rf & 2) {
|
|
305
268
|
const ctx_r6 = i0.ɵɵnextContext();
|
|
306
|
-
const
|
|
307
|
-
i0.ɵɵproperty("matMenuTriggerFor",
|
|
308
|
-
i0.ɵɵadvance(1);
|
|
309
|
-
i0.ɵɵproperty("ngIf", ctx_r6.authenticatedUserRecord.profileImage);
|
|
310
|
-
i0.ɵɵadvance(1);
|
|
311
|
-
i0.ɵɵproperty("ngIf", !ctx_r6.authenticatedUserRecord.profileImage);
|
|
269
|
+
const _r7 = i0.ɵɵreference(19);
|
|
270
|
+
i0.ɵɵproperty("matMenuTriggerFor", _r7)("ngClass", ctx_r6.router.url.includes("/dashboard/profile/") ? "icon_active_class" : "");
|
|
312
271
|
} }
|
|
313
|
-
function
|
|
314
|
-
i0.ɵɵelement(0, "mat-icon",
|
|
272
|
+
function HeaderSideComponent_mat_icon_26_Template(rf, ctx) { if (rf & 1) {
|
|
273
|
+
i0.ɵɵelement(0, "mat-icon", 74);
|
|
315
274
|
} }
|
|
316
|
-
function
|
|
317
|
-
const
|
|
318
|
-
i0.ɵɵelementStart(0, "button",
|
|
319
|
-
i0.ɵɵlistener("click", function
|
|
275
|
+
function HeaderSideComponent_button_27_Template(rf, ctx) { if (rf & 1) {
|
|
276
|
+
const _r54 = i0.ɵɵgetCurrentView();
|
|
277
|
+
i0.ɵɵelementStart(0, "button", 75);
|
|
278
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_button_27_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r54); const ctx_r53 = i0.ɵɵnextContext(); return ctx_r53.clearDemoData(); });
|
|
320
279
|
i0.ɵɵpipe(1, "translate");
|
|
321
280
|
i0.ɵɵelementStart(2, "mat-icon");
|
|
322
281
|
i0.ɵɵtext(3, "delete");
|
|
@@ -332,10 +291,10 @@ function HeaderSideComponent_button_26_Template(rf, ctx) { if (rf & 1) {
|
|
|
332
291
|
i0.ɵɵadvance(5);
|
|
333
292
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 6, "SHELL.CLEARDEMODATA"));
|
|
334
293
|
} }
|
|
335
|
-
function
|
|
336
|
-
const
|
|
337
|
-
i0.ɵɵelementStart(0, "button",
|
|
338
|
-
i0.ɵɵlistener("click", function
|
|
294
|
+
function HeaderSideComponent_button_28_Template(rf, ctx) { if (rf & 1) {
|
|
295
|
+
const _r56 = i0.ɵɵgetCurrentView();
|
|
296
|
+
i0.ɵɵelementStart(0, "button", 75);
|
|
297
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_button_28_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r56); const ctx_r55 = i0.ɵɵnextContext(); return ctx_r55.exportConfigurationDialogData(); });
|
|
339
298
|
i0.ɵɵpipe(1, "translate");
|
|
340
299
|
i0.ɵɵelementStart(2, "mat-icon");
|
|
341
300
|
i0.ɵɵtext(3, "get_app");
|
|
@@ -351,10 +310,10 @@ function HeaderSideComponent_button_27_Template(rf, ctx) { if (rf & 1) {
|
|
|
351
310
|
i0.ɵɵadvance(5);
|
|
352
311
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 6, "SHELL.EXPORTCONFIGURATION"));
|
|
353
312
|
} }
|
|
354
|
-
function
|
|
355
|
-
const
|
|
356
|
-
i0.ɵɵelementStart(0, "button",
|
|
357
|
-
i0.ɵɵlistener("click", function
|
|
313
|
+
function HeaderSideComponent_button_29_Template(rf, ctx) { if (rf & 1) {
|
|
314
|
+
const _r59 = i0.ɵɵgetCurrentView();
|
|
315
|
+
i0.ɵɵelementStart(0, "button", 76, 77);
|
|
316
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_button_29_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r59); const _r57 = i0.ɵɵreference(1); const ctx_r58 = i0.ɵɵnextContext(); return ctx_r58.addUploadFilePopupOpen(_r57); });
|
|
358
317
|
i0.ɵɵpipe(2, "translate");
|
|
359
318
|
i0.ɵɵelementStart(3, "mat-icon");
|
|
360
319
|
i0.ɵɵtext(4, "publish");
|
|
@@ -366,16 +325,16 @@ function HeaderSideComponent_button_28_Template(rf, ctx) { if (rf & 1) {
|
|
|
366
325
|
i0.ɵɵelementEnd();
|
|
367
326
|
} if (rf & 2) {
|
|
368
327
|
i0.ɵɵnextContext();
|
|
369
|
-
const
|
|
328
|
+
const _r24 = i0.ɵɵreference(59);
|
|
370
329
|
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind1(2, 3, "SHELL.IMPORTCONFIGURATION"));
|
|
371
|
-
i0.ɵɵproperty("satPopoverAnchorFor",
|
|
330
|
+
i0.ɵɵproperty("satPopoverAnchorFor", _r24);
|
|
372
331
|
i0.ɵɵadvance(6);
|
|
373
332
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(7, 5, "SHELL.IMPORTCONFIGURATION"));
|
|
374
333
|
} }
|
|
375
|
-
function
|
|
376
|
-
const
|
|
334
|
+
function HeaderSideComponent_button_30_Template(rf, ctx) { if (rf & 1) {
|
|
335
|
+
const _r61 = i0.ɵɵgetCurrentView();
|
|
377
336
|
i0.ɵɵelementStart(0, "button", 14);
|
|
378
|
-
i0.ɵɵlistener("click", function
|
|
337
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_button_30_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r61); const ctx_r60 = i0.ɵɵnextContext(); return ctx_r60.onNavigateToBillingScreen(); });
|
|
379
338
|
i0.ɵɵelementStart(1, "mat-icon");
|
|
380
339
|
i0.ɵɵtext(2, "account_balance");
|
|
381
340
|
i0.ɵɵelementEnd();
|
|
@@ -384,10 +343,10 @@ function HeaderSideComponent_button_29_Template(rf, ctx) { if (rf & 1) {
|
|
|
384
343
|
i0.ɵɵelementEnd();
|
|
385
344
|
i0.ɵɵelementEnd();
|
|
386
345
|
} }
|
|
387
|
-
function
|
|
388
|
-
const
|
|
346
|
+
function HeaderSideComponent_button_31_Template(rf, ctx) { if (rf & 1) {
|
|
347
|
+
const _r63 = i0.ɵɵgetCurrentView();
|
|
389
348
|
i0.ɵɵelementStart(0, "button", 14);
|
|
390
|
-
i0.ɵɵlistener("click", function
|
|
349
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_button_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r63); const ctx_r62 = i0.ɵɵnextContext(); return ctx_r62.onNavigateToPricingScreen(); });
|
|
391
350
|
i0.ɵɵelementStart(1, "mat-icon");
|
|
392
351
|
i0.ɵɵtext(2, "account_balance_wallet");
|
|
393
352
|
i0.ɵɵelementEnd();
|
|
@@ -396,10 +355,10 @@ function HeaderSideComponent_button_30_Template(rf, ctx) { if (rf & 1) {
|
|
|
396
355
|
i0.ɵɵelementEnd();
|
|
397
356
|
i0.ɵɵelementEnd();
|
|
398
357
|
} }
|
|
399
|
-
function
|
|
400
|
-
const
|
|
401
|
-
i0.ɵɵelementStart(0, "button",
|
|
402
|
-
i0.ɵɵlistener("click", function
|
|
358
|
+
function HeaderSideComponent_button_32_Template(rf, ctx) { if (rf & 1) {
|
|
359
|
+
const _r65 = i0.ɵɵgetCurrentView();
|
|
360
|
+
i0.ɵɵelementStart(0, "button", 75);
|
|
361
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_button_32_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r65); const ctx_r64 = i0.ɵɵnextContext(); return ctx_r64.alternateSignIn(); });
|
|
403
362
|
i0.ɵɵpipe(1, "translate");
|
|
404
363
|
i0.ɵɵelementStart(2, "mat-icon");
|
|
405
364
|
i0.ɵɵtext(3, "how_to_reg");
|
|
@@ -415,19 +374,19 @@ function HeaderSideComponent_button_31_Template(rf, ctx) { if (rf & 1) {
|
|
|
415
374
|
i0.ɵɵadvance(5);
|
|
416
375
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 6, "SHELL.SIGNINAS"));
|
|
417
376
|
} }
|
|
418
|
-
function
|
|
419
|
-
i0.ɵɵelement(0, "div",
|
|
377
|
+
function HeaderSideComponent_div_45_Template(rf, ctx) { if (rf & 1) {
|
|
378
|
+
i0.ɵɵelement(0, "div", 78);
|
|
420
379
|
} }
|
|
421
|
-
function
|
|
422
|
-
const
|
|
423
|
-
i0.ɵɵelementStart(0, "app-submit-feedback",
|
|
424
|
-
i0.ɵɵlistener("closeDialog", function
|
|
380
|
+
function HeaderSideComponent_app_submit_feedback_48_Template(rf, ctx) { if (rf & 1) {
|
|
381
|
+
const _r67 = i0.ɵɵgetCurrentView();
|
|
382
|
+
i0.ɵɵelementStart(0, "app-submit-feedback", 79);
|
|
383
|
+
i0.ɵɵlistener("closeDialog", function HeaderSideComponent_app_submit_feedback_48_Template_app_submit_feedback_closeDialog_0_listener() { i0.ɵɵrestoreView(_r67); const ctx_r66 = i0.ɵɵnextContext(); return ctx_r66.closeFeedBacklogDialog(); });
|
|
425
384
|
i0.ɵɵelementEnd();
|
|
426
385
|
} }
|
|
427
386
|
const _c6 = function () { return ["/applications/view-forms"]; };
|
|
428
|
-
function
|
|
429
|
-
i0.ɵɵelementStart(0, "mat-card",
|
|
430
|
-
i0.ɵɵelementStart(1, "span",
|
|
387
|
+
function HeaderSideComponent_mat_card_53_Template(rf, ctx) { if (rf & 1) {
|
|
388
|
+
i0.ɵɵelementStart(0, "mat-card", 80);
|
|
389
|
+
i0.ɵɵelementStart(1, "span", 81);
|
|
431
390
|
i0.ɵɵtext(2, "Forms");
|
|
432
391
|
i0.ɵɵelementEnd();
|
|
433
392
|
i0.ɵɵelementEnd();
|
|
@@ -435,9 +394,9 @@ function HeaderSideComponent_mat_card_52_Template(rf, ctx) { if (rf & 1) {
|
|
|
435
394
|
i0.ɵɵproperty("routerLink", i0.ɵɵpureFunction0(1, _c6));
|
|
436
395
|
} }
|
|
437
396
|
const _c7 = function () { return ["/applications/custom-applications"]; };
|
|
438
|
-
function
|
|
439
|
-
i0.ɵɵelementStart(0, "mat-card",
|
|
440
|
-
i0.ɵɵelementStart(1, "span",
|
|
397
|
+
function HeaderSideComponent_mat_card_54_Template(rf, ctx) { if (rf & 1) {
|
|
398
|
+
i0.ɵɵelementStart(0, "mat-card", 80);
|
|
399
|
+
i0.ɵɵelementStart(1, "span", 81);
|
|
441
400
|
i0.ɵɵtext(2, "Custom applications");
|
|
442
401
|
i0.ɵɵelementEnd();
|
|
443
402
|
i0.ɵɵelementEnd();
|
|
@@ -445,9 +404,9 @@ function HeaderSideComponent_mat_card_53_Template(rf, ctx) { if (rf & 1) {
|
|
|
445
404
|
i0.ɵɵproperty("routerLink", i0.ɵɵpureFunction0(1, _c7));
|
|
446
405
|
} }
|
|
447
406
|
const _c8 = function () { return ["/rolemanagement/rolemanagement"]; };
|
|
448
|
-
function
|
|
449
|
-
i0.ɵɵelementStart(0, "mat-card",
|
|
450
|
-
i0.ɵɵelementStart(1, "span",
|
|
407
|
+
function HeaderSideComponent_mat_card_55_Template(rf, ctx) { if (rf & 1) {
|
|
408
|
+
i0.ɵɵelementStart(0, "mat-card", 80);
|
|
409
|
+
i0.ɵɵelementStart(1, "span", 81);
|
|
451
410
|
i0.ɵɵtext(2, "Role configuration");
|
|
452
411
|
i0.ɵɵelementEnd();
|
|
453
412
|
i0.ɵɵelementEnd();
|
|
@@ -455,88 +414,88 @@ function HeaderSideComponent_mat_card_54_Template(rf, ctx) { if (rf & 1) {
|
|
|
455
414
|
i0.ɵɵproperty("routerLink", i0.ɵɵpureFunction0(1, _c8));
|
|
456
415
|
} }
|
|
457
416
|
const _c9 = function () { return ["/rolemanagement/entityrolemanagement"]; };
|
|
458
|
-
function
|
|
459
|
-
i0.ɵɵelementStart(0, "mat-card",
|
|
460
|
-
i0.ɵɵelementStart(1, "span",
|
|
417
|
+
function HeaderSideComponent_mat_card_56_Template(rf, ctx) { if (rf & 1) {
|
|
418
|
+
i0.ɵɵelementStart(0, "mat-card", 80);
|
|
419
|
+
i0.ɵɵelementStart(1, "span", 81);
|
|
461
420
|
i0.ɵɵtext(2);
|
|
462
421
|
i0.ɵɵpipe(3, "softLabelsPipe");
|
|
463
422
|
i0.ɵɵelementEnd();
|
|
464
423
|
i0.ɵɵelementEnd();
|
|
465
424
|
} if (rf & 2) {
|
|
466
|
-
const
|
|
425
|
+
const ctx_r22 = i0.ɵɵnextContext();
|
|
467
426
|
i0.ɵɵproperty("routerLink", i0.ɵɵpureFunction0(5, _c9));
|
|
468
427
|
i0.ɵɵadvance(2);
|
|
469
|
-
i0.ɵɵ
|
|
428
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 2, ctx_r22.projectRoleText, ctx_r22.softLabels), " ");
|
|
470
429
|
} }
|
|
471
|
-
function
|
|
430
|
+
function HeaderSideComponent_div_57_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
472
431
|
i0.ɵɵelementStart(0, "span");
|
|
473
432
|
i0.ɵɵtext(1, "Welcome \u00A0 ");
|
|
474
433
|
i0.ɵɵelementEnd();
|
|
475
434
|
} }
|
|
476
|
-
function
|
|
435
|
+
function HeaderSideComponent_div_57_ng_template_4_Template(rf, ctx) { if (rf & 1) {
|
|
477
436
|
i0.ɵɵtext(0, " Welcome back \u00A0");
|
|
478
437
|
} }
|
|
479
|
-
function
|
|
480
|
-
i0.ɵɵelementStart(0, "div",
|
|
481
|
-
i0.ɵɵtemplate(1,
|
|
438
|
+
function HeaderSideComponent_div_57_Template(rf, ctx) { if (rf & 1) {
|
|
439
|
+
i0.ɵɵelementStart(0, "div", 82);
|
|
440
|
+
i0.ɵɵtemplate(1, HeaderSideComponent_div_57_span_1_Template, 2, 0, "span", 83);
|
|
482
441
|
i0.ɵɵelementStart(2, "span");
|
|
483
442
|
i0.ɵɵtext(3);
|
|
484
443
|
i0.ɵɵelementEnd();
|
|
485
|
-
i0.ɵɵtemplate(4,
|
|
444
|
+
i0.ɵɵtemplate(4, HeaderSideComponent_div_57_ng_template_4_Template, 1, 0, "ng-template", null, 84, i0.ɵɵtemplateRefExtractor);
|
|
486
445
|
i0.ɵɵelementEnd();
|
|
487
446
|
} if (rf & 2) {
|
|
488
|
-
const
|
|
489
|
-
const
|
|
447
|
+
const _r69 = i0.ɵɵreference(5);
|
|
448
|
+
const ctx_r23 = i0.ɵɵnextContext();
|
|
490
449
|
i0.ɵɵproperty("@fade", undefined);
|
|
491
450
|
i0.ɵɵadvance(1);
|
|
492
|
-
i0.ɵɵproperty("ngIf",
|
|
451
|
+
i0.ɵɵproperty("ngIf", ctx_r23.loggedInCount == 1)("ngIfElse", _r69);
|
|
493
452
|
i0.ɵɵadvance(2);
|
|
494
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
453
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r23.userFullName, " ");
|
|
495
454
|
} }
|
|
496
|
-
function
|
|
497
|
-
const
|
|
498
|
-
i0.ɵɵelementStart(0, "ngx-dropzone-preview",
|
|
499
|
-
i0.ɵɵlistener("removed", function
|
|
500
|
-
i0.ɵɵelementStart(1, "ngx-dropzone-label",
|
|
455
|
+
function HeaderSideComponent_ngx_dropzone_preview_75_Template(rf, ctx) { if (rf & 1) {
|
|
456
|
+
const _r73 = i0.ɵɵgetCurrentView();
|
|
457
|
+
i0.ɵɵelementStart(0, "ngx-dropzone-preview", 85);
|
|
458
|
+
i0.ɵɵlistener("removed", function HeaderSideComponent_ngx_dropzone_preview_75_Template_ngx_dropzone_preview_removed_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r73); const f_r71 = restoredCtx.$implicit; const ctx_r72 = i0.ɵɵnextContext(); return ctx_r72.onRemove(f_r71); });
|
|
459
|
+
i0.ɵɵelementStart(1, "ngx-dropzone-label", 86);
|
|
501
460
|
i0.ɵɵtext(2);
|
|
502
461
|
i0.ɵɵelementEnd();
|
|
503
462
|
i0.ɵɵelementEnd();
|
|
504
463
|
} if (rf & 2) {
|
|
505
|
-
const
|
|
506
|
-
const
|
|
464
|
+
const f_r71 = ctx.$implicit;
|
|
465
|
+
const ctx_r25 = i0.ɵɵnextContext();
|
|
507
466
|
i0.ɵɵproperty("removable", true);
|
|
508
467
|
i0.ɵɵadvance(1);
|
|
509
|
-
i0.ɵɵattribute("data-tip",
|
|
468
|
+
i0.ɵɵattribute("data-tip", f_r71.name);
|
|
510
469
|
i0.ɵɵadvance(1);
|
|
511
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
470
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r25.setLabelNameForDropzone(f_r71.name), " ");
|
|
512
471
|
} }
|
|
513
|
-
function
|
|
514
|
-
i0.ɵɵelement(0, "mat-progress-bar",
|
|
472
|
+
function HeaderSideComponent_mat_progress_bar_79_Template(rf, ctx) { if (rf & 1) {
|
|
473
|
+
i0.ɵɵelement(0, "mat-progress-bar", 87);
|
|
515
474
|
} if (rf & 2) {
|
|
516
|
-
const
|
|
517
|
-
i0.ɵɵproperty("value",
|
|
475
|
+
const ctx_r26 = i0.ɵɵnextContext();
|
|
476
|
+
i0.ɵɵproperty("value", ctx_r26.progressValue);
|
|
518
477
|
} }
|
|
519
|
-
function
|
|
520
|
-
i0.ɵɵelementStart(0, "div");
|
|
478
|
+
function HeaderSideComponent_div_80_Template(rf, ctx) { if (rf & 1) {
|
|
479
|
+
i0.ɵɵelementStart(0, "div", 88);
|
|
521
480
|
i0.ɵɵtext(1);
|
|
522
481
|
i0.ɵɵelementEnd();
|
|
523
482
|
} if (rf & 2) {
|
|
524
|
-
const
|
|
483
|
+
const ctx_r27 = i0.ɵɵnextContext();
|
|
525
484
|
i0.ɵɵadvance(1);
|
|
526
|
-
i0.ɵɵtextInterpolate3(" ",
|
|
485
|
+
i0.ɵɵtextInterpolate3(" ", ctx_r27.progressValue, "% completed (Uploading ", ctx_r27.fileCounter, " of ", ctx_r27.files.length, " files) ");
|
|
527
486
|
} }
|
|
528
|
-
function
|
|
529
|
-
const
|
|
530
|
-
i0.ɵɵelementStart(0, "div",
|
|
531
|
-
i0.ɵɵelementStart(1, "button",
|
|
532
|
-
i0.ɵɵlistener("click", function
|
|
533
|
-
i0.ɵɵelement(2, "fa-icon",
|
|
487
|
+
function HeaderSideComponent_div_81_Template(rf, ctx) { if (rf & 1) {
|
|
488
|
+
const _r75 = i0.ɵɵgetCurrentView();
|
|
489
|
+
i0.ɵɵelementStart(0, "div", 89);
|
|
490
|
+
i0.ɵɵelementStart(1, "button", 90);
|
|
491
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_div_81_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r75); const ctx_r74 = i0.ɵɵnextContext(); return ctx_r74.saveFiles(); });
|
|
492
|
+
i0.ɵɵelement(2, "fa-icon", 91);
|
|
534
493
|
i0.ɵɵtext(3);
|
|
535
494
|
i0.ɵɵpipe(4, "translate");
|
|
536
495
|
i0.ɵɵelementEnd();
|
|
537
|
-
i0.ɵɵelementStart(5, "button",
|
|
538
|
-
i0.ɵɵlistener("click", function
|
|
539
|
-
i0.ɵɵelement(6, "fa-icon",
|
|
496
|
+
i0.ɵɵelementStart(5, "button", 92);
|
|
497
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_div_81_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r75); const ctx_r76 = i0.ɵɵnextContext(); return ctx_r76.removeAllFiles(); });
|
|
498
|
+
i0.ɵɵelement(6, "fa-icon", 93);
|
|
540
499
|
i0.ɵɵtext(7);
|
|
541
500
|
i0.ɵɵpipe(8, "translate");
|
|
542
501
|
i0.ɵɵelementEnd();
|
|
@@ -547,33 +506,33 @@ function HeaderSideComponent_div_80_Template(rf, ctx) { if (rf & 1) {
|
|
|
547
506
|
i0.ɵɵadvance(4);
|
|
548
507
|
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(8, 4, "DOCUMENTMANAGEMENT.CLEARFILES"), " ");
|
|
549
508
|
} }
|
|
550
|
-
function
|
|
551
|
-
i0.ɵɵelement(0, "i",
|
|
509
|
+
function HeaderSideComponent_div_82_i_5_Template(rf, ctx) { if (rf & 1) {
|
|
510
|
+
i0.ɵɵelement(0, "i", 98);
|
|
552
511
|
} }
|
|
553
|
-
function
|
|
554
|
-
i0.ɵɵelementStart(0, "div",
|
|
555
|
-
i0.ɵɵelementStart(1, "button",
|
|
556
|
-
i0.ɵɵelement(2, "fa-icon",
|
|
512
|
+
function HeaderSideComponent_div_82_Template(rf, ctx) { if (rf & 1) {
|
|
513
|
+
i0.ɵɵelementStart(0, "div", 94);
|
|
514
|
+
i0.ɵɵelementStart(1, "button", 95);
|
|
515
|
+
i0.ɵɵelement(2, "fa-icon", 96);
|
|
557
516
|
i0.ɵɵtext(3);
|
|
558
517
|
i0.ɵɵpipe(4, "translate");
|
|
559
|
-
i0.ɵɵtemplate(5,
|
|
518
|
+
i0.ɵɵtemplate(5, HeaderSideComponent_div_82_i_5_Template, 1, 0, "i", 97);
|
|
560
519
|
i0.ɵɵelementEnd();
|
|
561
520
|
i0.ɵɵelementEnd();
|
|
562
521
|
} if (rf & 2) {
|
|
563
|
-
const
|
|
522
|
+
const ctx_r29 = i0.ɵɵnextContext();
|
|
564
523
|
i0.ɵɵadvance(1);
|
|
565
524
|
i0.ɵɵproperty("disabled", true);
|
|
566
525
|
i0.ɵɵadvance(2);
|
|
567
526
|
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(4, 3, "SHELL.IMPORTINGTEXT"), " ");
|
|
568
527
|
i0.ɵɵadvance(2);
|
|
569
|
-
i0.ɵɵproperty("ngIf",
|
|
528
|
+
i0.ɵɵproperty("ngIf", ctx_r29.importingInProgress);
|
|
570
529
|
} }
|
|
571
530
|
const _c10 = function (a0) { return [a0]; };
|
|
572
|
-
function
|
|
573
|
-
i0.ɵɵelement(0, "announcement-dialog",
|
|
531
|
+
function HeaderSideComponent_ng_template_83_Template(rf, ctx) { if (rf & 1) {
|
|
532
|
+
i0.ɵɵelement(0, "announcement-dialog", 99);
|
|
574
533
|
} if (rf & 2) {
|
|
575
|
-
const
|
|
576
|
-
i0.ɵɵproperty("data", i0.ɵɵpureFunction1(1, _c10,
|
|
534
|
+
const data_r78 = ctx.$implicit;
|
|
535
|
+
i0.ɵɵproperty("data", i0.ɵɵpureFunction1(1, _c10, data_r78));
|
|
577
536
|
} }
|
|
578
537
|
/** @dynamic */
|
|
579
538
|
export class HeaderSideComponent extends CustomAppBaseComponent {
|
|
@@ -672,6 +631,20 @@ export class HeaderSideComponent extends CustomAppBaseComponent {
|
|
|
672
631
|
this.actionUpdates$
|
|
673
632
|
.pipe(takeUntil(this.ngDestroyed$), ofType(AuthenticationActionTypes.UserDetailsFetchedAfterCompanyLogin), tap(() => {
|
|
674
633
|
this.reload = true;
|
|
634
|
+
// this.chatService.getRecentChannelMessages().subscribe((recentChannelMessages: any) => {
|
|
635
|
+
// recentChannelMessages.data.forEach(element => {
|
|
636
|
+
// this.messagesUnreadCount += element.unreadMessageCount;
|
|
637
|
+
// });
|
|
638
|
+
// });
|
|
639
|
+
// this.chatService.getRecentIndividualMessages().subscribe((recentColleagueMessages: any) => {
|
|
640
|
+
// var uniq = {};
|
|
641
|
+
// recentColleagueMessages.data = recentColleagueMessages.data.filter(obj => !uniq[obj.id] && (uniq[obj.id] = true));
|
|
642
|
+
// recentColleagueMessages.data.forEach(element => {
|
|
643
|
+
// if(element.id != this.loggedInUserId){
|
|
644
|
+
// this.messagesUnreadCount += element.unreadMessageCount;
|
|
645
|
+
// }
|
|
646
|
+
// });
|
|
647
|
+
// });
|
|
675
648
|
this.getIntroDetails();
|
|
676
649
|
this.ngOnInit();
|
|
677
650
|
this.getNotifications();
|
|
@@ -1470,7 +1443,6 @@ export class HeaderSideComponent extends CustomAppBaseComponent {
|
|
|
1470
1443
|
var company = this.companiesList.filter(x => x.companyId.toLowerCase() == this.cookieService.get(LocalStorageProperties.CompanyId).toLowerCase());
|
|
1471
1444
|
this.selectedCompany = company ? company[0] : null;
|
|
1472
1445
|
this.selectedCompanyName = company ? company[0] ? company[0].companyName : null : null;
|
|
1473
|
-
this.cdRef.detectChanges();
|
|
1474
1446
|
}
|
|
1475
1447
|
navigateToDashboards() {
|
|
1476
1448
|
const userReference = localStorage.getItem(LocalStorageProperties.UserReferenceId);
|
|
@@ -2071,149 +2043,150 @@ HeaderSideComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderS
|
|
|
2071
2043
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.documentPopover = _t.first);
|
|
2072
2044
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.openAnnoucementDialogComponent = _t.first);
|
|
2073
2045
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fileUploadDropzonePopup = _t);
|
|
2074
|
-
} }, inputs: { notificPanel: "notificPanel" }, outputs: { opened: "opened" }, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
2075
|
-
const
|
|
2076
|
-
i0.ɵɵelementStart(0, "
|
|
2046
|
+
} }, inputs: { notificPanel: "notificPanel" }, outputs: { opened: "opened" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 85, vars: 47, consts: [[1, "navbar", "navbar-expand-lg", "shadow-sm", 2, "padding", "0 20px", "height", "65px", "position", "relative", "z-index", "1200", "/* keep in front */\n background", "#ffffff", "border-bottom", "3px solid rgba(255,255,255,0.1)", "backdrop-filter", "blur(10px)"], [1, "container-fluid", 2, "display", "flex", "align-items", "center", "justify-content", "space-between", "padding", "0"], [2, "flex", "0 0 auto"], [3, "reload", "isOpened", "openNewDashboard"], [2, "display", "flex", "align-items", "center", "gap", "10px", "margin-left", "auto"], ["class", "filter-data custom-box language-section", "style", "width:180px; position:relative;", 3, "click", 4, "ngIf"], [4, "ngIf"], ["mat-icon-button", "", "id", "feedTimeSheetComponent", "matTooltipClass", "tooltipClass-mat", 1, "topbar-button-right", "theme-navbar-icon-color", 2, "background", "rgba(255,255,255,0.12)", "border-radius", "10px", 3, "matTooltip", "satPopoverAnchorFor", "click"], ["feedTimeSheet", ""], [2, "color", "#09555c"], ["mat-icon-button", "", "matTooltipClass", "tooltipClass-mat", "class", "topbar-button-right theme-navbar-icon-color", "style", "position:relative; background:rgba(255,255,255,0.12); border-radius:10px;", 3, "matTooltip", "overflow", "matMenuTriggerFor", "click", 4, "ngIf"], ["notification", "matMenu"], ["mat-icon-button", "", "class", "topbar-button-right img-button", "style", "width:24px; height:24px; background:rgba(255,255,255,0.12); border-radius:50%; border:1px solid #09555c; display:flex; align-items:center; justify-content:center; padding:0;", 3, "matMenuTriggerFor", "ngClass", "click", 4, "ngIf"], ["accountMenu", "matMenu"], ["mat-menu-item", "", 3, "click"], ["class", "activity-recorder recording-style", 4, "ngIf"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "matTooltip", "overflow", "click", 4, "ngIf"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "matTooltip", "satPopoverAnchorFor", "click", 4, "ngIf"], ["mat-menu-item", "", 3, "click", 4, "ngIf"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "overflow", "matTooltip", "click", 4, "ngIf"], [1, "feedback-icon", 3, "satPopoverAnchorFor"], ["class", "k-i-loading", "style", "position:fixed; z-index:1300; top:0; left:0; right:0;", 4, "ngIf"], ["verticalAlign", "below", "hasBackdrop", "", "backdropClass", "backdrop-color", "horizontalAlign", "end", 3, "interactiveClose"], ["feedBackPopover", ""], [3, "closeDialog", 4, "ngIf"], [1, "dialog_window", 3, "click"], ["menu2", "matMenu"], ["id", "style-1", 1, "p-0", "m-0", "listof_assets", "store-list-dropdown"], [1, "compact-list"], ["class", "p-0 asset-card", 3, "routerLink", 4, "ngIf"], ["class", "welcome-note", "style", "z-index: 1250; position: fixed; top: 72px; right: 16px;", 4, "ngIf"], ["hasBackdrop", "", "backdropClass", "testrun-popover", "scrollStrategy", "reposition", 3, "interactiveClose"], ["fileUploadDropzonePopover", ""], [1, "p-0", "mr-0", "custom-hrm-dropzone", 2, "max-width", "520px"], ["fxLayout", "row", 1, "card-title-text", "mat-bg-primary", "p-05", 2, "display", "flex", "align-items", "center"], ["fxFlex", "", 1, "text-center", 2, "flex", "1", "text-align", "center"], ["fxFlex", "20px", "fxLayoutAlign", "end center", 2, "width", "20px", "display", "flex", "justify-content", "flex-end"], [1, "inline_edit_close_btn", "btn", 3, "click"], ["icon", "times"], [1, "m-1", 2, "padding", "8px"], ["ngx-dropzone", "", "accept", ".json", 1, "custom-dropzone", "dropzone-height", 3, "change"], ["class", "custom-dropzone-preview", 3, "removable", "removed", 4, "ngFor", "ngForOf"], [1, "m-05", "text-muted", 2, "text-align", "center", "margin-top", "6px"], ["color", "primary", "mode", "determinate", 3, "value", 4, "ngIf"], ["style", "margin-top:6px;", 4, "ngIf"], ["class", "mt-05", "fxLayoutAlign", "center end", "style", "margin-top:10px; display:flex; justify-content:center; gap:8px;", 4, "ngIf"], ["class", "mt-05", "fxLayoutAlign", "center end", "style", "margin-top:10px; display:flex; justify-content:center;", 4, "ngIf"], ["openAnnoucementDialogComponent", ""], [1, "filter-data", "custom-box", "language-section", 2, "width", "180px", "position", "relative", 3, "click"], ["placeholder", "", "name", "selectedCompany", "panelClass", "company-select-panel", 3, "ngModel", "ngModelChange", "selectionChange"], ["fxLayout", "row", "fxLayoutGap", "10px", "style", "display:flex; align-items:center; gap:10px;", 4, "ngIf"], ["fxFlex", "", "fxLayoutAlign", "start center", 1, "search_goalinput", "ml-1", 2, "position", "sticky", "top", "0", "z-index", "1", "background-color", "rgb(0, 0, 0)", "padding", "6px 8px", "display", "flex", "align-items", "center"], ["fxLayoutAlign", "start center", 2, "flex", "1"], [1, "full-width", 2, "width", "100%", "margin", "0"], ["matInput", "", "autocomplete", "off", 1, "search_goal", 3, "placeholder", "ngModel", "ngModelChange"], ["fxLayoutAlign", "end center", 1, "close_icon", "masterdata-search-close", 2, "margin-left", "6px"], ["class", "icon-button mr-05 mt-05", "aria-hidden", "false", "style", "cursor:pointer", 3, "click", 4, "ngIf"], ["matTooltipClass", "tooltipClass-mat", "matTooltipShowDelay", "400", 3, "value", "matTooltip", 4, "ngFor", "ngForOf"], ["fxLayout", "row", "fxLayoutGap", "10px", 2, "display", "flex", "align-items", "center", "gap", "10px"], [3, "ngStyle"], ["fxLayoutAlign", "start center", "matTooltipClass", "tooltipClass-mat", "size", "20", 3, "name", "matTooltip", "src", "isRound"], ["matTooltipClass", "tooltipClass-mat", "matTooltipShowDelay", "400", 1, "language-display", 2, "color", "#09555c", "font-weight", "600", "overflow", "hidden", "text-overflow", "ellipsis", "white-space", "nowrap", 3, "matTooltip"], ["aria-hidden", "false", 1, "icon-button", "mr-05", "mt-05", 2, "cursor", "pointer", 3, "click"], ["matTooltipClass", "tooltipClass-mat", "matTooltipShowDelay", "400", 3, "value", "matTooltip"], ["fxLayout", "row", 1, "cursor-pointer", 2, "display", "flex", "align-items", "center"], ["fxLayoutAlign", "start center", "matTooltipClass", "tooltipClass-mat", "size", "20", 3, "name", "ngStyle", "matTooltip", "src", "isRound"], [1, "ml-05", 2, "margin-left", "8px"], ["mat-icon-button", "", "matTooltipClass", "tooltipClass-mat", 1, "topbar-button-right", "theme-navbar-icon-color", 2, "background", "rgba(255,255,255,0.12)", "border-radius", "10px", 3, "matTooltip", "ngClass", "click"], ["mat-icon-button", "", "matTooltipClass", "tooltipClass-mat", 1, "topbar-button-right", "theme-navbar-icon-color", 2, "background", "rgba(255,255,255,0.12)", "border-radius", "10px", 3, "matTooltip", "click"], ["mat-icon-button", "", "matTooltipClass", "tooltipClass-mat", 1, "topbar-button-right", "theme-navbar-icon-color", 2, "position", "relative", "background", "rgba(255,255,255,0.12)", "border-radius", "10px", 3, "matTooltip", "matMenuTriggerFor", "click"], ["class", "notification-number mat-bg-warn", "style", "position:absolute; top:-2px; right:-2px;", 4, "ngIf"], [1, "notification-number", "mat-bg-warn", 2, "position", "absolute", "top", "-2px", "right", "-2px"], ["mat-icon-button", "", 1, "topbar-button-right", "img-button", 2, "width", "24px", "height", "24px", "background", "rgba(255,255,255,0.12)", "border-radius", "50%", "border", "1px solid #09555c", "display", "flex", "align-items", "center", "justify-content", "center", "padding", "0", 3, "matMenuTriggerFor", "ngClass", "click"], [2, "font-size", "24px", "color", "#09555c"], [1, "activity-recorder", "recording-style"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "matTooltip", "click"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "matTooltip", "satPopoverAnchorFor", "click"], ["fileUploadDropzonePopup", "satPopoverAnchor"], [1, "k-i-loading", 2, "position", "fixed", "z-index", "1300", "top", "0", "left", "0", "right", "0"], [3, "closeDialog"], [1, "p-0", "asset-card", 3, "routerLink"], [1, "hide-content-overflow", "userStory-name-control", "store-dropdown-padding"], [1, "welcome-note", 2, "z-index", "1250", "position", "fixed", "top", "72px", "right", "16px"], [4, "ngIf", "ngIfElse"], ["elseSpan", ""], [1, "custom-dropzone-preview", 3, "removable", "removed"], [1, "custom-dropzone-label"], ["color", "primary", "mode", "determinate", 3, "value"], [2, "margin-top", "6px"], ["fxLayoutAlign", "center end", 1, "mt-05", 2, "margin-top", "10px", "display", "flex", "justify-content", "center", "gap", "8px"], ["mat-button", "", "mat-raised-button", "", "color", "primary", 3, "click"], ["icon", "save", 1, "mr-05"], ["mat-button", "", "mat-raised-button", "", 1, "ml-1", 3, "click"], ["icon", "times", 1, "mr-05"], ["fxLayoutAlign", "center end", 1, "mt-05", 2, "margin-top", "10px", "display", "flex", "justify-content", "center"], ["mat-button", "", "mat-raised-button", "", 1, "ml-1", 3, "disabled"], ["icon", "upload", 1, "mr-05"], ["class", "fa fa-spin fa-spinner", 4, "ngIf"], [1, "fa", "fa-spin", "fa-spinner"], [3, "data"]], template: function HeaderSideComponent_Template(rf, ctx) { if (rf & 1) {
|
|
2047
|
+
const _r79 = i0.ɵɵgetCurrentView();
|
|
2048
|
+
i0.ɵɵelementStart(0, "nav", 0);
|
|
2077
2049
|
i0.ɵɵelementStart(1, "div", 1);
|
|
2078
|
-
i0.ɵɵelementStart(2, "
|
|
2079
|
-
i0.ɵɵ
|
|
2050
|
+
i0.ɵɵelementStart(2, "div", 2);
|
|
2051
|
+
i0.ɵɵelementStart(3, "app-menu", 3);
|
|
2052
|
+
i0.ɵɵlistener("isOpened", function HeaderSideComponent_Template_app_menu_isOpened_3_listener($event) { return ctx.isOpened($event); })("openNewDashboard", function HeaderSideComponent_Template_app_menu_openNewDashboard_3_listener($event) { return ctx.navigateToUrl($event); });
|
|
2080
2053
|
i0.ɵɵelementEnd();
|
|
2081
2054
|
i0.ɵɵelementEnd();
|
|
2082
|
-
i0.ɵɵelement(3, "div", 3);
|
|
2083
2055
|
i0.ɵɵelementStart(4, "div", 4);
|
|
2084
2056
|
i0.ɵɵtemplate(5, HeaderSideComponent_div_5_Template, 13, 9, "div", 5);
|
|
2085
2057
|
i0.ɵɵtemplate(6, HeaderSideComponent_div_6_Template, 5, 4, "div", 6);
|
|
2086
2058
|
i0.ɵɵtemplate(7, HeaderSideComponent_div_7_Template, 5, 3, "div", 6);
|
|
2059
|
+
i0.ɵɵelementStart(8, "button", 7, 8);
|
|
2060
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_Template_button_click_8_listener() { return ctx.openTimeSheet(); });
|
|
2061
|
+
i0.ɵɵpipe(10, "translate");
|
|
2062
|
+
i0.ɵɵelementStart(11, "mat-icon", 9);
|
|
2063
|
+
i0.ɵɵtext(12, "access_time");
|
|
2087
2064
|
i0.ɵɵelementEnd();
|
|
2088
|
-
i0.ɵɵtemplate(8, HeaderSideComponent_div_8_Template, 5, 6, "div", 6);
|
|
2089
|
-
i0.ɵɵtemplate(9, HeaderSideComponent_button_9_Template, 5, 7, "button", 7);
|
|
2090
|
-
i0.ɵɵelementStart(10, "mat-menu", null, 8);
|
|
2091
|
-
i0.ɵɵelement(12, "app-notifications");
|
|
2092
|
-
i0.ɵɵelementEnd();
|
|
2093
|
-
i0.ɵɵtemplate(13, HeaderSideComponent_button_13_Template, 3, 4, "button", 9);
|
|
2094
|
-
i0.ɵɵelementStart(14, "sat-popover", 10, 11);
|
|
2095
|
-
i0.ɵɵelementStart(16, "app-feed-time", 12);
|
|
2096
|
-
i0.ɵɵlistener("closeFeedTimeSheetPopup", function HeaderSideComponent_Template_app_feed_time_closeFeedTimeSheetPopup_16_listener() { return ctx.closeFeedTimeSheet(); });
|
|
2097
2065
|
i0.ɵɵelementEnd();
|
|
2066
|
+
i0.ɵɵtemplate(13, HeaderSideComponent_button_13_Template, 5, 7, "button", 10);
|
|
2067
|
+
i0.ɵɵelementStart(14, "mat-menu", null, 11);
|
|
2068
|
+
i0.ɵɵelement(16, "app-notifications");
|
|
2098
2069
|
i0.ɵɵelementEnd();
|
|
2099
|
-
i0.ɵɵ
|
|
2100
|
-
i0.ɵɵelementStart(
|
|
2101
|
-
i0.ɵɵ
|
|
2102
|
-
i0.ɵɵ
|
|
2103
|
-
i0.ɵɵ
|
|
2070
|
+
i0.ɵɵtemplate(17, HeaderSideComponent_button_17_Template, 3, 2, "button", 12);
|
|
2071
|
+
i0.ɵɵelementStart(18, "mat-menu", null, 13);
|
|
2072
|
+
i0.ɵɵelementStart(20, "button", 14);
|
|
2073
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_Template_button_click_20_listener() { return ctx.navigateToProfile(); });
|
|
2074
|
+
i0.ɵɵelementStart(21, "mat-icon");
|
|
2075
|
+
i0.ɵɵtext(22, "account_box");
|
|
2104
2076
|
i0.ɵɵelementEnd();
|
|
2105
|
-
i0.ɵɵelementStart(
|
|
2106
|
-
i0.ɵɵtext(
|
|
2107
|
-
i0.ɵɵpipe(
|
|
2077
|
+
i0.ɵɵelementStart(23, "span");
|
|
2078
|
+
i0.ɵɵtext(24);
|
|
2079
|
+
i0.ɵɵpipe(25, "translate");
|
|
2108
2080
|
i0.ɵɵelementEnd();
|
|
2109
|
-
i0.ɵɵtemplate(
|
|
2081
|
+
i0.ɵɵtemplate(26, HeaderSideComponent_mat_icon_26_Template, 1, 0, "mat-icon", 15);
|
|
2110
2082
|
i0.ɵɵelementEnd();
|
|
2111
|
-
i0.ɵɵtemplate(26, HeaderSideComponent_button_26_Template, 7, 8, "button", 16);
|
|
2112
2083
|
i0.ɵɵtemplate(27, HeaderSideComponent_button_27_Template, 7, 8, "button", 16);
|
|
2113
|
-
i0.ɵɵtemplate(28, HeaderSideComponent_button_28_Template,
|
|
2114
|
-
i0.ɵɵtemplate(29, HeaderSideComponent_button_29_Template,
|
|
2084
|
+
i0.ɵɵtemplate(28, HeaderSideComponent_button_28_Template, 7, 8, "button", 16);
|
|
2085
|
+
i0.ɵɵtemplate(29, HeaderSideComponent_button_29_Template, 8, 7, "button", 17);
|
|
2115
2086
|
i0.ɵɵtemplate(30, HeaderSideComponent_button_30_Template, 5, 0, "button", 18);
|
|
2116
|
-
i0.ɵɵtemplate(31, HeaderSideComponent_button_31_Template,
|
|
2117
|
-
i0.ɵɵ
|
|
2118
|
-
i0.ɵɵ
|
|
2119
|
-
i0.ɵɵ
|
|
2120
|
-
i0.ɵɵ
|
|
2087
|
+
i0.ɵɵtemplate(31, HeaderSideComponent_button_31_Template, 5, 0, "button", 18);
|
|
2088
|
+
i0.ɵɵtemplate(32, HeaderSideComponent_button_32_Template, 7, 8, "button", 19);
|
|
2089
|
+
i0.ɵɵelementStart(33, "button", 14);
|
|
2090
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_Template_button_click_33_listener() { return ctx.onSignout(); });
|
|
2091
|
+
i0.ɵɵelementStart(34, "mat-icon");
|
|
2092
|
+
i0.ɵɵtext(35, "exit_to_app");
|
|
2093
|
+
i0.ɵɵelementEnd();
|
|
2094
|
+
i0.ɵɵelementStart(36, "span");
|
|
2095
|
+
i0.ɵɵtext(37);
|
|
2096
|
+
i0.ɵɵpipe(38, "translate");
|
|
2097
|
+
i0.ɵɵelementEnd();
|
|
2121
2098
|
i0.ɵɵelementEnd();
|
|
2122
|
-
i0.ɵɵ
|
|
2123
|
-
i0.ɵɵ
|
|
2124
|
-
i0.ɵɵ
|
|
2099
|
+
i0.ɵɵelement(39, "mat-divider");
|
|
2100
|
+
i0.ɵɵelementStart(40, "button", 14);
|
|
2101
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_Template_button_click_40_listener() { i0.ɵɵrestoreView(_r79); const _r16 = i0.ɵɵreference(47); _r16.toggle(); return ctx.openFeedBackDialog(); });
|
|
2102
|
+
i0.ɵɵelementStart(41, "mat-icon", 20);
|
|
2103
|
+
i0.ɵɵtext(42, " sentiment_satisfied_alt ");
|
|
2125
2104
|
i0.ɵɵelementEnd();
|
|
2105
|
+
i0.ɵɵelementStart(43, "span");
|
|
2106
|
+
i0.ɵɵtext(44);
|
|
2126
2107
|
i0.ɵɵelementEnd();
|
|
2127
|
-
i0.ɵɵelement(38, "mat-divider");
|
|
2128
|
-
i0.ɵɵelementStart(39, "button", 14);
|
|
2129
|
-
i0.ɵɵlistener("click", function HeaderSideComponent_Template_button_click_39_listener() { i0.ɵɵrestoreView(_r84); const _r17 = i0.ɵɵreference(46); _r17.toggle(); return ctx.openFeedBackDialog(); });
|
|
2130
|
-
i0.ɵɵelementStart(40, "mat-icon", 20);
|
|
2131
|
-
i0.ɵɵtext(41, " sentiment_satisfied_alt ");
|
|
2132
2108
|
i0.ɵɵelementEnd();
|
|
2133
|
-
i0.ɵɵelementStart(42, "span");
|
|
2134
|
-
i0.ɵɵtext(43);
|
|
2135
2109
|
i0.ɵɵelementEnd();
|
|
2136
2110
|
i0.ɵɵelementEnd();
|
|
2137
2111
|
i0.ɵɵelementEnd();
|
|
2138
2112
|
i0.ɵɵelementEnd();
|
|
2139
|
-
i0.ɵɵtemplate(
|
|
2140
|
-
i0.ɵɵelementStart(
|
|
2141
|
-
i0.ɵɵtemplate(
|
|
2113
|
+
i0.ɵɵtemplate(45, HeaderSideComponent_div_45_Template, 1, 0, "div", 21);
|
|
2114
|
+
i0.ɵɵelementStart(46, "sat-popover", 22, 23);
|
|
2115
|
+
i0.ɵɵtemplate(48, HeaderSideComponent_app_submit_feedback_48_Template, 1, 0, "app-submit-feedback", 24);
|
|
2142
2116
|
i0.ɵɵelementEnd();
|
|
2143
|
-
i0.ɵɵelementStart(
|
|
2144
|
-
i0.ɵɵlistener("click", function
|
|
2145
|
-
i0.ɵɵelementStart(
|
|
2146
|
-
i0.ɵɵelementStart(
|
|
2147
|
-
i0.ɵɵtemplate(52, HeaderSideComponent_mat_card_52_Template, 3, 2, "mat-card", 29);
|
|
2117
|
+
i0.ɵɵelementStart(49, "mat-menu", 25, 26);
|
|
2118
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_Template_mat_menu_click_49_listener($event) { return $event.stopPropagation(); });
|
|
2119
|
+
i0.ɵɵelementStart(51, "mat-card-content", 27);
|
|
2120
|
+
i0.ɵɵelementStart(52, "mat-list", 28);
|
|
2148
2121
|
i0.ɵɵtemplate(53, HeaderSideComponent_mat_card_53_Template, 3, 2, "mat-card", 29);
|
|
2149
2122
|
i0.ɵɵtemplate(54, HeaderSideComponent_mat_card_54_Template, 3, 2, "mat-card", 29);
|
|
2150
|
-
i0.ɵɵtemplate(55, HeaderSideComponent_mat_card_55_Template,
|
|
2123
|
+
i0.ɵɵtemplate(55, HeaderSideComponent_mat_card_55_Template, 3, 2, "mat-card", 29);
|
|
2124
|
+
i0.ɵɵtemplate(56, HeaderSideComponent_mat_card_56_Template, 4, 6, "mat-card", 29);
|
|
2151
2125
|
i0.ɵɵelementEnd();
|
|
2152
2126
|
i0.ɵɵelementEnd();
|
|
2153
2127
|
i0.ɵɵelementEnd();
|
|
2154
|
-
i0.ɵɵtemplate(
|
|
2155
|
-
i0.ɵɵelementStart(
|
|
2156
|
-
i0.ɵɵelementStart(
|
|
2157
|
-
i0.ɵɵelementStart(
|
|
2158
|
-
i0.ɵɵelementStart(
|
|
2159
|
-
i0.ɵɵelementStart(
|
|
2160
|
-
i0.ɵɵtext(
|
|
2161
|
-
i0.ɵɵpipe(
|
|
2128
|
+
i0.ɵɵtemplate(57, HeaderSideComponent_div_57_Template, 6, 4, "div", 30);
|
|
2129
|
+
i0.ɵɵelementStart(58, "sat-popover", 31, 32);
|
|
2130
|
+
i0.ɵɵelementStart(60, "mat-card", 33);
|
|
2131
|
+
i0.ɵɵelementStart(61, "mat-card-title");
|
|
2132
|
+
i0.ɵɵelementStart(62, "div", 34);
|
|
2133
|
+
i0.ɵɵelementStart(63, "div", 35);
|
|
2134
|
+
i0.ɵɵtext(64);
|
|
2135
|
+
i0.ɵɵpipe(65, "translate");
|
|
2162
2136
|
i0.ɵɵelementEnd();
|
|
2163
|
-
i0.ɵɵelementStart(
|
|
2164
|
-
i0.ɵɵelementStart(
|
|
2165
|
-
i0.ɵɵlistener("click", function
|
|
2166
|
-
i0.ɵɵelement(
|
|
2137
|
+
i0.ɵɵelementStart(66, "div", 36);
|
|
2138
|
+
i0.ɵɵelementStart(67, "button", 37);
|
|
2139
|
+
i0.ɵɵlistener("click", function HeaderSideComponent_Template_button_click_67_listener() { return ctx.closeUploadFilePopup(); });
|
|
2140
|
+
i0.ɵɵelement(68, "fa-icon", 38);
|
|
2167
2141
|
i0.ɵɵelementEnd();
|
|
2168
2142
|
i0.ɵɵelementEnd();
|
|
2169
2143
|
i0.ɵɵelementEnd();
|
|
2170
2144
|
i0.ɵɵelementEnd();
|
|
2171
|
-
i0.ɵɵelementStart(
|
|
2172
|
-
i0.ɵɵelementStart(
|
|
2173
|
-
i0.ɵɵlistener("change", function
|
|
2174
|
-
i0.ɵɵelementStart(
|
|
2175
|
-
i0.ɵɵelementStart(
|
|
2176
|
-
i0.ɵɵtext(
|
|
2177
|
-
i0.ɵɵpipe(
|
|
2145
|
+
i0.ɵɵelementStart(69, "div", 39);
|
|
2146
|
+
i0.ɵɵelementStart(70, "div", 40);
|
|
2147
|
+
i0.ɵɵlistener("change", function HeaderSideComponent_Template_div_change_70_listener($event) { return ctx.filesSelected($event); });
|
|
2148
|
+
i0.ɵɵelementStart(71, "ngx-dropzone-label");
|
|
2149
|
+
i0.ɵɵelementStart(72, "span");
|
|
2150
|
+
i0.ɵɵtext(73);
|
|
2151
|
+
i0.ɵɵpipe(74, "translate");
|
|
2178
2152
|
i0.ɵɵelementEnd();
|
|
2179
2153
|
i0.ɵɵelementEnd();
|
|
2180
|
-
i0.ɵɵtemplate(
|
|
2154
|
+
i0.ɵɵtemplate(75, HeaderSideComponent_ngx_dropzone_preview_75_Template, 3, 3, "ngx-dropzone-preview", 41);
|
|
2181
2155
|
i0.ɵɵelementEnd();
|
|
2182
|
-
i0.ɵɵelementStart(
|
|
2183
|
-
i0.ɵɵelementStart(
|
|
2184
|
-
i0.ɵɵtext(
|
|
2156
|
+
i0.ɵɵelementStart(76, "div", 42);
|
|
2157
|
+
i0.ɵɵelementStart(77, "span");
|
|
2158
|
+
i0.ɵɵtext(78, "allowed file extensions : .json");
|
|
2185
2159
|
i0.ɵɵelementEnd();
|
|
2186
2160
|
i0.ɵɵelementEnd();
|
|
2187
|
-
i0.ɵɵtemplate(
|
|
2188
|
-
i0.ɵɵtemplate(
|
|
2189
|
-
i0.ɵɵtemplate(
|
|
2190
|
-
i0.ɵɵtemplate(
|
|
2161
|
+
i0.ɵɵtemplate(79, HeaderSideComponent_mat_progress_bar_79_Template, 1, 1, "mat-progress-bar", 43);
|
|
2162
|
+
i0.ɵɵtemplate(80, HeaderSideComponent_div_80_Template, 2, 3, "div", 44);
|
|
2163
|
+
i0.ɵɵtemplate(81, HeaderSideComponent_div_81_Template, 9, 6, "div", 45);
|
|
2164
|
+
i0.ɵɵtemplate(82, HeaderSideComponent_div_82_Template, 6, 5, "div", 46);
|
|
2191
2165
|
i0.ɵɵelementEnd();
|
|
2192
2166
|
i0.ɵɵelementEnd();
|
|
2193
2167
|
i0.ɵɵelementEnd();
|
|
2194
|
-
i0.ɵɵtemplate(
|
|
2168
|
+
i0.ɵɵtemplate(83, HeaderSideComponent_ng_template_83_Template, 1, 3, "ng-template", null, 47, i0.ɵɵtemplateRefExtractor);
|
|
2195
2169
|
} if (rf & 2) {
|
|
2196
|
-
const
|
|
2197
|
-
i0.ɵɵ
|
|
2198
|
-
i0.ɵɵproperty("reload", ctx.reload);
|
|
2170
|
+
const _r3 = i0.ɵɵreference(9);
|
|
2171
|
+
const _r16 = i0.ɵɵreference(47);
|
|
2199
2172
|
i0.ɵɵadvance(3);
|
|
2173
|
+
i0.ɵɵproperty("reload", ctx.reload);
|
|
2174
|
+
i0.ɵɵadvance(2);
|
|
2200
2175
|
i0.ɵɵproperty("ngIf", ctx.companiesList != null && ctx.companiesList.length > 1);
|
|
2201
2176
|
i0.ɵɵadvance(1);
|
|
2202
2177
|
i0.ɵɵproperty("ngIf", ctx.canAccess_feature_Settings || ctx.canAccess_feature_ViewRoles);
|
|
2203
2178
|
i0.ɵɵadvance(1);
|
|
2204
2179
|
i0.ɵɵproperty("ngIf", ctx.canAccess_feature_MyProjectWork);
|
|
2205
2180
|
i0.ɵɵadvance(1);
|
|
2206
|
-
i0.ɵɵ
|
|
2207
|
-
i0.ɵɵ
|
|
2181
|
+
i0.ɵɵstyleProp("overflow", "visible");
|
|
2182
|
+
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind1(10, 37, "SHELL.LOGTIME"));
|
|
2183
|
+
i0.ɵɵproperty("satPopoverAnchorFor", _r3);
|
|
2184
|
+
i0.ɵɵadvance(5);
|
|
2208
2185
|
i0.ɵɵproperty("ngIf", ctx.newNotificationsCount != 0);
|
|
2209
2186
|
i0.ɵɵadvance(4);
|
|
2210
2187
|
i0.ɵɵproperty("ngIf", ctx.authenticatedUserRecord);
|
|
2211
|
-
i0.ɵɵadvance(1);
|
|
2212
|
-
i0.ɵɵproperty("autoFocus", false)("restoreFocus", false)("interactiveClose", true);
|
|
2213
|
-
i0.ɵɵadvance(2);
|
|
2214
|
-
i0.ɵɵproperty("isFeedTimeSheet", ctx.isFeedTimeSheet);
|
|
2215
2188
|
i0.ɵɵadvance(7);
|
|
2216
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(
|
|
2189
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(25, 39, "SHELL.PROFILE"));
|
|
2217
2190
|
i0.ɵɵadvance(2);
|
|
2218
2191
|
i0.ɵɵproperty("ngIf", ctx.isRecording);
|
|
2219
2192
|
i0.ɵɵadvance(1);
|
|
@@ -2229,9 +2202,9 @@ HeaderSideComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderS
|
|
|
2229
2202
|
i0.ɵɵadvance(1);
|
|
2230
2203
|
i0.ɵɵproperty("ngIf", ctx.canAccess_feature_AlternateSignIn);
|
|
2231
2204
|
i0.ɵɵadvance(5);
|
|
2232
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(
|
|
2205
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(38, 41, "SHELL.SIGNOUT"));
|
|
2233
2206
|
i0.ɵɵadvance(4);
|
|
2234
|
-
i0.ɵɵproperty("satPopoverAnchorFor",
|
|
2207
|
+
i0.ɵɵproperty("satPopoverAnchorFor", _r16);
|
|
2235
2208
|
i0.ɵɵadvance(3);
|
|
2236
2209
|
i0.ɵɵtextInterpolate1("v-", ctx.applicationVersion, "");
|
|
2237
2210
|
i0.ɵɵadvance(1);
|
|
@@ -2253,9 +2226,9 @@ HeaderSideComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderS
|
|
|
2253
2226
|
i0.ɵɵadvance(1);
|
|
2254
2227
|
i0.ɵɵproperty("interactiveClose", false);
|
|
2255
2228
|
i0.ɵɵadvance(6);
|
|
2256
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
2229
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(65, 43, "TESTMANAGEMENT.UPLOADFILES"), " ");
|
|
2257
2230
|
i0.ɵɵadvance(9);
|
|
2258
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(
|
|
2231
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(74, 45, "DOCUMENTMANAGEMENT.DRAGANDDROPFILESHERE"));
|
|
2259
2232
|
i0.ɵɵadvance(2);
|
|
2260
2233
|
i0.ɵɵproperty("ngForOf", ctx.files);
|
|
2261
2234
|
i0.ɵɵadvance(4);
|
|
@@ -2266,7 +2239,7 @@ HeaderSideComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderS
|
|
|
2266
2239
|
i0.ɵɵproperty("ngIf", ctx.filesPresent);
|
|
2267
2240
|
i0.ɵɵadvance(1);
|
|
2268
2241
|
i0.ɵɵproperty("ngIf", ctx.importingInProgress);
|
|
2269
|
-
} }, directives: [i19.
|
|
2242
|
+
} }, directives: [i19.MenuComponent, i20.NgIf, i21.MatButton, i22.MatTooltip, i23.SatPopoverAnchor, i24.MatIcon, i25.MatMenu, i26.NotificationsComponent, i25.MatMenuItem, i27.MatDivider, i23.SatPopover, i28.MatCardContent, i29.MatList, i28.MatCard, i28.MatCardTitle, i30.DefaultLayoutDirective, i30.DefaultFlexDirective, i30.DefaultLayoutAlignDirective, i31.FaIconComponent, i32.NgxDropzoneComponent, i32.ɵb, i20.NgForOf, i33.MatSelect, i34.NgControlStatus, i34.NgModel, i33.MatSelectTrigger, i35.MatFormField, i36.MatInput, i34.DefaultValueAccessor, i30.DefaultLayoutGapDirective, i20.NgStyle, i37.DefaultStyleDirective, i38.SnovasysAvatarComponent, i39.MatOption, i20.NgClass, i37.DefaultClassDirective, i25.MatMenuTrigger, i40.FeedBackSubmissionComponent, i6.RouterLink, i32.NgxDropzonePreviewComponent, i41.MatProgressBar, i42.AnnoucementDialogComponent], pipes: [i5.TranslatePipe, i43.RemoveSpecialCharactersPipe, i44.FetchSizedAndCachedImagePipe, i45.SoftLabelPipe], styles: [".file-or-folder-icon[_ngcontent-%COMP%] {\n width: 50px;\n height: 50px;\n font-size: 50px;\n }\n\n .file-or-folder-name-align[_ngcontent-%COMP%] {\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n text-align: center;\n word-break: break-word;\n }\n\n .dropzone-height[_ngcontent-%COMP%] {\n height: 130px;\n }\n\n .custom-dropzone-preview[_ngcontent-%COMP%] {\n height: 100px !important;\n min-height: 100px !important;\n padding: 0px !important;\n }\n\n \n .cdk-overlay-container[_ngcontent-%COMP%], .cdk-overlay-connected-position-bounding-box[_ngcontent-%COMP%] {\n z-index: 1300 !important;\n }\n\n \n .company-select-panel[_ngcontent-%COMP%] .mat-mdc-option[_ngcontent-%COMP%] {\n line-height: 36px;\n }"], data: { animation: [
|
|
2270
2243
|
trigger('fade', [
|
|
2271
2244
|
transition('void => *', [
|
|
2272
2245
|
style({ opacity: 0 }),
|
|
@@ -2313,4 +2286,4 @@ HeaderSideComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderS
|
|
|
2313
2286
|
type: ViewChild,
|
|
2314
2287
|
args: ["openAnnoucementDialogComponent"]
|
|
2315
2288
|
}] }); })();
|
|
2316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXNpZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2hlbGwtbW9kdWxlLWNvbXBvbmVudHMvc2hlbGwtY29tcG9uZW50cy9zcmMvbGliL3NoZWxsLWNvbXBvbmVudHMvY29tcG9uZW50cy9oZWFkZXItc2lkZS9oZWFkZXItc2lkZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL2hlYWRlci1zaWRlL2hlYWRlci1zaWRlLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBcUUsMkJBQTJCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuTCxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBR00sWUFBWSxFQUMvQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0Isa0JBQWtCLEVBQ2xCLGtDQUFrQyxFQUNsQyxzQkFBc0IsR0FDdkIsTUFBTSxrQ0FBa0MsQ0FBQTtBQUl6QyxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBSTVDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoSCxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsaUNBQWlDLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUs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O3NsQkFxSW1DLE1BQU07c0JBQXJDLE1BQU07dUJBQUMsTUFBTTt3QkFsSVksb0JBQW9CO2tCQUEvQyxTQUFTO21CQUFDLGVBQWU7WUFDSSxlQUFlO2tCQUE1QyxTQUFTO21CQUFDLGlCQUFpQjtZQUNhLHVCQUF1QjtrQkFBL0QsWUFBWTttQkFBQyx5QkFBeUI7WUFDVCxlQUFlO2tCQUE1QyxTQUFTO21CQUFDLGlCQUFpQjtZQUVuQixZQUFZO2tCQUFwQixLQUFLO1lBQ0ksTUFBTTtrQkFBZixNQUFNO1lBQzhDLDhCQUE4QjtrQkFBbEYsU0FBUzttQkFBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VyRGV0YWlsc0ZldGNoZWRBZnRlckxvZ2luLCBVc2VyRGV0YWlsc0ZldGNoZWRBZnRlckNvbXBhbnlMb2dpbiwgRmV0Y2hUaW1lU2hlZXRCdXR0b25EZXRhaWxzLCBSb2xlc0ZldGNoVHJpZ2dlcmVkIH0gZnJvbSAnLi8uLi8uLi9zdG9yZS9hY3Rpb25zL2F1dGhlbnRpY2F0aW9uLmFjdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE5nTW9kdWxlUmVmLFxyXG4gIE5nTW9kdWxlRmFjdG9yeUxvYWRlcixcclxuICBWaWV3Q29udGFpbmVyUmVmLCBWaWV3Q2hpbGRyZW4sIENoYW5nZURldGVjdG9yUmVmLCBUZW1wbGF0ZVJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgUmVjZWl2ZU1lc3NhZ2VUcmlnZ2VyZWQsXHJcbiAgUHJlc2VuY2VFdmVudFRyaWdnZXJlZCxcclxuICBJbml0YWxTdGF0ZU9mVXNlcnNUcmlnZ2VyZWQsXHJcbiAgTWVzc2FnZUFjdGlvblR5cGVzLFxyXG4gIFJlY2VpdmVDaGFubmVsVXBkYXRlTW9kZWxUcmlnZ2VyZWQsXHJcbiAgUmVjZWl2ZVNpZ25hbFRyaWdnZXJlZCxcclxufSBmcm9tIFwiLi4vLi4vc3RvcmUvYWN0aW9ucy9jaGF0LmFjdGlvbnNcIlxyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgU2F0UG9wb3ZlciB9IGZyb20gXCJAbmNzdGF0ZS9zYXQtcG9wb3ZlclwiO1xyXG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSBcIm5neC1jb29raWUtc2VydmljZVwiO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IEdldFVzZXJTdG9yZUlkVHJpZ2dlcmVkLCBBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvYXV0aGVudGljYXRpb24uYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBDbGVhckFsbFVucmVhZE5vdGlmaWNhdGlvbnNUcmlnZ2VyZWQsIENsZWFyVW5yZWFkTm90aWZpY2F0aW9uc1RyaWdnZXJlZCwgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQsIE5vdGlmaWNhdGlvbnNBY3Rpb25UeXBlcywgVXBzZXJ0VW5yZWFkTm90aWZpY2F0aW9uc1RyaWdnZXJlZCB9IGZyb20gXCIuLi8uLi9zdG9yZS9hY3Rpb25zL25vdGlmaWNhdGlvbnMuYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBTdGF0ZSB9IGZyb20gXCIuLi8uLi9zdG9yZS9yZWR1Y2Vycy9pbmRleFwiO1xyXG5pbXBvcnQgKiBhcyBzaGFyZWRNb2R1bGVSZWR1Y2VycyBmcm9tIFwiLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcclxuaW1wb3J0ICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvaGVscGVycy9mb250YXdlc29tZS1pY29ucyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCIuLi9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvY29tbW9uLXVzZWQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBY3Rpb25zLCBvZlR5cGUgfSBmcm9tIFwiQG5ncngvZWZmZWN0c1wiO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbnN0YW50cy9sb2NhbHN0b3JhZ2UtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7IENoYW5uZWxOYW1lcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jaGFubmVsLW5hbWVzJztcclxuaW1wb3J0IHsgV0lORE9XIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2hlbHBlcnMvd2luZG93LmhlbHBlcic7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGltZXNoZWV0RGlzYWJsZW9yRW5hYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RpbWVzaGVldGVuYWJsZWRpc2FibGUnO1xyXG5pbXBvcnQgeyBUaGVtZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RoZW1lcy5tb2RlbCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbk1vZGVsLCBOb3RpZmljYXRpb25PdXRwdXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9Ob3RpZmljYXRpb25zT3V0UHV0TW9kZWwnO1xyXG5pbXBvcnQgeyBDdXN0b21BcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbXBvbmVudHMvY29tcG9uZW50YmFzZSc7XHJcbmltcG9ydCB7IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zb2Z0bGFiZWxzLW1vZGVsJztcclxuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXInO1xyXG5pbXBvcnQgeyBDb21wYW5pZXNMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbXBhbmllc2xpc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBTdG9yZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N0b3JlLW1vZGVsJztcclxuaW1wb3J0IHsgQXBwTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0FwcE5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IFN0b3JlU2VhcmNoTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc3RvcmUtc2VhcmNoLW1vZGVsJztcclxuaW1wb3J0IHsgTmdNb2R1bGVGYWN0b3J5LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFdvcmtJdGVtc0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FsbC13b3JrLWl0ZW1zLWRpYWxvZy9hbGwtd29yay1pdGVtcy1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2hlbGxNb2R1bGVzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NoZWxsLm1vZHVsZXMuc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSBcInVuZGVyc2NvcmVcIjtcclxuaW1wb3J0IHsgRmVlZFRpbWVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9mZWVkLXRpbWUvZmVlZC10aW1lLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25UeXBlSWRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL25vdGlmaWNhdGlvbi10eXBlLWlkcyc7XHJcbmltcG9ydCB7IFVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1VzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgQ2hhbm5lbFJvdXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub3RpZmljYXRpb24tcm91dGVzJztcclxuaW1wb3J0IHsgUm9sZVVwZGF0ZWROb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvUm9sZVVwZGF0ZWROb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBSZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvUmVwb3J0U3VibWl0dGVkTm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgUmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvUmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBNdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcgfSBmcm9tICcuLi8uLi9tb2RlbHMvbXVsdGlDaGFydHNTY2hlZHVsaW5nJztcclxuaW1wb3J0IHsgQXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9Bc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBOZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL05ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBHb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgVXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXJTdG9yeUNvbW1lbnROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFNwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBTcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc3ByaW50UmVwbGFuUmVxdWVzdGVkTW9kZWwnO1xyXG5pbXBvcnQgeyBBbm5vdWNlbWVudERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL25vdGlmaWNhdGlvbnMvYW5ub3VuY2VtZW50LWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dvcmtzcGFjZUxpc3QnO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBOZ3hVaUxvYWRlclNlcnZpY2UsIFNQSU5ORVIgfSBmcm9tICduZ3gtdWktbG9hZGVyJztcclxuaW1wb3J0IHsgTmV3UHJvamVjdEZlYXR1cmVDcmVhdGVkTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvTmV3UHJvamVjdEZlYXR1cmVOb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJTdG9yeUFyY2hpdmVOb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9hcmNoaXZlVXNlclN0b3J5TW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyU3RvcnlQYXJrTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcGFya1VzZXJTdG9yeUlucHV0TW9kZWwnO1xyXG5pbXBvcnQgeyBFeHBvcnRDb25maWd1cmF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwb3J0LWltcG9ydC1jb25maWd1cmF0aW9uL2V4cG9ydC1jb25maWd1cmF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVNb2RlbCwgRmlsZVJlc3VsdE1vZGVsLCBTdG9yZU1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSBcIkB0aGV0cmFkZWVuZ2luZW9yZzEvc25vdmEtZG9jdW1lbnQtbWFuYWdlbWVudFwiO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbnR5cGUgTW9kdWxlV2l0aENvbXBvbmVudFNlcnZpY2UgPSBUeXBlPGFueT4gJiB7IGNvbXBvbmVudFNlcnZpY2U6IFR5cGU8YW55PiB9O1xyXG4vLyBpbXBvcnQgeyBDb25zdGFudFZhcmlhYmxlcyB9IGZyb20gXCIuLi9jb25zdGFudHMvY29uc3RhbnQtdmFyaWFibGVzXCI7XHJcbmltcG9ydCBSZXN1bWFibGUgZnJvbSBcInJlc3VtYWJsZWpzXCI7XHJcbmltcG9ydCB7IEFwaVVybHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXBpLXVybHMnO1xyXG5pbXBvcnQgeyBBdmFpbGFibGVMYW5ncyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hdmFpbGFibGUtbGFuZ3VhZ2VzJztcclxuaW1wb3J0IHsgSW1wb3J0Q29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ltcG9ydC1jb25maWd1cmF0aW9uLW1vZGVsJztcclxuaW1wb3J0IHsgQ2hhdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGF0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZXNzYWdlRGV0YWlscyB9IGZyb20gJy4uLy4uL21vZGVscy9NZXNzYWdlRGV0YWlscyc7XHJcbmltcG9ydCB7IENoYW5uZWxVcGRhdGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9DaGFubmVsVXBkYXRlTW9kZWwnO1xyXG5pbXBvcnQgeyBQdXNoTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICduZy1wdXNoLWl2eSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VUeXBpbmdEZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL01lc3NhZ2VUeXBpbmdEZXRhaWxzJztcclxuaW1wb3J0IHsgUHViTnViQW5ndWxhciB9IGZyb20gJ3B1Ym51Yi1hbmd1bGFyMic7XHJcblxyXG5cclxuaW1wb3J0IHsgSW50cm9Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvSW50cm9Nb2RlbFwiO1xyXG5pbXBvcnQgeyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xlYXZlQXBwbGljYXRpb25Ob3RpZmljdGlvbic7XHJcbmltcG9ydCB7IFNpZ25hbHJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2lnbmFsci5zZXJ2aWNlJztcclxuXHJcbi8qKiBAZHluYW1pYyAqL1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLWhlYWRlci1zaWRlXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9oZWFkZXItc2lkZS50ZW1wbGF0ZS5odG1sXCIsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZmFkZScsIFtcclxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW1xyXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCB9KSxcclxuICAgICAgICBhbmltYXRlKDIwMDAsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXHJcbiAgICAgICAgYW5pbWF0ZSg2MDAwLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpXHJcbiAgICAgIF0pXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBIZWFkZXJTaWRlQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnZmVlZFRpbWVTaGVldCcpIGZlZWRUaW1lU2hlZXRQb3BvdmVyOiBTYXRQb3BvdmVyO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZlZWRCYWNrUG9wb3ZlcicpIGZlZWRCYWNrUG9wT3ZlcjogU2F0UG9wb3ZlcjtcclxuICBAVmlld0NoaWxkcmVuKFwiZmlsZVVwbG9hZERyb3B6b25lUG9wdXBcIikgZmlsZVVwbG9hZERyb3B6b25lUG9wdXA7XHJcbiAgQFZpZXdDaGlsZCgnZG9jdW1lbnRQb3BvdmVyJykgZG9jdW1lbnRQb3BvdmVyOiBTYXRQb3BvdmVyO1xyXG4gIHNvZnRMYWJlbHM6IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbFtdO1xyXG4gIEBJbnB1dCgpIG5vdGlmaWNQYW5lbDtcclxuICBAT3V0cHV0KCkgb3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQFZpZXdDaGlsZChcIm9wZW5Bbm5vdWNlbWVudERpYWxvZ0NvbXBvbmVudFwiKSBwcml2YXRlIG9wZW5Bbm5vdWNlbWVudERpYWxvZ0NvbXBvbmVudDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBzcGlubmVyVHlwZSA9IFNQSU5ORVIuY2lyY2xlO1xyXG4gIHB1YmxpYyBhdmFpbGFibGVMYW5ncyA9IEF2YWlsYWJsZUxhbmdzLmxhbmd1YWdlcztcclxuICBwdWJsaWMgYXZhaWxhYmxlTGFuZ3NNb2JpbGUgPSBbXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6IFwiRW5cIixcclxuICAgICAgY29kZTogXCJlblwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiBcIlRlXCIsXHJcbiAgICAgIGNvZGU6IFwidGVcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogXCJLb1wiLFxyXG4gICAgICBjb2RlOiBcImtvXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6IFwiQXJcIixcclxuICAgICAgY29kZTogXCJhclwiXHJcbiAgICB9XHJcbiAgXTtcclxuICAvLyB0aGVtZU1vZGVsJDogT2JzZXJ2YWJsZTxUaGVtZU1vZGVsPjtcclxuICBjb3VudE9mTm90aWZpY2F0aW9ucyQ6IE9ic2VydmFibGU8bnVtYmVyPjtcclxuICBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25PdXRwdXRNb2RlbFtdPjtcclxuICB1bnJlYWRDb3VudE9mTm90aWZpY2F0aW9ucyQ6IE9ic2VydmFibGU8bnVtYmVyPjtcclxuICBhc3NldElkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gIHVzZXJTdG9yZUlkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gIHRoZW1lTW9kZWw6IFRoZW1lTW9kZWw7XHJcbiAgcmVsb2FkOiBib29sZWFuO1xyXG4gIHB1YmxpYyBuZ0Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGRhc2hib2FyZEZpbHRlcnMgPSB7XHJcbiAgICBwcm9qZWN0SWQ6IG51bGwsXHJcbiAgICB1c2VySWQ6IG51bGwsXHJcbiAgICBnb2FsSWQ6IG51bGwsXHJcbiAgICBpc0RhaWxvZ3VlOiB0cnVlXHJcbiAgfTtcclxuICBwdWJsaWMgZWdyZXRUaGVtZXM7XHJcbiAgcHVibGljIGxheW91dENvbmY6IGFueTtcclxuICBwdWJsaWMgdGltZXNoZWV0RGlzYWJsZW9yRW5hYmxlOiBUaW1lc2hlZXREaXNhYmxlb3JFbmFibGU7XHJcbiAgZG9tYWluczogYW55W107XHJcbiAgbG9hZGluZ0luUHJvZ3Jlc3MkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gIHRpbWVQdW5jaENhcmRTaG93ID0gZmFsc2U7XHJcbiAgc2hvd1RyYWlsUGVyaW9kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYXBwbGljYXRpb25WZXJzaW9uOiBhbnk7XHJcbiAgY29tcGFuaWVzTGlzdCA9IFtdO1xyXG4gIG1lbnVUeXBlOiBzdHJpbmdcclxuICBpc0ZlZWRCYWNrRGlhbG9nOiBib29sZWFuO1xyXG4gIHNlbGVjdGVkTGFuZ05hbWU6IHN0cmluZztcclxuICBjdXJyZW50TGFuZzogc3RyaW5nO1xyXG4gIHNlbGVjdGVkU3RvcmVJZDogc3RyaW5nID0gXCJcIjtcclxuICB1c2VyU3RvcmVJZDogc3RyaW5nO1xyXG4gIHN0b3Jlc0xpc3Q6IFN0b3JlTW9kZWxbXTtcclxuICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xyXG4gIGlzUmVjb3JkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvamVjdFJvbGVUZXh0OiBzdHJpbmcgPSAnUHJvamVjdCByb2xlIGNvbmZpZ3VyYXRpb24nO1xyXG4gIGxvZ2dlZEluVXNlcklkOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGNvbXBhbnk6IGFueTtcclxuICBsb2dnZWRVc2VyRGV0YWlsczogYW55O1xyXG4gIG5vT2ZEYXlzOiBhbnk7XHJcbiAgc2hvd0RlbGV0ZUljb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93RGVsZXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNTdG9yZUFjY2VzczogYm9vbGVhbiA9IHRydWU7XHJcbiAgY29tcGFueUlkOiBzdHJpbmc7XHJcbiAgcmV0dXJuVXJsOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRDb21wYW55TmFtZTogc3RyaW5nO1xyXG4gIHNlbGVjdGVkQ29tcGFueTogQ29tcGFuaWVzTGlzdDtcclxuICB1c2VyTmFtZTogc3RyaW5nO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgYXV0aGVudGljYXRlZFVzZXJSZWNvcmQ6IFVzZXJNb2RlbDtcclxuICBlbXBsb3llZUlkOiBzdHJpbmc7XHJcbiAgaXNGZWVkVGltZVNoZWV0OiBib29sZWFuO1xyXG4gIGRlZmF1bHREYXNoYm9hcmRJZDogc3RyaW5nO1xyXG4gIHRpbWVTaGVldEJ1dHRvbkRldGFpbHMkOiBPYnNlcnZhYmxlPFRpbWVzaGVldERpc2FibGVvckVuYWJsZT5cclxuICBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25PdXRwdXRNb2RlbFtdO1xyXG4gIGFubm91bmNlbWVudElkOiBzdHJpbmc7XHJcbiAgYW5ub3VuY2VOb3RpZmljYXRpb25JZDogc3RyaW5nO1xyXG4gIGRpc3BsYXlXZWxjb21lTm90ZTogYm9vbGVhbjtcclxuICBsb2dnZWRJbkNvdW50OiBhbnk7XHJcbiAgdXNlckZ1bGxOYW1lOiBhbnk7XHJcbiAgZmlsZXM6IEZpbGVbXSA9IFtdO1xyXG4gIGZpbGVzUHJlc2VudDogYm9vbGVhbjtcclxuICBwcm9ncmVzc1ZhbHVlOiBudW1iZXI7XHJcbiAgZmlsZVJlc3VsdE1vZGVsOiBGaWxlUmVzdWx0TW9kZWxbXTtcclxuICBtb2R1bGVUeXBlSWQgPSA5O1xyXG4gIGFueU9wZXJhdGlvbkluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgZmlsZUluZGV4OiBudW1iZXIgPSAwO1xyXG4gIGZpbGVDb3VudGVyOiBudW1iZXIgPSAxO1xyXG4gIHVwbG9hZGVkRmlsZU5hbWVzID0gW107XHJcbiAgaXNGaWxlVXBsb2FkQ29tcGxldGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNGb2xkZXJVcGxvYWRDb21wbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpbXBvcnRpbmdJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9IG51bGw7XHJcbiAgLy8gbWVzc2FnZXNVbnJlYWRDb3VudDogbnVtYmVyID0gMDtcclxuICBjaGFubmVsTGlzdDogYW55O1xyXG4gIHVzZXJDaGFubmVsczogYW55O1xyXG4gIGNvbGxlYWd1ZXNMaXN0OiBhbnk7XHJcbiAgbG9nZ2VkSW5Vc2VyZnVsbE5hbWU6IGFueTtcclxuICBsb2dJblVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDdXJyZW50VXNlcklkXCIpO1xyXG4gIGxvZ2luVXNlcmNoYW5uZWxOYW1lOiBzdHJpbmc7XHJcbiAgcHJldmlvdXNNZXNzYWdlOiBhbnk7XHJcbiAgcHVibGlzaGluZ01lc3NhZ2VPZlVzZXI6IGFueTtcclxuICBuZXdOb3RpZmljYXRpb25zQ291bnQ6IGFueSA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwdXNoTm90aWZpY2F0aW9uczogUHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZSxcclxuICAgIHByaXZhdGUgbmd4U2VydmljZTogTmd4VWlMb2FkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYXlvdXQ6IExheW91dFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8U3RhdGU+LFxyXG4gICAgcHJpdmF0ZSBwdWJudWI6IFB1Yk51YkFuZ3VsYXIsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGlvblVwZGF0ZXMkOiBBY3Rpb25zLFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmVNYW5hZ2VtZW50U2VydmljZTogU3RvcmVNYW5hZ2VtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgU2hlbGxNb2R1bGVzU2VydmljZTogU2hlbGxNb2R1bGVzU2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhdFNlcnZpY2U6IENoYXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzaWduYWxyOiBTaWduYWxyU2VydmljZSxcclxuICAgIEBJbmplY3QoV0lORE9XKSBwcml2YXRlIHdpbmRvdzogV2luZG93XHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgLy8gdGhpcy5zaWduYWxyLmluaXRpYWxpemVTaWduYWxSQ29ubmVjdGlvbigpO1xyXG4gICAgdGhpcy5zaWduYWxyLm5vdGlmaWNhdGlvbnMkLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB0aGlzLm5ld05vdGlmaWNhdGlvbnNDb3VudCA9IGRhdGEgJiYgZGF0YS5sZW5ndGggPyBkYXRhLmxlbmd0aCA6IDApO1xyXG5cclxuICAgIHRoaXMucHVzaE5vdGlmaWNhdGlvbnMucmVxdWVzdFBlcm1pc3Npb24oKTtcclxuICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTtcclxuICAgIC8vIHRoaXMuZ2V0QWN0VHJhY2tlclJlY29yZGVyKCk7XHJcbiAgICBpZiAoKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSAhPSBudWxsICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSAhPSB1bmRlZmluZWQpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5sb2FkTm90aWZpY2F0aW9ucygpO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1cnJlbnRDdWx0dXJlID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRDdWx0dXJlKTtcclxuICAgIGNvbnN0IGNvbXBhbnlsYW4gPSBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55RGV0YWlscykpO1xyXG4gICAgbGV0IGN1cnJlbnRDdWx0dXJlbGFuID0gY29tcGFueWxhbi5sYW5Db2RlO1xyXG5cclxuICAgIGlmIChjdXJyZW50Q3VsdHVyZSA9PSAnJyB8fCBjdXJyZW50Q3VsdHVyZSA9PSBudWxsIHx8IGN1cnJlbnRDdWx0dXJlID09IHVuZGVmaW5lZCB8fCBjdXJyZW50Q3VsdHVyZSA9PT0gJ251bGwnIHx8IGN1cnJlbnRDdWx0dXJlID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBpZiAoY3VycmVudEN1bHR1cmVsYW4gPT0gJycgfHwgY3VycmVudEN1bHR1cmVsYW4gPT0gbnVsbCB8fCBjdXJyZW50Q3VsdHVyZWxhbiA9PSB1bmRlZmluZWQgfHwgY3VycmVudEN1bHR1cmVsYW4gPT09ICdudWxsJyB8fCBjdXJyZW50Q3VsdHVyZWxhbiA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICBjdXJyZW50Q3VsdHVyZSA9ICdlbic7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY3VycmVudEN1bHR1cmUgPSBjdXJyZW50Q3VsdHVyZWxhbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50TGFuZyA9IGN1cnJlbnRDdWx0dXJlO1xyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUsIHRoaXMuY3VycmVudExhbmcsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgb2ZUeXBlKEF1dGhlbnRpY2F0aW9uQWN0aW9uVHlwZXMuVXNlckRldGFpbHNGZXRjaGVkQWZ0ZXJDb21wYW55TG9naW4pLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlbG9hZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmdldEludHJvRGV0YWlscygpO1xyXG4gICAgICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgICAgICAgdGhpcy5nZXROb3RpZmljYXRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmdldFRlYW1NZW1iZXJzKCk7XHJcbiAgICAgICAgICB2YXIgRGVmYXVsdERhc2hib2FyZElkRm9yTG9nZ2VkSW5Vc2VyID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSkgOiBudWxsO1xyXG4gICAgICAgICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcclxuICAgICAgICAgIGlmICghRGVmYXVsdERhc2hib2FyZElkRm9yTG9nZ2VkSW5Vc2VyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnJldHVyblVybF0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh1c2VyUmVmZXJlbmNlICE9IFwibnVsbFwiICYmIHVzZXJSZWZlcmVuY2UgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgRGVmYXVsdERhc2hib2FyZElkRm9yTG9nZ2VkSW5Vc2VyICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIERlZmF1bHREYXNoYm9hcmRJZEZvckxvZ2dlZEluVXNlcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG5cclxuXHJcbiAgICB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgb2ZUeXBlKEF1dGhlbnRpY2F0aW9uQWN0aW9uVHlwZXMuVXNlckRldGFpbHNGZXRjaGVkQWZ0ZXJMb2dpbiksXHJcbiAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBDdXJyZW50VXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBUYXNrIEFzc2lnbm1lbnQgTm90aWZpY2FpdG9ucyBoZXJlLlxyXG4gICAgICAgICAgICAgIGNvbnN0IHRhc2tBc3NpZ25tZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Rhc2tBc3NpZ25tZW50cyArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgdGFzdGF0dXNSZXBvcnRTdWJtaXNzaW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1N0YXR1c1JlcG9ydFN1Ym1pc3Npb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRhc3RhdHVzQ29uZmlnQXNzaWduQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1N0YXR1c0NvbmZpZ0Fzc2lnbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgbXVsdGlDaGFydHNTY2hlZHVsaW5nQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX011bHRpQ2hhcnRzU2NoZWR1bGluZyArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfQXNzZXRBc3NpZ25tZW50ICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zdCBwcm9qZWN0Q3JlYXRlZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9OZXdQcm9qZWN0ICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zdCBwcm9qZWN0QWNjZXNzVG9NZW1iZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUHJvamVjdE1lbWJlclJvbGUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Hb2FsQXBwcm92ZWRGcm9tUmVwbGFuICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zdCB1c2VyU3RvcnlVcGRhdGVDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zdCBBbm5vdW5jZW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfQW5ub3VuY2VtZW50Tm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zdCBwdXJjaGFzZUV4ZWN1dGlvbkFzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1B1cmNoYXNlRXhlY3V0aW9uQXNzaWduVG9FbXBsb3llZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0byBcIiArIHRhc2tBc3NpZ25tZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0byBcIiArIHRhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG8gXCIgKyB0YXN0YXR1c0NvbmZpZ0Fzc2lnbkNoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIGFzc2V0c0Fzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBwcm9qZWN0QWNjZXNzVG9NZW1iZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBnb2FsQXBwcm92ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyB1c2VyU3RvcnlVcGRhdGVDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBBbm5vdW5jZW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBwdXJjaGFzZUV4ZWN1dGlvbkFzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICAgICAgICAgICAgcHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBjaGFubmVsczogW3Rhc2tBc3NpZ25tZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50bywgdGFzdGF0dXNSZXBvcnRTdWJtaXNzaW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICAgICAgICAgICAgdGFzdGF0dXNDb25maWdBc3NpZ25DaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBtdWx0aUNoYXJ0c1NjaGVkdWxpbmdDaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgICAgICAgICAgICBhc3NldHNBc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8sIHByb2plY3RDcmVhdGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgLFxyXG4gICAgICAgICAgICAgICAgICBwcm9qZWN0QWNjZXNzVG9NZW1iZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBnb2FsQXBwcm92ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgICAgICAgICAgICB1c2VyU3RvcnlVcGRhdGVDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBBbm5vdW5jZW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBwdXJjaGFzZUV4ZWN1dGlvbkFzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50b11cclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gQWRkIG90aGVyIHN1YnNjcmlwdGlvbnMgaGVyZS5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlVzZXIgbm90IGxvZ2dlZCBpbiB5ZXQgdG8gYmUgYWJsZSB0byBzdWJzY3JpYmUuXCIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgcm9sZVVwZGF0ZXNDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUm9sZVVwZGF0ZXMgKyBcIjE5QjZGOUZDLTczNzAtNEI5Qy1BMDVDLTNCOEQ4MTlFRUVBRlwiO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvIFwiICsgcm9sZVVwZGF0ZXNDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgcHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgY2hhbm5lbHM6IFtyb2xlVXBkYXRlc0NoYW5uZWxUb1N1YnNjcmliZUludG9dXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSwgMzAwMCk7XHJcbiAgICAgICAgfSkpLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoTm90aWZpY2F0aW9uc0FjdGlvblR5cGVzLkNsZWFyQWxsVW5yZWFkTm90aWZpY2F0aW9uc0NvbXBsZXRlZCksXHJcbiAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldE5vdGlmaWNhdGlvbkFsbCkpO1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IHg7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ub3RpZmljYXRpb25zLmZpbmRJbmRleCgocCkgPT4gSlNPTi5wYXJzZShwLm5vdGlmaWNhdGlvbkpzb24pLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLkFubm91bmNlbWVudF9SZWNlaXZlZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgIC8vdGhpcy5hbm5vdW5jZU5vdGlmaWNhdGlvbklkID0gSlNPTi5wYXJzZSh0aGlzLm5vdGlmaWNhdGlvbnNbaW5kZXhdLm5vdGlmaWNhdGlvbkpzb24pLm5vdGlmaWNhdGlvbklkO1xyXG4gICAgICAgICAgICAgIHRoaXMuYW5ub3VuY2VOb3RpZmljYXRpb25JZCA9IHRoaXMubm90aWZpY2F0aW9uc1tpbmRleF0ubm90aWZpY2F0aW9uSWQ7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcGVuQW5ub3VuY2VtZW50RGlhbG9nKEpTT04ucGFyc2UodGhpcy5ub3RpZmljYXRpb25zW2luZGV4XS5ub3RpZmljYXRpb25Kc29uKSk7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgLy8gdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgLy8gICAucGlwZShcclxuICAgIC8vICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgLy8gICAgIG9mVHlwZShNZXNzYWdlQWN0aW9uVHlwZXMuQ291bnRDb21wbGV0ZWQpLFxyXG4gICAgLy8gICAgIHRhcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgIC8vICAgICAgIHRoaXMubWVzc2FnZXNVbnJlYWRDb3VudCA9IHJlc3VsdC5tZXNzYWdlQ291bnQ7XHJcbiAgICAvLyAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIC8vICAgICB9KVxyXG4gICAgLy8gICApXHJcbiAgICAvLyAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgb2ZUeXBlKE1lc3NhZ2VBY3Rpb25UeXBlcy5SZXF1ZXN0aW5nU3RhdGVPZlVzZXJzQ29tcGxldGVkKSxcclxuICAgICAgICB0YXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN1YlNjcmliaW5nVG9QcmVzZW5jZUNoYW5uZWwoKTtcclxuXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgb2ZUeXBlKE1lc3NhZ2VBY3Rpb25UeXBlcy5NZXNzYWdlQ29tcGxldGVkKSxcclxuICAgICAgICB0YXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICB2YXIgbWVzc2FnZURldGFpbHMgPSByZXN1bHRbJ21lc3NhZ2VEZXRhaWxzJ107XHJcbiAgICAgICAgICB0aGlzLnB1Ymxpc2hpbmdNZXNzYWdlT2ZVc2VyID0gbWVzc2FnZURldGFpbHM7XHJcbiAgICAgICAgICB0aGlzLnB1Ymxpc2hpbmdNZXNzYWdlKCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgb2ZUeXBlKE1lc3NhZ2VBY3Rpb25UeXBlcy5TZW5kQ2hhbm5lbFVwZGF0ZU1vZGVsQ29tcGxldGVkKSxcclxuICAgICAgICB0YXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICB2YXIgY2hhbm5lbFVwZGF0ZU1vZGVsID0gcmVzdWx0WydjaGFubmVsVXBkYXRlTW9kZWwnXTtcclxuICAgICAgICAgIHZhciBsb2dpbkNvbXBhbnlJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55SWRcIik7XHJcbiAgICAgICAgICB0aGlzLnB1Ym51Yi5wdWJsaXNoKHtcclxuICAgICAgICAgICAgY2hhbm5lbDogWyhsb2dpbkNvbXBhbnlJZCArICctJyArIGNoYW5uZWxVcGRhdGVNb2RlbC5jaGFubmVsSWQpXSxcclxuICAgICAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoY2hhbm5lbFVwZGF0ZU1vZGVsKVxyXG4gICAgICAgICAgfSwgZnVuY3Rpb24gKHN0YXR1cywgcmVzb3Buc2UpIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coc3RhdHVzKVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXNvcG5zZSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG5cclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoTWVzc2FnZUFjdGlvblR5cGVzLlNlbmRpbmdTaWduYWxDb21wbGV0ZWQpLFxyXG4gICAgICAgIHRhcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHZhciBtZXNzYWdlVHlwaW5nRGV0YWlscyA9IHJlc3VsdC5tZXNzYWdlVHlwaW5nRGV0YWlscztcclxuICAgICAgICAgIHZhciBzaWduYWxNZXNzYWdlID0gbmV3IE1lc3NhZ2VUeXBpbmdEZXRhaWxzKCk7XHJcbiAgICAgICAgICBzaWduYWxNZXNzYWdlLnN0YXRlID0gbWVzc2FnZVR5cGluZ0RldGFpbHMuc3RhdGU7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlVHlwaW5nRGV0YWlscywgc2lnbmFsTWVzc2FnZSk7XHJcbiAgICAgICAgICAvLyB0aGlzLnB1Ym51Yi5zaWduYWwoe1xyXG4gICAgICAgICAgLy8gICBjaGFubmVsOlttZXNzYWdlVHlwaW5nRGV0YWlscy5wdWJudWJDaGFubmVsTmFtZU9mTWVzc2FnZV0sXHJcbiAgICAgICAgICAvLyAgIG1lc3NhZ2UgOiBKU09OLnN0cmluZ2lmeShzaWduYWxNZXNzYWdlKVxyXG4gICAgICAgICAgLy8gfSlcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIGNvbnN0IHN0b3JlTGlzdG5lciA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiLS0tLS0tLS0tUmVjZWl2ZWQgcHVibnViIG1lc3NhZ2UtLS0tLS0tLS1cIik7XHJcbiAgICAgIC8vdGhpcy50b2FzdHIuaW5mbyhtZXNzYWdlLm1lc3NhZ2UuU3VtbWFyeSk7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgLy9SZWNlaXZpbmcgdGhlIFVzZXIgU3RvcnkgQXNzaWduZWQgTm90aWZpY2F0aW9uXHJcbiAgICAgICAgaWYgKHR5cGVvZiAobWVzc2FnZS5tZXNzYWdlKSA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgdmFyIGluZGV4T2ZDdXJyZW50VG9waWM6IG51bWJlcjtcclxuICAgICAgICAgIHZhciBtZXNzYWdlRGV0YWlsc09iamVjdCA9IEpTT04ucGFyc2UobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgIGlmIChtZXNzYWdlRGV0YWlsc09iamVjdC50ZXh0TWVzc2FnZSB8fCBtZXNzYWdlRGV0YWlsc09iamVjdC5maWxlUGF0aCB8fCBtZXNzYWdlRGV0YWlsc09iamVjdC5tZXNzYWdlVHlwZSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSZWNlaXZlTWVzc2FnZVRyaWdnZXJlZChtZXNzYWdlRGV0YWlsc09iamVjdCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZURldGFpbHNPYmplY3QuaXNGcm9tQ2hhbm5lbEFyY2hpdmUgPT0gdHJ1ZSB8fFxyXG4gICAgICAgICAgICBtZXNzYWdlRGV0YWlsc09iamVjdC5pc0Zyb21SZW1vdmVNZW1iZXIgPT0gdHJ1ZSB8fFxyXG4gICAgICAgICAgICBtZXNzYWdlRGV0YWlsc09iamVjdC5yZWZyZXNoQ2hhbm5lbHMgPT0gdHJ1ZSB8fCBtZXNzYWdlRGV0YWlsc09iamVjdC5pc0Zyb21BZGRNZW1iZXIgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmdldFVzZXJDaGFubmVscygpLnN1YnNjcmliZSgoY2hhbm5lbHM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbm5lbExpc3QgPSBjaGFubmVscy5kYXRhO1xyXG4gICAgICAgICAgICAgIHZhciBsb2dpbkNvbXBhbnlJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55SWRcIik7XHJcbiAgICAgICAgICAgICAgdmFyIGNoYW5uZWxOYW1lID0gbG9naW5Db21wYW55SWQgKyAnLScgKyBtZXNzYWdlRGV0YWlsc09iamVjdC5jaGFubmVsSWQ7XHJcbiAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jaGFubmVsTGlzdC5maW5kSW5kZXgoeCA9PiB4LmlkID09IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmNoYW5uZWxJZCk7XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4ICE9IC0xICYmIChtZXNzYWdlRGV0YWlsc09iamVjdC5yZWZyZXNoQ2hhbm5lbHMgPT0gdHJ1ZSB8fCBtZXNzYWdlRGV0YWlsc09iamVjdC5pc0Zyb21BZGRNZW1iZXIgPT0gdHJ1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgIGNoYW5uZWxzOiBbY2hhbm5lbE5hbWVdXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzOiBbY2hhbm5lbE5hbWVdXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJlY2VpdmVDaGFubmVsVXBkYXRlTW9kZWxUcmlnZ2VyZWQobWVzc2FnZURldGFpbHNPYmplY3QpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCAhPSBcIi9jaGF0XCIgJiYgbWVzc2FnZURldGFpbHNPYmplY3QubWVzc2FnZVR5cGUgIT0gXCJSZWFjdGlvblwiICYmIG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmJvZHkgIT0gbnVsbCAmJiBtZXNzYWdlRGV0YWlsc09iamVjdC50aXRsZSAhPSBudWxsICYmIChtZXNzYWdlRGV0YWlsc09iamVjdC5pc1Bpbm5lZCA9PSBudWxsIHx8IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmlzUGlubmVkID09IHVuZGVmaW5lZCkgJiYgKG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmlzU3RhcnJlZCA9PSBudWxsIHx8IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmlzU3RhcnJlZCA9PSB1bmRlZmluZWQpICYmIG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnNlbmRlclVzZXJJZCAhPSB0aGlzLmxvZ0luVXNlcklkKSB7XHJcbiAgICAgICAgICAgIGlmIChtZXNzYWdlRGV0YWlsc09iamVjdC5jaGFubmVsSWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmdldFVzZXJDaGFubmVscygpLnN1YnNjcmliZSgoY2hhbm5lbHM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFubmVsTGlzdCA9IGNoYW5uZWxzLmRhdGE7XHJcbiAgICAgICAgICAgICAgICBpbmRleE9mQ3VycmVudFRvcGljID0gdGhpcy5jaGFubmVsTGlzdC5maW5kSW5kZXgoeCA9PiB4LmlkID09IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmNoYW5uZWxJZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhPZkN1cnJlbnRUb3BpYyAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAvLyB0aGlzLm5vdGlmaWNhdGlvbk9mQ2hhdChtZXNzYWdlRGV0YWlsc09iamVjdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy5ub3RpZmljYXRpb25PZkNoYXQobWVzc2FnZURldGFpbHNPYmplY3QpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkID09IE5vdGlmaWNhdGlvblR5cGVJZHMuTm90aWZpY2F0aW9uX1dvcmtJdGVtQXNzaWduZWRUb1VzZXIpIHtcclxuICAgICAgICAgICAgdmFyIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uID0gbmV3IFVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3V29ya0l0ZW0gKyB1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25JZDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQodXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24pKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkID09IE5vdGlmaWNhdGlvblR5cGVJZHMuR2VuZXJpY05vdGlmaWNhdGlvbkFjdGl2aXR5KSB7XHJcbiAgICAgICAgICAgIHZhciB1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbiA9IG5ldyBVc2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICB1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAvLyB1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld1dvcmtJdGVtICsgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uSWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLk5vdGlmaWNhdGlvbl9Sb2xlVXBkYXRlZCkge1xyXG4gICAgICAgICAgICB2YXIgcm9sZVVwZGF0ZWROb3RpZmljYXRpb24gPSBuZXcgUm9sZVVwZGF0ZWROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgcm9sZVVwZGF0ZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcm9sZVVwZGF0ZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChyb2xlVXBkYXRlZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5TdGF0dXNfUmVwb3J0X1N1bWl0dGVkKSB7XHJcbiAgICAgICAgICAgIHZhciByZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24gPSBuZXcgUmVwb3J0U3VibWl0dGVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJlcG9ydFN1Ym1pdHRlZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChyZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkID09IE5vdGlmaWNhdGlvblR5cGVJZHMuU3RhdHVzX1JlcG9ydF9Db25maWdfQ3JlYXRlZCkge1xyXG4gICAgICAgICAgICB2YXIgcmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24gPSBuZXcgUmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgcmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChyZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5NdWx0aXBsZV9DaGFydHNfU2NoZWR1bGluZ19jcmVhdGVkKSB7XHJcbiAgICAgICAgICAgIHZhciBtdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcgPSBuZXcgTXVsdGlwbGVDaGFydHNTY2hlZHVsaW5nKCk7XHJcbiAgICAgICAgICAgIG11bHRpcGxlQ2hhcnRzU2NoZWR1bGluZy5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBtdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChtdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcpKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkID09IE5vdGlmaWNhdGlvblR5cGVJZHMuQXNzZXRzX0Fzc2lnbm1lbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbiA9IG5ldyBBc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlJlbWluZGVyX05vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbiA9IG5ldyBBc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLkFubm91bmNlbWVudF9SZWNlaXZlZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbiA9IG5ldyBBc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgICAgLy8gaWYgKG1lc3NhZ2UubWVzc2FnZS5JZCAhPSB0aGlzLmFubm91bmNlTm90aWZpY2F0aW9uSWQpIHtcclxuICAgICAgICAgICAgLy8gICB0aGlzLmFubm91bmNlTm90aWZpY2F0aW9uSWQgPSBtZXNzYWdlLm1lc3NhZ2UuSWQ7XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5vcGVuQW5ub3VuY2VtZW50RGlhbG9nKG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlBlcmZvcm1hbmNlX1JlY2VpdmVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSB8fCBtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUHJvamVjdE1lbWJlclJvbGVBZGRlZE5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbiA9IG5ldyBOZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAgICAgICAgIG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLk5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIHx8IG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Qcm9qZWN0TWVtYmVyUm9sZUFkZGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uID0gbmV3IE5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuR29hbEFwcHJvdmVkRnJvbVJlcGxhbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgZ29hbEFwcHJvdmVkTm90aWZpY2F0aW9uTW9kZWwgPSBuZXcgR29hbEFwcHJvdmVkTm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgZ29hbEFwcHJvdmVkTm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgZ29hbEFwcHJvdmVkTm90aWZpY2F0aW9uTW9kZWwucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChnb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuVVNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsID0gbmV3IFVzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAgICAgICAgIHVzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHVzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQodXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwpKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlB1c2hOb3RpZmljYXRpb25Gb3JVc2VyU3RvcnlDb21tZW50LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCB1c2VyU3RvcnlDb21tZW50Tm90aWZpY2F0aW9uTW9kZWwgPSBuZXcgVXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAgICAgICAgIHVzZXJTdG9yeUNvbW1lbnROb3RpZmljYXRpb25Nb2RlbC5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB1c2VyU3RvcnlDb21tZW50Tm90aWZpY2F0aW9uTW9kZWwucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZCh1c2VyU3RvcnlDb21tZW50Tm90aWZpY2F0aW9uTW9kZWwpKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlNwcmludFN0YXJ0ZWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCA9IG5ldyBTcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgc3ByaW50U3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHNwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHNwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuU3ByaW50UmVxdWVzdGRGb3JSRXBsYW4udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNwcmludFJlcGxhblN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCA9IG5ldyBTcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgc3ByaW50UmVwbGFuU3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHNwcmludFJlcGxhblN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHNwcmludFJlcGxhblN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUHJvamVjdEZlYXR1cmUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1Byb2plY3RGZWF0dXJlQ3JlYXRlZE5vdGlmaWNhdGlvbiA9IG5ldyBOZXdQcm9qZWN0RmVhdHVyZUNyZWF0ZWROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICBuZXdQcm9qZWN0RmVhdHVyZUNyZWF0ZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbmV3UHJvamVjdEZlYXR1cmVDcmVhdGVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobmV3UHJvamVjdEZlYXR1cmVDcmVhdGVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Vc2VyU3RvcnlBcmNoaXZlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdVc2VyU3RvcnlBcmNoaXZlTW9kZWwgPSBuZXcgVXNlclN0b3J5QXJjaGl2ZU5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAgICAgICAgIG5ld1VzZXJTdG9yeUFyY2hpdmVNb2RlbC5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBuZXdVc2VyU3RvcnlBcmNoaXZlTW9kZWwucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChuZXdVc2VyU3RvcnlBcmNoaXZlTW9kZWwpKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlVzZXJTdG9yeVBhcmsudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1VzZXJTdG9yeVBhcmtNb2RlbCA9IG5ldyBVc2VyU3RvcnlQYXJrTm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgbmV3VXNlclN0b3J5UGFya01vZGVsLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIG5ld1VzZXJTdG9yeVBhcmtNb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKG5ld1VzZXJTdG9yeVBhcmtNb2RlbCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLkxlYXZlQXBwbGljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuQXBwcm92ZUxlYXZlQXBwbGljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUmVqZWN0TGVhdmVBcHBsaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5SZXNpZ25hdGlvbk5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5SZXNpZ25hdGlvbkFwcHJvdmFsTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlJlc2lnbmF0aW9uUmVqZWN0aW9uTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLkF1dG9UaW1lU2hlZXRTdWJtaXNzaW9uTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlByb2JhdGlvbkFzc2lnbk5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5SZXZpZXdBc3NpZ25Ub0VtcGxveWVlTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlJldmlld1N1Ym1pdHRlZEJ5RW1wbG95ZWVOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUmV2aWV3SW52aXRhdGlvbk5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5QZXJmb3JtYW5jZVJldmlld1N1Ym1pdHRlZEJ5RW1wbG95ZWVOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUGVyZm9ybWFuY2VSZXZpZXdJbnZpdGF0aW9uTm90aWZpY2F0aW9uTW9kZWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUGVyZm9ybWFuY2VSZXZpZXdBc3NpZ25Ub0VtcGxveWVlTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlB1cmNoYXNlU2hpcG1lbnROb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgcHVyY2hhc2VFeGVjdXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBwdXJjaGFzZUV4ZWN1dGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBwdXJjaGFzZUV4ZWN1dGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuRWRpdFB1cmNoYXNlRXhlY3V0aW9uO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChwdXJjaGFzZUV4ZWN1dGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIFRPRE86IFNlbmQgdGhlc2UgZXJyb3JzIG9udG8gc2VydmVyIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmdcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJGb3VuZCB1bmRldGVjdGVkIG5vdGlmaWNhdGlvbiB0eXBlLiBcIiArIG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgLy8gQWRkIG90aGVyIG5vdGlmaWNhdGlvbnMgaGVyZS5cclxuXHJcbiAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikge1xyXG4gICAgICAgIC8vIFRPRE86IFNlbmQgdGhlc2UgZXhjZXB0aW9ucyBvbnRvIHNlcnZlciBmb3IgZnVydGhlciBwcm9jZXNzaW5nXHJcbiAgICAgICAgY29uc29sZS5sb2coXCJFeGNlcHRpb24gT2NjdXJlZFwiICsgZXhjZXB0aW9uLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc3RhdHVzT2ZVc2VyID0gKHByZXNlbmNlRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUHJlc2VuY2VFdmVudFRyaWdnZXJlZChwcmVzZW5jZUV2ZW50KSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0eXBpbmdTdGF0dXMgPSAoc2lnbmFsRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUmVjZWl2ZVNpZ25hbFRyaWdnZXJlZChzaWduYWxFdmVudCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGF0U2VydmljZS5nZXRQdWJudWJLZXlzKCkuc3Vic2NyaWJlKChrZXlzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5wdWJudWIuaW5pdCh7XHJcbiAgICAgICAgcHVibGlzaEtleToga2V5cy5kYXRhLnB1Ymxpc2hLZXksXHJcbiAgICAgICAgc3Vic2NyaWJlS2V5OiBrZXlzLmRhdGEuc3Vic2NyaWJlS2V5LFxyXG4gICAgICAgIHV1aWQ6IHRoaXMubG9nSW5Vc2VySWRcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jaGF0U2VydmljZS5nZXRBbGxVc2Vyc0ZvclNsYWNrQXBwKCkuc3Vic2NyaWJlKChjb2xsZWFndWVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmNvbGxlYWd1ZXNMaXN0ID0gY29sbGVhZ3Vlcy5kYXRhO1xyXG4gICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuZ2V0VXNlckNoYW5uZWxzKCkuc3Vic2NyaWJlKChjaGFubmVsczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNoYW5uZWxMaXN0ID0gY2hhbm5lbHMuZGF0YTtcclxuICAgICAgICAgIHRoaXMuc2lnbk91dFVzZXJDaGFubmVscygpO1xyXG4gICAgICAgICAgdmFyIGxvZ2luQ29tcGFueUlkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlJZFwiKTtcclxuICAgICAgICAgIGlmICh0aGlzLmNoYW5uZWxMaXN0ICE9IHVuZGVmaW5lZCB8fCB0aGlzLmNoYW5uZWxMaXN0ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaW5kZXgxID0gMDsgaW5kZXgxIDwgdGhpcy5jaGFubmVsTGlzdC5sZW5ndGg7IGluZGV4MSsrKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIGNoYW5uZWxzOiBbKGxvZ2luQ29tcGFueUlkICsgJy0nICsgdGhpcy5jaGFubmVsTGlzdFtpbmRleDFdLmlkKV1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgY2hhbm5lbHM6IFsoJ0NoYW5uZWxVcGRhdGVzLScgKyBsb2dpbkNvbXBhbnlJZCldXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMucHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIGNoYW5uZWxzOiBbKCdVc2VyVXBkYXRlcy0nICsgbG9naW5Db21wYW55SWQpXVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB2YXIgaW5kZXgxMiA9IHRoaXMuY29sbGVhZ3Vlc0xpc3QuZmluZEluZGV4KHggPT4geC51c2VySWQgPT0gdGhpcy5sb2dJblVzZXJJZCk7XHJcbiAgICAgICAgICBpZiAoaW5kZXgxMiA+IC0xKSB7XHJcbiAgICAgICAgICAgIHZhciBuYW1lID0gdGhpcy5jb2xsZWFndWVzTGlzdFtpbmRleDEyXS5mdWxsTmFtZTtcclxuICAgICAgICAgICAgbmFtZSA9IG5hbWUudHJpbSgpO1xyXG4gICAgICAgICAgICBuYW1lID0gdGhpcy5yZXBsYWNlQWxsKG5hbWUsIFwiIFwiLCBcIlwiKVxyXG4gICAgICAgICAgICB0aGlzLmxvZ2luVXNlcmNoYW5uZWxOYW1lID0gKG5hbWUgKyAnLScgKyB0aGlzLmxvZ0luVXNlcklkKTtcclxuICAgICAgICAgICAgdGhpcy5wdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICBjaGFubmVsczogW3RoaXMubG9naW5Vc2VyY2hhbm5lbE5hbWVdXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMucHVibnViLmFkZExpc3RlbmVyKHtcclxuICAgICAgICBzdGF0dXM6IHN0ID0+IHtcclxuICAgICAgICAgIGlmIChzdC5jYXRlZ29yeSA9PT0gXCJQTlVua25vd25DYXRlZ29yeVwiKSB7XHJcbiAgICAgICAgICAgIHZhciBuZXdTdGF0ZSA9IHtcclxuICAgICAgICAgICAgICBuZXc6IFwiZXJyb3JcIlxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnB1Ym51Yi5zZXRTdGF0ZShcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBzdGF0ZTogbmV3U3RhdGVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gZnVuY3Rpb24gKHN0YXR1cykge1xyXG4gICAgICAgICAgICAgIC8vICAgY29uc29sZS5sb2coc3QuZXJyb3JEYXRhLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHNpZ25hbDogc2lnbmFsRXZlbnQgPT4ge1xyXG4gICAgICAgICAgdHlwaW5nU3RhdHVzKHNpZ25hbEV2ZW50KVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHJlc2VuY2U6IHByZXNlbmNlRXZlbnQgPT4ge1xyXG4gICAgICAgICAgc3RhdHVzT2ZVc2VyKHByZXNlbmNlRXZlbnQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJlZCB0byBcIiArIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgc3RvcmVMaXN0bmVyKG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgYXN5bmMgc2lnbk91dFVzZXJDaGFubmVscygpIHtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFt0aGlzLmxvZ2luVXNlcmNoYW5uZWxOYW1lXSB9KTtcclxuICAgIHZhciBsb2dpbkNvbXBhbnlJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55SWRcIik7XHJcbiAgICBpZiAodGhpcy5jaGFubmVsTGlzdCAhPSB1bmRlZmluZWQgfHwgdGhpcy5jaGFubmVsTGlzdCAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNoYW5uZWxMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIGNoYW5uZWxzOiBbKGxvZ2luQ29tcGFueUlkICsgJy0nICsgdGhpcy5jaGFubmVsTGlzdFtpbmRleF0uaWQpXVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7XHJcbiAgICAgIGNoYW5uZWxzOiBbKCdDaGFubmVsVXBkYXRlcy0nICsgbG9naW5Db21wYW55SWQpXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7XHJcbiAgICAgIGNoYW5uZWxzOiBbKCdVc2VyVXBkYXRlcy0nICsgbG9naW5Db21wYW55SWQpXVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzdWJTY3JpYmluZ1RvUHJlc2VuY2VDaGFubmVsKCkge1xyXG4gICAgdmFyIGxvZ2luQ29tcGFueUlkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlJZFwiKTtcclxuICAgIHZhciBwcmVzZW5jZUNoYW5uZWwgPSBcIk1lc3NlbmdlclByZXNlbmNlLVwiICsgbG9naW5Db21wYW55SWQ7XHJcbiAgICBhd2FpdCB0aGlzLnB1Ym51Yi5zdWJzY3JpYmUoe1xyXG4gICAgICBjaGFubmVsczogW3ByZXNlbmNlQ2hhbm5lbF0sXHJcbiAgICAgIHdpdGhQcmVzZW5jZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi5oZXJlTm93KHtcclxuICAgICAgY2hhbm5lbHM6IFtwcmVzZW5jZUNoYW5uZWxdLFxyXG4gICAgICBpbmNsdWRlVVVJRHM6IHRydWUsXHJcbiAgICAgIGluY2x1ZGVTdGF0ZTogdHJ1ZVxyXG4gICAgfSxcclxuICAgICAgKHN0YXR1cywgcmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBJbml0YWxTdGF0ZU9mVXNlcnNUcmlnZ2VyZWQocmVzcG9uc2UpKVxyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICB9XHJcbiAgcHVibGlzaGluZ01lc3NhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5wdWJsaXNoaW5nTWVzc2FnZU9mVXNlci5wdWJudWJDaGFubmVsTmFtZU9mTWVzc2FnZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHVibGlzaGluZ01lc3NhZ2VPZlVzZXIucHVibnViQ2hhbm5lbE5hbWVPZk1lc3NhZ2UuZm9yRWFjaChjaGFubmVsTmFtZSA9PiB7XHJcbiAgICAgICAgdGhpcy5wdWJudWIucHVibGlzaCh7XHJcbiAgICAgICAgICBjaGFubmVsOiBbY2hhbm5lbE5hbWVdLFxyXG4gICAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkodGhpcy5wdWJsaXNoaW5nTWVzc2FnZU9mVXNlcilcclxuICAgICAgICB9LCBmdW5jdGlvbiAoc3RhdHVzLCByZXNvcG5zZSkge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coc3RhdHVzKVxyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2cocmVzb3Buc2UpXHJcbiAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuQW5ub3VuY2VtZW50RGlhbG9nKGFubm91bmNlZCkge1xyXG4gICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcclxuICAgIGxldCBkaWFsb2dJZCA9IFwiYW5ub3VjZW1lbnQtZGlhbG9nXCI7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMub3BlbkFubm91Y2VtZW50RGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIG1pbldpZHRoOiBcIjYwdndcIixcclxuICAgICAgbWF4V2lkdGg6IFwiNjB2d1wiLFxyXG4gICAgICBtaW5IZWlnaHQ6IFwiNTB2aFwiLFxyXG4gICAgICBtYXhIZWlnaHQ6IFwiODB2aFwiLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGlkOiBkaWFsb2dJZCxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGRpYWxvZ0lkOiBkaWFsb2dJZCxcclxuICAgICAgICBhbm5vdW5jZW1lbnRJZDogYW5ub3VuY2VkLkFubm91bmNlbWVudElkLFxyXG4gICAgICAgIGFubm91bmNlbWVudDogYW5ub3VuY2VkLkFubm91bmNlbWVudCxcclxuICAgICAgICBhbm5vdW5jZWRCeTogYW5ub3VuY2VkLkFubm91bmNlZEJ5LFxyXG4gICAgICAgIGFubm91bmNlZEJ5SWQ6IGFubm91bmNlZC5Bbm5vdW5jZWRCeUlkLFxyXG4gICAgICAgIGFubm91bmNlZEJ5VXNlckltYWdlOiBhbm5vdW5jZWQuQW5ub3VuY2VkQnlVc2VySW1hZ2UsXHJcbiAgICAgICAgYW5ub3VuY2VkT246IGFubm91bmNlZC5Bbm5vdW5jZWRPblxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ub3RpZmljYXRpb25zLmZpbmRJbmRleCgocCkgPT4gcC5ub3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gdGhpcy5hbm5vdW5jZU5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy51cHNlcnRSZWFkTm90aWZpY2F0aW9uKHRoaXMubm90aWZpY2F0aW9uc1tpbmRleF0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8gbm90aWZpY2F0aW9uT2ZDaGF0KG1lc3NhZ2VEZXRhaWxzT2JqZWN0KSB7XHJcbiAgLy8gICBpZih0aGlzLnByZXZpb3VzTWVzc2FnZSAhPSBtZXNzYWdlRGV0YWlsc09iamVjdCl7XHJcbiAgLy8gICB0aGlzLm1lc3NhZ2VzVW5yZWFkQ291bnQgKz0gMTtcclxuICAvLyAgIHZhciBpbWFnZWZvck5vdGlmaWNhdGlvbjogYW55O1xyXG4gIC8vICAgaWYgKG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnNlbmRlclByb2ZpbGVJbWFnZSA9PSBudWxsKSB7XHJcbiAgLy8gICAgIGltYWdlZm9yTm90aWZpY2F0aW9uID0gXCJodHRwczovL3BuZ2ltYWdlLm5ldC93cC1jb250ZW50L3VwbG9hZHMvMjAxOC8wNS9hdmF0YXItcG5nLWltYWdlcy0xLnBuZ1wiO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgZWxzZSB7XHJcbiAgLy8gICAgIGltYWdlZm9yTm90aWZpY2F0aW9uID0gbWVzc2FnZURldGFpbHNPYmplY3Quc2VuZGVyUHJvZmlsZUltYWdlO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgLy8gICAgIGJvZHk6IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmJvZHksXHJcbiAgLy8gICAgIGljb246IGltYWdlZm9yTm90aWZpY2F0aW9uLFxyXG4gIC8vICAgICBkYXRhOiB7XHJcbiAgLy8gICAgICAgc2VuZGVyVXNlcklkOiBtZXNzYWdlRGV0YWlsc09iamVjdC5zZW5kZXJVc2VySWQsXHJcbiAgLy8gICAgICAgY2hhbm5lbElkOiBtZXNzYWdlRGV0YWlsc09iamVjdC5jaGFubmVsSWRcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vICAgdGhpcy5wdXNoTm90aWZpY2F0aW9ucy5jcmVhdGUobWVzc2FnZURldGFpbHNPYmplY3QudGl0bGUsIG9wdGlvbnMpLnN1YnNjcmliZShcclxuICAvLyAgICAgcmVzID0+IHtcclxuICAvLyAgICAgICBpZiAocmVzLmV2ZW50LnR5cGUgPT09ICdjbGljaycpIHtcclxuICAvLyAgICAgICAgIHdpbmRvdy5mb2N1cygpO1xyXG4gIC8vICAgICAgICAgaWYgKHRoaXMucm91dGVyLnVybCAhPSAnL2NoYXQnKSB7XHJcbiAgLy8gICAgICAgICAgIGlmIChyZXMubm90aWZpY2F0aW9uLmRhdGEuY2hhbm5lbElkICE9IG51bGwgJiYgcmVzLm5vdGlmaWNhdGlvbi5kYXRhLmNoYW5uZWxJZCAhPSB1bmRlZmluZWQpIHtcclxuICAvLyAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNoYXRJZCwgcmVzLm5vdGlmaWNhdGlvbi5kYXRhLmNoYW5uZWxJZCk7XHJcbiAgLy8gICAgICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DaGF0SWQsIHJlcy5ub3RpZmljYXRpb24uZGF0YS5zZW5kZXJVc2VySWQpO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9jaGF0XCJdKTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0sXHJcbiAgLy8gICAgIGVyciA9PiBjb25zb2xlLmxvZyhlcnIpXHJcbiAgLy8gICApO1xyXG4gIC8vICAgdGhpcy5wcmV2aW91c01lc3NhZ2UgPSBtZXNzYWdlRGV0YWlsc09iamVjdFxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuICB1cHNlcnRSZWFkTm90aWZpY2F0aW9uKHNlbGVjdGVkTm90aWZpY2F0aW9uKSB7XHJcbiAgICBjb25zdCBub3RpZmljYXRpb25zID0gW107XHJcbiAgICBub3RpZmljYXRpb25zLnB1c2goc2VsZWN0ZWROb3RpZmljYXRpb24pO1xyXG4gICAgY29uc3Qgbm90aWlmY2F0aW9ubW9kZWwgPSBKU09OLnBhcnNlKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbkpzb24pO1xyXG4gICAgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5OZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSB8fFxyXG4gICAgICBzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuUHJvamVjdE1lbWJlclJvbGVBZGRlZE5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9wcm9qZWN0c3RhdHVzL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuUHJvamVjdEd1aWQgKyBcIi9hY3RpdmUtZ29hbHNcIl0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuR29hbEFwcHJvdmVkRnJvbVJlcGxhbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicHJvamVjdHMvZ29hbC9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLkdvYWxHdWlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Ob3RpZmljYXRpb25fV29ya0l0ZW1Bc3NpZ25lZFRvVXNlci50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicHJvamVjdHMvd29ya2l0ZW0vXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VyU3RvcnlHdWlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5VU2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicHJvamVjdHMvd29ya2l0ZW0vXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VyU3RvcnlJZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuU3ByaW50U3RhcnRlZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicHJvamVjdHMvc3ByaW50L1wiICsgbm90aWlmY2F0aW9ubW9kZWwuU3ByaW50R3VpZF0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlB1c2hOb3RpZmljYXRpb25Gb3JVc2VyU3RvcnlDb21tZW50LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbS9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlVzZXJTdG9yeUd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLkdvYWxSZXF1ZXN0ZEZvclJFcGxhbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicHJvamVjdHMvZ29hbC9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLkdvYWxHdWlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5TcHJpbnRSZXF1ZXN0ZEZvclJFcGxhbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicHJvamVjdHMvc3ByaW50L1wiICsgbm90aWlmY2F0aW9ubW9kZWwuU3ByaW50R3VpZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuTm90aWZpY2F0aW9uX0FkaG9jV29ya0l0ZW1Bc3NpZ25lZFRvVXNlci50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZGFzaGJvYXJkL2FkaG9jLXdvcmtpdGVtL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuVXNlclN0b3J5R3VpZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuQWRob2NVU2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZGFzaGJvYXJkL2FkaG9jLXdvcmtpdGVtL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuVXNlclN0b3J5SWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlB1cmNoYXNlU2hpcG1lbnROb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiY2xpZW50L3B1cmNoYXNlLWV4ZWN1dGlvbi9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlB1cmNoYXNlR3VpZF0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXBzZXJ0VW5yZWFkTm90aWZpY2F0aW9uc1RyaWdnZXJlZChub3RpZmljYXRpb25zKSk7XHJcblxyXG5cclxuICB9XHJcbiAgbG9hZE5vdGlmaWNhdGlvbnMoKSB7XHJcbiAgICBjb25zdCBDdXJyZW50VXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgLy8gU3Vic2NyaWJlIHRvIFRhc2sgQXNzaWdubWVudCBOb3RpZmljYWl0b25zIGhlcmUuXHJcbiAgICBjb25zdCB0YXNrQXNzaWdubWVudENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9UYXNrQXNzaWdubWVudHMgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdGFzdGF0dXNSZXBvcnRTdWJtaXNzaW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1N0YXR1c1JlcG9ydFN1Ym1pc3Npb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdGFzdGF0dXNDb25maWdBc3NpZ25DaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3RhdHVzQ29uZmlnQXNzaWduICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IG11bHRpQ2hhcnRzU2NoZWR1bGluZ0NoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9NdWx0aUNoYXJ0c1NjaGVkdWxpbmcgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfQXNzZXRBc3NpZ25tZW50ICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHByb2plY3RDcmVhdGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX05ld1Byb2plY3QgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgcHJvamVjdEFjY2Vzc1RvTWVtYmVyQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Byb2plY3RNZW1iZXJSb2xlICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Hb2FsQXBwcm92ZWRGcm9tUmVwbGFuICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHVzZXJTdG9yeVVwZGF0ZUNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Vc2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgQW5ub3VuY2VtZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0Fubm91bmNlbWVudE5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9SZW1pbmRlck5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBQZXJmb3JtYW5jZUNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9QZXJvZm9ybWFuY2VOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdXNlclN0b3J5Q29tbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Vc2VyU3RvcnlDb21tZW50ICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHNwcmludFN0YXJ0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3ByaW50U3RhcnRlZCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBzcHJpbnRSZXBsYW5DaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3ByaW50UmVxdWVzdGVkVG9SZXBsYW4gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgcHJvamVjdEZlYXR1cmVDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUHJvamVjdEZlYXR1cmUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdXNlclN0b3J5QXJjaGl2ZUNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Vc2VyU3RvcnlBcmNoaXZlICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHVzZXJTdG9yeVBhcmtDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVXNlclN0b3J5UGFyayArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBnZW5lcmljQWN0aXZpdHlOb3RpZmljYXRpb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfR2VuZXJpY0FjdGl2aXR5Tm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHB1cmNoYXNlRXhlY3V0aW9uQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfR2VuZXJpY0FjdGl2aXR5Tm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvIFwiICsgdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG8gXCIgKyB0YXN0YXR1c1JlcG9ydFN1Ym1pc3Npb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG8gXCIgKyB0YXN0YXR1c0NvbmZpZ0Fzc2lnbkNoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIHByb2plY3RDcmVhdGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBwcm9qZWN0QWNjZXNzVG9NZW1iZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgdXNlclN0b3J5VXBkYXRlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBBbm5vdW5jZW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIHVzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIHNwcmludFN0YXJ0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIHNwcmludFJlcGxhbkNoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgUmVtaW5kZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIFBlcmZvcm1hbmNlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBwcm9qZWN0RmVhdHVyZUNoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgdXNlclN0b3J5QXJjaGl2ZUNoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgdXNlclN0b3J5UGFya0NoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgZ2VuZXJpY0FjdGl2aXR5Tm90aWZpY2F0aW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBwdXJjaGFzZUV4ZWN1dGlvbkFzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcblxyXG5cclxuICAgIHRoaXMucHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgIGNoYW5uZWxzOiBbdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCB0YXN0YXR1c1JlcG9ydFN1Ym1pc3Npb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgIHRhc3RhdHVzQ29uZmlnQXNzaWduQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgbXVsdGlDaGFydHNTY2hlZHVsaW5nQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICBhc3NldHNBc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8sIHByb2plY3RDcmVhdGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgLFxyXG4gICAgICAgIHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8sIGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgdXNlclN0b3J5VXBkYXRlQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgQW5ub3VuY2VtZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50bywgUmVtaW5kZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgIHVzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBzcHJpbnRTdGFydGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICBzcHJpbnRSZXBsYW5DaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgIFBlcmZvcm1hbmNlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICBwcm9qZWN0RmVhdHVyZUNoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgdXNlclN0b3J5QXJjaGl2ZUNoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgdXNlclN0b3J5UGFya0NoYW5uZWxUb1N1YnNjcmliZUludG8sIGdlbmVyaWNBY3Rpdml0eU5vdGlmaWNhdGlvbkNoYW5uZWxUb1N1YnNjcmliZUludG8sIHB1cmNoYXNlRXhlY3V0aW9uQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvXVxyXG4gICAgfSk7XHJcbiAgICB2YXIgcm9sZVVwZGF0ZXNDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUm9sZVVwZGF0ZXMgKyBcIjE5QjZGOUZDLTczNzAtNEI5Qy1BMDVDLTNCOEQ4MTlFRUVBRlwiO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0byBcIiArIHJvbGVVcGRhdGVzQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICB0aGlzLnB1Ym51Yi5zdWJzY3JpYmUoe1xyXG4gICAgICBjaGFubmVsczogW3JvbGVVcGRhdGVzQ2hhbm5lbFRvU3Vic2NyaWJlSW50b11cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHJlcGxhY2VBbGwoc3RyLCBmaW5kLCByZXBsYWNlKSB7XHJcbiAgICB2YXIgZXNjYXBlZEZpbmQgPSBmaW5kLnJlcGxhY2UoLyhbLiorP149IToke30oKXxcXFtcXF1cXC9cXFxcXSkvZywgXCJcXFxcJDFcIik7XHJcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cChlc2NhcGVkRmluZCwgJ2cnKSwgcmVwbGFjZSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zaWduYWxyLmdldE5vdGlmaWNhdGlvbnNGcm9tQXBpKCkuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmdldFNvZnRMYWJlbHMoKTtcclxuICAgIGlmICh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EaXNwbGF5V2VsQ29tZU5vdGUpICYmIHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EaXNwbGF5V2VsQ29tZU5vdGUpID09ICd0cnVlJykge1xyXG4gICAgICBpZiAoKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSAhPSBudWxsICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSAhPSB1bmRlZmluZWQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMudXNlckZ1bGxOYW1lID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkpLmZ1bGxOYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBjb3VudCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJMb2dnZWRJbkNvdW50KTtcclxuICAgICAgaWYgKGNvdW50ICYmIHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTG9nZ2VkSW5Db3VudCkgIT0gJ251bGwnXHJcbiAgICAgICAgJiYgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJMb2dnZWRJbkNvdW50KSAhPSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIHRoaXMubG9nZ2VkSW5Db3VudCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTG9nZ2VkSW5Db3VudCk7XHJcbiAgICAgICAgaWYgKHRoaXMubG9nZ2VkSW5Db3VudCA9PSAnMScgfHwgdGhpcy5sb2dnZWRJbkNvdW50ID09ICcyJykge1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5V2VsY29tZU5vdGUgPSB0cnVlO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVdlbGNvbWVOb3RlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGlzcGxheVdlbENvbWVOb3RlLCAnZmFsc2UnLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgICAgfSwgODAwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgY3VycmVudEN1bHR1cmUgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUpO1xyXG4gICAgY29uc3QgY29tcGFueWxhbiA9IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzKSk7XHJcbiAgICBsZXQgY3VycmVudEN1bHR1cmVsYW4gPSBjb21wYW55bGFuLmxhbkNvZGU7XHJcblxyXG4gICAgaWYgKGN1cnJlbnRDdWx0dXJlID09ICcnIHx8IGN1cnJlbnRDdWx0dXJlID09IG51bGwgfHwgY3VycmVudEN1bHR1cmUgPT0gdW5kZWZpbmVkIHx8IGN1cnJlbnRDdWx0dXJlID09PSAnbnVsbCcgfHwgY3VycmVudEN1bHR1cmUgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGlmIChjdXJyZW50Q3VsdHVyZWxhbiA9PSAnJyB8fCBjdXJyZW50Q3VsdHVyZWxhbiA9PSBudWxsIHx8IGN1cnJlbnRDdWx0dXJlbGFuID09IHVuZGVmaW5lZCB8fCBjdXJyZW50Q3VsdHVyZWxhbiA9PT0gJ251bGwnIHx8IGN1cnJlbnRDdWx0dXJlbGFuID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIGN1cnJlbnRDdWx0dXJlID0gJ2VuJztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjdXJyZW50Q3VsdHVyZSA9IGN1cnJlbnRDdWx0dXJlbGFuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnRMYW5nID0gY3VycmVudEN1bHR1cmU7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5sb2FkaW5nSW5Qcm9ncmVzcyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmlzVGltZVNoZWV0RmV0Y2hpbmcpKTtcclxuICAgIHRoaXMudGltZVNoZWV0QnV0dG9uRGV0YWlscyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldFRpbWVTaGV0dEJ1dHRvbkRldGFpbHMpKTtcclxuICAgIHRoaXMudGltZVNoZWV0QnV0dG9uRGV0YWlscyRcclxuICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICB0aGlzLnRpbWVzaGVldERpc2FibGVvckVuYWJsZSA9IGRhdGE7XHJcbiAgICAgIH0pXHJcbiAgICAvL3RoaXMuZ2V0VGltZVNoZWV0QnV0dG9ucygpO1xyXG4gICAgLy90aGlzLmdldFVzZXJTdG9yZSgpO1xyXG4gICAgdGhpcy5zaG93VHJhaWxQZXJpb2QgPSBmYWxzZTtcclxuICAgIHRoaXMuZWdyZXRUaGVtZXMgPSB0aGlzLnRoZW1lU2VydmljZS5lZ3JldFRoZW1lcztcclxuICAgIHRoaXMubGF5b3V0Q29uZiA9IHRoaXMubGF5b3V0LmxheW91dENvbmY7XHJcblxyXG4gICAgLy8gdGhpcy50aGVtZU1vZGVsJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0VGhlbWVNb2RlbCkpO1xyXG4gICAgLy90aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBJbml0aWFsaXplQWZ0ZXJMb2dpbkRhdGEoKSk7XHJcbiAgICB2YXIgdXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpKTtcclxuICAgIGlmICh1c2VyICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5tb25pdG9yQ29tcGFueXJlbGF0ZWREZXRhaWxzKHVzZXIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2dnZWRJblVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIHRoaXMuZ2V0RW1wbG95ZWVJZEJ5VXNlcklkKCk7XHJcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIHRoaXMuYXBwbGljYXRpb25WZXJzaW9uID0gZW52aXJvbm1lbnQudmVyc2lvbjtcclxuICAgIHRoaXMubWVudVR5cGUgPSBcIk1haW5cIjtcclxuICAgIHRoaXMuc2VsZWN0ZWRMYW5nTmFtZSA9IHRoaXMuYXZhaWxhYmxlTGFuZ3MuZmluZCh4ID0+IHguY29kZSA9PSB0aGlzLmN1cnJlbnRMYW5nKS5uYW1lO1xyXG4gICAgdGhpcy51c2VyU3RvcmVJZCQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldFVzZXJTdG9yZUlkKSk7XHJcbiAgICB0aGlzLnVzZXJTdG9yZUlkJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy51c2VyU3RvcmVJZCA9IHJlc3VsdDtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzaG93SGlkZURlbGV0ZUJ1dHRvbihkYXRhKSB7XHJcbiAgICB0aGlzLnNob3dEZWxldGVJY29uID0gZGF0YS5pc0RlbW9EYXRhQ2xlYXJlZCA/IGZhbHNlIDogZGF0YS5pc1RvU2hvd0RlbGV0ZUljb247XHJcbiAgfVxyXG5cclxuICBtb25pdG9yQ29tcGFueXJlbGF0ZWREZXRhaWxzKHVzZXIpIHtcclxuICAgIHRoaXMuYXV0aGVudGljYXRlZFVzZXJSZWNvcmQgPSB1c2VyO1xyXG4gICAgdGhpcy5zaG93SGlkZURlbGV0ZUJ1dHRvbih1c2VyKTtcclxuICAgIHRoaXMuY29tcGFuaWVzTGlzdCA9IHVzZXIuY29tcGFuaWVzTGlzdDtcclxuICAgIHRoaXMuZ2V0Q29tcGFueURldGFpbHModXNlci5jb21wYW55SWQpO1xyXG4gICAgdmFyIGNvbXBhbnkgPSB0aGlzLmNvbXBhbmllc0xpc3QuZmlsdGVyKHggPT4geC5jb21wYW55SWQudG9Mb3dlckNhc2UoKSA9PSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueUlkKS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgdGhpcy5zZWxlY3RlZENvbXBhbnkgPSBjb21wYW55ID8gY29tcGFueVswXSA6IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29tcGFueU5hbWUgPSBjb21wYW55ID8gY29tcGFueVswXSA/IGNvbXBhbnlbMF0uY29tcGFueU5hbWUgOiBudWxsIDogbnVsbDtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb0Rhc2hib2FyZHMoKSB7XHJcbiAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpKSA6IG51bGw7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgJiYgdXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHRoaXMuZGVmYXVsdERhc2hib2FyZElkICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNPcGVuZWQoZXZlbnQpIHtcclxuICAgIHRoaXMub3BlbmVkLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29mdExhYmVscygpIHtcclxuICAgIHRoaXMuc29mdExhYmVscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NvZnRMYWJlbHMnKSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblNpZ25vdXQoKSB7XHJcbiAgICB0aGlzLnJlbG9hZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgQ3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIGNvbnN0IHRhc2tBc3NpZ25tZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Rhc2tBc3NpZ25tZW50c1xyXG4gICAgICArIHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIGNvbnN0IHRhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TdGF0dXNSZXBvcnRTdWJtaXNzaW9uXHJcbiAgICAgICsgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgY29uc3QgdGFzdGF0dXNDb25maWdBc3NpZ25DaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3RhdHVzQ29uZmlnQXNzaWduXHJcbiAgICAgICsgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgY29uc3QgbXVsdGlDaGFydHNTY2hlZHVsaW5nQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX011bHRpQ2hhcnRzU2NoZWR1bGluZyArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBhc3NldHNBc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Bc3NldEFzc2lnbm1lbnQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTmV3UHJvamVjdCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwcm9qZWN0QWNjZXNzVG9NZW1iZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUHJvamVjdE1lbWJlclJvbGUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgZ29hbEFwcHJvdmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0dvYWxBcHByb3ZlZEZyb21SZXBsYW4gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdXNlclN0b3J5VXBkYXRlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBBbm5vdW5jZW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfQW5ub3VuY2VtZW50Tm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHVzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVXNlclN0b3J5Q29tbWVudCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBzcHJpbnRTdGFydGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1NwcmludFN0YXJ0ZWQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3Qgc3ByaW50UmVwbGFuQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1NwcmludFJlcXVlc3RlZFRvUmVwbGFuICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IFBlcmZvcm1hbmNlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Blcm9mb3JtYW5jZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9SZW1pbmRlck5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwcm9qZWN0RmVhdHVyZUNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Qcm9qZWN0RmVhdHVyZSArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB1c2VyU3RvcnlBcmNoaXZlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeUFyY2hpdmUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdXNlclN0b3J5UGFya0NoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Vc2VyU3RvcnlQYXJrICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IGdlbmVyaWNBY3Rpdml0eU5vdGlmaWNhdGlvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9HZW5lcmljQWN0aXZpdHlOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgcHVyY2hhc2VFeGVjdXRpb25Bc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9QdXJjaGFzZUV4ZWN1dGlvbkFzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG5cclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFt0YXNrQXNzaWdubWVudENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Rhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Rhc3RhdHVzQ29uZmlnQXNzaWduQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbbXVsdGlDaGFydHNTY2hlZHVsaW5nQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtwcm9qZWN0Q3JlYXRlZENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Byb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW2dvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3VzZXJTdG9yeVVwZGF0ZUNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW0Fubm91bmNlbWVudENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3VzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtzcHJpbnRTdGFydGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbc3ByaW50UmVwbGFuQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbUGVyZm9ybWFuY2VDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Byb2plY3RGZWF0dXJlQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbdXNlclN0b3J5QXJjaGl2ZUNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3VzZXJTdG9yeVBhcmtDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtwdXJjaGFzZUV4ZWN1dGlvbkFzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbdGhpcy5sb2dpblVzZXJjaGFubmVsTmFtZV0gfSk7XHJcbiAgICAvLyB2YXIgbG9naW5Db21wYW55SWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueUlkXCIpO1xyXG4gICAgLy8gdmFyIHByZXNlbmNlQ2hhbm5lbCA9IFwiTWVzc2VuZ2VyUHJlc2VuY2UtXCIgKyBsb2dpbkNvbXBhbnlJZDtcclxuICAgIC8vIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgY2hhbm5lbHM6IFtwcmVzZW5jZUNoYW5uZWxdLFxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyBpZiAodGhpcy5jaGFubmVsTGlzdCAhPSB1bmRlZmluZWQgfHwgdGhpcy5jaGFubmVsTGlzdCAhPSBudWxsKSB7XHJcbiAgICAvLyAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNoYW5uZWxMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgLy8gICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgICAgIGNoYW5uZWxzOiBbKGxvZ2luQ29tcGFueUlkICsgJy0nICsgdGhpcy5jaGFubmVsTGlzdFtpbmRleF0uaWQpXVxyXG4gICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7XHJcbiAgICAvLyAgIGNoYW5uZWxzOiBbKCdDaGFubmVsVXBkYXRlcy0nICsgbG9naW5Db21wYW55SWQpXVxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7XHJcbiAgICAvLyAgIGNoYW5uZWxzOiBbKCdVc2VyVXBkYXRlcy0nICsgbG9naW5Db21wYW55SWQpXVxyXG4gICAgLy8gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbZ2VuZXJpY0FjdGl2aXR5Tm90aWZpY2F0aW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICAvLyB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZUFsbCgpO1xyXG4gICAgLy8gdGhpcy5wdWJudWIucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XHJcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIGxldCBjb21wYW55TmFtZSA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55RGV0YWlscyk7XHJcbiAgICBsZXQgY29tcGFueUlkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlJZCk7XHJcblxyXG4gICAgbGV0IGNvbXBhbnlEZXRhaWxzID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzKTtcclxuICAgIGxldCBjb21wYW55VGhlbWUgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVRoZW1lKTtcclxuICAgIGxldCBVc2VyTG9nZ2VkSW5Db3VudCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTG9nZ2VkSW5Db3VudCk7XHJcbiAgICBsZXQgY3VycmVudEN1bHR1cmUgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLmRlbGV0ZUFsbChlbnZpcm9ubWVudC5jb29raWVQYXRoKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUoXCJzZWxlY3RlZFByb2plY3RzVGFiXCIpO1xyXG5cclxuXHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlckxvZ2dlZEluQ291bnQsIFVzZXJMb2dnZWRJbkNvdW50LCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRDdWx0dXJlLCBjdXJyZW50Q3VsdHVyZSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlciwgbnVsbCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkLCBudWxsLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlOYW1lLCBjb21wYW55TmFtZSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55SWQsIGNvbXBhbnlJZCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkLCBudWxsLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzLCBjb21wYW55RGV0YWlscywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55VGhlbWUsIGNvbXBhbnlUaGVtZSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5TZWFyY2hDbGljaywgbnVsbCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwsIG51bGwsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW5hYmxlVGVhbURhc2hib2FyZCwgbnVsbCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcywgbnVsbCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCwgbnVsbCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJvbGVGZWF0dXJlcywgbnVsbCk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSb2xlRmVhdHVyZXMpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWRpcmVjdGlvblVybCk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNpZGVCYXJNZW51SXRlbXMpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5JbnRyb01vZHVsZXMpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkFkZE9yRWRpdEN1c3RvbUFwcElzUmVxdWlyZWQsIG51bGwsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcblxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3Nlc3Npb25zL3NpZ25pblwiXSk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXRMYW5nKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGUudXNlKHRoaXMuY3VycmVudExhbmcpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpO1xyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUsIHRoaXMuY3VycmVudExhbmcsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLnNlbGVjdGVkTGFuZ05hbWUgPSB0aGlzLmF2YWlsYWJsZUxhbmdzLmZpbmQoeCA9PiB4LmNvZGUgPT0gdGhpcy5jdXJyZW50TGFuZykubmFtZTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVRoZW1lKHRoZW1lKSB7XHJcbiAgICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGVtZSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVOb3RpZmljKCkge1xyXG4gICAgLy8gdGhpcy5nZXRVbnJlYWROb3RpZmljYXRpb25zKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVSZWNvcmRpbmcoKSB7XHJcbiAgICB0aGlzLmdldEFjdFRyYWNrZXJSZWNvcmRlcigpO1xyXG4gICAgdmFyIHVzZXIgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSk7XHJcbiAgICBpZiAodXNlciAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMubW9uaXRvckNvbXBhbnlyZWxhdGVkRGV0YWlscyh1c2VyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE5vdGlmaWNhdGlvbnMoKSB7XHJcbiAgICBjb25zdCBub3RpZmljYXRpb25TZWFyY2hNb2RlbCA9IG5ldyBBcHBOb3RpZmljYXRpb24oKTtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IENsZWFyQWxsVW5yZWFkTm90aWZpY2F0aW9uc1RyaWdnZXJlZChub3RpZmljYXRpb25TZWFyY2hNb2RlbCkpO1xyXG4gICAgdGhpcy51bnJlYWRDb3VudE9mTm90aWZpY2F0aW9ucyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldE5vdGlmaWNhdGlvblVucmVhZFRvdGFsKSk7XHJcbiAgfVxyXG5cclxuICBnZXRVbnJlYWROb3RpZmljYXRpb25zKCkge1xyXG4gICAgY29uc3Qgbm90aWZpY2F0aW9uU2VhcmNoTW9kZWwgPSBuZXcgQXBwTm90aWZpY2F0aW9uKCk7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBDbGVhclVucmVhZE5vdGlmaWNhdGlvbnNUcmlnZ2VyZWQobm90aWZpY2F0aW9uU2VhcmNoTW9kZWwpKTtcclxuICAgIHRoaXMudW5yZWFkQ291bnRPZk5vdGlmaWNhdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXROb3RpZmljYXRpb25VbnJlYWRUb3RhbCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWN0VHJhY2tlclJlY29yZGVyKCkge1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLmdldEFjdFRyYWNrZXJSZWNvcmRlcigpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyRGVtb0RhdGEoKSB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBoZWlnaHQ6IFwiMzAlXCIsXHJcbiAgICAgIHdpZHRoOiBcIjMwJVwiLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgZGlyZWN0aW9uOiBcImx0clwiLFxyXG4gICAgICBkYXRhOiB7fSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGhlIGRpYWxvZyB3YXMgY2xvc2VkXCIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZXhwb3J0Q29uZmlndXJhdGlvbkRpYWxvZ0RhdGEoKSB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEV4cG9ydENvbmZpZ3VyYXRpb25EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgaGVpZ2h0OiBcIjQ1JVwiLFxyXG4gICAgICB3aWR0aDogXCI0MCVcIixcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIGRpcmVjdGlvbjogXCJsdHJcIixcclxuICAgICAgZGF0YToge30sXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlRoZSBkaWFsb2cgd2FzIGNsb3NlZFwiKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2lkZW5hdigpIHtcclxuICAgIGlmICh0aGlzLmxheW91dENvbmYuc2lkZWJhclN0eWxlID09PSBcImNsb3NlZFwiKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxheW91dC5wdWJsaXNoTGF5b3V0Q2hhbmdlKHtcclxuICAgICAgICBzaWRlYmFyU3R5bGU6IFwiZnVsbFwiXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sYXlvdXQucHVibGlzaExheW91dENoYW5nZSh7XHJcbiAgICAgIHNpZGViYXJTdHlsZTogXCJjbG9zZWRcIlxyXG4gICAgfSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwicmVzaXplXCIpKTsgfSwgMjUwKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlKCkge1xyXG4gICAgLy8gY29tcGFjdCAtLT4gZnVsbFxyXG4gICAgaWYgKHRoaXMubGF5b3V0Q29uZi5zaWRlYmFyU3R5bGUgPT09IFwiY29tcGFjdFwiKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxheW91dC5wdWJsaXNoTGF5b3V0Q2hhbmdlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHNpZGViYXJTdHlsZTogXCJmdWxsXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgdHJhbnNpdGlvbkNsYXNzOiB0cnVlIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAqIC0tPiBjb21wYWN0XHJcbiAgICB0aGlzLmxheW91dC5wdWJsaXNoTGF5b3V0Q2hhbmdlKFxyXG4gICAgICB7XHJcbiAgICAgICAgc2lkZWJhclN0eWxlOiBcImNvbXBhY3RcIlxyXG4gICAgICB9LFxyXG4gICAgICB7IHRyYW5zaXRpb25DbGFzczogdHJ1ZSB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRpbWVTaGVldEJ1dHRvbnMoKSB7XHJcbiAgICAvL3RoaXMubG9hZGluZ0luUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlLmdldFRpbWVTaGVldEVuYWJsZWRJbmZvcm1hdGlvbigpLnBpcGUodGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSlcclxuICAgIC8vICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKGRhdGEgPT09IFwiXCIgfHwgZGF0YSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAvLyAgICAgICByZXR1cm47XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHRoaXMudGltZXNoZWV0RGlzYWJsZW9yRW5hYmxlID0gSlNPTi5wYXJzZShkYXRhKTtcclxuICAgIC8vICAgICB0aGlzLmxvYWRpbmdJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAvLyAgIH0pO1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgRmV0Y2hUaW1lU2hlZXRCdXR0b25EZXRhaWxzKCkpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VGZWVkVGltZVNoZWV0KCkge1xyXG4gICAgdGhpcy5mZWVkVGltZVNoZWV0UG9wb3Zlci5jbG9zZSgpO1xyXG4gICAgdGhpcy5pc0ZlZWRUaW1lU2hlZXQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9wZW5UaW1lU2hlZXQoKSB7XHJcbiAgICBjb25zdCBwcm9qZWN0RGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbihGZWVkVGltZURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBtaW5XaWR0aDogJzMwdncnLFxyXG4gICAgICBoZWlnaHQ6ICczNXZoJyxcclxuICAgICAgZGF0YTogIXRoaXMuaXNGZWVkVGltZVNoZWV0XHJcbiAgICAgIC8vZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIHByb2plY3REaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNsb3NlRmVlZFRpbWVTaGVldCgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdldFRpbWVTaGVldEJ1dHRvbnMoKTtcclxuICAgIC8vIHRoaXMuaXNGZWVkVGltZVNoZWV0ID0gIXRoaXMuaXNGZWVkVGltZVNoZWV0O1xyXG4gIH1cclxuXHJcbiAgLy8gZ2V0QWxsTWVudUl0ZW1zKCkge1xyXG4gIC8vICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkKE1lbnVDYXRlZ29yaWVzLk1haW4pKTtcclxuICAvLyB9XHJcblxyXG4gIGNoYW5nZU1lbnVUeXBlKHR5cGUpIHtcclxuICAgIHRoaXMubWVudVR5cGUgPSB0eXBlO1xyXG4gIH1cclxuXHJcbiAgb3BlbkZlZWRCYWNrRGlhbG9nKCkge1xyXG4gICAgdGhpcy5pc0ZlZWRCYWNrRGlhbG9nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNsb3NlRmVlZEJhY2tsb2dEaWFsb2coKSB7XHJcbiAgICB0aGlzLmlzRmVlZEJhY2tEaWFsb2cgPSBmYWxzZTtcclxuICAgIHRoaXMuZmVlZEJhY2tQb3BPdmVyLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDb21wYW55RGV0YWlscyhjb21wYW55SWQ6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzKSAmJiB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55SWQpKSB7XHJcbiAgICAgIHRoaXMuY29tcGFueSA9IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuY29tcGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0Q29tcGFueUJ5SWQoY29tcGFueUlkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmNvbXBhbnkgPSByZXNwb25zZS5kYXRhO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jb21wYW55LmlzUmVtb3RlQWNjZXNzID09IDEgJiYgdGhpcy5jb21wYW55LnRyYWlsRGF5cyA+IDApIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1RyYWlsUGVyaW9kID0gdHJ1ZTtcclxuICAgICAgICAgIC8vIHRoaXMubm9PZkRheXM9dGhpcy5jb21wYW55Lm5vT2ZEYXlzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jb21wYW55LmlzRGVtb0RhdGEgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5zaG93RGVsZXRlID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93RGVsZXRlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbXBhbnkuaXNEZW1vRGF0YSA9PSBmYWxzZSB8fCB0aGlzLmNvbXBhbnkuaXNEZW1vRGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGFueSAhPSBudWxsICYmIHRoaXMuY29tcGFueSAhPSB1bmRlZmluZWQgJiYgdGhpcy5jb21wYW55LmluZHVzdHJ5SWQudG9VcHBlckNhc2UoKSA9PSAnNzQ5OUY1RTMtMEVGMi00MDQ0LUI4NDAtMjQxMUI2ODMwMkY5JylcclxuICAgICAgICAgIHRoaXMuaXNTdG9yZUFjY2VzcyA9IGZhbHNlO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuaXNTdG9yZUFjY2VzcyA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbXBhbnkuaXNSZW1vdGVBY2Nlc3MgPT0gMSAmJiB0aGlzLmNvbXBhbnkudHJhaWxEYXlzID4gMCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1RyYWlsUGVyaW9kID0gdHJ1ZTtcclxuICAgICAgICAvLyB0aGlzLm5vT2ZEYXlzPXRoaXMuY29tcGFueS5ub09mRGF5cztcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21wYW55LmlzRGVtb0RhdGEgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuc2hvd0RlbGV0ZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tcGFueS5pc0RlbW9EYXRhID09IGZhbHNlIHx8IHRoaXMuY29tcGFueS5pc0RlbW9EYXRhID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNob3dEZWxldGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21wYW55ICE9IG51bGwgJiYgdGhpcy5jb21wYW55ICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbXBhbnkuaW5kdXN0cnlJZC50b1VwcGVyQ2FzZSgpID09ICc3NDk5RjVFMy0wRUYyLTQwNDQtQjg0MC0yNDExQjY4MzAyRjknKVxyXG4gICAgICAgIHRoaXMuaXNTdG9yZUFjY2VzcyA9IGZhbHNlO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5pc1N0b3JlQWNjZXNzID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFVzZXJTdG9yZSgpIHtcclxuICAgIGxldCBzdG9yZVNlYXJjaE1vZGVsID0gbmV3IFN0b3JlU2VhcmNoTW9kZWwoKTtcclxuICAgIHN0b3JlU2VhcmNoTW9kZWwuaXNBcmNoaXZlZCA9IGZhbHNlO1xyXG4gICAgc3RvcmVTZWFyY2hNb2RlbC5pc0RlZmF1bHQgPSB0cnVlO1xyXG4gICAgc3RvcmVTZWFyY2hNb2RlbC5pc0NvbXBhbnkgPSBmYWxzZTtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldFVzZXJTdG9yZUlkVHJpZ2dlcmVkKHN0b3JlU2VhcmNoTW9kZWwpKTtcclxuICB9XHJcblxyXG4gIGdvVG9Vc2VyU3RvcmUoKSB7XHJcbiAgICBpZiAodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpKVxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkb2N1bWVudC9zdG9yZVwiLCB0aGlzLnVzZXJTdG9yZUlkLCB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCkudG9Mb3dlckNhc2UoKV0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWZ0ZXJsb2dpbihlKSB7XHJcbiAgICB0aGlzLmNvbXBhbnlJZCA9IGUuY29tcGFueUlkXHJcbiAgICB0aGlzLnNlbGVjdGVkQ29tcGFueU5hbWUgPSBlLmNvbXBhbnlOYW1lO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbXBhbnkgPSBlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2VsZWN0Q29tcGFueShlKSB7XHJcbiAgICBpZiAodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlJZCkudG9Mb3dlckNhc2UoKSAhPSBlLmNvbXBhbnlJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yZWxvYWQgPSBmYWxzZTtcclxuICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAgIHRoaXMuY29tcGFueUlkID0gZS5jb21wYW55SWQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYW55TmFtZSA9IGUuY29tcGFueU5hbWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYW55ID0gZTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gbnVsbDtcclxuICAgICAgdGhpcy5uZ3hTZXJ2aWNlLnN0YXJ0KCk7XHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuY29tcGFueUxvZ2luKHRoaXMuc2VsZWN0ZWRDb21wYW55KS5zdWJzY3JpYmUoYXN5bmMgKHVzZXJUb2tlbjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHVzZXJUb2tlbi5zdWNjZXNzKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uU2lnbm91dCgpO1xyXG4gICAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXIsIGUuYXV0aFRva2VuLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQsIGUudXNlcklkLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VyLCB1c2VyVG9rZW4uZGF0YS5hdXRoVG9rZW4sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KFwiRGVmYXVsdERhc2hib2FyZFwiLCB1c2VyVG9rZW4uZGF0YS5kZWZhdWx0RGFzaGJvYXJkSWQgPyBKU09OLnN0cmluZ2lmeSh1c2VyVG9rZW4uZGF0YS5kZWZhdWx0RGFzaGJvYXJkSWQud29ya3NwYWNlSWQpIDogbnVsbCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoJ0NvbXBhbnlEZXRhaWxzJywgSlNPTi5zdHJpbmdpZnkodXNlclRva2VuLmRhdGEuY29tcGFueURldGFpbHMpKTtcclxuICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoJ0NvbXBhbmllc0xpc3QnLCBKU09OLnN0cmluZ2lmeSh1c2VyVG9rZW4uZGF0YS51c2Vyc01vZGVsLmNvbXBhbmllc0xpc3QpKSxcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1JvbGVGZWF0dXJlcycsIEpTT04uc3RyaW5naWZ5KHVzZXJUb2tlbi5kYXRhLnJvbGVGZWF0dXJlcykpO1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJVc2VyTW9kZWxcIiwgSlNPTi5zdHJpbmdpZnkodXNlclRva2VuLmRhdGEudXNlcnNNb2RlbCkpO1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1NvZnRMYWJlbHMnLCBKU09OLnN0cmluZ2lmeSh1c2VyVG9rZW4uZGF0YS5zb2Z0TGFiZWxzKSk7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIkNvbXBhbnlTZXR0aW5nc1wiLCBKU09OLnN0cmluZ2lmeSh1c2VyVG9rZW4uZGF0YS5jb21wYW55U2V0dGluZ3MpKTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiRnJvbUxvZ0luXCIsIEpTT04uc3RyaW5naWZ5KHRydWUpKTtcclxuICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TmFtZSwgdXNlclRva2VuLmRhdGEudXNlcnNNb2RlbC5jb21wYW55TmFtZSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55SWQsIHVzZXJUb2tlbi5kYXRhLnVzZXJzTW9kZWwuY29tcGFueUlkLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgICAgLy90aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVc2VyRGV0YWlsc0ZldGNoZWRBZnRlckNvbXBhbnlMb2dpbih1c2VyVG9rZW4uZGF0YS51c2Vyc01vZGVsKSk7XHJcbiAgICAgICAgICB0aGlzLnNldERhZmF1bHRMYW5ndWFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5neFNlcnZpY2Uuc3RvcCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERhZmF1bHRMYW5ndWFnZSgpIHtcclxuICAgIGNvbnN0IGNvbXBhbnkgPSBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55RGV0YWlscykpO1xyXG4gICAgbGV0IGN1cnJlbnRDdWx0dXJlID0gY29tcGFueS5sYW5Db2RlO1xyXG4gICAgaWYgKGN1cnJlbnRDdWx0dXJlID09IG51bGwgfHwgY3VycmVudEN1bHR1cmUgPT0gdW5kZWZpbmVkIHx8IGN1cnJlbnRDdWx0dXJlID09PSAnbnVsbCcgfHwgY3VycmVudEN1bHR1cmUgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGN1cnJlbnRDdWx0dXJlID0gJ2VuJztcclxuICAgIH1cclxuICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRDdWx0dXJlLCBjdXJyZW50Q3VsdHVyZSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY3VycmVudExhbmcgPSBjdXJyZW50Q3VsdHVyZTtcclxuICAgIHRoaXMudHJhbnNsYXRlLnVzZSh0aGlzLmN1cnJlbnRMYW5nKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRFbXBsb3llZUlkQnlVc2VySWQoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb1Byb2ZpbGUoKSB7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0VXNlckJ5SWQodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpLnRvTG93ZXJDYXNlKCkpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5lbXBsb3llZUlkID0gcmVzcG9uc2UuZGF0YS5lbXBsb3llZUlkO1xyXG4gICAgICAgIGlmICh0aGlzLmVtcGxveWVlSWQpIHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9wcm9maWxlXCIsIHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKS50b0xvd2VyQ2FzZSgpLCBcIm92ZXJ2aWV3XCJdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvbXlQcm9maWxlXCIsIHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKS50b0xvd2VyQ2FzZSgpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgbmF2aWdhdGVUb01lc3NlbmdlcigpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9jaGF0XCJdKTtcclxuICB9XHJcblxyXG5cclxuICBuYXZpZ2F0ZVRvU3RhdHVzUmVwb3J0KCkge1xyXG4gICAgY29uc3QgcHJvamVjdERpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oV29ya0l0ZW1zRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIG1pbldpZHRoOiAnODJ2dycsXHJcbiAgICAgIGhlaWdodDogJzgydmgnLFxyXG4gICAgICBkYXRhOiB7IGRhc2hib2FyZEZpbHRlcnM6IHRoaXMuZGFzaGJvYXJkRmlsdGVycyB9LFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgcHJvamVjdERpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xyXG4gIH1cclxuICBuYXZpZ2F0ZVRvU2V0dGluZ3MoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvc2V0dGluZ3NcIl0pO1xyXG4gIH1cclxuXHJcbiAgYWx0ZXJuYXRlU2lnbkluKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3Nlc3Npb25zL2dlbmVyaWMtc2lnbmluXCJdKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9Sb2xlcygpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9yb2xlbWFuYWdlbWVudC9yb2xlbWFuYWdlbWVudFwiXSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvVXJsKHdvcmtzcGFjZUlkKSB7XHJcbiAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB3b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB3b3Jrc3BhY2VJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRVcGxvYWRGaWxlUG9wdXBPcGVuKGZpbGVVcGxvYWREcm9wem9uZVBvcHVwKSB7XHJcbiAgICBmaWxlVXBsb2FkRHJvcHpvbmVQb3B1cC5vcGVuUG9wb3ZlcigpO1xyXG4gIH1cclxuICBzZXRMYWJlbE5hbWVGb3JEcm9wem9uZShmaWxlTmFtZSkge1xyXG4gICAgcmV0dXJuIGZpbGVOYW1lLnN1YnN0cmluZygwLCAyMCkgKyBcIi4uLlwiO1xyXG4gIH1cclxuICBvblJlbW92ZShldmVudCkge1xyXG4gICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGV2ZW50KSwgMSk7XHJcbiAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZmlsZXNQcmVzZW50ID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsZXNQcmVzZW50ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlbW92ZUFsbEZpbGVzKCkge1xyXG4gICAgdGhpcy5maWxlc1ByZXNlbnQgPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsZXMgPSBbXTtcclxuICB9XHJcbiAgZmlsZXNTZWxlY3RlZChldmVudCkge1xyXG4gICAgdGhpcy5maWxlcy5wdXNoKC4uLmV2ZW50LmFkZGVkRmlsZXMpO1xyXG4gICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZpbGVzUHJlc2VudCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZVVwbG9hZEZpbGVQb3B1cCgpIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZERyb3B6b25lUG9wdXAuZm9yRWFjaCgocCkgPT4gcC5jbG9zZVBvcG92ZXIoKSk7XHJcbiAgICB0aGlzLmZpbGVzID0gW107XHJcbiAgICB0aGlzLmZpbGVSZXN1bHRNb2RlbCA9IFtdO1xyXG4gIH1cclxuICBzYXZlRmlsZXMoKSB7XHJcbiAgICB0aGlzLmFueU9wZXJhdGlvbkluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIHRoaXMuZmlsZXMuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4ge1xyXG4gICAgICB0aGlzLmZpbGVJbmRleCA9IHRoaXMuZmlsZUluZGV4ICsgMTtcclxuICAgICAgY29uc3QgZmlsZUtleU5hbWUgPSBcImZpbGVcIiArIHRoaXMuZmlsZUluZGV4LnRvU3RyaW5nKCk7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChmaWxlS2V5TmFtZSwgZmlsZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIHRoaXMuVXBsb2FkZXJPbkluaXQoZW52aXJvbm1lbnQuYXBpVVJMICsgQXBpVXJscy5VcGxvYWRGaWxlQ2h1bmtzKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBVcGxvYWRlck9uSW5pdCh1cmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IHByb2dyZXNzID0gMDtcclxuICAgIGNvbnN0IHIgPSBuZXcgUmVzdW1hYmxlKHtcclxuICAgICAgdGFyZ2V0OiB1cmwsXHJcbiAgICAgIGNodW5rU2l6ZTogMSAqIDEwMjQgKiAxMDI0LCAvLzMgTUJcclxuICAgICAgcXVlcnk6IHsgbW9kdWxlVHlwZUlkOiB0aGlzLm1vZHVsZVR5cGVJZCB9LFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6IGBCZWFyZXIgJHt0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXIpfWBcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgci5hZGRGaWxlcyh0aGlzLmZpbGVzKTtcclxuICAgIHIub24oJ2ZpbGVBZGRlZCcsIChmaWxlLCBldmVudCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZmlsZVJlc3VsdE1vZGVsIHx8IHRoaXMuZmlsZVJlc3VsdE1vZGVsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmZpbGVSZXN1bHRNb2RlbCA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIHIudXBsb2FkKClcclxuICAgIH0pO1xyXG4gICAgci5vbignY29tcGxldGUnLCAoZXZlbnQpID0+IHtcclxuICAgICAgci5maWxlcy5wb3AoKTtcclxuICAgICAgdGhpcy5wcm9ncmVzc1ZhbHVlID0gMDtcclxuICAgICAgdGhpcy5maWxlc1ByZXNlbnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVOYW1lcyA9IFtdO1xyXG4gICAgICB0aGlzLmZpbGVDb3VudGVyID0gMTtcclxuICAgICAgdGhpcy5maWxlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLmFueU9wZXJhdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gICAgci5vbigncHJvZ3Jlc3MnLCAoKSA9PiB7XHJcbiAgICAgIHByb2dyZXNzID0gTWF0aC5yb3VuZChyLnByb2dyZXNzKCkgKiAxMDApO1xyXG4gICAgICB0aGlzLnByb2dyZXNzVmFsdWUgPSBwcm9ncmVzcztcclxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICAgIHIub24oJ2ZpbGVTdWNjZXNzJywgKGZpbGUsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChmaWxlICYmIGZpbGUuZmlsZU5hbWUpIHtcclxuICAgICAgICBpZiAoIXRoaXMudXBsb2FkZWRGaWxlTmFtZXMuZmluZCh4ID0+IHggPT0gZmlsZS5maWxlTmFtZSkpIHtcclxuICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlTmFtZXMucHVzaChmaWxlLmZpbGVOYW1lKVxyXG4gICAgICAgICAgdGhpcy5maWxlQ291bnRlciA9IHRoaXMudXBsb2FkZWRGaWxlTmFtZXMubGVuZ3RoO1xyXG5cclxuICAgICAgICAgIGxldCByZXN1bHQgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTtcclxuICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmZpbGVSZXN1bHRNb2RlbCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZVJlc3VsdE1vZGVsID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGZpbGVSZXN1bHQgPSBuZXcgRmlsZVJlc3VsdE1vZGVsKCk7XHJcbiAgICAgICAgICAgIGZpbGVSZXN1bHQuZmlsZUV4dGVuc2lvbiA9IHJlc3VsdFswXS5GaWxlRXh0ZW5zaW9uO1xyXG4gICAgICAgICAgICBmaWxlUmVzdWx0LmZpbGVOYW1lID0gcmVzdWx0WzBdLkZpbGVOYW1lO1xyXG4gICAgICAgICAgICBmaWxlUmVzdWx0LmZpbGVQYXRoID0gcmVzdWx0WzBdLkZpbGVQYXRoO1xyXG4gICAgICAgICAgICBmaWxlUmVzdWx0LmZpbGVTaXplID0gcmVzdWx0WzBdLkZpbGVTaXplO1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVSZXN1bHRNb2RlbC5wdXNoKGZpbGVSZXN1bHQpO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0WzBdLkZpbGVQYXRoICE9IG51bGwgJiYgcmVzdWx0WzBdLkZpbGVQYXRoICE9IFwiXCIpXHJcbiAgICAgICAgICAgICAgdGhpcy5pbXBvcnREeW5hbWljSnNvbihyZXN1bHRbMF0uRmlsZVBhdGgpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZVVwbG9hZEZpbGVQb3B1cCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGltcG9ydER5bmFtaWNKc29uKGNvbmZpZ3VyZWRKc29uVVJMKSB7XHJcbiAgICB2YXIgaW1wb3J0Q29uZmlndXJhdGlvbk1vZGVsID0gbmV3IEltcG9ydENvbmZpZ3VyYXRpb25Nb2RlbCgpO1xyXG4gICAgaW1wb3J0Q29uZmlndXJhdGlvbk1vZGVsLmNvbmZpZ3VyYXRpb25VcmwgPSBjb25maWd1cmVkSnNvblVSTDtcclxuICAgIHRoaXMuaW1wb3J0aW5nSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuU3lzdGVtSW1wb3J0Q29uZmlndXJhdGlvbihpbXBvcnRDb25maWd1cmF0aW9uTW9kZWwpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuY2xvc2VVcGxvYWRGaWxlUG9wdXAoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKFwiRGF0YSBpbXBvcnRlZCBzdWNjZXNzZnVsbHlcIik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UuYXBpUmVzcG9uc2VNZXNzYWdlc1swXS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmltcG9ydGluZ0luUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoQ29tcGFuaWVzKGNvbXBhbmllcywgc2VhcmNoKSB7XHJcbiAgICBpZiAoc2VhcmNoID09IG51bGwgfHwgc2VhcmNoID09ICcnKSB7XHJcbiAgICAgIHJldHVybiBjb21wYW5pZXM7XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaCAhPSBudWxsKSB7XHJcbiAgICAgIHNlYXJjaCA9IHNlYXJjaC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBzZWFyY2ggPSBzZWFyY2gudHJpbSgpO1xyXG4gICAgICBjb25zdCB0ZW1wID0gY29tcGFuaWVzLmZpbHRlcihkYXRhID0+XHJcbiAgICAgICAgZGF0YS5jb21wYW55TmFtZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gpID4gLTFcclxuICAgICAgKVxyXG4gICAgICByZXR1cm4gdGVtcDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIC8vIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFt0aGlzLmxvZ2luVXNlcmNoYW5uZWxOYW1lXSB9KTtcclxuICAgIC8vIHZhciBsb2dpbkNvbXBhbnlJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55SWRcIik7XHJcbiAgICAvLyBpZiAodGhpcy5jaGFubmVsTGlzdCAhPSB1bmRlZmluZWQgfHwgdGhpcy5jaGFubmVsTGlzdCAhPSBudWxsKSB7XHJcbiAgICAvLyAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNoYW5uZWxMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgLy8gICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgICAgIGNoYW5uZWxzOiBbKGxvZ2luQ29tcGFueUlkICsgJy0nICsgdGhpcy5jaGFubmVsTGlzdFtpbmRleF0uaWQpXVxyXG4gICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICAvLyAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgLy8gICBjaGFubmVsczogWygnQ2hhbm5lbFVwZGF0ZXMtJyArIGxvZ2luQ29tcGFueUlkKV1cclxuICAgIC8vIH0pO1xyXG4gICAgLy8gdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgLy8gICBjaGFubmVsczogWygnVXNlclVwZGF0ZXMtJyArIGxvZ2luQ29tcGFueUlkKV1cclxuICAgIC8vIH0pO1xyXG4gICAgdGhpcy5uZ0Rlc3Ryb3llZCQubmV4dCgpO1xyXG4gICAgdGhpcy5uZ0Rlc3Ryb3llZCQuY29tcGxldGUoKTtcclxuICB9XHJcbiAgb25OYXZpZ2F0ZVRvQmlsbGluZ1NjcmVlbigpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9zaGVsbC9BY2NvdW50c1wiXSk7XHJcbiAgfVxyXG5cclxuICBvbk5hdmlnYXRlVG9QcmljaW5nU2NyZWVuKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3NoZWxsL3BheW1lbnRzLXBsYW5zXCJdKTtcclxuICB9XHJcbiAgZ2V0SW50cm9EZXRhaWxzKCkge1xyXG4gICAgdmFyIGludHJvID0gbmV3IEludHJvTW9kZWwoKTtcclxuICAgIGludHJvLnVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5nZXRJbnRyb0RldGFpbHMoaW50cm8pLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzID09IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9IHJlc3BvbnNlRGF0YS5hcGlSZXNwb25zZU1lc3NhZ2VzWzBdLm1lc3NhZ2U7XHJcbiAgICAgICAgdGhpcy5hbnlPcGVyYXRpb25JblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IodGhpcy52YWxpZGF0aW9uTWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAocmVzcG9uc2VEYXRhLnN1Y2Nlc3MgPT0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBpbnRybyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5JbnRyb01vZHVsZXMpKTtcclxuICAgICAgICBpZiAoIWludHJvKVxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5JbnRyb01vZHVsZXMsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlRGF0YS5kYXRhKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVhbU1lbWJlcnMoKSB7XHJcbiAgICB2YXIgdGVhbU1lbWJlck1vZGVsO1xyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICB2YXIgdGVhbU1lbWJlck1vZGVsO1xyXG4gICAgdGVhbU1lbWJlck1vZGVsID0ge1xyXG4gICAgICBpc0ZvclRyYWNrZXI6IHRydWVcclxuICAgIH1cclxuICAgIHRlYW1NZW1iZXJNb2RlbC5pc0FyY2hpdmVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0VGVhbUxlYWRzTGlzdCh0ZWFtTWVtYmVyTW9kZWwpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgbGV0IGVtcGxveWVlc0Ryb3BEb3duID0gcmVzcG9uc2VEYXRhLmRhdGE7XHJcbiAgICAgIGlmIChlbXBsb3llZXNEcm9wRG93biAmJiBlbXBsb3llZXNEcm9wRG93bi5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVuYWJsZVRlYW1EYXNoYm9hcmQsICd0cnVlJywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW5hYmxlVGVhbURhc2hib2FyZCwgJ2ZhbHNlJywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPG1hdC10b29sYmFyIGNsYXNzPVwidG9wYmFyIHJlbW92ZS1wYWRkaW5nXCI+XHJcbiAgICA8ZGl2IGZ4RmxleD5cclxuICAgICAgICA8YXBwLW1lbnUgW3JlbG9hZF09XCJyZWxvYWRcIiAoaXNPcGVuZWQpPVwiaXNPcGVuZWQoJGV2ZW50KVwiIChvcGVuTmV3RGFzaGJvYXJkKT1cIm5hdmlnYXRlVG9VcmwoJGV2ZW50KVwiPjwvYXBwLW1lbnU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhGbGV4IGZ4TGF5b3V0PVwicm93XCIgZnhIaWRlLnhzIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXJcIiBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhGbGV4IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29tcGFuaWVzTGlzdCAhPSBudWxsICYmIGNvbXBhbmllc0xpc3QubGVuZ3RoID4gMVwiIGNsYXNzPVwiZmlsdGVyLWRhdGEgY3VzdG9tLWJveCBsYW5ndWFnZS1zZWN0aW9uXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoxNTBweDtcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiXCIgbmFtZT1cInNlbGVjdGVkQ29tcGFueVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDb21wYW55XCJcclxuICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0Q29tcGFueSgkZXZlbnQudmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZENvbXBhbnlcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTVweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgJ21hcmdpbi1ib3R0b20nOiBzZWxlY3RlZENvbXBhbnkuY29tcGFueU1pbmlMb2dvID8gJzEwcHgnIDogJzBweCcgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1hdmF0YXIgW25hbWVdPVwic2VsZWN0ZWRDb21wYW55LmNvbXBhbnlOYW1lIHwgcmVtb3ZlU3BlY2lhbENoYXJhY3RlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7IHNlbGVjdGVkQ29tcGFueS5jb21wYW55TmFtZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJzZWxlY3RlZENvbXBhbnkuY29tcGFueU1pbmlMb2dvIHwgZmV0Y2hTaXplZEFuZENhY2hlZEltYWdlOiAnMjAnOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNSb3VuZF09XCJ0cnVlXCIgc2l6ZT1cIjIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7c2VsZWN0ZWRDb21wYW55LmNvbXBhbnlOYW1lfX1cIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNDAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ4RmxleD1cImNhbGMoMTAwJSAtIDQwcHgpXCIgY2xhc3M9XCJsYW5ndWFnZS1kaXNwbGF5XCIgc3R5bGU9XCJjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcIj57eyBzZWxlY3RlZENvbXBhbnlOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleCBjbGFzcz1cInNlYXJjaF9nb2FsaW5wdXQgbWwtMVwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHN0aWNreTsgdG9wOiAwOyB6LWluZGV4OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwic2VhcmNoX2dvYWxcIiBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cInt7J0hSTUFOQUdBTUVOVC5TRUFSQ0gnIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAoaW5wdXQpPVwic2VhcmNoKCRldmVudClcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjbG9zZV9pY29uIG1hc3RlcmRhdGEtc2VhcmNoLWNsb3NlXCIgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2VhcmNoVGV4dFwiIGNsYXNzPVwiaWNvbi1idXR0b24gbXItMDUgbXQtMDVcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVNlYXJjaCgpXCIgc3R5bGU9XCJjdXJzb3I6cG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGNvbXBhbnlMaXN0IG9mIHNlYXJjaENvbXBhbmllcyhjb21wYW5pZXNMaXN0LCBzZWFyY2hUZXh0KVwiIFt2YWx1ZV09XCJjb21wYW55TGlzdFwiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7Y29tcGFueUxpc3QuY29tcGFueU5hbWV9fVwiIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI0MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWF2YXRhciBbbmFtZV09XCJjb21wYW55TGlzdC5jb21wYW55TmFtZSB8IHJlbW92ZVNwZWNpYWxDaGFyYWN0ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ21hcmdpbi1ib3R0b20nOiBjb21wYW55TGlzdC5jb21wYW55TWluaUxvZ28gPyAnMTBweCcgOiAnMHB4JyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7IGNvbXBhbnlMaXN0LmNvbXBhbnlOYW1lIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiY29tcGFueUxpc3QuY29tcGFueU1pbmlMb2dvIHwgZmV0Y2hTaXplZEFuZENhY2hlZEltYWdlOiAnMjAnOicnXCIgW2lzUm91bmRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtYXZhdGFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMDVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbXBhbnlMaXN0LmNvbXBhbnlOYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwic2hvd1RyYWlsUGVyaW9kXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7ICdTSEVMTC5GUkVFVFJBSUxFWFBJUkUnIHwgdHJhbnNsYXRlIH19PHNwYW4gWyhuZ01vZGVsKV09XCJub09mRGF5c1wiPnt7Y29tcGFueS50cmFpbERheXN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIHt7ICdTSEVMTC5EQVlTJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaG9tZVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbc3R5bGUub3ZlcmZsb3ddPVwiJ3Zpc2libGUnXCIgbWF0VG9vbHRpcD1cInt7ICdTSEVMTC5IT01FJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG9wYmFyLWJ1dHRvbi1yaWdodFwiIChjbGljayk9XCJjaGFuZ2VNZW51VHlwZSgnV29ya3NwYWNlTWVudUl0ZW1zJyk7bmF2aWdhdGVUb0Rhc2hib2FyZHMoKVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIobWVudVR5cGUgPT0gJ1dvcmtzcGFjZU1lbnVJdGVtcyd8fCB0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJy9kYXNoYm9hcmQtbWFuYWdlbWVudCcpKSA/ICdpY29uX2FjdGl2ZV9jbGFzcycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmhvbWU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaG9tZVwiICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFtzdHlsZS5vdmVyZmxvd109XCIndmlzaWJsZSdcIiBtYXRUb29sdGlwPVwie3sgJ1JPTEVTVklFVy5ST0xFUycgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRvcGJhci1idXR0b24tcmlnaHRcIiAoY2xpY2spPVwiY2hhbmdlTWVudVR5cGUoJ1dvcmtzcGFjZU1lbnVJdGVtcycpO25hdmlnYXRlVG9Sb2xlcygpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihtZW51VHlwZSA9PSAnV29ya3NwYWNlTWVudUl0ZW1zJ3x8IHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnL3JvbGVtYW5hZ2VtZW50L3JvbGVtYW5hZ2VtZW50JykpID8gJ2ljb25fYWN0aXZlX2NsYXNzJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+YnJpZ2h0bmVzc19oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIoY2FuQWNjZXNzX2ZlYXR1cmVfU2V0dGluZ3MpIHx8IChjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMpXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7eyAnU0hFTEwuU0VUVElOR1MnIHwgdHJhbnNsYXRlIH19XCIgY2xhc3M9XCJ0b3BiYXItYnV0dG9uLXJpZ2h0IHRoZW1lLW5hdmJhci1pY29uLWNvbG9yXCIgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1NldHRpbmdzKClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnL3NldHRpbmdzJykpID8gJ2ljb25fYWN0aXZlX2NsYXNzJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+c2V0dGluZ3M8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwhLS0gPGRpdiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX0FiaWxpdHlUb0NoYXRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW3N0eWxlLm92ZXJmbG93XT1cIid2aXNpYmxlJ1wiIG1hdFRvb2x0aXA9XCJ7eyAnU0hFTEwuQ0hBVCcgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0b3BiYXItYnV0dG9uLXJpZ2h0XCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9NZXNzZW5nZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIodGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCcvY2hhdCcpKSA/ICdpY29uX2FjdGl2ZV9jbGFzcycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdEJhZGdlPVwie3ttZXNzYWdlc1VucmVhZENvdW50fX1cIiBbbWF0QmFkZ2VIaWRkZW5dPVwibWVzc2FnZXNVbnJlYWRDb3VudCA9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICBtYXRCYWRnZUNvbG9yPVwid2FyblwiIGNsYXNzPVwibS0wIGljb25cIj5mb3J1bTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PiAgLS0+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJjYW5BY2Nlc3NfZmVhdHVyZV9NeVByb2plY3RXb3JrXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7eyAnU0hFTEwuTVlXT1JLJyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwidG9wYmFyLWJ1dHRvbi1yaWdodCB0aGVtZS1uYXZiYXItaWNvbi1jb2xvclwiIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9TdGF0dXNSZXBvcnQoKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmFzc2lnbm1lbnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIihjYW5BY2Nlc3NfZmVhdHVyZV9QdW5jaENhcmQpICYmICEoIHRpbWVzaGVldERpc2FibGVvckVuYWJsZSAmJiB0aW1lc2hlZXREaXNhYmxlb3JFbmFibGUuVGltZVNoZWV0UmVzdHJpY3RlZClcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBpZD1cImZlZWRUaW1lU2hlZXRDb21wb25lbnRcIiBbc3R5bGUub3ZlcmZsb3ddPVwiJ3Zpc2libGUnXCJcclxuICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7ICdTSEVMTC5MT0dUSU1FJyB8IHRyYW5zbGF0ZX19XCIgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwiZmVlZFRpbWVTaGVldFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuVGltZVNoZWV0KClcIiBjbGFzcz1cInRvcGJhci1idXR0b24tcmlnaHQgdGhlbWUtbmF2YmFyLWljb24tY29sb3JcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFjY2Vzc190aW1lPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBOb3RpZmljYXRpb24gdG9nZ2xlIGJ1dHRvbiAtLT5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3sgJ1NIRUxMLk5PVElGSUNBVElPTlMnIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwidG9nZ2xlTm90aWZpYygpXCJcclxuICAgICAgICBbc3R5bGUub3ZlcmZsb3ddPVwiJ3Zpc2libGUnXCIgKm5nSWY9XCJuZXdOb3RpZmljYXRpb25zQ291bnQgIT0gMFwiIGNsYXNzPVwidG9wYmFyLWJ1dHRvbi1yaWdodCB0aGVtZS1uYXZiYXItaWNvbi1jb2xvclwiXHJcbiAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm5vdGlmaWNhdGlvblwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5ub3RpZmljYXRpb25zPC9tYXQtaWNvbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIm5ld05vdGlmaWNhdGlvbnNDb3VudCAhPSAwXCIgY2xhc3M9XCJub3RpZmljYXRpb24tbnVtYmVyIG1hdC1iZy13YXJuXCI+e3tcclxuICAgICAgICAgICAgbmV3Tm90aWZpY2F0aW9uc0NvdW50IH19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8bWF0LW1lbnUgI25vdGlmaWNhdGlvbj1cIm1hdE1lbnVcIj5cclxuICAgICAgICA8YXBwLW5vdGlmaWNhdGlvbnM+PC9hcHAtbm90aWZpY2F0aW9ucz5cclxuICAgIDwvbWF0LW1lbnU+XHJcblxyXG4gICAgPCEtLSBUb3AgbGVmdCB1c2VyIG1lbnUgLS0+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWNjb3VudE1lbnVcIiAoY2xpY2spPVwidG9nZ2xlUmVjb3JkaW5nKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnL2Rhc2hib2FyZC9wcm9maWxlLycpID8gJ2ljb25fYWN0aXZlX2NsYXNzJyA6ICcnXCJcclxuICAgICAgICBjbGFzcz1cInRvcGJhci1idXR0b24tcmlnaHQgaW1nLWJ1dHRvblwiICpuZ0lmPVwiYXV0aGVudGljYXRlZFVzZXJSZWNvcmRcIj5cclxuICAgICAgICA8aW1nIGNsYXNzPVwiaWNvbi1oaWdobGlnaHQtc2V0dGVyXCIgKm5nSWY9XCJhdXRoZW50aWNhdGVkVXNlclJlY29yZC5wcm9maWxlSW1hZ2VcIlxyXG4gICAgICAgICAgICBbc3JjXT1cImF1dGhlbnRpY2F0ZWRVc2VyUmVjb3JkLnByb2ZpbGVJbWFnZSB8IGZldGNoU2l6ZWRBbmRDYWNoZWRJbWFnZTogJzYwJzonJ1wiIGFsdD1cInByb2ZpbGUgaW1hZ2VcIiAvPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhYXV0aGVudGljYXRlZFVzZXJSZWNvcmQucHJvZmlsZUltYWdlXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogNHB4ICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgIDxhcHAtYXZhdGFyIFtuYW1lXT1cImF1dGhlbnRpY2F0ZWRVc2VyUmVjb3JkLmZ1bGxOYW1lIHwgcmVtb3ZlU3BlY2lhbENoYXJhY3RlcnNcIiBbaXNSb3VuZF09XCJ0cnVlXCIgc2l6ZT1cIjMwXCI+XHJcbiAgICAgICAgICAgIDwvYXBwLWF2YXRhcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxzYXQtcG9wb3ZlciAjZmVlZFRpbWVTaGVldCBbYXV0b0ZvY3VzXT1cImZhbHNlXCIgaGFzQmFja2Ryb3AgW3Jlc3RvcmVGb2N1c109XCJmYWxzZVwiIFtpbnRlcmFjdGl2ZUNsb3NlXT1cInRydWVcIlxyXG4gICAgICAgIHNjcm9sbFN0cmF0ZWd5PVwicmVwb3NpdGlvblwiIHZlcnRpY2FsQWxpZ249XCJiZWxvd1wiIGhvcml6b250YWxBbGlnbj1cImJlZm9yZVwiPlxyXG4gICAgICAgIDxhcHAtZmVlZC10aW1lIChjbG9zZUZlZWRUaW1lU2hlZXRQb3B1cCk9XCJjbG9zZUZlZWRUaW1lU2hlZXQoKVwiIFtpc0ZlZWRUaW1lU2hlZXRdPVwiaXNGZWVkVGltZVNoZWV0XCI+XHJcbiAgICAgICAgPC9hcHAtZmVlZC10aW1lPlxyXG4gICAgPC9zYXQtcG9wb3Zlcj5cclxuXHJcbiAgICA8bWF0LW1lbnUgI2FjY291bnRNZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwibmF2aWdhdGVUb1Byb2ZpbGUoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YWNjb3VudF9ib3g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj57eyAnU0hFTEwuUFJPRklMRScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYWN0aXZpdHktcmVjb3JkZXIgcmVjb3JkaW5nLXN0eWxlXCIgKm5nSWY9XCJpc1JlY29yZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBmaWJlcl9tYW51YWxfcmVjb3JkIC0tPlxyXG4gICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8IS0tIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZ29Ub1VzZXJTdG9yZSgpXCIgKm5nSWY9XCJpc1N0b3JlQWNjZXNzXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG91ZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuPlN0b3JlPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7eyAnU0hFTEwuQ0xFQVJERU1PREFUQScgfCB0cmFuc2xhdGV9fVwiICpuZ0lmPVwic2hvd0RlbGV0ZUljb24gJiYgc2hvd0RlbGV0ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhckRlbW9EYXRhKClcIiBbc3R5bGUub3ZlcmZsb3ddPVwiJ3Zpc2libGUnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj57eyAnU0hFTEwuQ0xFQVJERU1PREFUQScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7eyAnU0hFTEwuRVhQT1JUQ09ORklHVVJBVElPTicgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlU3lzdGVtRXhwb3J0c1wiIChjbGljayk9XCJleHBvcnRDb25maWd1cmF0aW9uRGlhbG9nRGF0YSgpXCJcclxuICAgICAgICAgICAgW3N0eWxlLm92ZXJmbG93XT1cIid2aXNpYmxlJ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Z2V0X2FwcDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7ICdTSEVMTC5FWFBPUlRDT05GSUdVUkFUSU9OJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7ICdTSEVMTC5JTVBPUlRDT05GSUdVUkFUSU9OJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwiZmlsZVVwbG9hZERyb3B6b25lUG9wb3ZlclwiICNmaWxlVXBsb2FkRHJvcHpvbmVQb3B1cD1cInNhdFBvcG92ZXJBbmNob3JcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVN5c3RlbUltcG9ydHNcIiAoY2xpY2spPVwiYWRkVXBsb2FkRmlsZVBvcHVwT3BlbihmaWxlVXBsb2FkRHJvcHpvbmVQb3B1cClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnB1Ymxpc2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj57eyAnU0hFTEwuSU1QT1JUQ09ORklHVVJBVElPTicgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8IS0tPGRpdiBjbGFzcz1cImZpbHRlci1kYXRhIGN1c3RvbS1ib3ggbGFuZ3VhZ2Utc2VjdGlvblwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJcIiBuYW1lPVwiY3VycmVudExhbmdcIiBbKG5nTW9kZWwpXT1cImN1cnJlbnRMYW5nXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZXRMYW5nKClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTVweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gZnhGbGV4PVwiMjRweFwiIGNsYXNzPVwibGFuZ3VhZ2UtaWNvblwiPmxhbmd1YWdlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZnhGbGV4PVwiY2FsYygxMDAlIC0gNDBweClcIiBjbGFzcz1cImxhbmd1YWdlLWRpc3BsYXlcIj57eyBzZWxlY3RlZExhbmdOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIm9wdGlvblwiICpuZ0Zvcj1cImxldCBsYW5nIG9mIGF2YWlsYWJsZUxhbmdzXCIgW3ZhbHVlXT1cImxhbmcuY29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGxhbmcubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+LS0+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbk5hdmlnYXRlVG9CaWxsaW5nU2NyZWVuKClcIiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZUFjY291bnRzQW5kQmlsbGluZ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YWNjb3VudF9iYWxhbmNlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4+QWNjb3VudCAmIEJpbGxpbmc8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbk5hdmlnYXRlVG9QcmljaW5nU2NyZWVuKClcIiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZUFjY291bnRzQW5kQmlsbGluZ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YWNjb3VudF9iYWxhbmNlX3dhbGxldDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuPlByaWNpbmcgJiBGZWF0dXJlczwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX0FsdGVybmF0ZVNpZ25JblwiIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFsdGVybmF0ZVNpZ25JbigpXCJcclxuICAgICAgICAgICAgW3N0eWxlLm92ZXJmbG93XT1cIid2aXNpYmxlJ1wiIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3sgJ1NIRUxMLlNJR05JTkFTJyB8IHRyYW5zbGF0ZX19XCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5ob3dfdG9fcmVnPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgJ1NIRUxMLlNJR05JTkFTJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25TaWdub3V0KClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmV4aXRfdG9fYXBwPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgJ1NIRUxMLlNJR05PVVQnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJmZWVkQmFja1BvcG92ZXIudG9nZ2xlKCk7b3BlbkZlZWRCYWNrRGlhbG9nKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZmVlZGJhY2staWNvblwiIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cImZlZWRCYWNrUG9wb3ZlclwiPlxyXG4gICAgICAgICAgICAgICAgc2VudGltZW50X3NhdGlzZmllZF9hbHRcclxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4+di17e2FwcGxpY2F0aW9uVmVyc2lvbn19PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtbWVudT5cclxuPC9tYXQtdG9vbGJhcj5cclxuPCEtLSA8bmd4LXVpLWxvYWRlciBmZ3NTaXplPVwiMTgwXCIgW2Znc1R5cGVdPVwic3Bpbm5lclR5cGVcIiBjb2xvcj1cInByaW1hcnlcIj48L25neC11aS1sb2FkZXI+IC0tPlxyXG48ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwiay1pLWxvYWRpbmdcIj48L2Rpdj5cclxuPHNhdC1wb3BvdmVyICNmZWVkQmFja1BvcG92ZXIgdmVydGljYWxBbGlnbj1cImJlbG93XCIgaGFzQmFja2Ryb3AgYmFja2Ryb3BDbGFzcz1cImJhY2tkcm9wLWNvbG9yXCJcclxuICAgIFtpbnRlcmFjdGl2ZUNsb3NlXT1cImZhbHNlXCIgaG9yaXpvbnRhbEFsaWduPVwiZW5kXCI+XHJcbiAgICA8YXBwLXN1Ym1pdC1mZWVkYmFjayAqbmdJZj1cImlzRmVlZEJhY2tEaWFsb2dcIiAoY2xvc2VEaWFsb2cpPVwiY2xvc2VGZWVkQmFja2xvZ0RpYWxvZygpXCI+XHJcbiAgICA8L2FwcC1zdWJtaXQtZmVlZGJhY2s+XHJcbjwvc2F0LXBvcG92ZXI+XHJcblxyXG48bWF0LW1lbnUgI21lbnUyPVwibWF0TWVudVwiIGNsYXNzPVwiZGlhbG9nX3dpbmRvd1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwicC0wIG0tMCBsaXN0b2ZfYXNzZXRzIHN0b3JlLWxpc3QtZHJvcGRvd25cIiBpZD1cInN0eWxlLTFcIj5cclxuICAgICAgICA8bWF0LWxpc3QgY2xhc3M9XCJjb21wYWN0LWxpc3RcIj5cclxuICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwicC0wIGFzc2V0LWNhcmRcIiAqbmdJZj1cIihjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0gfHwgY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zKVwiXHJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9hcHBsaWNhdGlvbnMvdmlldy1mb3JtcyddXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhpZGUtY29udGVudC1vdmVyZmxvdyB1c2VyU3RvcnktbmFtZS1jb250cm9sIHN0b3JlLWRyb3Bkb3duLXBhZGRpbmdcIj5Gb3Jtczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwicC0wIGFzc2V0LWNhcmRcIiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zXCJcclxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2FwcGxpY2F0aW9ucy9jdXN0b20tYXBwbGljYXRpb25zJ11cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGlkZS1jb250ZW50LW92ZXJmbG93IHVzZXJTdG9yeS1uYW1lLWNvbnRyb2wgc3RvcmUtZHJvcGRvd24tcGFkZGluZ1wiPkN1c3RvbVxyXG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICAgICAgPG1hdC1jYXJkICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzXCIgY2xhc3M9XCJwLTAgYXNzZXQtY2FyZFwiXHJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9yb2xlbWFuYWdlbWVudC9yb2xlbWFuYWdlbWVudCddXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhpZGUtY29udGVudC1vdmVyZmxvdyB1c2VyU3RvcnktbmFtZS1jb250cm9sIHN0b3JlLWRyb3Bkb3duLXBhZGRpbmdcIj5Sb2xlXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICAgICAgPG1hdC1jYXJkICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9uc1wiIGNsYXNzPVwicC0wIGFzc2V0LWNhcmRcIlxyXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvcm9sZW1hbmFnZW1lbnQvZW50aXR5cm9sZW1hbmFnZW1lbnQnXVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRlLWNvbnRlbnQtb3ZlcmZsb3cgdXNlclN0b3J5LW5hbWUtY29udHJvbCBzdG9yZS1kcm9wZG93bi1wYWRkaW5nXCI+e3twcm9qZWN0Um9sZVRleHQgfFxyXG4gICAgICAgICAgICAgICAgICAgIHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319PC9zcGFuPlxyXG4gICAgICAgICAgICA8L21hdC1jYXJkPlxyXG4gICAgICAgIDwvbWF0LWxpc3Q+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbjwvbWF0LW1lbnU+XHJcblxyXG48ZGl2IFtAZmFkZV0gKm5nSWY9XCJkaXNwbGF5V2VsY29tZU5vdGUgJiYgdXNlckZ1bGxOYW1lXCIgY2xhc3M9XCJ3ZWxjb21lLW5vdGVcIj5cclxuICAgIDxzcGFuICpuZ0lmPVwibG9nZ2VkSW5Db3VudCA9PSAxOyBlbHNlIGVsc2VTcGFuXCI+V2VsY29tZSAmbmJzcDsgPC9zcGFuPiA8c3Bhbj4ge3sgdXNlckZ1bGxOYW1lIH19IDwvc3Bhbj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVNwYW4+IFdlbGNvbWUgYmFjayAmbmJzcDs8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuPHNhdC1wb3BvdmVyICNmaWxlVXBsb2FkRHJvcHpvbmVQb3BvdmVyIGhhc0JhY2tkcm9wIFtpbnRlcmFjdGl2ZUNsb3NlXT1cImZhbHNlXCIgYmFja2Ryb3BDbGFzcz1cInRlc3RydW4tcG9wb3ZlclwiXHJcbiAgICBzY3JvbGxTdHJhdGVneT1cInJlcG9zaXRpb25cIj5cclxuICAgIDxtYXQtY2FyZCBjbGFzcz1cInAtMCBtci0wIGN1c3RvbS1ocm0tZHJvcHpvbmVcIj5cclxuICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlLXRleHQgbWF0LWJnLXByaW1hcnkgcC0wNVwiIGZ4TGF5b3V0PVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3snVEVTVE1BTkFHRU1FTlQuVVBMT0FERklMRVMnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIyMHB4XCIgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5saW5lX2VkaXRfY2xvc2VfYnRuIGJ0blwiIChjbGljayk9XCJjbG9zZVVwbG9hZEZpbGVQb3B1cCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJ0aW1lc1wiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kcm9wem9uZSBkcm9wem9uZS1oZWlnaHRcIiBuZ3gtZHJvcHpvbmUgKGNoYW5nZSk9XCJmaWxlc1NlbGVjdGVkKCRldmVudClcIiBhY2NlcHQ9XCIuanNvblwiPlxyXG4gICAgICAgICAgICAgICAgPG5neC1kcm9wem9uZS1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eydET0NVTUVOVE1BTkFHRU1FTlQuRFJBR0FORERST1BGSUxFU0hFUkUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L25neC1kcm9wem9uZS1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxuZ3gtZHJvcHpvbmUtcHJldmlldyBjbGFzcz1cImN1c3RvbS1kcm9wem9uZS1wcmV2aWV3XCIgKm5nRm9yPVwibGV0IGYgb2YgZmlsZXNcIiBbcmVtb3ZhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cIm9uUmVtb3ZlKGYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5neC1kcm9wem9uZS1sYWJlbCBjbGFzcz1cImN1c3RvbS1kcm9wem9uZS1sYWJlbFwiIFthdHRyLmRhdGEtdGlwXT1cImYubmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzZXRMYWJlbE5hbWVGb3JEcm9wem9uZShmLm5hbWUpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZHJvcHpvbmUtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L25neC1kcm9wem9uZS1wcmV2aWV3PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tMDUgdGV4dC1tdXRlZFwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+YWxsb3dlZCBmaWxlIGV4dGVuc2lvbnMgOiAuanNvbjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJkZXRlcm1pbmF0ZVwiIFt2YWx1ZV09XCJwcm9ncmVzc1ZhbHVlXCIgKm5nSWY9XCJwcm9ncmVzc1ZhbHVlID4gMFwiPlxyXG4gICAgICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9ncmVzc1ZhbHVlID4gMFwiPlxyXG4gICAgICAgICAgICAgICAge3twcm9ncmVzc1ZhbHVlfX0lIGNvbXBsZXRlZCAoVXBsb2FkaW5nIHt7ZmlsZUNvdW50ZXJ9fSBvZiB7e2ZpbGVzLmxlbmd0aH19IGZpbGVzKVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTA1XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBlbmRcIiAqbmdJZj1cImZpbGVzUHJlc2VudFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzYXZlRmlsZXMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwic2F2ZVwiPjwvZmEtaWNvbj57eydVUExPQUQnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1sLTFcIiBtYXQtYnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJyZW1vdmVBbGxGaWxlcygpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwidGltZXNcIj48L2ZhLWljb24+e3snRE9DVU1FTlRNQU5BR0VNRU5ULkNMRUFSRklMRVMnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTA1XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBlbmRcIiAqbmdJZj1cImltcG9ydGluZ0luUHJvZ3Jlc3NcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtbC0xXCIgbWF0LWJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwidXBsb2FkXCI+PC9mYS1pY29uPnt7J1NIRUxMLklNUE9SVElOR1RFWFQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zcGluIGZhLXNwaW5uZXJcIiAqbmdJZj1cImltcG9ydGluZ0luUHJvZ3Jlc3NcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jYXJkPlxyXG48L3NhdC1wb3BvdmVyPlxyXG5cclxuPHN0eWxlPlxyXG4gICAgLmZpbGUtb3ItZm9sZGVyLWljb24ge1xyXG4gICAgICAgIHdpZHRoOiA1MHB4O1xyXG4gICAgICAgIGhlaWdodDogNTBweDtcclxuICAgICAgICBmb250LXNpemU6IDUwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZpbGUtb3ItZm9sZGVyLW5hbWUtYWxpZ24ge1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xyXG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmRyb3B6b25lLWhlaWdodCB7XHJcbiAgICAgICAgaGVpZ2h0OiAxMzBweDtcclxuICAgIH1cclxuXHJcbiAgICAuY3VzdG9tLWRyb3B6b25lLXByZXZpZXcge1xyXG4gICAgICAgIGhlaWdodDogMTAwcHggIWltcG9ydGFudDtcclxuICAgICAgICBtaW4taGVpZ2h0OiAxMDBweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG48L3N0eWxlPlxyXG48bmctdGVtcGxhdGUgI29wZW5Bbm5vdWNlbWVudERpYWxvZ0NvbXBvbmVudCBsZXQtZGF0YT5cclxuICAgIDxhbm5vdW5jZW1lbnQtZGlhbG9nIFtkYXRhXT1bZGF0YV0+PC9hbm5vdW5jZW1lbnQtZGlhbG9nPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
2289
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXNpZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2hlbGwtbW9kdWxlLWNvbXBvbmVudHMvc2hlbGwtY29tcG9uZW50cy9zcmMvbGliL3NoZWxsLWNvbXBvbmVudHMvY29tcG9uZW50cy9oZWFkZXItc2lkZS9oZWFkZXItc2lkZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL2hlYWRlci1zaWRlL2hlYWRlci1zaWRlLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBcUUsMkJBQTJCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuTCxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBR00sWUFBWSxFQUMvQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0Isa0JBQWtCLEVBQ2xCLGtDQUFrQyxFQUNsQyxzQkFBc0IsR0FDdkIsTUFBTSxrQ0FBa0MsQ0FBQTtBQUl6QyxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBSTVDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoSCxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsaUNBQWlDLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUs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TTtrQkFBZixNQUFNO1lBQzhDLDhCQUE4QjtrQkFBbEYsU0FBUzttQkFBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VyRGV0YWlsc0ZldGNoZWRBZnRlckxvZ2luLCBVc2VyRGV0YWlsc0ZldGNoZWRBZnRlckNvbXBhbnlMb2dpbiwgRmV0Y2hUaW1lU2hlZXRCdXR0b25EZXRhaWxzLCBSb2xlc0ZldGNoVHJpZ2dlcmVkIH0gZnJvbSAnLi8uLi8uLi9zdG9yZS9hY3Rpb25zL2F1dGhlbnRpY2F0aW9uLmFjdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE5nTW9kdWxlUmVmLFxyXG4gIE5nTW9kdWxlRmFjdG9yeUxvYWRlcixcclxuICBWaWV3Q29udGFpbmVyUmVmLCBWaWV3Q2hpbGRyZW4sIENoYW5nZURldGVjdG9yUmVmLCBUZW1wbGF0ZVJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgUmVjZWl2ZU1lc3NhZ2VUcmlnZ2VyZWQsXHJcbiAgUHJlc2VuY2VFdmVudFRyaWdnZXJlZCxcclxuICBJbml0YWxTdGF0ZU9mVXNlcnNUcmlnZ2VyZWQsXHJcbiAgTWVzc2FnZUFjdGlvblR5cGVzLFxyXG4gIFJlY2VpdmVDaGFubmVsVXBkYXRlTW9kZWxUcmlnZ2VyZWQsXHJcbiAgUmVjZWl2ZVNpZ25hbFRyaWdnZXJlZCxcclxufSBmcm9tIFwiLi4vLi4vc3RvcmUvYWN0aW9ucy9jaGF0LmFjdGlvbnNcIlxyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgU2F0UG9wb3ZlciB9IGZyb20gXCJAbmNzdGF0ZS9zYXQtcG9wb3ZlclwiO1xyXG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSBcIm5neC1jb29raWUtc2VydmljZVwiO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IEdldFVzZXJTdG9yZUlkVHJpZ2dlcmVkLCBBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvYXV0aGVudGljYXRpb24uYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBDbGVhckFsbFVucmVhZE5vdGlmaWNhdGlvbnNUcmlnZ2VyZWQsIENsZWFyVW5yZWFkTm90aWZpY2F0aW9uc1RyaWdnZXJlZCwgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQsIE5vdGlmaWNhdGlvbnNBY3Rpb25UeXBlcywgVXBzZXJ0VW5yZWFkTm90aWZpY2F0aW9uc1RyaWdnZXJlZCB9IGZyb20gXCIuLi8uLi9zdG9yZS9hY3Rpb25zL25vdGlmaWNhdGlvbnMuYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBTdGF0ZSB9IGZyb20gXCIuLi8uLi9zdG9yZS9yZWR1Y2Vycy9pbmRleFwiO1xyXG5pbXBvcnQgKiBhcyBzaGFyZWRNb2R1bGVSZWR1Y2VycyBmcm9tIFwiLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcclxuaW1wb3J0ICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvaGVscGVycy9mb250YXdlc29tZS1pY29ucyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCIuLi9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvY29tbW9uLXVzZWQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBY3Rpb25zLCBvZlR5cGUgfSBmcm9tIFwiQG5ncngvZWZmZWN0c1wiO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbnN0YW50cy9sb2NhbHN0b3JhZ2UtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7IENoYW5uZWxOYW1lcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jaGFubmVsLW5hbWVzJztcclxuaW1wb3J0IHsgV0lORE9XIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2hlbHBlcnMvd2luZG93LmhlbHBlcic7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGltZXNoZWV0RGlzYWJsZW9yRW5hYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RpbWVzaGVldGVuYWJsZWRpc2FibGUnO1xyXG5pbXBvcnQgeyBUaGVtZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RoZW1lcy5tb2RlbCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbk1vZGVsLCBOb3RpZmljYXRpb25PdXRwdXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9Ob3RpZmljYXRpb25zT3V0UHV0TW9kZWwnO1xyXG5pbXBvcnQgeyBDdXN0b21BcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbXBvbmVudHMvY29tcG9uZW50YmFzZSc7XHJcbmltcG9ydCB7IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zb2Z0bGFiZWxzLW1vZGVsJztcclxuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXInO1xyXG5pbXBvcnQgeyBDb21wYW5pZXNMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbXBhbmllc2xpc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBTdG9yZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N0b3JlLW1vZGVsJztcclxuaW1wb3J0IHsgQXBwTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0FwcE5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IFN0b3JlU2VhcmNoTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc3RvcmUtc2VhcmNoLW1vZGVsJztcclxuaW1wb3J0IHsgTmdNb2R1bGVGYWN0b3J5LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFdvcmtJdGVtc0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FsbC13b3JrLWl0ZW1zLWRpYWxvZy9hbGwtd29yay1pdGVtcy1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2hlbGxNb2R1bGVzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NoZWxsLm1vZHVsZXMuc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSBcInVuZGVyc2NvcmVcIjtcclxuaW1wb3J0IHsgRmVlZFRpbWVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9mZWVkLXRpbWUvZmVlZC10aW1lLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25UeXBlSWRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL25vdGlmaWNhdGlvbi10eXBlLWlkcyc7XHJcbmltcG9ydCB7IFVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1VzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgQ2hhbm5lbFJvdXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub3RpZmljYXRpb24tcm91dGVzJztcclxuaW1wb3J0IHsgUm9sZVVwZGF0ZWROb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvUm9sZVVwZGF0ZWROb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBSZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvUmVwb3J0U3VibWl0dGVkTm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgUmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvUmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBNdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcgfSBmcm9tICcuLi8uLi9tb2RlbHMvbXVsdGlDaGFydHNTY2hlZHVsaW5nJztcclxuaW1wb3J0IHsgQXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9Bc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBOZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL05ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBHb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgVXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXJTdG9yeUNvbW1lbnROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFNwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBTcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc3ByaW50UmVwbGFuUmVxdWVzdGVkTW9kZWwnO1xyXG5pbXBvcnQgeyBBbm5vdWNlbWVudERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL25vdGlmaWNhdGlvbnMvYW5ub3VuY2VtZW50LWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dvcmtzcGFjZUxpc3QnO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBOZ3hVaUxvYWRlclNlcnZpY2UsIFNQSU5ORVIgfSBmcm9tICduZ3gtdWktbG9hZGVyJztcclxuaW1wb3J0IHsgTmV3UHJvamVjdEZlYXR1cmVDcmVhdGVkTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvTmV3UHJvamVjdEZlYXR1cmVOb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJTdG9yeUFyY2hpdmVOb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9hcmNoaXZlVXNlclN0b3J5TW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyU3RvcnlQYXJrTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcGFya1VzZXJTdG9yeUlucHV0TW9kZWwnO1xyXG5pbXBvcnQgeyBFeHBvcnRDb25maWd1cmF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwb3J0LWltcG9ydC1jb25maWd1cmF0aW9uL2V4cG9ydC1jb25maWd1cmF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVNb2RlbCwgRmlsZVJlc3VsdE1vZGVsLCBTdG9yZU1hbmFnZW1lbnRTZXJ2aWNlLCBVcHNlcnRGaWxlTW9kZWwgfSBmcm9tICdAdGhldHJhZGVlbmdpbmVvcmcxL3Nub3ZhLWRvY3VtZW50LW1hbmFnZW1lbnQnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbnR5cGUgTW9kdWxlV2l0aENvbXBvbmVudFNlcnZpY2UgPSBUeXBlPGFueT4gJiB7IGNvbXBvbmVudFNlcnZpY2U6IFR5cGU8YW55PiB9O1xyXG4vLyBpbXBvcnQgeyBDb25zdGFudFZhcmlhYmxlcyB9IGZyb20gXCIuLi9jb25zdGFudHMvY29uc3RhbnQtdmFyaWFibGVzXCI7XHJcbmltcG9ydCBSZXN1bWFibGUgZnJvbSBcInJlc3VtYWJsZWpzXCI7XHJcbmltcG9ydCB7IEFwaVVybHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXBpLXVybHMnO1xyXG5pbXBvcnQgeyBBdmFpbGFibGVMYW5ncyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hdmFpbGFibGUtbGFuZ3VhZ2VzJztcclxuaW1wb3J0IHsgSW1wb3J0Q29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ltcG9ydC1jb25maWd1cmF0aW9uLW1vZGVsJztcclxuaW1wb3J0IHsgQ2hhdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGF0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZXNzYWdlRGV0YWlscyB9IGZyb20gJy4uLy4uL21vZGVscy9NZXNzYWdlRGV0YWlscyc7XHJcbmltcG9ydCB7IENoYW5uZWxVcGRhdGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9DaGFubmVsVXBkYXRlTW9kZWwnO1xyXG5pbXBvcnQgeyBQdXNoTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICduZy1wdXNoLWl2eSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VUeXBpbmdEZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL01lc3NhZ2VUeXBpbmdEZXRhaWxzJztcclxuaW1wb3J0IHsgUHViTnViQW5ndWxhciB9IGZyb20gJ3B1Ym51Yi1hbmd1bGFyMic7XHJcblxyXG5cclxuaW1wb3J0IHsgSW50cm9Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvSW50cm9Nb2RlbFwiO1xyXG5pbXBvcnQgeyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xlYXZlQXBwbGljYXRpb25Ob3RpZmljdGlvbic7XHJcbmltcG9ydCB7IFNpZ25hbHJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2lnbmFsci5zZXJ2aWNlJztcclxuXHJcbi8qKiBAZHluYW1pYyAqL1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLWhlYWRlci1zaWRlXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9oZWFkZXItc2lkZS50ZW1wbGF0ZS5odG1sXCIsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZmFkZScsIFtcclxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW1xyXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCB9KSxcclxuICAgICAgICBhbmltYXRlKDIwMDAsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXHJcbiAgICAgICAgYW5pbWF0ZSg2MDAwLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpXHJcbiAgICAgIF0pXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBIZWFkZXJTaWRlQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnZmVlZFRpbWVTaGVldCcpIGZlZWRUaW1lU2hlZXRQb3BvdmVyOiBTYXRQb3BvdmVyO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZlZWRCYWNrUG9wb3ZlcicpIGZlZWRCYWNrUG9wT3ZlcjogU2F0UG9wb3ZlcjtcclxuICBAVmlld0NoaWxkcmVuKFwiZmlsZVVwbG9hZERyb3B6b25lUG9wdXBcIikgZmlsZVVwbG9hZERyb3B6b25lUG9wdXA7XHJcbiAgQFZpZXdDaGlsZCgnZG9jdW1lbnRQb3BvdmVyJykgZG9jdW1lbnRQb3BvdmVyOiBTYXRQb3BvdmVyO1xyXG4gIHNvZnRMYWJlbHM6IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbFtdO1xyXG4gIEBJbnB1dCgpIG5vdGlmaWNQYW5lbDtcclxuICBAT3V0cHV0KCkgb3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQFZpZXdDaGlsZChcIm9wZW5Bbm5vdWNlbWVudERpYWxvZ0NvbXBvbmVudFwiKSBwcml2YXRlIG9wZW5Bbm5vdWNlbWVudERpYWxvZ0NvbXBvbmVudDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBzcGlubmVyVHlwZSA9IFNQSU5ORVIuY2lyY2xlO1xyXG4gIHB1YmxpYyBhdmFpbGFibGVMYW5ncyA9IEF2YWlsYWJsZUxhbmdzLmxhbmd1YWdlcztcclxuICBwdWJsaWMgYXZhaWxhYmxlTGFuZ3NNb2JpbGUgPSBbXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6IFwiRW5cIixcclxuICAgICAgY29kZTogXCJlblwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiBcIlRlXCIsXHJcbiAgICAgIGNvZGU6IFwidGVcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogXCJLb1wiLFxyXG4gICAgICBjb2RlOiBcImtvXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6IFwiQXJcIixcclxuICAgICAgY29kZTogXCJhclwiXHJcbiAgICB9XHJcbiAgXTtcclxuICAvLyB0aGVtZU1vZGVsJDogT2JzZXJ2YWJsZTxUaGVtZU1vZGVsPjtcclxuICBjb3VudE9mTm90aWZpY2F0aW9ucyQ6IE9ic2VydmFibGU8bnVtYmVyPjtcclxuICBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25PdXRwdXRNb2RlbFtdPjtcclxuICB1bnJlYWRDb3VudE9mTm90aWZpY2F0aW9ucyQ6IE9ic2VydmFibGU8bnVtYmVyPjtcclxuICBhc3NldElkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gIHVzZXJTdG9yZUlkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gIHRoZW1lTW9kZWw6IFRoZW1lTW9kZWw7XHJcbiAgcmVsb2FkOiBib29sZWFuO1xyXG4gIHB1YmxpYyBuZ0Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGRhc2hib2FyZEZpbHRlcnMgPSB7XHJcbiAgICBwcm9qZWN0SWQ6IG51bGwsXHJcbiAgICB1c2VySWQ6IG51bGwsXHJcbiAgICBnb2FsSWQ6IG51bGwsXHJcbiAgICBpc0RhaWxvZ3VlOiB0cnVlXHJcbiAgfTtcclxuICBwdWJsaWMgZWdyZXRUaGVtZXM7XHJcbiAgcHVibGljIGxheW91dENvbmY6IGFueTtcclxuICBwdWJsaWMgdGltZXNoZWV0RGlzYWJsZW9yRW5hYmxlOiBUaW1lc2hlZXREaXNhYmxlb3JFbmFibGU7XHJcbiAgZG9tYWluczogYW55W107XHJcbiAgbG9hZGluZ0luUHJvZ3Jlc3MkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gIHRpbWVQdW5jaENhcmRTaG93ID0gZmFsc2U7XHJcbiAgc2hvd1RyYWlsUGVyaW9kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYXBwbGljYXRpb25WZXJzaW9uOiBhbnk7XHJcbiAgY29tcGFuaWVzTGlzdCA9IFtdO1xyXG4gIG1lbnVUeXBlOiBzdHJpbmdcclxuICBpc0ZlZWRCYWNrRGlhbG9nOiBib29sZWFuO1xyXG4gIHNlbGVjdGVkTGFuZ05hbWU6IHN0cmluZztcclxuICBjdXJyZW50TGFuZzogc3RyaW5nO1xyXG4gIHNlbGVjdGVkU3RvcmVJZDogc3RyaW5nID0gXCJcIjtcclxuICB1c2VyU3RvcmVJZDogc3RyaW5nO1xyXG4gIHN0b3Jlc0xpc3Q6IFN0b3JlTW9kZWxbXTtcclxuICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xyXG4gIGlzUmVjb3JkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvamVjdFJvbGVUZXh0OiBzdHJpbmcgPSAnUHJvamVjdCByb2xlIGNvbmZpZ3VyYXRpb24nO1xyXG4gIGxvZ2dlZEluVXNlcklkOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGNvbXBhbnk6IGFueTtcclxuICBsb2dnZWRVc2VyRGV0YWlsczogYW55O1xyXG4gIG5vT2ZEYXlzOiBhbnk7XHJcbiAgc2hvd0RlbGV0ZUljb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93RGVsZXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNTdG9yZUFjY2VzczogYm9vbGVhbiA9IHRydWU7XHJcbiAgY29tcGFueUlkOiBzdHJpbmc7XHJcbiAgcmV0dXJuVXJsOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRDb21wYW55TmFtZTogc3RyaW5nO1xyXG4gIHNlbGVjdGVkQ29tcGFueTogQ29tcGFuaWVzTGlzdDtcclxuICB1c2VyTmFtZTogc3RyaW5nO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgYXV0aGVudGljYXRlZFVzZXJSZWNvcmQ6IFVzZXJNb2RlbDtcclxuICBlbXBsb3llZUlkOiBzdHJpbmc7XHJcbiAgaXNGZWVkVGltZVNoZWV0OiBib29sZWFuO1xyXG4gIGRlZmF1bHREYXNoYm9hcmRJZDogc3RyaW5nO1xyXG4gIHRpbWVTaGVldEJ1dHRvbkRldGFpbHMkOiBPYnNlcnZhYmxlPFRpbWVzaGVldERpc2FibGVvckVuYWJsZT5cclxuICBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25PdXRwdXRNb2RlbFtdO1xyXG4gIGFubm91bmNlbWVudElkOiBzdHJpbmc7XHJcbiAgYW5ub3VuY2VOb3RpZmljYXRpb25JZDogc3RyaW5nO1xyXG4gIGRpc3BsYXlXZWxjb21lTm90ZTogYm9vbGVhbjtcclxuICBsb2dnZWRJbkNvdW50OiBhbnk7XHJcbiAgdXNlckZ1bGxOYW1lOiBhbnk7XHJcbiAgZmlsZXM6IEZpbGVbXSA9IFtdO1xyXG4gIGZpbGVzUHJlc2VudDogYm9vbGVhbjtcclxuICBwcm9ncmVzc1ZhbHVlOiBudW1iZXI7XHJcbiAgZmlsZVJlc3VsdE1vZGVsOiBGaWxlUmVzdWx0TW9kZWxbXTtcclxuICBtb2R1bGVUeXBlSWQgPSA5O1xyXG4gIGFueU9wZXJhdGlvbkluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgZmlsZUluZGV4OiBudW1iZXIgPSAwO1xyXG4gIGZpbGVDb3VudGVyOiBudW1iZXIgPSAxO1xyXG4gIHVwbG9hZGVkRmlsZU5hbWVzID0gW107XHJcbiAgaXNGaWxlVXBsb2FkQ29tcGxldGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNGb2xkZXJVcGxvYWRDb21wbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpbXBvcnRpbmdJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9IG51bGw7XHJcbiAgLy8gbWVzc2FnZXNVbnJlYWRDb3VudDogbnVtYmVyID0gMDtcclxuICBjaGFubmVsTGlzdDogYW55O1xyXG4gIHVzZXJDaGFubmVsczogYW55O1xyXG4gIGNvbGxlYWd1ZXNMaXN0OiBhbnk7XHJcbiAgbG9nZ2VkSW5Vc2VyZnVsbE5hbWU6IGFueTtcclxuICBsb2dJblVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDdXJyZW50VXNlcklkXCIpO1xyXG4gIGxvZ2luVXNlcmNoYW5uZWxOYW1lOiBzdHJpbmc7XHJcbiAgcHJldmlvdXNNZXNzYWdlOiBhbnk7XHJcbiAgcHVibGlzaGluZ01lc3NhZ2VPZlVzZXI6IGFueTtcclxuICBuZXdOb3RpZmljYXRpb25zQ291bnQ6IGFueSA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwdXNoTm90aWZpY2F0aW9uczogUHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZSxcclxuICAgIHByaXZhdGUgbmd4U2VydmljZTogTmd4VWlMb2FkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYXlvdXQ6IExheW91dFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8U3RhdGU+LFxyXG4gICAgcHJpdmF0ZSBwdWJudWI6IFB1Yk51YkFuZ3VsYXIsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGlvblVwZGF0ZXMkOiBBY3Rpb25zLFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmVNYW5hZ2VtZW50U2VydmljZTogU3RvcmVNYW5hZ2VtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgU2hlbGxNb2R1bGVzU2VydmljZTogU2hlbGxNb2R1bGVzU2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhdFNlcnZpY2U6IENoYXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzaWduYWxyOiBTaWduYWxyU2VydmljZSxcclxuICAgIEBJbmplY3QoV0lORE9XKSBwcml2YXRlIHdpbmRvdzogV2luZG93XHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgLy8gdGhpcy5zaWduYWxyLmluaXRpYWxpemVTaWduYWxSQ29ubmVjdGlvbigpO1xyXG4gICAgdGhpcy5zaWduYWxyLm5vdGlmaWNhdGlvbnMkLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB0aGlzLm5ld05vdGlmaWNhdGlvbnNDb3VudCA9IGRhdGEgJiYgZGF0YS5sZW5ndGggPyBkYXRhLmxlbmd0aCA6IDApO1xyXG5cclxuICAgIHRoaXMucHVzaE5vdGlmaWNhdGlvbnMucmVxdWVzdFBlcm1pc3Npb24oKTtcclxuICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTtcclxuICAgIC8vIHRoaXMuZ2V0QWN0VHJhY2tlclJlY29yZGVyKCk7XHJcbiAgICBpZiAoKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSAhPSBudWxsICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSAhPSB1bmRlZmluZWQpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5sb2FkTm90aWZpY2F0aW9ucygpO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1cnJlbnRDdWx0dXJlID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRDdWx0dXJlKTtcclxuICAgIGNvbnN0IGNvbXBhbnlsYW4gPSBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55RGV0YWlscykpO1xyXG4gICAgbGV0IGN1cnJlbnRDdWx0dXJlbGFuID0gY29tcGFueWxhbi5sYW5Db2RlO1xyXG5cclxuICAgIGlmIChjdXJyZW50Q3VsdHVyZSA9PSAnJyB8fCBjdXJyZW50Q3VsdHVyZSA9PSBudWxsIHx8IGN1cnJlbnRDdWx0dXJlID09IHVuZGVmaW5lZCB8fCBjdXJyZW50Q3VsdHVyZSA9PT0gJ251bGwnIHx8IGN1cnJlbnRDdWx0dXJlID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBpZiAoY3VycmVudEN1bHR1cmVsYW4gPT0gJycgfHwgY3VycmVudEN1bHR1cmVsYW4gPT0gbnVsbCB8fCBjdXJyZW50Q3VsdHVyZWxhbiA9PSB1bmRlZmluZWQgfHwgY3VycmVudEN1bHR1cmVsYW4gPT09ICdudWxsJyB8fCBjdXJyZW50Q3VsdHVyZWxhbiA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICBjdXJyZW50Q3VsdHVyZSA9ICdlbic7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY3VycmVudEN1bHR1cmUgPSBjdXJyZW50Q3VsdHVyZWxhbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50TGFuZyA9IGN1cnJlbnRDdWx0dXJlO1xyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUsIHRoaXMuY3VycmVudExhbmcsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgb2ZUeXBlKEF1dGhlbnRpY2F0aW9uQWN0aW9uVHlwZXMuVXNlckRldGFpbHNGZXRjaGVkQWZ0ZXJDb21wYW55TG9naW4pLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlbG9hZCA9IHRydWU7XHJcbiAgICAgICAgICAvLyB0aGlzLmNoYXRTZXJ2aWNlLmdldFJlY2VudENoYW5uZWxNZXNzYWdlcygpLnN1YnNjcmliZSgocmVjZW50Q2hhbm5lbE1lc3NhZ2VzOiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vICAgcmVjZW50Q2hhbm5lbE1lc3NhZ2VzLmRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIC8vICAgICB0aGlzLm1lc3NhZ2VzVW5yZWFkQ291bnQgKz0gZWxlbWVudC51bnJlYWRNZXNzYWdlQ291bnQ7XHJcbiAgICAgICAgICAvLyAgIH0pO1xyXG4gICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAvLyB0aGlzLmNoYXRTZXJ2aWNlLmdldFJlY2VudEluZGl2aWR1YWxNZXNzYWdlcygpLnN1YnNjcmliZSgocmVjZW50Q29sbGVhZ3VlTWVzc2FnZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8gICB2YXIgdW5pcSA9IHt9O1xyXG4gICAgICAgICAgLy8gICByZWNlbnRDb2xsZWFndWVNZXNzYWdlcy5kYXRhID0gcmVjZW50Q29sbGVhZ3VlTWVzc2FnZXMuZGF0YS5maWx0ZXIob2JqID0+ICF1bmlxW29iai5pZF0gJiYgKHVuaXFbb2JqLmlkXSA9IHRydWUpKTtcclxuICAgICAgICAgIC8vICAgcmVjZW50Q29sbGVhZ3VlTWVzc2FnZXMuZGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgLy8gICAgIGlmKGVsZW1lbnQuaWQgIT0gdGhpcy5sb2dnZWRJblVzZXJJZCl7XHJcbiAgICAgICAgICAvLyAgICAgdGhpcy5tZXNzYWdlc1VucmVhZENvdW50ICs9IGVsZW1lbnQudW5yZWFkTWVzc2FnZUNvdW50O1xyXG4gICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgIC8vICAgfSk7XHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgIHRoaXMuZ2V0SW50cm9EZXRhaWxzKCk7XHJcbiAgICAgICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICAgICAgICB0aGlzLmdldE5vdGlmaWNhdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZ2V0VGVhbU1lbWJlcnMoKTtcclxuICAgICAgICAgIHZhciBEZWZhdWx0RGFzaGJvYXJkSWRGb3JMb2dnZWRJblVzZXIgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpKSA6IG51bGw7XHJcbiAgICAgICAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgICAgICAgaWYgKCFEZWZhdWx0RGFzaGJvYXJkSWRGb3JMb2dnZWRJblVzZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucmV0dXJuVXJsXSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyBEZWZhdWx0RGFzaGJvYXJkSWRGb3JMb2dnZWRJblVzZXIgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgRGVmYXVsdERhc2hib2FyZElkRm9yTG9nZ2VkSW5Vc2VyKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG5cclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoQXV0aGVudGljYXRpb25BY3Rpb25UeXBlcy5Vc2VyRGV0YWlsc0ZldGNoZWRBZnRlckxvZ2luKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IEN1cnJlbnRVc2VySWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCk7XHJcbiAgICAgICAgICAgICAgLy8gU3Vic2NyaWJlIHRvIFRhc2sgQXNzaWdubWVudCBOb3RpZmljYWl0b25zIGhlcmUuXHJcbiAgICAgICAgICAgICAgY29uc3QgdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVGFza0Fzc2lnbm1lbnRzICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zdCB0YXN0YXR1c1JlcG9ydFN1Ym1pc3Npb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3RhdHVzUmVwb3J0U3VibWlzc2lvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgdGFzdGF0dXNDb25maWdBc3NpZ25DaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3RhdHVzQ29uZmlnQXNzaWduICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zdCBtdWx0aUNoYXJ0c1NjaGVkdWxpbmdDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTXVsdGlDaGFydHNTY2hlZHVsaW5nICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zdCBhc3NldHNBc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Bc3NldEFzc2lnbm1lbnQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByb2plY3RDcmVhdGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX05ld1Byb2plY3QgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Qcm9qZWN0TWVtYmVyUm9sZSArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgZ29hbEFwcHJvdmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0dvYWxBcHByb3ZlZEZyb21SZXBsYW4gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHVzZXJTdG9yeVVwZGF0ZUNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Vc2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IEFubm91bmNlbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Bbm5vdW5jZW1lbnROb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHB1cmNoYXNlRXhlY3V0aW9uQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUHVyY2hhc2VFeGVjdXRpb25Bc3NpZ25Ub0VtcGxveWVlTm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvIFwiICsgdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvIFwiICsgdGFzdGF0dXNSZXBvcnRTdWJtaXNzaW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0byBcIiArIHRhc3RhdHVzQ29uZmlnQXNzaWduQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBwcm9qZWN0Q3JlYXRlZENoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIHVzZXJTdG9yeVVwZGF0ZUNoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIEFubm91bmNlbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIHB1cmNoYXNlRXhlY3V0aW9uQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgICBwdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIGNoYW5uZWxzOiBbdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCB0YXN0YXR1c1JlcG9ydFN1Ym1pc3Npb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgICAgICAgICAgICB0YXN0YXR1c0NvbmZpZ0Fzc2lnbkNoYW5uZWxUb1N1YnNjcmliZUludG8sIG11bHRpQ2hhcnRzU2NoZWR1bGluZ0NoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgICAgICAgICAgIGFzc2V0c0Fzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCAsXHJcbiAgICAgICAgICAgICAgICAgIHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8sIGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgICAgICAgICAgIHVzZXJTdG9yeVVwZGF0ZUNoYW5uZWxUb1N1YnNjcmliZUludG8sIEFubm91bmNlbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8sIHB1cmNoYXNlRXhlY3V0aW9uQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvXVxyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAvLyBBZGQgb3RoZXIgc3Vic2NyaXB0aW9ucyBoZXJlLlxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVXNlciBub3QgbG9nZ2VkIGluIHlldCB0byBiZSBhYmxlIHRvIHN1YnNjcmliZS5cIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciByb2xlVXBkYXRlc0NoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Sb2xlVXBkYXRlcyArIFwiMTlCNkY5RkMtNzM3MC00QjlDLUEwNUMtM0I4RDgxOUVFRUFGXCI7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG8gXCIgKyByb2xlVXBkYXRlc0NoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICBwdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICBjaGFubmVsczogW3JvbGVVcGRhdGVzQ2hhbm5lbFRvU3Vic2NyaWJlSW50b11cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9LCAzMDAwKTtcclxuICAgICAgICB9KSkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIG9mVHlwZShOb3RpZmljYXRpb25zQWN0aW9uVHlwZXMuQ2xlYXJBbGxVbnJlYWROb3RpZmljYXRpb25zQ29tcGxldGVkKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Tm90aWZpY2F0aW9uQWxsKSk7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0geDtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmluZEluZGV4KChwKSA9PiBKU09OLnBhcnNlKHAubm90aWZpY2F0aW9uSnNvbikuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuQW5ub3VuY2VtZW50X1JlY2VpdmVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgLy90aGlzLmFubm91bmNlTm90aWZpY2F0aW9uSWQgPSBKU09OLnBhcnNlKHRoaXMubm90aWZpY2F0aW9uc1tpbmRleF0ubm90aWZpY2F0aW9uSnNvbikubm90aWZpY2F0aW9uSWQ7XHJcbiAgICAgICAgICAgICAgdGhpcy5hbm5vdW5jZU5vdGlmaWNhdGlvbklkID0gdGhpcy5ub3RpZmljYXRpb25zW2luZGV4XS5ub3RpZmljYXRpb25JZDtcclxuICAgICAgICAgICAgICB0aGlzLm9wZW5Bbm5vdW5jZW1lbnREaWFsb2coSlNPTi5wYXJzZSh0aGlzLm5vdGlmaWNhdGlvbnNbaW5kZXhdLm5vdGlmaWNhdGlvbkpzb24pKTtcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAvLyB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAvLyAgIC5waXBlKFxyXG4gICAgLy8gICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAvLyAgICAgb2ZUeXBlKE1lc3NhZ2VBY3Rpb25UeXBlcy5Db3VudENvbXBsZXRlZCksXHJcbiAgICAvLyAgICAgdGFwKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgLy8gICAgICAgdGhpcy5tZXNzYWdlc1VucmVhZENvdW50ID0gcmVzdWx0Lm1lc3NhZ2VDb3VudDtcclxuICAgIC8vICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgLy8gICAgIH0pXHJcbiAgICAvLyAgIClcclxuICAgIC8vICAgLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoTWVzc2FnZUFjdGlvblR5cGVzLlJlcXVlc3RpbmdTdGF0ZU9mVXNlcnNDb21wbGV0ZWQpLFxyXG4gICAgICAgIHRhcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3ViU2NyaWJpbmdUb1ByZXNlbmNlQ2hhbm5lbCgpO1xyXG5cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoTWVzc2FnZUFjdGlvblR5cGVzLk1lc3NhZ2VDb21wbGV0ZWQpLFxyXG4gICAgICAgIHRhcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHZhciBtZXNzYWdlRGV0YWlscyA9IHJlc3VsdFsnbWVzc2FnZURldGFpbHMnXTtcclxuICAgICAgICAgIHRoaXMucHVibGlzaGluZ01lc3NhZ2VPZlVzZXIgPSBtZXNzYWdlRGV0YWlscztcclxuICAgICAgICAgIHRoaXMucHVibGlzaGluZ01lc3NhZ2UoKTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoTWVzc2FnZUFjdGlvblR5cGVzLlNlbmRDaGFubmVsVXBkYXRlTW9kZWxDb21wbGV0ZWQpLFxyXG4gICAgICAgIHRhcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHZhciBjaGFubmVsVXBkYXRlTW9kZWwgPSByZXN1bHRbJ2NoYW5uZWxVcGRhdGVNb2RlbCddO1xyXG4gICAgICAgICAgdmFyIGxvZ2luQ29tcGFueUlkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlJZFwiKTtcclxuICAgICAgICAgIHRoaXMucHVibnViLnB1Ymxpc2goe1xyXG4gICAgICAgICAgICBjaGFubmVsOiBbKGxvZ2luQ29tcGFueUlkICsgJy0nICsgY2hhbm5lbFVwZGF0ZU1vZGVsLmNoYW5uZWxJZCldLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiBKU09OLnN0cmluZ2lmeShjaGFubmVsVXBkYXRlTW9kZWwpXHJcbiAgICAgICAgICB9LCBmdW5jdGlvbiAoc3RhdHVzLCByZXNvcG5zZSkge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhzdGF0dXMpXHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc29wbnNlKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcblxyXG4gICAgdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIG9mVHlwZShNZXNzYWdlQWN0aW9uVHlwZXMuU2VuZGluZ1NpZ25hbENvbXBsZXRlZCksXHJcbiAgICAgICAgdGFwKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdmFyIG1lc3NhZ2VUeXBpbmdEZXRhaWxzID0gcmVzdWx0Lm1lc3NhZ2VUeXBpbmdEZXRhaWxzO1xyXG4gICAgICAgICAgdmFyIHNpZ25hbE1lc3NhZ2UgPSBuZXcgTWVzc2FnZVR5cGluZ0RldGFpbHMoKTtcclxuICAgICAgICAgIHNpZ25hbE1lc3NhZ2Uuc3RhdGUgPSBtZXNzYWdlVHlwaW5nRGV0YWlscy5zdGF0ZTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2VUeXBpbmdEZXRhaWxzLCBzaWduYWxNZXNzYWdlKTtcclxuICAgICAgICAgIC8vIHRoaXMucHVibnViLnNpZ25hbCh7XHJcbiAgICAgICAgICAvLyAgIGNoYW5uZWw6W21lc3NhZ2VUeXBpbmdEZXRhaWxzLnB1Ym51YkNoYW5uZWxOYW1lT2ZNZXNzYWdlXSxcclxuICAgICAgICAgIC8vICAgbWVzc2FnZSA6IEpTT04uc3RyaW5naWZ5KHNpZ25hbE1lc3NhZ2UpXHJcbiAgICAgICAgICAvLyB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG4gICAgY29uc3Qgc3RvcmVMaXN0bmVyID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCItLS0tLS0tLS1SZWNlaXZlZCBwdWJudWIgbWVzc2FnZS0tLS0tLS0tLVwiKTtcclxuICAgICAgLy90aGlzLnRvYXN0ci5pbmZvKG1lc3NhZ2UubWVzc2FnZS5TdW1tYXJ5KTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICAvL1JlY2VpdmluZyB0aGUgVXNlciBTdG9yeSBBc3NpZ25lZCBOb3RpZmljYXRpb25cclxuICAgICAgICBpZiAodHlwZW9mIChtZXNzYWdlLm1lc3NhZ2UpID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICB2YXIgaW5kZXhPZkN1cnJlbnRUb3BpYzogbnVtYmVyO1xyXG4gICAgICAgICAgdmFyIG1lc3NhZ2VEZXRhaWxzT2JqZWN0ID0gSlNPTi5wYXJzZShtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgaWYgKG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnRleHRNZXNzYWdlIHx8IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmZpbGVQYXRoIHx8IG1lc3NhZ2VEZXRhaWxzT2JqZWN0Lm1lc3NhZ2VUeXBlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJlY2VpdmVNZXNzYWdlVHJpZ2dlcmVkKG1lc3NhZ2VEZXRhaWxzT2JqZWN0KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlRGV0YWlsc09iamVjdC5pc0Zyb21DaGFubmVsQXJjaGl2ZSA9PSB0cnVlIHx8XHJcbiAgICAgICAgICAgIG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmlzRnJvbVJlbW92ZU1lbWJlciA9PSB0cnVlIHx8XHJcbiAgICAgICAgICAgIG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnJlZnJlc2hDaGFubmVscyA9PSB0cnVlIHx8IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmlzRnJvbUFkZE1lbWJlciA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuZ2V0VXNlckNoYW5uZWxzKCkuc3Vic2NyaWJlKChjaGFubmVsczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFubmVsTGlzdCA9IGNoYW5uZWxzLmRhdGE7XHJcbiAgICAgICAgICAgICAgdmFyIGxvZ2luQ29tcGFueUlkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlJZFwiKTtcclxuICAgICAgICAgICAgICB2YXIgY2hhbm5lbE5hbWUgPSBsb2dpbkNvbXBhbnlJZCArICctJyArIG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmNoYW5uZWxJZDtcclxuICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNoYW5uZWxMaXN0LmZpbmRJbmRleCh4ID0+IHguaWQgPT0gbWVzc2FnZURldGFpbHNPYmplY3QuY2hhbm5lbElkKTtcclxuICAgICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEgJiYgKG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnJlZnJlc2hDaGFubmVscyA9PSB0cnVlIHx8IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmlzRnJvbUFkZE1lbWJlciA9PSB0cnVlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgY2hhbm5lbHM6IFtjaGFubmVsTmFtZV1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHM6IFtjaGFubmVsTmFtZV1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUmVjZWl2ZUNoYW5uZWxVcGRhdGVNb2RlbFRyaWdnZXJlZChtZXNzYWdlRGV0YWlsc09iamVjdCkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsICE9IFwiL2NoYXRcIiAmJiBtZXNzYWdlRGV0YWlsc09iamVjdC5tZXNzYWdlVHlwZSAhPSBcIlJlYWN0aW9uXCIgJiYgbWVzc2FnZURldGFpbHNPYmplY3QuYm9keSAhPSBudWxsICYmIG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnRpdGxlICE9IG51bGwgJiYgKG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmlzUGlubmVkID09IG51bGwgfHwgbWVzc2FnZURldGFpbHNPYmplY3QuaXNQaW5uZWQgPT0gdW5kZWZpbmVkKSAmJiAobWVzc2FnZURldGFpbHNPYmplY3QuaXNTdGFycmVkID09IG51bGwgfHwgbWVzc2FnZURldGFpbHNPYmplY3QuaXNTdGFycmVkID09IHVuZGVmaW5lZCkgJiYgbWVzc2FnZURldGFpbHNPYmplY3Quc2VuZGVyVXNlcklkICE9IHRoaXMubG9nSW5Vc2VySWQpIHtcclxuICAgICAgICAgICAgaWYgKG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmNoYW5uZWxJZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuZ2V0VXNlckNoYW5uZWxzKCkuc3Vic2NyaWJlKChjaGFubmVsczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5uZWxMaXN0ID0gY2hhbm5lbHMuZGF0YTtcclxuICAgICAgICAgICAgICAgIGluZGV4T2ZDdXJyZW50VG9waWMgPSB0aGlzLmNoYW5uZWxMaXN0LmZpbmRJbmRleCh4ID0+IHguaWQgPT0gbWVzc2FnZURldGFpbHNPYmplY3QuY2hhbm5lbElkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleE9mQ3VycmVudFRvcGljICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIHRoaXMubm90aWZpY2F0aW9uT2ZDaGF0KG1lc3NhZ2VEZXRhaWxzT2JqZWN0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAvLyB0aGlzLm5vdGlmaWNhdGlvbk9mQ2hhdChtZXNzYWdlRGV0YWlsc09iamVjdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2VcclxuICAgICAgICAgIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Ob3RpZmljYXRpb25fV29ya0l0ZW1Bc3NpZ25lZFRvVXNlcikge1xyXG4gICAgICAgICAgICB2YXIgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24gPSBuZXcgVXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdXb3JrSXRlbSArIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbklkO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZCh1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5HZW5lcmljTm90aWZpY2F0aW9uQWN0aXZpdHkpIHtcclxuICAgICAgICAgICAgdmFyIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uID0gbmV3IFVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIC8vIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3V29ya0l0ZW0gKyB1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25JZDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQodXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24pKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkID09IE5vdGlmaWNhdGlvblR5cGVJZHMuTm90aWZpY2F0aW9uX1JvbGVVcGRhdGVkKSB7XHJcbiAgICAgICAgICAgIHZhciByb2xlVXBkYXRlZE5vdGlmaWNhdGlvbiA9IG5ldyBSb2xlVXBkYXRlZE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICByb2xlVXBkYXRlZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByb2xlVXBkYXRlZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHJvbGVVcGRhdGVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlN0YXR1c19SZXBvcnRfU3VtaXR0ZWQpIHtcclxuICAgICAgICAgICAgdmFyIHJlcG9ydFN1Ym1pdHRlZE5vdGlmaWNhdGlvbiA9IG5ldyBSZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgcmVwb3J0U3VibWl0dGVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJlcG9ydFN1Ym1pdHRlZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHJlcG9ydFN1Ym1pdHRlZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5TdGF0dXNfUmVwb3J0X0NvbmZpZ19DcmVhdGVkKSB7XHJcbiAgICAgICAgICAgIHZhciByZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbiA9IG5ldyBSZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICByZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHJlcG9ydENvbmZpZ0Fzc2lnbmVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLk11bHRpcGxlX0NoYXJ0c19TY2hlZHVsaW5nX2NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgdmFyIG11bHRpcGxlQ2hhcnRzU2NoZWR1bGluZyA9IG5ldyBNdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcoKTtcclxuICAgICAgICAgICAgbXVsdGlwbGVDaGFydHNTY2hlZHVsaW5nLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIG11bHRpcGxlQ2hhcnRzU2NoZWR1bGluZy5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKG11bHRpcGxlQ2hhcnRzU2NoZWR1bGluZykpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Bc3NldHNfQXNzaWdubWVudCkge1xyXG4gICAgICAgICAgICBjb25zdCBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uID0gbmV3IEFzc2V0QXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQoYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUmVtaW5kZXJfTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uID0gbmV3IEFzc2V0QXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQoYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuQW5ub3VuY2VtZW50X1JlY2VpdmVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uID0gbmV3IEFzc2V0QXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQoYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgICAvLyBpZiAobWVzc2FnZS5tZXNzYWdlLklkICE9IHRoaXMuYW5ub3VuY2VOb3RpZmljYXRpb25JZCkge1xyXG4gICAgICAgICAgICAvLyAgIHRoaXMuYW5ub3VuY2VOb3RpZmljYXRpb25JZCA9IG1lc3NhZ2UubWVzc2FnZS5JZDtcclxuICAgICAgICAgICAgLy8gICB0aGlzLm9wZW5Bbm5vdW5jZW1lbnREaWFsb2cobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUGVyZm9ybWFuY2VfUmVjZWl2ZWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIHx8IG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Qcm9qZWN0TWVtYmVyUm9sZUFkZGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uID0gbmV3IE5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuTmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgfHwgbWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlByb2plY3RNZW1iZXJSb2xlQWRkZWROb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24gPSBuZXcgTmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICBuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Hb2FsQXBwcm92ZWRGcm9tUmVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBnb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbCA9IG5ldyBHb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICBnb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbC5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBnb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGdvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5VU2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwgPSBuZXcgVXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgdXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgdXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZCh1c2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25Nb2RlbCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUHVzaE5vdGlmaWNhdGlvbkZvclVzZXJTdG9yeUNvbW1lbnQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZXJTdG9yeUNvbW1lbnROb3RpZmljYXRpb25Nb2RlbCA9IG5ldyBVc2VyU3RvcnlDb21tZW50Tm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgdXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHVzZXJTdG9yeUNvbW1lbnROb3RpZmljYXRpb25Nb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHVzZXJTdG9yeUNvbW1lbnROb3RpZmljYXRpb25Nb2RlbCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuU3ByaW50U3RhcnRlZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3ByaW50U3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsID0gbmV3IFNwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICBzcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgc3ByaW50U3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQoc3ByaW50U3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5TcHJpbnRSZXF1ZXN0ZEZvclJFcGxhbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3ByaW50UmVwbGFuU3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsID0gbmV3IFNwcmludFJlcGxhblN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICBzcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgc3ByaW50UmVwbGFuU3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQoc3ByaW50UmVwbGFuU3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Qcm9qZWN0RmVhdHVyZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3UHJvamVjdEZlYXR1cmVDcmVhdGVkTm90aWZpY2F0aW9uID0gbmV3IE5ld1Byb2plY3RGZWF0dXJlQ3JlYXRlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAgICAgICAgIG5ld1Byb2plY3RGZWF0dXJlQ3JlYXRlZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBuZXdQcm9qZWN0RmVhdHVyZUNyZWF0ZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChuZXdQcm9qZWN0RmVhdHVyZUNyZWF0ZWROb3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlVzZXJTdG9yeUFyY2hpdmUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1VzZXJTdG9yeUFyY2hpdmVNb2RlbCA9IG5ldyBVc2VyU3RvcnlBcmNoaXZlTm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgbmV3VXNlclN0b3J5QXJjaGl2ZU1vZGVsLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIG5ld1VzZXJTdG9yeUFyY2hpdmVNb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKG5ld1VzZXJTdG9yeUFyY2hpdmVNb2RlbCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuVXNlclN0b3J5UGFyay50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3VXNlclN0b3J5UGFya01vZGVsID0gbmV3IFVzZXJTdG9yeVBhcmtOb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICBuZXdVc2VyU3RvcnlQYXJrTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbmV3VXNlclN0b3J5UGFya01vZGVsLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobmV3VXNlclN0b3J5UGFya01vZGVsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuTGVhdmVBcHBsaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5BcHByb3ZlTGVhdmVBcHBsaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5SZWplY3RMZWF2ZUFwcGxpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlJlc2lnbmF0aW9uTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlJlc2lnbmF0aW9uQXBwcm92YWxOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUmVzaWduYXRpb25SZWplY3Rpb25Ob3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuQXV0b1RpbWVTaGVldFN1Ym1pc3Npb25Ob3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUHJvYmF0aW9uQXNzaWduTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5SZXZpZXdJbnZpdGF0aW9uTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlBlcmZvcm1hbmNlUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5QZXJmb3JtYW5jZVJldmlld0ludml0YXRpb25Ob3RpZmljYXRpb25Nb2RlbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5QZXJmb3JtYW5jZVJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUHVyY2hhc2VTaGlwbWVudE5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBwdXJjaGFzZUV4ZWN1dGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHB1cmNoYXNlRXhlY3V0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHB1cmNoYXNlRXhlY3V0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5FZGl0UHVyY2hhc2VFeGVjdXRpb247XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHB1cmNoYXNlRXhlY3V0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gVE9ETzogU2VuZCB0aGVzZSBlcnJvcnMgb250byBzZXJ2ZXIgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZ1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkZvdW5kIHVuZGV0ZWN0ZWQgbm90aWZpY2F0aW9uIHR5cGUuIFwiICsgbWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAvLyBBZGQgb3RoZXIgbm90aWZpY2F0aW9ucyBoZXJlLlxyXG5cclxuICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7XHJcbiAgICAgICAgLy8gVE9ETzogU2VuZCB0aGVzZSBleGNlcHRpb25zIG9udG8gc2VydmVyIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmdcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkV4Y2VwdGlvbiBPY2N1cmVkXCIgKyBleGNlcHRpb24ubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBzdGF0dXNPZlVzZXIgPSAocHJlc2VuY2VFdmVudCkgPT4ge1xyXG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBQcmVzZW5jZUV2ZW50VHJpZ2dlcmVkKHByZXNlbmNlRXZlbnQpKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHR5cGluZ1N0YXR1cyA9IChzaWduYWxFdmVudCkgPT4ge1xyXG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSZWNlaXZlU2lnbmFsVHJpZ2dlcmVkKHNpZ25hbEV2ZW50KSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYXRTZXJ2aWNlLmdldFB1Ym51YktleXMoKS5zdWJzY3JpYmUoKGtleXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnB1Ym51Yi5pbml0KHtcclxuICAgICAgICBwdWJsaXNoS2V5OiBrZXlzLmRhdGEucHVibGlzaEtleSxcclxuICAgICAgICBzdWJzY3JpYmVLZXk6IGtleXMuZGF0YS5zdWJzY3JpYmVLZXksXHJcbiAgICAgICAgdXVpZDogdGhpcy5sb2dJblVzZXJJZFxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmNoYXRTZXJ2aWNlLmdldEFsbFVzZXJzRm9yU2xhY2tBcHAoKS5zdWJzY3JpYmUoKGNvbGxlYWd1ZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29sbGVhZ3Vlc0xpc3QgPSBjb2xsZWFndWVzLmRhdGE7XHJcbiAgICAgICAgdGhpcy5jaGF0U2VydmljZS5nZXRVc2VyQ2hhbm5lbHMoKS5zdWJzY3JpYmUoKGNoYW5uZWxzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2hhbm5lbExpc3QgPSBjaGFubmVscy5kYXRhO1xyXG4gICAgICAgICAgdGhpcy5zaWduT3V0VXNlckNoYW5uZWxzKCk7XHJcbiAgICAgICAgICB2YXIgbG9naW5Db21wYW55SWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueUlkXCIpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2hhbm5lbExpc3QgIT0gdW5kZWZpbmVkIHx8IHRoaXMuY2hhbm5lbExpc3QgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpbmRleDEgPSAwOyBpbmRleDEgPCB0aGlzLmNoYW5uZWxMaXN0Lmxlbmd0aDsgaW5kZXgxKyspIHtcclxuICAgICAgICAgICAgICB0aGlzLnB1Ym51Yi5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgY2hhbm5lbHM6IFsobG9naW5Db21wYW55SWQgKyAnLScgKyB0aGlzLmNoYW5uZWxMaXN0W2luZGV4MV0uaWQpXVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnB1Ym51Yi5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBjaGFubmVsczogWygnQ2hhbm5lbFVwZGF0ZXMtJyArIGxvZ2luQ29tcGFueUlkKV1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5wdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgY2hhbm5lbHM6IFsoJ1VzZXJVcGRhdGVzLScgKyBsb2dpbkNvbXBhbnlJZCldXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHZhciBpbmRleDEyID0gdGhpcy5jb2xsZWFndWVzTGlzdC5maW5kSW5kZXgoeCA9PiB4LnVzZXJJZCA9PSB0aGlzLmxvZ0luVXNlcklkKTtcclxuICAgICAgICAgIGlmIChpbmRleDEyID4gLTEpIHtcclxuICAgICAgICAgICAgdmFyIG5hbWUgPSB0aGlzLmNvbGxlYWd1ZXNMaXN0W2luZGV4MTJdLmZ1bGxOYW1lO1xyXG4gICAgICAgICAgICBuYW1lID0gbmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIG5hbWUgPSB0aGlzLnJlcGxhY2VBbGwobmFtZSwgXCIgXCIsIFwiXCIpXHJcbiAgICAgICAgICAgIHRoaXMubG9naW5Vc2VyY2hhbm5lbE5hbWUgPSAobmFtZSArICctJyArIHRoaXMubG9nSW5Vc2VySWQpO1xyXG4gICAgICAgICAgICB0aGlzLnB1Ym51Yi5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgIGNoYW5uZWxzOiBbdGhpcy5sb2dpblVzZXJjaGFubmVsTmFtZV1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5wdWJudWIuYWRkTGlzdGVuZXIoe1xyXG4gICAgICAgIHN0YXR1czogc3QgPT4ge1xyXG4gICAgICAgICAgaWYgKHN0LmNhdGVnb3J5ID09PSBcIlBOVW5rbm93bkNhdGVnb3J5XCIpIHtcclxuICAgICAgICAgICAgdmFyIG5ld1N0YXRlID0ge1xyXG4gICAgICAgICAgICAgIG5ldzogXCJlcnJvclwiXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMucHVibnViLnNldFN0YXRlKFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHN0YXRlOiBuZXdTdGF0ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBmdW5jdGlvbiAoc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgLy8gICBjb25zb2xlLmxvZyhzdC5lcnJvckRhdGEubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2lnbmFsOiBzaWduYWxFdmVudCA9PiB7XHJcbiAgICAgICAgICB0eXBpbmdTdGF0dXMoc2lnbmFsRXZlbnQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcmVzZW5jZTogcHJlc2VuY2VFdmVudCA9PiB7XHJcbiAgICAgICAgICBzdGF0dXNPZlVzZXIocHJlc2VuY2VFdmVudClcclxuICAgICAgICB9LFxyXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmVkIHRvIFwiICsgbWVzc2FnZSk7XHJcbiAgICAgICAgICBzdG9yZUxpc3RuZXIobWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBhc3luYyBzaWduT3V0VXNlckNoYW5uZWxzKCkge1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3RoaXMubG9naW5Vc2VyY2hhbm5lbE5hbWVdIH0pO1xyXG4gICAgdmFyIGxvZ2luQ29tcGFueUlkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlJZFwiKTtcclxuICAgIGlmICh0aGlzLmNoYW5uZWxMaXN0ICE9IHVuZGVmaW5lZCB8fCB0aGlzLmNoYW5uZWxMaXN0ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuY2hhbm5lbExpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgY2hhbm5lbHM6IFsobG9naW5Db21wYW55SWQgKyAnLScgKyB0aGlzLmNoYW5uZWxMaXN0W2luZGV4XS5pZCldXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgICAgY2hhbm5lbHM6IFsoJ0NoYW5uZWxVcGRhdGVzLScgKyBsb2dpbkNvbXBhbnlJZCldXHJcbiAgICB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgICAgY2hhbm5lbHM6IFsoJ1VzZXJVcGRhdGVzLScgKyBsb2dpbkNvbXBhbnlJZCldXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHN1YlNjcmliaW5nVG9QcmVzZW5jZUNoYW5uZWwoKSB7XHJcbiAgICB2YXIgbG9naW5Db21wYW55SWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueUlkXCIpO1xyXG4gICAgdmFyIHByZXNlbmNlQ2hhbm5lbCA9IFwiTWVzc2VuZ2VyUHJlc2VuY2UtXCIgKyBsb2dpbkNvbXBhbnlJZDtcclxuICAgIGF3YWl0IHRoaXMucHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgIGNoYW5uZWxzOiBbcHJlc2VuY2VDaGFubmVsXSxcclxuICAgICAgd2l0aFByZXNlbmNlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIHRoaXMucHVibnViLmhlcmVOb3coe1xyXG4gICAgICBjaGFubmVsczogW3ByZXNlbmNlQ2hhbm5lbF0sXHJcbiAgICAgIGluY2x1ZGVVVUlEczogdHJ1ZSxcclxuICAgICAgaW5jbHVkZVN0YXRlOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgICAoc3RhdHVzLCByZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEluaXRhbFN0YXRlT2ZVc2Vyc1RyaWdnZXJlZChyZXNwb25zZSkpXHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gIH1cclxuICBwdWJsaXNoaW5nTWVzc2FnZSgpIHtcclxuICAgIGlmICh0aGlzLnB1Ymxpc2hpbmdNZXNzYWdlT2ZVc2VyLnB1Ym51YkNoYW5uZWxOYW1lT2ZNZXNzYWdlLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wdWJsaXNoaW5nTWVzc2FnZU9mVXNlci5wdWJudWJDaGFubmVsTmFtZU9mTWVzc2FnZS5mb3JFYWNoKGNoYW5uZWxOYW1lID0+IHtcclxuICAgICAgICB0aGlzLnB1Ym51Yi5wdWJsaXNoKHtcclxuICAgICAgICAgIGNoYW5uZWw6IFtjaGFubmVsTmFtZV0sXHJcbiAgICAgICAgICBtZXNzYWdlOiBKU09OLnN0cmluZ2lmeSh0aGlzLnB1Ymxpc2hpbmdNZXNzYWdlT2ZVc2VyKVxyXG4gICAgICAgIH0sIGZ1bmN0aW9uIChzdGF0dXMsIHJlc29wbnNlKSB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhzdGF0dXMpXHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXNvcG5zZSlcclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5Bbm5vdW5jZW1lbnREaWFsb2coYW5ub3VuY2VkKSB7XHJcbiAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xyXG4gICAgbGV0IGRpYWxvZ0lkID0gXCJhbm5vdWNlbWVudC1kaWFsb2dcIjtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5vcGVuQW5ub3VjZW1lbnREaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgbWluV2lkdGg6IFwiNjB2d1wiLFxyXG4gICAgICBtYXhXaWR0aDogXCI2MHZ3XCIsXHJcbiAgICAgIG1pbkhlaWdodDogXCI1MHZoXCIsXHJcbiAgICAgIG1heEhlaWdodDogXCI4MHZoXCIsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaWQ6IGRpYWxvZ0lkLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZGlhbG9nSWQ6IGRpYWxvZ0lkLFxyXG4gICAgICAgIGFubm91bmNlbWVudElkOiBhbm5vdW5jZWQuQW5ub3VuY2VtZW50SWQsXHJcbiAgICAgICAgYW5ub3VuY2VtZW50OiBhbm5vdW5jZWQuQW5ub3VuY2VtZW50LFxyXG4gICAgICAgIGFubm91bmNlZEJ5OiBhbm5vdW5jZWQuQW5ub3VuY2VkQnksXHJcbiAgICAgICAgYW5ub3VuY2VkQnlJZDogYW5ub3VuY2VkLkFubm91bmNlZEJ5SWQsXHJcbiAgICAgICAgYW5ub3VuY2VkQnlVc2VySW1hZ2U6IGFubm91bmNlZC5Bbm5vdW5jZWRCeVVzZXJJbWFnZSxcclxuICAgICAgICBhbm5vdW5jZWRPbjogYW5ub3VuY2VkLkFubm91bmNlZE9uXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmluZEluZGV4KChwKSA9PiBwLm5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSB0aGlzLmFubm91bmNlTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICB0aGlzLnVwc2VydFJlYWROb3RpZmljYXRpb24odGhpcy5ub3RpZmljYXRpb25zW2luZGV4XSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyBub3RpZmljYXRpb25PZkNoYXQobWVzc2FnZURldGFpbHNPYmplY3QpIHtcclxuICAvLyAgIGlmKHRoaXMucHJldmlvdXNNZXNzYWdlICE9IG1lc3NhZ2VEZXRhaWxzT2JqZWN0KXtcclxuICAvLyAgIHRoaXMubWVzc2FnZXNVbnJlYWRDb3VudCArPSAxO1xyXG4gIC8vICAgdmFyIGltYWdlZm9yTm90aWZpY2F0aW9uOiBhbnk7XHJcbiAgLy8gICBpZiAobWVzc2FnZURldGFpbHNPYmplY3Quc2VuZGVyUHJvZmlsZUltYWdlID09IG51bGwpIHtcclxuICAvLyAgICAgaW1hZ2Vmb3JOb3RpZmljYXRpb24gPSBcImh0dHBzOi8vcG5naW1hZ2UubmV0L3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDE4LzA1L2F2YXRhci1wbmctaW1hZ2VzLTEucG5nXCI7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBlbHNlIHtcclxuICAvLyAgICAgaW1hZ2Vmb3JOb3RpZmljYXRpb24gPSBtZXNzYWdlRGV0YWlsc09iamVjdC5zZW5kZXJQcm9maWxlSW1hZ2U7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBsZXQgb3B0aW9ucyA9IHtcclxuICAvLyAgICAgYm9keTogbWVzc2FnZURldGFpbHNPYmplY3QuYm9keSxcclxuICAvLyAgICAgaWNvbjogaW1hZ2Vmb3JOb3RpZmljYXRpb24sXHJcbiAgLy8gICAgIGRhdGE6IHtcclxuICAvLyAgICAgICBzZW5kZXJVc2VySWQ6IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnNlbmRlclVzZXJJZCxcclxuICAvLyAgICAgICBjaGFubmVsSWQ6IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmNoYW5uZWxJZFxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gICB0aGlzLnB1c2hOb3RpZmljYXRpb25zLmNyZWF0ZShtZXNzYWdlRGV0YWlsc09iamVjdC50aXRsZSwgb3B0aW9ucykuc3Vic2NyaWJlKFxyXG4gIC8vICAgICByZXMgPT4ge1xyXG4gIC8vICAgICAgIGlmIChyZXMuZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xyXG4gIC8vICAgICAgICAgd2luZG93LmZvY3VzKCk7XHJcbiAgLy8gICAgICAgICBpZiAodGhpcy5yb3V0ZXIudXJsICE9ICcvY2hhdCcpIHtcclxuICAvLyAgICAgICAgICAgaWYgKHJlcy5ub3RpZmljYXRpb24uZGF0YS5jaGFubmVsSWQgIT0gbnVsbCAmJiByZXMubm90aWZpY2F0aW9uLmRhdGEuY2hhbm5lbElkICE9IHVuZGVmaW5lZCkge1xyXG4gIC8vICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ2hhdElkLCByZXMubm90aWZpY2F0aW9uLmRhdGEuY2hhbm5lbElkKTtcclxuICAvLyAgICAgICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNoYXRJZCwgcmVzLm5vdGlmaWNhdGlvbi5kYXRhLnNlbmRlclVzZXJJZCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL2NoYXRcIl0pO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSxcclxuICAvLyAgICAgZXJyID0+IGNvbnNvbGUubG9nKGVycilcclxuICAvLyAgICk7XHJcbiAgLy8gICB0aGlzLnByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VEZXRhaWxzT2JqZWN0XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG4gIHVwc2VydFJlYWROb3RpZmljYXRpb24oc2VsZWN0ZWROb3RpZmljYXRpb24pIHtcclxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSBbXTtcclxuICAgIG5vdGlmaWNhdGlvbnMucHVzaChzZWxlY3RlZE5vdGlmaWNhdGlvbik7XHJcbiAgICBjb25zdCBub3RpaWZjYXRpb25tb2RlbCA9IEpTT04ucGFyc2Uoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uSnNvbik7XHJcbiAgICBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLk5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIHx8XHJcbiAgICAgIHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Qcm9qZWN0TWVtYmVyUm9sZUFkZGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL3Byb2plY3RzdGF0dXMvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Qcm9qZWN0R3VpZCArIFwiL2FjdGl2ZS1nb2Fsc1wiXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Hb2FsQXBwcm92ZWRGcm9tUmVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuR29hbEd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLk5vdGlmaWNhdGlvbl9Xb3JrSXRlbUFzc2lnbmVkVG9Vc2VyLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbS9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlVzZXJTdG9yeUd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlVTZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbS9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlVzZXJTdG9yeUlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5TcHJpbnRTdGFydGVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnQvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5TcHJpbnRHdWlkXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuUHVzaE5vdGlmaWNhdGlvbkZvclVzZXJTdG9yeUNvbW1lbnQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL3dvcmtpdGVtL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuVXNlclN0b3J5R3VpZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuR29hbFJlcXVlc3RkRm9yUkVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuR29hbEd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlNwcmludFJlcXVlc3RkRm9yUkVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnQvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5TcHJpbnRHdWlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Ob3RpZmljYXRpb25fQWRob2NXb3JrSXRlbUFzc2lnbmVkVG9Vc2VyLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW0vXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VyU3RvcnlHdWlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5BZGhvY1VTZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW0vXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VyU3RvcnlJZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuUHVyY2hhc2VTaGlwbWVudE5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJjbGllbnQvcHVyY2hhc2UtZXhlY3V0aW9uL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuUHVyY2hhc2VHdWlkXSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVcHNlcnRVbnJlYWROb3RpZmljYXRpb25zVHJpZ2dlcmVkKG5vdGlmaWNhdGlvbnMpKTtcclxuXHJcblxyXG4gIH1cclxuICBsb2FkTm90aWZpY2F0aW9ucygpIHtcclxuICAgIGNvbnN0IEN1cnJlbnRVc2VySWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCk7XHJcbiAgICAvLyBTdWJzY3JpYmUgdG8gVGFzayBBc3NpZ25tZW50IE5vdGlmaWNhaXRvbnMgaGVyZS5cclxuICAgIGNvbnN0IHRhc2tBc3NpZ25tZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Rhc2tBc3NpZ25tZW50cyArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB0YXN0YXR1c1JlcG9ydFN1Ym1pc3Npb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3RhdHVzUmVwb3J0U3VibWlzc2lvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB0YXN0YXR1c0NvbmZpZ0Fzc2lnbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TdGF0dXNDb25maWdBc3NpZ24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgbXVsdGlDaGFydHNTY2hlZHVsaW5nQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX011bHRpQ2hhcnRzU2NoZWR1bGluZyArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBhc3NldHNBc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Bc3NldEFzc2lnbm1lbnQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTmV3UHJvamVjdCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwcm9qZWN0QWNjZXNzVG9NZW1iZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUHJvamVjdE1lbWJlclJvbGUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgZ29hbEFwcHJvdmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0dvYWxBcHByb3ZlZEZyb21SZXBsYW4gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdXNlclN0b3J5VXBkYXRlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBBbm5vdW5jZW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfQW5ub3VuY2VtZW50Tm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IFJlbWluZGVyQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1JlbWluZGVyTm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IFBlcmZvcm1hbmNlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Blcm9mb3JtYW5jZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB1c2VyU3RvcnlDb21tZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeUNvbW1lbnQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3Qgc3ByaW50U3RhcnRlZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TcHJpbnRTdGFydGVkICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHNwcmludFJlcGxhbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TcHJpbnRSZXF1ZXN0ZWRUb1JlcGxhbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwcm9qZWN0RmVhdHVyZUNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Qcm9qZWN0RmVhdHVyZSArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB1c2VyU3RvcnlBcmNoaXZlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeUFyY2hpdmUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdXNlclN0b3J5UGFya0NoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Vc2VyU3RvcnlQYXJrICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IGdlbmVyaWNBY3Rpdml0eU5vdGlmaWNhdGlvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9HZW5lcmljQWN0aXZpdHlOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgcHVyY2hhc2VFeGVjdXRpb25Bc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9HZW5lcmljQWN0aXZpdHlOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG8gXCIgKyB0YXNrQXNzaWdubWVudENoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0byBcIiArIHRhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0byBcIiArIHRhc3RhdHVzQ29uZmlnQXNzaWduQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBhc3NldHNBc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgZ29hbEFwcHJvdmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyB1c2VyU3RvcnlVcGRhdGVDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIEFubm91bmNlbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgdXNlclN0b3J5Q29tbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgc3ByaW50U3RhcnRlZENoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgc3ByaW50UmVwbGFuQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgUGVyZm9ybWFuY2VDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIHByb2plY3RGZWF0dXJlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyB1c2VyU3RvcnlBcmNoaXZlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyB1c2VyU3RvcnlQYXJrQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBnZW5lcmljQWN0aXZpdHlOb3RpZmljYXRpb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIHB1cmNoYXNlRXhlY3V0aW9uQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuXHJcblxyXG4gICAgdGhpcy5wdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgY2hhbm5lbHM6IFt0YXNrQXNzaWdubWVudENoYW5uZWxUb1N1YnNjcmliZUludG8sIHRhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgdGFzdGF0dXNDb25maWdBc3NpZ25DaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBtdWx0aUNoYXJ0c1NjaGVkdWxpbmdDaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgIGFzc2V0c0Fzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCAsXHJcbiAgICAgICAgcHJvamVjdEFjY2Vzc1RvTWVtYmVyQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgZ29hbEFwcHJvdmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICB1c2VyU3RvcnlVcGRhdGVDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBBbm5vdW5jZW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgdXNlclN0b3J5Q29tbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8sIHNwcmludFN0YXJ0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgIHNwcmludFJlcGxhbkNoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgUGVyZm9ybWFuY2VDaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgIHByb2plY3RGZWF0dXJlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICB1c2VyU3RvcnlBcmNoaXZlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICB1c2VyU3RvcnlQYXJrQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgZ2VuZXJpY0FjdGl2aXR5Tm90aWZpY2F0aW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgcHVyY2hhc2VFeGVjdXRpb25Bc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG9dXHJcbiAgICB9KTtcclxuICAgIHZhciByb2xlVXBkYXRlc0NoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Sb2xlVXBkYXRlcyArIFwiMTlCNkY5RkMtNzM3MC00QjlDLUEwNUMtM0I4RDgxOUVFRUFGXCI7XHJcbiAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvIFwiICsgcm9sZVVwZGF0ZXNDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgIHRoaXMucHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgIGNoYW5uZWxzOiBbcm9sZVVwZGF0ZXNDaGFubmVsVG9TdWJzY3JpYmVJbnRvXVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVwbGFjZUFsbChzdHIsIGZpbmQsIHJlcGxhY2UpIHtcclxuICAgIHZhciBlc2NhcGVkRmluZCA9IGZpbmQucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFxcW1xcXVxcL1xcXFxdKS9nLCBcIlxcXFwkMVwiKTtcclxuICAgIHJldHVybiBzdHIucmVwbGFjZShuZXcgUmVnRXhwKGVzY2FwZWRGaW5kLCAnZycpLCByZXBsYWNlKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNpZ25hbHIuZ2V0Tm90aWZpY2F0aW9uc0Zyb21BcGkoKS5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuZ2V0U29mdExhYmVscygpO1xyXG4gICAgaWYgKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRpc3BsYXlXZWxDb21lTm90ZSkgJiYgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRpc3BsYXlXZWxDb21lTm90ZSkgPT0gJ3RydWUnKSB7XHJcbiAgICAgIGlmICgobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpICE9IG51bGwgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpICE9IHVuZGVmaW5lZClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy51c2VyRnVsbE5hbWUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSkuZnVsbE5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIGNvdW50ID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlckxvZ2dlZEluQ291bnQpO1xyXG4gICAgICBpZiAoY291bnQgJiYgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJMb2dnZWRJbkNvdW50KSAhPSAnbnVsbCdcclxuICAgICAgICAmJiB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlckxvZ2dlZEluQ291bnQpICE9ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZWRJbkNvdW50ID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJMb2dnZWRJbkNvdW50KTtcclxuICAgICAgICBpZiAodGhpcy5sb2dnZWRJbkNvdW50ID09ICcxJyB8fCB0aGlzLmxvZ2dlZEluQ291bnQgPT0gJzInKSB7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXlXZWxjb21lTm90ZSA9IHRydWU7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5V2VsY29tZU5vdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EaXNwbGF5V2VsQ29tZU5vdGUsICdmYWxzZScsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICB9LCA4MDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBjdXJyZW50Q3VsdHVyZSA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50Q3VsdHVyZSk7XHJcbiAgICBjb25zdCBjb21wYW55bGFuID0gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueURldGFpbHMpKTtcclxuICAgIGxldCBjdXJyZW50Q3VsdHVyZWxhbiA9IGNvbXBhbnlsYW4ubGFuQ29kZTtcclxuXHJcbiAgICBpZiAoY3VycmVudEN1bHR1cmUgPT0gJycgfHwgY3VycmVudEN1bHR1cmUgPT0gbnVsbCB8fCBjdXJyZW50Q3VsdHVyZSA9PSB1bmRlZmluZWQgfHwgY3VycmVudEN1bHR1cmUgPT09ICdudWxsJyB8fCBjdXJyZW50Q3VsdHVyZSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgaWYgKGN1cnJlbnRDdWx0dXJlbGFuID09ICcnIHx8IGN1cnJlbnRDdWx0dXJlbGFuID09IG51bGwgfHwgY3VycmVudEN1bHR1cmVsYW4gPT0gdW5kZWZpbmVkIHx8IGN1cnJlbnRDdWx0dXJlbGFuID09PSAnbnVsbCcgfHwgY3VycmVudEN1bHR1cmVsYW4gPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgY3VycmVudEN1bHR1cmUgPSAnZW4nO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGN1cnJlbnRDdWx0dXJlID0gY3VycmVudEN1bHR1cmVsYW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY3VycmVudExhbmcgPSBjdXJyZW50Q3VsdHVyZTtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmxvYWRpbmdJblByb2dyZXNzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuaXNUaW1lU2hlZXRGZXRjaGluZykpO1xyXG4gICAgdGhpcy50aW1lU2hlZXRCdXR0b25EZXRhaWxzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0VGltZVNoZXR0QnV0dG9uRGV0YWlscykpO1xyXG4gICAgdGhpcy50aW1lU2hlZXRCdXR0b25EZXRhaWxzJFxyXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIHRoaXMudGltZXNoZWV0RGlzYWJsZW9yRW5hYmxlID0gZGF0YTtcclxuICAgICAgfSlcclxuICAgIC8vdGhpcy5nZXRUaW1lU2hlZXRCdXR0b25zKCk7XHJcbiAgICAvL3RoaXMuZ2V0VXNlclN0b3JlKCk7XHJcbiAgICB0aGlzLnNob3dUcmFpbFBlcmlvZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5lZ3JldFRoZW1lcyA9IHRoaXMudGhlbWVTZXJ2aWNlLmVncmV0VGhlbWVzO1xyXG4gICAgdGhpcy5sYXlvdXRDb25mID0gdGhpcy5sYXlvdXQubGF5b3V0Q29uZjtcclxuXHJcbiAgICAvLyB0aGlzLnRoZW1lTW9kZWwkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRUaGVtZU1vZGVsKSk7XHJcbiAgICAvL3RoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEluaXRpYWxpemVBZnRlckxvZ2luRGF0YSgpKTtcclxuICAgIHZhciB1c2VyID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkpO1xyXG4gICAgaWYgKHVzZXIgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm1vbml0b3JDb21wYW55cmVsYXRlZERldGFpbHModXNlcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvZ2dlZEluVXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgdGhpcy5nZXRFbXBsb3llZUlkQnlVc2VySWQoKTtcclxuICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgdGhpcy5hcHBsaWNhdGlvblZlcnNpb24gPSBlbnZpcm9ubWVudC52ZXJzaW9uO1xyXG4gICAgdGhpcy5tZW51VHlwZSA9IFwiTWFpblwiO1xyXG4gICAgdGhpcy5zZWxlY3RlZExhbmdOYW1lID0gdGhpcy5hdmFpbGFibGVMYW5ncy5maW5kKHggPT4geC5jb2RlID09IHRoaXMuY3VycmVudExhbmcpLm5hbWU7XHJcbiAgICB0aGlzLnVzZXJTdG9yZUlkJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0VXNlclN0b3JlSWQpKTtcclxuICAgIHRoaXMudXNlclN0b3JlSWQkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLnVzZXJTdG9yZUlkID0gcmVzdWx0O1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHNob3dIaWRlRGVsZXRlQnV0dG9uKGRhdGEpIHtcclxuICAgIHRoaXMuc2hvd0RlbGV0ZUljb24gPSBkYXRhLmlzRGVtb0RhdGFDbGVhcmVkID8gZmFsc2UgOiBkYXRhLmlzVG9TaG93RGVsZXRlSWNvbjtcclxuICB9XHJcblxyXG4gIG1vbml0b3JDb21wYW55cmVsYXRlZERldGFpbHModXNlcikge1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkVXNlclJlY29yZCA9IHVzZXI7XHJcbiAgICB0aGlzLnNob3dIaWRlRGVsZXRlQnV0dG9uKHVzZXIpO1xyXG4gICAgdGhpcy5jb21wYW5pZXNMaXN0ID0gdXNlci5jb21wYW5pZXNMaXN0O1xyXG4gICAgdGhpcy5nZXRDb21wYW55RGV0YWlscyh1c2VyLmNvbXBhbnlJZCk7XHJcbiAgICB2YXIgY29tcGFueSA9IHRoaXMuY29tcGFuaWVzTGlzdC5maWx0ZXIoeCA9PiB4LmNvbXBhbnlJZC50b0xvd2VyQ2FzZSgpID09IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55SWQpLnRvTG93ZXJDYXNlKCkpXHJcbiAgICB0aGlzLnNlbGVjdGVkQ29tcGFueSA9IGNvbXBhbnkgPyBjb21wYW55WzBdIDogbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb21wYW55TmFtZSA9IGNvbXBhbnkgPyBjb21wYW55WzBdID8gY29tcGFueVswXS5jb21wYW55TmFtZSA6IG51bGwgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb0Rhc2hib2FyZHMoKSB7XHJcbiAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpKSA6IG51bGw7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgJiYgdXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHRoaXMuZGVmYXVsdERhc2hib2FyZElkICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNPcGVuZWQoZXZlbnQpIHtcclxuICAgIHRoaXMub3BlbmVkLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29mdExhYmVscygpIHtcclxuICAgIHRoaXMuc29mdExhYmVscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NvZnRMYWJlbHMnKSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblNpZ25vdXQoKSB7XHJcbiAgICB0aGlzLnJlbG9hZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgQ3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIGNvbnN0IHRhc2tBc3NpZ25tZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Rhc2tBc3NpZ25tZW50c1xyXG4gICAgICArIHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIGNvbnN0IHRhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TdGF0dXNSZXBvcnRTdWJtaXNzaW9uXHJcbiAgICAgICsgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgY29uc3QgdGFzdGF0dXNDb25maWdBc3NpZ25DaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3RhdHVzQ29uZmlnQXNzaWduXHJcbiAgICAgICsgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgY29uc3QgbXVsdGlDaGFydHNTY2hlZHVsaW5nQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX011bHRpQ2hhcnRzU2NoZWR1bGluZyArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBhc3NldHNBc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Bc3NldEFzc2lnbm1lbnQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTmV3UHJvamVjdCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwcm9qZWN0QWNjZXNzVG9NZW1iZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUHJvamVjdE1lbWJlclJvbGUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgZ29hbEFwcHJvdmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0dvYWxBcHByb3ZlZEZyb21SZXBsYW4gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdXNlclN0b3J5VXBkYXRlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBBbm5vdW5jZW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfQW5ub3VuY2VtZW50Tm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHVzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVXNlclN0b3J5Q29tbWVudCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBzcHJpbnRTdGFydGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1NwcmludFN0YXJ0ZWQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3Qgc3ByaW50UmVwbGFuQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1NwcmludFJlcXVlc3RlZFRvUmVwbGFuICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IFBlcmZvcm1hbmNlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Blcm9mb3JtYW5jZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9SZW1pbmRlck5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwcm9qZWN0RmVhdHVyZUNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Qcm9qZWN0RmVhdHVyZSArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB1c2VyU3RvcnlBcmNoaXZlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeUFyY2hpdmUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdXNlclN0b3J5UGFya0NoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Vc2VyU3RvcnlQYXJrICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IGdlbmVyaWNBY3Rpdml0eU5vdGlmaWNhdGlvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9HZW5lcmljQWN0aXZpdHlOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgcHVyY2hhc2VFeGVjdXRpb25Bc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9QdXJjaGFzZUV4ZWN1dGlvbkFzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG5cclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFt0YXNrQXNzaWdubWVudENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Rhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Rhc3RhdHVzQ29uZmlnQXNzaWduQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbbXVsdGlDaGFydHNTY2hlZHVsaW5nQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtwcm9qZWN0Q3JlYXRlZENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Byb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW2dvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3VzZXJTdG9yeVVwZGF0ZUNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW0Fubm91bmNlbWVudENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3VzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtzcHJpbnRTdGFydGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbc3ByaW50UmVwbGFuQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbUGVyZm9ybWFuY2VDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Byb2plY3RGZWF0dXJlQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbdXNlclN0b3J5QXJjaGl2ZUNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3VzZXJTdG9yeVBhcmtDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtwdXJjaGFzZUV4ZWN1dGlvbkFzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbdGhpcy5sb2dpblVzZXJjaGFubmVsTmFtZV0gfSk7XHJcbiAgICAvLyB2YXIgbG9naW5Db21wYW55SWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueUlkXCIpO1xyXG4gICAgLy8gdmFyIHByZXNlbmNlQ2hhbm5lbCA9IFwiTWVzc2VuZ2VyUHJlc2VuY2UtXCIgKyBsb2dpbkNvbXBhbnlJZDtcclxuICAgIC8vIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgY2hhbm5lbHM6IFtwcmVzZW5jZUNoYW5uZWxdLFxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyBpZiAodGhpcy5jaGFubmVsTGlzdCAhPSB1bmRlZmluZWQgfHwgdGhpcy5jaGFubmVsTGlzdCAhPSBudWxsKSB7XHJcbiAgICAvLyAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNoYW5uZWxMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgLy8gICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgICAgIGNoYW5uZWxzOiBbKGxvZ2luQ29tcGFueUlkICsgJy0nICsgdGhpcy5jaGFubmVsTGlzdFtpbmRleF0uaWQpXVxyXG4gICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7XHJcbiAgICAvLyAgIGNoYW5uZWxzOiBbKCdDaGFubmVsVXBkYXRlcy0nICsgbG9naW5Db21wYW55SWQpXVxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7XHJcbiAgICAvLyAgIGNoYW5uZWxzOiBbKCdVc2VyVXBkYXRlcy0nICsgbG9naW5Db21wYW55SWQpXVxyXG4gICAgLy8gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbZ2VuZXJpY0FjdGl2aXR5Tm90aWZpY2F0aW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICAvLyB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZUFsbCgpO1xyXG4gICAgLy8gdGhpcy5wdWJudWIucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XHJcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIGxldCBjb21wYW55TmFtZSA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55RGV0YWlscyk7XHJcbiAgICBsZXQgY29tcGFueUlkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlJZCk7XHJcblxyXG4gICAgbGV0IGNvbXBhbnlEZXRhaWxzID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzKTtcclxuICAgIGxldCBjb21wYW55VGhlbWUgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVRoZW1lKTtcclxuICAgIGxldCBVc2VyTG9nZ2VkSW5Db3VudCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTG9nZ2VkSW5Db3VudCk7XHJcbiAgICBsZXQgY3VycmVudEN1bHR1cmUgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLmRlbGV0ZUFsbChlbnZpcm9ubWVudC5jb29raWVQYXRoKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUoXCJzZWxlY3RlZFByb2plY3RzVGFiXCIpO1xyXG5cclxuXHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlckxvZ2dlZEluQ291bnQsIFVzZXJMb2dnZWRJbkNvdW50LCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRDdWx0dXJlLCBjdXJyZW50Q3VsdHVyZSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlciwgbnVsbCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkLCBudWxsLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlOYW1lLCBjb21wYW55TmFtZSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55SWQsIGNvbXBhbnlJZCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkLCBudWxsLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzLCBjb21wYW55RGV0YWlscywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55VGhlbWUsIGNvbXBhbnlUaGVtZSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5TZWFyY2hDbGljaywgbnVsbCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwsIG51bGwsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW5hYmxlVGVhbURhc2hib2FyZCwgbnVsbCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcywgbnVsbCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCwgbnVsbCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJvbGVGZWF0dXJlcywgbnVsbCk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSb2xlRmVhdHVyZXMpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWRpcmVjdGlvblVybCk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNpZGVCYXJNZW51SXRlbXMpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5JbnRyb01vZHVsZXMpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkFkZE9yRWRpdEN1c3RvbUFwcElzUmVxdWlyZWQsIG51bGwsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcblxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3Nlc3Npb25zL3NpZ25pblwiXSk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXRMYW5nKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGUudXNlKHRoaXMuY3VycmVudExhbmcpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpO1xyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUsIHRoaXMuY3VycmVudExhbmcsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLnNlbGVjdGVkTGFuZ05hbWUgPSB0aGlzLmF2YWlsYWJsZUxhbmdzLmZpbmQoeCA9PiB4LmNvZGUgPT0gdGhpcy5jdXJyZW50TGFuZykubmFtZTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVRoZW1lKHRoZW1lKSB7XHJcbiAgICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGVtZSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVOb3RpZmljKCkge1xyXG4gICAgLy8gdGhpcy5nZXRVbnJlYWROb3RpZmljYXRpb25zKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVSZWNvcmRpbmcoKSB7XHJcbiAgICB0aGlzLmdldEFjdFRyYWNrZXJSZWNvcmRlcigpO1xyXG4gICAgdmFyIHVzZXIgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSk7XHJcbiAgICBpZiAodXNlciAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMubW9uaXRvckNvbXBhbnlyZWxhdGVkRGV0YWlscyh1c2VyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE5vdGlmaWNhdGlvbnMoKSB7XHJcbiAgICBjb25zdCBub3RpZmljYXRpb25TZWFyY2hNb2RlbCA9IG5ldyBBcHBOb3RpZmljYXRpb24oKTtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IENsZWFyQWxsVW5yZWFkTm90aWZpY2F0aW9uc1RyaWdnZXJlZChub3RpZmljYXRpb25TZWFyY2hNb2RlbCkpO1xyXG4gICAgdGhpcy51bnJlYWRDb3VudE9mTm90aWZpY2F0aW9ucyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldE5vdGlmaWNhdGlvblVucmVhZFRvdGFsKSk7XHJcbiAgfVxyXG5cclxuICBnZXRVbnJlYWROb3RpZmljYXRpb25zKCkge1xyXG4gICAgY29uc3Qgbm90aWZpY2F0aW9uU2VhcmNoTW9kZWwgPSBuZXcgQXBwTm90aWZpY2F0aW9uKCk7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBDbGVhclVucmVhZE5vdGlmaWNhdGlvbnNUcmlnZ2VyZWQobm90aWZpY2F0aW9uU2VhcmNoTW9kZWwpKTtcclxuICAgIHRoaXMudW5yZWFkQ291bnRPZk5vdGlmaWNhdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXROb3RpZmljYXRpb25VbnJlYWRUb3RhbCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWN0VHJhY2tlclJlY29yZGVyKCkge1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLmdldEFjdFRyYWNrZXJSZWNvcmRlcigpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyRGVtb0RhdGEoKSB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBoZWlnaHQ6IFwiMzAlXCIsXHJcbiAgICAgIHdpZHRoOiBcIjMwJVwiLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgZGlyZWN0aW9uOiBcImx0clwiLFxyXG4gICAgICBkYXRhOiB7fSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGhlIGRpYWxvZyB3YXMgY2xvc2VkXCIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZXhwb3J0Q29uZmlndXJhdGlvbkRpYWxvZ0RhdGEoKSB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEV4cG9ydENvbmZpZ3VyYXRpb25EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgaGVpZ2h0OiBcIjQ1JVwiLFxyXG4gICAgICB3aWR0aDogXCI0MCVcIixcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIGRpcmVjdGlvbjogXCJsdHJcIixcclxuICAgICAgZGF0YToge30sXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlRoZSBkaWFsb2cgd2FzIGNsb3NlZFwiKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2lkZW5hdigpIHtcclxuICAgIGlmICh0aGlzLmxheW91dENvbmYuc2lkZWJhclN0eWxlID09PSBcImNsb3NlZFwiKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxheW91dC5wdWJsaXNoTGF5b3V0Q2hhbmdlKHtcclxuICAgICAgICBzaWRlYmFyU3R5bGU6IFwiZnVsbFwiXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sYXlvdXQucHVibGlzaExheW91dENoYW5nZSh7XHJcbiAgICAgIHNpZGViYXJTdHlsZTogXCJjbG9zZWRcIlxyXG4gICAgfSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwicmVzaXplXCIpKTsgfSwgMjUwKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlKCkge1xyXG4gICAgLy8gY29tcGFjdCAtLT4gZnVsbFxyXG4gICAgaWYgKHRoaXMubGF5b3V0Q29uZi5zaWRlYmFyU3R5bGUgPT09IFwiY29tcGFjdFwiKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxheW91dC5wdWJsaXNoTGF5b3V0Q2hhbmdlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHNpZGViYXJTdHlsZTogXCJmdWxsXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgdHJhbnNpdGlvbkNsYXNzOiB0cnVlIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAqIC0tPiBjb21wYWN0XHJcbiAgICB0aGlzLmxheW91dC5wdWJsaXNoTGF5b3V0Q2hhbmdlKFxyXG4gICAgICB7XHJcbiAgICAgICAgc2lkZWJhclN0eWxlOiBcImNvbXBhY3RcIlxyXG4gICAgICB9LFxyXG4gICAgICB7IHRyYW5zaXRpb25DbGFzczogdHJ1ZSB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRpbWVTaGVldEJ1dHRvbnMoKSB7XHJcbiAgICAvL3RoaXMubG9hZGluZ0luUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlLmdldFRpbWVTaGVldEVuYWJsZWRJbmZvcm1hdGlvbigpLnBpcGUodGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSlcclxuICAgIC8vICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKGRhdGEgPT09IFwiXCIgfHwgZGF0YSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAvLyAgICAgICByZXR1cm47XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHRoaXMudGltZXNoZWV0RGlzYWJsZW9yRW5hYmxlID0gSlNPTi5wYXJzZShkYXRhKTtcclxuICAgIC8vICAgICB0aGlzLmxvYWRpbmdJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAvLyAgIH0pO1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgRmV0Y2hUaW1lU2hlZXRCdXR0b25EZXRhaWxzKCkpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VGZWVkVGltZVNoZWV0KCkge1xyXG4gICAgdGhpcy5mZWVkVGltZVNoZWV0UG9wb3Zlci5jbG9zZSgpO1xyXG4gICAgdGhpcy5pc0ZlZWRUaW1lU2hlZXQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9wZW5UaW1lU2hlZXQoKSB7XHJcbiAgICBjb25zdCBwcm9qZWN0RGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbihGZWVkVGltZURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBtaW5XaWR0aDogJzMwdncnLFxyXG4gICAgICBoZWlnaHQ6ICczNXZoJyxcclxuICAgICAgZGF0YTogIXRoaXMuaXNGZWVkVGltZVNoZWV0XHJcbiAgICAgIC8vZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIHByb2plY3REaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNsb3NlRmVlZFRpbWVTaGVldCgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdldFRpbWVTaGVldEJ1dHRvbnMoKTtcclxuICAgIC8vIHRoaXMuaXNGZWVkVGltZVNoZWV0ID0gIXRoaXMuaXNGZWVkVGltZVNoZWV0O1xyXG4gIH1cclxuXHJcbiAgLy8gZ2V0QWxsTWVudUl0ZW1zKCkge1xyXG4gIC8vICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkKE1lbnVDYXRlZ29yaWVzLk1haW4pKTtcclxuICAvLyB9XHJcblxyXG4gIGNoYW5nZU1lbnVUeXBlKHR5cGUpIHtcclxuICAgIHRoaXMubWVudVR5cGUgPSB0eXBlO1xyXG4gIH1cclxuXHJcbiAgb3BlbkZlZWRCYWNrRGlhbG9nKCkge1xyXG4gICAgdGhpcy5pc0ZlZWRCYWNrRGlhbG9nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNsb3NlRmVlZEJhY2tsb2dEaWFsb2coKSB7XHJcbiAgICB0aGlzLmlzRmVlZEJhY2tEaWFsb2cgPSBmYWxzZTtcclxuICAgIHRoaXMuZmVlZEJhY2tQb3BPdmVyLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDb21wYW55RGV0YWlscyhjb21wYW55SWQ6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzKSAmJiB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55SWQpKSB7XHJcbiAgICAgIHRoaXMuY29tcGFueSA9IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuY29tcGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0Q29tcGFueUJ5SWQoY29tcGFueUlkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmNvbXBhbnkgPSByZXNwb25zZS5kYXRhO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jb21wYW55LmlzUmVtb3RlQWNjZXNzID09IDEgJiYgdGhpcy5jb21wYW55LnRyYWlsRGF5cyA+IDApIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1RyYWlsUGVyaW9kID0gdHJ1ZTtcclxuICAgICAgICAgIC8vIHRoaXMubm9PZkRheXM9dGhpcy5jb21wYW55Lm5vT2ZEYXlzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jb21wYW55LmlzRGVtb0RhdGEgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5zaG93RGVsZXRlID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93RGVsZXRlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbXBhbnkuaXNEZW1vRGF0YSA9PSBmYWxzZSB8fCB0aGlzLmNvbXBhbnkuaXNEZW1vRGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGFueSAhPSBudWxsICYmIHRoaXMuY29tcGFueSAhPSB1bmRlZmluZWQgJiYgdGhpcy5jb21wYW55LmluZHVzdHJ5SWQudG9VcHBlckNhc2UoKSA9PSAnNzQ5OUY1RTMtMEVGMi00MDQ0LUI4NDAtMjQxMUI2ODMwMkY5JylcclxuICAgICAgICAgIHRoaXMuaXNTdG9yZUFjY2VzcyA9IGZhbHNlO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuaXNTdG9yZUFjY2VzcyA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbXBhbnkuaXNSZW1vdGVBY2Nlc3MgPT0gMSAmJiB0aGlzLmNvbXBhbnkudHJhaWxEYXlzID4gMCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1RyYWlsUGVyaW9kID0gdHJ1ZTtcclxuICAgICAgICAvLyB0aGlzLm5vT2ZEYXlzPXRoaXMuY29tcGFueS5ub09mRGF5cztcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21wYW55LmlzRGVtb0RhdGEgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuc2hvd0RlbGV0ZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tcGFueS5pc0RlbW9EYXRhID09IGZhbHNlIHx8IHRoaXMuY29tcGFueS5pc0RlbW9EYXRhID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNob3dEZWxldGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21wYW55ICE9IG51bGwgJiYgdGhpcy5jb21wYW55ICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbXBhbnkuaW5kdXN0cnlJZC50b1VwcGVyQ2FzZSgpID09ICc3NDk5RjVFMy0wRUYyLTQwNDQtQjg0MC0yNDExQjY4MzAyRjknKVxyXG4gICAgICAgIHRoaXMuaXNTdG9yZUFjY2VzcyA9IGZhbHNlO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5pc1N0b3JlQWNjZXNzID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFVzZXJTdG9yZSgpIHtcclxuICAgIGxldCBzdG9yZVNlYXJjaE1vZGVsID0gbmV3IFN0b3JlU2VhcmNoTW9kZWwoKTtcclxuICAgIHN0b3JlU2VhcmNoTW9kZWwuaXNBcmNoaXZlZCA9IGZhbHNlO1xyXG4gICAgc3RvcmVTZWFyY2hNb2RlbC5pc0RlZmF1bHQgPSB0cnVlO1xyXG4gICAgc3RvcmVTZWFyY2hNb2RlbC5pc0NvbXBhbnkgPSBmYWxzZTtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldFVzZXJTdG9yZUlkVHJpZ2dlcmVkKHN0b3JlU2VhcmNoTW9kZWwpKTtcclxuICB9XHJcblxyXG4gIGdvVG9Vc2VyU3RvcmUoKSB7XHJcbiAgICBpZiAodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpKVxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkb2N1bWVudC9zdG9yZVwiLCB0aGlzLnVzZXJTdG9yZUlkLCB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCkudG9Mb3dlckNhc2UoKV0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWZ0ZXJsb2dpbihlKSB7XHJcbiAgICB0aGlzLmNvbXBhbnlJZCA9IGUuY29tcGFueUlkXHJcbiAgICB0aGlzLnNlbGVjdGVkQ29tcGFueU5hbWUgPSBlLmNvbXBhbnlOYW1lO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbXBhbnkgPSBlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2VsZWN0Q29tcGFueShlKSB7XHJcbiAgICBpZiAodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlJZCkudG9Mb3dlckNhc2UoKSAhPSBlLmNvbXBhbnlJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yZWxvYWQgPSBmYWxzZTtcclxuICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAgIHRoaXMuY29tcGFueUlkID0gZS5jb21wYW55SWQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYW55TmFtZSA9IGUuY29tcGFueU5hbWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYW55ID0gZTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gbnVsbDtcclxuICAgICAgdGhpcy5uZ3hTZXJ2aWNlLnN0YXJ0KCk7XHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuY29tcGFueUxvZ2luKHRoaXMuc2VsZWN0ZWRDb21wYW55KS5zdWJzY3JpYmUoYXN5bmMgKHVzZXJUb2tlbjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHVzZXJUb2tlbi5zdWNjZXNzKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uU2lnbm91dCgpO1xyXG4gICAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXIsIGUuYXV0aFRva2VuLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQsIGUudXNlcklkLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VyLCB1c2VyVG9rZW4uZGF0YS5hdXRoVG9rZW4sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KFwiRGVmYXVsdERhc2hib2FyZFwiLCB1c2VyVG9rZW4uZGF0YS5kZWZhdWx0RGFzaGJvYXJkSWQgPyBKU09OLnN0cmluZ2lmeSh1c2VyVG9rZW4uZGF0YS5kZWZhdWx0RGFzaGJvYXJkSWQud29ya3NwYWNlSWQpIDogbnVsbCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoJ0NvbXBhbnlEZXRhaWxzJywgSlNPTi5zdHJpbmdpZnkodXNlclRva2VuLmRhdGEuY29tcGFueURldGFpbHMpKTtcclxuICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoJ0NvbXBhbmllc0xpc3QnLCBKU09OLnN0cmluZ2lmeSh1c2VyVG9rZW4uZGF0YS51c2Vyc01vZGVsLmNvbXBhbmllc0xpc3QpKSxcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1JvbGVGZWF0dXJlcycsIEpTT04uc3RyaW5naWZ5KHVzZXJUb2tlbi5kYXRhLnJvbGVGZWF0dXJlcykpO1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJVc2VyTW9kZWxcIiwgSlNPTi5zdHJpbmdpZnkodXNlclRva2VuLmRhdGEudXNlcnNNb2RlbCkpO1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1NvZnRMYWJlbHMnLCBKU09OLnN0cmluZ2lmeSh1c2VyVG9rZW4uZGF0YS5zb2Z0TGFiZWxzKSk7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIkNvbXBhbnlTZXR0aW5nc1wiLCBKU09OLnN0cmluZ2lmeSh1c2VyVG9rZW4uZGF0YS5jb21wYW55U2V0dGluZ3MpKTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiRnJvbUxvZ0luXCIsIEpTT04uc3RyaW5naWZ5KHRydWUpKTtcclxuICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TmFtZSwgdXNlclRva2VuLmRhdGEudXNlcnNNb2RlbC5jb21wYW55TmFtZSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55SWQsIHVzZXJUb2tlbi5kYXRhLnVzZXJzTW9kZWwuY29tcGFueUlkLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgICAgLy90aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVc2VyRGV0YWlsc0ZldGNoZWRBZnRlckNvbXBhbnlMb2dpbih1c2VyVG9rZW4uZGF0YS51c2Vyc01vZGVsKSk7XHJcbiAgICAgICAgICB0aGlzLnNldERhZmF1bHRMYW5ndWFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5neFNlcnZpY2Uuc3RvcCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERhZmF1bHRMYW5ndWFnZSgpIHtcclxuICAgIGNvbnN0IGNvbXBhbnkgPSBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55RGV0YWlscykpO1xyXG4gICAgbGV0IGN1cnJlbnRDdWx0dXJlID0gY29tcGFueS5sYW5Db2RlO1xyXG4gICAgaWYgKGN1cnJlbnRDdWx0dXJlID09IG51bGwgfHwgY3VycmVudEN1bHR1cmUgPT0gdW5kZWZpbmVkIHx8IGN1cnJlbnRDdWx0dXJlID09PSAnbnVsbCcgfHwgY3VycmVudEN1bHR1cmUgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGN1cnJlbnRDdWx0dXJlID0gJ2VuJztcclxuICAgIH1cclxuICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRDdWx0dXJlLCBjdXJyZW50Q3VsdHVyZSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY3VycmVudExhbmcgPSBjdXJyZW50Q3VsdHVyZTtcclxuICAgIHRoaXMudHJhbnNsYXRlLnVzZSh0aGlzLmN1cnJlbnRMYW5nKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRFbXBsb3llZUlkQnlVc2VySWQoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb1Byb2ZpbGUoKSB7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0VXNlckJ5SWQodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpLnRvTG93ZXJDYXNlKCkpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5lbXBsb3llZUlkID0gcmVzcG9uc2UuZGF0YS5lbXBsb3llZUlkO1xyXG4gICAgICAgIGlmICh0aGlzLmVtcGxveWVlSWQpIHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9wcm9maWxlXCIsIHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKS50b0xvd2VyQ2FzZSgpLCBcIm92ZXJ2aWV3XCJdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvbXlQcm9maWxlXCIsIHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKS50b0xvd2VyQ2FzZSgpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgbmF2aWdhdGVUb01lc3NlbmdlcigpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9jaGF0XCJdKTtcclxuICB9XHJcblxyXG5cclxuICBuYXZpZ2F0ZVRvU3RhdHVzUmVwb3J0KCkge1xyXG4gICAgY29uc3QgcHJvamVjdERpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oV29ya0l0ZW1zRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIG1pbldpZHRoOiAnODJ2dycsXHJcbiAgICAgIGhlaWdodDogJzgydmgnLFxyXG4gICAgICBkYXRhOiB7IGRhc2hib2FyZEZpbHRlcnM6IHRoaXMuZGFzaGJvYXJkRmlsdGVycyB9LFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgcHJvamVjdERpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xyXG4gIH1cclxuICBuYXZpZ2F0ZVRvU2V0dGluZ3MoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvc2V0dGluZ3NcIl0pO1xyXG4gIH1cclxuXHJcbiAgYWx0ZXJuYXRlU2lnbkluKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3Nlc3Npb25zL2dlbmVyaWMtc2lnbmluXCJdKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9Sb2xlcygpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9yb2xlbWFuYWdlbWVudC9yb2xlbWFuYWdlbWVudFwiXSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvVXJsKHdvcmtzcGFjZUlkKSB7XHJcbiAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB3b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB3b3Jrc3BhY2VJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRVcGxvYWRGaWxlUG9wdXBPcGVuKGZpbGVVcGxvYWREcm9wem9uZVBvcHVwKSB7XHJcbiAgICBmaWxlVXBsb2FkRHJvcHpvbmVQb3B1cC5vcGVuUG9wb3ZlcigpO1xyXG4gIH1cclxuICBzZXRMYWJlbE5hbWVGb3JEcm9wem9uZShmaWxlTmFtZSkge1xyXG4gICAgcmV0dXJuIGZpbGVOYW1lLnN1YnN0cmluZygwLCAyMCkgKyBcIi4uLlwiO1xyXG4gIH1cclxuICBvblJlbW92ZShldmVudCkge1xyXG4gICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGV2ZW50KSwgMSk7XHJcbiAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZmlsZXNQcmVzZW50ID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsZXNQcmVzZW50ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlbW92ZUFsbEZpbGVzKCkge1xyXG4gICAgdGhpcy5maWxlc1ByZXNlbnQgPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsZXMgPSBbXTtcclxuICB9XHJcbiAgZmlsZXNTZWxlY3RlZChldmVudCkge1xyXG4gICAgdGhpcy5maWxlcy5wdXNoKC4uLmV2ZW50LmFkZGVkRmlsZXMpO1xyXG4gICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZpbGVzUHJlc2VudCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZVVwbG9hZEZpbGVQb3B1cCgpIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZERyb3B6b25lUG9wdXAuZm9yRWFjaCgocCkgPT4gcC5jbG9zZVBvcG92ZXIoKSk7XHJcbiAgICB0aGlzLmZpbGVzID0gW107XHJcbiAgICB0aGlzLmZpbGVSZXN1bHRNb2RlbCA9IFtdO1xyXG4gIH1cclxuICBzYXZlRmlsZXMoKSB7XHJcbiAgICB0aGlzLmFueU9wZXJhdGlvbkluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIHRoaXMuZmlsZXMuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4ge1xyXG4gICAgICB0aGlzLmZpbGVJbmRleCA9IHRoaXMuZmlsZUluZGV4ICsgMTtcclxuICAgICAgY29uc3QgZmlsZUtleU5hbWUgPSBcImZpbGVcIiArIHRoaXMuZmlsZUluZGV4LnRvU3RyaW5nKCk7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChmaWxlS2V5TmFtZSwgZmlsZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIHRoaXMuVXBsb2FkZXJPbkluaXQoZW52aXJvbm1lbnQuYXBpVVJMICsgQXBpVXJscy5VcGxvYWRGaWxlQ2h1bmtzKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBVcGxvYWRlck9uSW5pdCh1cmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IHByb2dyZXNzID0gMDtcclxuICAgIGNvbnN0IHIgPSBuZXcgUmVzdW1hYmxlKHtcclxuICAgICAgdGFyZ2V0OiB1cmwsXHJcbiAgICAgIGNodW5rU2l6ZTogMSAqIDEwMjQgKiAxMDI0LCAvLzMgTUJcclxuICAgICAgcXVlcnk6IHsgbW9kdWxlVHlwZUlkOiB0aGlzLm1vZHVsZVR5cGVJZCB9LFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6IGBCZWFyZXIgJHt0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXIpfWBcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgci5hZGRGaWxlcyh0aGlzLmZpbGVzKTtcclxuICAgIHIub24oJ2ZpbGVBZGRlZCcsIChmaWxlLCBldmVudCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZmlsZVJlc3VsdE1vZGVsIHx8IHRoaXMuZmlsZVJlc3VsdE1vZGVsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmZpbGVSZXN1bHRNb2RlbCA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIHIudXBsb2FkKClcclxuICAgIH0pO1xyXG4gICAgci5vbignY29tcGxldGUnLCAoZXZlbnQpID0+IHtcclxuICAgICAgci5maWxlcy5wb3AoKTtcclxuICAgICAgdGhpcy5wcm9ncmVzc1ZhbHVlID0gMDtcclxuICAgICAgdGhpcy5maWxlc1ByZXNlbnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVOYW1lcyA9IFtdO1xyXG4gICAgICB0aGlzLmZpbGVDb3VudGVyID0gMTtcclxuICAgICAgdGhpcy5maWxlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLmFueU9wZXJhdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gICAgci5vbigncHJvZ3Jlc3MnLCAoKSA9PiB7XHJcbiAgICAgIHByb2dyZXNzID0gTWF0aC5yb3VuZChyLnByb2dyZXNzKCkgKiAxMDApO1xyXG4gICAgICB0aGlzLnByb2dyZXNzVmFsdWUgPSBwcm9ncmVzcztcclxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICAgIHIub24oJ2ZpbGVTdWNjZXNzJywgKGZpbGUsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChmaWxlICYmIGZpbGUuZmlsZU5hbWUpIHtcclxuICAgICAgICBpZiAoIXRoaXMudXBsb2FkZWRGaWxlTmFtZXMuZmluZCh4ID0+IHggPT0gZmlsZS5maWxlTmFtZSkpIHtcclxuICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlTmFtZXMucHVzaChmaWxlLmZpbGVOYW1lKVxyXG4gICAgICAgICAgdGhpcy5maWxlQ291bnRlciA9IHRoaXMudXBsb2FkZWRGaWxlTmFtZXMubGVuZ3RoO1xyXG5cclxuICAgICAgICAgIGxldCByZXN1bHQgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTtcclxuICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmZpbGVSZXN1bHRNb2RlbCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZVJlc3VsdE1vZGVsID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGZpbGVSZXN1bHQgPSBuZXcgRmlsZVJlc3VsdE1vZGVsKCk7XHJcbiAgICAgICAgICAgIGZpbGVSZXN1bHQuZmlsZUV4dGVuc2lvbiA9IHJlc3VsdFswXS5GaWxlRXh0ZW5zaW9uO1xyXG4gICAgICAgICAgICBmaWxlUmVzdWx0LmZpbGVOYW1lID0gcmVzdWx0WzBdLkZpbGVOYW1lO1xyXG4gICAgICAgICAgICBmaWxlUmVzdWx0LmZpbGVQYXRoID0gcmVzdWx0WzBdLkZpbGVQYXRoO1xyXG4gICAgICAgICAgICBmaWxlUmVzdWx0LmZpbGVTaXplID0gcmVzdWx0WzBdLkZpbGVTaXplO1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVSZXN1bHRNb2RlbC5wdXNoKGZpbGVSZXN1bHQpO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0WzBdLkZpbGVQYXRoICE9IG51bGwgJiYgcmVzdWx0WzBdLkZpbGVQYXRoICE9IFwiXCIpXHJcbiAgICAgICAgICAgICAgdGhpcy5pbXBvcnREeW5hbWljSnNvbihyZXN1bHRbMF0uRmlsZVBhdGgpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZVVwbG9hZEZpbGVQb3B1cCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGltcG9ydER5bmFtaWNKc29uKGNvbmZpZ3VyZWRKc29uVVJMKSB7XHJcbiAgICB2YXIgaW1wb3J0Q29uZmlndXJhdGlvbk1vZGVsID0gbmV3IEltcG9ydENvbmZpZ3VyYXRpb25Nb2RlbCgpO1xyXG4gICAgaW1wb3J0Q29uZmlndXJhdGlvbk1vZGVsLmNvbmZpZ3VyYXRpb25VcmwgPSBjb25maWd1cmVkSnNvblVSTDtcclxuICAgIHRoaXMuaW1wb3J0aW5nSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuU3lzdGVtSW1wb3J0Q29uZmlndXJhdGlvbihpbXBvcnRDb25maWd1cmF0aW9uTW9kZWwpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuY2xvc2VVcGxvYWRGaWxlUG9wdXAoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKFwiRGF0YSBpbXBvcnRlZCBzdWNjZXNzZnVsbHlcIik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UuYXBpUmVzcG9uc2VNZXNzYWdlc1swXS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmltcG9ydGluZ0luUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoQ29tcGFuaWVzKGNvbXBhbmllcywgc2VhcmNoKSB7XHJcbiAgICBpZiAoc2VhcmNoID09IG51bGwgfHwgc2VhcmNoID09ICcnKSB7XHJcbiAgICAgIHJldHVybiBjb21wYW5pZXM7XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaCAhPSBudWxsKSB7XHJcbiAgICAgIHNlYXJjaCA9IHNlYXJjaC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBzZWFyY2ggPSBzZWFyY2gudHJpbSgpO1xyXG4gICAgICBjb25zdCB0ZW1wID0gY29tcGFuaWVzLmZpbHRlcihkYXRhID0+XHJcbiAgICAgICAgZGF0YS5jb21wYW55TmFtZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gpID4gLTFcclxuICAgICAgKVxyXG4gICAgICByZXR1cm4gdGVtcDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIC8vIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFt0aGlzLmxvZ2luVXNlcmNoYW5uZWxOYW1lXSB9KTtcclxuICAgIC8vIHZhciBsb2dpbkNvbXBhbnlJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55SWRcIik7XHJcbiAgICAvLyBpZiAodGhpcy5jaGFubmVsTGlzdCAhPSB1bmRlZmluZWQgfHwgdGhpcy5jaGFubmVsTGlzdCAhPSBudWxsKSB7XHJcbiAgICAvLyAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNoYW5uZWxMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgLy8gICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgICAgIGNoYW5uZWxzOiBbKGxvZ2luQ29tcGFueUlkICsgJy0nICsgdGhpcy5jaGFubmVsTGlzdFtpbmRleF0uaWQpXVxyXG4gICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICAvLyAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgLy8gICBjaGFubmVsczogWygnQ2hhbm5lbFVwZGF0ZXMtJyArIGxvZ2luQ29tcGFueUlkKV1cclxuICAgIC8vIH0pO1xyXG4gICAgLy8gdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgLy8gICBjaGFubmVsczogWygnVXNlclVwZGF0ZXMtJyArIGxvZ2luQ29tcGFueUlkKV1cclxuICAgIC8vIH0pO1xyXG4gICAgdGhpcy5uZ0Rlc3Ryb3llZCQubmV4dCgpO1xyXG4gICAgdGhpcy5uZ0Rlc3Ryb3llZCQuY29tcGxldGUoKTtcclxuICB9XHJcbiAgb25OYXZpZ2F0ZVRvQmlsbGluZ1NjcmVlbigpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9zaGVsbC9BY2NvdW50c1wiXSk7XHJcbiAgfVxyXG5cclxuICBvbk5hdmlnYXRlVG9QcmljaW5nU2NyZWVuKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3NoZWxsL3BheW1lbnRzLXBsYW5zXCJdKTtcclxuICB9XHJcbiAgZ2V0SW50cm9EZXRhaWxzKCkge1xyXG4gICAgdmFyIGludHJvID0gbmV3IEludHJvTW9kZWwoKTtcclxuICAgIGludHJvLnVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5nZXRJbnRyb0RldGFpbHMoaW50cm8pLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzID09IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9IHJlc3BvbnNlRGF0YS5hcGlSZXNwb25zZU1lc3NhZ2VzWzBdLm1lc3NhZ2U7XHJcbiAgICAgICAgdGhpcy5hbnlPcGVyYXRpb25JblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IodGhpcy52YWxpZGF0aW9uTWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAocmVzcG9uc2VEYXRhLnN1Y2Nlc3MgPT0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBpbnRybyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5JbnRyb01vZHVsZXMpKTtcclxuICAgICAgICBpZiAoIWludHJvKVxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5JbnRyb01vZHVsZXMsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlRGF0YS5kYXRhKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVhbU1lbWJlcnMoKSB7XHJcbiAgICB2YXIgdGVhbU1lbWJlck1vZGVsO1xyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICB2YXIgdGVhbU1lbWJlck1vZGVsO1xyXG4gICAgdGVhbU1lbWJlck1vZGVsID0ge1xyXG4gICAgICBpc0ZvclRyYWNrZXI6IHRydWVcclxuICAgIH1cclxuICAgIHRlYW1NZW1iZXJNb2RlbC5pc0FyY2hpdmVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0VGVhbUxlYWRzTGlzdCh0ZWFtTWVtYmVyTW9kZWwpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgbGV0IGVtcGxveWVlc0Ryb3BEb3duID0gcmVzcG9uc2VEYXRhLmRhdGE7XHJcbiAgICAgIGlmIChlbXBsb3llZXNEcm9wRG93biAmJiBlbXBsb3llZXNEcm9wRG93bi5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVuYWJsZVRlYW1EYXNoYm9hcmQsICd0cnVlJywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW5hYmxlVGVhbURhc2hib2FyZCwgJ2ZhbHNlJywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPCEtLSBFbmhhbmNlZCBCb290c3RyYXAgVG9wYmFyIChBTEwgb3JpZ2luYWwgbG9naWMgcHJlc2VydmVkKSAtLT5cclxuPG5hdiBjbGFzcz1cIm5hdmJhciBuYXZiYXItZXhwYW5kLWxnIHNoYWRvdy1zbVwiIHN0eWxlPVwiXHJcbiAgICBwYWRkaW5nOiAwIDIwcHg7XHJcbiAgICBoZWlnaHQ6IDY1cHg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiAxMjAwOyAvKiBrZWVwIGluIGZyb250ICovXHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKTtcclxuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcclxuICBcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgc3R5bGU9XCJkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IHBhZGRpbmc6MDtcIj5cclxuXHJcbiAgICAgICAgPCEtLSBMZWZ0OiBBcHAgbWVudSAodW5jaGFuZ2VkIGxvZ2ljKSAtLT5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleDowIDAgYXV0bztcIj5cclxuICAgICAgICAgICAgPGFwcC1tZW51IFtyZWxvYWRdPVwicmVsb2FkXCIgKGlzT3BlbmVkKT1cImlzT3BlbmVkKCRldmVudClcIiAob3Blbk5ld0Rhc2hib2FyZCk9XCJuYXZpZ2F0ZVRvVXJsKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9hcHAtbWVudT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBSaWdodDogQ29udHJvbHMgLS0+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDsgbWFyZ2luLWxlZnQ6YXV0bztcIj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQ29tcGFueSBTZWxlY3RvciB3aXRoIHNlYXJjaCAmIGF2YXRhcnMgKG9yaWdpbmFsIGxvZ2ljKSAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbXBhbmllc0xpc3QgIT0gbnVsbCAmJiBjb21wYW5pZXNMaXN0Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItZGF0YSBjdXN0b20tYm94IGxhbmd1YWdlLXNlY3Rpb25cIiBzdHlsZT1cIndpZHRoOjE4MHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTtcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiXCIgbmFtZT1cInNlbGVjdGVkQ29tcGFueVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDb21wYW55XCJcclxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdENvbXBhbnkoJGV2ZW50LnZhbHVlKVwiIHBhbmVsQ2xhc3M9XCJjb21wYW55LXNlbGVjdC1wYW5lbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZENvbXBhbnlcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwieyAnbWFyZ2luLWJvdHRvbSc6IHNlbGVjdGVkQ29tcGFueS5jb21wYW55TWluaUxvZ28gPyAnMTBweCcgOiAnMHB4JyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1hdmF0YXIgW25hbWVdPVwic2VsZWN0ZWRDb21wYW55LmNvbXBhbnlOYW1lIHwgcmVtb3ZlU3BlY2lhbENoYXJhY3RlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBzZWxlY3RlZENvbXBhbnkuY29tcGFueU5hbWUgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cInNlbGVjdGVkQ29tcGFueS5jb21wYW55TWluaUxvZ28gfCBmZXRjaFNpemVkQW5kQ2FjaGVkSW1hZ2U6ICcyMCc6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNSb3VuZF09XCJ0cnVlXCIgc2l6ZT1cIjIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtYXZhdGFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7c2VsZWN0ZWRDb21wYW55LmNvbXBhbnlOYW1lfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI0MDBcIiBjbGFzcz1cImxhbmd1YWdlLWRpc3BsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6IzA5NTU1YzsgZm9udC13ZWlnaHQ6NjAwOyBvdmVyZmxvdzpoaWRkZW47IHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7IHdoaXRlLXNwYWNlOm5vd3JhcDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZENvbXBhbnlOYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0aWNreSBzZWFyY2ggaW5zaWRlIHNlbGVjdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleCBjbGFzcz1cInNlYXJjaF9nb2FsaW5wdXQgbWwtMVwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOnN0aWNreTsgdG9wOjA7IHotaW5kZXg6MTsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMCwgMCwgMCk7IHBhZGRpbmc6NnB4IDhweDsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIHN0eWxlPVwiZmxleDoxO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiIHN0eWxlPVwid2lkdGg6MTAwJTsgbWFyZ2luOjA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwic2VhcmNoX2dvYWxcIiBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cInt7J0hSTUFOQUdBTUVOVC5TRUFSQ0gnIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNsb3NlX2ljb24gbWFzdGVyZGF0YS1zZWFyY2gtY2xvc2VcIiBmeExheW91dEFsaWduPVwiZW5kIGNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OjZweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXNlYXJjaFRleHRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzZWFyY2hUZXh0XCIgY2xhc3M9XCJpY29uLWJ1dHRvbiBtci0wNSBtdC0wNVwiIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVNlYXJjaCgpXCIgc3R5bGU9XCJjdXJzb3I6cG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjb21wYW55TGlzdCBvZiBzZWFyY2hDb21wYW5pZXMoY29tcGFuaWVzTGlzdCwgc2VhcmNoVGV4dClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29tcGFueUxpc3RcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7Y29tcGFueUxpc3QuY29tcGFueU5hbWV9fVwiIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI0MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgZnhMYXlvdXQ9XCJyb3dcIiBzdHlsZT1cImRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1hdmF0YXIgW25hbWVdPVwiY29tcGFueUxpc3QuY29tcGFueU5hbWUgfCByZW1vdmVTcGVjaWFsQ2hhcmFjdGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnbWFyZ2luLWJvdHRvbSc6IGNvbXBhbnlMaXN0LmNvbXBhbnlNaW5pTG9nbyA/ICcxMHB4JyA6ICcwcHgnIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgY29tcGFueUxpc3QuY29tcGFueU5hbWUgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiY29tcGFueUxpc3QuY29tcGFueU1pbmlMb2dvIHwgZmV0Y2hTaXplZEFuZENhY2hlZEltYWdlOiAnMjAnOicnXCIgW2lzUm91bmRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMDVcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OjhweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21wYW55TGlzdC5jb21wYW55TmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFNldHRpbmdzIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGNhbkFjY2Vzc19mZWF0dXJlX1NldHRpbmdzKSB8fCAoY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzKVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7ICdTSEVMTC5TRVRUSU5HUycgfCB0cmFuc2xhdGUgfX1cIiAoY2xpY2spPVwibmF2aWdhdGVUb1NldHRpbmdzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIih0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJy9zZXR0aW5ncycpKSA/ICdpY29uX2FjdGl2ZV9jbGFzcycgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b3BiYXItYnV0dG9uLXJpZ2h0IHRoZW1lLW5hdmJhci1pY29uLWNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjEyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImNvbG9yOiMwOTU1NWM7XCI+c2V0dGluZ3M8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBNeSBXb3JrIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfTXlQcm9qZWN0V29ya1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7eyAnU0hFTEwuTVlXT1JLJyB8IHRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9TdGF0dXNSZXBvcnQoKVwiIGNsYXNzPVwidG9wYmFyLWJ1dHRvbi1yaWdodCB0aGVtZS1uYXZiYXItaWNvbi1jb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xMik7IGJvcmRlci1yYWRpdXM6MTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJjb2xvcjojMDk1NTVjO1wiPmFzc2lnbm1lbnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBMb2cgVGltZSAocG9wb3ZlciBhbmNob3IgcHJlc2VydmVkKSAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvbiAjZmVlZFRpbWVTaGVldCBtYXQtaWNvbi1idXR0b24gaWQ9XCJmZWVkVGltZVNoZWV0Q29tcG9uZW50XCIgW3N0eWxlLm92ZXJmbG93XT1cIid2aXNpYmxlJ1wiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7ICdTSEVMTC5MT0dUSU1FJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAgIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cImZlZWRUaW1lU2hlZXRcIiAoY2xpY2spPVwib3BlblRpbWVTaGVldCgpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG9wYmFyLWJ1dHRvbi1yaWdodCB0aGVtZS1uYXZiYXItaWNvbi1jb2xvclwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjEyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiY29sb3I6IzA5NTU1YztcIj5hY2Nlc3NfdGltZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTm90aWZpY2F0aW9ucyAobWF0LW1lbnUgcHJlc2VydmVkKSAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgJ1NIRUxMLk5PVElGSUNBVElPTlMnIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwidG9nZ2xlTm90aWZpYygpXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5vdmVyZmxvd109XCIndmlzaWJsZSdcIiAqbmdJZj1cIm5ld05vdGlmaWNhdGlvbnNDb3VudCAhPSAwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG9wYmFyLWJ1dHRvbi1yaWdodCB0aGVtZS1uYXZiYXItaWNvbi1jb2xvclwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJub3RpZmljYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjpyZWxhdGl2ZTsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTIpOyBib3JkZXItcmFkaXVzOjEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJjb2xvcjojMDk1NTVjO1wiPm5vdGlmaWNhdGlvbnM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJuZXdOb3RpZmljYXRpb25zQ291bnQgIT0gMFwiIGNsYXNzPVwibm90aWZpY2F0aW9uLW51bWJlciBtYXQtYmctd2FyblwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi0ycHg7IHJpZ2h0Oi0ycHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgbmV3Tm90aWZpY2F0aW9uc0NvdW50IH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8bWF0LW1lbnUgI25vdGlmaWNhdGlvbj1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtbm90aWZpY2F0aW9ucz48L2FwcC1ub3RpZmljYXRpb25zPlxyXG4gICAgICAgICAgICA8L21hdC1tZW51PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBQcm9maWxlIE1lbnUgKGFsbCBpdGVtcyByZXN0b3JlZCkgLS0+XHJcbiAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFjY291bnRNZW51XCIgKGNsaWNrKT1cInRvZ2dsZVJlY29yZGluZygpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnL2Rhc2hib2FyZC9wcm9maWxlLycpID8gJ2ljb25fYWN0aXZlX2NsYXNzJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG9wYmFyLWJ1dHRvbi1yaWdodCBpbWctYnV0dG9uXCIgKm5nSWY9XCJhdXRoZW50aWNhdGVkVXNlclJlY29yZFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjEyKTsgYm9yZGVyLXJhZGl1czoxOHB4OyBwYWRkaW5nOjRweCA2cHg7IGJvcmRlcjoxcHggc29saWQgYmxhY2s7XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImljb24taGlnaGxpZ2h0LXNldHRlclwiICpuZ0lmPVwiYXV0aGVudGljYXRlZFVzZXJSZWNvcmQucHJvZmlsZUltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImF1dGhlbnRpY2F0ZWRVc2VyUmVjb3JkLnByb2ZpbGVJbWFnZSB8IGZldGNoU2l6ZWRBbmRDYWNoZWRJbWFnZTogJzYwJzonJ1wiIGFsdD1cInByb2ZpbGUgaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6MzJweDsgaGVpZ2h0OjMycHg7IGJvcmRlci1yYWRpdXM6NTAlOyBvYmplY3QtZml0OmNvdmVyO1wiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFhdXRoZW50aWNhdGVkVXNlclJlY29yZC5wcm9maWxlSW1hZ2VcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA0cHggIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWF2YXRhciBbbmFtZV09XCJhdXRoZW50aWNhdGVkVXNlclJlY29yZC5mdWxsTmFtZSB8IHJlbW92ZVNwZWNpYWxDaGFyYWN0ZXJzXCIgW2lzUm91bmRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCIzMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYXBwLWF2YXRhcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJhY2NvdW50TWVudVwiIChjbGljayk9XCJ0b2dnbGVSZWNvcmRpbmcoKVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJy9kYXNoYm9hcmQvcHJvZmlsZS8nKSA/ICdpY29uX2FjdGl2ZV9jbGFzcycgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRvcGJhci1idXR0b24tcmlnaHQgaW1nLWJ1dHRvblwiICpuZ0lmPVwiYXV0aGVudGljYXRlZFVzZXJSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoyNHB4OyBoZWlnaHQ6MjRweDsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTIpOyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyOjFweCBzb2xpZCAjMDk1NTVjOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgcGFkZGluZzowO1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVXNlciBpY29uIGluc3RlYWQgb2YgaW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJmb250LXNpemU6MjRweDsgY29sb3I6IzA5NTU1YztcIj5wZXJzb248L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxtYXQtbWVudSAjYWNjb3VudE1lbnU9XCJtYXRNZW51XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJuYXZpZ2F0ZVRvUHJvZmlsZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmFjY291bnRfYm94PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnU0hFTEwuUFJPRklMRScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhY3Rpdml0eS1yZWNvcmRlciByZWNvcmRpbmctc3R5bGVcIiAqbmdJZj1cImlzUmVjb3JkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gb3B0aW9uYWwgcmVjb3JkaW5nIGluZGljYXRvciBpY29uIGUuZy4sIGZpYmVyX21hbnVhbF9yZWNvcmQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ2xlYXIgZGVtbyBkYXRhIC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAnU0hFTEwuQ0xFQVJERU1PREFUQScgfCB0cmFuc2xhdGV9fVwiICpuZ0lmPVwic2hvd0RlbGV0ZUljb24gJiYgc2hvd0RlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRGVtb0RhdGEoKVwiIFtzdHlsZS5vdmVyZmxvd109XCIndmlzaWJsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnU0hFTEwuQ0xFQVJERU1PREFUQScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gRXhwb3J0IGNvbmZpZ3VyYXRpb24gLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7ICdTSEVMTC5FWFBPUlRDT05GSUdVUkFUSU9OJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVN5c3RlbUV4cG9ydHNcIiAoY2xpY2spPVwiZXhwb3J0Q29uZmlndXJhdGlvbkRpYWxvZ0RhdGEoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm92ZXJmbG93XT1cIid2aXNpYmxlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5nZXRfYXBwPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnU0hFTEwuRVhQT1JUQ09ORklHVVJBVElPTicgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gSW1wb3J0IGNvbmZpZ3VyYXRpb24gKG9wZW5zIHNhdC1wb3BvdmVyIHdpdGggbmd4LWRyb3B6b25lKSAtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCJcclxuICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgJ1NIRUxMLklNUE9SVENPTkZJR1VSQVRJT04nIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cImZpbGVVcGxvYWREcm9wem9uZVBvcG92ZXJcIiAjZmlsZVVwbG9hZERyb3B6b25lUG9wdXA9XCJzYXRQb3BvdmVyQW5jaG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVN5c3RlbUltcG9ydHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRVcGxvYWRGaWxlUG9wdXBPcGVuKGZpbGVVcGxvYWREcm9wem9uZVBvcHVwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5wdWJsaXNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnU0hFTEwuSU1QT1JUQ09ORklHVVJBVElPTicgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gQWNjb3VudCAmIEJpbGxpbmcgLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uTmF2aWdhdGVUb0JpbGxpbmdTY3JlZW4oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VBY2NvdW50c0FuZEJpbGxpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YWNjb3VudF9iYWxhbmNlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BY2NvdW50ICYgQmlsbGluZzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbk5hdmlnYXRlVG9QcmljaW5nU2NyZWVuKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlQWNjb3VudHNBbmRCaWxsaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmFjY291bnRfYmFsYW5jZV93YWxsZXQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlByaWNpbmcgJiBGZWF0dXJlczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gQWx0ZXJuYXRlIHNpZ24taW4gLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfQWx0ZXJuYXRlU2lnbkluXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYWx0ZXJuYXRlU2lnbkluKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5vdmVyZmxvd109XCIndmlzaWJsZSdcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCJcclxuICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgJ1NIRUxMLlNJR05JTkFTJyB8IHRyYW5zbGF0ZX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmhvd190b19yZWc8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdTSEVMTC5TSUdOSU5BUycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25TaWdub3V0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZXhpdF90b19hcHA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdTSEVMTC5TSUdOT1VUJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBGZWVkYmFjayAocG9wb3ZlcikgLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImZlZWRCYWNrUG9wb3Zlci50b2dnbGUoKTtvcGVuRmVlZEJhY2tEaWFsb2coKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZlZWRiYWNrLWljb25cIiBbc2F0UG9wb3ZlckFuY2hvckZvcl09XCJmZWVkQmFja1BvcG92ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50X3NhdGlzZmllZF9hbHRcclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnYte3thcHBsaWNhdGlvblZlcnNpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmF2PlxyXG5cclxuPCEtLSBLZWVwIGxvYWRlciBpbiBmcm9udCBpZiB1c2VkIC0tPlxyXG48ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwiay1pLWxvYWRpbmdcIiBzdHlsZT1cInBvc2l0aW9uOmZpeGVkOyB6LWluZGV4OjEzMDA7IHRvcDowOyBsZWZ0OjA7IHJpZ2h0OjA7XCI+PC9kaXY+XHJcblxyXG48IS0tIEZlZWRiYWNrIFBvcG92ZXIgKHVuY2hhbmdlZCBsb2dpYykgLS0+XHJcbjxzYXQtcG9wb3ZlciAjZmVlZEJhY2tQb3BvdmVyIHZlcnRpY2FsQWxpZ249XCJiZWxvd1wiIGhhc0JhY2tkcm9wIGJhY2tkcm9wQ2xhc3M9XCJiYWNrZHJvcC1jb2xvclwiXHJcbiAgICBbaW50ZXJhY3RpdmVDbG9zZV09XCJmYWxzZVwiIGhvcml6b250YWxBbGlnbj1cImVuZFwiPlxyXG4gICAgPGFwcC1zdWJtaXQtZmVlZGJhY2sgKm5nSWY9XCJpc0ZlZWRCYWNrRGlhbG9nXCIgKGNsb3NlRGlhbG9nKT1cImNsb3NlRmVlZEJhY2tsb2dEaWFsb2coKVwiPjwvYXBwLXN1Ym1pdC1mZWVkYmFjaz5cclxuPC9zYXQtcG9wb3Zlcj5cclxuXHJcbjwhLS0gRXh0cmEgbWVudSAodW5jaGFuZ2VkIGxvZ2ljKSAtLT5cclxuPG1hdC1tZW51ICNtZW51Mj1cIm1hdE1lbnVcIiBjbGFzcz1cImRpYWxvZ193aW5kb3dcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cInAtMCBtLTAgbGlzdG9mX2Fzc2V0cyBzdG9yZS1saXN0LWRyb3Bkb3duXCIgaWQ9XCJzdHlsZS0xXCI+XHJcbiAgICAgICAgPG1hdC1saXN0IGNsYXNzPVwiY29tcGFjdC1saXN0XCI+XHJcbiAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cInAtMCBhc3NldC1jYXJkXCIgKm5nSWY9XCIoY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtIHx8IGNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtcylcIlxyXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvYXBwbGljYXRpb25zL3ZpZXctZm9ybXMnXVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRlLWNvbnRlbnQtb3ZlcmZsb3cgdXNlclN0b3J5LW5hbWUtY29udHJvbCBzdG9yZS1kcm9wZG93bi1wYWRkaW5nXCI+Rm9ybXM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cInAtMCBhc3NldC1jYXJkXCIgKm5nSWY9XCJjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9hcHBsaWNhdGlvbnMvY3VzdG9tLWFwcGxpY2F0aW9ucyddXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhpZGUtY29udGVudC1vdmVyZmxvdyB1c2VyU3RvcnktbmFtZS1jb250cm9sIHN0b3JlLWRyb3Bkb3duLXBhZGRpbmdcIj5DdXN0b21cclxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgICAgIDxtYXQtY2FyZCAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlc1wiIGNsYXNzPVwicC0wIGFzc2V0LWNhcmRcIlxyXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvcm9sZW1hbmFnZW1lbnQvcm9sZW1hbmFnZW1lbnQnXVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRlLWNvbnRlbnQtb3ZlcmZsb3cgdXNlclN0b3J5LW5hbWUtY29udHJvbCBzdG9yZS1kcm9wZG93bi1wYWRkaW5nXCI+Um9sZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgICAgIDxtYXQtY2FyZCAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnNcIiBjbGFzcz1cInAtMCBhc3NldC1jYXJkXCJcclxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL3JvbGVtYW5hZ2VtZW50L2VudGl0eXJvbGVtYW5hZ2VtZW50J11cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGlkZS1jb250ZW50LW92ZXJmbG93IHVzZXJTdG9yeS1uYW1lLWNvbnRyb2wgc3RvcmUtZHJvcGRvd24tcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7cHJvamVjdFJvbGVUZXh0IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICA8L21hdC1saXN0PlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG48L21hdC1tZW51PlxyXG5cclxuPCEtLSBXZWxjb21lIG5vdGUgKHVuY2hhbmdlZCkgLS0+XHJcbjxkaXYgW0BmYWRlXSAqbmdJZj1cImRpc3BsYXlXZWxjb21lTm90ZSAmJiB1c2VyRnVsbE5hbWVcIiBjbGFzcz1cIndlbGNvbWUtbm90ZVwiXHJcbiAgICBzdHlsZT1cInotaW5kZXg6IDEyNTA7IHBvc2l0aW9uOiBmaXhlZDsgdG9wOiA3MnB4OyByaWdodDogMTZweDtcIj5cclxuICAgIDxzcGFuICpuZ0lmPVwibG9nZ2VkSW5Db3VudCA9PSAxOyBlbHNlIGVsc2VTcGFuXCI+V2VsY29tZSAmbmJzcDsgPC9zcGFuPiA8c3Bhbj4ge3sgdXNlckZ1bGxOYW1lIH19IDwvc3Bhbj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVNwYW4+IFdlbGNvbWUgYmFjayAmbmJzcDs8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gRmlsZSBVcGxvYWQgcG9wb3ZlciAoaW1wb3J0IGNvbmZpZ3VyYXRpb24pIC0tPlxyXG48c2F0LXBvcG92ZXIgI2ZpbGVVcGxvYWREcm9wem9uZVBvcG92ZXIgaGFzQmFja2Ryb3AgW2ludGVyYWN0aXZlQ2xvc2VdPVwiZmFsc2VcIiBiYWNrZHJvcENsYXNzPVwidGVzdHJ1bi1wb3BvdmVyXCJcclxuICAgIHNjcm9sbFN0cmF0ZWd5PVwicmVwb3NpdGlvblwiPlxyXG4gICAgPG1hdC1jYXJkIGNsYXNzPVwicC0wIG1yLTAgY3VzdG9tLWhybS1kcm9wem9uZVwiIHN0eWxlPVwibWF4LXdpZHRoOjUyMHB4O1wiPlxyXG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUtdGV4dCBtYXQtYmctcHJpbWFyeSBwLTA1XCIgZnhMYXlvdXQ9XCJyb3dcIiBzdHlsZT1cImRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmeEZsZXggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIHN0eWxlPVwiZmxleDoxOyB0ZXh0LWFsaWduOmNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydURVNUTUFOQUdFTUVOVC5VUExPQURGSUxFUycgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjIwcHhcIiBmeExheW91dEFsaWduPVwiZW5kIGNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoyMHB4OyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpmbGV4LWVuZDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5saW5lX2VkaXRfY2xvc2VfYnRuIGJ0blwiIChjbGljayk9XCJjbG9zZVVwbG9hZEZpbGVQb3B1cCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJ0aW1lc1wiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTFcIiBzdHlsZT1cInBhZGRpbmc6OHB4O1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRyb3B6b25lIGRyb3B6b25lLWhlaWdodFwiIG5neC1kcm9wem9uZSAoY2hhbmdlKT1cImZpbGVzU2VsZWN0ZWQoJGV2ZW50KVwiIGFjY2VwdD1cIi5qc29uXCI+XHJcbiAgICAgICAgICAgICAgICA8bmd4LWRyb3B6b25lLWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7J0RPQ1VNRU5UTUFOQUdFTUVOVC5EUkFHQU5ERFJPUEZJTEVTSEVSRScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbmd4LWRyb3B6b25lLWxhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZ3gtZHJvcHpvbmUtcHJldmlldyBjbGFzcz1cImN1c3RvbS1kcm9wem9uZS1wcmV2aWV3XCIgKm5nRm9yPVwibGV0IGYgb2YgZmlsZXNcIiBbcmVtb3ZhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cIm9uUmVtb3ZlKGYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5neC1kcm9wem9uZS1sYWJlbCBjbGFzcz1cImN1c3RvbS1kcm9wem9uZS1sYWJlbFwiIFthdHRyLmRhdGEtdGlwXT1cImYubmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzZXRMYWJlbE5hbWVGb3JEcm9wem9uZShmLm5hbWUpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZHJvcHpvbmUtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L25neC1kcm9wem9uZS1wcmV2aWV3PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLTA1IHRleHQtbXV0ZWRcIiBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjZweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPmFsbG93ZWQgZmlsZSBleHRlbnNpb25zIDogLmpzb248L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImRldGVybWluYXRlXCIgW3ZhbHVlXT1cInByb2dyZXNzVmFsdWVcIiAqbmdJZj1cInByb2dyZXNzVmFsdWUgPiAwXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LXByb2dyZXNzLWJhcj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9ncmVzc1ZhbHVlID4gMFwiIHN0eWxlPVwibWFyZ2luLXRvcDo2cHg7XCI+XHJcbiAgICAgICAgICAgICAgICB7e3Byb2dyZXNzVmFsdWV9fSUgY29tcGxldGVkIChVcGxvYWRpbmcge3tmaWxlQ291bnRlcn19IG9mIHt7ZmlsZXMubGVuZ3RofX0gZmlsZXMpXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTA1XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBlbmRcIiAqbmdJZj1cImZpbGVzUHJlc2VudFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6MTBweDsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBnYXA6OHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzYXZlRmlsZXMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwic2F2ZVwiPjwvZmEtaWNvbj57eydVUExPQUQnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1sLTFcIiBtYXQtYnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJyZW1vdmVBbGxGaWxlcygpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwidGltZXNcIj48L2ZhLWljb24+e3snRE9DVU1FTlRNQU5BR0VNRU5ULkNMRUFSRklMRVMnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0wNVwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgZW5kXCIgKm5nSWY9XCJpbXBvcnRpbmdJblByb2dyZXNzXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDoxMHB4OyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWwtMVwiIG1hdC1idXR0b24gbWF0LXJhaXNlZC1idXR0b24gW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cIm1yLTA1XCIgaWNvbj1cInVwbG9hZFwiPjwvZmEtaWNvbj57eydTSEVMTC5JTVBPUlRJTkdURVhUJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc3BpbiBmYS1zcGlubmVyXCIgKm5nSWY9XCJpbXBvcnRpbmdJblByb2dyZXNzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtY2FyZD5cclxuPC9zYXQtcG9wb3Zlcj5cclxuXHJcbjwhLS0gSW5saW5lIGhlbHBlcnMgKGtlcHQgZnJvbSB5b3VyIG9yaWdpbmFsKSAtLT5cclxuPHN0eWxlPlxyXG4gICAgLmZpbGUtb3ItZm9sZGVyLWljb24ge1xyXG4gICAgICAgIHdpZHRoOiA1MHB4O1xyXG4gICAgICAgIGhlaWdodDogNTBweDtcclxuICAgICAgICBmb250LXNpemU6IDUwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZpbGUtb3ItZm9sZGVyLW5hbWUtYWxpZ24ge1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xyXG4gICAgICAgIGxpbmUtY2xhbXA6IDI7XHJcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcclxuICAgIH1cclxuXHJcbiAgICAuZHJvcHpvbmUtaGVpZ2h0IHtcclxuICAgICAgICBoZWlnaHQ6IDEzMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5jdXN0b20tZHJvcHpvbmUtcHJldmlldyB7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDBweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDEwMHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyogRW5zdXJlIG1hdC1zZWxlY3QgcGFuZWwgc3RheXMgYWJvdmUgbmF2YmFyICovXHJcbiAgICAuY2RrLW92ZXJsYXktY29udGFpbmVyLFxyXG4gICAgLmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3gge1xyXG4gICAgICAgIHotaW5kZXg6IDEzMDAgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAvKiBPcHRpb25hbDogc3R5bGUgdGhlIG1hdC1zZWxlY3QgcGFuZWwgdG8gbWF0Y2ggdGhlbWUgKi9cclxuICAgIC5jb21wYW55LXNlbGVjdC1wYW5lbCAubWF0LW1kYy1vcHRpb24ge1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xyXG4gICAgfVxyXG48L3N0eWxlPlxyXG5cclxuPCEtLSBLZWVwIHlvdXIgYW5ub3VuY2VtZW50IGRpYWxvZyB0ZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNvcGVuQW5ub3VjZW1lbnREaWFsb2dDb21wb25lbnQgbGV0LWRhdGE+XHJcbiAgICA8YW5ub3VuY2VtZW50LWRpYWxvZyBbZGF0YV09W2RhdGFdPjwvYW5ub3VuY2VtZW50LWRpYWxvZz5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|