@sbb-esta/lyne-elements 4.0.0-next.3 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion.component.d.ts.map +1 -1
- package/accordion/accordion.component.js +29 -27
- package/action-group/action-group.component.js +1 -1
- package/alert/alert/alert.component.js +7 -7
- package/alert/alert-group/alert-group.component.d.ts +1 -1
- package/alert/alert-group/alert-group.component.d.ts.map +1 -1
- package/alert/alert-group/alert-group.component.js +23 -23
- package/autocomplete/autocomplete-base-element.d.ts +1 -0
- package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/autocomplete/autocomplete-base-element.js +58 -56
- package/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/autocomplete/autocomplete.component.js +12 -12
- package/breadcrumb/breadcrumb/breadcrumb.component.js +5 -5
- package/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts +2 -3
- package/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
- package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +53 -47
- package/button/common/button-common.d.ts.map +1 -1
- package/button/common/button-common.js +40 -42
- package/button/common.js +1 -1
- package/button.js +1 -1
- package/calendar/calendar.component.d.ts +4 -4
- package/calendar/calendar.component.d.ts.map +1 -1
- package/calendar/calendar.component.js +183 -183
- package/card/card/card.component.d.ts +3 -6
- package/card/card/card.component.d.ts.map +1 -1
- package/card/card/card.component.js +32 -47
- package/card/card-badge/card-badge.component.d.ts +0 -2
- package/card/card-badge/card-badge.component.d.ts.map +1 -1
- package/card/card-badge/card-badge.component.js +29 -36
- package/card/common/card-action-common.d.ts.map +1 -1
- package/card/common/card-action-common.js +36 -24
- package/checkbox/checkbox/checkbox.component.d.ts +1 -1
- package/checkbox/checkbox/checkbox.component.js +1 -1
- package/checkbox/checkbox-group/checkbox-group.component.d.ts +1 -2
- package/checkbox/checkbox-group/checkbox-group.component.d.ts.map +1 -1
- package/checkbox/checkbox-group/checkbox-group.component.js +39 -38
- package/checkbox/checkbox-panel/checkbox-panel.component.d.ts +1 -14
- package/checkbox/checkbox-panel/checkbox-panel.component.d.ts.map +1 -1
- package/checkbox/checkbox-panel/checkbox-panel.component.js +35 -55
- package/checkbox/common.js +1 -1
- package/checkbox-common-t04WeA36.js +5 -0
- package/checkbox.js +1 -1
- package/chip/chip-group/chip-group.component.d.ts +1 -0
- package/chip/chip-group/chip-group.component.d.ts.map +1 -1
- package/chip/chip-group/chip-group.component.js +23 -23
- package/clock/clock.component.d.ts +3 -1
- package/clock/clock.component.d.ts.map +1 -1
- package/clock/clock.component.js +40 -39
- package/container/container/container.component.d.ts.map +1 -1
- package/container/container/container.component.js +27 -24
- package/container/sticky-bar/sticky-bar.component.d.ts +3 -1
- package/container/sticky-bar/sticky-bar.component.d.ts.map +1 -1
- package/container/sticky-bar/sticky-bar.component.js +41 -41
- package/core/a11y/focus-visible-within-controller.d.ts +2 -1
- package/core/a11y/focus-visible-within-controller.d.ts.map +1 -1
- package/core/a11y/focus-visible-within-controller.js +8 -7
- package/core/base-elements/action-base-element.d.ts +1 -0
- package/core/base-elements/action-base-element.d.ts.map +1 -1
- package/core/base-elements/action-base-element.js +37 -45
- package/core/base-elements/button-base-element.d.ts +1 -1
- package/core/base-elements/button-base-element.d.ts.map +1 -1
- package/core/base-elements/button-base-element.js +55 -56
- package/core/base-elements/link-base-element.d.ts.map +1 -1
- package/core/base-elements/link-base-element.js +62 -64
- package/core/base-elements/open-close-base-element.d.ts +2 -1
- package/core/base-elements/open-close-base-element.d.ts.map +1 -1
- package/core/base-elements/open-close-base-element.js +8 -8
- package/core/controllers/media-matchers-controller.d.ts +4 -1
- package/core/controllers/media-matchers-controller.d.ts.map +1 -1
- package/core/controllers/media-matchers-controller.js +30 -26
- package/core/controllers/overlay-position-controller.d.ts +3 -2
- package/core/controllers/overlay-position-controller.d.ts.map +1 -1
- package/core/controllers/overlay-position-controller.js +35 -35
- package/core/controllers/property-watcher-controller.d.ts +16 -0
- package/core/controllers/property-watcher-controller.d.ts.map +1 -0
- package/core/controllers/property-watcher-controller.js +58 -0
- package/core/controllers.d.ts +1 -1
- package/core/controllers.js +21 -18
- package/core/datetime/date-adapter.d.ts +1 -3
- package/core/datetime/date-adapter.d.ts.map +1 -1
- package/core/dom/animation.d.ts.map +1 -1
- package/core/dom/animation.js +2 -2
- package/core/dom/set-or-remove-attribute.d.ts +0 -14
- package/core/dom/set-or-remove-attribute.d.ts.map +1 -1
- package/core/dom/set-or-remove-attribute.js +3 -11
- package/core/dom.d.ts +0 -2
- package/core/dom.d.ts.map +1 -1
- package/core/dom.js +25 -33
- package/core/i18n/i18n.d.ts +0 -2
- package/core/i18n/i18n.d.ts.map +1 -1
- package/core/i18n/i18n.js +60 -66
- package/core/i18n.js +53 -54
- package/core/interfaces/types.d.ts +0 -14
- package/core/interfaces/types.d.ts.map +1 -1
- package/core/mixins/element-internals-mixin.d.ts +14 -1
- package/core/mixins/element-internals-mixin.d.ts.map +1 -1
- package/core/mixins/element-internals-mixin.js +102 -75
- package/core/mixins/form-associated-mixin.js +1 -1
- package/core/mixins/form-associated-radio-button-mixin.js +16 -16
- package/core/mixins/panel-mixin.d.ts +10 -2
- package/core/mixins/panel-mixin.d.ts.map +1 -1
- package/core/mixins/panel-mixin.js +51 -37
- package/core/mixins/selection-panel-mixin.d.ts +5 -11
- package/core/mixins/selection-panel-mixin.d.ts.map +1 -1
- package/core/mixins/selection-panel-mixin.js +35 -83
- package/core/mixins.js +28 -27
- package/core/overlay/overlay-option-panel.d.ts +2 -1
- package/core/overlay/overlay-option-panel.d.ts.map +1 -1
- package/core/overlay/overlay-option-panel.js +9 -6
- package/core/styles/core.scss +32 -11
- package/core/styles/mixins/card.scss +71 -55
- package/core/testing/wait-for-render.d.ts +1 -1
- package/core.css +151 -26
- package/custom-elements.json +12300 -12051
- package/date-input/date-input.component.d.ts +0 -5
- package/date-input/date-input.component.d.ts.map +1 -1
- package/date-input/date-input.component.js +0 -7
- package/development/accordion/accordion.component.d.ts.map +1 -1
- package/development/accordion/accordion.component.js +5 -4
- package/development/action-group/action-group.component.js +2 -2
- package/development/alert/alert/alert.component.js +5 -5
- package/development/alert/alert-group/alert-group.component.d.ts +1 -1
- package/development/alert/alert-group/alert-group.component.d.ts.map +1 -1
- package/development/alert/alert-group/alert-group.component.js +5 -5
- package/development/autocomplete/autocomplete-base-element.d.ts +1 -0
- package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/development/autocomplete/autocomplete-base-element.js +28 -32
- package/development/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/development/autocomplete/autocomplete.component.js +2 -3
- package/development/breadcrumb/breadcrumb/breadcrumb.component.js +1 -1
- package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts +2 -3
- package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
- package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +33 -24
- package/development/button/common/button-common.d.ts.map +1 -1
- package/development/button/common/button-common.js +8 -17
- package/development/button/common.js +1 -1
- package/development/button.js +1 -1
- package/development/calendar/calendar.component.d.ts +4 -4
- package/development/calendar/calendar.component.d.ts.map +1 -1
- package/development/calendar/calendar.component.js +11 -11
- package/development/card/card/card.component.d.ts +3 -6
- package/development/card/card/card.component.d.ts.map +1 -1
- package/development/card/card/card.component.js +91 -146
- package/development/card/card-badge/card-badge.component.d.ts +0 -2
- package/development/card/card-badge/card-badge.component.d.ts.map +1 -1
- package/development/card/card-badge/card-badge.component.js +34 -71
- package/development/card/common/card-action-common.d.ts.map +1 -1
- package/development/card/common/card-action-common.js +21 -10
- package/development/checkbox/checkbox/checkbox.component.d.ts +1 -1
- package/development/checkbox/checkbox/checkbox.component.js +2 -2
- package/development/checkbox/checkbox-group/checkbox-group.component.d.ts +1 -2
- package/development/checkbox/checkbox-group/checkbox-group.component.d.ts.map +1 -1
- package/development/checkbox/checkbox-group/checkbox-group.component.js +13 -15
- package/development/checkbox/checkbox-panel/checkbox-panel.component.d.ts +1 -14
- package/development/checkbox/checkbox-panel/checkbox-panel.component.d.ts.map +1 -1
- package/development/checkbox/checkbox-panel/checkbox-panel.component.js +6 -41
- package/development/checkbox/common.js +1 -1
- package/development/{checkbox-common-CX17vF7q.js → checkbox-common-D2-QcV8n.js} +4 -1
- package/development/checkbox.js +1 -1
- package/development/chip/chip-group/chip-group.component.d.ts +1 -0
- package/development/chip/chip-group/chip-group.component.d.ts.map +1 -1
- package/development/chip/chip-group/chip-group.component.js +11 -5
- package/development/clock/clock.component.d.ts +3 -1
- package/development/clock/clock.component.d.ts.map +1 -1
- package/development/clock/clock.component.js +5 -4
- package/development/container/container/container.component.d.ts.map +1 -1
- package/development/container/container/container.component.js +4 -3
- package/development/container/sticky-bar/sticky-bar.component.d.ts +3 -1
- package/development/container/sticky-bar/sticky-bar.component.d.ts.map +1 -1
- package/development/container/sticky-bar/sticky-bar.component.js +40 -34
- package/development/core/a11y/focus-visible-within-controller.d.ts +2 -1
- package/development/core/a11y/focus-visible-within-controller.d.ts.map +1 -1
- package/development/core/a11y/focus-visible-within-controller.js +4 -3
- package/development/core/a11y/interactivity-checker.js +1 -1
- package/development/core/base-elements/action-base-element.d.ts +1 -0
- package/development/core/base-elements/action-base-element.d.ts.map +1 -1
- package/development/core/base-elements/action-base-element.js +41 -56
- package/development/core/base-elements/button-base-element.d.ts +1 -1
- package/development/core/base-elements/button-base-element.d.ts.map +1 -1
- package/development/core/base-elements/button-base-element.js +7 -7
- package/development/core/base-elements/link-base-element.d.ts.map +1 -1
- package/development/core/base-elements/link-base-element.js +6 -15
- package/development/core/base-elements/open-close-base-element.d.ts +2 -1
- package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
- package/development/core/base-elements/open-close-base-element.js +12 -6
- package/development/core/controllers/media-matchers-controller.d.ts +4 -1
- package/development/core/controllers/media-matchers-controller.d.ts.map +1 -1
- package/development/core/controllers/media-matchers-controller.js +12 -5
- package/development/core/controllers/overlay-position-controller.d.ts +3 -2
- package/development/core/controllers/overlay-position-controller.d.ts.map +1 -1
- package/development/core/controllers/overlay-position-controller.js +3 -3
- package/development/core/controllers/property-watcher-controller.d.ts +16 -0
- package/development/core/controllers/property-watcher-controller.d.ts.map +1 -0
- package/development/core/controllers/property-watcher-controller.js +101 -0
- package/development/core/controllers.d.ts +1 -1
- package/development/core/controllers.js +6 -3
- package/development/core/datetime/date-adapter.d.ts +1 -3
- package/development/core/datetime/date-adapter.d.ts.map +1 -1
- package/development/core/datetime/date-adapter.js +1 -1
- package/development/core/dom/animation.d.ts.map +1 -1
- package/development/core/dom/animation.js +2 -2
- package/development/core/dom/set-or-remove-attribute.d.ts +0 -14
- package/development/core/dom/set-or-remove-attribute.d.ts.map +1 -1
- package/development/core/dom/set-or-remove-attribute.js +1 -9
- package/development/core/dom.d.ts +0 -2
- package/development/core/dom.d.ts.map +1 -1
- package/development/core/dom.js +2 -10
- package/development/core/i18n/i18n.d.ts +0 -2
- package/development/core/i18n/i18n.d.ts.map +1 -1
- package/development/core/i18n/i18n.js +1 -8
- package/development/core/i18n.js +1 -2
- package/development/core/interfaces/types.d.ts +0 -14
- package/development/core/interfaces/types.d.ts.map +1 -1
- package/development/core/mixins/element-internals-mixin.d.ts +14 -1
- package/development/core/mixins/element-internals-mixin.d.ts.map +1 -1
- package/development/core/mixins/element-internals-mixin.js +58 -10
- package/development/core/mixins/form-associated-input-mixin.js +1 -1
- package/development/core/mixins/form-associated-mixin.js +2 -2
- package/development/core/mixins/form-associated-radio-button-mixin.js +2 -2
- package/development/core/mixins/panel-mixin.d.ts +10 -2
- package/development/core/mixins/panel-mixin.d.ts.map +1 -1
- package/development/core/mixins/panel-mixin.js +24 -6
- package/development/core/mixins/selection-panel-mixin.d.ts +5 -11
- package/development/core/mixins/selection-panel-mixin.d.ts.map +1 -1
- package/development/core/mixins/selection-panel-mixin.js +47 -111
- package/development/core/mixins.js +18 -9
- package/development/core/overlay/overlay-option-panel.d.ts +2 -1
- package/development/core/overlay/overlay-option-panel.d.ts.map +1 -1
- package/development/core/overlay/overlay-option-panel.js +10 -2
- package/development/core/overlay/position.js +1 -1
- package/development/core/testing/wait-for-render.d.ts +1 -1
- package/development/core/testing/wait-for-render.js +1 -1
- package/development/date-input/date-input.component.d.ts +0 -5
- package/development/date-input/date-input.component.d.ts.map +1 -1
- package/development/date-input/date-input.component.js +1 -8
- package/development/dialog/dialog/dialog.component.js +7 -7
- package/development/expansion-panel/expansion-panel/expansion-panel.component.d.ts +4 -6
- package/development/expansion-panel/expansion-panel/expansion-panel.component.d.ts.map +1 -1
- package/development/expansion-panel/expansion-panel/expansion-panel.component.js +30 -33
- package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts +2 -0
- package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts.map +1 -1
- package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +17 -2
- package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts +1 -0
- package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts.map +1 -1
- package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +17 -6
- package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
- package/development/file-selector/common/file-selector-common.js +5 -5
- package/development/flip-card/flip-card/flip-card.component.d.ts +2 -1
- package/development/flip-card/flip-card/flip-card.component.d.ts.map +1 -1
- package/development/flip-card/flip-card/flip-card.component.js +25 -14
- package/development/flip-card/flip-card-details/flip-card-details.component.d.ts +3 -1
- package/development/flip-card/flip-card-details/flip-card-details.component.d.ts.map +1 -1
- package/development/flip-card/flip-card-details/flip-card-details.component.js +7 -6
- package/development/flip-card/flip-card-summary/flip-card-summary.component.d.ts +1 -2
- package/development/flip-card/flip-card-summary/flip-card-summary.component.d.ts.map +1 -1
- package/development/flip-card/flip-card-summary/flip-card-summary.component.js +1 -7
- package/development/form-field/error/error.component.js +2 -2
- package/development/form-field/form-field/form-field.component.d.ts +1 -1
- package/development/form-field/form-field/form-field.component.d.ts.map +1 -1
- package/development/form-field/form-field/form-field.component.js +2 -2
- package/development/form-field/form-field-clear/form-field-clear.component.js +2 -2
- package/development/header/common/header-action-common.js +5 -5
- package/development/header/header/header.component.d.ts +1 -1
- package/development/header/header/header.component.d.ts.map +1 -1
- package/development/header/header/header.component.js +14 -14
- package/development/header/header-environment/header-environment.component.d.ts +1 -0
- package/development/header/header-environment/header-environment.component.d.ts.map +1 -1
- package/development/header/header-environment/header-environment.component.js +8 -5
- package/development/icon/icon-base.d.ts +1 -0
- package/development/icon/icon-base.d.ts.map +1 -1
- package/development/icon/icon-base.js +21 -25
- package/development/icon/icon-validate.js +2 -2
- package/development/{icon-sidebar-button-common-C6QChtaa.js → icon-sidebar-button-common-DR6eQvkq.js} +4 -4
- package/development/image/image.component.d.ts +5 -3
- package/development/image/image.component.d.ts.map +1 -1
- package/development/image/image.component.js +10 -9
- package/development/link/common/block-link-common.js +1 -1
- package/development/link/common/inline-link-common.js +1 -1
- package/development/link/common/link-common.d.ts.map +1 -1
- package/development/link/common/link-common.js +2 -3
- package/development/link/common.js +1 -1
- package/development/{link-common-DYZHRSSJ.js → link-common-CYr3PeRf.js} +9 -16
- package/development/link-list/link-list-anchor/link-list-anchor.component.js +6 -6
- package/development/link.js +1 -1
- package/development/map-container/map-container.component.d.ts +3 -1
- package/development/map-container/map-container.component.d.ts.map +1 -1
- package/development/map-container/map-container.component.js +5 -4
- package/development/menu/common/menu-action-common.js +2 -2
- package/development/menu/menu/menu.component.d.ts +1 -1
- package/development/menu/menu/menu.component.d.ts.map +1 -1
- package/development/menu/menu/menu.component.js +29 -23
- package/development/{mini-button-common-TSDaMUCP.js → mini-button-common-CWTMR_Lu.js} +15 -15
- package/development/mini-calendar/mini-calendar/mini-calendar.component.d.ts.map +1 -1
- package/development/mini-calendar/mini-calendar/mini-calendar.component.js +7 -6
- package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +4 -4
- package/development/navigation/common/navigation-action-common.js +7 -7
- package/development/navigation/navigation/navigation.component.d.ts +0 -1
- package/development/navigation/navigation/navigation.component.d.ts.map +1 -1
- package/development/navigation/navigation/navigation.component.js +26 -38
- package/development/navigation/navigation-marker/navigation-marker.component.d.ts +1 -1
- package/development/navigation/navigation-marker/navigation-marker.component.d.ts.map +1 -1
- package/development/navigation/navigation-marker/navigation-marker.component.js +8 -8
- package/development/navigation/navigation-section/navigation-section.component.d.ts +8 -7
- package/development/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
- package/development/navigation/navigation-section/navigation-section.component.js +48 -45
- package/development/notification/notification.component.d.ts +3 -2
- package/development/notification/notification.component.d.ts.map +1 -1
- package/development/notification/notification.component.js +22 -19
- package/development/option/optgroup/optgroup-base-element.d.ts +0 -3
- package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
- package/development/option/optgroup/optgroup-base-element.js +6 -32
- package/development/option/optgroup/optgroup.component.d.ts +2 -2
- package/development/option/optgroup/optgroup.component.d.ts.map +1 -1
- package/development/option/optgroup/optgroup.component.js +21 -13
- package/development/option/option/option-base-element.d.ts +0 -5
- package/development/option/option/option-base-element.d.ts.map +1 -1
- package/development/option/option/option-base-element.js +8 -41
- package/development/option/option/option.component.d.ts +5 -4
- package/development/option/option/option.component.d.ts.map +1 -1
- package/development/option/option/option.component.js +52 -39
- package/development/overlay/overlay-base-element.d.ts +1 -1
- package/development/overlay/overlay-base-element.js +2 -2
- package/development/overlay/overlay.component.js +7 -7
- package/development/paginator/common/paginator-common.d.ts +0 -1
- package/development/paginator/common/paginator-common.d.ts.map +1 -1
- package/development/paginator/common/paginator-common.js +1 -1
- package/development/paginator/paginator/paginator.component.d.ts +1 -1
- package/development/paginator/paginator/paginator.component.d.ts.map +1 -1
- package/development/paginator/paginator/paginator.component.js +8 -14
- package/development/popover/{popover/popover.component.d.ts → popover.component.d.ts} +2 -2
- package/development/popover/popover.component.d.ts.map +1 -0
- package/development/popover/popover.component.js +720 -0
- package/development/popover.d.ts +1 -1
- package/development/popover.d.ts.map +1 -1
- package/development/popover.js +1 -1
- package/development/radio-button/common.js +1 -1
- package/development/radio-button/radio-button/radio-button.component.d.ts +0 -1
- package/development/radio-button/radio-button/radio-button.component.d.ts.map +1 -1
- package/development/radio-button/radio-button/radio-button.component.js +1 -2
- package/development/radio-button/radio-button-group/radio-button-group.component.d.ts +0 -1
- package/development/radio-button/radio-button-group/radio-button-group.component.d.ts.map +1 -1
- package/development/radio-button/radio-button-group/radio-button-group.component.js +28 -43
- package/development/radio-button/radio-button-panel/radio-button-panel.component.d.ts +0 -12
- package/development/radio-button/radio-button-panel/radio-button-panel.component.d.ts.map +1 -1
- package/development/radio-button/radio-button-panel/radio-button-panel.component.js +5 -37
- package/development/{radio-button-common-BPrInmpg.js → radio-button-common-B3kVD7QV.js} +19 -42
- package/development/radio-button.js +1 -1
- package/development/{sbb-tokens-DZrHvErO.js → sbb-tokens-CZCt5L4q.js} +9 -9
- package/development/select/select.component.d.ts +1 -1
- package/development/select/select.component.d.ts.map +1 -1
- package/development/select/select.component.js +31 -36
- package/development/selection-action-panel/selection-action-panel.component.d.ts +0 -1
- package/development/selection-action-panel/selection-action-panel.component.d.ts.map +1 -1
- package/development/selection-action-panel/selection-action-panel.component.js +22 -9
- package/development/selection-expansion-panel/selection-expansion-panel.component.d.ts +5 -6
- package/development/selection-expansion-panel/selection-expansion-panel.component.d.ts.map +1 -1
- package/development/selection-expansion-panel/selection-expansion-panel.component.js +35 -30
- package/development/sidebar/common.js +1 -1
- package/development/sidebar/sidebar/sidebar.component.d.ts.map +1 -1
- package/development/sidebar/sidebar/sidebar.component.js +13 -14
- package/development/sidebar/sidebar-container/sidebar-container.component.d.ts.map +1 -1
- package/development/sidebar/sidebar-container/sidebar-container.component.js +10 -8
- package/development/sidebar.js +1 -1
- package/development/skiplink-list/skiplink-list.component.js +1 -1
- package/development/stepper/step/step.component.d.ts +3 -1
- package/development/stepper/step/step.component.d.ts.map +1 -1
- package/development/stepper/step/step.component.js +25 -12
- package/development/stepper/step-label/step-label.component.d.ts +4 -1
- package/development/stepper/step-label/step-label.component.d.ts.map +1 -1
- package/development/stepper/step-label/step-label.component.js +40 -17
- package/development/stepper/stepper/stepper.component.d.ts +2 -2
- package/development/stepper/stepper/stepper.component.d.ts.map +1 -1
- package/development/stepper/stepper/stepper.component.js +21 -22
- package/development/tabs/tab/tab.component.d.ts +0 -5
- package/development/tabs/tab/tab.component.d.ts.map +1 -1
- package/development/tabs/tab/tab.component.js +3 -9
- package/development/tabs/tab-group/tab-group.component.d.ts +1 -25
- package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
- package/development/tabs/tab-group/tab-group.component.js +19 -23
- package/development/tabs/tab-label/tab-label.component.d.ts +1 -0
- package/development/tabs/tab-label/tab-label.component.d.ts.map +1 -1
- package/development/tabs/tab-label/tab-label.component.js +20 -7
- package/development/tag/tag/tag.component.js +9 -9
- package/development/teaser/teaser.component.js +2 -2
- package/development/teaser-product/common.js +1 -1
- package/development/teaser-product/teaser-product/teaser-product.component.js +2 -2
- package/development/{teaser-product-common-v3BvyFdH.js → teaser-product-common-CJfmvweQ.js} +2 -2
- package/development/teaser-product.js +1 -1
- package/development/time-input/time-input.component.d.ts +0 -5
- package/development/time-input/time-input.component.d.ts.map +1 -1
- package/development/time-input/time-input.component.js +1 -8
- package/development/toast/toast.component.js +5 -5
- package/development/toggle/toggle/toggle.component.js +4 -4
- package/development/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
- package/development/toggle/toggle-option/toggle-option.component.js +2 -3
- package/development/toggle-check/toggle-check.component.js +4 -4
- package/development/tooltip/tooltip.component.d.ts.map +1 -1
- package/development/tooltip/tooltip.component.js +7 -7
- package/development/visual-checkbox/visual-checkbox.component.js +8 -4
- package/dialog/dialog/dialog.component.js +20 -20
- package/expansion-panel/expansion-panel/expansion-panel.component.d.ts +4 -6
- package/expansion-panel/expansion-panel/expansion-panel.component.d.ts.map +1 -1
- package/expansion-panel/expansion-panel/expansion-panel.component.js +51 -56
- package/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts +2 -0
- package/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts.map +1 -1
- package/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +21 -13
- package/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts +1 -0
- package/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts.map +1 -1
- package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +24 -20
- package/file-selector/common/file-selector-common.d.ts.map +1 -1
- package/file-selector/common/file-selector-common.js +28 -28
- package/flip-card/flip-card/flip-card.component.d.ts +2 -1
- package/flip-card/flip-card/flip-card.component.d.ts.map +1 -1
- package/flip-card/flip-card/flip-card.component.js +44 -40
- package/flip-card/flip-card-details/flip-card-details.component.d.ts +3 -1
- package/flip-card/flip-card-details/flip-card-details.component.d.ts.map +1 -1
- package/flip-card/flip-card-details/flip-card-details.component.js +15 -14
- package/flip-card/flip-card-summary/flip-card-summary.component.d.ts +1 -2
- package/flip-card/flip-card-summary/flip-card-summary.component.d.ts.map +1 -1
- package/flip-card/flip-card-summary/flip-card-summary.component.js +23 -26
- package/form-field/error/error.component.js +3 -3
- package/form-field/form-field/form-field.component.d.ts +1 -1
- package/form-field/form-field/form-field.component.d.ts.map +1 -1
- package/form-field/form-field/form-field.component.js +1 -1
- package/form-field/form-field-clear/form-field-clear.component.js +7 -7
- package/header/common/header-action-common.js +14 -14
- package/header/header/header.component.d.ts +1 -1
- package/header/header/header.component.d.ts.map +1 -1
- package/header/header/header.component.js +40 -40
- package/header/header-environment/header-environment.component.d.ts +1 -0
- package/header/header-environment/header-environment.component.d.ts.map +1 -1
- package/header/header-environment/header-environment.component.js +8 -9
- package/icon/icon-base.d.ts +1 -0
- package/icon/icon-base.d.ts.map +1 -1
- package/icon/icon-base.js +45 -48
- package/icon/icon-validate.js +3 -3
- package/{icon-sidebar-button-common-W6GYJbVt.js → icon-sidebar-button-common-ffAscVDk.js} +1 -1
- package/image/image.component.d.ts +5 -3
- package/image/image.component.d.ts.map +1 -1
- package/image/image.component.js +31 -30
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/link/common/block-link-common.js +1 -1
- package/link/common/inline-link-common.js +1 -1
- package/link/common/link-common.d.ts.map +1 -1
- package/link/common/link-common.js +2 -3
- package/link/common.js +1 -1
- package/link-common-D9TmX32v.js +45 -0
- package/link-list/link-list-anchor/link-list-anchor.component.js +9 -9
- package/link.js +1 -1
- package/map-container/map-container.component.d.ts +3 -1
- package/map-container/map-container.component.d.ts.map +1 -1
- package/map-container/map-container.component.js +18 -17
- package/menu/common/menu-action-common.js +5 -5
- package/menu/menu/menu.component.d.ts +1 -1
- package/menu/menu/menu.component.d.ts.map +1 -1
- package/menu/menu/menu.component.js +29 -28
- package/mini-button-common-Bb4ri3Rn.js +10 -0
- package/mini-calendar/mini-calendar/mini-calendar.component.d.ts.map +1 -1
- package/mini-calendar/mini-calendar/mini-calendar.component.js +22 -21
- package/navigation/common/navigation-action-common.js +10 -10
- package/navigation/navigation/navigation.component.d.ts +0 -1
- package/navigation/navigation/navigation.component.d.ts.map +1 -1
- package/navigation/navigation/navigation.component.js +46 -55
- package/navigation/navigation-marker/navigation-marker.component.d.ts +1 -1
- package/navigation/navigation-marker/navigation-marker.component.d.ts.map +1 -1
- package/navigation/navigation-marker/navigation-marker.component.js +20 -20
- package/navigation/navigation-section/navigation-section.component.d.ts +8 -7
- package/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
- package/navigation/navigation-section/navigation-section.component.js +65 -65
- package/notification/notification.component.d.ts +3 -2
- package/notification/notification.component.d.ts.map +1 -1
- package/notification/notification.component.js +22 -25
- package/off-brand-theme.css +151 -26
- package/option/optgroup/optgroup-base-element.d.ts +0 -3
- package/option/optgroup/optgroup-base-element.d.ts.map +1 -1
- package/option/optgroup/optgroup-base-element.js +45 -64
- package/option/optgroup/optgroup.component.d.ts +2 -2
- package/option/optgroup/optgroup.component.d.ts.map +1 -1
- package/option/optgroup/optgroup.component.js +27 -19
- package/option/option/option-base-element.d.ts +0 -5
- package/option/option/option-base-element.d.ts.map +1 -1
- package/option/option/option-base-element.js +58 -74
- package/option/option/option.component.d.ts +5 -4
- package/option/option/option.component.d.ts.map +1 -1
- package/option/option/option.component.js +40 -36
- package/overlay/overlay-base-element.d.ts +1 -1
- package/overlay/overlay-base-element.js +1 -1
- package/overlay/overlay.component.js +28 -28
- package/package.json +1 -6
- package/paginator/common/paginator-common.d.ts +0 -1
- package/paginator/common/paginator-common.d.ts.map +1 -1
- package/paginator/paginator/paginator.component.d.ts +1 -1
- package/paginator/paginator/paginator.component.d.ts.map +1 -1
- package/paginator/paginator/paginator.component.js +17 -20
- package/popover/{popover/popover.component.d.ts → popover.component.d.ts} +2 -2
- package/popover/popover.component.d.ts.map +1 -0
- package/popover/popover.component.js +316 -0
- package/popover.d.ts +1 -1
- package/popover.d.ts.map +1 -1
- package/popover.js +1 -1
- package/radio-button/common.js +1 -1
- package/radio-button/radio-button/radio-button.component.d.ts +0 -1
- package/radio-button/radio-button/radio-button.component.d.ts.map +1 -1
- package/radio-button/radio-button/radio-button.component.js +4 -5
- package/radio-button/radio-button-group/radio-button-group.component.d.ts +0 -1
- package/radio-button/radio-button-group/radio-button-group.component.d.ts.map +1 -1
- package/radio-button/radio-button-group/radio-button-group.component.js +45 -46
- package/radio-button/radio-button-panel/radio-button-panel.component.d.ts +0 -12
- package/radio-button/radio-button-panel/radio-button-panel.component.d.ts.map +1 -1
- package/radio-button/radio-button-panel/radio-button-panel.component.js +36 -54
- package/radio-button-common-1Yg7p8dc.js +5 -0
- package/radio-button.js +1 -1
- package/safety-theme.css +151 -26
- package/{sbb-tokens-BNWpZrLn.js → sbb-tokens-DruExozg.js} +8 -8
- package/select/select.component.d.ts +1 -1
- package/select/select.component.d.ts.map +1 -1
- package/select/select.component.js +52 -52
- package/selection-action-panel/selection-action-panel.component.d.ts +0 -1
- package/selection-action-panel/selection-action-panel.component.d.ts.map +1 -1
- package/selection-action-panel/selection-action-panel.component.js +9 -13
- package/selection-expansion-panel/selection-expansion-panel.component.d.ts +5 -6
- package/selection-expansion-panel/selection-expansion-panel.component.d.ts.map +1 -1
- package/selection-expansion-panel/selection-expansion-panel.component.js +49 -55
- package/sidebar/common.js +1 -1
- package/sidebar/sidebar/sidebar.component.d.ts.map +1 -1
- package/sidebar/sidebar/sidebar.component.js +26 -32
- package/sidebar/sidebar-container/sidebar-container.component.d.ts.map +1 -1
- package/sidebar/sidebar-container/sidebar-container.component.js +33 -32
- package/sidebar.js +1 -1
- package/skiplink-list/skiplink-list.component.js +1 -1
- package/standard-theme.css +151 -26
- package/stepper/step/step.component.d.ts +3 -1
- package/stepper/step/step.component.d.ts.map +1 -1
- package/stepper/step/step.component.js +28 -20
- package/stepper/step-label/step-label.component.d.ts +4 -1
- package/stepper/step-label/step-label.component.d.ts.map +1 -1
- package/stepper/step-label/step-label.component.js +35 -23
- package/stepper/stepper/stepper.component.d.ts +2 -2
- package/stepper/stepper/stepper.component.d.ts.map +1 -1
- package/stepper/stepper/stepper.component.js +49 -48
- package/tabs/tab/tab.component.d.ts +0 -5
- package/tabs/tab/tab.component.d.ts.map +1 -1
- package/tabs/tab/tab.component.js +12 -18
- package/tabs/tab-group/tab-group.component.d.ts +1 -25
- package/tabs/tab-group/tab-group.component.d.ts.map +1 -1
- package/tabs/tab-group/tab-group.component.js +48 -50
- package/tabs/tab-label/tab-label.component.d.ts +1 -0
- package/tabs/tab-label/tab-label.component.d.ts.map +1 -1
- package/tabs/tab-label/tab-label.component.js +34 -29
- package/tag/tag/tag.component.js +12 -12
- package/teaser/teaser.component.js +1 -1
- package/teaser-product/common.js +1 -1
- package/teaser-product/teaser-product/teaser-product.component.js +1 -1
- package/teaser-product-common-DwaWdQEh.js +5 -0
- package/teaser-product.js +1 -1
- package/time-input/time-input.component.d.ts +0 -5
- package/time-input/time-input.component.d.ts.map +1 -1
- package/time-input/time-input.component.js +3 -10
- package/toast/toast.component.js +23 -23
- package/toggle/toggle/toggle.component.js +13 -13
- package/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
- package/toggle/toggle-option/toggle-option.component.js +20 -21
- package/toggle-check/toggle-check.component.js +8 -8
- package/tooltip/tooltip.component.d.ts.map +1 -1
- package/tooltip/tooltip.component.js +39 -39
- package/visual-checkbox/visual-checkbox.component.js +15 -15
- package/checkbox-common-DK5WsQPi.js +0 -5
- package/core/controllers/ancestor-watcher-controller.d.ts +0 -14
- package/core/controllers/ancestor-watcher-controller.d.ts.map +0 -1
- package/core/controllers/ancestor-watcher-controller.js +0 -51
- package/core/dom/breakpoint.d.ts +0 -16
- package/core/dom/breakpoint.d.ts.map +0 -1
- package/core/dom/breakpoint.js +0 -12
- package/core/dom/host-context.d.ts +0 -11
- package/core/dom/host-context.d.ts.map +0 -1
- package/core/dom/host-context.js +0 -17
- package/development/core/controllers/ancestor-watcher-controller.d.ts +0 -14
- package/development/core/controllers/ancestor-watcher-controller.d.ts.map +0 -1
- package/development/core/controllers/ancestor-watcher-controller.js +0 -87
- package/development/core/dom/breakpoint.d.ts +0 -16
- package/development/core/dom/breakpoint.d.ts.map +0 -1
- package/development/core/dom/breakpoint.js +0 -19
- package/development/core/dom/host-context.d.ts +0 -11
- package/development/core/dom/host-context.d.ts.map +0 -1
- package/development/core/dom/host-context.js +0 -21
- package/development/popover/popover/popover.component.d.ts.map +0 -1
- package/development/popover/popover/popover.component.js +0 -722
- package/development/popover/popover.d.ts +0 -5
- package/development/popover/popover.d.ts.map +0 -1
- package/development/popover/popover.js +0 -6
- package/link-common-CdQBSga7.js +0 -46
- package/mini-button-common-C3-aFB4L.js +0 -10
- package/popover/popover/popover.component.d.ts.map +0 -1
- package/popover/popover/popover.component.js +0 -321
- package/popover/popover.d.ts +0 -5
- package/popover/popover.d.ts.map +0 -1
- package/popover/popover.js +0 -5
- package/radio-button-common-chJrmIBn.js +0 -5
- package/teaser-product-common-a4NenpSA.js +0 -5
|
@@ -16,6 +16,7 @@ import { idReference } from "../../core/decorators.js";
|
|
|
16
16
|
import { SbbScrollHandler, isZeroAnimationDuration } from "../../core/dom.js";
|
|
17
17
|
import { forwardEvent } from "../../core/eventing.js";
|
|
18
18
|
import { i18nGoBack } from "../../core/i18n/i18n.js";
|
|
19
|
+
import { ɵstateController as _stateController } from "../../core/mixins.js";
|
|
19
20
|
import { isEventOnElement, removeAriaOverlayTriggerAttributes, setAriaOverlayTriggerAttributes, getElementPosition, getElementPositionHorizontal } from "../../core/overlay.js";
|
|
20
21
|
import { boxSizingStyles } from "../../core/styles.js";
|
|
21
22
|
import "../../divider.js";
|
|
@@ -59,12 +60,12 @@ const style = css`:host {
|
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
|
|
62
|
-
:host(:is([
|
|
63
|
+
:host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening]))) {
|
|
63
64
|
--sbb-menu-visibility: visible;
|
|
64
65
|
--sbb-menu-backdrop-color: color-mix(in srgb, var(--sbb-color-black) 20%, transparent);
|
|
65
66
|
}
|
|
66
67
|
@media (min-width: calc(64rem)) {
|
|
67
|
-
:host(:is([
|
|
68
|
+
:host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening]))) {
|
|
68
69
|
--sbb-menu-backdrop-color: transparent;
|
|
69
70
|
}
|
|
70
71
|
}
|
|
@@ -73,7 +74,7 @@ const style = css`:host {
|
|
|
73
74
|
--sbb-menu-back-button-display: none;
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
:host(:not([
|
|
77
|
+
:host(:not(:is(:state(state-closed),[state--state-closed]))) {
|
|
77
78
|
--sbb-menu-inset: 0;
|
|
78
79
|
}
|
|
79
80
|
|
|
@@ -90,10 +91,10 @@ const style = css`:host {
|
|
|
90
91
|
:host(:is(:state(nested-child),[state--nested-child])) {
|
|
91
92
|
--sbb-menu-transform-x: -100%;
|
|
92
93
|
}
|
|
93
|
-
:host(:is(:state(nested),[state--nested])[
|
|
94
|
+
:host(:is(:state(nested),[state--nested]):is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) {
|
|
94
95
|
--sbb-menu-open-animation-name: open-sideways;
|
|
95
96
|
}
|
|
96
|
-
:host([
|
|
97
|
+
:host(:is(:state(state-closing),[state--state-closing]):is(:state(nested),[state--nested]):not(:is(:state(close-all),[state--close-all]))) {
|
|
97
98
|
--sbb-menu-close-animation-name: close-sideways;
|
|
98
99
|
}
|
|
99
100
|
}
|
|
@@ -157,7 +158,7 @@ sbb-divider,
|
|
|
157
158
|
translate: var(--sbb-menu-transform-x) 0;
|
|
158
159
|
transition: translate var(--sbb-menu-animation-duration);
|
|
159
160
|
}
|
|
160
|
-
:host([
|
|
161
|
+
:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) .sbb-menu {
|
|
161
162
|
display: block;
|
|
162
163
|
opacity: 1;
|
|
163
164
|
pointer-events: all;
|
|
@@ -165,7 +166,7 @@ sbb-divider,
|
|
|
165
166
|
animation-duration: var(--sbb-menu-animation-duration);
|
|
166
167
|
animation-timing-function: var(--sbb-menu-animation-easing);
|
|
167
168
|
}
|
|
168
|
-
:host([
|
|
169
|
+
:host(:is(:state(state-closing),[state--state-closing])) .sbb-menu {
|
|
169
170
|
pointer-events: none;
|
|
170
171
|
animation-name: var(--sbb-menu-close-animation-name, close);
|
|
171
172
|
}
|
|
@@ -183,7 +184,7 @@ sbb-divider,
|
|
|
183
184
|
max-height: fit-content;
|
|
184
185
|
border-radius: var(--sbb-menu-border-radius);
|
|
185
186
|
}
|
|
186
|
-
:host(:not([
|
|
187
|
+
:host(:not(:is(:state(state-closed),[state--state-closed]))) .sbb-menu {
|
|
187
188
|
top: var(--sbb-menu-position-y);
|
|
188
189
|
left: var(--sbb-menu-position-x);
|
|
189
190
|
max-height: var(--sbb-menu-max-height);
|
|
@@ -236,7 +237,7 @@ sbb-divider,
|
|
|
236
237
|
.sbb-menu__content {
|
|
237
238
|
max-height: fit-content;
|
|
238
239
|
}
|
|
239
|
-
:host(:not([
|
|
240
|
+
:host(:not(:is(:state(state-closed),[state--state-closed]))) .sbb-menu__content {
|
|
240
241
|
max-height: var(--sbb-menu-max-height);
|
|
241
242
|
min-height: var(--sbb-menu-min-height);
|
|
242
243
|
}
|
|
@@ -245,7 +246,7 @@ sbb-divider,
|
|
|
245
246
|
}
|
|
246
247
|
}
|
|
247
248
|
|
|
248
|
-
::slotted(:is([
|
|
249
|
+
::slotted(:is(:is(:state(sbb-link),[state--sbb-link]), :is(:state(sbb-button),[state--sbb-button]))) {
|
|
249
250
|
color-scheme: only light;
|
|
250
251
|
}
|
|
251
252
|
|
|
@@ -374,7 +375,7 @@ let SbbMenuElement = (() => {
|
|
|
374
375
|
}
|
|
375
376
|
if (this._isNested()) {
|
|
376
377
|
const parentMenu = this._parentMenu();
|
|
377
|
-
parentMenu.
|
|
378
|
+
parentMenu.internals.states.add("nested-child");
|
|
378
379
|
if (parentMenu._nestedMenu !== this) {
|
|
379
380
|
parentMenu._nestedMenu?.close();
|
|
380
381
|
}
|
|
@@ -395,7 +396,7 @@ let SbbMenuElement = (() => {
|
|
|
395
396
|
close() {
|
|
396
397
|
this._close();
|
|
397
398
|
}
|
|
398
|
-
/** Closes the menu and all related menus
|
|
399
|
+
/** Closes the menu and all related menus (nested and parent menus). */
|
|
399
400
|
closeAll() {
|
|
400
401
|
this._mainMenu()._close(true);
|
|
401
402
|
}
|
|
@@ -407,9 +408,14 @@ let SbbMenuElement = (() => {
|
|
|
407
408
|
this._nestedMenu?._close(closeAll);
|
|
408
409
|
if (this._isNested()) {
|
|
409
410
|
const parentMenu = this._parentMenu();
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
411
|
+
if (closeAll) {
|
|
412
|
+
this.internals.states.add("close-all");
|
|
413
|
+
parentMenu.internals.states.add("skip-animation");
|
|
414
|
+
} else {
|
|
415
|
+
this.internals.states.delete("close-all");
|
|
416
|
+
parentMenu.internals.states.delete("skip-animation");
|
|
417
|
+
}
|
|
418
|
+
parentMenu.internals.states.delete("nested-child");
|
|
413
419
|
parentMenu._nestedMenu = null;
|
|
414
420
|
}
|
|
415
421
|
this.state = "closing";
|
|
@@ -436,8 +442,8 @@ let SbbMenuElement = (() => {
|
|
|
436
442
|
}
|
|
437
443
|
_handleClosing() {
|
|
438
444
|
this.state = "closed";
|
|
439
|
-
this.
|
|
440
|
-
this.
|
|
445
|
+
this.internals.states.delete("skip-animation");
|
|
446
|
+
this.internals.states.delete("close-all");
|
|
441
447
|
this.hidePopover?.();
|
|
442
448
|
this._menu?.firstElementChild?.scrollTo(0, 0);
|
|
443
449
|
if (!this._isNested()) {
|
|
@@ -474,7 +480,7 @@ let SbbMenuElement = (() => {
|
|
|
474
480
|
}
|
|
475
481
|
break;
|
|
476
482
|
case "ArrowRight":
|
|
477
|
-
if (evt.target.
|
|
483
|
+
if (evt.target.matches(":is(:state(sbb-menu-trigger),[state--sbb-menu-trigger])")) {
|
|
478
484
|
evt.target.click();
|
|
479
485
|
}
|
|
480
486
|
break;
|
|
@@ -535,7 +541,7 @@ let SbbMenuElement = (() => {
|
|
|
535
541
|
signal: this._triggerAbortController.signal
|
|
536
542
|
});
|
|
537
543
|
this.toggleState("nested", ["sbb-menu-button", "sbb-menu-link"].includes(this._triggerElement.localName));
|
|
538
|
-
this._triggerElement.
|
|
544
|
+
_stateController(this._triggerElement).add("sbb-menu-trigger");
|
|
539
545
|
}
|
|
540
546
|
_attachWindowEvents() {
|
|
541
547
|
this._windowEventsController = new AbortController();
|
|
@@ -562,7 +568,7 @@ let SbbMenuElement = (() => {
|
|
|
562
568
|
// Close menu at any click on an interactive element inside the <sbb-menu> that bubbles to the container.
|
|
563
569
|
_interactiveElementClick(event) {
|
|
564
570
|
const target = event.target;
|
|
565
|
-
if (INTERACTIVE_ELEMENTS.includes(target.nodeName) && !target.hasAttribute("disabled") && !target.
|
|
571
|
+
if (INTERACTIVE_ELEMENTS.includes(target.nodeName) && !target.hasAttribute("disabled") && !target.matches(":is(:state(sbb-menu-trigger),[state--sbb-menu-trigger])") && target.id !== "sbb-menu__back-button") {
|
|
566
572
|
this.closeAll();
|
|
567
573
|
}
|
|
568
574
|
}
|
|
@@ -597,7 +603,7 @@ let SbbMenuElement = (() => {
|
|
|
597
603
|
if (!isMobile && this._nestedMenu && !element.classList.contains("sbb-menu__content") && !(element.getAttribute("aria-expanded") === "true")) {
|
|
598
604
|
this._nestedMenu.close();
|
|
599
605
|
}
|
|
600
|
-
if (element.
|
|
606
|
+
if (element.matches(":is(:state(sbb-menu-trigger),[state--sbb-menu-trigger])") && !isMobile) {
|
|
601
607
|
element.click();
|
|
602
608
|
}
|
|
603
609
|
}
|
|
@@ -629,7 +635,7 @@ let SbbMenuElement = (() => {
|
|
|
629
635
|
this.style.setProperty("--sbb-menu-max-height", menuPosition.maxHeight);
|
|
630
636
|
}
|
|
631
637
|
_syncNegative() {
|
|
632
|
-
this.querySelectorAll("[
|
|
638
|
+
this.querySelectorAll(":is(:state(sbb-link),[state--sbb-link]), :is(:state(sbb-button),[state--sbb-button])")?.forEach((el) => {
|
|
633
639
|
customElements.upgrade(el);
|
|
634
640
|
el.negative = !this._darkModeController.matches();
|
|
635
641
|
});
|
|
@@ -680,4 +686,4 @@ let SbbMenuElement = (() => {
|
|
|
680
686
|
export {
|
|
681
687
|
SbbMenuElement
|
|
682
688
|
};
|
|
683
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9tZW51L21lbnUvbWVudS5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHtcbiAgZ2V0TmV4dEVsZW1lbnRJbmRleCxcbiAgaW50ZXJhY3Rpdml0eUNoZWNrZXIsXG4gIGlzQXJyb3dLZXlPclBhZ2VLZXlzUHJlc3NlZCxcbiAgU2JiRm9jdXNUcmFwQ29udHJvbGxlcixcbn0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LnRzJztcbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7XG4gIFNiYkRhcmtNb2RlQ29udHJvbGxlcixcbiAgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIsXG4gIFNiYkluZXJ0Q29udHJvbGxlcixcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxuICBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyLFxuICBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQmVsb3csXG59IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMudHMnO1xuaW1wb3J0IHsgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24sIFNiYlNjcm9sbEhhbmRsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBmb3J3YXJkRXZlbnQgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLnRzJztcbmltcG9ydCB7IGkxOG5Hb0JhY2sgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYk5lZ2F0aXZlTWl4aW5UeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMudHMnO1xuaW1wb3J0IHtcbiAgZ2V0RWxlbWVudFBvc2l0aW9uLFxuICBnZXRFbGVtZW50UG9zaXRpb25Ib3Jpem9udGFsLFxuICBpc0V2ZW50T25FbGVtZW50LFxuICByZW1vdmVBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzLFxuICBzZXRBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzLFxufSBmcm9tICcuLi8uLi9jb3JlL292ZXJsYXkudHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJNZW51QnV0dG9uRWxlbWVudCB9IGZyb20gJy4uL21lbnUtYnV0dG9uLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiTWVudUxpbmtFbGVtZW50IH0gZnJvbSAnLi4vbWVudS1saW5rL21lbnUtbGluay5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9tZW51LnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vZGl2aWRlci50cyc7XG5pbXBvcnQgJy4uL21lbnUtYnV0dG9uLnRzJztcblxuY29uc3QgTUVOVV9PRkZTRVQgPSA4O1xuY29uc3QgTkVTVEVEX01FTlVfT0ZGU0VUID0gLTQ7XG5jb25zdCBJTlRFUkFDVElWRV9FTEVNRU5UUyA9IFtcbiAgJ0EnLFxuICAnQlVUVE9OJyxcbiAgJ1NCQi1CVVRUT04nLFxuICAnU0JCLUJVVFRPTi1MSU5LJyxcbiAgJ1NCQi1MSU5LJyxcbiAgJ1NCQi1CTE9DSy1MSU5LJyxcbiAgJ1NCQi1MSU5LLUJVVFRPTicsXG4gICdTQkItQkxPQ0stTElOSy1CVVRUT04nLFxuICAnU0JCLU1FTlUtQlVUVE9OJyxcbiAgJ1NCQi1NRU5VLUxJTksnLFxuXTtcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYSBjb250ZXh0dWFsIG1lbnUgd2l0aCBvbmUgb3IgbW9yZSBhY3Rpb24gZWxlbWVudC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBgc2JiLW1lbnUtYnV0dG9uYC9gc2JiLW1lbnUtbGlua2Agb3Igb3RoZXIgZWxlbWVudHMgdG8gdGhlIG1lbnUuXG4gKiBAY3NzcHJvcCBbLS1zYmItbWVudS16LWluZGV4PXZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCldIC0gVG8gc3BlY2lmeSBhIGN1c3RvbSBzdGFjayBvcmRlcixcbiAqIHRoZSBgei1pbmRleGAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgdGhpcyBDU1MgdmFyaWFibGUuIFRoZSBkZWZhdWx0IGB6LWluZGV4YCBvZiB0aGVcbiAqIGNvbXBvbmVudCBpcyBzZXQgdG8gYHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleClgIHdpdGggYSB2YWx1ZSBvZiBgMTAwMGAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1tZW51JylcbmNsYXNzIFNiYk1lbnVFbGVtZW50IGV4dGVuZHMgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCBzdHlsZV07XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgcm9sZSA9ICdtZW51JztcblxuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIG1lbnUgb3ZlcmxheS5cbiAgICpcbiAgICogRm9yIGF0dHJpYnV0ZSB1c2FnZSwgcHJvdmlkZSBhbiBpZCByZWZlcmVuY2UuXG4gICAqL1xuICBAaWRSZWZlcmVuY2UoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdHJpZ2dlcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9tZW51ITogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90cmlnZ2VyQWJvcnRDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfd2luZG93RXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIgPSBuZXcgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2ZvY3VzVHJhcENvbnRyb2xsZXIgPSBuZXcgU2JiRm9jdXNUcmFwQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfc2Nyb2xsSGFuZGxlciA9IG5ldyBTYmJTY3JvbGxIYW5kbGVyKCk7XG4gIHByaXZhdGUgX2luZXJ0Q29udHJvbGxlciA9IG5ldyBTYmJJbmVydENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX21vYmlsZUJyZWFrcG9pbnQgPSBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQmVsb3c7XG4gIHByaXZhdGUgX21lZGlhTWF0Y2hlciA9IG5ldyBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyKHRoaXMsIHtcbiAgICBbdGhpcy5fbW9iaWxlQnJlYWtwb2ludF06IChtYXRjaGVzKSA9PiB7XG4gICAgICBpZiAobWF0Y2hlcyAmJiAodGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnIHx8IHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnKSkge1xuICAgICAgICB0aGlzLl9zY3JvbGxIYW5kbGVyLmRpc2FibGVTY3JvbGwoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3Njcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG4gIHByaXZhdGUgX2RhcmtNb2RlQ29udHJvbGxlciA9IG5ldyBTYmJEYXJrTW9kZUNvbnRyb2xsZXIodGhpcywgKCkgPT4gdGhpcy5fc3luY05lZ2F0aXZlKCkpO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX25lc3RlZE1lbnU6IFNiYk1lbnVFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2tleWRvd24nLCAoZSkgPT4gdGhpcy5faGFuZGxlS2V5RG93bihlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZXNjYXBlU3RyYXRlZ3koKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBtZW51IG9uIHRyaWdnZXIgY2xpY2suXG4gICAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnN0YXRlID09PSAnY2xvc2luZycgfHxcbiAgICAgIHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnIHx8XG4gICAgICAhdGhpcy5fbWVudSB8fFxuICAgICAgIXRoaXMuZGlzcGF0Y2hCZWZvcmVPcGVuRXZlbnQoKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc05lc3RlZCgpKSB7XG4gICAgICBjb25zdCBwYXJlbnRNZW51ID0gdGhpcy5fcGFyZW50TWVudSgpITtcbiAgICAgIHBhcmVudE1lbnUudG9nZ2xlU3RhdGUoJ25lc3RlZC1jaGlsZCcsIHRydWUpO1xuXG4gICAgICAvLyBJbiBjYXNlIHdlIGNoYW5nZSBiZXR3ZWVuIGFycm93IGtleSBuYXZpZ2F0aW9uIGFuZCBtb3VzZSBuYXZpZ2F0aW9uLCBpdCBjYW4gYmUgdGhhdCBhbm90aGVyXG4gICAgICAvLyBuZXN0ZWQgcGFyZW50IG1lbnUgaXMgc3RpbGwgb3Blbi4gV2UgaGF2ZSB0byBjbG9zZSBpdC5cbiAgICAgIGlmIChwYXJlbnRNZW51Ll9uZXN0ZWRNZW51ICE9PSB0aGlzKSB7XG4gICAgICAgIHBhcmVudE1lbnUuX25lc3RlZE1lbnU/LmNsb3NlKCk7XG4gICAgICB9XG4gICAgICBwYXJlbnRNZW51Ll9uZXN0ZWRNZW51ID0gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLnNob3dQb3BvdmVyPy4oKTtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5pbmcnO1xuICAgIHRoaXMuX3NldE1lbnVQb3NpdGlvbigpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuXG4gICAgLy8gRnJvbSB6ZXJvIHRvIGxhcmdlLCBkaXNhYmxlIHNjcm9sbFxuICAgIGlmICh0aGlzLl9pc01vYmlsZSgpKSB7XG4gICAgICB0aGlzLl9zY3JvbGxIYW5kbGVyLmRpc2FibGVTY3JvbGwoKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgb3BlbmVkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbG9zZXMgdGhlIG1lbnUgYW5kIGFsbCBpdHMgbmVzdGVkIG1lbnVzLiAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvc2UoKTtcbiAgfVxuXG4gIC8qKiBDbG9zZXMgdGhlIG1lbnUgYW5kIGFsbCByZWxhdGVkIG1lbnVzICBuZXN0ZWQgYW5kIHBhcmVudCBtZW51cykuICovXG4gIHB1YmxpYyBjbG9zZUFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9tYWluTWVudSgpLl9jbG9zZSh0cnVlKTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0gW2Nsb3NlQWxsPSdmYWxzZSddIC0gSWYgdHJ1ZSwgaXQgZW5zdXJlcyBhbmltYXRpb25zIGFyZSBjb3JyZWN0IGJ5IHRvZ2dsaW5nIHNvbWUgc3RhdGVzIHdoZW4gY2xvc2luZyBhbGwgcmVsYXRlZCBtZW51cyBhdCBvbmNlLiAqL1xuICBwcml2YXRlIF9jbG9zZShjbG9zZUFsbCA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKCh0aGlzLnN0YXRlID09PSAnb3BlbmluZycgJiYgIXRoaXMuX2lzTmVzdGVkKCkpIHx8ICF0aGlzLmRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2xvc2UgbmVzdGVkIG1lbnVzIGZpcnN0XG4gICAgdGhpcy5fbmVzdGVkTWVudT8uX2Nsb3NlKGNsb3NlQWxsKTtcblxuICAgIGlmICh0aGlzLl9pc05lc3RlZCgpKSB7XG4gICAgICBjb25zdCBwYXJlbnRNZW51ID0gdGhpcy5fcGFyZW50TWVudSgpITtcbiAgICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2Nsb3NlLWFsbCcsIGNsb3NlQWxsKTtcbiAgICAgIHBhcmVudE1lbnUudG9nZ2xlU3RhdGUoJ3NraXAtYW5pbWF0aW9uJywgY2xvc2VBbGwpO1xuICAgICAgcGFyZW50TWVudS50b2dnbGVTdGF0ZSgnbmVzdGVkLWNoaWxkJywgZmFsc2UpO1xuICAgICAgcGFyZW50TWVudS5fbmVzdGVkTWVudSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItbWVudS1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuXG4gICAgaWYgKCF0aGlzLl9pc05lc3RlZCgpKSB7XG4gICAgICB0aGlzLl9pbmVydENvbnRyb2xsZXIuYWN0aXZhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdXBkYXRlTmVzdGVkSW5lcnQoKTtcbiAgICB9XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuY29ubmVjdCgpO1xuICAgIHRoaXMuX2ZvY3VzVHJhcENvbnRyb2xsZXIuZm9jdXNJbml0aWFsRWxlbWVudCgpO1xuICAgIHRoaXMuX2ZvY3VzVHJhcENvbnRyb2xsZXIuZW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5fYXR0YWNoV2luZG93RXZlbnRzKCk7XG4gICAgdGhpcy5kaXNwYXRjaE9wZW5FdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnc2tpcC1hbmltYXRpb24nLCBmYWxzZSk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnY2xvc2UtYWxsJywgZmFsc2UpO1xuICAgIHRoaXMuaGlkZVBvcG92ZXI/LigpO1xuXG4gICAgdGhpcy5fbWVudT8uZmlyc3RFbGVtZW50Q2hpbGQ/LnNjcm9sbFRvKDAsIDApO1xuICAgIGlmICghdGhpcy5faXNOZXN0ZWQoKSkge1xuICAgICAgdGhpcy5faW5lcnRDb250cm9sbGVyLmRlYWN0aXZhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdXBkYXRlTmVzdGVkSW5lcnQoKTtcbiAgICB9XG4gICAgLy8gTWFudWFsbHkgZm9jdXMgbGFzdCBmb2N1c2VkIGVsZW1lbnRcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uZm9jdXMoe1xuICAgICAgLy8gV2hlbiBpbnNpZGUgdGhlIHNiYi1oZWFkZXIsIHdlIHByZXZlbnQgdGhlIHNjcm9sbCB0byBhdm9pZCB0aGUgc25hcHBpbmcgdG8gdGhlIHRvcCBvZiB0aGUgcGFnZVxuICAgICAgcHJldmVudFNjcm9sbDogWydzYmItaGVhZGVyLWJ1dHRvbicsICdzYmItaGVhZGVyLWxpbmsnXS5pbmNsdWRlcyhcbiAgICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQubG9jYWxOYW1lLFxuICAgICAgKSxcbiAgICB9KTtcbiAgICB0aGlzLl9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5kaXNwYXRjaENsb3NlRXZlbnQoKTtcbiAgICB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2ZvY3VzVHJhcENvbnRyb2xsZXIuZW5hYmxlZCA9IGZhbHNlO1xuXG4gICAgLy8gU3RhcnRpbmcgZnJvbSBicmVha3BvaW50IGxhcmdlLCBlbmFibGUgc2Nyb2xsXG4gICAgdGhpcy5fc2Nyb2xsSGFuZGxlci5lbmFibGVTY3JvbGwoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUtleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCFpc0Fycm93S2V5T3JQYWdlS2V5c1ByZXNzZWQoZXZ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGVuYWJsZWRBY3Rpb25zOiBFbGVtZW50W10gPSBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPFNiYk1lbnVCdXR0b25FbGVtZW50IHwgU2JiTWVudUxpbmtFbGVtZW50PihcbiAgICAgICAgJ3NiYi1tZW51LWJ1dHRvbiwgc2JiLW1lbnUtbGluaycsXG4gICAgICApLFxuICAgIClcbiAgICAgIC5jb25jYXQodGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCdzYmItbWVudS1idXR0b24nKSEpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoZWwpID0+ICghZWwuZGlzYWJsZWQgfHwgZWwuZGlzYWJsZWRJbnRlcmFjdGl2ZSkgJiYgaW50ZXJhY3Rpdml0eUNoZWNrZXIuaXNWaXNpYmxlKGVsKSxcbiAgICAgICk7XG4gICAgY29uc3QgY3VycmVudCA9IGVuYWJsZWRBY3Rpb25zLmZpbmRJbmRleCgoZTogRWxlbWVudCkgPT4gZSA9PT0gZXZ0LnRhcmdldCk7XG5cbiAgICBsZXQgbmV4dEluZGV4O1xuICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBuZXh0SW5kZXggPSBnZXROZXh0RWxlbWVudEluZGV4KGV2dCwgY3VycmVudCwgZW5hYmxlZEFjdGlvbnMubGVuZ3RoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGlmICh0aGlzLl9pc05lc3RlZCgpKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgaWYgKChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLW1lbnUtdHJpZ2dlcicpKSB7XG4gICAgICAgICAgKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ1BhZ2VVcCc6XG4gICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgbmV4dEluZGV4ID0gMDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICBjYXNlICdQYWdlRG93bic6XG4gICAgICAgIG5leHRJbmRleCA9IGVuYWJsZWRBY3Rpb25zLmxlbmd0aCAtIDE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChuZXh0SW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgKGVuYWJsZWRBY3Rpb25zW25leHRJbmRleF0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlcyB0cmlnZ2VyIGNsaWNrIGxpc3RlbmVyIG9uIHRyaWdnZXIgY2hhbmdlLlxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlUmVuZGVyUm9vdCgpOiBIVE1MRWxlbWVudCB8IERvY3VtZW50RnJhZ21lbnQge1xuICAgIGNvbnN0IHJlbmRlclJvb3QgPSBzdXBlci5jcmVhdGVSZW5kZXJSb290KCk7XG4gICAgLy8gRHVlIHRvIHRoZSBmYWN0IHRoYXQgbWVudSBjYW4gYm90aCBiZSBhIGxpc3QgYW5kIGp1c3QgYSBjb250YWluZXIsIHdlIG5lZWQgdG8gY2hlY2sgaXRzXG4gICAgLy8gc3RhdGUgYmVmb3JlIHRoZSBTYmJOYW1lZFNsb3RMaXN0TWl4aW4gaGFuZGxlcyB0aGUgc2xvdGNoYW5nZSBldmVudCwgaW4gb3JkZXIgdG8gYXZvaWRcbiAgICAvLyBpdCBpbnRlcnByZXRpbmcgdGhlIG5vbiBsaXN0IGNhc2UgYXMgYSBsaXN0LlxuICAgIHRoaXMuc2hhZG93Um9vdD8uYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsICgpID0+IHRoaXMuX3N5bmNOZWdhdGl2ZSgpLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgcmV0dXJuIHJlbmRlclJvb3Q7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmlkIHx8PSBgc2JiLW1lbnUtJHtuZXh0SWQrK31gO1xuICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZVRyaWdnZXIoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3Njcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcblxuICAgIGlmICghaXNTZXJ2ZXIgJiYgKCFuYW1lIHx8IG5hbWUgPT09ICd0cmlnZ2VyJykgJiYgdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHRyaWdnZXIgaXMgdmFsaWQgYW5kIGF0dGFjaCBjbGljayBldmVudCBsaXN0ZW5lcnMuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZVRyaWdnZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHJlbW92ZUFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXModGhpcy5fdHJpZ2dlckVsZW1lbnQpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gdGhpcy50cmlnZ2VyO1xuXG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldEFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXModGhpcy5fdHJpZ2dlckVsZW1lbnQsICdtZW51JywgdGhpcy5pZCwgdGhpcy5zdGF0ZSk7XG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMub3BlbigpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ29uc2lkZXIgdGhlIG1lbnUgYXMgbmVzdGVkIGlmIHRoZSB0cmlnZ2VyIGlzIGEgbWVudSBidXR0b24gb3IgbWVudSBsaW5rLlxuICAgIHRoaXMudG9nZ2xlU3RhdGUoXG4gICAgICAnbmVzdGVkJyxcbiAgICAgIFsnc2JiLW1lbnUtYnV0dG9uJywgJ3NiYi1tZW51LWxpbmsnXS5pbmNsdWRlcyh0aGlzLl90cmlnZ2VyRWxlbWVudC5sb2NhbE5hbWUpLFxuICAgICk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLXNiYi1tZW51LXRyaWdnZXInLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2F0dGFjaFdpbmRvd0V2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHRoaXMuX3NldE1lbnVQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIC8vIFdpdGhvdXQgY2FwdHVyZSwgb3RoZXIgc2Nyb2xsIGNvbnRleHRzIHdvdWxkIG5vdCBidWJibGUgdG8gdGhpcyBldmVudCBsaXN0ZW5lci5cbiAgICAgIC8vIENhcHR1cmUgYWxsb3dzIHVzIHRvIHJlYWN0IHRvIGFsbCBzY3JvbGwgY29udGV4dHMgaW4gdGhpcyBET00uXG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLl9zZXRNZW51UG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICAvLyBPbmx5IHRoZSBvdXRlcm1vc3QgbWVudSBuZWVkcyB0byBsaXN0ZW4gdG8gdGhlIGJhY2tkcm9wIGNsaWNrc1xuICAgIGlmICghdGhpcy5faXNOZXN0ZWQoKSkge1xuICAgICAgLy8gQ2xvc2UgbWVudSBvbiBiYWNrZHJvcCBjbGlja1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lciwge1xuICAgICAgICBzaWduYWw6IHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgdGhpcy5fY2xvc2VPbkJhY2tkcm9wQ2xpY2ssIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIENsb3NlIG1lbnUgYXQgYW55IGNsaWNrIG9uIGFuIGludGVyYWN0aXZlIGVsZW1lbnQgaW5zaWRlIHRoZSA8c2JiLW1lbnU+IHRoYXQgYnViYmxlcyB0byB0aGUgY29udGFpbmVyLlxuICBwcml2YXRlIF9pbnRlcmFjdGl2ZUVsZW1lbnRDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoXG4gICAgICBJTlRFUkFDVElWRV9FTEVNRU5UUy5pbmNsdWRlcyh0YXJnZXQubm9kZU5hbWUpICYmXG4gICAgICAhdGFyZ2V0Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSAmJlxuICAgICAgIXRhcmdldC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLW1lbnUtdHJpZ2dlcicpICYmXG4gICAgICB0YXJnZXQuaWQgIT09ICdzYmItbWVudV9fYmFjay1idXR0b24nXG4gICAgKSB7XG4gICAgICB0aGlzLmNsb3NlQWxsKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHBvaW50ZXJkb3duIGV2ZW50IHRhcmdldCBpcyB0cmlnZ2VyZWQgb24gdGhlIG1lbnUuXG4gIHByaXZhdGUgX3BvaW50ZXJEb3duTGlzdGVuZXIgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IG1lbnUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCdzYmItbWVudScpO1xuXG4gICAgLy8gVGhlIHBvaW50ZXIgZG93biBpcyBvbiB0aGUgbWVudSBvciBvbmUgb2YgaXRzIG5lc3RlZCBtZW51cy5cbiAgICB0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgPVxuICAgICAgaXNFdmVudE9uRWxlbWVudCh0aGlzLl9tZW51LCBldmVudCkgfHwgdGhpcy5fbmVzdGVkTWVudXMoKS5zb21lKChlbCkgPT4gbWVudSA9PT0gZWwpO1xuICB9O1xuXG4gIC8vIENsb3NlIG1lbnUgb24gYmFja2Ryb3AgY2xpY2suXG4gIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAvLyBUaGUgYmFja2Ryb3AgaXMgb25seSBsaXN0ZW5lZCBvbiB0aGUgbWFpbiBtZW51IChvdXRlcm1vc3QgbWVudSkuXG4gICAgLy8gVG8gY2xvc2UuXG4gICAgLy8gLSBUaGUgcG9pbnRlciBkb3duIGFuZCB1cCBuZWVkIHRvIGJlIG91dHNpZGUgdGhlIG1lbnUuXG4gICAgLy8gLSBUaGUgdGFyZ2V0IHNob3VsZCBiZSBub3Qgb24gYSBuZXN0ZWQgbWVudVxuICAgIGlmIChcbiAgICAgICF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgJiZcbiAgICAgICFpc0V2ZW50T25FbGVtZW50KHRoaXMuX21lbnUsIGV2ZW50KSAmJlxuICAgICAgIXRoaXMuX25lc3RlZE1lbnVzKCkuc29tZSgoZWwpID0+IGVsID09PSB0YXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLmNsb3NlQWxsKCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKiBDb252ZXJ0cyB0aGUgbGlua2VkIGxpc3QgaW50byBhbiBhcnJheSBvZiBTYmJNZW51RWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBfbmVzdGVkTWVudXMoKTogU2JiTWVudUVsZW1lbnRbXSB7XG4gICAgY29uc3QgbWVudXM6IFNiYk1lbnVFbGVtZW50W10gPSBbXTtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuX25lc3RlZE1lbnU7XG5cbiAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgbWVudXMucHVzaChjdXJyZW50KTtcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50Ll9uZXN0ZWRNZW51O1xuICAgIH1cblxuICAgIHJldHVybiBtZW51cztcbiAgfVxuXG4gIHByaXZhdGUgX3BhcmVudE1lbnUoKTogU2JiTWVudUVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LmNsb3Nlc3QoJ3NiYi1tZW51JykgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKiBUaGUgb3V0ZXJtb3N0IG1lbnUuICovXG4gIHByaXZhdGUgX21haW5NZW51KCk6IFNiYk1lbnVFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5faXNOZXN0ZWQoKSA/ICh0aGlzLl9wYXJlbnRNZW51KCk/Ll9tYWluTWVudSgpID8/IHRoaXMpIDogdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgX2lzTmVzdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX3BhcmVudE1lbnUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZU5lc3RlZEluZXJ0KCk6IHZvaWQge1xuICAgIHRoaXMuX2luZXJ0Q29udHJvbGxlci5yZXN0b3JlQWxsRXhlbXB0ZWQoKTtcbiAgICB0aGlzLl9tYWluTWVudSgpXG4gICAgICAuX25lc3RlZE1lbnVzKClcbiAgICAgIC5mb3JFYWNoKChtZW51KSA9PiB0aGlzLl9pbmVydENvbnRyb2xsZXIuZXhlbXB0KG1lbnUpKTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIG5lc3RlZCBtZW51IHNob3VsZCBiZSBjbG9zZWQuXG4gIHByaXZhdGUgX2hhbmRsZU1vdXNlT3ZlcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgaXNNb2JpbGUgPSB0aGlzLl9pc01vYmlsZSgpO1xuXG4gICAgLy8gQWxsIG5lc3RlZCBtZW51cyBzaG91bGQgY2xvc2UgaW4gZGVza3RvcCBtb2RlIGlmIHRoZSBjdXJzb3IgbGFuZGVkIG9uXG4gICAgLy8gYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgY29udGFpbmVyLCB0aGUgY29udGFpbmVyJ3Mgc2Nyb2xsYmFyIG9yIHRoZSB0cmlnZ2VyIGl0c2VsZlxuICAgIGlmIChcbiAgICAgICFpc01vYmlsZSAmJlxuICAgICAgdGhpcy5fbmVzdGVkTWVudSAmJlxuICAgICAgIWVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzYmItbWVudV9fY29udGVudCcpICYmXG4gICAgICAhKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJykgPT09ICd0cnVlJylcbiAgICApIHtcbiAgICAgIHRoaXMuX25lc3RlZE1lbnUuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLW1lbnUtdHJpZ2dlcicpICYmICFpc01vYmlsZSkge1xuICAgICAgZWxlbWVudC5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBtZW51IHBvc2l0aW9uICh4LCB5KSB0byAnMCcgb25jZSB0aGUgbWVudSBpcyBjbG9zZWQgYW5kIHRoZSB0cmFuc2l0aW9uIGVuZGVkIHRvIHByZXZlbnQgdGhlXG4gIC8vIHZpZXdwb3J0IGZyb20gb3ZlcmZsb3dpbmcuIEFuZCBzZXQgdGhlIGZvY3VzIHRvIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudCBvbmNlIHRoZSBtZW51IGlzIG9wZW4uXG4gIC8vIEluIHJhcmUgY2FzZXMgaXQgY2FuIGJlIHRoYXQgdGhlIGFuaW1hdGlvbkVuZCBldmVudCBpcyB0cmlnZ2VyZWQgdHdpY2UuXG4gIC8vIFRvIGF2b2lkIGVudGVyaW5nIGEgY29ycnVwdCBzdGF0ZSwgZXhpdCB3aGVuIHN0YXRlIGlzIG5vdCBleHBlY3RlZC5cbiAgcHJpdmF0ZSBfb25NZW51QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgfHwgZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4tc2lkZXdheXMnKSAmJlxuICAgICAgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnXG4gICAgKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnIHx8IGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZS1zaWRld2F5cycpICYmXG4gICAgICB0aGlzLnN0YXRlID09PSAnY2xvc2luZydcbiAgICApIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgbWVudSBwb3NpdGlvbiBhbmQgbWF4IGhlaWdodCBpZiB0aGUgYnJlYWtwb2ludCBpcyBsYXJnZS11bHRyYS5cbiAgcHJpdmF0ZSBfc2V0TWVudVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIC8vIFN0YXJ0aW5nIGZyb20gYnJlYWtwb2ludCBsYXJnZVxuICAgIGlmICh0aGlzLl9pc01vYmlsZSgpIHx8ICF0aGlzLl9tZW51IHx8ICF0aGlzLl90cmlnZ2VyRWxlbWVudCB8fCB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZW51UG9zaXRpb24gPSAhdGhpcy5faXNOZXN0ZWQoKVxuICAgICAgPyBnZXRFbGVtZW50UG9zaXRpb24oXG4gICAgICAgICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLW1lbnVfX2NvbnRlbnQnKSEsXG4gICAgICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQsXG4gICAgICAgICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLW1lbnVfX2NvbnRhaW5lcicpISxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2ZXJ0aWNhbE9mZnNldDogTUVOVV9PRkZTRVQsXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgOiBnZXRFbGVtZW50UG9zaXRpb25Ib3Jpem9udGFsKFxuICAgICAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignLnNiYi1tZW51X19jb250ZW50JykhLFxuICAgICAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LFxuICAgICAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignLnNiYi1tZW51X19jb250YWluZXInKSEsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaG9yaXpvbnRhbE9mZnNldDogTUVOVV9PRkZTRVQsXG4gICAgICAgICAgICB2ZXJ0aWNhbE9mZnNldDogTkVTVEVEX01FTlVfT0ZGU0VULFxuICAgICAgICAgICAgY29udGVudFNlbGVjdG9yOiAnLnNiYi1tZW51X19jb250ZW50JyxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItbWVudS1wb3NpdGlvbi14JywgYCR7bWVudVBvc2l0aW9uLmxlZnR9cHhgKTtcbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1tZW51LXBvc2l0aW9uLXknLCBgJHttZW51UG9zaXRpb24udG9wfXB4YCk7XG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItbWVudS1tYXgtaGVpZ2h0JywgbWVudVBvc2l0aW9uLm1heEhlaWdodCk7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jTmVnYXRpdmUoKTogdm9pZCB7XG4gICAgLy8gTGlua3MgYW5kIGJ1dHRvbnMgYXJlIHRoZSBtb3N0IGV4cGVjdGVkIGNvbnRlbnRzIHdoaWNoIGhhdmUgYSBuZWdhdGl2ZSBwcm9wZXJ0eVxuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtc2JiLWxpbmtdLCBbZGF0YS1zYmItYnV0dG9uXScpPy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xuICAgICAgY3VzdG9tRWxlbWVudHMudXBncmFkZShlbCk7XG4gICAgICAoZWwgYXMgRWxlbWVudCAmIFNiYk5lZ2F0aXZlTWl4aW5UeXBlKS5uZWdhdGl2ZSA9ICF0aGlzLl9kYXJrTW9kZUNvbnRyb2xsZXIubWF0Y2hlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21lZGlhTWF0Y2hlci5tYXRjaGVzKHRoaXMuX21vYmlsZUJyZWFrcG9pbnQpID8/IHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAvLyBUT0RPOiBIYW5kbGUgY2FzZSB3aXRoIG90aGVyIGVsZW1lbnRzIHRoYW4gc2JiLW1lbnUtYnV0dG9uL3NiYi1tZW51LWxpbmsuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLW1lbnVfX2NvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgQGFuaW1hdGlvbmVuZD0ke3RoaXMuX29uTWVudUFuaW1hdGlvbkVuZH1cbiAgICAgICAgICBAbW91c2VvdmVyPSR7KGU6IE1vdXNlRXZlbnQpID0+IHRoaXMuX2hhbmRsZU1vdXNlT3ZlcihlKX1cbiAgICAgICAgICBjbGFzcz1cInNiYi1tZW51XCJcbiAgICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fbWVudSA9IGVsIGFzIEhUTUxEaXZFbGVtZW50KSl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBAY2xpY2s9JHsoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLl9pbnRlcmFjdGl2ZUVsZW1lbnRDbGljayhldmVudCl9XG4gICAgICAgICAgICBAc2Nyb2xsPSR7KGU6IEV2ZW50KSA9PiBmb3J3YXJkRXZlbnQoZSwgZG9jdW1lbnQpfVxuICAgICAgICAgICAgY2xhc3M9XCJzYmItbWVudV9fY29udGVudFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgICAgPHNiYi1kaXZpZGVyPjwvc2JiLWRpdmlkZXI+XG4gICAgICAgICAgICA8c2JiLW1lbnUtYnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwic2JiLW1lbnVfX2JhY2stYnV0dG9uXCJcbiAgICAgICAgICAgICAgQGNsaWNrPSR7KCkgPT4gdGhpcy5jbG9zZSgpfVxuICAgICAgICAgICAgICBpY29uLW5hbWU9XCJjaGV2cm9uLXNtYWxsLWxlZnQtc21hbGxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAke2kxOG5Hb0JhY2tbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgICAgICA8L3NiYi1tZW51LWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItbWVudSc6IFNiYk1lbnVFbGVtZW50O1xuICB9XG59XG4iXSwi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
|
|
689
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9tZW51L21lbnUvbWVudS5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHtcbiAgZ2V0TmV4dEVsZW1lbnRJbmRleCxcbiAgaW50ZXJhY3Rpdml0eUNoZWNrZXIsXG4gIGlzQXJyb3dLZXlPclBhZ2VLZXlzUHJlc3NlZCxcbiAgU2JiRm9jdXNUcmFwQ29udHJvbGxlcixcbn0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LnRzJztcbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7XG4gIFNiYkRhcmtNb2RlQ29udHJvbGxlcixcbiAgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIsXG4gIFNiYkluZXJ0Q29udHJvbGxlcixcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxuICBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyLFxuICBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQmVsb3csXG59IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMudHMnO1xuaW1wb3J0IHsgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24sIFNiYlNjcm9sbEhhbmRsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBmb3J3YXJkRXZlbnQgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLnRzJztcbmltcG9ydCB7IGkxOG5Hb0JhY2sgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyDJtXN0YXRlQ29udHJvbGxlciwgdHlwZSBTYmJOZWdhdGl2ZU1peGluVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7XG4gIGdldEVsZW1lbnRQb3NpdGlvbixcbiAgZ2V0RWxlbWVudFBvc2l0aW9uSG9yaXpvbnRhbCxcbiAgaXNFdmVudE9uRWxlbWVudCxcbiAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyQXR0cmlidXRlcyxcbiAgc2V0QXJpYU92ZXJsYXlUcmlnZ2VyQXR0cmlidXRlcyxcbn0gZnJvbSAnLi4vLi4vY29yZS9vdmVybGF5LnRzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJy4uLy4uL2NvcmUvc3R5bGVzLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiTWVudUJ1dHRvbkVsZW1lbnQgfSBmcm9tICcuLi9tZW51LWJ1dHRvbi50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYk1lbnVMaW5rRWxlbWVudCB9IGZyb20gJy4uL21lbnUtbGluay9tZW51LWxpbmsuY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vbWVudS5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2RpdmlkZXIudHMnO1xuaW1wb3J0ICcuLi9tZW51LWJ1dHRvbi50cyc7XG5cbmNvbnN0IE1FTlVfT0ZGU0VUID0gODtcbmNvbnN0IE5FU1RFRF9NRU5VX09GRlNFVCA9IC00O1xuY29uc3QgSU5URVJBQ1RJVkVfRUxFTUVOVFMgPSBbXG4gICdBJyxcbiAgJ0JVVFRPTicsXG4gICdTQkItQlVUVE9OJyxcbiAgJ1NCQi1CVVRUT04tTElOSycsXG4gICdTQkItTElOSycsXG4gICdTQkItQkxPQ0stTElOSycsXG4gICdTQkItTElOSy1CVVRUT04nLFxuICAnU0JCLUJMT0NLLUxJTkstQlVUVE9OJyxcbiAgJ1NCQi1NRU5VLUJVVFRPTicsXG4gICdTQkItTUVOVS1MSU5LJyxcbl07XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgY29udGV4dHVhbCBtZW51IHdpdGggb25lIG9yIG1vcmUgYWN0aW9uIGVsZW1lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1tZW51LWJ1dHRvbmAvYHNiYi1tZW51LWxpbmtgIG9yIG90aGVyIGVsZW1lbnRzIHRvIHRoZSBtZW51LlxuICogQGNzc3Byb3AgWy0tc2JiLW1lbnUtei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItbWVudScpXG5jbGFzcyBTYmJNZW51RWxlbWVudCBleHRlbmRzIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgc3R5bGVdO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAnbWVudSc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSBtZW51IG92ZXJsYXkuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfbWVudSE6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckFib3J0Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25NZW51OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9mb2N1c1RyYXBDb250cm9sbGVyID0gbmV3IFNiYkZvY3VzVHJhcENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX3Njcm9sbEhhbmRsZXIgPSBuZXcgU2JiU2Nyb2xsSGFuZGxlcigpO1xuICBwcml2YXRlIF9pbmVydENvbnRyb2xsZXIgPSBuZXcgU2JiSW5lcnRDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9tb2JpbGVCcmVha3BvaW50ID0gU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRTbWFsbEFuZEJlbG93O1xuICBwcml2YXRlIF9tZWRpYU1hdGNoZXIgPSBuZXcgU2JiTWVkaWFNYXRjaGVyQ29udHJvbGxlcih0aGlzLCB7XG4gICAgW3RoaXMuX21vYmlsZUJyZWFrcG9pbnRdOiAobWF0Y2hlcykgPT4ge1xuICAgICAgaWYgKG1hdGNoZXMgJiYgKHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJyB8fCB0aGlzLnN0YXRlID09PSAnb3BlbmVkJykpIHtcbiAgICAgICAgdGhpcy5fc2Nyb2xsSGFuZGxlci5kaXNhYmxlU2Nyb2xsKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuICBwcml2YXRlIF9kYXJrTW9kZUNvbnRyb2xsZXIgPSBuZXcgU2JiRGFya01vZGVDb250cm9sbGVyKHRoaXMsICgpID0+IHRoaXMuX3N5bmNOZWdhdGl2ZSgpKTtcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9uZXN0ZWRNZW51OiBTYmJNZW51RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUtleURvd24oZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGVzY2FwZVN0cmF0ZWd5KCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VBbGwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgbWVudSBvbiB0cmlnZ2VyIGNsaWNrLlxuICAgKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnIHx8XG4gICAgICB0aGlzLnN0YXRlID09PSAnb3BlbmVkJyB8fFxuICAgICAgIXRoaXMuX21lbnUgfHxcbiAgICAgICF0aGlzLmRpc3BhdGNoQmVmb3JlT3BlbkV2ZW50KClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNOZXN0ZWQoKSkge1xuICAgICAgY29uc3QgcGFyZW50TWVudSA9IHRoaXMuX3BhcmVudE1lbnUoKSE7XG4gICAgICBwYXJlbnRNZW51LmludGVybmFscy5zdGF0ZXMuYWRkKCduZXN0ZWQtY2hpbGQnKTtcblxuICAgICAgLy8gSW4gY2FzZSB3ZSBjaGFuZ2UgYmV0d2VlbiBhcnJvdyBrZXkgbmF2aWdhdGlvbiBhbmQgbW91c2UgbmF2aWdhdGlvbiwgaXQgY2FuIGJlIHRoYXQgYW5vdGhlclxuICAgICAgLy8gbmVzdGVkIHBhcmVudCBtZW51IGlzIHN0aWxsIG9wZW4uIFdlIGhhdmUgdG8gY2xvc2UgaXQuXG4gICAgICBpZiAocGFyZW50TWVudS5fbmVzdGVkTWVudSAhPT0gdGhpcykge1xuICAgICAgICBwYXJlbnRNZW51Ll9uZXN0ZWRNZW51Py5jbG9zZSgpO1xuICAgICAgfVxuICAgICAgcGFyZW50TWVudS5fbmVzdGVkTWVudSA9IHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93UG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICB0aGlzLl9zZXRNZW51UG9zaXRpb24oKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcblxuICAgIC8vIEZyb20gemVybyB0byBsYXJnZSwgZGlzYWJsZSBzY3JvbGxcbiAgICBpZiAodGhpcy5faXNNb2JpbGUoKSkge1xuICAgICAgdGhpcy5fc2Nyb2xsSGFuZGxlci5kaXNhYmxlU2Nyb2xsKCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xvc2VzIHRoZSBtZW51IGFuZCBhbGwgaXRzIG5lc3RlZCBtZW51cy4gKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb3NlKCk7XG4gIH1cblxuICAvKiogQ2xvc2VzIHRoZSBtZW51IGFuZCBhbGwgcmVsYXRlZCBtZW51cyAobmVzdGVkIGFuZCBwYXJlbnQgbWVudXMpLiAqL1xuICBwdWJsaWMgY2xvc2VBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5fbWFpbk1lbnUoKS5fY2xvc2UodHJ1ZSk7XG4gIH1cblxuICAvKiogQHBhcmFtIFtjbG9zZUFsbD0nZmFsc2UnXSAtIElmIHRydWUsIGl0IGVuc3VyZXMgYW5pbWF0aW9ucyBhcmUgY29ycmVjdCBieSB0b2dnbGluZyBzb21lIHN0YXRlcyB3aGVuIGNsb3NpbmcgYWxsIHJlbGF0ZWQgbWVudXMgYXQgb25jZS4gKi9cbiAgcHJpdmF0ZSBfY2xvc2UoY2xvc2VBbGwgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICgodGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnICYmICF0aGlzLl9pc05lc3RlZCgpKSB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENsb3NlIG5lc3RlZCBtZW51cyBmaXJzdFxuICAgIHRoaXMuX25lc3RlZE1lbnU/Ll9jbG9zZShjbG9zZUFsbCk7XG5cbiAgICBpZiAodGhpcy5faXNOZXN0ZWQoKSkge1xuICAgICAgY29uc3QgcGFyZW50TWVudSA9IHRoaXMuX3BhcmVudE1lbnUoKSE7XG4gICAgICBpZiAoY2xvc2VBbGwpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZCgnY2xvc2UtYWxsJyk7XG4gICAgICAgIHBhcmVudE1lbnUuaW50ZXJuYWxzLnN0YXRlcy5hZGQoJ3NraXAtYW5pbWF0aW9uJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKCdjbG9zZS1hbGwnKTtcbiAgICAgICAgcGFyZW50TWVudS5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSgnc2tpcC1hbmltYXRpb24nKTtcbiAgICAgIH1cbiAgICAgIHBhcmVudE1lbnUuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoJ25lc3RlZC1jaGlsZCcpO1xuICAgICAgcGFyZW50TWVudS5fbmVzdGVkTWVudSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItbWVudS1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuXG4gICAgaWYgKCF0aGlzLl9pc05lc3RlZCgpKSB7XG4gICAgICB0aGlzLl9pbmVydENvbnRyb2xsZXIuYWN0aXZhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdXBkYXRlTmVzdGVkSW5lcnQoKTtcbiAgICB9XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuY29ubmVjdCgpO1xuICAgIHRoaXMuX2ZvY3VzVHJhcENvbnRyb2xsZXIuZm9jdXNJbml0aWFsRWxlbWVudCgpO1xuICAgIHRoaXMuX2ZvY3VzVHJhcENvbnRyb2xsZXIuZW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5fYXR0YWNoV2luZG93RXZlbnRzKCk7XG4gICAgdGhpcy5kaXNwYXRjaE9wZW5FdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSgnc2tpcC1hbmltYXRpb24nKTtcbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKCdjbG9zZS1hbGwnKTtcbiAgICB0aGlzLmhpZGVQb3BvdmVyPy4oKTtcblxuICAgIHRoaXMuX21lbnU/LmZpcnN0RWxlbWVudENoaWxkPy5zY3JvbGxUbygwLCAwKTtcbiAgICBpZiAoIXRoaXMuX2lzTmVzdGVkKCkpIHtcbiAgICAgIHRoaXMuX2luZXJ0Q29udHJvbGxlci5kZWFjdGl2YXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3VwZGF0ZU5lc3RlZEluZXJ0KCk7XG4gICAgfVxuICAgIC8vIE1hbnVhbGx5IGZvY3VzIGxhc3QgZm9jdXNlZCBlbGVtZW50XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LmZvY3VzKHtcbiAgICAgIC8vIFdoZW4gaW5zaWRlIHRoZSBzYmItaGVhZGVyLCB3ZSBwcmV2ZW50IHRoZSBzY3JvbGwgdG8gYXZvaWQgdGhlIHNuYXBwaW5nIHRvIHRoZSB0b3Agb2YgdGhlIHBhZ2VcbiAgICAgIHByZXZlbnRTY3JvbGw6IFsnc2JiLWhlYWRlci1idXR0b24nLCAnc2JiLWhlYWRlci1saW5rJ10uaW5jbHVkZXMoXG4gICAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmxvY2FsTmFtZSxcbiAgICAgICksXG4gICAgfSk7XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9mb2N1c1RyYXBDb250cm9sbGVyLmVuYWJsZWQgPSBmYWxzZTtcblxuICAgIC8vIFN0YXJ0aW5nIGZyb20gYnJlYWtwb2ludCBsYXJnZSwgZW5hYmxlIHNjcm9sbFxuICAgIHRoaXMuX3Njcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVLZXlEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICghaXNBcnJvd0tleU9yUGFnZUtleXNQcmVzc2VkKGV2dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCBlbmFibGVkQWN0aW9uczogRWxlbWVudFtdID0gQXJyYXkuZnJvbShcbiAgICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbDxTYmJNZW51QnV0dG9uRWxlbWVudCB8IFNiYk1lbnVMaW5rRWxlbWVudD4oXG4gICAgICAgICdzYmItbWVudS1idXR0b24sIHNiYi1tZW51LWxpbmsnLFxuICAgICAgKSxcbiAgICApXG4gICAgICAuY29uY2F0KHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3Rvcignc2JiLW1lbnUtYnV0dG9uJykhKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKGVsKSA9PiAoIWVsLmRpc2FibGVkIHx8IGVsLmRpc2FibGVkSW50ZXJhY3RpdmUpICYmIGludGVyYWN0aXZpdHlDaGVja2VyLmlzVmlzaWJsZShlbCksXG4gICAgICApO1xuICAgIGNvbnN0IGN1cnJlbnQgPSBlbmFibGVkQWN0aW9ucy5maW5kSW5kZXgoKGU6IEVsZW1lbnQpID0+IGUgPT09IGV2dC50YXJnZXQpO1xuXG4gICAgbGV0IG5leHRJbmRleDtcbiAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgbmV4dEluZGV4ID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldnQsIGN1cnJlbnQsIGVuYWJsZWRBY3Rpb25zLmxlbmd0aCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBpZiAodGhpcy5faXNOZXN0ZWQoKSkge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIGlmICgoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkubWF0Y2hlcygnOnN0YXRlKHNiYi1tZW51LXRyaWdnZXIpJykpIHtcbiAgICAgICAgICAoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICBuZXh0SW5kZXggPSAwO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRW5kJzpcbiAgICAgIGNhc2UgJ1BhZ2VEb3duJzpcbiAgICAgICAgbmV4dEluZGV4ID0gZW5hYmxlZEFjdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKG5leHRJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAoZW5hYmxlZEFjdGlvbnNbbmV4dEluZGV4XSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZW1vdmVzIHRyaWdnZXIgY2xpY2sgbGlzdGVuZXIgb24gdHJpZ2dlciBjaGFuZ2UuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGVSZW5kZXJSb290KCk6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCB7XG4gICAgY29uc3QgcmVuZGVyUm9vdCA9IHN1cGVyLmNyZWF0ZVJlbmRlclJvb3QoKTtcbiAgICAvLyBEdWUgdG8gdGhlIGZhY3QgdGhhdCBtZW51IGNhbiBib3RoIGJlIGEgbGlzdCBhbmQganVzdCBhIGNvbnRhaW5lciwgd2UgbmVlZCB0byBjaGVjayBpdHNcbiAgICAvLyBzdGF0ZSBiZWZvcmUgdGhlIFNiYk5hbWVkU2xvdExpc3RNaXhpbiBoYW5kbGVzIHRoZSBzbG90Y2hhbmdlIGV2ZW50LCBpbiBvcmRlciB0byBhdm9pZFxuICAgIC8vIGl0IGludGVycHJldGluZyB0aGUgbm9uIGxpc3QgY2FzZSBhcyBhIGxpc3QuXG4gICAgdGhpcy5zaGFkb3dSb290Py5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgKCkgPT4gdGhpcy5fc3luY05lZ2F0aXZlKCksIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gcmVuZGVyUm9vdDtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLnBvcG92ZXIgPSAnbWFudWFsJztcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuaWQgfHw9IGBzYmItbWVudS0ke25leHRJZCsrfWA7XG4gICAgaWYgKHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fc2Nyb2xsSGFuZGxlci5lbmFibGVTY3JvbGwoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFpc1NlcnZlciAmJiAoIW5hbWUgfHwgbmFtZSA9PT0gJ3RyaWdnZXInKSAmJiB0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZVRyaWdnZXIoKTtcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgdHJpZ2dlciBpcyB2YWxpZCBhbmQgYXR0YWNoIGNsaWNrIGV2ZW50IGxpc3RlbmVycy5cbiAgcHJpdmF0ZSBfY29uZmlndXJlVHJpZ2dlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmlnZ2VyID09PSB0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyQXR0cmlidXRlcyh0aGlzLl90cmlnZ2VyRWxlbWVudCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0aGlzLnRyaWdnZXI7XG5cbiAgICBpZiAoIXRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0QXJpYU92ZXJsYXlUcmlnZ2VyQXR0cmlidXRlcyh0aGlzLl90cmlnZ2VyRWxlbWVudCwgJ21lbnUnLCB0aGlzLmlkLCB0aGlzLnN0YXRlKTtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICAvLyBDb25zaWRlciB0aGUgbWVudSBhcyBuZXN0ZWQgaWYgdGhlIHRyaWdnZXIgaXMgYSBtZW51IGJ1dHRvbiBvciBtZW51IGxpbmsuXG4gICAgdGhpcy50b2dnbGVTdGF0ZShcbiAgICAgICduZXN0ZWQnLFxuICAgICAgWydzYmItbWVudS1idXR0b24nLCAnc2JiLW1lbnUtbGluayddLmluY2x1ZGVzKHRoaXMuX3RyaWdnZXJFbGVtZW50LmxvY2FsTmFtZSksXG4gICAgKTtcbiAgICDJtXN0YXRlQ29udHJvbGxlcih0aGlzLl90cmlnZ2VyRWxlbWVudCkuYWRkKCdzYmItbWVudS10cmlnZ2VyJyk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hXaW5kb3dFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl9zZXRNZW51UG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICAvLyBXaXRob3V0IGNhcHR1cmUsIG90aGVyIHNjcm9sbCBjb250ZXh0cyB3b3VsZCBub3QgYnViYmxlIHRvIHRoaXMgZXZlbnQgbGlzdGVuZXIuXG4gICAgICAvLyBDYXB0dXJlIGFsbG93cyB1cyB0byByZWFjdCB0byBhbGwgc2Nyb2xsIGNvbnRleHRzIGluIHRoaXMgRE9NLlxuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0TWVudVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gT25seSB0aGUgb3V0ZXJtb3N0IG1lbnUgbmVlZHMgdG8gbGlzdGVuIHRvIHRoZSBiYWNrZHJvcCBjbGlja3NcbiAgICBpZiAoIXRoaXMuX2lzTmVzdGVkKCkpIHtcbiAgICAgIC8vIENsb3NlIG1lbnUgb24gYmFja2Ryb3AgY2xpY2tcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIHRoaXMuX3BvaW50ZXJEb3duTGlzdGVuZXIsIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0pO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrLCB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBDbG9zZSBtZW51IGF0IGFueSBjbGljayBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IGluc2lkZSB0aGUgPHNiYi1tZW51PiB0aGF0IGJ1YmJsZXMgdG8gdGhlIGNvbnRhaW5lci5cbiAgcHJpdmF0ZSBfaW50ZXJhY3RpdmVFbGVtZW50Q2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKFxuICAgICAgSU5URVJBQ1RJVkVfRUxFTUVOVFMuaW5jbHVkZXModGFyZ2V0Lm5vZGVOYW1lKSAmJlxuICAgICAgIXRhcmdldC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgJiZcbiAgICAgICF0YXJnZXQubWF0Y2hlcygnOnN0YXRlKHNiYi1tZW51LXRyaWdnZXIpJykgJiZcbiAgICAgIHRhcmdldC5pZCAhPT0gJ3NiYi1tZW51X19iYWNrLWJ1dHRvbidcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2VBbGwoKTtcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgcG9pbnRlcmRvd24gZXZlbnQgdGFyZ2V0IGlzIHRyaWdnZXJlZCBvbiB0aGUgbWVudS5cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgY29uc3QgbWVudSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJ3NiYi1tZW51Jyk7XG5cbiAgICAvLyBUaGUgcG9pbnRlciBkb3duIGlzIG9uIHRoZSBtZW51IG9yIG9uZSBvZiBpdHMgbmVzdGVkIG1lbnVzLlxuICAgIHRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTWVudSA9XG4gICAgICBpc0V2ZW50T25FbGVtZW50KHRoaXMuX21lbnUsIGV2ZW50KSB8fCB0aGlzLl9uZXN0ZWRNZW51cygpLnNvbWUoKGVsKSA9PiBtZW51ID09PSBlbCk7XG4gIH07XG5cbiAgLy8gQ2xvc2UgbWVudSBvbiBiYWNrZHJvcCBjbGljay5cbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgIC8vIFRoZSBiYWNrZHJvcCBpcyBvbmx5IGxpc3RlbmVkIG9uIHRoZSBtYWluIG1lbnUgKG91dGVybW9zdCBtZW51KS5cbiAgICAvLyBUbyBjbG9zZS5cbiAgICAvLyAtIFRoZSBwb2ludGVyIGRvd24gYW5kIHVwIG5lZWQgdG8gYmUgb3V0c2lkZSB0aGUgbWVudS5cbiAgICAvLyAtIFRoZSB0YXJnZXQgc2hvdWxkIGJlIG5vdCBvbiBhIG5lc3RlZCBtZW51XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTWVudSAmJlxuICAgICAgIWlzRXZlbnRPbkVsZW1lbnQodGhpcy5fbWVudSwgZXZlbnQpICYmXG4gICAgICAhdGhpcy5fbmVzdGVkTWVudXMoKS5zb21lKChlbCkgPT4gZWwgPT09IHRhcmdldClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2VBbGwoKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqIENvbnZlcnRzIHRoZSBsaW5rZWQgbGlzdCBpbnRvIGFuIGFycmF5IG9mIFNiYk1lbnVFbGVtZW50LiAqL1xuICBwcml2YXRlIF9uZXN0ZWRNZW51cygpOiBTYmJNZW51RWxlbWVudFtdIHtcbiAgICBjb25zdCBtZW51czogU2JiTWVudUVsZW1lbnRbXSA9IFtdO1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5fbmVzdGVkTWVudTtcblxuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBtZW51cy5wdXNoKGN1cnJlbnQpO1xuICAgICAgY3VycmVudCA9IGN1cnJlbnQuX25lc3RlZE1lbnU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbnVzO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyZW50TWVudSgpOiBTYmJNZW51RWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyRWxlbWVudD8uY2xvc2VzdCgnc2JiLW1lbnUnKSA/PyBudWxsO1xuICB9XG5cbiAgLyoqIFRoZSBvdXRlcm1vc3QgbWVudS4gKi9cbiAgcHJpdmF0ZSBfbWFpbk1lbnUoKTogU2JiTWVudUVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9pc05lc3RlZCgpID8gKHRoaXMuX3BhcmVudE1lbnUoKT8uX21haW5NZW51KCkgPz8gdGhpcykgOiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNOZXN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fcGFyZW50TWVudSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlTmVzdGVkSW5lcnQoKTogdm9pZCB7XG4gICAgdGhpcy5faW5lcnRDb250cm9sbGVyLnJlc3RvcmVBbGxFeGVtcHRlZCgpO1xuICAgIHRoaXMuX21haW5NZW51KClcbiAgICAgIC5fbmVzdGVkTWVudXMoKVxuICAgICAgLmZvckVhY2goKG1lbnUpID0+IHRoaXMuX2luZXJ0Q29udHJvbGxlci5leGVtcHQobWVudSkpO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgbmVzdGVkIG1lbnUgc2hvdWxkIGJlIGNsb3NlZC5cbiAgcHJpdmF0ZSBfaGFuZGxlTW91c2VPdmVyKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBpc01vYmlsZSA9IHRoaXMuX2lzTW9iaWxlKCk7XG5cbiAgICAvLyBBbGwgbmVzdGVkIG1lbnVzIHNob3VsZCBjbG9zZSBpbiBkZXNrdG9wIG1vZGUgaWYgdGhlIGN1cnNvciBsYW5kZWQgb25cbiAgICAvLyBhbnl0aGluZyBvdGhlciB0aGFuIHRoZSBjb250YWluZXIsIHRoZSBjb250YWluZXIncyBzY3JvbGxiYXIgb3IgdGhlIHRyaWdnZXIgaXRzZWxmXG4gICAgaWYgKFxuICAgICAgIWlzTW9iaWxlICYmXG4gICAgICB0aGlzLl9uZXN0ZWRNZW51ICYmXG4gICAgICAhZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3NiYi1tZW51X19jb250ZW50JykgJiZcbiAgICAgICEoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKSA9PT0gJ3RydWUnKVxuICAgICkge1xuICAgICAgdGhpcy5fbmVzdGVkTWVudS5jbG9zZSgpO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50Lm1hdGNoZXMoJzpzdGF0ZShzYmItbWVudS10cmlnZ2VyKScpICYmICFpc01vYmlsZSkge1xuICAgICAgZWxlbWVudC5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBtZW51IHBvc2l0aW9uICh4LCB5KSB0byAnMCcgb25jZSB0aGUgbWVudSBpcyBjbG9zZWQgYW5kIHRoZSB0cmFuc2l0aW9uIGVuZGVkIHRvIHByZXZlbnQgdGhlXG4gIC8vIHZpZXdwb3J0IGZyb20gb3ZlcmZsb3dpbmcuIEFuZCBzZXQgdGhlIGZvY3VzIHRvIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudCBvbmNlIHRoZSBtZW51IGlzIG9wZW4uXG4gIC8vIEluIHJhcmUgY2FzZXMgaXQgY2FuIGJlIHRoYXQgdGhlIGFuaW1hdGlvbkVuZCBldmVudCBpcyB0cmlnZ2VyZWQgdHdpY2UuXG4gIC8vIFRvIGF2b2lkIGVudGVyaW5nIGEgY29ycnVwdCBzdGF0ZSwgZXhpdCB3aGVuIHN0YXRlIGlzIG5vdCBleHBlY3RlZC5cbiAgcHJpdmF0ZSBfb25NZW51QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgfHwgZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4tc2lkZXdheXMnKSAmJlxuICAgICAgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnXG4gICAgKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnIHx8IGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZS1zaWRld2F5cycpICYmXG4gICAgICB0aGlzLnN0YXRlID09PSAnY2xvc2luZydcbiAgICApIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgbWVudSBwb3NpdGlvbiBhbmQgbWF4IGhlaWdodCBpZiB0aGUgYnJlYWtwb2ludCBpcyBsYXJnZS11bHRyYS5cbiAgcHJpdmF0ZSBfc2V0TWVudVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIC8vIFN0YXJ0aW5nIGZyb20gYnJlYWtwb2ludCBsYXJnZVxuICAgIGlmICh0aGlzLl9pc01vYmlsZSgpIHx8ICF0aGlzLl9tZW51IHx8ICF0aGlzLl90cmlnZ2VyRWxlbWVudCB8fCB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZW51UG9zaXRpb24gPSAhdGhpcy5faXNOZXN0ZWQoKVxuICAgICAgPyBnZXRFbGVtZW50UG9zaXRpb24oXG4gICAgICAgICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLW1lbnVfX2NvbnRlbnQnKSEsXG4gICAgICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQsXG4gICAgICAgICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLW1lbnVfX2NvbnRhaW5lcicpISxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2ZXJ0aWNhbE9mZnNldDogTUVOVV9PRkZTRVQsXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgOiBnZXRFbGVtZW50UG9zaXRpb25Ib3Jpem9udGFsKFxuICAgICAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignLnNiYi1tZW51X19jb250ZW50JykhLFxuICAgICAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LFxuICAgICAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignLnNiYi1tZW51X19jb250YWluZXInKSEsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaG9yaXpvbnRhbE9mZnNldDogTUVOVV9PRkZTRVQsXG4gICAgICAgICAgICB2ZXJ0aWNhbE9mZnNldDogTkVTVEVEX01FTlVfT0ZGU0VULFxuICAgICAgICAgICAgY29udGVudFNlbGVjdG9yOiAnLnNiYi1tZW51X19jb250ZW50JyxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItbWVudS1wb3NpdGlvbi14JywgYCR7bWVudVBvc2l0aW9uLmxlZnR9cHhgKTtcbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1tZW51LXBvc2l0aW9uLXknLCBgJHttZW51UG9zaXRpb24udG9wfXB4YCk7XG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItbWVudS1tYXgtaGVpZ2h0JywgbWVudVBvc2l0aW9uLm1heEhlaWdodCk7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jTmVnYXRpdmUoKTogdm9pZCB7XG4gICAgLy8gTGlua3MgYW5kIGJ1dHRvbnMgYXJlIHRoZSBtb3N0IGV4cGVjdGVkIGNvbnRlbnRzIHdoaWNoIGhhdmUgYSBuZWdhdGl2ZSBwcm9wZXJ0eVxuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnOnN0YXRlKHNiYi1saW5rKSwgOnN0YXRlKHNiYi1idXR0b24pJyk/LmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XG4gICAgICBjdXN0b21FbGVtZW50cy51cGdyYWRlKGVsKTtcbiAgICAgIChlbCBhcyBFbGVtZW50ICYgU2JiTmVnYXRpdmVNaXhpblR5cGUpLm5lZ2F0aXZlID0gIXRoaXMuX2RhcmtNb2RlQ29udHJvbGxlci5tYXRjaGVzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbWVkaWFNYXRjaGVyLm1hdGNoZXModGhpcy5fbW9iaWxlQnJlYWtwb2ludCkgPz8gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1tZW51X19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHt0aGlzLl9vbk1lbnVBbmltYXRpb25FbmR9XG4gICAgICAgICAgQG1vdXNlb3Zlcj0keyhlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLl9oYW5kbGVNb3VzZU92ZXIoZSl9XG4gICAgICAgICAgY2xhc3M9XCJzYmItbWVudVwiXG4gICAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMuX21lbnUgPSBlbCBhcyBIVE1MRGl2RWxlbWVudCkpfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgQGNsaWNrPSR7KGV2ZW50OiBFdmVudCkgPT4gdGhpcy5faW50ZXJhY3RpdmVFbGVtZW50Q2xpY2soZXZlbnQpfVxuICAgICAgICAgICAgQHNjcm9sbD0keyhlOiBFdmVudCkgPT4gZm9yd2FyZEV2ZW50KGUsIGRvY3VtZW50KX1cbiAgICAgICAgICAgIGNsYXNzPVwic2JiLW1lbnVfX2NvbnRlbnRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgICAgIDxzYmItZGl2aWRlcj48L3NiYi1kaXZpZGVyPlxuICAgICAgICAgICAgPHNiYi1tZW51LWJ1dHRvblxuICAgICAgICAgICAgICBpZD1cInNiYi1tZW51X19iYWNrLWJ1dHRvblwiXG4gICAgICAgICAgICAgIEBjbGljaz0keygpID0+IHRoaXMuY2xvc2UoKX1cbiAgICAgICAgICAgICAgaWNvbi1uYW1lPVwiY2hldnJvbi1zbWFsbC1sZWZ0LXNtYWxsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgJHtpMThuR29CYWNrW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgPC9zYmItbWVudS1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLW1lbnUnOiBTYmJNZW51RWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIsm1c3RhdGVDb250cm9sbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErQ0EsTUFBTSxjQUFjO0FBQ3BCLE1BQU0scUJBQXFCO0FBQzNCLE1BQU0sdUJBQXVCO0FBQUEsRUFDM0I7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7O0FBR0YsSUFBSSxTQUFTO0lBWVAsa0JBQWMsTUFBQTs7MEJBRG5CLGNBQWMsVUFBVSxDQUFDOzs7O29CQUNHOzs7O0FBQVIsRUFBQSxtQkFBUSxZQUF1QjtBQUFBLElBb0NsRCxjQUFBO0FBQ0UsWUFBQTtBQTFCRjtBQUFnQix5QkFBQSwyQkFBQSxrQkFBQSxNQUFBLHVCQUE4QixJQUFJO0FBRTFDLFdBQUEsUUFBSyxrQkFBQSxNQUFBLDBCQUFBO0FBQ0wsV0FBQSxrQkFBc0M7QUFFdEMsV0FBQSw0QkFBcUM7QUFFckMsV0FBQSw4QkFBOEIsSUFBSSw4QkFBOEIsSUFBSTtBQUNwRSxXQUFBLHVCQUF1QixJQUFJLHVCQUF1QixJQUFJO0FBQ3RE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
|
|
@@ -68,7 +68,7 @@ const buttonCommon = css`:host {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
@media (forced-colors: active) {
|
|
71
|
-
:host([
|
|
71
|
+
:host(:is(:state(button),[state--button])) {
|
|
72
72
|
--sbb-button-color-default-text: ButtonText !important;
|
|
73
73
|
--sbb-button-color-hover-text: ButtonText !important;
|
|
74
74
|
--sbb-button-color-active-text: ButtonText !important;
|
|
@@ -76,7 +76,7 @@ const buttonCommon = css`:host {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
@media (forced-colors: active) {
|
|
79
|
-
:host([
|
|
79
|
+
:host(:is(:state(link),[state--link])) {
|
|
80
80
|
--sbb-button-color-default-text: LinkText !important;
|
|
81
81
|
--sbb-button-color-hover-text: LinkText !important;
|
|
82
82
|
--sbb-button-color-active-text: LinkText !important;
|
|
@@ -115,7 +115,7 @@ const buttonCommon = css`:host {
|
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
@media (any-hover: hover) {
|
|
118
|
-
:host(:not([disabled], :disabled, [disabled-interactive], :active, [
|
|
118
|
+
:host(:not([disabled], :disabled, [disabled-interactive], :active, :is(:state(active),[state--active]), [loading]):is(:hover, :is(:state(force-hover),[state--force-hover]))) {
|
|
119
119
|
--sbb-button-translate-y-content-hover: -0.0625rem;
|
|
120
120
|
--sbb-button-shadow-1-offset-y: calc(
|
|
121
121
|
0.5 * var(--sbb-shadow-elevation-level-3-shadow-1-offset-y)
|
|
@@ -130,7 +130,7 @@ const buttonCommon = css`:host {
|
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
@media (forced-colors: active) {
|
|
133
|
-
:host(:not([disabled], :disabled, [disabled-interactive], :active, [
|
|
133
|
+
:host(:not([disabled], :disabled, [disabled-interactive], :active, :is(:state(active),[state--active]), [loading]):is(:hover, :is(:state(force-hover),[state--force-hover]))) {
|
|
134
134
|
--sbb-button-color-hover-border: Highlight !important;
|
|
135
135
|
}
|
|
136
136
|
}
|
|
@@ -144,7 +144,7 @@ const buttonCommon = css`:host {
|
|
|
144
144
|
var(--_border-color);
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
:host(:not([disabled], :disabled, [disabled-interactive]):is(:active, [
|
|
147
|
+
:host(:not([disabled], :disabled, [disabled-interactive]):is(:active, :is(:state(active),[state--active]), [loading])) {
|
|
148
148
|
--_color: var(--sbb-button-color-active-text);
|
|
149
149
|
--_background-color: var(--sbb-button-color-active-background);
|
|
150
150
|
--_border-color: var(--sbb-button-color-active-border);
|
|
@@ -207,7 +207,7 @@ const buttonCommon = css`:host {
|
|
|
207
207
|
padding-inline: calc(var(--sbb-button-padding-inline) - var(--sbb-button-loading-border-width));
|
|
208
208
|
transition-property: none;
|
|
209
209
|
}
|
|
210
|
-
:host([
|
|
210
|
+
:host(:is(:state(focus-visible),[state--focus-visible])) .sbb-action-base::before, :host(:focus-visible) .sbb-action-base::before, .sbb-action-base:focus-visible::before {
|
|
211
211
|
outline-offset: var(--sbb-focus-outline-offset);
|
|
212
212
|
outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
|
|
213
213
|
outline-offset: var(--sbb-button-focus-outline-offset-override, var(--sbb-focus-outline-offset));
|
|
@@ -339,7 +339,7 @@ const primaryButton = css`:host {
|
|
|
339
339
|
);
|
|
340
340
|
}
|
|
341
341
|
|
|
342
|
-
:host(:not([disabled], :disabled, [disabled-interactive], :active, [
|
|
342
|
+
:host(:not([disabled], :disabled, [disabled-interactive], :active, :is(:state(active),[state--active]), [loading])) {
|
|
343
343
|
--sbb-button-box-shadow: var(--sbb-button-box-shadow-definition);
|
|
344
344
|
}`;
|
|
345
345
|
const secondaryButton = css`:host {
|
|
@@ -385,7 +385,7 @@ const secondaryButton = css`:host {
|
|
|
385
385
|
--sbb-button-shadow-2-color: color-mix(in srgb, var(--sbb-color-black) 30%, transparent);
|
|
386
386
|
}
|
|
387
387
|
|
|
388
|
-
:host(:not([disabled], :disabled, [disabled-interactive], :active, [
|
|
388
|
+
:host(:not([disabled], :disabled, [disabled-interactive], :active, :is(:state(active),[state--active]))) {
|
|
389
389
|
--sbb-button-box-shadow: var(--sbb-button-box-shadow-definition);
|
|
390
390
|
}`;
|
|
391
391
|
const accentButton = css`:host {
|
|
@@ -428,7 +428,7 @@ const accentButton = css`:host {
|
|
|
428
428
|
--sbb-button-shadow-2-color: color-mix(in srgb, var(--sbb-color-black) 30%, transparent);
|
|
429
429
|
}
|
|
430
430
|
|
|
431
|
-
:host(:not([disabled], :disabled, [disabled-interactive], :active, [
|
|
431
|
+
:host(:not([disabled], :disabled, [disabled-interactive], :active, :is(:state(active),[state--active]), [loading])) {
|
|
432
432
|
--sbb-button-box-shadow: var(--sbb-button-box-shadow-definition);
|
|
433
433
|
}`;
|
|
434
434
|
const transparentButton = css`:host {
|
|
@@ -504,17 +504,17 @@ const miniButtonCommon = css`:host {
|
|
|
504
504
|
}
|
|
505
505
|
|
|
506
506
|
@media (any-hover: hover) {
|
|
507
|
-
:host(:is(:hover, :is(:state(force-hover),[state--force-hover])):not([disabled], :disabled, [disabled-interactive],
|
|
507
|
+
:host(:is(:hover, :is(:state(force-hover),[state--force-hover])):not([disabled], :disabled, [disabled-interactive], :is(:state(disabled),[state--disabled]), :active, :is(:state(active),[state--active]))) {
|
|
508
508
|
--sbb-mini-button-translate-y-content-hover: -0.0625rem;
|
|
509
509
|
--sbb-mini-button-color-background: var(--sbb-mini-button-color-hover-background);
|
|
510
510
|
}
|
|
511
511
|
}
|
|
512
512
|
|
|
513
|
-
:host(:is(:active, [
|
|
513
|
+
:host(:is(:active, :is(:state(active),[state--active])):not([disabled], :disabled, [disabled-interactive], :is(:state(disabled),[state--disabled]))) {
|
|
514
514
|
--sbb-mini-button-color-background: var(--sbb-mini-button-color-active-background);
|
|
515
515
|
}
|
|
516
516
|
|
|
517
|
-
:host(:is([disabled], :disabled, [disabled-interactive],
|
|
517
|
+
:host(:is([disabled], :disabled, [disabled-interactive], :is(:state(disabled),[state--disabled]))) {
|
|
518
518
|
--sbb-mini-button-color-background: var(--sbb-mini-button-color-disabled-background);
|
|
519
519
|
--sbb-mini-button-border: var(--sbb-border-width-1x) dashed
|
|
520
520
|
var(--sbb-mini-button-color-disabled-border);
|
|
@@ -523,7 +523,7 @@ const miniButtonCommon = css`:host {
|
|
|
523
523
|
--sbb-mini-button-cursor: var(--sbb-cursor-default);
|
|
524
524
|
}
|
|
525
525
|
|
|
526
|
-
:host([
|
|
526
|
+
:host(:is(:state(focus-visible),[state--focus-visible])) {
|
|
527
527
|
--sbb-focus-outline-style: initial;
|
|
528
528
|
}
|
|
529
529
|
|
|
@@ -548,7 +548,7 @@ const miniButtonCommon = css`:host {
|
|
|
548
548
|
transition-property: inset, background-color;
|
|
549
549
|
border: var(--sbb-mini-button-border);
|
|
550
550
|
}
|
|
551
|
-
:host(:is([
|
|
551
|
+
:host(:is(:is(:state(focus-visible),[state--focus-visible]), :focus-visible)) .sbb-action-base::before {
|
|
552
552
|
outline-offset: var(--sbb-focus-outline-offset);
|
|
553
553
|
outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
|
|
554
554
|
}
|
|
@@ -567,4 +567,4 @@ export {
|
|
|
567
567
|
secondaryButton as s,
|
|
568
568
|
transparentButton as t
|
|
569
569
|
};
|
|
570
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
570
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaS1idXR0b24tY29tbW9uLUNXVE1SX0x1LmpzIiwic291cmNlcyI6W10sInNvdXJjZXNDb250ZW50IjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mini-calendar.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/mini-calendar/mini-calendar/mini-calendar.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAOvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"mini-calendar.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/mini-calendar/mini-calendar/mini-calendar.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAOvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO/D;;;;GAIG;AACH,qBAEM,sBAAsB,CAAC,CAAC,GAAG,IAAI,CAAE,SAAQ,UAAU;IACvD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,+CAA+C;IAC/C,SACgB,WAAW,EAAE,cAAc,CAAgB;IAE3D,OAAO,CAAC,uBAAuB,CAAgC;IAC/D,OAAO,CAAC,YAAY,CAA4E;;IAahG,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,0BAA0B;IAwDlC,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,qBAAqB;IAa7B,gBAAgB;IACA,KAAK,IAAI,IAAI;IAMb,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;cAKzB,MAAM,IAAI,cAAc;CAG5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,mBAAmB,EAAE,sBAAsB,CAAC;KAC7C;CACF"}
|
|
@@ -12,6 +12,7 @@ import { customElement, property } from "lit/decorators.js";
|
|
|
12
12
|
import { isArrowKeyOrPageKeysPressed } from "../../core/a11y.js";
|
|
13
13
|
import { readConfig } from "../../core/config/config.js";
|
|
14
14
|
import { defaultDateAdapter } from "../../core/datetime/native-date-adapter.js";
|
|
15
|
+
import { ɵstateController as _stateController } from "../../core/mixins.js";
|
|
15
16
|
const style = css`:host {
|
|
16
17
|
display: flex;
|
|
17
18
|
flex-wrap: wrap;
|
|
@@ -54,12 +55,12 @@ let SbbMiniCalendarElement = (() => {
|
|
|
54
55
|
}
|
|
55
56
|
_setMonthsShowYear() {
|
|
56
57
|
this._getMiniCalendarMonths().forEach((monthElement, index) => {
|
|
57
|
-
const
|
|
58
|
-
if (
|
|
59
|
-
if (index === 0 || +
|
|
60
|
-
monthElement
|
|
58
|
+
const splitDate = monthElement.date.split("-");
|
|
59
|
+
if (splitDate.length > 0) {
|
|
60
|
+
if (index === 0 || +splitDate[1] === 1) {
|
|
61
|
+
_stateController(monthElement).add("show-year");
|
|
61
62
|
} else {
|
|
62
|
-
monthElement
|
|
63
|
+
_stateController(monthElement).delete("show-year");
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
66
|
});
|
|
@@ -190,4 +191,4 @@ let SbbMiniCalendarElement = (() => {
|
|
|
190
191
|
export {
|
|
191
192
|
SbbMiniCalendarElement
|
|
192
193
|
};
|
|
193
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaS1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9taW5pLWNhbGVuZGFyL21pbmktY2FsZW5kYXIvbWluaS1jYWxlbmRhci5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTXV0YXRpb25Db250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9tdXRhdGlvbi1jb250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGlzQXJyb3dLZXlPclBhZ2VLZXlzUHJlc3NlZCB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS50cyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWcvY29uZmlnLnRzJztcbmltcG9ydCB0eXBlIHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lL2RhdGUtYWRhcHRlci50cyc7XG5pbXBvcnQgeyBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lL25hdGl2ZS1kYXRlLWFkYXB0ZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcmllbnRhdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvaW50ZXJmYWNlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYk1pbmlDYWxlbmRhckRheUVsZW1lbnQgfSBmcm9tICcuLi9taW5pLWNhbGVuZGFyLWRheS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYk1pbmlDYWxlbmRhck1vbnRoRWxlbWVudCB9IGZyb20gJy4uL21pbmktY2FsZW5kYXItbW9udGgudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9taW5pLWNhbGVuZGFyLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYSBtaW5pbWFsIGNhbGVuZGFyLCB0b2dldGhlciB3aXRoIHRoZSBgc2JiLW1pbmktY2FsZW5kYXItbW9udGhgIGFuZCBgc2JiLW1pbmktY2FsZW5kYXItZGF5YC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBgc2JiLW1pbmktY2FsZW5kYXItbW9udGhgIGVsZW1lbnRzLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItbWluaS1jYWxlbmRhcicpXG5jbGFzcyBTYmJNaW5pQ2FsZW5kYXJFbGVtZW50PFQgPSBEYXRlPiBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogVGhlIG9yaWVudGF0aW9uIG9mIGRheXMgaW4gdGhlIGNhbGVuZGFyLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBvcmllbnRhdGlvbjogU2JiT3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCc7XG5cbiAgcHJpdmF0ZSBfa2V5ZG93bkFib3J0Q29udHJvbGxlcjogQWJvcnRDb250cm9sbGVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2RhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxUPiA9IHJlYWRDb25maWcoKS5kYXRldGltZT8uZGF0ZUFkYXB0ZXIgPz8gZGVmYXVsdERhdGVBZGFwdGVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5hZGRDb250cm9sbGVyKFxuICAgICAgbmV3IE11dGF0aW9uQ29udHJvbGxlcih0aGlzLCB7XG4gICAgICAgIGNvbmZpZzogeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSxcbiAgICAgICAgY2FsbGJhY2s6ICgpID0+IHRoaXMuX3NldE1vbnRoc1Nob3dZZWFyKCksXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TWluaUNhbGVuZGFyTW9udGhzKCk6IFNiYk1pbmlDYWxlbmRhck1vbnRoRWxlbWVudFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2JiLW1pbmktY2FsZW5kYXItbW9udGgnKSA/PyBbXSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRNaW5pQ2FsZW5kYXJEYXlzKCk6IFNiYk1pbmlDYWxlbmRhckRheUVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgICB0aGlzLl9nZXRNaW5pQ2FsZW5kYXJNb250aHMoKS5mbGF0TWFwKChtb250aCkgPT5cbiAgICAgICAgQXJyYXkuZnJvbShtb250aC5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1taW5pLWNhbGVuZGFyLWRheScpID8/IFtdKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldE1vbnRoc1Nob3dZZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuX2dldE1pbmlDYWxlbmRhck1vbnRocygpLmZvckVhY2goXG4gICAgICAobW9udGhFbGVtZW50OiBTYmJNaW5pQ2FsZW5kYXJNb250aEVsZW1lbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3Qgc3BsaXR0ZWREYXRlID0gbW9udGhFbGVtZW50LmRhdGUuc3BsaXQoJy0nKTtcbiAgICAgICAgaWYgKHNwbGl0dGVkRGF0ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKGluZGV4ID09PSAwIHx8ICtzcGxpdHRlZERhdGVbMV0gPT09IDEpIHtcbiAgICAgICAgICAgIG1vbnRoRWxlbWVudFsndG9nZ2xlU3RhdGUnXSgnc2hvdy15ZWFyJywgdHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1vbnRoRWxlbWVudFsndG9nZ2xlU3RhdGUnXSgnc2hvdy15ZWFyJywgZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlS2V5ZG93bkNhbGVuZGFyRGF5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGlzQXJyb3dLZXlPclBhZ2VLZXlzUHJlc3NlZChldmVudCkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF5czogU2JiTWluaUNhbGVuZGFyRGF5RWxlbWVudFtdID0gdGhpcy5fZ2V0TWluaUNhbGVuZGFyRGF5cygpO1xuICAgIGNvbnN0IGRheSA9IGRheXMuZmluZCgoZSkgPT4gZSA9PT0gZXZlbnQudGFyZ2V0KSE7XG4gICAgY29uc3QgbmV4dEVsOiBTYmJNaW5pQ2FsZW5kYXJEYXlFbGVtZW50ID0gdGhpcy5fbmF2aWdhdGVCeUtleWJvYXJkRGF5VmlldyhkYXlzLCBkYXksIGV2ZW50KTtcbiAgICBjb25zdCBhY3RpdmVFbDogU2JiTWluaUNhbGVuZGFyRGF5RWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgU2JiTWluaUNhbGVuZGFyRGF5RWxlbWVudDtcbiAgICBpZiAobmV4dEVsICE9PSBhY3RpdmVFbCkge1xuICAgICAgbmV4dEVsLnRhYkluZGV4ID0gMDtcbiAgICAgIG5leHRFbD8uZm9jdXMoKTtcbiAgICAgIGFjdGl2ZUVsLnRhYkluZGV4ID0gLTE7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbmF2aWdhdGVCeUtleWJvYXJkRGF5VmlldyhcbiAgICBkYXlzOiBTYmJNaW5pQ2FsZW5kYXJEYXlFbGVtZW50W10sXG4gICAgZGF5OiBTYmJNaW5pQ2FsZW5kYXJEYXlFbGVtZW50LFxuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuICApOiBTYmJNaW5pQ2FsZW5kYXJEYXlFbGVtZW50IHtcbiAgICBjb25zdCBhcnJvd3NPZmZzZXQgPVxuICAgICAgdGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnID8geyBsZWZ0UmlnaHQ6IDEsIHVwRG93bjogNyB9IDogeyBsZWZ0UmlnaHQ6IDcsIHVwRG93bjogMSB9O1xuICAgIGNvbnN0IGZ1bGxEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIucGFyc2UoZGF5LmRhdGUpITtcbiAgICBjb25zdCBkYXlEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0RGF0ZShmdWxsRGF0ZSk7XG4gICAgY29uc3Qgb2Zmc2V0Rm9yVmVydGljYWwgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRGaXJzdFdlZWtPZmZzZXQoZnVsbERhdGUpO1xuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICByZXR1cm4gdGhpcy5fZmluZERheUFycm93S2V5cyhkYXlzLCBkYXksIC1hcnJvd3NPZmZzZXQudXBEb3duKTtcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIHJldHVybiB0aGlzLl9maW5kRGF5QXJyb3dLZXlzKGRheXMsIGRheSwgYXJyb3dzT2Zmc2V0LnVwRG93bik7XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5fZmluZERheUFycm93S2V5cyhkYXlzLCBkYXksIC1hcnJvd3NPZmZzZXQubGVmdFJpZ2h0KTtcbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICByZXR1cm4gdGhpcy5fZmluZERheUFycm93S2V5cyhkYXlzLCBkYXksIGFycm93c09mZnNldC5sZWZ0UmlnaHQpO1xuICAgICAgY2FzZSAnUGFnZVVwJzoge1xuICAgICAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgY29uc3QgZGVsdGEgPSBkYXlEYXRlIC0gKGRheURhdGUgJSA3IHx8IDcpO1xuICAgICAgICAgIHJldHVybiB0aGlzLl9maW5kRGF5U3BlY2lhbEtleXMoZGF5cywgZGF5LCAtZGVsdGEsIGFycm93c09mZnNldC51cERvd24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHdlZWtOdW1iZXI6IG51bWJlciA9IE1hdGguY2VpbCgoZGF5RGF0ZSArIG9mZnNldEZvclZlcnRpY2FsKSAvIDcpO1xuICAgICAgICAgIGNvbnN0IGZpcnN0T2ZXZWVrOiBudW1iZXIgPSAod2Vla051bWJlciAtIDEpICogNyAtIG9mZnNldEZvclZlcnRpY2FsICsgMTtcbiAgICAgICAgICBjb25zdCBkZWx0YTogbnVtYmVyID0gZmlyc3RPZldlZWsgLSBkYXlEYXRlO1xuICAgICAgICAgIHJldHVybiB0aGlzLl9maW5kRGF5U3BlY2lhbEtleXMoZGF5cywgZGF5LCBkZWx0YSwgYXJyb3dzT2Zmc2V0LnVwRG93bik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNhc2UgJ1BhZ2VEb3duJzoge1xuICAgICAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgY29uc3QgbGFzdERheU1vbnRoID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0TnVtRGF5c0luTW9udGgoZnVsbERhdGUpO1xuICAgICAgICAgIGNvbnN0IGRlbHRhID0gbGFzdERheU1vbnRoIC0gZGF5RGF0ZSAtICgobGFzdERheU1vbnRoIC0gZGF5RGF0ZSkgJSA3KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZmluZERheVNwZWNpYWxLZXlzKGRheXMsIGRheSwgZGVsdGEsIC1hcnJvd3NPZmZzZXQudXBEb3duKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB3ZWVrTnVtYmVyOiBudW1iZXIgPSBNYXRoLmNlaWwoKGRheURhdGUgKyBvZmZzZXRGb3JWZXJ0aWNhbCkgLyA3KTtcbiAgICAgICAgICBjb25zdCBsYXN0T2ZXZWVrOiBudW1iZXIgPSB3ZWVrTnVtYmVyICogNyAtIG9mZnNldEZvclZlcnRpY2FsO1xuICAgICAgICAgIGNvbnN0IGRlbHRhOiBudW1iZXIgPSBsYXN0T2ZXZWVrIC0gZGF5RGF0ZTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZmluZERheVNwZWNpYWxLZXlzKGRheXMsIGRheSwgZGVsdGEsIC1hcnJvd3NPZmZzZXQudXBEb3duKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2FzZSAnSG9tZSc6IHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IGRheURhdGUgLSAxO1xuICAgICAgICByZXR1cm4gdGhpcy5fZmluZERheVNwZWNpYWxLZXlzKGRheXMsIGRheSwgLWRhdGUsICsxKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0VuZCc6IHtcbiAgICAgICAgY29uc3QgbGFzdERheU1vbnRoID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0TnVtRGF5c0luTW9udGgoZnVsbERhdGUpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZmluZERheVNwZWNpYWxLZXlzKGRheXMsIGRheSwgbGFzdERheU1vbnRoIC0gZGF5RGF0ZSwgLTEpO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRheTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maW5kRGF5QXJyb3dLZXlzKFxuICAgIGRheXM6IFNiYk1pbmlDYWxlbmRhckRheUVsZW1lbnRbXSxcbiAgICBkYXk6IFNiYk1pbmlDYWxlbmRhckRheUVsZW1lbnQsXG4gICAgZGVsdGE6IG51bWJlcixcbiAgKTogU2JiTWluaUNhbGVuZGFyRGF5RWxlbWVudCB7XG4gICAgY29uc3QgbmV3RGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhcbiAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKGRheS5kYXRlKSEsXG4gICAgICBkZWx0YSxcbiAgICApO1xuICAgIGNvbnN0IG5ld0RhdGVTdHJpbmcgPSB0aGlzLl9kYXRlQWRhcHRlci50b0lzbzg2MDEobmV3RGF0ZSk7XG4gICAgY29uc3QgbmV3RGF5ID0gZGF5cy5maW5kKChkKSA9PiBkLmRhdGUgPT09IG5ld0RhdGVTdHJpbmcpO1xuICAgIGlmICghbmV3RGF5KSB7XG4gICAgICByZXR1cm4gZGF5O1xuICAgIH1cbiAgICByZXR1cm4gbmV3RGF5O1xuICB9XG5cbiAgcHJpdmF0ZSBfZmluZERheVNwZWNpYWxLZXlzKFxuICAgIGRheXM6IFNiYk1pbmlDYWxlbmRhckRheUVsZW1lbnRbXSxcbiAgICBkYXk6IFNiYk1pbmlDYWxlbmRhckRheUVsZW1lbnQsXG4gICAgZGVsdGE6IG51bWJlcixcbiAgICByZWN1cnNpdmVEZWx0YTogbnVtYmVyLFxuICApOiBTYmJNaW5pQ2FsZW5kYXJEYXlFbGVtZW50IHtcbiAgICBjb25zdCBuZXdEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuYWRkQ2FsZW5kYXJEYXlzKFxuICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUoZGF5LmRhdGUpISxcbiAgICAgIGRlbHRhLFxuICAgICk7XG4gICAgY29uc3QgbmV3RGF0ZVN0cmluZyA9IHRoaXMuX2RhdGVBZGFwdGVyLnRvSXNvODYwMShuZXdEYXRlKTtcbiAgICBjb25zdCBuZXdEYXkgPSBkYXlzLmZpbmQoKGQpID0+IGQuZGF0ZSA9PT0gbmV3RGF0ZVN0cmluZyk7XG4gICAgaWYgKCFuZXdEYXkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9maW5kRGF5U3BlY2lhbEtleXMoZGF5cywgZGF5LCBkZWx0YSArIHJlY3Vyc2l2ZURlbHRhLCByZWN1cnNpdmVEZWx0YSk7XG4gICAgfVxuICAgIHJldHVybiBuZXdEYXkhO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXR1cEtleWRvd25MaXN0ZW5lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBLZXlkb3duTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fa2V5ZG93bkFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9rZXlkb3duQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX2dldE1pbmlDYWxlbmRhckRheXMoKS5mb3JFYWNoKChkYXksIGluZGV4KSA9PiB7XG4gICAgICBkYXkuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlkb3duQ2FsZW5kYXJEYXkoZSksIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9rZXlkb3duQWJvcnRDb250cm9sbGVyIS5zaWduYWwsXG4gICAgICB9KTtcbiAgICAgIGlmIChpbmRleCAhPT0gMCkge1xuICAgICAgICBkYXkudGFiSW5kZXggPSAtMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIG92ZXJyaWRlIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2dldE1pbmlDYWxlbmRhckRheXMoKVxuICAgICAgPy5maW5kKChlKSA9PiBlLnRhYkluZGV4ID09PSAwKVxuICAgICAgPy5mb2N1cygpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fc2V0dXBLZXlkb3duTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2tleWRvd25BYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGA8c2xvdCBAc2xvdGNoYW5nZT0ke3RoaXMuX2hhbmRsZVNsb3RjaGFuZ2V9Pjwvc2xvdD5gO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItbWluaS1jYWxlbmRhcic6IFNiYk1pbmlDYWxlbmRhckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBc0JNLDBCQUFzQixNQUFBOzswQkFEM0IsY0FBYyxtQkFBbUIsQ0FBQzs7OztvQkFDWTs7OztBQUFSLEVBQUEsbUJBQVEsWUFBVTtBQUFBLElBVXZELGNBQUE7QUFDRSxZQUFBO0FBTkY7QUFBZ0IseUJBQUEsK0JBQUEsa0JBQUEsTUFBQSwyQkFBOEIsWUFBWTtBQUVsRCxXQUFBLDJCQUF1QixrQkFBQSxNQUFBLDhCQUFBLEdBQTJCO0FBQ2xELFdBQUEsZUFBK0IsV0FBQSxFQUFhLFVBQVUsZUFBZTtBQUszRSxXQUFLLGNBQ0gsSUFBSSxtQkFBbUIsTUFBTTtBQUFBLFFBQzNCLFFBQVEsRUFBRSxXQUFXLE1BQU0sU0FBUyxLQUFBO0FBQUEsUUFDcEMsVUFBVSxNQUFNLEtBQUssbUJBQUE7QUFBQSxNQUFrQixDQUN4QyxDQUFDO0FBQUEsSUFFTjtBQUFBO0FBQUEsSUFkQSxJQUFnQixjQUFXO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUEzQixJQUFnQixZQUFXLE9BQUE7QUFBQSx5QkFBQSwrQkFBQTtBQUFBLElBQUE7QUFBQSxJQWdCbkIseUJBQXNCO0FBQzVCLGFBQU8sTUFBTSxLQUFLLEtBQUssbUJBQW1CLHlCQUF5QixLQUFLLEVBQUU7QUFBQSxJQUM1RTtBQUFBLElBRVEsdUJBQW9CO0FBQzFCLGFBQU8sTUFBTSxLQUNYLEtBQUssdUJBQUEsRUFBeUIsUUFBUSxDQUFDLFVBQ3JDLE1BQU0sS0FBSyxNQUFNLG1CQUFtQix1QkFBdUIsS0FBSyxDQUFBLENBQUUsQ0FBQyxDQUNwRTtBQUFBLElBRUw7QUFBQSxJQUVRLHFCQUFrQjtBQUN4QixXQUFLLHVC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
|
|
194
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaS1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9taW5pLWNhbGVuZGFyL21pbmktY2FsZW5kYXIvbWluaS1jYWxlbmRhci5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTXV0YXRpb25Db250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9tdXRhdGlvbi1jb250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGlzQXJyb3dLZXlPclBhZ2VLZXlzUHJlc3NlZCB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS50cyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWcvY29uZmlnLnRzJztcbmltcG9ydCB0eXBlIHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lL2RhdGUtYWRhcHRlci50cyc7XG5pbXBvcnQgeyBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lL25hdGl2ZS1kYXRlLWFkYXB0ZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcmllbnRhdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvaW50ZXJmYWNlcy50cyc7XG5pbXBvcnQgeyDJtXN0YXRlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiTWluaUNhbGVuZGFyRGF5RWxlbWVudCB9IGZyb20gJy4uL21pbmktY2FsZW5kYXItZGF5LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiTWluaUNhbGVuZGFyTW9udGhFbGVtZW50IH0gZnJvbSAnLi4vbWluaS1jYWxlbmRhci1tb250aC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL21pbmktY2FsZW5kYXIuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIG1pbmltYWwgY2FsZW5kYXIsIHRvZ2V0aGVyIHdpdGggdGhlIGBzYmItbWluaS1jYWxlbmRhci1tb250aGAgYW5kIGBzYmItbWluaS1jYWxlbmRhci1kYXlgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItbWluaS1jYWxlbmRhci1tb250aGAgZWxlbWVudHMuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1taW5pLWNhbGVuZGFyJylcbmNsYXNzIFNiYk1pbmlDYWxlbmRhckVsZW1lbnQ8VCA9IERhdGU+IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBUaGUgb3JpZW50YXRpb24gb2YgZGF5cyBpbiB0aGUgY2FsZW5kYXIuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIG9yaWVudGF0aW9uOiBTYmJPcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJztcblxuICBwcml2YXRlIF9rZXlkb3duQWJvcnRDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPFQ+ID0gcmVhZENvbmZpZygpLmRhdGV0aW1lPy5kYXRlQWRhcHRlciA/PyBkZWZhdWx0RGF0ZUFkYXB0ZXI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgTXV0YXRpb25Db250cm9sbGVyKHRoaXMsIHtcbiAgICAgICAgY29uZmlnOiB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9LFxuICAgICAgICBjYWxsYmFjazogKCkgPT4gdGhpcy5fc2V0TW9udGhzU2hvd1llYXIoKSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRNaW5pQ2FsZW5kYXJNb250aHMoKTogU2JiTWluaUNhbGVuZGFyTW9udGhFbGVtZW50W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKCdzYmItbWluaS1jYWxlbmRhci1tb250aCcpID8/IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE1pbmlDYWxlbmRhckRheXMoKTogU2JiTWluaUNhbGVuZGFyRGF5RWxlbWVudFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShcbiAgICAgIHRoaXMuX2dldE1pbmlDYWxlbmRhck1vbnRocygpLmZsYXRNYXAoKG1vbnRoKSA9PlxuICAgICAgICBBcnJheS5mcm9tKG1vbnRoLnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2JiLW1pbmktY2FsZW5kYXItZGF5JykgPz8gW10pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TW9udGhzU2hvd1llYXIoKTogdm9pZCB7XG4gICAgdGhpcy5fZ2V0TWluaUNhbGVuZGFyTW9udGhzKCkuZm9yRWFjaChcbiAgICAgIChtb250aEVsZW1lbnQ6IFNiYk1pbmlDYWxlbmRhck1vbnRoRWxlbWVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBzcGxpdERhdGUgPSBtb250aEVsZW1lbnQuZGF0ZS5zcGxpdCgnLScpO1xuICAgICAgICBpZiAoc3BsaXREYXRlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IDAgfHwgK3NwbGl0RGF0ZVsxXSA9PT0gMSkge1xuICAgICAgICAgICAgybVzdGF0ZUNvbnRyb2xsZXIobW9udGhFbGVtZW50KS5hZGQoJ3Nob3cteWVhcicpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICDJtXN0YXRlQ29udHJvbGxlcihtb250aEVsZW1lbnQpLmRlbGV0ZSgnc2hvdy15ZWFyJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVLZXlkb3duQ2FsZW5kYXJEYXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoaXNBcnJvd0tleU9yUGFnZUtleXNQcmVzc2VkKGV2ZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXlzOiBTYmJNaW5pQ2FsZW5kYXJEYXlFbGVtZW50W10gPSB0aGlzLl9nZXRNaW5pQ2FsZW5kYXJEYXlzKCk7XG4gICAgY29uc3QgZGF5ID0gZGF5cy5maW5kKChlKSA9PiBlID09PSBldmVudC50YXJnZXQpITtcbiAgICBjb25zdCBuZXh0RWw6IFNiYk1pbmlDYWxlbmRhckRheUVsZW1lbnQgPSB0aGlzLl9uYXZpZ2F0ZUJ5S2V5Ym9hcmREYXlWaWV3KGRheXMsIGRheSwgZXZlbnQpO1xuICAgIGNvbnN0IGFjdGl2ZUVsOiBTYmJNaW5pQ2FsZW5kYXJEYXlFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBTYmJNaW5pQ2FsZW5kYXJEYXlFbGVtZW50O1xuICAgIGlmIChuZXh0RWwgIT09IGFjdGl2ZUVsKSB7XG4gICAgICBuZXh0RWwudGFiSW5kZXggPSAwO1xuICAgICAgbmV4dEVsPy5mb2N1cygpO1xuICAgICAgYWN0aXZlRWwudGFiSW5kZXggPSAtMTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9uYXZpZ2F0ZUJ5S2V5Ym9hcmREYXlWaWV3KFxuICAgIGRheXM6IFNiYk1pbmlDYWxlbmRhckRheUVsZW1lbnRbXSxcbiAgICBkYXk6IFNiYk1pbmlDYWxlbmRhckRheUVsZW1lbnQsXG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnQsXG4gICk6IFNiYk1pbmlDYWxlbmRhckRheUVsZW1lbnQge1xuICAgIGNvbnN0IGFycm93c09mZnNldCA9XG4gICAgICB0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgPyB7IGxlZnRSaWdodDogMSwgdXBEb3duOiA3IH0gOiB7IGxlZnRSaWdodDogNywgdXBEb3duOiAxIH07XG4gICAgY29uc3QgZnVsbERhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5wYXJzZShkYXkuZGF0ZSkhO1xuICAgIGNvbnN0IGRheURhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXREYXRlKGZ1bGxEYXRlKTtcbiAgICBjb25zdCBvZmZzZXRGb3JWZXJ0aWNhbCA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldEZpcnN0V2Vla09mZnNldChmdWxsRGF0ZSk7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHJldHVybiB0aGlzLl9maW5kRGF5QXJyb3dLZXlzKGRheXMsIGRheSwgLWFycm93c09mZnNldC51cERvd24pO1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmREYXlBcnJvd0tleXMoZGF5cywgZGF5LCBhcnJvd3NPZmZzZXQudXBEb3duKTtcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIHJldHVybiB0aGlzLl9maW5kRGF5QXJyb3dLZXlzKGRheXMsIGRheSwgLWFycm93c09mZnNldC5sZWZ0UmlnaHQpO1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIHJldHVybiB0aGlzLl9maW5kRGF5QXJyb3dLZXlzKGRheXMsIGRheSwgYXJyb3dzT2Zmc2V0LmxlZnRSaWdodCk7XG4gICAgICBjYXNlICdQYWdlVXAnOiB7XG4gICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICBjb25zdCBkZWx0YSA9IGRheURhdGUgLSAoZGF5RGF0ZSAlIDcgfHwgNyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmREYXlTcGVjaWFsS2V5cyhkYXlzLCBkYXksIC1kZWx0YSwgYXJyb3dzT2Zmc2V0LnVwRG93bik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgd2Vla051bWJlcjogbnVtYmVyID0gTWF0aC5jZWlsKChkYXlEYXRlICsgb2Zmc2V0Rm9yVmVydGljYWwpIC8gNyk7XG4gICAgICAgICAgY29uc3QgZmlyc3RPZldlZWs6IG51bWJlciA9ICh3ZWVrTnVtYmVyIC0gMSkgKiA3IC0gb2Zmc2V0Rm9yVmVydGljYWwgKyAxO1xuICAgICAgICAgIGNvbnN0IGRlbHRhOiBudW1iZXIgPSBmaXJzdE9mV2VlayAtIGRheURhdGU7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmREYXlTcGVjaWFsS2V5cyhkYXlzLCBkYXksIGRlbHRhLCBhcnJvd3NPZmZzZXQudXBEb3duKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2FzZSAnUGFnZURvd24nOiB7XG4gICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICBjb25zdCBsYXN0RGF5TW9udGggPSB0aGlzLl9kYXRlQWRhcHRlci5nZXROdW1EYXlzSW5Nb250aChmdWxsRGF0ZSk7XG4gICAgICAgICAgY29uc3QgZGVsdGEgPSBsYXN0RGF5TW9udGggLSBkYXlEYXRlIC0gKChsYXN0RGF5TW9udGggLSBkYXlEYXRlKSAlIDcpO1xuICAgICAgICAgIHJldHVybiB0aGlzLl9maW5kRGF5U3BlY2lhbEtleXMoZGF5cywgZGF5LCBkZWx0YSwgLWFycm93c09mZnNldC51cERvd24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHdlZWtOdW1iZXI6IG51bWJlciA9IE1hdGguY2VpbCgoZGF5RGF0ZSArIG9mZnNldEZvclZlcnRpY2FsKSAvIDcpO1xuICAgICAgICAgIGNvbnN0IGxhc3RPZldlZWs6IG51bWJlciA9IHdlZWtOdW1iZXIgKiA3IC0gb2Zmc2V0Rm9yVmVydGljYWw7XG4gICAgICAgICAgY29uc3QgZGVsdGE6IG51bWJlciA9IGxhc3RPZldlZWsgLSBkYXlEYXRlO1xuICAgICAgICAgIHJldHVybiB0aGlzLl9maW5kRGF5U3BlY2lhbEtleXMoZGF5cywgZGF5LCBkZWx0YSwgLWFycm93c09mZnNldC51cERvd24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXNlICdIb21lJzoge1xuICAgICAgICBjb25zdCBkYXRlID0gZGF5RGF0ZSAtIDE7XG4gICAgICAgIHJldHVybiB0aGlzLl9maW5kRGF5U3BlY2lhbEtleXMoZGF5cywgZGF5LCAtZGF0ZSwgKzEpO1xuICAgICAgfVxuICAgICAgY2FzZSAnRW5kJzoge1xuICAgICAgICBjb25zdCBsYXN0RGF5TW9udGggPSB0aGlzLl9kYXRlQWRhcHRlci5nZXROdW1EYXlzSW5Nb250aChmdWxsRGF0ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9maW5kRGF5U3BlY2lhbEtleXMoZGF5cywgZGF5LCBsYXN0RGF5TW9udGggLSBkYXlEYXRlLCAtMSk7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZGF5O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmREYXlBcnJvd0tleXMoXG4gICAgZGF5czogU2JiTWluaUNhbGVuZGFyRGF5RWxlbWVudFtdLFxuICAgIGRheTogU2JiTWluaUNhbGVuZGFyRGF5RWxlbWVudCxcbiAgICBkZWx0YTogbnVtYmVyLFxuICApOiBTYmJNaW5pQ2FsZW5kYXJEYXlFbGVtZW50IHtcbiAgICBjb25zdCBuZXdEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuYWRkQ2FsZW5kYXJEYXlzKFxuICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUoZGF5LmRhdGUpISxcbiAgICAgIGRlbHRhLFxuICAgICk7XG4gICAgY29uc3QgbmV3RGF0ZVN0cmluZyA9IHRoaXMuX2RhdGVBZGFwdGVyLnRvSXNvODYwMShuZXdEYXRlKTtcbiAgICBjb25zdCBuZXdEYXkgPSBkYXlzLmZpbmQoKGQpID0+IGQuZGF0ZSA9PT0gbmV3RGF0ZVN0cmluZyk7XG4gICAgaWYgKCFuZXdEYXkpIHtcbiAgICAgIHJldHVybiBkYXk7XG4gICAgfVxuICAgIHJldHVybiBuZXdEYXk7XG4gIH1cblxuICBwcml2YXRlIF9maW5kRGF5U3BlY2lhbEtleXMoXG4gICAgZGF5czogU2JiTWluaUNhbGVuZGFyRGF5RWxlbWVudFtdLFxuICAgIGRheTogU2JiTWluaUNhbGVuZGFyRGF5RWxlbWVudCxcbiAgICBkZWx0YTogbnVtYmVyLFxuICAgIHJlY3Vyc2l2ZURlbHRhOiBudW1iZXIsXG4gICk6IFNiYk1pbmlDYWxlbmRhckRheUVsZW1lbnQge1xuICAgIGNvbnN0IG5ld0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXMoXG4gICAgICB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShkYXkuZGF0ZSkhLFxuICAgICAgZGVsdGEsXG4gICAgKTtcbiAgICBjb25zdCBuZXdEYXRlU3RyaW5nID0gdGhpcy5fZGF0ZUFkYXB0ZXIudG9Jc284NjAxKG5ld0RhdGUpO1xuICAgIGNvbnN0IG5ld0RheSA9IGRheXMuZmluZCgoZCkgPT4gZC5kYXRlID09PSBuZXdEYXRlU3RyaW5nKTtcbiAgICBpZiAoIW5ld0RheSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ZpbmREYXlTcGVjaWFsS2V5cyhkYXlzLCBkYXksIGRlbHRhICsgcmVjdXJzaXZlRGVsdGEsIHJlY3Vyc2l2ZURlbHRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0RheSE7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVTbG90Y2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuX3NldHVwS2V5ZG93bkxpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cEtleWRvd25MaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLl9rZXlkb3duQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2tleWRvd25BYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fZ2V0TWluaUNhbGVuZGFyRGF5cygpLmZvckVhY2goKGRheSwgaW5kZXgpID0+IHtcbiAgICAgIGRheS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUtleWRvd25DYWxlbmRhckRheShlKSwge1xuICAgICAgICBzaWduYWw6IHRoaXMuX2tleWRvd25BYm9ydENvbnRyb2xsZXIhLnNpZ25hbCxcbiAgICAgIH0pO1xuICAgICAgaWYgKGluZGV4ICE9PSAwKSB7XG4gICAgICAgIGRheS50YWJJbmRleCA9IC0xO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5fZ2V0TWluaUNhbGVuZGFyRGF5cygpXG4gICAgICA/LmZpbmQoKGUpID0+IGUudGFiSW5kZXggPT09IDApXG4gICAgICA/LmZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9zZXR1cEtleWRvd25MaXN0ZW5lcigpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fa2V5ZG93bkFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5faGFuZGxlU2xvdGNoYW5nZX0+PC9zbG90PmA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1taW5pLWNhbGVuZGFyJzogU2JiTWluaUNhbGVuZGFyRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIsm1c3RhdGVDb250cm9sbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXVCTSwwQkFBc0IsTUFBQTs7MEJBRDNCLGNBQWMsbUJBQW1CLENBQUM7Ozs7b0JBQ1k7Ozs7QUFBUixFQUFBLG1CQUFRLFlBQVU7QUFBQSxJQVV2RCxjQUFBO0FBQ0UsWUFBQTtBQU5GO0FBQWdCLHlCQUFBLCtCQUFBLGtCQUFBLE1BQUEsMkJBQThCLFlBQVk7QUFFbEQsV0FBQSwyQkFBdUIsa0JBQUEsTUFBQSw4QkFBQSxHQUEyQjtBQUNsRCxXQUFBLGVBQStCLFdBQUEsRUFBYSxVQUFVLGVBQWU7QUFLM0UsV0FBSyxjQUNILElBQUksbUJBQW1CLE1BQU07QUFBQSxRQUMzQixRQUFRLEVBQUUsV0FBVyxNQUFNLFNBQVMsS0FBQTtBQUFBLFFBQ3BDLFVBQVUsTUFBTSxLQUFLLG1CQUFBO0FBQUEsTUFBa0IsQ0FDeEMsQ0FBQztBQUFBLElBRU47QUFBQTtBQUFBLElBZEEsSUFBZ0IsY0FBVztBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBM0IsSUFBZ0IsWUFBVyxPQUFBO0FBQUEseUJBQUEsK0JBQUE7QUFBQSxJQUFBO0FBQUEsSUFnQm5CLHlCQUFzQjtBQUM1QixhQUFPLE1BQU0sS0FBSyxLQUFLLG1CQUFtQix5QkFBeUIsS0FBSyxFQUFFO0FBQUEsSUFDNUU7QUFBQSxJQUVRLHVCQUFvQjtBQUMxQixhQUFPLE1BQU0sS0FDWCxLQUFLLHVCQUFBLEVBQXlCLFFBQVEsQ0FBQyxVQUNyQyxNQUFNLEtBQUssTUFBTSxtQkFB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
|