@ti-tecnologico-de-monterrey-oficial/ds-ng 1.5.1317 → 1.5.1318-a
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/esm2022/lib/components/bmb-academic-progress/bmb-academic-progress.component.mjs +4 -4
- package/esm2022/lib/components/bmb-accordion/bmb-accordion.component.mjs +12 -6
- package/esm2022/lib/components/bmb-account-statement/bmb-account-statement.component.mjs +4 -4
- package/esm2022/lib/components/bmb-action-icon/bmb-action-icon.component.mjs +4 -4
- package/esm2022/lib/components/bmb-action-menu/bmb-action-menu.component.mjs +3 -3
- package/esm2022/lib/components/bmb-advertisement-card/bmb-advertisement-card.component.mjs +3 -3
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-ads/bmb-alert-center-ads.component.mjs +9 -43
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-empty/bmb-alert-center-empty.component.mjs +3 -3
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-form/bmb-alert-center-form.component.mjs +4 -4
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-list/bmb-alert-center-list.component.mjs +3 -3
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.component.mjs +7 -9
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.service.mjs +3 -3
- package/esm2022/lib/components/bmb-alert-center/types.mjs +1 -1
- package/esm2022/lib/components/bmb-badge/bmb-badge.component.mjs +3 -3
- package/esm2022/lib/components/bmb-balance-overview/bmb-balance-overview.component.mjs +3 -3
- package/esm2022/lib/components/bmb-bookmark/bmb-bookmark.component.mjs +3 -3
- package/esm2022/lib/components/bmb-bottom-navigation-bar/bmb-bottom-navigation-bar.component.mjs +4 -4
- package/esm2022/lib/components/bmb-breadcrumb/bmb-breadcrumb.component.mjs +4 -4
- package/esm2022/lib/components/bmb-button-icon/bmb-button-icon.component.mjs +3 -3
- package/esm2022/lib/components/bmb-calendar/bmb-calendar.component.mjs +4 -4
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-header/bmb-calendar-header.component.mjs +4 -4
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-hour-view/bmb-calendar-hour-view.component.mjs +4 -4
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-schedule-cards/bmb-calendar-schedule-cards.component.mjs +4 -4
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-day/bmb-calendar-template-day.component.mjs +3 -3
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component.mjs +4 -4
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-month/bmb-calendar-template-month.component.mjs +3 -3
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-week/bmb-calendar-template-week.component.mjs +3 -3
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-time-indicator/bmb-calendar-time-indicator.component.mjs +3 -3
- package/esm2022/lib/components/bmb-calendar/utils.mjs +1 -1
- package/esm2022/lib/components/bmb-card/bmb-card.component.mjs +13 -13
- package/esm2022/lib/components/bmb-card-button/bmb-card-button.component.mjs +4 -4
- package/esm2022/lib/components/bmb-carousel/bmb-carousel.component.mjs +4 -4
- package/esm2022/lib/components/bmb-chat-bar/bmb-chat-bar.component.mjs +4 -4
- package/esm2022/lib/components/bmb-chat-bubbles/bmb-chat-bubbles.component.mjs +3 -3
- package/esm2022/lib/components/bmb-check-external-link-button/bmb-check-external-link-button.component.mjs +3 -3
- package/esm2022/lib/components/bmb-checkbox/bmb-checkbox.component.mjs +4 -4
- package/esm2022/lib/components/bmb-chevron-title-selector/bmb-chevron-title-selector.component.mjs +3 -3
- package/esm2022/lib/components/bmb-container/bmb-container.component.mjs +4 -4
- package/esm2022/lib/components/bmb-container-button/bmb-container-button.component.mjs +4 -4
- package/esm2022/lib/components/bmb-date-range/bmb-date-range.component.mjs +4 -4
- package/esm2022/lib/components/bmb-datepicker/bmb-datepicker-modal/bmb-datepicker-modal.component.mjs +4 -4
- package/esm2022/lib/components/bmb-datepicker/bmb-datepicker.component.mjs +4 -4
- package/esm2022/lib/components/bmb-digital-id/bmb-digital-id.component.mjs +3 -3
- package/esm2022/lib/components/bmb-divider/bmb-divider.component.mjs +4 -4
- package/esm2022/lib/components/bmb-dot-paginator/bmb-dot-paginator.component.mjs +4 -4
- package/esm2022/lib/components/bmb-drawer-overlay/bmb-drawer-overlay.component.mjs +5 -5
- package/esm2022/lib/components/bmb-dropdown/bmb-dropdown.component.mjs +4 -4
- package/esm2022/lib/components/bmb-dropdown-menu/bmb-dropdown-menu.component.mjs +3 -3
- package/esm2022/lib/components/bmb-dropzone/bmb-dropzone.component.mjs +4 -4
- package/esm2022/lib/components/bmb-evaluation-rubric/bmb-evaluation-rubric.component.mjs +4 -4
- package/esm2022/lib/components/bmb-external-link/bmb-external-link.component.mjs +3 -3
- package/esm2022/lib/components/bmb-fab/bmb-fab.component.mjs +4 -4
- package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.component.mjs +4 -4
- package/esm2022/lib/components/bmb-focus-element/bmb-focus-element.component.mjs +3 -3
- package/esm2022/lib/components/bmb-form-validator/bmb-form-validator.component.mjs +4 -4
- package/esm2022/lib/components/bmb-frequent-apps-selector/bmb-frequent-apps-selector.component.mjs +3 -3
- package/esm2022/lib/components/bmb-grade-value/bmb-grade-value.component.mjs +3 -3
- package/esm2022/lib/components/bmb-grades/bmb-grades.component.mjs +4 -4
- package/esm2022/lib/components/bmb-header-mitec/bmb-header-mitec.component.mjs +3 -3
- package/esm2022/lib/components/bmb-header-mobile/bmb-header-mobile.component.mjs +3 -3
- package/esm2022/lib/components/bmb-hito-card/bmb-hito-card.component.mjs +4 -4
- package/esm2022/lib/components/bmb-hito-list/bmb-hito-list.component.mjs +4 -4
- package/esm2022/lib/components/bmb-home-card/bmb-home-card-header/bmb-home-card-header.component.mjs +4 -4
- package/esm2022/lib/components/bmb-home-card/bmb-home-card.component.mjs +3 -3
- package/esm2022/lib/components/bmb-home-card-chat/bmb-home-card-chat.component.mjs +3 -3
- package/esm2022/lib/components/bmb-home-section/bmb-home-section.component.mjs +3 -3
- package/esm2022/lib/components/bmb-icon/bmb-icon.component.mjs +4 -4
- package/esm2022/lib/components/bmb-icon-item/bmb-icon-item.component.mjs +3 -3
- package/esm2022/lib/components/bmb-icon-status/bmb-icon-status.component.mjs +3 -3
- package/esm2022/lib/components/bmb-iframe/bmb-iframe.component.mjs +3 -3
- package/esm2022/lib/components/bmb-iframe/bmb-iframe.pipe.mjs +3 -3
- package/esm2022/lib/components/bmb-image/bmb-image.component.mjs +3 -3
- package/esm2022/lib/components/bmb-inner-header/bmb-inner-header.component.mjs +3 -3
- package/esm2022/lib/components/bmb-input/bmb-input-content/bmb-input-content.component.mjs +4 -4
- package/esm2022/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.mjs +4 -4
- package/esm2022/lib/components/bmb-input/bmb-input.component.mjs +4 -4
- package/esm2022/lib/components/bmb-input-phone-number/bmb-input-phone-number.component.mjs +4 -4
- package/esm2022/lib/components/bmb-input-tags/bmb-input-tags.component.mjs +4 -4
- package/esm2022/lib/components/bmb-interactive-icon/bmb-interactive-icon.component.mjs +4 -4
- package/esm2022/lib/components/bmb-invoice/bmb-invoice.component.mjs +4 -4
- package/esm2022/lib/components/bmb-item/bmb-item.component.mjs +3 -3
- package/esm2022/lib/components/bmb-legend/bmb-legend.component.mjs +3 -3
- package/esm2022/lib/components/bmb-list-group/bmb-list-group-item/bmb-list-group-item.component.mjs +4 -4
- package/esm2022/lib/components/bmb-list-group/bmb-list-group.component.mjs +4 -4
- package/esm2022/lib/components/bmb-list-group/bmb-list-group.service.mjs +4 -4
- package/esm2022/lib/components/bmb-list-items/bmb-list-items.component.mjs +4 -4
- package/esm2022/lib/components/bmb-loader/bmb-loader.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login/bmb-login-content/bmb-login-content.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login/bmb-login.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-logged/bmb-login-onboarding-logged.component.mjs +5 -5
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-login/bmb-login-onboarding-login.component.mjs +5 -5
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-logout/bmb-login-onboarding-logout.component.mjs +5 -5
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-four.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-one.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-three.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-two.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step.component.mjs +5 -5
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper.component.mjs +5 -5
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding.component.mjs +5 -5
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding.service.mjs +3 -3
- package/esm2022/lib/components/bmb-logo/bmb-logo.component.mjs +4 -4
- package/esm2022/lib/components/bmb-media-card/bmb-media-card.component.mjs +3 -3
- package/esm2022/lib/components/bmb-mitec-logo-animation/bmb-mitec-logo-animation.component.mjs +4 -4
- package/esm2022/lib/components/bmb-mobile-templates/bmb-mobile-templates.component.mjs +3 -3
- package/esm2022/lib/components/bmb-modal/bmb-modal.component.mjs +4 -4
- package/esm2022/lib/components/bmb-modal/bmb-native-modal.component.mjs +4 -4
- package/esm2022/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator-item/bmb-multi-dot-paginator-item.component.mjs +3 -3
- package/esm2022/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator.component.mjs +4 -4
- package/esm2022/lib/components/bmb-navigation-bar/bmb-navigation-bar.component.mjs +3 -3
- package/esm2022/lib/components/bmb-notice-card/bmb-notice-card.component.mjs +3 -3
- package/esm2022/lib/components/bmb-notification-card/bmb-notification-card-modal/bmb-notification-card-modal.component.mjs +18 -10
- package/esm2022/lib/components/bmb-notification-card/bmb-notification-card.component.mjs +4 -4
- package/esm2022/lib/components/bmb-notification-counter/bmb-notification-counter.component.mjs +3 -3
- package/esm2022/lib/components/bmb-overlay/bmb-overlay.component.mjs +3 -3
- package/esm2022/lib/components/bmb-paginator/bmb-paginator.component.mjs +4 -4
- package/esm2022/lib/components/bmb-portal/bmb-portal.component.mjs +4 -4
- package/esm2022/lib/components/bmb-portal/bmb-projected-content/bmb-projected-content.component.mjs +5 -5
- package/esm2022/lib/components/bmb-profile/bmb-profile.component.mjs +4 -4
- package/esm2022/lib/components/bmb-progress-bar/bmb-progress-bar.component.mjs +4 -4
- package/esm2022/lib/components/bmb-progress-cirlce/bmb-progress-circle.component.mjs +4 -4
- package/esm2022/lib/components/bmb-pull-wedge/bmb-pull-wedge.component.mjs +4 -4
- package/esm2022/lib/components/bmb-push-notification/bmb-push-notification-item/bmb-push-notification-item.component.mjs +4 -4
- package/esm2022/lib/components/bmb-push-notification/bmb-push-notification.component.mjs +4 -4
- package/esm2022/lib/components/bmb-radial/bmb-radial.component.mjs +4 -4
- package/esm2022/lib/components/bmb-search-input/bmb-search-input.component.mjs +4 -4
- package/esm2022/lib/components/bmb-server-table/bmb-server-table.component.mjs +4 -4
- package/esm2022/lib/components/bmb-sidebar/bmb-sidebar.component.mjs +4 -4
- package/esm2022/lib/components/bmb-simple-header/bmb-simple-header.component.mjs +3 -3
- package/esm2022/lib/components/bmb-skeleton/bmb-skeleton.component.mjs +3 -3
- package/esm2022/lib/components/bmb-sounds-card/bmb-sounds-card.component.mjs +4 -4
- package/esm2022/lib/components/bmb-stat-counter/bmb-stat-counter.component.mjs +3 -3
- package/esm2022/lib/components/bmb-step-progress-bar/bmb-step-progress-bar.component.mjs +4 -4
- package/esm2022/lib/components/bmb-student-activity-card/bmb-student-activity-card.component.mjs +4 -4
- package/esm2022/lib/components/bmb-student-activity-selector/bmb-student-activity-tab/bmb-student-activity-tab.component.mjs +3 -3
- package/esm2022/lib/components/bmb-switch/bmb-switch.component.mjs +4 -4
- package/esm2022/lib/components/bmb-table-lite/bmb-table-lite.component.mjs +4 -4
- package/esm2022/lib/components/bmb-tables/bmb-tables.component.mjs +4 -4
- package/esm2022/lib/components/bmb-tabs/bmb-tabs.component.mjs +4 -4
- package/esm2022/lib/components/bmb-tags/bmb-tags.component.mjs +4 -4
- package/esm2022/lib/components/bmb-text-editor/bmb-text-editor.component.mjs +4 -4
- package/esm2022/lib/components/bmb-text-link/bmb-text-link.component.mjs +3 -3
- package/esm2022/lib/components/bmb-theme/bmb-theme.component.mjs +4 -4
- package/esm2022/lib/components/bmb-three-cols/bmb-three-cols.component.mjs +3 -3
- package/esm2022/lib/components/bmb-timestream/bmb-timestream-detail/bmb-timestream-detail.component.mjs +5 -5
- package/esm2022/lib/components/bmb-timestream/bmb-timestream-error/bmb-timestream-error.component.mjs +3 -3
- package/esm2022/lib/components/bmb-timestream/bmb-timestream.component.mjs +4 -4
- package/esm2022/lib/components/bmb-timestream-card/bmb-timestream-card.component.mjs +4 -4
- package/esm2022/lib/components/bmb-title-content/bmb-title-content.component.mjs +4 -4
- package/esm2022/lib/components/bmb-toast/bmb-toast.component.mjs +4 -4
- package/esm2022/lib/components/bmb-tooltip/bmb-tooltip.component.mjs +4 -4
- package/esm2022/lib/components/bmb-top-bar/bmb-top-bar-item/bmb-top-bar-item.component.mjs +3 -3
- package/esm2022/lib/components/bmb-top-bar/bmb-top-bar-user-section/bmb-top-bar-user-section.component.mjs +3 -3
- package/esm2022/lib/components/bmb-top-bar/bmb-top-bar.component.mjs +4 -4
- package/esm2022/lib/components/bmb-totp/bmb-totp.component.mjs +4 -4
- package/esm2022/lib/components/bmb-user-image/bmb-user-image.component.mjs +3 -3
- package/esm2022/lib/components/bmb-user-profile/bmb-user-profile-content/bmb-user-profile-content.component.mjs +3 -3
- package/esm2022/lib/components/bmb-user-profile/bmb-user-profile.component.mjs +3 -3
- package/esm2022/lib/components/bmb-user-summary/bmb-user-summary-content/bmb-user-summary-content.component.mjs +4 -4
- package/esm2022/lib/components/bmb-user-summary/bmb-user-summary.component.mjs +3 -3
- package/esm2022/lib/components/bmb-value-counter/bmb-value-counter.component.mjs +3 -3
- package/esm2022/lib/components/bmb-web-templates/bmb-web-templates.component.mjs +3 -3
- package/esm2022/lib/components/bmb-wheel-menu/bmb-wheel-menu.component.mjs +4 -4
- package/esm2022/lib/components/utils/bmb-alert-center-detail/bmb-alert-center-detail.component.mjs +37 -0
- package/esm2022/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.mjs +4 -4
- package/esm2022/lib/directives/bmb-accordion/bmb-accordion-control.directive.mjs +4 -4
- package/esm2022/lib/directives/bmb-button/button.directive.mjs +4 -4
- package/esm2022/lib/directives/bmb-button-group/bmb-button-group.directive.mjs +3 -3
- package/esm2022/lib/directives/bmb-layout/bmb-layout-item.directive.mjs +4 -4
- package/esm2022/lib/directives/bmb-layout/bmb-layout.directive.mjs +3 -3
- package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.mjs +4 -4
- package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout.directive.mjs +3 -3
- package/esm2022/lib/directives/bmb-layout-grid/bmb-layout-grid.directive.mjs +7 -7
- package/esm2022/lib/directives/bmb-selector/bmb-selector.directive.mjs +4 -4
- package/esm2022/lib/directives/utils/clickoutside.directive.mjs +3 -3
- package/esm2022/lib/ds-ng.component.mjs +3 -3
- package/esm2022/lib/ds-ng.service.mjs +3 -3
- package/esm2022/lib/pipes/translations.mjs +3 -3
- package/esm2022/lib/services/calendar/calendar.service.mjs +6 -6
- package/esm2022/lib/services/calendar.service.mjs +3 -3
- package/esm2022/lib/services/modal/native-modal.service.mjs +4 -4
- package/esm2022/lib/services/native-modal.service.mjs +4 -4
- package/esm2022/lib/services/notification/notification.service.mjs +4 -4
- package/esm2022/lib/services/notification.service.mjs +4 -4
- package/esm2022/lib/services/projection/projection.service.mjs +4 -4
- package/esm2022/lib/services/projection.service.mjs +4 -4
- package/esm2022/lib/services/tabs/tabs.service.mjs +3 -3
- package/esm2022/lib/services/tabs.service.mjs +3 -3
- package/esm2022/lib/services/theme/theme.service.mjs +3 -3
- package/esm2022/lib/services/theme.service.mjs +3 -3
- package/esm2022/lib/services/toast/toast.service.mjs +3 -3
- package/esm2022/lib/services/toast.service.mjs +3 -3
- package/esm2022/lib/services/translations/translations.service.mjs +4 -4
- package/esm2022/lib/services/user/profile.service.mjs +3 -3
- package/esm2022/lib/utils/dropdown.mjs +1 -1
- package/esm2022/lib/utils/formControl.mjs +1 -1
- package/esm2022/lib/utils/timestreamFilters.mjs +1 -1
- package/esm2022/lib/utils/utils.mjs +26 -1
- package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +661 -623
- package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs.map +1 -1
- package/lib/components/bmb-accordion/bmb-accordion.component.d.ts +2 -1
- package/lib/components/bmb-alert-center/bmb-alert-center-ads/bmb-alert-center-ads.component.d.ts +0 -4
- package/lib/components/bmb-alert-center/bmb-alert-center.component.d.ts +3 -3
- package/lib/components/bmb-alert-center/types.d.ts +2 -0
- package/lib/components/bmb-chat-bar/bmb-chat-bar.component.d.ts +2 -2
- package/lib/components/bmb-notification-card/bmb-notification-card-modal/bmb-notification-card-modal.component.d.ts +5 -3
- package/lib/components/utils/bmb-alert-center-detail/bmb-alert-center-detail.component.d.ts +20 -0
- package/lib/services/calendar/calendar.service.d.ts +1 -1
- package/lib/utils/utils.d.ts +4 -0
- package/package.json +1 -1
|
@@ -513,10 +513,10 @@ export class BmbTableLiteComponent {
|
|
|
513
513
|
trackByRow(row) {
|
|
514
514
|
return row.id || row.sociedad;
|
|
515
515
|
}
|
|
516
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
517
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BmbTableLiteComponent, isStandalone: true, selector: "bmb-table-lite", inputs: { showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, truncate: { classPropertyName: "truncate", publicName: "truncate", isSignal: true, isRequired: false, transformFunction: null }, lang: { classPropertyName: "lang", publicName: "lang", isSignal: true, isRequired: false, transformFunction: null }, serverSide: { classPropertyName: "serverSide", publicName: "serverSide", isSignal: true, isRequired: false, transformFunction: null }, filtersPosition: { classPropertyName: "filtersPosition", publicName: "filtersPosition", isSignal: true, isRequired: false, transformFunction: null }, initialTableSelection: { classPropertyName: "initialTableSelection", publicName: "initialTableSelection", isSignal: true, isRequired: false, transformFunction: null }, actionTemplate: { classPropertyName: "actionTemplate", publicName: "actionTemplate", isSignal: true, isRequired: false, transformFunction: null }, detailTemplate: { classPropertyName: "detailTemplate", publicName: "detailTemplate", isSignal: true, isRequired: false, transformFunction: null }, clearSelection: { classPropertyName: "clearSelection", publicName: "clearSelection", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, filtersVisible: { classPropertyName: "filtersVisible", publicName: "filtersVisible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clearSelection: "clearSelectionChange", currentPage: "currentPageChange", filtersVisible: "filtersVisibleChange", select: "select", clickedRow: "clickedRow", searchChange: "searchChange", filtersChange: "filtersChange", searchModeChange: "searchModeChange", pageChange: "pageChange" }, host: { properties: { "style.--col-count": "this.colCount", "style.--col-checkbox": "this.colCheckbox", "style.--col-expand": "this.colExpand", "style.--col-actions": "this.colActions", "style.--has-checkbox": "this.hasCheckbox", "style.--has-expand": "this.hasExpand", "style.--has-actions": "this.hasActions" } }, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"getTableClasses()\" [ngStyle]=\"cssVars\">\n @if (showSearch() || filtersVisible()) {\n <header class=\"bmb_table_lite-header\">\n @if (showSearch()) {\n <section class=\"bmb_table_lite-search\">\n <bmb-input\n class=\"bmb_table_lite-input\"\n [type]=\"'text'\"\n [placeholder]=\"'Buscar'\"\n [disabled]=\"false\"\n [icon]=\"'search'\"\n [appearance]=\"'normal'\"\n [control]=\"searchControl\"\n ></bmb-input>\n <bmb-action-icon\n [idElement]=\"''\"\n [icon]=\"'filter_list'\"\n [iconSize]=\"24\"\n (buttonClick)=\"toggleFilters()\"\n ></bmb-action-icon>\n </section>\n }\n <div class=\"bmb_table_lite-filter\">\n @if (filtersVisible()) {\n @for (column of parsedFiltersColumns(); track $index) {\n <section class=\"bmb_table_lite-filter-item\">\n @switch (column.type) {\n @case ('number') {\n <div class=\"bmb_table_lite-filter-item-number\">\n <bmb-input\n [label]=\"column.label + ' m\u00EDnimo'\"\n [type]=\"'number'\"\n [placeholder]=\"'M\u00EDn'\"\n [appearance]=\"'normal'\"\n [control]=\"getFormControl(column.dataKey + '_min')\"\n />\n <bmb-input\n [label]=\"column.label + ' m\u00E1ximo'\"\n [type]=\"'number'\"\n [placeholder]=\"'M\u00E1x'\"\n [appearance]=\"'normal'\"\n [control]=\"getFormControl(column.dataKey + '_max')\"\n />\n </div>\n }\n @case ('date') {\n <bmb-date-range\n [label]=\"column.label\"\n [placeholderStartDate]=\"'Desde'\"\n [placeholderEndDate]=\"'Hasta'\"\n [icon]=\"'calendar_month'\"\n [appearance]=\"'normal'\"\n [dateFormat]=\"'dd/MM/yyyy'\"\n [controlStart]=\"getFormControl(column.dataKey + '_from')\"\n [controlEnd]=\"getFormControl(column.dataKey + '_to')\"\n (startDateChange)=\"\n getFormControl(column.dataKey + '_from').setValue($event)\n \"\n (endDateChange)=\"\n getFormControl(column.dataKey + '_to').setValue($event)\n \"\n />\n }\n @default {\n <bmb-input\n [label]=\"column.label\"\n [placeholder]=\"'Filtrar'\"\n [control]=\"getFormControl(column.dataKey + '_contains')\"\n />\n }\n }\n </section>\n }\n }\n </div>\n </header>\n }\n\n <div class=\"bmb_table_lite-container\">\n <section class=\"bmb_table_lite-container-table\">\n <div class=\"bmb_table_lite-row bmb_table_lite-row--header\">\n @if (tableConfig?.isSelectable) {\n <div class=\"bmb_table_lite-th bmb_table_lite-checkbox\">\n <bmb-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n [ariaLabel]=\"checkboxLabel()\"\n [disabled]=\"false\"\n />\n </div>\n }\n\n @if (tableConfig?.isExpandible) {\n <div class=\"bmb_table_lite-th bmb_table_lite-expand\"> </div>\n }\n\n @for (\n column of tableColumns;\n track trackByColumn(column);\n let i = $index\n ) {\n <div\n class=\"bmb_table_lite-th\"\n [ngClass]=\"getHeaderCellClasses(i)\"\n [title]=\"\n lang() === 'es' ? column.label : column.labelEn || column.label\n \"\n >\n <ng-container *ngIf=\"column.icon\">\n <bmb-icon [icon]=\"column.icon\"></bmb-icon>\n </ng-container>\n\n @if (column.htmlLabel) {\n <ng-template\n [ngTemplateOutlet]=\"column.htmlLabel\"\n [ngTemplateOutletContext]=\"{ column: column, index: i }\"\n ></ng-template>\n } @else {\n <span class=\"bmb_table_lite-th-text\">\n {{\n lang() === 'es'\n ? column.label\n : column.labelEn || column.label\n }}\n </span>\n }\n </div>\n }\n\n @if (tableConfig?.showActions) {\n <div class=\"bmb_table_lite-th bmb_table_lite-actions\"></div>\n }\n </div>\n\n @for (row of pageSlice; track trackByRow(row); let rIndex = $index) {\n <div\n class=\"bmb_table_lite-row\"\n (click)=\"onSelectRow(row)\"\n [ngClass]=\"{\n 'bmb_table_lite-even': isEven(rIndex),\n 'bmb_table_lite-odd': isOdd(rIndex),\n 'bmb_table_lite-expandible': expandedElement === row\n }\"\n >\n @if (tableConfig?.isSelectable) {\n <div class=\"bmb_table_lite-td bmb_table_lite-checkbox\">\n <bmb-checkbox\n (change)=\"$event ? selection.toggle(row) : null; onSelect()\"\n [checked]=\"selection.isSelected(row)\"\n [ariaLabel]=\"checkboxLabel(row)\"\n [disabled]=\"false\"\n onkeypress=\"$event.stopPropagation()\"\n />\n </div>\n }\n\n @if (tableConfig?.isExpandible) {\n <div class=\"bmb_table_lite-td bmb_table_lite-expand\">\n <button\n type=\"button\"\n class=\"bmb_btn-icon\"\n aria-label=\"expand row\"\n (click)=\"\n expandedElement = expandedElement === row ? null : row;\n $event.stopPropagation()\n \"\n >\n <bmb-icon\n [icon]=\"\n expandedElement === row ? 'expand_less' : 'expand_more'\n \"\n ></bmb-icon>\n </button>\n </div>\n }\n\n @for (\n column of tableColumns;\n track trackByColumn(column);\n let i = $index\n ) {\n <div\n class=\"bmb_table_lite-td\"\n [ngClass]=\"getCellClasses(row, column.dataKey, i)\"\n [title]=\"row[column.dataKey]?.propertyName || row[column.dataKey]\"\n >\n @if (isTemplateRef(row[column.dataKey + 'Template'])) {\n <ng-template\n [ngTemplateOutlet]=\"row[column.dataKey + 'Template']\"\n [ngTemplateOutletContext]=\"{ row: row }\"\n ></ng-template>\n } @else {\n <span>\n {{ row[column.dataKey]?.propertyName || row[column.dataKey] }}\n </span>\n }\n </div>\n }\n\n @if (tableConfig?.showActions) {\n <div class=\"bmb_table_lite-td bmb_table_lite-actions\">\n @if (\n tableColumns.length &&\n tableColumns[tableColumns.length - 1].templateActions\n ) {\n <ng-template\n [ngTemplateOutlet]=\"\n tableColumns[tableColumns.length - 1].templateActions!\n \"\n [ngTemplateOutletContext]=\"{ row: row }\"\n ></ng-template>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"actionTemplate()!\"\n [ngTemplateOutletContext]=\"{ row: row }\"\n ></ng-template>\n }\n </div>\n }\n </div>\n\n @if (tableConfig?.isExpandible) {\n <div\n class=\"bmb_table_lite-row bmb_table_lite-details\"\n [class.bmb_table_lite-expanded]=\"expandedElement === row\"\n >\n <div class=\"bmb_table_lite-detail\" *ngIf=\"expandedElement === row\">\n <ng-container\n *ngTemplateOutlet=\"detailTemplate(); context: { row: row }\"\n ></ng-container>\n </div>\n </div>\n }\n }\n </section>\n\n @if (tableConfig?.isPaginable) {\n <div class=\"bmb_table_lite-paginator\">\n <span class=\"bmb_table_lite-paginator-text\">\n {{ getPaginationText() }}\n </span>\n\n <button\n class=\"bmb_table_lite-paginator-btn\"\n [disabled]=\"isFirstPage() || isSinglePage()\"\n (click)=\"goToFirstPage()\"\n >\n <bmb-icon\n icon=\"keyboard_double_arrow_left\"\n class=\"bmb_table_lite-paginator-icon\"\n />\n </button>\n\n <button\n class=\"bmb_table_lite-paginator-btn\"\n [disabled]=\"isFirstPage() || isSinglePage()\"\n (click)=\"goToPreviousPage()\"\n >\n <bmb-icon\n icon=\"keyboard_arrow_left\"\n class=\"bmb_table_lite-paginator-icon\"\n />\n </button>\n\n <button\n class=\"bmb_table_lite-paginator-btn\"\n [disabled]=\"isLastPage() || isSinglePage()\"\n (click)=\"goToNextPage()\"\n >\n <bmb-icon\n icon=\"keyboard_arrow_right\"\n class=\"bmb_table_lite-paginator-icon\"\n />\n </button>\n\n <button\n class=\"bmb_table_lite-paginator-btn\"\n [disabled]=\"isLastPage() || isSinglePage()\"\n (click)=\"goToLastPage()\"\n >\n <bmb-icon\n icon=\"keyboard_double_arrow_right\"\n class=\"bmb_table_lite-paginator-icon\"\n />\n </button>\n </div>\n }\n </div>\n</div>\n", styles: ["@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_table_lite{background:var(--containers-modal);box-shadow:var(--bmb-box-shadow-3);box-sizing:border-box;container-type:inline-size;padding:1.5rem 1rem;width:100%}.bmb_table_lite-filters-top,.bmb_table_lite-filters-left{display:flex;flex-flow:column;gap:1rem;overflow:auto}.bmb_table_lite-filters-bottom,.bmb_table_lite-filters-right{align-items:flex-start;display:flex;flex-flow:column;gap:1rem;overflow:auto;flex-direction:column-reverse}@media (min-width: 62.5625rem){.bmb_table_lite-filters-top .bmb_table_lite-header,.bmb_table_lite-filters-bottom .bmb_table_lite-header{height:30%;width:100%}.bmb_table_lite-filters-top .bmb_table_lite-container,.bmb_table_lite-filters-bottom .bmb_table_lite-container{flex:1}}@media (min-width: 62.5625rem){.bmb_table_lite-filters-left,.bmb_table_lite-filters-right{flex-flow:row}.bmb_table_lite-filters-left .bmb_table_lite-header,.bmb_table_lite-filters-right .bmb_table_lite-header{width:30%}.bmb_table_lite-filters-left .bmb_table_lite-container,.bmb_table_lite-filters-right .bmb_table_lite-container{flex:1}}@media (min-width: 62.5625rem){.bmb_table_lite-filters-right{flex-flow:row-reverse}}.bmb_table_lite-header{container-type:inline-size;max-height:100%;overflow:auto}.bmb_table_lite-header .bmb_table_lite-filter{display:flex;flex-flow:column;gap:1rem;overflow:auto;width:100%}@container (min-width: 37.5rem){.bmb_table_lite-header .bmb_table_lite-filter{flex-flow:row;flex-wrap:wrap}}.bmb_table_lite-filter-item{width:100%}@container (min-width: 37.5rem){.bmb_table_lite-filter-item{width:calc(50% - .5rem)}}.bmb_table_lite-filter-item-number{display:flex;flex-flow:row}@media (max-width: 43.6875rem){.bmb_table_lite-filter-item-number{flex-flow:column}}.bmb_table_lite-filter-item-number>*{flex:1}.bmb_table_lite-filter-item-number bmb-input:first-child .bmb_field-actions{right:2.5rem}.bmb_table_lite-filter-item-number bmb-input:first-child .bmb_field-wrapper:after{border-top:.125rem solid;content:\"\";display:inline-block;height:0;margin:0 .625rem;width:1rem}@media (max-width: 43.6875rem){.bmb_table_lite-filter-item-number bmb-input:first-child .bmb_field-wrapper:after{display:none}}.bmb_table_lite-search{align-items:center;display:flex;gap:1rem}.bmb_table_lite-input{flex:1}.bmb_table_lite-filters{width:100%}.bmb_table_lite-container{display:flex;flex-direction:column;height:100%;overflow:hidden;position:relative;width:100%}.bmb_table_lite-container-table{display:block;overflow-x:auto;overflow-y:visible;position:relative;width:100%}.bmb_table_lite-content{width:100%}.bmb_table_lite-row{align-items:stretch;border-bottom:1px dashed var(--general_contrasts-25);display:grid;grid-template-columns:var(--grid-template);min-height:2.875rem;padding-inline:.5rem;position:relative;width:100%;isolation:isolate}@media (max-width: 47.9375rem){.bmb_table_lite-row{width:max-content;min-width:100%}}.bmb_table_lite-row--header{background-color:var(--containers-modal);border-bottom:0;color:RGBA(var(--color-charade-500));text-transform:uppercase;font-family:Poppins-Regular,sans-serif;font-size:.875rem}.bmb_table_lite-th,.bmb_table_lite-td{align-items:center;display:flex;gap:.375rem;min-width:0;overflow:hidden;padding:0 .5rem;position:relative}@media (max-width: 47.9375rem){.bmb_table_lite-th,.bmb_table_lite-td{max-width:7.5rem}}@media (max-width: 47.9375rem){.bmb_table_lite-th.truncated,.bmb_table_lite-td.truncated{max-width:6.25rem;min-width:5rem;text-overflow:ellipsis;white-space:nowrap}.bmb_table_lite-th.truncated>*,.bmb_table_lite-td.truncated>*{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bmb_table_lite-th.truncated bmb-icon,.bmb_table_lite-th.truncated button,.bmb_table_lite-td.truncated bmb-icon,.bmb_table_lite-td.truncated button{flex:0 0 auto;margin-right:.25rem}}.bmb_table_lite-th.bmb_table_lite-checkbox,.bmb_table_lite-td.bmb_table_lite-checkbox{background:inherit;left:0;padding-right:0;position:sticky;text-align:center;width:3.875rem;z-index:2}.bmb_table_lite-th.bmb_table_lite-expand,.bmb_table_lite-td.bmb_table_lite-expand{background:inherit;left:var(--col-checkbox, 0px);position:sticky;width:2.5rem;z-index:2}@supports (left: max(0px)){.bmb_table_lite-th.bmb_table_lite-expand,.bmb_table_lite-td.bmb_table_lite-expand{left:max(var(--col-checkbox, 0px),0px)}}.bmb_table_lite-th.bmb_table_lite-sticky,.bmb_table_lite-td.bmb_table_lite-sticky{background:inherit;border-right:.0625rem solid var(--buttons-inactive-step);position:sticky;z-index:2;left:calc(var(--col-checkbox, 0px) * var(--has-checkbox) + var(--col-expand, 0px) * var(--has-expand))}@supports (left: max(0px)){.bmb_table_lite-th.bmb_table_lite-sticky,.bmb_table_lite-td.bmb_table_lite-sticky{left:max(var(--col-checkbox, 0px) * var(--has-checkbox) + var(--col-expand, 0px) * var(--has-expand),0px)}}.bmb_table_lite-th.bmb_table_lite-actions,.bmb_table_lite-td.bmb_table_lite-actions{background:inherit;border-left:.0625rem solid var(--buttons-inactive-step);color:var(--color-table-90);position:sticky;right:0;z-index:2}.bmb_table_lite-th button,.bmb_table_lite-td button{align-items:center;background:transparent;border:0;color:var(--color-table-90);cursor:pointer;display:flex;padding:0}.bmb_table_lite-row>.bmb_table_lite-td{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.bmb_table_lite-row>.bmb_table_lite-td.bmb_table_lite-actions .action-container{display:flex}.bmb_table_lite-row>.bmb_table_lite-td.bmb_table_lite-actions .action-container bmb-icon{font-size:1.125rem}.bmb_table_lite-row>.bmb_table_lite-td .bmb_btn-icon bmb-icon{font-size:1.5rem}.bmb_table_lite-even{background-color:var(--containers-modal);color:var(--menu_select-label-menu-inactive)}.bmb_table_lite-even.bmb_table_lite-expandible{background-color:var(--menu_select-on-surface-hovered-w-checkbox)}.bmb_table_lite-odd{background-color:var(--general_contrasts-15);color:var(--vertical-step-active-color)}.bmb_table_lite-odd.bmb_table_lite-expandible{background-color:var(--menu_select-on-surface-hovered-w-checkbox)}.bmb_table_lite-details{background-color:var(--menu_select-on-surface-hovered-w-checkbox);height:auto}.bmb_table_lite-details:empty{display:none}.bmb_table_lite-details.bmb_table_lite-expanded{border-bottom:.0625rem dashed var(--general_contrasts-25)}.bmb_table_lite-details.bmb_table_lite-expanded .bmb_table_lite-detail{grid-column:1/-1}.bmb_table_lite-details>.bmb_table_lite-td{border:0;padding:0 1rem}.bmb_table_lite-detail{color:var(--general_contrasts-75);display:flex;overflow:hidden}.bmb_table_lite-detail>bmb-table-lite{width:100%}.bmb_table_lite-paginator{align-items:center;bottom:0;display:flex;height:3rem;justify-content:flex-end;right:0;z-index:10}.bmb_table_lite-paginator-text{color:var(--general_contrasts-75);margin-right:2rem;font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_table_lite-paginator-btn{align-items:center;background:transparent;border:0;color:var(--color-table-btn-900);cursor:pointer;display:inline-flex;height:3rem;justify-content:center;padding:0;width:3rem}.bmb_table_lite-paginator-btn[disabled]{color:var(--buttons-inactive-step);cursor:not-allowed}.bmb_table_lite-paginator-icon{font-size:1.5rem}.bmb_table_lite bmb-checkbox{display:block;height:1.5rem}.bmb_table_lite-success{color:var(--semantic-success)}.bmb_table_lite-error{color:var(--semantic-error)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "component", type: BmbCheckboxComponent, selector: "bmb-checkbox", inputs: ["name", "id", "disabled", "required", "value", "label", "labelPosition", "ariaDescribedby", "ariaLabel", "ariaLabelledby", "errorMessage", "helperMessage", "customValidation", "control", "checked", "showError", "indeterminate", "inputId"], outputs: ["controlChange", "checkedChange", "showErrorChange", "indeterminateChange", "inputIdChange", "change"] }, { kind: "component", type: BmbInputComponent, selector: "bmb-input", inputs: ["label", "type", "placeholder", "icon", "appearance", "errorMessage", "helperMessage", "disabled", "isRequired", "name", "spellcheck", "jsonFormat", "heightTextArea", "maxlength", "minlength", "pattern", "size", "max", "min", "id", "value", "autocomplete", "tooltip", "rows", "showMaxTextLength", "additionalAction", "tooltipPosition", "isClearable", "customValidation", "showError", "control"], outputs: ["showErrorChange", "controlChange", "isFocus", "isBlur", "onChange", "onKeyDown"] }, { kind: "component", type: BmbDateRangeComponent, selector: "bmb-date-range", inputs: ["inputId", "label", "labelStartDate", "labelEndDate", "icon", "invalidFormatErrorMessage", "requiredFieldErrorMessage", "appearance", "disabled", "isRequired", "isClearable", "controlStart", "controlEnd", "dateFormat", "placeholderStartDate", "placeholderEndDate", "stepYearPicker", "name", "multipleRow", "customValidation", "errorMessage"], outputs: ["controlStartChange", "controlEndChange"] }, { kind: "component", type: BmbActionIconComponent, selector: "bmb-action-icon", inputs: ["idElement", "icon", "alt", "iconSize", "isFill", "toggleIconActive", "isToggleActive", "isAccentColor", "dotNotification", "target", "link", "disabled"], outputs: ["isToggleActiveChange", "isAccentColorChange", "buttonPress", "buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
516
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BmbTableLiteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
517
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BmbTableLiteComponent, isStandalone: true, selector: "bmb-table-lite", inputs: { showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, truncate: { classPropertyName: "truncate", publicName: "truncate", isSignal: true, isRequired: false, transformFunction: null }, lang: { classPropertyName: "lang", publicName: "lang", isSignal: true, isRequired: false, transformFunction: null }, serverSide: { classPropertyName: "serverSide", publicName: "serverSide", isSignal: true, isRequired: false, transformFunction: null }, filtersPosition: { classPropertyName: "filtersPosition", publicName: "filtersPosition", isSignal: true, isRequired: false, transformFunction: null }, initialTableSelection: { classPropertyName: "initialTableSelection", publicName: "initialTableSelection", isSignal: true, isRequired: false, transformFunction: null }, actionTemplate: { classPropertyName: "actionTemplate", publicName: "actionTemplate", isSignal: true, isRequired: false, transformFunction: null }, detailTemplate: { classPropertyName: "detailTemplate", publicName: "detailTemplate", isSignal: true, isRequired: false, transformFunction: null }, clearSelection: { classPropertyName: "clearSelection", publicName: "clearSelection", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, filtersVisible: { classPropertyName: "filtersVisible", publicName: "filtersVisible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clearSelection: "clearSelectionChange", currentPage: "currentPageChange", filtersVisible: "filtersVisibleChange", select: "select", clickedRow: "clickedRow", searchChange: "searchChange", filtersChange: "filtersChange", searchModeChange: "searchModeChange", pageChange: "pageChange" }, host: { properties: { "style.--col-count": "this.colCount", "style.--col-checkbox": "this.colCheckbox", "style.--col-expand": "this.colExpand", "style.--col-actions": "this.colActions", "style.--has-checkbox": "this.hasCheckbox", "style.--has-expand": "this.hasExpand", "style.--has-actions": "this.hasActions" } }, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"getTableClasses()\" [ngStyle]=\"cssVars\">\n @if (showSearch() || filtersVisible()) {\n <header class=\"bmb_table_lite-header\">\n @if (showSearch()) {\n <section class=\"bmb_table_lite-search\">\n <bmb-input\n class=\"bmb_table_lite-input\"\n [type]=\"'text'\"\n [placeholder]=\"'Buscar'\"\n [disabled]=\"false\"\n [icon]=\"'search'\"\n [appearance]=\"'normal'\"\n [control]=\"searchControl\"\n ></bmb-input>\n <bmb-action-icon\n [idElement]=\"''\"\n [icon]=\"'filter_list'\"\n [iconSize]=\"24\"\n (buttonClick)=\"toggleFilters()\"\n ></bmb-action-icon>\n </section>\n }\n <div class=\"bmb_table_lite-filter\">\n @if (filtersVisible()) {\n @for (column of parsedFiltersColumns(); track $index) {\n <section class=\"bmb_table_lite-filter-item\">\n @switch (column.type) {\n @case ('number') {\n <div class=\"bmb_table_lite-filter-item-number\">\n <bmb-input\n [label]=\"column.label + ' m\u00EDnimo'\"\n [type]=\"'number'\"\n [placeholder]=\"'M\u00EDn'\"\n [appearance]=\"'normal'\"\n [control]=\"getFormControl(column.dataKey + '_min')\"\n />\n <bmb-input\n [label]=\"column.label + ' m\u00E1ximo'\"\n [type]=\"'number'\"\n [placeholder]=\"'M\u00E1x'\"\n [appearance]=\"'normal'\"\n [control]=\"getFormControl(column.dataKey + '_max')\"\n />\n </div>\n }\n @case ('date') {\n <bmb-date-range\n [label]=\"column.label\"\n [placeholderStartDate]=\"'Desde'\"\n [placeholderEndDate]=\"'Hasta'\"\n [icon]=\"'calendar_month'\"\n [appearance]=\"'normal'\"\n [dateFormat]=\"'dd/MM/yyyy'\"\n [controlStart]=\"getFormControl(column.dataKey + '_from')\"\n [controlEnd]=\"getFormControl(column.dataKey + '_to')\"\n (startDateChange)=\"\n getFormControl(column.dataKey + '_from').setValue($event)\n \"\n (endDateChange)=\"\n getFormControl(column.dataKey + '_to').setValue($event)\n \"\n />\n }\n @default {\n <bmb-input\n [label]=\"column.label\"\n [placeholder]=\"'Filtrar'\"\n [control]=\"getFormControl(column.dataKey + '_contains')\"\n />\n }\n }\n </section>\n }\n }\n </div>\n </header>\n }\n\n <div class=\"bmb_table_lite-container\">\n <section class=\"bmb_table_lite-container-table\">\n <div class=\"bmb_table_lite-row bmb_table_lite-row--header\">\n @if (tableConfig?.isSelectable) {\n <div class=\"bmb_table_lite-th bmb_table_lite-checkbox\">\n <bmb-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n [ariaLabel]=\"checkboxLabel()\"\n [disabled]=\"false\"\n />\n </div>\n }\n\n @if (tableConfig?.isExpandible) {\n <div class=\"bmb_table_lite-th bmb_table_lite-expand\"> </div>\n }\n\n @for (\n column of tableColumns;\n track trackByColumn(column);\n let i = $index\n ) {\n <div\n class=\"bmb_table_lite-th\"\n [ngClass]=\"getHeaderCellClasses(i)\"\n [title]=\"\n lang() === 'es' ? column.label : column.labelEn || column.label\n \"\n >\n <ng-container *ngIf=\"column.icon\">\n <bmb-icon [icon]=\"column.icon\"></bmb-icon>\n </ng-container>\n\n @if (column.htmlLabel) {\n <ng-template\n [ngTemplateOutlet]=\"column.htmlLabel\"\n [ngTemplateOutletContext]=\"{ column: column, index: i }\"\n ></ng-template>\n } @else {\n <span class=\"bmb_table_lite-th-text\">\n {{\n lang() === 'es'\n ? column.label\n : column.labelEn || column.label\n }}\n </span>\n }\n </div>\n }\n\n @if (tableConfig?.showActions) {\n <div class=\"bmb_table_lite-th bmb_table_lite-actions\"></div>\n }\n </div>\n\n @for (row of pageSlice; track trackByRow(row); let rIndex = $index) {\n <div\n class=\"bmb_table_lite-row\"\n (click)=\"onSelectRow(row)\"\n [ngClass]=\"{\n 'bmb_table_lite-even': isEven(rIndex),\n 'bmb_table_lite-odd': isOdd(rIndex),\n 'bmb_table_lite-expandible': expandedElement === row\n }\"\n >\n @if (tableConfig?.isSelectable) {\n <div class=\"bmb_table_lite-td bmb_table_lite-checkbox\">\n <bmb-checkbox\n (change)=\"$event ? selection.toggle(row) : null; onSelect()\"\n [checked]=\"selection.isSelected(row)\"\n [ariaLabel]=\"checkboxLabel(row)\"\n [disabled]=\"false\"\n onkeypress=\"$event.stopPropagation()\"\n />\n </div>\n }\n\n @if (tableConfig?.isExpandible) {\n <div class=\"bmb_table_lite-td bmb_table_lite-expand\">\n <button\n type=\"button\"\n class=\"bmb_btn-icon\"\n aria-label=\"expand row\"\n (click)=\"\n expandedElement = expandedElement === row ? null : row;\n $event.stopPropagation()\n \"\n >\n <bmb-icon\n [icon]=\"\n expandedElement === row ? 'expand_less' : 'expand_more'\n \"\n ></bmb-icon>\n </button>\n </div>\n }\n\n @for (\n column of tableColumns;\n track trackByColumn(column);\n let i = $index\n ) {\n <div\n class=\"bmb_table_lite-td\"\n [ngClass]=\"getCellClasses(row, column.dataKey, i)\"\n [title]=\"row[column.dataKey]?.propertyName || row[column.dataKey]\"\n >\n @if (isTemplateRef(row[column.dataKey + 'Template'])) {\n <ng-template\n [ngTemplateOutlet]=\"row[column.dataKey + 'Template']\"\n [ngTemplateOutletContext]=\"{ row: row }\"\n ></ng-template>\n } @else {\n <span>\n {{ row[column.dataKey]?.propertyName || row[column.dataKey] }}\n </span>\n }\n </div>\n }\n\n @if (tableConfig?.showActions) {\n <div class=\"bmb_table_lite-td bmb_table_lite-actions\">\n @if (\n tableColumns.length &&\n tableColumns[tableColumns.length - 1].templateActions\n ) {\n <ng-template\n [ngTemplateOutlet]=\"\n tableColumns[tableColumns.length - 1].templateActions!\n \"\n [ngTemplateOutletContext]=\"{ row: row }\"\n ></ng-template>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"actionTemplate()!\"\n [ngTemplateOutletContext]=\"{ row: row }\"\n ></ng-template>\n }\n </div>\n }\n </div>\n\n @if (tableConfig?.isExpandible) {\n <div\n class=\"bmb_table_lite-row bmb_table_lite-details\"\n [class.bmb_table_lite-expanded]=\"expandedElement === row\"\n >\n <div class=\"bmb_table_lite-detail\" *ngIf=\"expandedElement === row\">\n <ng-container\n *ngTemplateOutlet=\"detailTemplate(); context: { row: row }\"\n ></ng-container>\n </div>\n </div>\n }\n }\n </section>\n\n @if (tableConfig?.isPaginable) {\n <div class=\"bmb_table_lite-paginator\">\n <span class=\"bmb_table_lite-paginator-text\">\n {{ getPaginationText() }}\n </span>\n\n <button\n class=\"bmb_table_lite-paginator-btn\"\n [disabled]=\"isFirstPage() || isSinglePage()\"\n (click)=\"goToFirstPage()\"\n >\n <bmb-icon\n icon=\"keyboard_double_arrow_left\"\n class=\"bmb_table_lite-paginator-icon\"\n />\n </button>\n\n <button\n class=\"bmb_table_lite-paginator-btn\"\n [disabled]=\"isFirstPage() || isSinglePage()\"\n (click)=\"goToPreviousPage()\"\n >\n <bmb-icon\n icon=\"keyboard_arrow_left\"\n class=\"bmb_table_lite-paginator-icon\"\n />\n </button>\n\n <button\n class=\"bmb_table_lite-paginator-btn\"\n [disabled]=\"isLastPage() || isSinglePage()\"\n (click)=\"goToNextPage()\"\n >\n <bmb-icon\n icon=\"keyboard_arrow_right\"\n class=\"bmb_table_lite-paginator-icon\"\n />\n </button>\n\n <button\n class=\"bmb_table_lite-paginator-btn\"\n [disabled]=\"isLastPage() || isSinglePage()\"\n (click)=\"goToLastPage()\"\n >\n <bmb-icon\n icon=\"keyboard_double_arrow_right\"\n class=\"bmb_table_lite-paginator-icon\"\n />\n </button>\n </div>\n }\n </div>\n</div>\n", styles: ["@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_table_lite{background:var(--containers-modal);box-shadow:var(--bmb-box-shadow-3);box-sizing:border-box;container-type:inline-size;padding:1.5rem 1rem;width:100%}.bmb_table_lite-filters-top,.bmb_table_lite-filters-left{display:flex;flex-flow:column;gap:1rem;overflow:auto}.bmb_table_lite-filters-bottom,.bmb_table_lite-filters-right{align-items:flex-start;display:flex;flex-flow:column;gap:1rem;overflow:auto;flex-direction:column-reverse}@media (min-width: 62.5625rem){.bmb_table_lite-filters-top .bmb_table_lite-header,.bmb_table_lite-filters-bottom .bmb_table_lite-header{height:30%;width:100%}.bmb_table_lite-filters-top .bmb_table_lite-container,.bmb_table_lite-filters-bottom .bmb_table_lite-container{flex:1}}@media (min-width: 62.5625rem){.bmb_table_lite-filters-left,.bmb_table_lite-filters-right{flex-flow:row}.bmb_table_lite-filters-left .bmb_table_lite-header,.bmb_table_lite-filters-right .bmb_table_lite-header{width:30%}.bmb_table_lite-filters-left .bmb_table_lite-container,.bmb_table_lite-filters-right .bmb_table_lite-container{flex:1}}@media (min-width: 62.5625rem){.bmb_table_lite-filters-right{flex-flow:row-reverse}}.bmb_table_lite-header{container-type:inline-size;max-height:100%;overflow:auto}.bmb_table_lite-header .bmb_table_lite-filter{display:flex;flex-flow:column;gap:1rem;overflow:auto;width:100%}@container (min-width: 37.5rem){.bmb_table_lite-header .bmb_table_lite-filter{flex-flow:row;flex-wrap:wrap}}.bmb_table_lite-filter-item{width:100%}@container (min-width: 37.5rem){.bmb_table_lite-filter-item{width:calc(50% - .5rem)}}.bmb_table_lite-filter-item-number{display:flex;flex-flow:row}@media (max-width: 43.6875rem){.bmb_table_lite-filter-item-number{flex-flow:column}}.bmb_table_lite-filter-item-number>*{flex:1}.bmb_table_lite-filter-item-number bmb-input:first-child .bmb_field-actions{right:2.5rem}.bmb_table_lite-filter-item-number bmb-input:first-child .bmb_field-wrapper:after{border-top:.125rem solid;content:\"\";display:inline-block;height:0;margin:0 .625rem;width:1rem}@media (max-width: 43.6875rem){.bmb_table_lite-filter-item-number bmb-input:first-child .bmb_field-wrapper:after{display:none}}.bmb_table_lite-search{align-items:center;display:flex;gap:1rem}.bmb_table_lite-input{flex:1}.bmb_table_lite-filters{width:100%}.bmb_table_lite-container{display:flex;flex-direction:column;height:100%;overflow:hidden;position:relative;width:100%}.bmb_table_lite-container-table{display:block;overflow-x:auto;overflow-y:visible;position:relative;width:100%}.bmb_table_lite-content{width:100%}.bmb_table_lite-row{align-items:stretch;border-bottom:1px dashed var(--general_contrasts-25);display:grid;grid-template-columns:var(--grid-template);min-height:2.875rem;padding-inline:.5rem;position:relative;width:100%;isolation:isolate}@media (max-width: 47.9375rem){.bmb_table_lite-row{width:max-content;min-width:100%}}.bmb_table_lite-row--header{background-color:var(--containers-modal);border-bottom:0;color:RGBA(var(--color-charade-500));text-transform:uppercase;font-family:Poppins-Regular,sans-serif;font-size:.875rem}.bmb_table_lite-th,.bmb_table_lite-td{align-items:center;display:flex;gap:.375rem;min-width:0;overflow:hidden;padding:0 .5rem;position:relative}@media (max-width: 47.9375rem){.bmb_table_lite-th,.bmb_table_lite-td{max-width:7.5rem}}@media (max-width: 47.9375rem){.bmb_table_lite-th.truncated,.bmb_table_lite-td.truncated{max-width:6.25rem;min-width:5rem;text-overflow:ellipsis;white-space:nowrap}.bmb_table_lite-th.truncated>*,.bmb_table_lite-td.truncated>*{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bmb_table_lite-th.truncated bmb-icon,.bmb_table_lite-th.truncated button,.bmb_table_lite-td.truncated bmb-icon,.bmb_table_lite-td.truncated button{flex:0 0 auto;margin-right:.25rem}}.bmb_table_lite-th.bmb_table_lite-checkbox,.bmb_table_lite-td.bmb_table_lite-checkbox{background:inherit;left:0;padding-right:0;position:sticky;text-align:center;width:3.875rem;z-index:2}.bmb_table_lite-th.bmb_table_lite-expand,.bmb_table_lite-td.bmb_table_lite-expand{background:inherit;left:var(--col-checkbox, 0px);position:sticky;width:2.5rem;z-index:2}@supports (left: max(0px)){.bmb_table_lite-th.bmb_table_lite-expand,.bmb_table_lite-td.bmb_table_lite-expand{left:max(var(--col-checkbox, 0px),0px)}}.bmb_table_lite-th.bmb_table_lite-sticky,.bmb_table_lite-td.bmb_table_lite-sticky{background:inherit;border-right:.0625rem solid var(--buttons-inactive-step);position:sticky;z-index:2;left:calc(var(--col-checkbox, 0px) * var(--has-checkbox) + var(--col-expand, 0px) * var(--has-expand))}@supports (left: max(0px)){.bmb_table_lite-th.bmb_table_lite-sticky,.bmb_table_lite-td.bmb_table_lite-sticky{left:max(var(--col-checkbox, 0px) * var(--has-checkbox) + var(--col-expand, 0px) * var(--has-expand),0px)}}.bmb_table_lite-th.bmb_table_lite-actions,.bmb_table_lite-td.bmb_table_lite-actions{background:inherit;border-left:.0625rem solid var(--buttons-inactive-step);color:var(--color-table-90);position:sticky;right:0;z-index:2}.bmb_table_lite-th button,.bmb_table_lite-td button{align-items:center;background:transparent;border:0;color:var(--color-table-90);cursor:pointer;display:flex;padding:0}.bmb_table_lite-row>.bmb_table_lite-td{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.bmb_table_lite-row>.bmb_table_lite-td.bmb_table_lite-actions .action-container{display:flex}.bmb_table_lite-row>.bmb_table_lite-td.bmb_table_lite-actions .action-container bmb-icon{font-size:1.125rem}.bmb_table_lite-row>.bmb_table_lite-td .bmb_btn-icon bmb-icon{font-size:1.5rem}.bmb_table_lite-even{background-color:var(--containers-modal);color:var(--menu_select-label-menu-inactive)}.bmb_table_lite-even.bmb_table_lite-expandible{background-color:var(--menu_select-on-surface-hovered-w-checkbox)}.bmb_table_lite-odd{background-color:var(--general_contrasts-15);color:var(--vertical-step-active-color)}.bmb_table_lite-odd.bmb_table_lite-expandible{background-color:var(--menu_select-on-surface-hovered-w-checkbox)}.bmb_table_lite-details{background-color:var(--menu_select-on-surface-hovered-w-checkbox);height:auto}.bmb_table_lite-details:empty{display:none}.bmb_table_lite-details.bmb_table_lite-expanded{border-bottom:.0625rem dashed var(--general_contrasts-25)}.bmb_table_lite-details.bmb_table_lite-expanded .bmb_table_lite-detail{grid-column:1/-1}.bmb_table_lite-details>.bmb_table_lite-td{border:0;padding:0 1rem}.bmb_table_lite-detail{color:var(--general_contrasts-75);display:flex;overflow:hidden}.bmb_table_lite-detail>bmb-table-lite{width:100%}.bmb_table_lite-paginator{align-items:center;bottom:0;display:flex;height:3rem;justify-content:flex-end;right:0;z-index:10}.bmb_table_lite-paginator-text{color:var(--general_contrasts-75);margin-right:2rem;font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_table_lite-paginator-btn{align-items:center;background:transparent;border:0;color:var(--color-table-btn-900);cursor:pointer;display:inline-flex;height:3rem;justify-content:center;padding:0;width:3rem}.bmb_table_lite-paginator-btn[disabled]{color:var(--buttons-inactive-step);cursor:not-allowed}.bmb_table_lite-paginator-icon{font-size:1.5rem}.bmb_table_lite bmb-checkbox{display:block;height:1.5rem}.bmb_table_lite-success{color:var(--semantic-success)}.bmb_table_lite-error{color:var(--semantic-error)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "component", type: BmbCheckboxComponent, selector: "bmb-checkbox", inputs: ["name", "id", "disabled", "required", "value", "label", "labelPosition", "ariaDescribedby", "ariaLabel", "ariaLabelledby", "errorMessage", "helperMessage", "customValidation", "control", "checked", "showError", "indeterminate", "inputId"], outputs: ["controlChange", "checkedChange", "showErrorChange", "indeterminateChange", "inputIdChange", "change"] }, { kind: "component", type: BmbInputComponent, selector: "bmb-input", inputs: ["label", "type", "placeholder", "icon", "appearance", "errorMessage", "helperMessage", "disabled", "isRequired", "name", "spellcheck", "jsonFormat", "heightTextArea", "maxlength", "minlength", "pattern", "size", "max", "min", "id", "value", "autocomplete", "tooltip", "rows", "showMaxTextLength", "additionalAction", "tooltipPosition", "isClearable", "customValidation", "showError", "control"], outputs: ["showErrorChange", "controlChange", "isFocus", "isBlur", "onChange", "onKeyDown"] }, { kind: "component", type: BmbDateRangeComponent, selector: "bmb-date-range", inputs: ["inputId", "label", "labelStartDate", "labelEndDate", "icon", "invalidFormatErrorMessage", "requiredFieldErrorMessage", "appearance", "disabled", "isRequired", "isClearable", "controlStart", "controlEnd", "dateFormat", "placeholderStartDate", "placeholderEndDate", "stepYearPicker", "name", "multipleRow", "customValidation", "errorMessage"], outputs: ["controlStartChange", "controlEndChange"] }, { kind: "component", type: BmbActionIconComponent, selector: "bmb-action-icon", inputs: ["idElement", "icon", "alt", "iconSize", "isFill", "toggleIconActive", "isToggleActive", "isAccentColor", "dotNotification", "target", "link", "disabled"], outputs: ["isToggleActiveChange", "isAccentColorChange", "buttonPress", "buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
518
518
|
}
|
|
519
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
519
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BmbTableLiteComponent, decorators: [{
|
|
520
520
|
type: Component,
|
|
521
521
|
args: [{ selector: 'bmb-table-lite', standalone: true, imports: [
|
|
522
522
|
CommonModule,
|
|
@@ -561,4 +561,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
561
561
|
type: HostBinding,
|
|
562
562
|
args: ['style.--has-actions']
|
|
563
563
|
}] } });
|
|
564
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLXRhYmxlLWxpdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtbmcvc3JjL2xpYi9jb21wb25lbnRzL2JtYi10YWJsZS1saXRlL2JtYi10YWJsZS1saXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItdGFibGUtbGl0ZS9ibWItdGFibGUtbGl0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUNaLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLEtBQUssRUFFTCxNQUFNLEVBRU4sS0FBSyxFQUVMLFFBQVEsRUFDUixXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7O0FBMEJ0RixNQUFNLE9BQU8scUJBQXFCO0lBK0VoQyxnRkFBZ0Y7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Q3BCLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQixzQkFBc0I7cUJBQ3ZCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO3NGQWdFM0IsTUFBTTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQXVjSCxRQUFRO3NCQURYLFdBQVc7dUJBQUMsbUJBQW1CO2dCQU01QixXQUFXO3NCQURkLFdBQVc7dUJBQUMsc0JBQXNCO2dCQU0vQixTQUFTO3NCQURaLFdBQVc7dUJBQUMsb0JBQW9CO2dCQU03QixVQUFVO3NCQURiLFdBQVc7dUJBQUMscUJBQXFCO2dCQU05QixXQUFXO3NCQURkLFdBQVc7dUJBQUMsc0JBQXNCO2dCQU0vQixTQUFTO3NCQURaLFdBQVc7dUJBQUMsb0JBQW9CO2dCQU03QixVQUFVO3NCQURiLFdBQVc7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgaW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgZWZmZWN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBtb2RlbCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIGNvbXB1dGVkLFxuICBIb3N0QmluZGluZyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5cbmltcG9ydCB7IEJtYkljb25Db21wb25lbnQgfSBmcm9tICcuLi9ibWItaWNvbi9ibWItaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9ibWItY2hlY2tib3gvYm1iLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYkRhdGVSYW5nZUNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1kYXRlLXJhbmdlL2JtYi1kYXRlLXJhbmdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJBY3Rpb25JY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWFjdGlvbi1pY29uL2JtYi1hY3Rpb24taWNvbi5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBJQm1iRmlsdGVyc1Bvc2l0aW9uLFxuICBUYWJsZUNvbHVtLFxuICBUYWJsZUNvbmZpZyxcbiAgSUJtYlRhYmxlTGFuZyxcbn0gZnJvbSAnLi9ibWItdGFibGUtbGl0ZS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdibWItdGFibGUtbGl0ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCbWJJY29uQ29tcG9uZW50LFxuICAgIEJtYkNoZWNrYm94Q29tcG9uZW50LFxuICAgIEJtYklucHV0Q29tcG9uZW50LFxuICAgIEJtYkRhdGVSYW5nZUNvbXBvbmVudCxcbiAgICBCbWJBY3Rpb25JY29uQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm1iLXRhYmxlLWxpdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYm1iLXRhYmxlLWxpdGUuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQm1iVGFibGVMaXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyDwn5SnIENPTkZJR1VSQUNJw5NOIElOVEVSTkEgKG5vIHZpc2libGUgZGVzZGUgZWwgdGVtcGxhdGUpXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHByaXZhdGUgX3Jhd0NvbHVtbnM6IFRhYmxlQ29sdW1bXSA9IFtdO1xuICBwcml2YXRlIF9yYXdDb25maWc6IFRhYmxlQ29uZmlnID0ge1xuICAgIGlzU2VsZWN0YWJsZTogZmFsc2UsXG4gICAgaXNFeHBhbmRpYmxlOiBmYWxzZSxcbiAgICBpc1BhZ2luYWJsZTogZmFsc2UsXG4gICAgc2hvd0FjdGlvbnM6IGZhbHNlLFxuICB9O1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIPCfk4ogREFUT1MgWSBFU1RBRE8gREUgTEEgVEFCTEFcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgb3JpZ2luYWxEYXRhOiBhbnlbXSA9IFtdOyAvLyBEYXRvcyBvcmlnaW5hbGVzIHNpbiBmaWx0cm9zXG4gIGZpbHRlcmVkRGF0YTogYW55W10gPSBbXTsgLy8gRGF0b3MgdHJhcyBhcGxpY2FyIGZpbHRyb3NcbiAgcGFnZVNsaWNlOiBhbnlbXSA9IFtdOyAvLyBQw6FnaW5hIGFjdHVhbCBxdWUgc2UgbXVlc3RyYVxuXG4gIGV4cGFuZGVkRWxlbWVudDogYW55OyAvLyBGaWxhIGV4cGFuZGlkYSBhY3R1YWxcbiAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10pOyAvLyBTZWxlY2Npw7NuIGRlIGZpbGFzXG4gIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyB8IHVuZGVmaW5lZDsgLy8gQ29uZmlndXJhY2nDs24gYWN0aXZhIGRlIGxhIHRhYmxhXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8g8J+UjSBGT1JNVUxBUklPIERFIEZJTFRST1MgWSBCw5pTUVVFREFcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgZmlsdGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pOyAvLyBDb250cm9sZXMgZGluw6FtaWNvcyBkZSBmaWx0cm9zXG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpOyAvLyBDb250cm9sIGRlIGLDunNxdWVkYSAodGV4dG8pXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8g8J+nqSBDT0xVTU5BUyBZIEVTVFJVQ1RVUkEgREUgTEEgVEFCTEFcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgdGFibGVDb2x1bW5zOiBUYWJsZUNvbHVtW10gPSBbXTsgLy8gQ29sdW1uYXMgcmVuZGVyaXphZGFzIGVuIGxhIHRhYmxhXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8g4pqZ77iPIElOUFVUUyAoY29uZmlndXJhY2nDs24gZXh0ZXJuYSBkZWwgY29tcG9uZW50ZSlcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgc2hvd1NlYXJjaCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTsgLy8gTXVlc3RyYSB1IG9jdWx0YSBlbCBidXNjYWRvclxuICBwYWdlU2l6ZSA9IGlucHV0PG51bWJlcj4oKTsgLy8gVGFtYcOxbyBkZSBww6FnaW5hXG4gIHRvdGFsSXRlbXMgPSBpbnB1dDxudW1iZXI+KDApOyAvLyBUb3RhbCBkZSBlbGVtZW50b3MgKHNlcnZlcilcbiAgZGF0YSA9IGlucHV0PGFueVtdPihbXSk7IC8vIERhdGEgcmVjaWJpZGFcbiAgY29sdW1ucyA9IGlucHV0PFRhYmxlQ29sdW1bXT4oW10pOyAvLyBEZWZpbmljacOzbiBkZSBjb2x1bW5hc1xuICBjb25maWcgPSBpbnB1dDxUYWJsZUNvbmZpZz4oKTsgLy8gQ29uZmlndXJhY2nDs24gZ2VuZXJhbFxuXG4gIHRydW5jYXRlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvLyBBY3RpdmEgdHJ1bmNhZG8gZGUgdGV4dG9cbiAgbGFuZyA9IGlucHV0PElCbWJUYWJsZUxhbmc+KCdlcycpOyAvLyBJZGlvbWEgKCdlcycgfCAnZW4nKVxuICBzZXJ2ZXJTaWRlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvLyBNb2RvIHNlcnZpZG9yIG8gY2xpZW50ZVxuICBmaWx0ZXJzUG9zaXRpb24gPSBpbnB1dDxJQm1iRmlsdGVyc1Bvc2l0aW9uPigndG9wJyk7IC8vIFBvc2ljacOzbiBmaWx0cm9zXG4gIGluaXRpYWxUYWJsZVNlbGVjdGlvbiA9IGlucHV0PG51bWJlcltdPihbXSk7IC8vIFNlbGVjY2nDs24gaW5pY2lhbCBkZSBmaWxhc1xuICBhY3Rpb25UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPihudWxsKTsgLy8gVGVtcGxhdGUgZGUgYWNjaW9uZXNcbiAgZGV0YWlsVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4obnVsbCk7IC8vIFRlbXBsYXRlIGRlIGRldGFsbGVcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyDimqEgTU9ERUxPUyBSRUFDVElWT1MgKHVzYW5kbyBzaWduYWxzKVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBjbGVhclNlbGVjdGlvbiA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTsgLy8gTGltcGlhIHNlbGVjY2nDs24gZGVzZGUgZnVlcmFcbiAgY3VycmVudFBhZ2UgPSBtb2RlbDxudW1iZXI+KDApOyAvLyBQw6FnaW5hIGFjdHVhbFxuICBmaWx0ZXJzVmlzaWJsZSA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTsgLy8gRXN0YWRvIHZpc2libGUvb2N1bHRvIGRlIGZpbHRyb3NcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyDwn5OkIE9VVFBVVFMgKGV2ZW50b3MgcXVlIGVtaXRlIGxhIHRhYmxhKVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBAT3V0cHV0KCkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7IC8vIENhbWJpbyBkZSBzZWxlY2Npw7NuXG4gIEBPdXRwdXQoKSBjbGlja2VkUm93ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7IC8vIENsaWNrIGVuIHVuYSBmaWxhXG4gIEBPdXRwdXQoKSBzZWFyY2hDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTsgLy8gVGV4dG8gZGVsIGJ1c2NhZG9yXG4gIEBPdXRwdXQoKSBmaWx0ZXJzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBhbnk+PigpOyAvLyBGaWx0cm9zIGFwbGljYWRvc1xuICBAT3V0cHV0KCkgc2VhcmNoTW9kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8J2NsaWVudCcgfCAnc2VydmVyJz4oKTsgLy8gTW9kbyBkZSBiw7pzcXVlZGFcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuICB9PigpOyAvLyBDYW1iaW8gZGUgcMOhZ2luYVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIPCfp64gUFJPUElFREFERVMgQ09NUFVUQURBU1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBwYXJzZWRGaWx0ZXJzQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5jb2x1bW5zKCkuZmlsdGVyKChjb2x1bW4pID0+IGNvbHVtbi5pc0ZpbHRlcmFibGUgIT09IGZhbHNlKSxcbiAgKTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyDwn6egIENJQ0xPIERFIFZJREEgWSBFRkVDVE9TIFJFQUNUSVZPU1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIC8vIPCfp6kgRWZlY3RvOiBjb250cm9sYSBsYSBww6FnaW5hIGFjdHVhbCBlbiBtb2RvIHNlcnZpZG9yLCBhc2VndXJhbmRvIHF1ZVxuICAgIC8vIG5vIGV4Y2VkYSBsb3MgbMOtbWl0ZXMgKDAg4oaSIGxhc3RQYWdlKVxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuc2VydmVyU2lkZSgpKSByZXR1cm47XG4gICAgICBjb25zdCBsYXN0ID0gdGhpcy5sYXN0UGFnZSgpO1xuICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UoKSA8IDApIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZS5zZXQoMCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50UGFnZSgpID4gbGFzdCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChsYXN0KTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8g8J+nqSBFZmVjdG86IGxpbXBpYSBsYSBzZWxlY2Npw7NuIGRlIGZpbGFzIHNpIHNlIGFjdGl2YSBgY2xlYXJTZWxlY3Rpb25gXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jbGVhclNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8vIPCfp6kgRGV0ZWN0YSBjYW1iaW9zIGVuIGlucHV0cyByZWFjdGl2b3MgKGRhdGEsIGNvbHVtbnMsIGNvbmZpZylcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10pIHRoaXMucGFyc2VEYXRhKGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWUgfHwgW10pO1xuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10pXG4gICAgICB0aGlzLnBhcnNlQ29sdW1ucyhjaGFuZ2VzWydjb2x1bW5zJ10uY3VycmVudFZhbHVlIHx8IFtdKTtcbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10pIHRoaXMuc2V0Q29uZmlnKGNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZSB8fCB7fSk7XG4gIH1cblxuICAvLyDwn6epIEluaWNpYWxpemEgZmlsdHJvcyB5IHN1c2NyaXBjaW9uZXMgZGVsIGJ1c2NhZG9yXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3Qgc2VhcmNoID0gKHZhbHVlIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgICAgaWYgKHRoaXMuc2VydmVyU2lkZSgpKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoTW9kZUNoYW5nZS5lbWl0KCdzZXJ2ZXInKTtcbiAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2UuZW1pdChzZWFyY2gpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWFyY2hNb2RlQ2hhbmdlLmVtaXQoJ2NsaWVudCcpO1xuICAgICAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3Jhd0NvbmZpZyA9IHRoaXMuY29uZmlnKCkgfHwge307XG4gICAgdGhpcy5wYXJzZURhdGEodGhpcy5kYXRhKCkpO1xuICAgIHRoaXMucGFyc2VDb2x1bW5zKHRoaXMuY29sdW1ucygpKTtcblxuICAgIC8vIPCfkYcgaW1wb3J0YW50ZTogcmVjcmVhciBmaWx0cm9zIHVuYSB2ZXogcXVlIHRvZG8gZXN0w6kgbGlzdG9cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBEeW5hbWljRmlsdGVycygpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyDwn6epIE1BTkVKTyBERSBEQVRPUyBZIENPTFVNTkFTXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8g8J+UuSBOb3JtYWxpemEgeSBhcGxpY2EgbG9zIGRhdG9zIGluaWNpYWxlcyBzZWfDum4gZWwgbW9kbyAoc2VydmVyL2NsaWVudClcbiAgcGFyc2VEYXRhKGRhdGE6IGFueVtdKSB7XG4gICAgdGhpcy5vcmlnaW5hbERhdGEgPSBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YSA6IFtdO1xuICAgIGlmICghdGhpcy5zZXJ2ZXJTaWRlKCkpIHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgICB0aGlzLmFwcGx5Q2xpZW50UGFnaW5hdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLm9yaWdpbmFsRGF0YV07XG4gICAgICB0aGlzLnBhZ2VTbGljZSA9IFsuLi50aGlzLmZpbHRlcmVkRGF0YV07XG4gICAgfVxuXG4gICAgLy8g8J+nqSBBcGxpY2Egc2VsZWNjacOzbiBpbmljaWFsIHNpIGVzdMOhIGNvbmZpZ3VyYWRhXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5pbml0aWFsVGFibGVTZWxlY3Rpb24oKSA/PyBbXTtcbiAgICBpZiAoc2VsZWN0ZWRSb3dzLmxlbmd0aCAmJiB0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICBzZWxlY3RlZFJvd3MuZm9yRWFjaCgoaWR4KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcmVkRGF0YVtpZHhdKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHRoaXMuZmlsdGVyZWREYXRhW2lkeF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyDwn5S5IEVzdGFuZGFyaXphIGxhcyBjb2x1bW5hcyB5IGdlbmVyYSBzdXMgZmlsdHJvcyBkaW7DoW1pY29zXG4gIHBhcnNlQ29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtW10pIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gKGNvbHVtbnMgfHwgW10pLm1hcCgoY29sKSA9PiAoe1xuICAgICAgdHlwZTogJ3N0cmluZycgYXMgY29uc3QsXG4gICAgICBsYWJlbEVuOiBjb2wubGFiZWxFbixcbiAgICAgIC4uLmNvbCxcbiAgICB9KSk7XG4gICAgdGhpcy5fcmF3Q29sdW1ucyA9IG5vcm1hbGl6ZWQ7XG4gICAgdGhpcy5hcHBseUNvbHVtbnNBbmRDb25maWcobm9ybWFsaXplZCk7XG4gICAgdGhpcy5zZXR1cER5bmFtaWNGaWx0ZXJzKCk7XG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB0aGlzLmFwcGx5Q2xpZW50UGFnaW5hdGlvbigpO1xuICB9XG5cbiAgLy8g8J+UuSBGdXNpb25hIGxhIGNvbmZpZ3VyYWNpw7NuIHBvciBkZWZlY3RvIGNvbiBsYSByZWNpYmlkYSB2w61hIGlucHV0XG4gIHNldENvbmZpZyhjZmc6IFRhYmxlQ29uZmlnKSB7XG4gICAgdGhpcy50YWJsZUNvbmZpZyA9IHsgLi4udGhpcy5fcmF3Q29uZmlnLCAuLi5jZmcgfTtcbiAgICB0aGlzLmFwcGx5Q29sdW1uc0FuZENvbmZpZyh0aGlzLl9yYXdDb2x1bW5zKTtcbiAgfVxuXG4gIC8vIPCflLkgQXBsaWNhIGNvbHVtbmFzIHZpc2libGVzIHkgY29uZmlndXJhIGxhcyBlc3BlY2lhbGVzIChzZWxlY3QvZXhwYW5kL2FjdGlvbnMpXG4gIHByaXZhdGUgYXBwbHlDb2x1bW5zQW5kQ29uZmlnKG5ld0NvbHVtbnM6IFRhYmxlQ29sdW1bXSA9IFtdKSB7XG4gICAgaWYgKCFuZXdDb2x1bW5zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZGlzcGxheUNvbHVtbnMgPSBbLi4ubmV3Q29sdW1ucy5tYXAoKGMpID0+IGMuZGVmKV07XG4gICAgaWYgKHRoaXMuX3Jhd0NvbmZpZy5pc0V4cGFuZGlibGUpIGRpc3BsYXlDb2x1bW5zLnVuc2hpZnQoJ2V4cGFuZCcpO1xuICAgIGlmICh0aGlzLl9yYXdDb25maWcuaXNTZWxlY3RhYmxlKSBkaXNwbGF5Q29sdW1ucy51bnNoaWZ0KCdzZWxlY3QnKTtcbiAgICBpZiAodGhpcy5fcmF3Q29uZmlnLnNob3dBY3Rpb25zKSBkaXNwbGF5Q29sdW1ucy5wdXNoKCdhY3Rpb25zJyk7XG5cbiAgICB0aGlzLnRhYmxlQ29sdW1ucyA9IG5ld0NvbHVtbnM7XG4gICAgdGhpcy50YWJsZUNvbmZpZyA9IHRoaXMuX3Jhd0NvbmZpZztcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIPCfjpvvuI8gRklMVFJPUyBZIELDmlNRVUVEQVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIPCflLkgQ3JlYSBkaW7DoW1pY2FtZW50ZSBsb3MgY29udHJvbGVzIGRlbCBmb3JtdWxhcmlvIGRlIGZpbHRyb3NcbiAgc2V0dXBEeW5hbWljRmlsdGVycygpIHtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmZpbHRlckZvcm0uY29udHJvbHMpLmZvckVhY2goKGspID0+XG4gICAgICB0aGlzLmZpbHRlckZvcm0ucmVtb3ZlQ29udHJvbChrKSxcbiAgICApO1xuXG4gICAgdGhpcy5fcmF3Q29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGNvbHVtbi5kYXRhS2V5O1xuICAgICAgc3dpdGNoIChjb2x1bW4udHlwZSkge1xuICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybS5hZGRDb250cm9sKGAke2tleX1fbWluYCwgbmV3IEZvcm1Db250cm9sKCkpO1xuICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybS5hZGRDb250cm9sKGAke2tleX1fbWF4YCwgbmV3IEZvcm1Db250cm9sKCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0uYWRkQ29udHJvbChgJHtrZXl9X2Zyb21gLCBuZXcgRm9ybUNvbnRyb2woKSk7XG4gICAgICAgICAgdGhpcy5maWx0ZXJGb3JtLmFkZENvbnRyb2woYCR7a2V5fV90b2AsIG5ldyBGb3JtQ29udHJvbCgpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0uYWRkQ29udHJvbChgJHtrZXl9X2NvbnRhaW5zYCwgbmV3IEZvcm1Db250cm9sKCcnKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZpbHRlckZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZXJ2ZXJTaWRlKCkpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJGb3JtLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIPCflLkgQXBsaWNhIGxvcyBmaWx0cm9zLCBiw7pzcXVlZGEgeSBwYWdpbmFjacOzbiBzZWfDum4gZWwgbW9kbyBhY3Rpdm9cbiAgYXBwbHlGaWx0ZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZmlsdGVyRm9ybS52YWx1ZSBhcyBhbnk7XG5cbiAgICBpZiAodGhpcy5zZXJ2ZXJTaWRlKCkpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NoYW5nZS5lbWl0KHZhbHVlcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9yYXdDb2x1bW5zIHx8IHRoaXMuX3Jhd0NvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLm9yaWdpbmFsRGF0YV07XG4gICAgICB0aGlzLmFwcGx5Q2xpZW50UGFnaW5hdGlvbigpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VhcmNoVGV4dCA9ICh0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUgfHwgJycpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIGxldCBmaWx0ZXJlZCA9IFsuLi50aGlzLm9yaWdpbmFsRGF0YV07XG5cbiAgICAvLyDwn5S5IEFwbGljYSBmaWx0cm9zIG51bcOpcmljb3MsIGRlIGZlY2hhIHkgdGV4dG9cbiAgICB0aGlzLl9yYXdDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gY29sdW1uLmRhdGFLZXk7XG4gICAgICBjb25zdCB0eXBlID0gY29sdW1uLnR5cGUgfHwgJ3N0cmluZyc7XG5cbiAgICAgIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCByYXdNaW4gPSB2YWx1ZXNbYCR7a2V5fV9taW5gXTtcbiAgICAgICAgY29uc3QgcmF3TWF4ID0gdmFsdWVzW2Ake2tleX1fbWF4YF07XG4gICAgICAgIGNvbnN0IG1pbiA9XG4gICAgICAgICAgcmF3TWluID09PSBudWxsIHx8IHJhd01pbiA9PT0gdW5kZWZpbmVkIHx8IHJhd01pbiA9PT0gJydcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiBOdW1iZXIocmF3TWluKTtcbiAgICAgICAgY29uc3QgbWF4ID1cbiAgICAgICAgICByYXdNYXggPT09IG51bGwgfHwgcmF3TWF4ID09PSB1bmRlZmluZWQgfHwgcmF3TWF4ID09PSAnJ1xuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IE51bWJlcihyYXdNYXgpO1xuICAgICAgICBmaWx0ZXJlZCA9IGZpbHRlcmVkLmZpbHRlcigocm93KSA9PiB7XG4gICAgICAgICAgY29uc3QgdiA9IE51bWJlcihyb3dba2V5XSk7XG4gICAgICAgICAgaWYgKE51bWJlci5pc05hTih2KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIHJldHVybiAobWluID09PSBudWxsIHx8IHYgPj0gbWluKSAmJiAobWF4ID09PSBudWxsIHx8IHYgPD0gbWF4KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgY29uc3QgZGF0ZUZvcm1hdCA9IGNvbHVtbi5kYXRlRm9ybWF0IHx8ICd5eXl5LU1NLWRkJztcbiAgICAgICAgY29uc3QgcmF3RnJvbSA9IHZhbHVlc1tgJHtrZXl9X2Zyb21gXTtcbiAgICAgICAgY29uc3QgcmF3VG8gPSB2YWx1ZXNbYCR7a2V5fV90b2BdO1xuICAgICAgICBjb25zdCBmcm9tID0gcmF3RnJvbVxuICAgICAgICAgID8gRGF0ZVRpbWUuZnJvbUZvcm1hdChTdHJpbmcocmF3RnJvbSksIGRhdGVGb3JtYXQpXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgICBjb25zdCB0byA9IHJhd1RvXG4gICAgICAgICAgPyBEYXRlVGltZS5mcm9tRm9ybWF0KFN0cmluZyhyYXdUbyksIGRhdGVGb3JtYXQpXG4gICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIGZpbHRlcmVkID0gZmlsdGVyZWQuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgICAgICBjb25zdCByYXcgPSByb3dba2V5XTtcbiAgICAgICAgICBpZiAoIXJhdykgcmV0dXJuIHRydWU7XG4gICAgICAgICAgY29uc3QgZGF0ZVZhbCA9IERhdGVUaW1lLmZyb21Gb3JtYXQoU3RyaW5nKHJhdyksIGRhdGVGb3JtYXQpO1xuICAgICAgICAgIGlmICghZGF0ZVZhbC5pc1ZhbGlkKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICBjb25zdCBndGUgPSAhZnJvbSB8fCAoZnJvbS5pc1ZhbGlkICYmIGRhdGVWYWwgPj0gZnJvbSk7XG4gICAgICAgICAgY29uc3QgbHRlID0gIXRvIHx8ICh0by5pc1ZhbGlkICYmIGRhdGVWYWwgPD0gdG8pO1xuICAgICAgICAgIHJldHVybiBndGUgJiYgbHRlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5zID0gKHZhbHVlc1tgJHtrZXl9X2NvbnRhaW5zYF0gfHwgJycpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgICAgICBpZiAoY29udGFpbnMpIHtcbiAgICAgICAgICBmaWx0ZXJlZCA9IGZpbHRlcmVkLmZpbHRlcigocm93KSA9PlxuICAgICAgICAgICAgKHJvd1trZXldID8/ICcnKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoY29udGFpbnMpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIPCflLkgQXBsaWNhIGLDunNxdWVkYSBnbG9iYWxcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xuICAgICAgZmlsdGVyZWQgPSBmaWx0ZXJlZC5maWx0ZXIoKHJvdykgPT5cbiAgICAgICAgdGhpcy5fcmF3Q29sdW1ucy5zb21lKChjb2wpID0+XG4gICAgICAgICAgKChyb3dbY29sLmRhdGFLZXldID8/ICcnKSArICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRleHQpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IGZpbHRlcmVkO1xuICAgIHRoaXMuYXBwbHlDbGllbnRQYWdpbmF0aW9uKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyDwn5OEIFBBR0lOQUNJw5NOIChDTElFTlRFIFkgU0VSVklET1IpXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8g8J+UuSBEZXRlcm1pbmEgZWwgdGFtYcOxbyBhY3R1YWwgZGUgcMOhZ2luYVxuICBnZXQgcmVzb2x2ZWRQYWdlU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhZ2VTaXplKCkgPz8gMTA7XG4gIH1cblxuICAvLyDwn5S5IEFwbGljYSBsYSBwYWdpbmFjacOzbiBkZWwgbGFkbyBkZWwgY2xpZW50ZVxuICBwcml2YXRlIGFwcGx5Q2xpZW50UGFnaW5hdGlvbigpIHtcbiAgICBpZiAodGhpcy5zZXJ2ZXJTaWRlKCkgfHwgIXRoaXMudGFibGVDb25maWc/LmlzUGFnaW5hYmxlKSB7XG4gICAgICB0aGlzLnBhZ2VTbGljZSA9IFsuLi50aGlzLmZpbHRlcmVkRGF0YV07XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5jdXJyZW50UGFnZSgpICogdGhpcy5yZXNvbHZlZFBhZ2VTaXplO1xuICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy5yZXNvbHZlZFBhZ2VTaXplO1xuICAgIHRoaXMucGFnZVNsaWNlID0gdGhpcy5maWx0ZXJlZERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICAvLyDwn5S5IEV2ZW50byBkZSBjYW1iaW8gZGUgcMOhZ2luYSAoY2xpZW50L3NlcnZlcilcbiAgb25QYWdlRXZlbnQocGFnZUluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChwYWdlSW5kZXgpO1xuICAgIGlmICh0aGlzLnNlcnZlclNpZGUoKSkge1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoe1xuICAgICAgICBwYWdlSW5kZXg6IHBhZ2VJbmRleCArIDEsXG4gICAgICAgIHBhZ2VTaXplOiB0aGlzLnJlc29sdmVkUGFnZVNpemUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hcHBseUNsaWVudFBhZ2luYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICAvLyDwn5S5IEhlbHBlcnMgZGUgY29udHJvbCBkZSBww6FnaW5hXG4gIGlzRmlyc3RQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlKCkgPD0gMDtcbiAgfVxuICBpc0xhc3RQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlKCkgPj0gdGhpcy5sYXN0UGFnZSgpO1xuICB9XG4gIGlzU2luZ2xlUGFnZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCB0b3RhbEl0ZW1zID0gdGhpcy5zZXJ2ZXJTaWRlKClcbiAgICAgID8gdGhpcy50b3RhbEl0ZW1zKCkgPz8gMFxuICAgICAgOiB0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGg7XG4gICAgcmV0dXJuIHRvdGFsSXRlbXMgPD0gdGhpcy5yZXNvbHZlZFBhZ2VTaXplO1xuICB9XG5cbiAgLy8g8J+UuSBDYWxjdWxhIGxhIMO6bHRpbWEgcMOhZ2luYSBkaXNwb25pYmxlXG4gIGxhc3RQYWdlKCk6IG51bWJlciB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnNlcnZlclNpZGUoKVxuICAgICAgPyB0aGlzLnRvdGFsSXRlbXMoKSA/PyAwXG4gICAgICA6IHRoaXMuZmlsdGVyZWREYXRhLmxlbmd0aDtcbiAgICBjb25zdCBzaXplID0gdGhpcy5yZXNvbHZlZFBhZ2VTaXplO1xuICAgIGNvbnN0IHJlc3VsdCA9IHNpemUgPT09IDAgPyAwIDogTWF0aC5jZWlsKHRvdGFsIC8gc2l6ZSkgLSAxO1xuICAgIHJldHVybiBNYXRoLm1heCgwLCByZXN1bHQpO1xuICB9XG5cbiAgLy8g8J+UuSBOYXZlZ2FjacOzbiBlbnRyZSBww6FnaW5hc1xuICBnb1RvRmlyc3RQYWdlKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlKCkgPiAwKSB0aGlzLm9uUGFnZUV2ZW50KDApO1xuICB9XG4gIGdvVG9QcmV2aW91c1BhZ2UoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UoKSA+IDApIHRoaXMub25QYWdlRXZlbnQodGhpcy5jdXJyZW50UGFnZSgpIC0gMSk7XG4gIH1cbiAgZ29Ub05leHRQYWdlKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlKCkgPCB0aGlzLmxhc3RQYWdlKCkpXG4gICAgICB0aGlzLm9uUGFnZUV2ZW50KHRoaXMuY3VycmVudFBhZ2UoKSArIDEpO1xuICB9XG4gIGdvVG9MYXN0UGFnZSgpIHtcbiAgICB0aGlzLm9uUGFnZUV2ZW50KHRoaXMubGFzdFBhZ2UoKSk7XG4gIH1cblxuICAvLyDwn5S5IFRleHRvIGRlc2NyaXB0aXZvIGRlbCByYW5nbyBwYWdpbmFkbyAoZWouIFwiMSAtIDUgZGUgMjBcIilcbiAgZ2V0UGFnaW5hdGlvblRleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMuc2VydmVyU2lkZSgpXG4gICAgICA/IHRoaXMudG90YWxJdGVtcz8uKCkgPz8gMFxuICAgICAgOiB0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGg7XG4gICAgY29uc3QgcGFnZUluZGV4ID0gdGhpcy5jdXJyZW50UGFnZT8uKCkgPz8gMDtcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMucmVzb2x2ZWRQYWdlU2l6ZTtcbiAgICBpZiAodG90YWwgPT09IDAgfHwgcGFnZVNpemUgPT09IDApIHJldHVybiBgMCBkZSAke3RvdGFsfWA7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IHBhZ2VJbmRleCAqIHBhZ2VTaXplICsgMTtcbiAgICBjb25zdCBlbmRJbmRleCA9IE1hdGgubWluKChwYWdlSW5kZXggKyAxKSAqIHBhZ2VTaXplLCB0b3RhbCk7XG4gICAgcmV0dXJuIGAke3N0YXJ0SW5kZXh9IC0gJHtlbmRJbmRleH0gZGUgJHt0b3RhbH1gO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8g8J+Wse+4jyBJTlRFUkFDQ0nDk04gREUgRklMQVMgWSBTRUxFQ0NJw5NOXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8g8J+UuSBFbWl0ZSBlbCBldmVudG8gZGUgY2xpY2sgZW4gZmlsYVxuICBvblNlbGVjdFJvdyhyb3c6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY2xpY2tlZFJvdy5lbWl0KHJvdyk7XG4gIH1cblxuICAvLyDwn5S5IEVtaXRlIGVsIGV2ZW50byBjdWFuZG8gY2FtYmlhIGxhIHNlbGVjY2nDs25cbiAgb25TZWxlY3QoKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xuXG4gICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gIH1cblxuICAvLyDwn5S5IENvbXBydWViYSBzaSB0b2RhcyBsYXMgZmlsYXMgdmlzaWJsZXMgZXN0w6FuIHNlbGVjY2lvbmFkYXNcbiAgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5wYWdlU2xpY2UubGVuZ3RoO1xuICAgIHJldHVybiBudW1Sb3dzID4gMCAmJiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcbiAgfVxuXG4gIC8vIPCflLkgQWx0ZXJuYSBsYSBzZWxlY2Npw7NuIGRlIHRvZGFzIGxhcyBmaWxhcyB2aXNpYmxlc1xuICB0b2dnbGVBbGxSb3dzKCkge1xuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgIHRoaXMub25TZWxlY3QoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KC4uLnRoaXMucGFnZVNsaWNlKTtcbiAgICB0aGlzLm9uU2VsZWN0KCk7XG4gIH1cblxuICAvLyDwn5S5IEV0aXF1ZXRhIGFjY2VzaWJsZSBkZWwgY2hlY2tib3ggKHVzYWRhIHBvciBBUklBKVxuICBjaGVja2JveExhYmVsKHJvdz86IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCFyb3cpIHJldHVybiBgJHt0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gYWxsYDtcbiAgICBjb25zdCBpZHggPSB0aGlzLnBhZ2VTbGljZS5pbmRleE9mKHJvdyk7XG4gICAgcmV0dXJuIGAke3RoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gcm93ICR7aWR4ICsgMX1gO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8g8J+OqCBVVElMSURBREVTIERFIFJFTkRFUklaQURPIFkgQ0xBU0VTXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgaXNFdmVuKHJvd0luZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93SW5kZXggJSAyID09PSAwO1xuICB9XG4gIGlzT2RkKHJvd0luZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNFdmVuKHJvd0luZGV4KTtcbiAgfVxuICBpc1RlbXBsYXRlUmVmKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIC8vIPCflLkgRGVmaW5lIGNsYXNlcyBkaW7DoW1pY2FzIHBhcmEgY2VsZGFzIGRlIGRhdG9zXG4gIGdldENlbGxDbGFzc2VzKHJvdzogYW55LCBjb2x1bW5LZXk6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IGFueSB7XG4gICAgY29uc3Qgc2VtYW50aWNUeXBlID0gcm93W2NvbHVtbktleSArICdUeXBlJ107XG4gICAgcmV0dXJuIHtcbiAgICAgICdibWJfdGFibGVfbGl0ZS1zdGlja3knOiBpbmRleCA9PT0gMCxcbiAgICAgIHRydW5jYXRlZDogdGhpcy50cnVuY2F0ZSgpLFxuICAgICAgWydibWJfdGFibGVfbGl0ZS0nICsgc2VtYW50aWNUeXBlXTogISFzZW1hbnRpY1R5cGUsXG4gICAgfTtcbiAgfVxuXG4gIC8vIPCflLkgRGVmaW5lIGNsYXNlcyBkaW7DoW1pY2FzIHBhcmEgZW5jYWJlemFkb3NcbiAgZ2V0SGVhZGVyQ2VsbENsYXNzZXMoaTogbnVtYmVyKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2JtYl90YWJsZV9saXRlLXN0aWNreSc6IGkgPT09IDAsXG4gICAgICB0cnVuY2F0ZWQ6IHRoaXMudHJ1bmNhdGUoKSxcbiAgICB9O1xuICB9XG5cbiAgLy8g8J+UuSBEZXRlcm1pbmEgY2xhc2VzIHByaW5jaXBhbGVzIGRlbCBjb250ZW5lZG9yIHNlZ8O6biBwb3NpY2nDs24gZGUgZmlsdHJvc1xuICBnZXRUYWJsZUNsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IFsnYm1iX3RhYmxlX2xpdGUnXTtcbiAgICBzd2l0Y2ggKHRoaXMuZmlsdGVyc1Bvc2l0aW9uKCkpIHtcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYl90YWJsZV9saXRlLWZpbHRlcnMtcmlnaHQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBjbGFzc0xpc3QucHVzaCgnYm1iX3RhYmxlX2xpdGUtZmlsdGVycy1ib3R0b20nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYl90YWJsZV9saXRlLWZpbHRlcnMtbGVmdCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNsYXNzTGlzdC5wdXNoKCdibWJfdGFibGVfbGl0ZS1maWx0ZXJzLXRvcCcpO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NMaXN0O1xuICB9XG5cbiAgLy8g8J+UuSBPYnRpZW5lIHVuIGNvbnRyb2wgZGVsIGZvcm11bGFyaW8gZGUgZmlsdHJvc1xuICBnZXRGb3JtQ29udHJvbChuYW1lOiBzdHJpbmcpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyRm9ybS5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICAvLyDwn5S5IEFsdGVybmEgbGEgdmlzaWJpbGlkYWQgZGVsIHBhbmVsIGRlIGZpbHRyb3NcbiAgdG9nZ2xlRmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcnNWaXNpYmxlLnNldCghdGhpcy5maWx0ZXJzVmlzaWJsZSgpKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIPCfp64gVkFSSUFCTEVTIENTUyBZIEJJTkRJTkdTIERJTsOBTUlDT1NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tY29sLWNvdW50JylcbiAgZ2V0IGNvbENvdW50KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlQ29sdW1ucy5sZW5ndGg7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tY29sLWNoZWNrYm94JylcbiAgZ2V0IGNvbENoZWNrYm94KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlQ29uZmlnPy5pc1NlbGVjdGFibGUgPyAnNjJweCcgOiAnMHB4JztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1jb2wtZXhwYW5kJylcbiAgZ2V0IGNvbEV4cGFuZCgpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbmZpZz8uaXNFeHBhbmRpYmxlID8gJzQwcHgnIDogJzBweCc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tY29sLWFjdGlvbnMnKVxuICBnZXQgY29sQWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbmZpZz8uc2hvd0FjdGlvbnMgPyAnODBweCcgOiAnMHB4JztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1oYXMtY2hlY2tib3gnKVxuICBnZXQgaGFzQ2hlY2tib3goKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVDb25maWc/LmlzU2VsZWN0YWJsZSA/IDEgOiAwO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLWhhcy1leHBhbmQnKVxuICBnZXQgaGFzRXhwYW5kKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlQ29uZmlnPy5pc0V4cGFuZGlibGUgPyAxIDogMDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1oYXMtYWN0aW9ucycpXG4gIGdldCBoYXNBY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlQ29uZmlnPy5zaG93QWN0aW9ucyA/IDEgOiAwO1xuICB9XG5cbiAgLy8g8J+UuSBFeHBvbmUgbGFzIHZhcmlhYmxlcyBDU1MgdXNhZGFzIHBhcmEgZWwgZ3JpZCBkaW7DoW1pY29cbiAgZ2V0IGNzc1ZhcnMoKSB7XG4gICAgY29uc3QgaGFzU2VsZWN0ID0gdGhpcy50YWJsZUNvbmZpZz8uaXNTZWxlY3RhYmxlO1xuICAgIGNvbnN0IGhhc0V4cGFuZCA9IHRoaXMudGFibGVDb25maWc/LmlzRXhwYW5kaWJsZTtcbiAgICBjb25zdCBoYXNBY3Rpb25zID0gdGhpcy50YWJsZUNvbmZpZz8uc2hvd0FjdGlvbnM7XG5cbiAgICBjb25zdCBjb2x1bW5UZW1wbGF0ZSA9IGByZXBlYXQoJHt0aGlzLnRhYmxlQ29sdW1ucy5sZW5ndGh9LCBtaW5tYXgoMTIwcHgsIDFmcikpYDtcblxuICAgIGNvbnN0IHBhcnRzID0gW1xuICAgICAgaGFzU2VsZWN0ID8gJ3ZhcigtLWNvbC1jaGVja2JveCwgNjJweCknIDogJycsXG4gICAgICBoYXNFeHBhbmQgPyAndmFyKC0tY29sLWV4cGFuZCwgNDBweCknIDogJycsXG4gICAgICBjb2x1bW5UZW1wbGF0ZSxcbiAgICAgIGhhc0FjdGlvbnMgPyAndmFyKC0tY29sLWFjdGlvbnMsIDgwcHgpJyA6ICcnLFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICctLWNvbC1jb3VudCc6IHRoaXMudGFibGVDb2x1bW5zLmxlbmd0aCxcbiAgICAgICctLWNvbC1jaGVja2JveCc6IGhhc1NlbGVjdCA/ICc2MnB4JyA6ICcwcHgnLFxuICAgICAgJy0tY29sLWV4cGFuZCc6IGhhc0V4cGFuZCA/ICc0MHB4JyA6ICcwcHgnLFxuICAgICAgJy0tY29sLWFjdGlvbnMnOiBoYXNBY3Rpb25zID8gJzgwcHgnIDogJzBweCcsXG4gICAgICAnLS1ncmlkLXRlbXBsYXRlJzogcGFydHMuam9pbignICcpLFxuICAgIH07XG4gIH1cblxuICB0cmFja0J5Q29sdW1uKGNvbHVtbjogYW55KTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gY29sdW1uLmRlZiB8fCBjb2x1bW4ubGFiZWw7XG4gIH1cblxuICB0cmFja0J5Um93KHJvdzogYW55KTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gcm93LmlkIHx8IHJvdy5zb2NpZWRhZDtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJnZXRUYWJsZUNsYXNzZXMoKVwiIFtuZ1N0eWxlXT1cImNzc1ZhcnNcIj5cbiAgQGlmIChzaG93U2VhcmNoKCkgfHwgZmlsdGVyc1Zpc2libGUoKSkge1xuICAgIDxoZWFkZXIgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1oZWFkZXJcIj5cbiAgICAgIEBpZiAoc2hvd1NlYXJjaCgpKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtc2VhcmNoXCI+XG4gICAgICAgICAgPGJtYi1pbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1pbnB1dFwiXG4gICAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidCdXNjYXInXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaWNvbl09XCInc2VhcmNoJ1wiXG4gICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbm9ybWFsJ1wiXG4gICAgICAgICAgICBbY29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgICA+PC9ibWItaW5wdXQ+XG4gICAgICAgICAgPGJtYi1hY3Rpb24taWNvblxuICAgICAgICAgICAgW2lkRWxlbWVudF09XCInJ1wiXG4gICAgICAgICAgICBbaWNvbl09XCInZmlsdGVyX2xpc3QnXCJcbiAgICAgICAgICAgIFtpY29uU2l6ZV09XCIyNFwiXG4gICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwidG9nZ2xlRmlsdGVycygpXCJcbiAgICAgICAgICA+PC9ibWItYWN0aW9uLWljb24+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICAgIDxkaXYgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1maWx0ZXJcIj5cbiAgICAgICAgQGlmIChmaWx0ZXJzVmlzaWJsZSgpKSB7XG4gICAgICAgICAgQGZvciAoY29sdW1uIG9mIHBhcnNlZEZpbHRlcnNDb2x1bW5zKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1maWx0ZXItaXRlbVwiPlxuICAgICAgICAgICAgICBAc3dpdGNoIChjb2x1bW4udHlwZSkge1xuICAgICAgICAgICAgICAgIEBjYXNlICgnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJtYl90YWJsZV9saXRlLWZpbHRlci1pdGVtLW51bWJlclwiPlxuICAgICAgICAgICAgICAgICAgICA8Ym1iLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbCArICcgbcOtbmltbydcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ03DrW4nXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbm9ybWFsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Rm9ybUNvbnRyb2woY29sdW1uLmRhdGFLZXkgKyAnX21pbicpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGJtYi1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWwgKyAnIG3DoXhpbW8nXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidNw6F4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiJ25vcm1hbCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldEZvcm1Db250cm9sKGNvbHVtbi5kYXRhS2V5ICsgJ19tYXgnKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGNhc2UgKCdkYXRlJykge1xuICAgICAgICAgICAgICAgICAgPGJtYi1kYXRlLXJhbmdlXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJTdGFydERhdGVdPVwiJ0Rlc2RlJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlckVuZERhdGVdPVwiJ0hhc3RhJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cIidjYWxlbmRhcl9tb250aCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbm9ybWFsJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cIidkZC9NTS95eXl5J1wiXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sU3RhcnRdPVwiZ2V0Rm9ybUNvbnRyb2woY29sdW1uLmRhdGFLZXkgKyAnX2Zyb20nKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sRW5kXT1cImdldEZvcm1Db250cm9sKGNvbHVtbi5kYXRhS2V5ICsgJ190bycpXCJcbiAgICAgICAgICAgICAgICAgICAgKHN0YXJ0RGF0ZUNoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICBnZXRGb3JtQ29udHJvbChjb2x1bW4uZGF0YUtleSArICdfZnJvbScpLnNldFZhbHVlKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgKGVuZERhdGVDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0Rm9ybUNvbnRyb2woY29sdW1uLmRhdGFLZXkgKyAnX3RvJykuc2V0VmFsdWUoJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgPGJtYi1pbnB1dFxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidGaWx0cmFyJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldEZvcm1Db250cm9sKGNvbHVtbi5kYXRhS2V5ICsgJ19jb250YWlucycpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1jb250YWluZXJcIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImJtYl90YWJsZV9saXRlLWNvbnRhaW5lci10YWJsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImJtYl90YWJsZV9saXRlLXJvdyBibWJfdGFibGVfbGl0ZS1yb3ctLWhlYWRlclwiPlxuICAgICAgICBAaWYgKHRhYmxlQ29uZmlnPy5pc1NlbGVjdGFibGUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtdGggYm1iX3RhYmxlX2xpdGUtY2hlY2tib3hcIj5cbiAgICAgICAgICAgIDxibWItY2hlY2tib3hcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyB0b2dnbGVBbGxSb3dzKCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiY2hlY2tib3hMYWJlbCgpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHRhYmxlQ29uZmlnPy5pc0V4cGFuZGlibGUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtdGggYm1iX3RhYmxlX2xpdGUtZXhwYW5kXCI+Jm5ic3A7PC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAZm9yIChcbiAgICAgICAgICBjb2x1bW4gb2YgdGFibGVDb2x1bW5zO1xuICAgICAgICAgIHRyYWNrIHRyYWNrQnlDb2x1bW4oY29sdW1uKTtcbiAgICAgICAgICBsZXQgaSA9ICRpbmRleFxuICAgICAgICApIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImJtYl90YWJsZV9saXRlLXRoXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEhlYWRlckNlbGxDbGFzc2VzKGkpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgbGFuZygpID09PSAnZXMnID8gY29sdW1uLmxhYmVsIDogY29sdW1uLmxhYmVsRW4gfHwgY29sdW1uLmxhYmVsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaWNvblwiPlxuICAgICAgICAgICAgICA8Ym1iLWljb24gW2ljb25dPVwiY29sdW1uLmljb25cIj48L2JtYi1pY29uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIEBpZiAoY29sdW1uLmh0bWxMYWJlbCkge1xuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uaHRtbExhYmVsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjb2x1bW46IGNvbHVtbiwgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtdGgtdGV4dFwiPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICBsYW5nKCkgPT09ICdlcydcbiAgICAgICAgICAgICAgICAgICAgPyBjb2x1bW4ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgOiBjb2x1bW4ubGFiZWxFbiB8fCBjb2x1bW4ubGFiZWxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHRhYmxlQ29uZmlnPy5zaG93QWN0aW9ucykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS10aCBibWJfdGFibGVfbGl0ZS1hY3Rpb25zXCI+PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAZm9yIChyb3cgb2YgcGFnZVNsaWNlOyB0cmFjayB0cmFja0J5Um93KHJvdyk7IGxldCBySW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtcm93XCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RSb3cocm93KVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2JtYl90YWJsZV9saXRlLWV2ZW4nOiBpc0V2ZW4ockluZGV4KSxcbiAgICAgICAgICAgICdibWJfdGFibGVfbGl0ZS1vZGQnOiBpc09kZChySW5kZXgpLFxuICAgICAgICAgICAgJ2JtYl90YWJsZV9saXRlLWV4cGFuZGlibGUnOiBleHBhbmRlZEVsZW1lbnQgPT09IHJvd1xuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgQGlmICh0YWJsZUNvbmZpZz8uaXNTZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtdGQgYm1iX3RhYmxlX2xpdGUtY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgPGJtYi1jaGVja2JveFxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uLnRvZ2dsZShyb3cpIDogbnVsbDsgb25TZWxlY3QoKVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJjaGVja2JveExhYmVsKHJvdylcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgb25rZXlwcmVzcz1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHRhYmxlQ29uZmlnPy5pc0V4cGFuZGlibGUpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS10ZCBibWJfdGFibGVfbGl0ZS1leHBhbmRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYm1iX2J0bi1pY29uXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiZXhwYW5kIHJvd1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgZXhwYW5kZWRFbGVtZW50ID0gZXhwYW5kZWRFbGVtZW50ID09PSByb3cgPyBudWxsIDogcm93O1xuICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxibWItaWNvblxuICAgICAgICAgICAgICAgICAgW2ljb25dPVwiXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkRWxlbWVudCA9PT0gcm93ID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZSdcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvYm1iLWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICBjb2x1bW4gb2YgdGFibGVDb2x1bW5zO1xuICAgICAgICAgICAgdHJhY2sgdHJhY2tCeUNvbHVtbihjb2x1bW4pO1xuICAgICAgICAgICAgbGV0IGkgPSAkaW5kZXhcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS10ZFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldENlbGxDbGFzc2VzKHJvdywgY29sdW1uLmRhdGFLZXksIGkpXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cInJvd1tjb2x1bW4uZGF0YUtleV0/LnByb3BlcnR5TmFtZSB8fCByb3dbY29sdW1uLmRhdGFLZXldXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmIChpc1RlbXBsYXRlUmVmKHJvd1tjb2x1bW4uZGF0YUtleSArICdUZW1wbGF0ZSddKSkge1xuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93W2NvbHVtbi5kYXRhS2V5ICsgJ1RlbXBsYXRlJ11cIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3cgfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAge3sgcm93W2NvbHVtbi5kYXRhS2V5XT8ucHJvcGVydHlOYW1lIHx8IHJvd1tjb2x1bW4uZGF0YUtleV0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAodGFibGVDb25maWc/LnNob3dBY3Rpb25zKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtdGQgYm1iX3RhYmxlX2xpdGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgIHRhYmxlQ29sdW1ucy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICB0YWJsZUNvbHVtbnNbdGFibGVDb2x1bW5zLmxlbmd0aCAtIDFdLnRlbXBsYXRlQWN0aW9uc1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuICAgICAgICAgICAgICAgICAgICB0YWJsZUNvbHVtbnNbdGFibGVDb2x1bW5zLmxlbmd0aCAtIDFdLnRlbXBsYXRlQWN0aW9ucyFcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdyB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhY3Rpb25UZW1wbGF0ZSgpIVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdyB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKHRhYmxlQ29uZmlnPy5pc0V4cGFuZGlibGUpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImJtYl90YWJsZV9saXRlLXJvdyBibWJfdGFibGVfbGl0ZS1kZXRhaWxzXCJcbiAgICAgICAgICAgIFtjbGFzcy5ibWJfdGFibGVfbGl0ZS1leHBhbmRlZF09XCJleHBhbmRlZEVsZW1lbnQgPT09IHJvd1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJtYl90YWJsZV9saXRlLWRldGFpbFwiICpuZ0lmPVwiZXhwYW5kZWRFbGVtZW50ID09PSByb3dcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGV0YWlsVGVtcGxhdGUoKTsgY29udGV4dDogeyByb3c6IHJvdyB9XCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L3NlY3Rpb24+XG5cbiAgICBAaWYgKHRhYmxlQ29uZmlnPy5pc1BhZ2luYWJsZSkge1xuICAgICAgPGRpdiBjbGFzcz1cImJtYl90YWJsZV9saXRlLXBhZ2luYXRvclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImJtYl90YWJsZV9saXRlLXBhZ2luYXRvci10ZXh0XCI+XG4gICAgICAgICAge3sgZ2V0UGFnaW5hdGlvblRleHQoKSB9fVxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtcGFnaW5hdG9yLWJ0blwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlKCkgfHwgaXNTaW5nbGVQYWdlKClcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvRmlyc3RQYWdlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJtYi1pY29uXG4gICAgICAgICAgICBpY29uPVwia2V5Ym9hcmRfZG91YmxlX2Fycm93X2xlZnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1wYWdpbmF0b3ItaWNvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtcGFnaW5hdG9yLWJ0blwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlKCkgfHwgaXNTaW5nbGVQYWdlKClcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvUHJldmlvdXNQYWdlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJtYi1pY29uXG4gICAgICAgICAgICBpY29uPVwia2V5Ym9hcmRfYXJyb3dfbGVmdFwiXG4gICAgICAgICAgICBjbGFzcz1cImJtYl90YWJsZV9saXRlLXBhZ2luYXRvci1pY29uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1wYWdpbmF0b3ItYnRuXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMYXN0UGFnZSgpIHx8IGlzU2luZ2xlUGFnZSgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJtYi1pY29uXG4gICAgICAgICAgICBpY29uPVwia2V5Ym9hcmRfYXJyb3dfcmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1wYWdpbmF0b3ItaWNvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtcGFnaW5hdG9yLWJ0blwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzTGFzdFBhZ2UoKSB8fCBpc1NpbmdsZVBhZ2UoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImdvVG9MYXN0UGFnZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxibWItaWNvblxuICAgICAgICAgICAgaWNvbj1cImtleWJvYXJkX2RvdWJsZV9hcnJvd19yaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cImJtYl90YWJsZV9saXRlLXBhZ2luYXRvci1pY29uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
564
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLXRhYmxlLWxpdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtbmcvc3JjL2xpYi9jb21wb25lbnRzL2JtYi10YWJsZS1saXRlL2JtYi10YWJsZS1saXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItdGFibGUtbGl0ZS9ibWItdGFibGUtbGl0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUNaLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLEtBQUssRUFFTCxNQUFNLEVBRU4sS0FBSyxFQUVMLFFBQVEsRUFDUixXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7O0FBMEJ0RixNQUFNLE9BQU8scUJBQXFCO0lBK0VoQyxnRkFBZ0Y7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QjttR0FBckIscUJBQXFCLDgxRkNwRGxDLDJrVUFrU0EsK2lhRDNQSSxZQUFZLDRkQUNaLG1CQUFtQiwrQkFDbkIsZ0JBQWdCLDhKQUNoQixvQkFBb0Isb2FBQ3BCLGlCQUFpQix3aUJBQ2pCLHFCQUFxQixnZEFDckIsc0JBQXNCOzs0RkFPYixxQkFBcUI7a0JBakJqQyxTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQixzQkFBc0I7cUJBQ3ZCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO3NGQWdFM0IsTUFBTTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQXVjSCxRQUFRO3NCQURYLFdBQVc7dUJBQUMsbUJBQW1CO2dCQU01QixXQUFXO3NCQURkLFdBQVc7dUJBQUMsc0JBQXNCO2dCQU0vQixTQUFTO3NCQURaLFdBQVc7dUJBQUMsb0JBQW9CO2dCQU03QixVQUFVO3NCQURiLFdBQVc7dUJBQUMscUJBQXFCO2dCQU05QixXQUFXO3NCQURkLFdBQVc7dUJBQUMsc0JBQXNCO2dCQU0vQixTQUFTO3NCQURaLFdBQVc7dUJBQUMsb0JBQW9CO2dCQU03QixVQUFVO3NCQURiLFdBQVc7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgaW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgZWZmZWN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBtb2RlbCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIGNvbXB1dGVkLFxuICBIb3N0QmluZGluZyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5cbmltcG9ydCB7IEJtYkljb25Db21wb25lbnQgfSBmcm9tICcuLi9ibWItaWNvbi9ibWItaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9ibWItY2hlY2tib3gvYm1iLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYkRhdGVSYW5nZUNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1kYXRlLXJhbmdlL2JtYi1kYXRlLXJhbmdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJBY3Rpb25JY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWFjdGlvbi1pY29uL2JtYi1hY3Rpb24taWNvbi5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBJQm1iRmlsdGVyc1Bvc2l0aW9uLFxuICBUYWJsZUNvbHVtLFxuICBUYWJsZUNvbmZpZyxcbiAgSUJtYlRhYmxlTGFuZyxcbn0gZnJvbSAnLi9ibWItdGFibGUtbGl0ZS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdibWItdGFibGUtbGl0ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCbWJJY29uQ29tcG9uZW50LFxuICAgIEJtYkNoZWNrYm94Q29tcG9uZW50LFxuICAgIEJtYklucHV0Q29tcG9uZW50LFxuICAgIEJtYkRhdGVSYW5nZUNvbXBvbmVudCxcbiAgICBCbWJBY3Rpb25JY29uQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm1iLXRhYmxlLWxpdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYm1iLXRhYmxlLWxpdGUuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQm1iVGFibGVMaXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyDwn5SnIENPTkZJR1VSQUNJw5NOIElOVEVSTkEgKG5vIHZpc2libGUgZGVzZGUgZWwgdGVtcGxhdGUpXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHByaXZhdGUgX3Jhd0NvbHVtbnM6IFRhYmxlQ29sdW1bXSA9IFtdO1xuICBwcml2YXRlIF9yYXdDb25maWc6IFRhYmxlQ29uZmlnID0ge1xuICAgIGlzU2VsZWN0YWJsZTogZmFsc2UsXG4gICAgaXNFeHBhbmRpYmxlOiBmYWxzZSxcbiAgICBpc1BhZ2luYWJsZTogZmFsc2UsXG4gICAgc2hvd0FjdGlvbnM6IGZhbHNlLFxuICB9O1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIPCfk4ogREFUT1MgWSBFU1RBRE8gREUgTEEgVEFCTEFcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgb3JpZ2luYWxEYXRhOiBhbnlbXSA9IFtdOyAvLyBEYXRvcyBvcmlnaW5hbGVzIHNpbiBmaWx0cm9zXG4gIGZpbHRlcmVkRGF0YTogYW55W10gPSBbXTsgLy8gRGF0b3MgdHJhcyBhcGxpY2FyIGZpbHRyb3NcbiAgcGFnZVNsaWNlOiBhbnlbXSA9IFtdOyAvLyBQw6FnaW5hIGFjdHVhbCBxdWUgc2UgbXVlc3RyYVxuXG4gIGV4cGFuZGVkRWxlbWVudDogYW55OyAvLyBGaWxhIGV4cGFuZGlkYSBhY3R1YWxcbiAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10pOyAvLyBTZWxlY2Npw7NuIGRlIGZpbGFzXG4gIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyB8IHVuZGVmaW5lZDsgLy8gQ29uZmlndXJhY2nDs24gYWN0aXZhIGRlIGxhIHRhYmxhXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8g8J+UjSBGT1JNVUxBUklPIERFIEZJTFRST1MgWSBCw5pTUVVFREFcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgZmlsdGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pOyAvLyBDb250cm9sZXMgZGluw6FtaWNvcyBkZSBmaWx0cm9zXG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpOyAvLyBDb250cm9sIGRlIGLDunNxdWVkYSAodGV4dG8pXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8g8J+nqSBDT0xVTU5BUyBZIEVTVFJVQ1RVUkEgREUgTEEgVEFCTEFcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgdGFibGVDb2x1bW5zOiBUYWJsZUNvbHVtW10gPSBbXTsgLy8gQ29sdW1uYXMgcmVuZGVyaXphZGFzIGVuIGxhIHRhYmxhXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8g4pqZ77iPIElOUFVUUyAoY29uZmlndXJhY2nDs24gZXh0ZXJuYSBkZWwgY29tcG9uZW50ZSlcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgc2hvd1NlYXJjaCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTsgLy8gTXVlc3RyYSB1IG9jdWx0YSBlbCBidXNjYWRvclxuICBwYWdlU2l6ZSA9IGlucHV0PG51bWJlcj4oKTsgLy8gVGFtYcOxbyBkZSBww6FnaW5hXG4gIHRvdGFsSXRlbXMgPSBpbnB1dDxudW1iZXI+KDApOyAvLyBUb3RhbCBkZSBlbGVtZW50b3MgKHNlcnZlcilcbiAgZGF0YSA9IGlucHV0PGFueVtdPihbXSk7IC8vIERhdGEgcmVjaWJpZGFcbiAgY29sdW1ucyA9IGlucHV0PFRhYmxlQ29sdW1bXT4oW10pOyAvLyBEZWZpbmljacOzbiBkZSBjb2x1bW5hc1xuICBjb25maWcgPSBpbnB1dDxUYWJsZUNvbmZpZz4oKTsgLy8gQ29uZmlndXJhY2nDs24gZ2VuZXJhbFxuXG4gIHRydW5jYXRlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvLyBBY3RpdmEgdHJ1bmNhZG8gZGUgdGV4dG9cbiAgbGFuZyA9IGlucHV0PElCbWJUYWJsZUxhbmc+KCdlcycpOyAvLyBJZGlvbWEgKCdlcycgfCAnZW4nKVxuICBzZXJ2ZXJTaWRlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvLyBNb2RvIHNlcnZpZG9yIG8gY2xpZW50ZVxuICBmaWx0ZXJzUG9zaXRpb24gPSBpbnB1dDxJQm1iRmlsdGVyc1Bvc2l0aW9uPigndG9wJyk7IC8vIFBvc2ljacOzbiBmaWx0cm9zXG4gIGluaXRpYWxUYWJsZVNlbGVjdGlvbiA9IGlucHV0PG51bWJlcltdPihbXSk7IC8vIFNlbGVjY2nDs24gaW5pY2lhbCBkZSBmaWxhc1xuICBhY3Rpb25UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPihudWxsKTsgLy8gVGVtcGxhdGUgZGUgYWNjaW9uZXNcbiAgZGV0YWlsVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4obnVsbCk7IC8vIFRlbXBsYXRlIGRlIGRldGFsbGVcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyDimqEgTU9ERUxPUyBSRUFDVElWT1MgKHVzYW5kbyBzaWduYWxzKVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBjbGVhclNlbGVjdGlvbiA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTsgLy8gTGltcGlhIHNlbGVjY2nDs24gZGVzZGUgZnVlcmFcbiAgY3VycmVudFBhZ2UgPSBtb2RlbDxudW1iZXI+KDApOyAvLyBQw6FnaW5hIGFjdHVhbFxuICBmaWx0ZXJzVmlzaWJsZSA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTsgLy8gRXN0YWRvIHZpc2libGUvb2N1bHRvIGRlIGZpbHRyb3NcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyDwn5OkIE9VVFBVVFMgKGV2ZW50b3MgcXVlIGVtaXRlIGxhIHRhYmxhKVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBAT3V0cHV0KCkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7IC8vIENhbWJpbyBkZSBzZWxlY2Npw7NuXG4gIEBPdXRwdXQoKSBjbGlja2VkUm93ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7IC8vIENsaWNrIGVuIHVuYSBmaWxhXG4gIEBPdXRwdXQoKSBzZWFyY2hDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTsgLy8gVGV4dG8gZGVsIGJ1c2NhZG9yXG4gIEBPdXRwdXQoKSBmaWx0ZXJzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBhbnk+PigpOyAvLyBGaWx0cm9zIGFwbGljYWRvc1xuICBAT3V0cHV0KCkgc2VhcmNoTW9kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8J2NsaWVudCcgfCAnc2VydmVyJz4oKTsgLy8gTW9kbyBkZSBiw7pzcXVlZGFcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuICB9PigpOyAvLyBDYW1iaW8gZGUgcMOhZ2luYVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIPCfp64gUFJPUElFREFERVMgQ09NUFVUQURBU1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBwYXJzZWRGaWx0ZXJzQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5jb2x1bW5zKCkuZmlsdGVyKChjb2x1bW4pID0+IGNvbHVtbi5pc0ZpbHRlcmFibGUgIT09IGZhbHNlKSxcbiAgKTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyDwn6egIENJQ0xPIERFIFZJREEgWSBFRkVDVE9TIFJFQUNUSVZPU1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIC8vIPCfp6kgRWZlY3RvOiBjb250cm9sYSBsYSBww6FnaW5hIGFjdHVhbCBlbiBtb2RvIHNlcnZpZG9yLCBhc2VndXJhbmRvIHF1ZVxuICAgIC8vIG5vIGV4Y2VkYSBsb3MgbMOtbWl0ZXMgKDAg4oaSIGxhc3RQYWdlKVxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuc2VydmVyU2lkZSgpKSByZXR1cm47XG4gICAgICBjb25zdCBsYXN0ID0gdGhpcy5sYXN0UGFnZSgpO1xuICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UoKSA8IDApIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZS5zZXQoMCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50UGFnZSgpID4gbGFzdCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChsYXN0KTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8g8J+nqSBFZmVjdG86IGxpbXBpYSBsYSBzZWxlY2Npw7NuIGRlIGZpbGFzIHNpIHNlIGFjdGl2YSBgY2xlYXJTZWxlY3Rpb25gXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jbGVhclNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8vIPCfp6kgRGV0ZWN0YSBjYW1iaW9zIGVuIGlucHV0cyByZWFjdGl2b3MgKGRhdGEsIGNvbHVtbnMsIGNvbmZpZylcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10pIHRoaXMucGFyc2VEYXRhKGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWUgfHwgW10pO1xuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10pXG4gICAgICB0aGlzLnBhcnNlQ29sdW1ucyhjaGFuZ2VzWydjb2x1bW5zJ10uY3VycmVudFZhbHVlIHx8IFtdKTtcbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10pIHRoaXMuc2V0Q29uZmlnKGNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZSB8fCB7fSk7XG4gIH1cblxuICAvLyDwn6epIEluaWNpYWxpemEgZmlsdHJvcyB5IHN1c2NyaXBjaW9uZXMgZGVsIGJ1c2NhZG9yXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3Qgc2VhcmNoID0gKHZhbHVlIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgICAgaWYgKHRoaXMuc2VydmVyU2lkZSgpKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoTW9kZUNoYW5nZS5lbWl0KCdzZXJ2ZXInKTtcbiAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2UuZW1pdChzZWFyY2gpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWFyY2hNb2RlQ2hhbmdlLmVtaXQoJ2NsaWVudCcpO1xuICAgICAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3Jhd0NvbmZpZyA9IHRoaXMuY29uZmlnKCkgfHwge307XG4gICAgdGhpcy5wYXJzZURhdGEodGhpcy5kYXRhKCkpO1xuICAgIHRoaXMucGFyc2VDb2x1bW5zKHRoaXMuY29sdW1ucygpKTtcblxuICAgIC8vIPCfkYcgaW1wb3J0YW50ZTogcmVjcmVhciBmaWx0cm9zIHVuYSB2ZXogcXVlIHRvZG8gZXN0w6kgbGlzdG9cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBEeW5hbWljRmlsdGVycygpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyDwn6epIE1BTkVKTyBERSBEQVRPUyBZIENPTFVNTkFTXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8g8J+UuSBOb3JtYWxpemEgeSBhcGxpY2EgbG9zIGRhdG9zIGluaWNpYWxlcyBzZWfDum4gZWwgbW9kbyAoc2VydmVyL2NsaWVudClcbiAgcGFyc2VEYXRhKGRhdGE6IGFueVtdKSB7XG4gICAgdGhpcy5vcmlnaW5hbERhdGEgPSBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YSA6IFtdO1xuICAgIGlmICghdGhpcy5zZXJ2ZXJTaWRlKCkpIHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgICB0aGlzLmFwcGx5Q2xpZW50UGFnaW5hdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLm9yaWdpbmFsRGF0YV07XG4gICAgICB0aGlzLnBhZ2VTbGljZSA9IFsuLi50aGlzLmZpbHRlcmVkRGF0YV07XG4gICAgfVxuXG4gICAgLy8g8J+nqSBBcGxpY2Egc2VsZWNjacOzbiBpbmljaWFsIHNpIGVzdMOhIGNvbmZpZ3VyYWRhXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5pbml0aWFsVGFibGVTZWxlY3Rpb24oKSA/PyBbXTtcbiAgICBpZiAoc2VsZWN0ZWRSb3dzLmxlbmd0aCAmJiB0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICBzZWxlY3RlZFJvd3MuZm9yRWFjaCgoaWR4KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcmVkRGF0YVtpZHhdKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHRoaXMuZmlsdGVyZWREYXRhW2lkeF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyDwn5S5IEVzdGFuZGFyaXphIGxhcyBjb2x1bW5hcyB5IGdlbmVyYSBzdXMgZmlsdHJvcyBkaW7DoW1pY29zXG4gIHBhcnNlQ29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtW10pIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gKGNvbHVtbnMgfHwgW10pLm1hcCgoY29sKSA9PiAoe1xuICAgICAgdHlwZTogJ3N0cmluZycgYXMgY29uc3QsXG4gICAgICBsYWJlbEVuOiBjb2wubGFiZWxFbixcbiAgICAgIC4uLmNvbCxcbiAgICB9KSk7XG4gICAgdGhpcy5fcmF3Q29sdW1ucyA9IG5vcm1hbGl6ZWQ7XG4gICAgdGhpcy5hcHBseUNvbHVtbnNBbmRDb25maWcobm9ybWFsaXplZCk7XG4gICAgdGhpcy5zZXR1cER5bmFtaWNGaWx0ZXJzKCk7XG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB0aGlzLmFwcGx5Q2xpZW50UGFnaW5hdGlvbigpO1xuICB9XG5cbiAgLy8g8J+UuSBGdXNpb25hIGxhIGNvbmZpZ3VyYWNpw7NuIHBvciBkZWZlY3RvIGNvbiBsYSByZWNpYmlkYSB2w61hIGlucHV0XG4gIHNldENvbmZpZyhjZmc6IFRhYmxlQ29uZmlnKSB7XG4gICAgdGhpcy50YWJsZUNvbmZpZyA9IHsgLi4udGhpcy5fcmF3Q29uZmlnLCAuLi5jZmcgfTtcbiAgICB0aGlzLmFwcGx5Q29sdW1uc0FuZENvbmZpZyh0aGlzLl9yYXdDb2x1bW5zKTtcbiAgfVxuXG4gIC8vIPCflLkgQXBsaWNhIGNvbHVtbmFzIHZpc2libGVzIHkgY29uZmlndXJhIGxhcyBlc3BlY2lhbGVzIChzZWxlY3QvZXhwYW5kL2FjdGlvbnMpXG4gIHByaXZhdGUgYXBwbHlDb2x1bW5zQW5kQ29uZmlnKG5ld0NvbHVtbnM6IFRhYmxlQ29sdW1bXSA9IFtdKSB7XG4gICAgaWYgKCFuZXdDb2x1bW5zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZGlzcGxheUNvbHVtbnMgPSBbLi4ubmV3Q29sdW1ucy5tYXAoKGMpID0+IGMuZGVmKV07XG4gICAgaWYgKHRoaXMuX3Jhd0NvbmZpZy5pc0V4cGFuZGlibGUpIGRpc3BsYXlDb2x1bW5zLnVuc2hpZnQoJ2V4cGFuZCcpO1xuICAgIGlmICh0aGlzLl9yYXdDb25maWcuaXNTZWxlY3RhYmxlKSBkaXNwbGF5Q29sdW1ucy51bnNoaWZ0KCdzZWxlY3QnKTtcbiAgICBpZiAodGhpcy5fcmF3Q29uZmlnLnNob3dBY3Rpb25zKSBkaXNwbGF5Q29sdW1ucy5wdXNoKCdhY3Rpb25zJyk7XG5cbiAgICB0aGlzLnRhYmxlQ29sdW1ucyA9IG5ld0NvbHVtbnM7XG4gICAgdGhpcy50YWJsZUNvbmZpZyA9IHRoaXMuX3Jhd0NvbmZpZztcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIPCfjpvvuI8gRklMVFJPUyBZIELDmlNRVUVEQVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIPCflLkgQ3JlYSBkaW7DoW1pY2FtZW50ZSBsb3MgY29udHJvbGVzIGRlbCBmb3JtdWxhcmlvIGRlIGZpbHRyb3NcbiAgc2V0dXBEeW5hbWljRmlsdGVycygpIHtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmZpbHRlckZvcm0uY29udHJvbHMpLmZvckVhY2goKGspID0+XG4gICAgICB0aGlzLmZpbHRlckZvcm0ucmVtb3ZlQ29udHJvbChrKSxcbiAgICApO1xuXG4gICAgdGhpcy5fcmF3Q29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGNvbHVtbi5kYXRhS2V5O1xuICAgICAgc3dpdGNoIChjb2x1bW4udHlwZSkge1xuICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybS5hZGRDb250cm9sKGAke2tleX1fbWluYCwgbmV3IEZvcm1Db250cm9sKCkpO1xuICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybS5hZGRDb250cm9sKGAke2tleX1fbWF4YCwgbmV3IEZvcm1Db250cm9sKCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0uYWRkQ29udHJvbChgJHtrZXl9X2Zyb21gLCBuZXcgRm9ybUNvbnRyb2woKSk7XG4gICAgICAgICAgdGhpcy5maWx0ZXJGb3JtLmFkZENvbnRyb2woYCR7a2V5fV90b2AsIG5ldyBGb3JtQ29udHJvbCgpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0uYWRkQ29udHJvbChgJHtrZXl9X2NvbnRhaW5zYCwgbmV3IEZvcm1Db250cm9sKCcnKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZpbHRlckZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZXJ2ZXJTaWRlKCkpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJGb3JtLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIPCflLkgQXBsaWNhIGxvcyBmaWx0cm9zLCBiw7pzcXVlZGEgeSBwYWdpbmFjacOzbiBzZWfDum4gZWwgbW9kbyBhY3Rpdm9cbiAgYXBwbHlGaWx0ZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZmlsdGVyRm9ybS52YWx1ZSBhcyBhbnk7XG5cbiAgICBpZiAodGhpcy5zZXJ2ZXJTaWRlKCkpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NoYW5nZS5lbWl0KHZhbHVlcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9yYXdDb2x1bW5zIHx8IHRoaXMuX3Jhd0NvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLm9yaWdpbmFsRGF0YV07XG4gICAgICB0aGlzLmFwcGx5Q2xpZW50UGFnaW5hdGlvbigpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VhcmNoVGV4dCA9ICh0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUgfHwgJycpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIGxldCBmaWx0ZXJlZCA9IFsuLi50aGlzLm9yaWdpbmFsRGF0YV07XG5cbiAgICAvLyDwn5S5IEFwbGljYSBmaWx0cm9zIG51bcOpcmljb3MsIGRlIGZlY2hhIHkgdGV4dG9cbiAgICB0aGlzLl9yYXdDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gY29sdW1uLmRhdGFLZXk7XG4gICAgICBjb25zdCB0eXBlID0gY29sdW1uLnR5cGUgfHwgJ3N0cmluZyc7XG5cbiAgICAgIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCByYXdNaW4gPSB2YWx1ZXNbYCR7a2V5fV9taW5gXTtcbiAgICAgICAgY29uc3QgcmF3TWF4ID0gdmFsdWVzW2Ake2tleX1fbWF4YF07XG4gICAgICAgIGNvbnN0IG1pbiA9XG4gICAgICAgICAgcmF3TWluID09PSBudWxsIHx8IHJhd01pbiA9PT0gdW5kZWZpbmVkIHx8IHJhd01pbiA9PT0gJydcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiBOdW1iZXIocmF3TWluKTtcbiAgICAgICAgY29uc3QgbWF4ID1cbiAgICAgICAgICByYXdNYXggPT09IG51bGwgfHwgcmF3TWF4ID09PSB1bmRlZmluZWQgfHwgcmF3TWF4ID09PSAnJ1xuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IE51bWJlcihyYXdNYXgpO1xuICAgICAgICBmaWx0ZXJlZCA9IGZpbHRlcmVkLmZpbHRlcigocm93KSA9PiB7XG4gICAgICAgICAgY29uc3QgdiA9IE51bWJlcihyb3dba2V5XSk7XG4gICAgICAgICAgaWYgKE51bWJlci5pc05hTih2KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIHJldHVybiAobWluID09PSBudWxsIHx8IHYgPj0gbWluKSAmJiAobWF4ID09PSBudWxsIHx8IHYgPD0gbWF4KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgY29uc3QgZGF0ZUZvcm1hdCA9IGNvbHVtbi5kYXRlRm9ybWF0IHx8ICd5eXl5LU1NLWRkJztcbiAgICAgICAgY29uc3QgcmF3RnJvbSA9IHZhbHVlc1tgJHtrZXl9X2Zyb21gXTtcbiAgICAgICAgY29uc3QgcmF3VG8gPSB2YWx1ZXNbYCR7a2V5fV90b2BdO1xuICAgICAgICBjb25zdCBmcm9tID0gcmF3RnJvbVxuICAgICAgICAgID8gRGF0ZVRpbWUuZnJvbUZvcm1hdChTdHJpbmcocmF3RnJvbSksIGRhdGVGb3JtYXQpXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgICBjb25zdCB0byA9IHJhd1RvXG4gICAgICAgICAgPyBEYXRlVGltZS5mcm9tRm9ybWF0KFN0cmluZyhyYXdUbyksIGRhdGVGb3JtYXQpXG4gICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIGZpbHRlcmVkID0gZmlsdGVyZWQuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgICAgICBjb25zdCByYXcgPSByb3dba2V5XTtcbiAgICAgICAgICBpZiAoIXJhdykgcmV0dXJuIHRydWU7XG4gICAgICAgICAgY29uc3QgZGF0ZVZhbCA9IERhdGVUaW1lLmZyb21Gb3JtYXQoU3RyaW5nKHJhdyksIGRhdGVGb3JtYXQpO1xuICAgICAgICAgIGlmICghZGF0ZVZhbC5pc1ZhbGlkKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICBjb25zdCBndGUgPSAhZnJvbSB8fCAoZnJvbS5pc1ZhbGlkICYmIGRhdGVWYWwgPj0gZnJvbSk7XG4gICAgICAgICAgY29uc3QgbHRlID0gIXRvIHx8ICh0by5pc1ZhbGlkICYmIGRhdGVWYWwgPD0gdG8pO1xuICAgICAgICAgIHJldHVybiBndGUgJiYgbHRlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5zID0gKHZhbHVlc1tgJHtrZXl9X2NvbnRhaW5zYF0gfHwgJycpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgICAgICBpZiAoY29udGFpbnMpIHtcbiAgICAgICAgICBmaWx0ZXJlZCA9IGZpbHRlcmVkLmZpbHRlcigocm93KSA9PlxuICAgICAgICAgICAgKHJvd1trZXldID8/ICcnKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoY29udGFpbnMpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIPCflLkgQXBsaWNhIGLDunNxdWVkYSBnbG9iYWxcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xuICAgICAgZmlsdGVyZWQgPSBmaWx0ZXJlZC5maWx0ZXIoKHJvdykgPT5cbiAgICAgICAgdGhpcy5fcmF3Q29sdW1ucy5zb21lKChjb2wpID0+XG4gICAgICAgICAgKChyb3dbY29sLmRhdGFLZXldID8/ICcnKSArICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRleHQpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IGZpbHRlcmVkO1xuICAgIHRoaXMuYXBwbHlDbGllbnRQYWdpbmF0aW9uKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyDwn5OEIFBBR0lOQUNJw5NOIChDTElFTlRFIFkgU0VSVklET1IpXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8g8J+UuSBEZXRlcm1pbmEgZWwgdGFtYcOxbyBhY3R1YWwgZGUgcMOhZ2luYVxuICBnZXQgcmVzb2x2ZWRQYWdlU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhZ2VTaXplKCkgPz8gMTA7XG4gIH1cblxuICAvLyDwn5S5IEFwbGljYSBsYSBwYWdpbmFjacOzbiBkZWwgbGFkbyBkZWwgY2xpZW50ZVxuICBwcml2YXRlIGFwcGx5Q2xpZW50UGFnaW5hdGlvbigpIHtcbiAgICBpZiAodGhpcy5zZXJ2ZXJTaWRlKCkgfHwgIXRoaXMudGFibGVDb25maWc/LmlzUGFnaW5hYmxlKSB7XG4gICAgICB0aGlzLnBhZ2VTbGljZSA9IFsuLi50aGlzLmZpbHRlcmVkRGF0YV07XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5jdXJyZW50UGFnZSgpICogdGhpcy5yZXNvbHZlZFBhZ2VTaXplO1xuICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy5yZXNvbHZlZFBhZ2VTaXplO1xuICAgIHRoaXMucGFnZVNsaWNlID0gdGhpcy5maWx0ZXJlZERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICAvLyDwn5S5IEV2ZW50byBkZSBjYW1iaW8gZGUgcMOhZ2luYSAoY2xpZW50L3NlcnZlcilcbiAgb25QYWdlRXZlbnQocGFnZUluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChwYWdlSW5kZXgpO1xuICAgIGlmICh0aGlzLnNlcnZlclNpZGUoKSkge1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoe1xuICAgICAgICBwYWdlSW5kZXg6IHBhZ2VJbmRleCArIDEsXG4gICAgICAgIHBhZ2VTaXplOiB0aGlzLnJlc29sdmVkUGFnZVNpemUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hcHBseUNsaWVudFBhZ2luYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICAvLyDwn5S5IEhlbHBlcnMgZGUgY29udHJvbCBkZSBww6FnaW5hXG4gIGlzRmlyc3RQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlKCkgPD0gMDtcbiAgfVxuICBpc0xhc3RQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlKCkgPj0gdGhpcy5sYXN0UGFnZSgpO1xuICB9XG4gIGlzU2luZ2xlUGFnZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCB0b3RhbEl0ZW1zID0gdGhpcy5zZXJ2ZXJTaWRlKClcbiAgICAgID8gdGhpcy50b3RhbEl0ZW1zKCkgPz8gMFxuICAgICAgOiB0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGg7XG4gICAgcmV0dXJuIHRvdGFsSXRlbXMgPD0gdGhpcy5yZXNvbHZlZFBhZ2VTaXplO1xuICB9XG5cbiAgLy8g8J+UuSBDYWxjdWxhIGxhIMO6bHRpbWEgcMOhZ2luYSBkaXNwb25pYmxlXG4gIGxhc3RQYWdlKCk6IG51bWJlciB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnNlcnZlclNpZGUoKVxuICAgICAgPyB0aGlzLnRvdGFsSXRlbXMoKSA/PyAwXG4gICAgICA6IHRoaXMuZmlsdGVyZWREYXRhLmxlbmd0aDtcbiAgICBjb25zdCBzaXplID0gdGhpcy5yZXNvbHZlZFBhZ2VTaXplO1xuICAgIGNvbnN0IHJlc3VsdCA9IHNpemUgPT09IDAgPyAwIDogTWF0aC5jZWlsKHRvdGFsIC8gc2l6ZSkgLSAxO1xuICAgIHJldHVybiBNYXRoLm1heCgwLCByZXN1bHQpO1xuICB9XG5cbiAgLy8g8J+UuSBOYXZlZ2FjacOzbiBlbnRyZSBww6FnaW5hc1xuICBnb1RvRmlyc3RQYWdlKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlKCkgPiAwKSB0aGlzLm9uUGFnZUV2ZW50KDApO1xuICB9XG4gIGdvVG9QcmV2aW91c1BhZ2UoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UoKSA+IDApIHRoaXMub25QYWdlRXZlbnQodGhpcy5jdXJyZW50UGFnZSgpIC0gMSk7XG4gIH1cbiAgZ29Ub05leHRQYWdlKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlKCkgPCB0aGlzLmxhc3RQYWdlKCkpXG4gICAgICB0aGlzLm9uUGFnZUV2ZW50KHRoaXMuY3VycmVudFBhZ2UoKSArIDEpO1xuICB9XG4gIGdvVG9MYXN0UGFnZSgpIHtcbiAgICB0aGlzLm9uUGFnZUV2ZW50KHRoaXMubGFzdFBhZ2UoKSk7XG4gIH1cblxuICAvLyDwn5S5IFRleHRvIGRlc2NyaXB0aXZvIGRlbCByYW5nbyBwYWdpbmFkbyAoZWouIFwiMSAtIDUgZGUgMjBcIilcbiAgZ2V0UGFnaW5hdGlvblRleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMuc2VydmVyU2lkZSgpXG4gICAgICA/IHRoaXMudG90YWxJdGVtcz8uKCkgPz8gMFxuICAgICAgOiB0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGg7XG4gICAgY29uc3QgcGFnZUluZGV4ID0gdGhpcy5jdXJyZW50UGFnZT8uKCkgPz8gMDtcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMucmVzb2x2ZWRQYWdlU2l6ZTtcbiAgICBpZiAodG90YWwgPT09IDAgfHwgcGFnZVNpemUgPT09IDApIHJldHVybiBgMCBkZSAke3RvdGFsfWA7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IHBhZ2VJbmRleCAqIHBhZ2VTaXplICsgMTtcbiAgICBjb25zdCBlbmRJbmRleCA9IE1hdGgubWluKChwYWdlSW5kZXggKyAxKSAqIHBhZ2VTaXplLCB0b3RhbCk7XG4gICAgcmV0dXJuIGAke3N0YXJ0SW5kZXh9IC0gJHtlbmRJbmRleH0gZGUgJHt0b3RhbH1gO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8g8J+Wse+4jyBJTlRFUkFDQ0nDk04gREUgRklMQVMgWSBTRUxFQ0NJw5NOXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8g8J+UuSBFbWl0ZSBlbCBldmVudG8gZGUgY2xpY2sgZW4gZmlsYVxuICBvblNlbGVjdFJvdyhyb3c6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY2xpY2tlZFJvdy5lbWl0KHJvdyk7XG4gIH1cblxuICAvLyDwn5S5IEVtaXRlIGVsIGV2ZW50byBjdWFuZG8gY2FtYmlhIGxhIHNlbGVjY2nDs25cbiAgb25TZWxlY3QoKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xuXG4gICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gIH1cblxuICAvLyDwn5S5IENvbXBydWViYSBzaSB0b2RhcyBsYXMgZmlsYXMgdmlzaWJsZXMgZXN0w6FuIHNlbGVjY2lvbmFkYXNcbiAgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5wYWdlU2xpY2UubGVuZ3RoO1xuICAgIHJldHVybiBudW1Sb3dzID4gMCAmJiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcbiAgfVxuXG4gIC8vIPCflLkgQWx0ZXJuYSBsYSBzZWxlY2Npw7NuIGRlIHRvZGFzIGxhcyBmaWxhcyB2aXNpYmxlc1xuICB0b2dnbGVBbGxSb3dzKCkge1xuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgIHRoaXMub25TZWxlY3QoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KC4uLnRoaXMucGFnZVNsaWNlKTtcbiAgICB0aGlzLm9uU2VsZWN0KCk7XG4gIH1cblxuICAvLyDwn5S5IEV0aXF1ZXRhIGFjY2VzaWJsZSBkZWwgY2hlY2tib3ggKHVzYWRhIHBvciBBUklBKVxuICBjaGVja2JveExhYmVsKHJvdz86IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCFyb3cpIHJldHVybiBgJHt0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gYWxsYDtcbiAgICBjb25zdCBpZHggPSB0aGlzLnBhZ2VTbGljZS5pbmRleE9mKHJvdyk7XG4gICAgcmV0dXJuIGAke3RoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gcm93ICR7aWR4ICsgMX1gO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8g8J+OqCBVVElMSURBREVTIERFIFJFTkRFUklaQURPIFkgQ0xBU0VTXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgaXNFdmVuKHJvd0luZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93SW5kZXggJSAyID09PSAwO1xuICB9XG4gIGlzT2RkKHJvd0luZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNFdmVuKHJvd0luZGV4KTtcbiAgfVxuICBpc1RlbXBsYXRlUmVmKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIC8vIPCflLkgRGVmaW5lIGNsYXNlcyBkaW7DoW1pY2FzIHBhcmEgY2VsZGFzIGRlIGRhdG9zXG4gIGdldENlbGxDbGFzc2VzKHJvdzogYW55LCBjb2x1bW5LZXk6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IGFueSB7XG4gICAgY29uc3Qgc2VtYW50aWNUeXBlID0gcm93W2NvbHVtbktleSArICdUeXBlJ107XG4gICAgcmV0dXJuIHtcbiAgICAgICdibWJfdGFibGVfbGl0ZS1zdGlja3knOiBpbmRleCA9PT0gMCxcbiAgICAgIHRydW5jYXRlZDogdGhpcy50cnVuY2F0ZSgpLFxuICAgICAgWydibWJfdGFibGVfbGl0ZS0nICsgc2VtYW50aWNUeXBlXTogISFzZW1hbnRpY1R5cGUsXG4gICAgfTtcbiAgfVxuXG4gIC8vIPCflLkgRGVmaW5lIGNsYXNlcyBkaW7DoW1pY2FzIHBhcmEgZW5jYWJlemFkb3NcbiAgZ2V0SGVhZGVyQ2VsbENsYXNzZXMoaTogbnVtYmVyKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2JtYl90YWJsZV9saXRlLXN0aWNreSc6IGkgPT09IDAsXG4gICAgICB0cnVuY2F0ZWQ6IHRoaXMudHJ1bmNhdGUoKSxcbiAgICB9O1xuICB9XG5cbiAgLy8g8J+UuSBEZXRlcm1pbmEgY2xhc2VzIHByaW5jaXBhbGVzIGRlbCBjb250ZW5lZG9yIHNlZ8O6biBwb3NpY2nDs24gZGUgZmlsdHJvc1xuICBnZXRUYWJsZUNsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IFsnYm1iX3RhYmxlX2xpdGUnXTtcbiAgICBzd2l0Y2ggKHRoaXMuZmlsdGVyc1Bvc2l0aW9uKCkpIHtcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYl90YWJsZV9saXRlLWZpbHRlcnMtcmlnaHQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBjbGFzc0xpc3QucHVzaCgnYm1iX3RhYmxlX2xpdGUtZmlsdGVycy1ib3R0b20nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYl90YWJsZV9saXRlLWZpbHRlcnMtbGVmdCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNsYXNzTGlzdC5wdXNoKCdibWJfdGFibGVfbGl0ZS1maWx0ZXJzLXRvcCcpO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NMaXN0O1xuICB9XG5cbiAgLy8g8J+UuSBPYnRpZW5lIHVuIGNvbnRyb2wgZGVsIGZvcm11bGFyaW8gZGUgZmlsdHJvc1xuICBnZXRGb3JtQ29udHJvbChuYW1lOiBzdHJpbmcpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyRm9ybS5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICAvLyDwn5S5IEFsdGVybmEgbGEgdmlzaWJpbGlkYWQgZGVsIHBhbmVsIGRlIGZpbHRyb3NcbiAgdG9nZ2xlRmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcnNWaXNpYmxlLnNldCghdGhpcy5maWx0ZXJzVmlzaWJsZSgpKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIPCfp64gVkFSSUFCTEVTIENTUyBZIEJJTkRJTkdTIERJTsOBTUlDT1NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tY29sLWNvdW50JylcbiAgZ2V0IGNvbENvdW50KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlQ29sdW1ucy5sZW5ndGg7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tY29sLWNoZWNrYm94JylcbiAgZ2V0IGNvbENoZWNrYm94KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlQ29uZmlnPy5pc1NlbGVjdGFibGUgPyAnNjJweCcgOiAnMHB4JztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1jb2wtZXhwYW5kJylcbiAgZ2V0IGNvbEV4cGFuZCgpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbmZpZz8uaXNFeHBhbmRpYmxlID8gJzQwcHgnIDogJzBweCc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tY29sLWFjdGlvbnMnKVxuICBnZXQgY29sQWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbmZpZz8uc2hvd0FjdGlvbnMgPyAnODBweCcgOiAnMHB4JztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1oYXMtY2hlY2tib3gnKVxuICBnZXQgaGFzQ2hlY2tib3goKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVDb25maWc/LmlzU2VsZWN0YWJsZSA/IDEgOiAwO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLWhhcy1leHBhbmQnKVxuICBnZXQgaGFzRXhwYW5kKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlQ29uZmlnPy5pc0V4cGFuZGlibGUgPyAxIDogMDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1oYXMtYWN0aW9ucycpXG4gIGdldCBoYXNBY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlQ29uZmlnPy5zaG93QWN0aW9ucyA/IDEgOiAwO1xuICB9XG5cbiAgLy8g8J+UuSBFeHBvbmUgbGFzIHZhcmlhYmxlcyBDU1MgdXNhZGFzIHBhcmEgZWwgZ3JpZCBkaW7DoW1pY29cbiAgZ2V0IGNzc1ZhcnMoKSB7XG4gICAgY29uc3QgaGFzU2VsZWN0ID0gdGhpcy50YWJsZUNvbmZpZz8uaXNTZWxlY3RhYmxlO1xuICAgIGNvbnN0IGhhc0V4cGFuZCA9IHRoaXMudGFibGVDb25maWc/LmlzRXhwYW5kaWJsZTtcbiAgICBjb25zdCBoYXNBY3Rpb25zID0gdGhpcy50YWJsZUNvbmZpZz8uc2hvd0FjdGlvbnM7XG5cbiAgICBjb25zdCBjb2x1bW5UZW1wbGF0ZSA9IGByZXBlYXQoJHt0aGlzLnRhYmxlQ29sdW1ucy5sZW5ndGh9LCBtaW5tYXgoMTIwcHgsIDFmcikpYDtcblxuICAgIGNvbnN0IHBhcnRzID0gW1xuICAgICAgaGFzU2VsZWN0ID8gJ3ZhcigtLWNvbC1jaGVja2JveCwgNjJweCknIDogJycsXG4gICAgICBoYXNFeHBhbmQgPyAndmFyKC0tY29sLWV4cGFuZCwgNDBweCknIDogJycsXG4gICAgICBjb2x1bW5UZW1wbGF0ZSxcbiAgICAgIGhhc0FjdGlvbnMgPyAndmFyKC0tY29sLWFjdGlvbnMsIDgwcHgpJyA6ICcnLFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICctLWNvbC1jb3VudCc6IHRoaXMudGFibGVDb2x1bW5zLmxlbmd0aCxcbiAgICAgICctLWNvbC1jaGVja2JveCc6IGhhc1NlbGVjdCA/ICc2MnB4JyA6ICcwcHgnLFxuICAgICAgJy0tY29sLWV4cGFuZCc6IGhhc0V4cGFuZCA/ICc0MHB4JyA6ICcwcHgnLFxuICAgICAgJy0tY29sLWFjdGlvbnMnOiBoYXNBY3Rpb25zID8gJzgwcHgnIDogJzBweCcsXG4gICAgICAnLS1ncmlkLXRlbXBsYXRlJzogcGFydHMuam9pbignICcpLFxuICAgIH07XG4gIH1cblxuICB0cmFja0J5Q29sdW1uKGNvbHVtbjogYW55KTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gY29sdW1uLmRlZiB8fCBjb2x1bW4ubGFiZWw7XG4gIH1cblxuICB0cmFja0J5Um93KHJvdzogYW55KTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gcm93LmlkIHx8IHJvdy5zb2NpZWRhZDtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJnZXRUYWJsZUNsYXNzZXMoKVwiIFtuZ1N0eWxlXT1cImNzc1ZhcnNcIj5cbiAgQGlmIChzaG93U2VhcmNoKCkgfHwgZmlsdGVyc1Zpc2libGUoKSkge1xuICAgIDxoZWFkZXIgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1oZWFkZXJcIj5cbiAgICAgIEBpZiAoc2hvd1NlYXJjaCgpKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtc2VhcmNoXCI+XG4gICAgICAgICAgPGJtYi1pbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1pbnB1dFwiXG4gICAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidCdXNjYXInXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaWNvbl09XCInc2VhcmNoJ1wiXG4gICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbm9ybWFsJ1wiXG4gICAgICAgICAgICBbY29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgICA+PC9ibWItaW5wdXQ+XG4gICAgICAgICAgPGJtYi1hY3Rpb24taWNvblxuICAgICAgICAgICAgW2lkRWxlbWVudF09XCInJ1wiXG4gICAgICAgICAgICBbaWNvbl09XCInZmlsdGVyX2xpc3QnXCJcbiAgICAgICAgICAgIFtpY29uU2l6ZV09XCIyNFwiXG4gICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwidG9nZ2xlRmlsdGVycygpXCJcbiAgICAgICAgICA+PC9ibWItYWN0aW9uLWljb24+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICAgIDxkaXYgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1maWx0ZXJcIj5cbiAgICAgICAgQGlmIChmaWx0ZXJzVmlzaWJsZSgpKSB7XG4gICAgICAgICAgQGZvciAoY29sdW1uIG9mIHBhcnNlZEZpbHRlcnNDb2x1bW5zKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1maWx0ZXItaXRlbVwiPlxuICAgICAgICAgICAgICBAc3dpdGNoIChjb2x1bW4udHlwZSkge1xuICAgICAgICAgICAgICAgIEBjYXNlICgnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJtYl90YWJsZV9saXRlLWZpbHRlci1pdGVtLW51bWJlclwiPlxuICAgICAgICAgICAgICAgICAgICA8Ym1iLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbCArICcgbcOtbmltbydcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ03DrW4nXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbm9ybWFsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Rm9ybUNvbnRyb2woY29sdW1uLmRhdGFLZXkgKyAnX21pbicpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGJtYi1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWwgKyAnIG3DoXhpbW8nXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidNw6F4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiJ25vcm1hbCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldEZvcm1Db250cm9sKGNvbHVtbi5kYXRhS2V5ICsgJ19tYXgnKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGNhc2UgKCdkYXRlJykge1xuICAgICAgICAgICAgICAgICAgPGJtYi1kYXRlLXJhbmdlXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJTdGFydERhdGVdPVwiJ0Rlc2RlJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlckVuZERhdGVdPVwiJ0hhc3RhJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cIidjYWxlbmRhcl9tb250aCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbm9ybWFsJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cIidkZC9NTS95eXl5J1wiXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sU3RhcnRdPVwiZ2V0Rm9ybUNvbnRyb2woY29sdW1uLmRhdGFLZXkgKyAnX2Zyb20nKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sRW5kXT1cImdldEZvcm1Db250cm9sKGNvbHVtbi5kYXRhS2V5ICsgJ190bycpXCJcbiAgICAgICAgICAgICAgICAgICAgKHN0YXJ0RGF0ZUNoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICBnZXRGb3JtQ29udHJvbChjb2x1bW4uZGF0YUtleSArICdfZnJvbScpLnNldFZhbHVlKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgKGVuZERhdGVDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0Rm9ybUNvbnRyb2woY29sdW1uLmRhdGFLZXkgKyAnX3RvJykuc2V0VmFsdWUoJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgPGJtYi1pbnB1dFxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidGaWx0cmFyJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldEZvcm1Db250cm9sKGNvbHVtbi5kYXRhS2V5ICsgJ19jb250YWlucycpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1jb250YWluZXJcIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImJtYl90YWJsZV9saXRlLWNvbnRhaW5lci10YWJsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImJtYl90YWJsZV9saXRlLXJvdyBibWJfdGFibGVfbGl0ZS1yb3ctLWhlYWRlclwiPlxuICAgICAgICBAaWYgKHRhYmxlQ29uZmlnPy5pc1NlbGVjdGFibGUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtdGggYm1iX3RhYmxlX2xpdGUtY2hlY2tib3hcIj5cbiAgICAgICAgICAgIDxibWItY2hlY2tib3hcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyB0b2dnbGVBbGxSb3dzKCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiY2hlY2tib3hMYWJlbCgpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHRhYmxlQ29uZmlnPy5pc0V4cGFuZGlibGUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtdGggYm1iX3RhYmxlX2xpdGUtZXhwYW5kXCI+Jm5ic3A7PC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAZm9yIChcbiAgICAgICAgICBjb2x1bW4gb2YgdGFibGVDb2x1bW5zO1xuICAgICAgICAgIHRyYWNrIHRyYWNrQnlDb2x1bW4oY29sdW1uKTtcbiAgICAgICAgICBsZXQgaSA9ICRpbmRleFxuICAgICAgICApIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImJtYl90YWJsZV9saXRlLXRoXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEhlYWRlckNlbGxDbGFzc2VzKGkpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgbGFuZygpID09PSAnZXMnID8gY29sdW1uLmxhYmVsIDogY29sdW1uLmxhYmVsRW4gfHwgY29sdW1uLmxhYmVsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaWNvblwiPlxuICAgICAgICAgICAgICA8Ym1iLWljb24gW2ljb25dPVwiY29sdW1uLmljb25cIj48L2JtYi1pY29uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIEBpZiAoY29sdW1uLmh0bWxMYWJlbCkge1xuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uaHRtbExhYmVsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjb2x1bW46IGNvbHVtbiwgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtdGgtdGV4dFwiPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICBsYW5nKCkgPT09ICdlcydcbiAgICAgICAgICAgICAgICAgICAgPyBjb2x1bW4ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgOiBjb2x1bW4ubGFiZWxFbiB8fCBjb2x1bW4ubGFiZWxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHRhYmxlQ29uZmlnPy5zaG93QWN0aW9ucykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS10aCBibWJfdGFibGVfbGl0ZS1hY3Rpb25zXCI+PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAZm9yIChyb3cgb2YgcGFnZVNsaWNlOyB0cmFjayB0cmFja0J5Um93KHJvdyk7IGxldCBySW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtcm93XCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RSb3cocm93KVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2JtYl90YWJsZV9saXRlLWV2ZW4nOiBpc0V2ZW4ockluZGV4KSxcbiAgICAgICAgICAgICdibWJfdGFibGVfbGl0ZS1vZGQnOiBpc09kZChySW5kZXgpLFxuICAgICAgICAgICAgJ2JtYl90YWJsZV9saXRlLWV4cGFuZGlibGUnOiBleHBhbmRlZEVsZW1lbnQgPT09IHJvd1xuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgQGlmICh0YWJsZUNvbmZpZz8uaXNTZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtdGQgYm1iX3RhYmxlX2xpdGUtY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgPGJtYi1jaGVja2JveFxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uLnRvZ2dsZShyb3cpIDogbnVsbDsgb25TZWxlY3QoKVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJjaGVja2JveExhYmVsKHJvdylcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgb25rZXlwcmVzcz1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHRhYmxlQ29uZmlnPy5pc0V4cGFuZGlibGUpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS10ZCBibWJfdGFibGVfbGl0ZS1leHBhbmRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYm1iX2J0bi1pY29uXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiZXhwYW5kIHJvd1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgZXhwYW5kZWRFbGVtZW50ID0gZXhwYW5kZWRFbGVtZW50ID09PSByb3cgPyBudWxsIDogcm93O1xuICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxibWItaWNvblxuICAgICAgICAgICAgICAgICAgW2ljb25dPVwiXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkRWxlbWVudCA9PT0gcm93ID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZSdcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvYm1iLWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICBjb2x1bW4gb2YgdGFibGVDb2x1bW5zO1xuICAgICAgICAgICAgdHJhY2sgdHJhY2tCeUNvbHVtbihjb2x1bW4pO1xuICAgICAgICAgICAgbGV0IGkgPSAkaW5kZXhcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS10ZFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldENlbGxDbGFzc2VzKHJvdywgY29sdW1uLmRhdGFLZXksIGkpXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cInJvd1tjb2x1bW4uZGF0YUtleV0/LnByb3BlcnR5TmFtZSB8fCByb3dbY29sdW1uLmRhdGFLZXldXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmIChpc1RlbXBsYXRlUmVmKHJvd1tjb2x1bW4uZGF0YUtleSArICdUZW1wbGF0ZSddKSkge1xuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93W2NvbHVtbi5kYXRhS2V5ICsgJ1RlbXBsYXRlJ11cIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3cgfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAge3sgcm93W2NvbHVtbi5kYXRhS2V5XT8ucHJvcGVydHlOYW1lIHx8IHJvd1tjb2x1bW4uZGF0YUtleV0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAodGFibGVDb25maWc/LnNob3dBY3Rpb25zKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtdGQgYm1iX3RhYmxlX2xpdGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgIHRhYmxlQ29sdW1ucy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICB0YWJsZUNvbHVtbnNbdGFibGVDb2x1bW5zLmxlbmd0aCAtIDFdLnRlbXBsYXRlQWN0aW9uc1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuICAgICAgICAgICAgICAgICAgICB0YWJsZUNvbHVtbnNbdGFibGVDb2x1bW5zLmxlbmd0aCAtIDFdLnRlbXBsYXRlQWN0aW9ucyFcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdyB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhY3Rpb25UZW1wbGF0ZSgpIVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdyB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKHRhYmxlQ29uZmlnPy5pc0V4cGFuZGlibGUpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImJtYl90YWJsZV9saXRlLXJvdyBibWJfdGFibGVfbGl0ZS1kZXRhaWxzXCJcbiAgICAgICAgICAgIFtjbGFzcy5ibWJfdGFibGVfbGl0ZS1leHBhbmRlZF09XCJleHBhbmRlZEVsZW1lbnQgPT09IHJvd1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJtYl90YWJsZV9saXRlLWRldGFpbFwiICpuZ0lmPVwiZXhwYW5kZWRFbGVtZW50ID09PSByb3dcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGV0YWlsVGVtcGxhdGUoKTsgY29udGV4dDogeyByb3c6IHJvdyB9XCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L3NlY3Rpb24+XG5cbiAgICBAaWYgKHRhYmxlQ29uZmlnPy5pc1BhZ2luYWJsZSkge1xuICAgICAgPGRpdiBjbGFzcz1cImJtYl90YWJsZV9saXRlLXBhZ2luYXRvclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImJtYl90YWJsZV9saXRlLXBhZ2luYXRvci10ZXh0XCI+XG4gICAgICAgICAge3sgZ2V0UGFnaW5hdGlvblRleHQoKSB9fVxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtcGFnaW5hdG9yLWJ0blwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlKCkgfHwgaXNTaW5nbGVQYWdlKClcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvRmlyc3RQYWdlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJtYi1pY29uXG4gICAgICAgICAgICBpY29uPVwia2V5Ym9hcmRfZG91YmxlX2Fycm93X2xlZnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1wYWdpbmF0b3ItaWNvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtcGFnaW5hdG9yLWJ0blwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlKCkgfHwgaXNTaW5nbGVQYWdlKClcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvUHJldmlvdXNQYWdlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJtYi1pY29uXG4gICAgICAgICAgICBpY29uPVwia2V5Ym9hcmRfYXJyb3dfbGVmdFwiXG4gICAgICAgICAgICBjbGFzcz1cImJtYl90YWJsZV9saXRlLXBhZ2luYXRvci1pY29uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1wYWdpbmF0b3ItYnRuXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMYXN0UGFnZSgpIHx8IGlzU2luZ2xlUGFnZSgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJtYi1pY29uXG4gICAgICAgICAgICBpY29uPVwia2V5Ym9hcmRfYXJyb3dfcmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJibWJfdGFibGVfbGl0ZS1wYWdpbmF0b3ItaWNvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlX2xpdGUtcGFnaW5hdG9yLWJ0blwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzTGFzdFBhZ2UoKSB8fCBpc1NpbmdsZVBhZ2UoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImdvVG9MYXN0UGFnZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxibWItaWNvblxuICAgICAgICAgICAgaWNvbj1cImtleWJvYXJkX2RvdWJsZV9hcnJvd19yaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cImJtYl90YWJsZV9saXRlLXBhZ2luYXRvci1pY29uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|