@sbb-esta/lyne-elements 4.0.0-next.3 → 4.0.0-next.4
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 +8452 -8203
- 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
|
@@ -7,13 +7,13 @@ const SbbBreakpointLargeMax = "89.9375rem";
|
|
|
7
7
|
const SbbBreakpointUltraMin = "90rem";
|
|
8
8
|
const SbbBreakpointUltraMax = "161.1875rem";
|
|
9
9
|
export {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
SbbBreakpointZeroMin as S,
|
|
11
|
+
SbbBreakpointSmallMin as a,
|
|
12
|
+
SbbBreakpointLargeMin as b,
|
|
13
|
+
SbbBreakpointUltraMin as c,
|
|
14
|
+
SbbBreakpointSmallMax as d,
|
|
15
|
+
SbbBreakpointLargeMax as e,
|
|
16
|
+
SbbBreakpointUltraMax as f,
|
|
17
|
+
SbbBreakpointZeroMax as g
|
|
18
18
|
};
|
|
19
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2JiLXRva2Vucy1EWnJIdkVyTy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BzYmItZXN0YS9seW5lLWRlc2lnbi10b2tlbnMvZGlzdC9qcy9zYmItdG9rZW5zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRG8gbm90IGVkaXQgZGlyZWN0bHksIHRoaXMgZmlsZSB3YXMgYXV0by1nZW5lcmF0ZWQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkR1cmF0aW9uMXggPSBcIjAuMDRzXCI7XG5leHBvcnQgY29uc3QgU2JiQW5pbWF0aW9uRHVyYXRpb24yeCA9IFwiMC4wOHNcIjtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25EdXJhdGlvbjN4ID0gXCIwLjEyc1wiO1xuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkR1cmF0aW9uNHggPSBcIjAuMTZzXCI7XG5leHBvcnQgY29uc3QgU2JiQW5pbWF0aW9uRHVyYXRpb241eCA9IFwiMC4yMHNcIjtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25EdXJhdGlvbjZ4ID0gXCIwLjI0c1wiO1xuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkR1cmF0aW9uMTJ4ID0gXCIwLjQ4c1wiO1xuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkVhc2luZyA9IFwiY3ViaWMtYmV6aWVyKC40NywgLjEsIDEsIC42MylcIjtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJXaWR0aDF4ID0gXCIwLjA2MjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJXaWR0aDJ4ID0gXCIwLjEyNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlcldpZHRoM3ggPSBcIjAuMTg3NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlcldpZHRoNHggPSBcIjAuMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJSYWRpdXMxeCA9IFwiMC4xMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJSYWRpdXMyeCA9IFwiMC4yNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlclJhZGl1czR4ID0gXCIwLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJSYWRpdXM2eCA9IFwiMC43NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlclJhZGl1czh4ID0gXCIxcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyUmFkaXVzMTZ4ID0gXCIycmVtXCI7XG5leHBvcnQgY29uc3QgU2JiQnJlYWtwb2ludFplcm9NaW4gPSBcIjByZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50WmVyb01heCA9IFwiMzcuNDM3NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRTbWFsbE1pbiA9IFwiMzcuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRTbWFsbE1heCA9IFwiNjMuOTM3NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRMYXJnZU1pbiA9IFwiNjRyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50TGFyZ2VNYXggPSBcIjg5LjkzNzVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50VWx0cmFNaW4gPSBcIjkwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiQnJlYWtwb2ludFVsdHJhTWF4ID0gXCIxNjEuMTg3NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQmxhY2sgPSBcIiMwMDAwMDBcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvck1pZG5pZ2h0ID0gXCIjMTUxNTE1XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbHVlID0gXCIjMmQzMjdkXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JDaGFyY29hbCA9IFwiIzIxMjEyMVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9ySXJvbiA9IFwiIzQ0NDQ0NFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQW50aHJhY2l0ZSA9IFwiIzVhNWE1YVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yR3Jhbml0ZSA9IFwiIzY4Njg2OFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTWV0YWwgPSBcIiM3Njc2NzZcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclNtb2tlID0gXCIjOGQ4ZDhkXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JTdG9ybSA9IFwiI2E4YThhOFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yR3JhcGhpdGUgPSBcIiNiN2I3YjdcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckNlbWVudCA9IFwiI2JkYmRiZFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUGxhdGludW0gPSBcIiNjZGNkY2RcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckFsdW1pbml1bSA9IFwiI2QyZDJkMlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yU2lsdmVyID0gXCIjZGNkY2RjXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JDbG91ZCA9IFwiI2U1ZTVlNVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTWlsayA9IFwiI2Y2ZjZmNlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUmVkID0gXCIjZWIwMDAwXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSZWQ4NSA9IFwiI2ZmMzgzOFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUmVkMTI1ID0gXCIjYzYwMDE4XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSZWQxNTAgPSBcIiNhMjAwMTNcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJveWFsTGlnaHQgPSBcIiMwNjM0OGJcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJveWFsRGFyayA9IFwiIzAwNTNlZlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUm95YWw4NUxpZ2h0ID0gXCIjNDA3N2RmXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSb3lhbDg1RGFyayA9IFwiIzQwNzdkZlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUm95YWwxMjVMaWdodCA9IFwiIzAzMjY2OFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUm95YWwxMjVEYXJrID0gXCIjMjQ1ZWNiXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSb3lhbDE1MExpZ2h0ID0gXCIjMDIxYzRlXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSb3lhbDE1MERhcmsgPSBcIiMzYzY1YjNcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvcldoaXRlID0gXCIjZmZmZmZmXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JTa3lMaWdodCA9IFwiIzAwNzRiZlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yU2t5RGFyayA9IFwiIzEyOGVkZVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTmlnaHRMaWdodCA9IFwiIzE0M2E4NVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTmlnaHREYXJrID0gXCIjNjU4N2NhXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JWaW9sZXRMaWdodCA9IFwiIzZmMjI4MlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yVmlvbGV0RGFyayA9IFwiI2IzNmNjNVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUGlua0xpZ2h0ID0gXCIjYzczODdhXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JQaW5rRGFyayA9IFwiI2U0NTI5NVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQXV0dW1uTGlnaHQgPSBcIiNjZjNiMDBcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckF1dHVtbkRhcmsgPSBcIiNmMDUzMTNcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvck9yYW5nZUxpZ2h0ID0gXCIjZjI3ZTAwXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JPcmFuZ2VEYXJrID0gXCIjZmI4ZTE5XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JQZWFjaExpZ2h0ID0gXCIjZmNiYjAwXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JQZWFjaERhcmsgPSBcIiNmZmM3MjdcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckxlbW9uTGlnaHQgPSBcIiNmZmRlMTVcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckxlbW9uRGFyayA9IFwiI2ZmZTU0N1wiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQnJvd25MaWdodCA9IFwiI2EwNTQwMFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQnJvd25EYXJrID0gXCIjY2Y2ZjA0XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JHcmVlbkxpZ2h0ID0gXCIjMDA4MjMzXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JHcmVlbkRhcmsgPSBcIiMxMDlkNDdcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclR1cnF1b2lzZUxpZ2h0ID0gXCIjMDA3ZTg0XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JUdXJxdW9pc2VEYXJrID0gXCIjMDBhNTliXCI7XG5leHBvcnQgY29uc3QgU2JiRm9jdXNPdXRsaW5lT2Zmc2V0ID0gXCIwLjE4NzVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJIb3ZlckltYWdlQnJpZ2h0bmVzcyA9IDEuMDc1O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc1plcm8gPSA0O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc1NtYWxsID0gODtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZENvbHVtbnNMYXJnZSA9IDEyO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc1VsdHJhID0gMTY7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRHdXR0ZXJSZXNwb25zaXZlWmVybyA9IFwiMXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkR3V0dGVyUmVzcG9uc2l2ZVNtYWxsID0gXCIxLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZEd1dHRlclJlc3BvbnNpdmVMYXJnZSA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkR3V0dGVyUmVzcG9uc2l2ZVVsdHJhID0gXCIycmVtXCI7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZU9mZnNldFJlc3BvbnNpdmVaZXJvID0gXCIxLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZU9mZnNldFJlc3BvbnNpdmVTbWFsbCA9IFwiM3JlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VPZmZzZXRSZXNwb25zaXZlTGFyZ2UgPSBcIjRyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlT2Zmc2V0UmVzcG9uc2l2ZVVsdHJhID0gXCI3LjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlUGFnZU1heFdpZHRoID0gXCI3NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NoYWRvdzFPZmZzZXRYID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93MU9mZnNldFkgPSBcIjAuMTI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93MUJsdXIgPSBcIjFyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cxU3ByZWFkID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93Mk9mZnNldFggPSBcIjByZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cyT2Zmc2V0WSA9IFwiMC4wNjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93MkJsdXIgPSBcIjAuMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cyU3ByZWFkID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U2hhZG93MU9mZnNldFggPSBcIjByZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cxT2Zmc2V0WSA9IFwiMC4yNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzFCbHVyID0gXCIycmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U2hhZG93MVNwcmVhZCA9IFwiMHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzJPZmZzZXRYID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U2hhZG93Mk9mZnNldFkgPSBcIjAuMDYyNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzJCbHVyID0gXCIwLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cyU3ByZWFkID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93MU9mZnNldFggPSBcIjByZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTaGFkb3cxT2Zmc2V0WSA9IFwiMXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNoYWRvdzFCbHVyID0gXCI4cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93MVNwcmVhZCA9IFwiMHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNoYWRvdzJPZmZzZXRYID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93Mk9mZnNldFkgPSBcIjAuMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTaGFkb3cyQmx1ciA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNoYWRvdzJTcHJlYWQgPSBcIjByZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU2hhZG93MU9mZnNldFggPSBcIjByZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU2hhZG93MU9mZnNldFkgPSBcIjEuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cxQmx1ciA9IFwiMTJyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU2hhZG93MVNwcmVhZCA9IFwiMHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cyT2Zmc2V0WCA9IFwiMHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cyT2Zmc2V0WSA9IFwiMC4yNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cyQmx1ciA9IFwiNHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cyU3ByZWFkID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHhzWmVybyA9IFwiMS43NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHh4c1NtYWxsID0gXCIxLjc1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHhzTGFyZ2UgPSBcIjJyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4eHNVbHRyYSA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHhzWmVybyA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHhzU21hbGwgPSBcIjJyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4c0xhcmdlID0gXCIyLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHNVbHRyYSA9IFwiMi4yNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHNaZXJvID0gXCIyLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYc1NtYWxsID0gXCIyLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYc0xhcmdlID0gXCIyLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFhzVWx0cmEgPSBcIjIuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50U1plcm8gPSBcIjIuNzVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFNTbWFsbCA9IFwiMi43NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50U0xhcmdlID0gXCIzcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRTVWx0cmEgPSBcIjNyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudE1aZXJvID0gXCIzcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRNU21hbGwgPSBcIjNyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudE1MYXJnZSA9IFwiMy41cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRNVWx0cmEgPSBcIjMuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TFplcm8gPSBcIjMuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TFNtYWxsID0gXCIzLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudExMYXJnZSA9IFwiNHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TFVsdHJhID0gXCI0cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUljb25VaUV4dHJhU21hbGwgPSBcIjFyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplSWNvblVpU21hbGwgPSBcIjEuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVJY29uVWlNZWRpdW0gPSBcIjIuMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplSWNvblVpTGFyZ2UgPSBcIjNyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQxeCA9IFwiMC4yNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDJ4ID0gXCIwLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQzeCA9IFwiMC43NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDR4ID0gXCIxcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkNXggPSBcIjEuMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQ2eCA9IFwiMS41cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkN3ggPSBcIjEuNzVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQ4eCA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDl4ID0gXCIyLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMTB4ID0gXCIyLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQxMnggPSBcIjNyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQxNHggPSBcIjMuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDE2eCA9IFwiNHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDE4eCA9IFwiNC41cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMTl4ID0gXCI0Ljc1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMjB4ID0gXCI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMjR4ID0gXCI2cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMzB4ID0gXCI3LjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4eHNaZXJvID0gXCIwLjc1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHhzU21hbGwgPSBcIjAuNzVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4eHNMYXJnZSA9IFwiMXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHh4c1VsdHJhID0gXCIxcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHNaZXJvID0gXCIxcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHNTbWFsbCA9IFwiMXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhzTGFyZ2UgPSBcIjEuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhzVWx0cmEgPSBcIjEuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHNaZXJvID0gXCIxLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYc1NtYWxsID0gXCIxLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYc0xhcmdlID0gXCIxLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhzVWx0cmEgPSBcIjEuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU1plcm8gPSBcIjEuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU1NtYWxsID0gXCIxLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVNMYXJnZSA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU1VsdHJhID0gXCIycmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVNWmVybyA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTVNtYWxsID0gXCIycmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVNTGFyZ2UgPSBcIjIuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTVVsdHJhID0gXCIzcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVMWmVybyA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTFNtYWxsID0gXCIyLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZUxMYXJnZSA9IFwiMy41cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVMVWx0cmEgPSBcIjRyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhsWmVybyA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxTbWFsbCA9IFwiM3JlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxMYXJnZSA9IFwiNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxVbHRyYSA9IFwiNnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhsWmVybyA9IFwiM3JlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhsU21hbGwgPSBcIjQuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhsTGFyZ2UgPSBcIjZyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4bFVsdHJhID0gXCI3LjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvRm9udEZhbWlseSA9XG4gICdcIlNCQlwiLCBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYnO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9MZXR0ZXJTcGFjaW5nSGVhZGluZyA9IFwiMGVtXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb0xldHRlclNwYWNpbmdUZXh0ID0gXCIwLjAzZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvTGluZUhlaWdodEhlYWRpbmcgPSAxLjQ7XG5leHBvcnQgY29uc3QgU2JiVHlwb0xpbmVIZWlnaHRUZXh0ID0gMS43NTtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGUwNzV4ID0gXCIwLjc1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMDgxMjV4ID0gXCIwLjgxMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGUwODc1eCA9IFwiMC44NzVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGVEZWZhdWx0ID0gXCIxcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMTEyNXggPSBcIjEuMTI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMTI1eCA9IFwiMS4yNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTE1eCA9IFwiMS41cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMnggPSBcIjJyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGUyNXggPSBcIjIuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTN4ID0gXCIzcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMzV4ID0gXCIzLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGU0eCA9IFwiNHJlbVwiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNCWSxNQUFDLHVCQUF1QjtBQUN4QixNQUFDLHVCQUF1QjtBQUN4QixNQUFDLHdCQUF3QjtBQUN6QixNQUFDLHdCQUF3QjtBQUN6QixNQUFDLHdCQUF3QjtBQUN6QixNQUFDLHdCQUF3QjtBQUN6QixNQUFDLHdCQUF3QjtBQUN6QixNQUFDLHdCQUF3QjsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF19
|
|
19
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2JiLXRva2Vucy1DWkN0NUw0cS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BzYmItZXN0YS9seW5lLWRlc2lnbi10b2tlbnMvZGlzdC9qcy9zYmItdG9rZW5zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRG8gbm90IGVkaXQgZGlyZWN0bHksIHRoaXMgZmlsZSB3YXMgYXV0by1nZW5lcmF0ZWQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkR1cmF0aW9uMXggPSBcIjAuMDRzXCI7XG5leHBvcnQgY29uc3QgU2JiQW5pbWF0aW9uRHVyYXRpb24yeCA9IFwiMC4wOHNcIjtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25EdXJhdGlvbjN4ID0gXCIwLjEyc1wiO1xuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkR1cmF0aW9uNHggPSBcIjAuMTZzXCI7XG5leHBvcnQgY29uc3QgU2JiQW5pbWF0aW9uRHVyYXRpb241eCA9IFwiMC4yMHNcIjtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25EdXJhdGlvbjZ4ID0gXCIwLjI0c1wiO1xuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkR1cmF0aW9uMTJ4ID0gXCIwLjQ4c1wiO1xuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkVhc2luZyA9IFwiY3ViaWMtYmV6aWVyKC40NywgLjEsIDEsIC42MylcIjtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJXaWR0aDF4ID0gXCIwLjA2MjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJXaWR0aDJ4ID0gXCIwLjEyNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlcldpZHRoM3ggPSBcIjAuMTg3NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlcldpZHRoNHggPSBcIjAuMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJSYWRpdXMxeCA9IFwiMC4xMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJSYWRpdXMyeCA9IFwiMC4yNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlclJhZGl1czR4ID0gXCIwLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJSYWRpdXM2eCA9IFwiMC43NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlclJhZGl1czh4ID0gXCIxcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyUmFkaXVzMTZ4ID0gXCIycmVtXCI7XG5leHBvcnQgY29uc3QgU2JiQnJlYWtwb2ludFplcm9NaW4gPSBcIjByZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50WmVyb01heCA9IFwiMzcuNDM3NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRTbWFsbE1pbiA9IFwiMzcuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRTbWFsbE1heCA9IFwiNjMuOTM3NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRMYXJnZU1pbiA9IFwiNjRyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50TGFyZ2VNYXggPSBcIjg5LjkzNzVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50VWx0cmFNaW4gPSBcIjkwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiQnJlYWtwb2ludFVsdHJhTWF4ID0gXCIxNjEuMTg3NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQmxhY2sgPSBcIiMwMDAwMDBcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvck1pZG5pZ2h0ID0gXCIjMTUxNTE1XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbHVlID0gXCIjMmQzMjdkXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JDaGFyY29hbCA9IFwiIzIxMjEyMVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9ySXJvbiA9IFwiIzQ0NDQ0NFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQW50aHJhY2l0ZSA9IFwiIzVhNWE1YVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yR3Jhbml0ZSA9IFwiIzY4Njg2OFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTWV0YWwgPSBcIiM3Njc2NzZcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclNtb2tlID0gXCIjOGQ4ZDhkXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JTdG9ybSA9IFwiI2E4YThhOFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yR3JhcGhpdGUgPSBcIiNiN2I3YjdcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckNlbWVudCA9IFwiI2JkYmRiZFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUGxhdGludW0gPSBcIiNjZGNkY2RcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckFsdW1pbml1bSA9IFwiI2QyZDJkMlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yU2lsdmVyID0gXCIjZGNkY2RjXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JDbG91ZCA9IFwiI2U1ZTVlNVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTWlsayA9IFwiI2Y2ZjZmNlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUmVkID0gXCIjZWIwMDAwXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSZWQ4NSA9IFwiI2ZmMzgzOFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUmVkMTI1ID0gXCIjYzYwMDE4XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSZWQxNTAgPSBcIiNhMjAwMTNcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJveWFsTGlnaHQgPSBcIiMwNjM0OGJcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJveWFsRGFyayA9IFwiIzAwNTNlZlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUm95YWw4NUxpZ2h0ID0gXCIjNDA3N2RmXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSb3lhbDg1RGFyayA9IFwiIzQwNzdkZlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUm95YWwxMjVMaWdodCA9IFwiIzAzMjY2OFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUm95YWwxMjVEYXJrID0gXCIjMjQ1ZWNiXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSb3lhbDE1MExpZ2h0ID0gXCIjMDIxYzRlXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSb3lhbDE1MERhcmsgPSBcIiMzYzY1YjNcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvcldoaXRlID0gXCIjZmZmZmZmXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JTa3lMaWdodCA9IFwiIzAwNzRiZlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yU2t5RGFyayA9IFwiIzEyOGVkZVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTmlnaHRMaWdodCA9IFwiIzE0M2E4NVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTmlnaHREYXJrID0gXCIjNjU4N2NhXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JWaW9sZXRMaWdodCA9IFwiIzZmMjI4MlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yVmlvbGV0RGFyayA9IFwiI2IzNmNjNVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUGlua0xpZ2h0ID0gXCIjYzczODdhXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JQaW5rRGFyayA9IFwiI2U0NTI5NVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQXV0dW1uTGlnaHQgPSBcIiNjZjNiMDBcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckF1dHVtbkRhcmsgPSBcIiNmMDUzMTNcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvck9yYW5nZUxpZ2h0ID0gXCIjZjI3ZTAwXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JPcmFuZ2VEYXJrID0gXCIjZmI4ZTE5XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JQZWFjaExpZ2h0ID0gXCIjZmNiYjAwXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JQZWFjaERhcmsgPSBcIiNmZmM3MjdcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckxlbW9uTGlnaHQgPSBcIiNmZmRlMTVcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckxlbW9uRGFyayA9IFwiI2ZmZTU0N1wiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQnJvd25MaWdodCA9IFwiI2EwNTQwMFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQnJvd25EYXJrID0gXCIjY2Y2ZjA0XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JHcmVlbkxpZ2h0ID0gXCIjMDA4MjMzXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JHcmVlbkRhcmsgPSBcIiMxMDlkNDdcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclR1cnF1b2lzZUxpZ2h0ID0gXCIjMDA3ZTg0XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JUdXJxdW9pc2VEYXJrID0gXCIjMDBhNTliXCI7XG5leHBvcnQgY29uc3QgU2JiRm9jdXNPdXRsaW5lT2Zmc2V0ID0gXCIwLjE4NzVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJIb3ZlckltYWdlQnJpZ2h0bmVzcyA9IDEuMDc1O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc1plcm8gPSA0O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc1NtYWxsID0gODtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZENvbHVtbnNMYXJnZSA9IDEyO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc1VsdHJhID0gMTY7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRHdXR0ZXJSZXNwb25zaXZlWmVybyA9IFwiMXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkR3V0dGVyUmVzcG9uc2l2ZVNtYWxsID0gXCIxLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZEd1dHRlclJlc3BvbnNpdmVMYXJnZSA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkR3V0dGVyUmVzcG9uc2l2ZVVsdHJhID0gXCIycmVtXCI7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZU9mZnNldFJlc3BvbnNpdmVaZXJvID0gXCIxLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZU9mZnNldFJlc3BvbnNpdmVTbWFsbCA9IFwiM3JlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VPZmZzZXRSZXNwb25zaXZlTGFyZ2UgPSBcIjRyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlT2Zmc2V0UmVzcG9uc2l2ZVVsdHJhID0gXCI3LjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlUGFnZU1heFdpZHRoID0gXCI3NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NoYWRvdzFPZmZzZXRYID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93MU9mZnNldFkgPSBcIjAuMTI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93MUJsdXIgPSBcIjFyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cxU3ByZWFkID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93Mk9mZnNldFggPSBcIjByZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cyT2Zmc2V0WSA9IFwiMC4wNjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93MkJsdXIgPSBcIjAuMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cyU3ByZWFkID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U2hhZG93MU9mZnNldFggPSBcIjByZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cxT2Zmc2V0WSA9IFwiMC4yNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzFCbHVyID0gXCIycmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U2hhZG93MVNwcmVhZCA9IFwiMHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzJPZmZzZXRYID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U2hhZG93Mk9mZnNldFkgPSBcIjAuMDYyNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzJCbHVyID0gXCIwLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cyU3ByZWFkID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93MU9mZnNldFggPSBcIjByZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTaGFkb3cxT2Zmc2V0WSA9IFwiMXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNoYWRvdzFCbHVyID0gXCI4cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93MVNwcmVhZCA9IFwiMHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNoYWRvdzJPZmZzZXRYID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93Mk9mZnNldFkgPSBcIjAuMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTaGFkb3cyQmx1ciA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNoYWRvdzJTcHJlYWQgPSBcIjByZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU2hhZG93MU9mZnNldFggPSBcIjByZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU2hhZG93MU9mZnNldFkgPSBcIjEuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cxQmx1ciA9IFwiMTJyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU2hhZG93MVNwcmVhZCA9IFwiMHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cyT2Zmc2V0WCA9IFwiMHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cyT2Zmc2V0WSA9IFwiMC4yNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cyQmx1ciA9IFwiNHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cyU3ByZWFkID0gXCIwcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHhzWmVybyA9IFwiMS43NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHh4c1NtYWxsID0gXCIxLjc1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHhzTGFyZ2UgPSBcIjJyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4eHNVbHRyYSA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHhzWmVybyA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHhzU21hbGwgPSBcIjJyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4c0xhcmdlID0gXCIyLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHNVbHRyYSA9IFwiMi4yNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHNaZXJvID0gXCIyLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYc1NtYWxsID0gXCIyLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYc0xhcmdlID0gXCIyLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFhzVWx0cmEgPSBcIjIuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50U1plcm8gPSBcIjIuNzVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFNTbWFsbCA9IFwiMi43NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50U0xhcmdlID0gXCIzcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRTVWx0cmEgPSBcIjNyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudE1aZXJvID0gXCIzcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRNU21hbGwgPSBcIjNyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudE1MYXJnZSA9IFwiMy41cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRNVWx0cmEgPSBcIjMuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TFplcm8gPSBcIjMuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TFNtYWxsID0gXCIzLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudExMYXJnZSA9IFwiNHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TFVsdHJhID0gXCI0cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUljb25VaUV4dHJhU21hbGwgPSBcIjFyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplSWNvblVpU21hbGwgPSBcIjEuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVJY29uVWlNZWRpdW0gPSBcIjIuMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplSWNvblVpTGFyZ2UgPSBcIjNyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQxeCA9IFwiMC4yNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDJ4ID0gXCIwLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQzeCA9IFwiMC43NXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDR4ID0gXCIxcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkNXggPSBcIjEuMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQ2eCA9IFwiMS41cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkN3ggPSBcIjEuNzVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQ4eCA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDl4ID0gXCIyLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMTB4ID0gXCIyLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQxMnggPSBcIjNyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQxNHggPSBcIjMuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDE2eCA9IFwiNHJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDE4eCA9IFwiNC41cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMTl4ID0gXCI0Ljc1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMjB4ID0gXCI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMjR4ID0gXCI2cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMzB4ID0gXCI3LjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4eHNaZXJvID0gXCIwLjc1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHhzU21hbGwgPSBcIjAuNzVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4eHNMYXJnZSA9IFwiMXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHh4c1VsdHJhID0gXCIxcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHNaZXJvID0gXCIxcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHNTbWFsbCA9IFwiMXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhzTGFyZ2UgPSBcIjEuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhzVWx0cmEgPSBcIjEuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHNaZXJvID0gXCIxLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYc1NtYWxsID0gXCIxLjI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYc0xhcmdlID0gXCIxLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhzVWx0cmEgPSBcIjEuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU1plcm8gPSBcIjEuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU1NtYWxsID0gXCIxLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVNMYXJnZSA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU1VsdHJhID0gXCIycmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVNWmVybyA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTVNtYWxsID0gXCIycmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVNTGFyZ2UgPSBcIjIuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTVVsdHJhID0gXCIzcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVMWmVybyA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTFNtYWxsID0gXCIyLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZUxMYXJnZSA9IFwiMy41cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVMVWx0cmEgPSBcIjRyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhsWmVybyA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxTbWFsbCA9IFwiM3JlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxMYXJnZSA9IFwiNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxVbHRyYSA9IFwiNnJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhsWmVybyA9IFwiM3JlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhsU21hbGwgPSBcIjQuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhsTGFyZ2UgPSBcIjZyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4bFVsdHJhID0gXCI3LjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvRm9udEZhbWlseSA9XG4gICdcIlNCQlwiLCBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYnO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9MZXR0ZXJTcGFjaW5nSGVhZGluZyA9IFwiMGVtXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb0xldHRlclNwYWNpbmdUZXh0ID0gXCIwLjAzZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvTGluZUhlaWdodEhlYWRpbmcgPSAxLjQ7XG5leHBvcnQgY29uc3QgU2JiVHlwb0xpbmVIZWlnaHRUZXh0ID0gMS43NTtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGUwNzV4ID0gXCIwLjc1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMDgxMjV4ID0gXCIwLjgxMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGUwODc1eCA9IFwiMC44NzVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGVEZWZhdWx0ID0gXCIxcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMTEyNXggPSBcIjEuMTI1cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMTI1eCA9IFwiMS4yNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTE1eCA9IFwiMS41cmVtXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMnggPSBcIjJyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGUyNXggPSBcIjIuNXJlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTN4ID0gXCIzcmVtXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMzV4ID0gXCIzLjVyZW1cIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGU0eCA9IFwiNHJlbVwiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNCWSxNQUFDLHVCQUF1QjtBQUN4QixNQUFDLHVCQUF1QjtBQUN4QixNQUFDLHdCQUF3QjtBQUN6QixNQUFDLHdCQUF3QjtBQUN6QixNQUFDLHdCQUF3QjtBQUN6QixNQUFDLHdCQUF3QjtBQUN6QixNQUFDLHdCQUF3QjtBQUN6QixNQUFDLHdCQUF3QjsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF19
|
|
@@ -118,7 +118,7 @@ export declare class SbbSelectElement<T = string> extends SbbSelectElement_base
|
|
|
118
118
|
*/
|
|
119
119
|
formStateRestoreCallback(state: FormRestoreState | null, _reason: FormRestoreReason): void;
|
|
120
120
|
protected formState(): FormRestoreState;
|
|
121
|
-
private
|
|
121
|
+
private _syncNegative;
|
|
122
122
|
protected shouldValidate(name: PropertyKey | undefined): boolean;
|
|
123
123
|
protected validate(): void;
|
|
124
124
|
private _setupSelect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/select/select.component.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAO/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"select.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/select/select.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ import { ref } from "lit/directives/ref.js";
|
|
|
14
14
|
import { until } from "lit/directives/until.js";
|
|
15
15
|
import { getNextElementIndex } from "../core/a11y.js";
|
|
16
16
|
import { SbbOpenCloseBaseElement } from "../core/base-elements.js";
|
|
17
|
-
import { SbbEscapableOverlayController, SbbLanguageController } from "../core/controllers.js";
|
|
17
|
+
import { SbbEscapableOverlayController, SbbLanguageController, SbbPropertyWatcherController } from "../core/controllers.js";
|
|
18
18
|
import { forceType, handleDistinctChange, getOverride } from "../core/decorators.js";
|
|
19
19
|
import { isLean, setOrRemoveAttribute, isZeroAnimationDuration, isNextjs, isSafari } from "../core/dom.js";
|
|
20
20
|
import { i18nSelectionRequired } from "../core/i18n.js";
|
|
@@ -120,31 +120,31 @@ const style = css`.sbb-gap-fix-wrapper {
|
|
|
120
120
|
--sbb-select-placeholder-fallback-color: var(--sbb-color-5);
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
:host(:not([
|
|
124
|
-
:host([
|
|
123
|
+
:host(:not(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))),
|
|
124
|
+
:host(:is(:state(state-closed),[state--state-closed])) {
|
|
125
125
|
--sbb-options-panel-visibility: hidden;
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
:host([
|
|
128
|
+
:host(:is(:state(state-opening),[state--state-opening])) {
|
|
129
129
|
--sbb-options-panel-animation-name: open;
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
:host([
|
|
132
|
+
:host(:is(:state(state-closing),[state--state-closing])) {
|
|
133
133
|
--sbb-options-panel-animation-name: close;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
:host([
|
|
137
|
-
:host([
|
|
136
|
+
:host(:is(:state(state-opened),[state--state-opened])),
|
|
137
|
+
:host(:is(:state(state-opening),[state--state-opening])) {
|
|
138
138
|
--sbb-options-panel-gap-fix-opacity: 1;
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
:host([
|
|
141
|
+
:host(:is(:state(options-panel-position-below),[state--options-panel-position-below])) {
|
|
142
142
|
--sbb-options-panel-animation-transform: translateY(
|
|
143
143
|
calc((var(--sbb-options-panel-origin-height) / 2) * -1)
|
|
144
144
|
);
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
:host([
|
|
147
|
+
:host(:is(:state(options-panel-position-above),[state--options-panel-position-above])) {
|
|
148
148
|
--sbb-options-panel-options-border-radius: var(--sbb-options-panel-border-radius)
|
|
149
149
|
var(--sbb-options-panel-border-radius) 0 0;
|
|
150
150
|
--sbb-options-panel-gap-fix-top: var(--sbb-options-panel-max-height);
|
|
@@ -230,27 +230,25 @@ const style = css`.sbb-gap-fix-wrapper {
|
|
|
230
230
|
transition: box-shadow var(--sbb-options-panel-animation-duration) var(--sbb-options-panel-animation-timing-function);
|
|
231
231
|
z-index: 1;
|
|
232
232
|
}
|
|
233
|
-
:host([
|
|
233
|
+
:host(:is(:state(options-panel-position-below),[state--options-panel-position-below])) .sbb-select__panel {
|
|
234
234
|
inset-block-start: calc(var(--sbb-options-panel-position-y) - var(--sbb-options-panel-origin-height));
|
|
235
235
|
}
|
|
236
|
-
:host(:is([
|
|
236
|
+
:host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening]))) .sbb-select__panel {
|
|
237
237
|
box-shadow: var(--sbb-box-shadow-level-5-hard);
|
|
238
238
|
}
|
|
239
|
-
:host(:is([
|
|
239
|
+
:host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening]))[negative]) .sbb-select__panel {
|
|
240
240
|
box-shadow: var(--sbb-box-shadow-level-5-hard-negative);
|
|
241
241
|
}
|
|
242
|
-
:host([
|
|
242
|
+
:host(:is(:state(options-panel-position-below),[state--options-panel-position-below])) .sbb-select__panel::before {
|
|
243
243
|
display: block;
|
|
244
244
|
}
|
|
245
|
-
:host([
|
|
245
|
+
:host(:is(:state(options-panel-position-above),[state--options-panel-position-above])) .sbb-select__panel::after {
|
|
246
246
|
display: block;
|
|
247
247
|
}
|
|
248
|
-
:host(:is([
|
|
248
|
+
:host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening])):is(:state(option-panel-origin-borderless),[state--option-panel-origin-borderless])) .sbb-select__panel::before, :host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening])):is(:state(option-panel-origin-borderless),[state--option-panel-origin-borderless])) .sbb-select__panel::after {
|
|
249
249
|
box-shadow: var(--sbb-box-shadow-level-5-hard);
|
|
250
250
|
}
|
|
251
|
-
:host(:is([
|
|
252
|
-
[data-state=opening])[data-option-panel-origin-borderless][negative]) .sbb-select__panel::before, :host(:is([data-state=opened],
|
|
253
|
-
[data-state=opening])[data-option-panel-origin-borderless][negative]) .sbb-select__panel::after {
|
|
251
|
+
:host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening])):is(:state(option-panel-origin-borderless),[state--option-panel-origin-borderless])[negative]) .sbb-select__panel::before, :host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening])):is(:state(option-panel-origin-borderless),[state--option-panel-origin-borderless])[negative]) .sbb-select__panel::after {
|
|
254
252
|
box-shadow: var(--sbb-box-shadow-level-5-hard-negative);
|
|
255
253
|
}
|
|
256
254
|
|
|
@@ -411,6 +409,12 @@ let SbbSelectElement = (() => {
|
|
|
411
409
|
config: { attributeFilter: ["aria-labelledby", "aria-label", "aria-describedby"] },
|
|
412
410
|
callback: () => this._syncAriaLabels()
|
|
413
411
|
}));
|
|
412
|
+
this.addController(new SbbPropertyWatcherController(this, () => this.closest("sbb-form-field"), {
|
|
413
|
+
negative: (e) => {
|
|
414
|
+
this.negative = e.negative;
|
|
415
|
+
this._syncNegative();
|
|
416
|
+
}
|
|
417
|
+
}));
|
|
414
418
|
}
|
|
415
419
|
/** The placeholder used if no value has been selected. */
|
|
416
420
|
get placeholder() {
|
|
@@ -499,7 +503,7 @@ let SbbSelectElement = (() => {
|
|
|
499
503
|
}
|
|
500
504
|
this.shadowRoot?.querySelector(".sbb-select__container")?.showPopover?.();
|
|
501
505
|
this.state = "opening";
|
|
502
|
-
this.
|
|
506
|
+
this.internals.states.add("expanded");
|
|
503
507
|
this._setOverlayPosition();
|
|
504
508
|
if (this._isZeroAnimationDuration()) {
|
|
505
509
|
this._handleOpening();
|
|
@@ -511,7 +515,7 @@ let SbbSelectElement = (() => {
|
|
|
511
515
|
return;
|
|
512
516
|
}
|
|
513
517
|
this.state = "closing";
|
|
514
|
-
this.
|
|
518
|
+
this.internals.states.delete("expanded");
|
|
515
519
|
this._openPanelEventsController.abort();
|
|
516
520
|
if (this._originElement) {
|
|
517
521
|
this._originResizeObserver.unobserve(this._originElement);
|
|
@@ -528,7 +532,7 @@ let SbbSelectElement = (() => {
|
|
|
528
532
|
return this._displayValue ?? "";
|
|
529
533
|
}
|
|
530
534
|
_selectableOptions() {
|
|
531
|
-
return this.options.filter((opt) => !opt.matches(":state(disabled)"));
|
|
535
|
+
return this.options.filter((opt) => !opt.matches(":is(:state(disabled),[state--disabled])"));
|
|
532
536
|
}
|
|
533
537
|
/** Listens to option changes. */
|
|
534
538
|
_onOptionChanged(event) {
|
|
@@ -613,11 +617,7 @@ let SbbSelectElement = (() => {
|
|
|
613
617
|
if (ariaRoleOnHost) {
|
|
614
618
|
this.id ||= this._overlayId;
|
|
615
619
|
}
|
|
616
|
-
|
|
617
|
-
if (formField) {
|
|
618
|
-
this.negative = formField.hasAttribute("negative");
|
|
619
|
-
}
|
|
620
|
-
this._syncProperties();
|
|
620
|
+
this._syncNegative();
|
|
621
621
|
this._syncAriaLabels();
|
|
622
622
|
if (this._didLoad) {
|
|
623
623
|
this._setupOrigin();
|
|
@@ -632,8 +632,8 @@ let SbbSelectElement = (() => {
|
|
|
632
632
|
}
|
|
633
633
|
willUpdate(changedProperties) {
|
|
634
634
|
super.willUpdate(changedProperties);
|
|
635
|
-
if (changedProperties.has("negative")
|
|
636
|
-
this.
|
|
635
|
+
if (changedProperties.has("negative")) {
|
|
636
|
+
this._syncNegative();
|
|
637
637
|
}
|
|
638
638
|
if (changedProperties.has("readOnly")) {
|
|
639
639
|
this._closeOnDisabledReadonlyChanged(this.readOnly);
|
|
@@ -672,13 +672,8 @@ let SbbSelectElement = (() => {
|
|
|
672
672
|
formState() {
|
|
673
673
|
return JSON.stringify({ value: this.value, manuallyAssigned: this._isValueManuallyAssigned });
|
|
674
674
|
}
|
|
675
|
-
|
|
675
|
+
_syncNegative() {
|
|
676
676
|
this.querySelectorAll?.("sbb-divider, sbb-option-hint").forEach((el) => el.negative = this.negative);
|
|
677
|
-
this.querySelectorAll?.("sbb-option, sbb-optgroup").forEach((element) => {
|
|
678
|
-
element.toggleAttribute("data-negative", this.negative);
|
|
679
|
-
element.toggleAttribute("data-multiple", this.multiple);
|
|
680
|
-
});
|
|
681
|
-
this.querySelectorAll?.("sbb-option, sbb-optgroup").forEach((e) => e.requestUpdate?.());
|
|
682
677
|
}
|
|
683
678
|
shouldValidate(name) {
|
|
684
679
|
return super.shouldValidate(name) || name === "value" || name === "required";
|
|
@@ -705,7 +700,7 @@ let SbbSelectElement = (() => {
|
|
|
705
700
|
}
|
|
706
701
|
this._originElement = formField?.shadowRoot?.querySelector?.("#overlay-anchor") ?? this.parentElement;
|
|
707
702
|
if (this._originElement) {
|
|
708
|
-
this.
|
|
703
|
+
this.toggleState("option-panel-origin-borderless", formField?.hasAttribute?.("borderless"));
|
|
709
704
|
if (this.isOpen) {
|
|
710
705
|
this._originResizeObserver.observe(this._originElement);
|
|
711
706
|
}
|
|
@@ -1086,4 +1081,4 @@ let SbbSelectElement = (() => {
|
|
|
1086
1081
|
export {
|
|
1087
1082
|
SbbSelectElement
|
|
1088
1083
|
};
|
|
1089
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyBSZXNpemVDb250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9yZXNpemUtY29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eURlY2xhcmF0aW9uLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgaXNTZXJ2ZXIsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcbmltcG9ydCB7IHVudGlsIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvdW50aWwuanMnO1xuXG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4IH0gZnJvbSAnLi4vY29yZS9hMTF5LnRzJztcbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLCBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgZ2V0T3ZlcnJpZGUsIGhhbmRsZURpc3RpbmN0Q2hhbmdlIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLnRzJztcbmltcG9ydCB7XG4gIGlzTGVhbixcbiAgaXNOZXh0anMsXG4gIGlzU2FmYXJpLFxuICBpc1plcm9BbmltYXRpb25EdXJhdGlvbixcbiAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUsXG59IGZyb20gJy4uL2NvcmUvZG9tLnRzJztcbmltcG9ydCB7IGkxOG5TZWxlY3Rpb25SZXF1aXJlZCB9IGZyb20gJy4uL2NvcmUvaTE4bi50cyc7XG5pbXBvcnQge1xuICB0eXBlIEZvcm1SZXN0b3JlUmVhc29uLFxuICB0eXBlIEZvcm1SZXN0b3JlU3RhdGUsXG4gIFNiYkRpc2FibGVkTWl4aW4sXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4sXG4gIFNiYkh5ZHJhdGlvbk1peGluLFxuICBTYmJOZWdhdGl2ZU1peGluLFxuICBTYmJSZWFkb25seU1peGluLFxuICBTYmJSZXF1aXJlZE1peGluLFxuICBTYmJVcGRhdGVTY2hlZHVsZXJNaXhpbixcbn0gZnJvbSAnLi4vY29yZS9taXhpbnMudHMnO1xuaW1wb3J0IHsgaXNFdmVudE9uRWxlbWVudCwgb3ZlcmxheUdhcEZpeENvcm5lcnMsIHNldE92ZXJsYXlQb3NpdGlvbiB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRpdmlkZXJFbGVtZW50IH0gZnJvbSAnLi4vZGl2aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wdEdyb3VwRWxlbWVudCwgU2JiT3B0aW9uRWxlbWVudCwgU2JiT3B0aW9uSGludEVsZW1lbnQgfSBmcm9tICcuLi9vcHRpb24udHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWxlY3Quc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIGFuIFwiaW1tZWRpYXRlIHBhcmVudFwiIHRvIHRoZSBvcHRpb25zLCBvciBlbHNlIG9wdGdyb3VwcyB3b24ndCB3b3JrLlxuICovXG5jb25zdCBhcmlhUm9sZU9uSG9zdCA9IGlzU2FmYXJpO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIHBhbmVsIHdpdGggc2VsZWN0YWJsZSBvcHRpb25zLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIG9wdGlvbnMuXG4gKiBAY3NzcHJvcCBbLS1zYmItc2VsZWN0LXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSAoVCA9IHN0cmluZyB8IHN0cmluZ1tdKSB8IG51bGxcbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLXNlbGVjdCcpXG5jbGFzcyBTYmJTZWxlY3RFbGVtZW50PFQgPSBzdHJpbmc+IGV4dGVuZHMgU2JiVXBkYXRlU2NoZWR1bGVyTWl4aW4oXG4gIFNiYkRpc2FibGVkTWl4aW4oXG4gICAgU2JiTmVnYXRpdmVNaXhpbihcbiAgICAgIFNiYkh5ZHJhdGlvbk1peGluKFxuICAgICAgICBTYmJSZXF1aXJlZE1peGluKFxuICAgICAgICAgIFNiYlJlYWRvbmx5TWl4aW4oXG4gICAgICAgICAgICBTYmJGb3JtQXNzb2NpYXRlZE1peGluPHR5cGVvZiBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudD4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICksXG4pIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gYXJpYVJvbGVPbkhvc3QgPyAnbGlzdGJveCcgOiBudWxsO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCBzdHlsZV07XG5cbiAgLy8gVE9ETzogZml4IHVzaW5nIC4uLnN1cGVyLmV2ZW50cyByZXF1aXJlczogaHR0cHM6Ly9naXRodWIuY29tL3NiYi1kZXNpZ24tc3lzdGVtcy9seW5lLWNvbXBvbmVudHMvaXNzdWVzLzI2MDBcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBldmVudHMgPSB7XG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBpbnB1dDogJ2lucHV0JyxcbiAgICBkaXNwbGF5dmFsdWVjaGFuZ2U6ICdkaXNwbGF5dmFsdWVjaGFuZ2UnLFxuICAgIGJlZm9yZW9wZW46ICdiZWZvcmVvcGVuJyxcbiAgICBvcGVuOiAnb3BlbicsXG4gICAgYmVmb3JlY2xvc2U6ICdiZWZvcmVjbG9zZScsXG4gICAgY2xvc2U6ICdjbG9zZScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIFRoZSBwbGFjZWhvbGRlciB1c2VkIGlmIG5vIHZhbHVlIGhhcyBiZWVuIHNlbGVjdGVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcblxuICAvKiogV2hldGhlciB0aGUgc2VsZWN0IGFsbG93cyBmb3IgbXVsdGlwbGUgc2VsZWN0aW9uLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQGhhbmRsZURpc3RpbmN0Q2hhbmdlKChlOiBTYmJTZWxlY3RFbGVtZW50PFQ+LCBuZXdWYWx1ZTogYm9vbGVhbikgPT5cbiAgICBlLl9vbk11bHRpcGxlQ2hhbmdlZChuZXdWYWx1ZSksXG4gIClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAZm9yY2VUeXBlKClcbiAgQGhhbmRsZURpc3RpbmN0Q2hhbmdlKChlOiBTYmJTZWxlY3RFbGVtZW50PFQ+LCBuZXdWYWx1ZTogYm9vbGVhbikgPT5cbiAgICBlLl9jbG9zZU9uRGlzYWJsZWRSZWFkb25seUNoYW5nZWQobmV3VmFsdWUpLFxuICApXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgQGdldE92ZXJyaWRlKChlOiBTYmJTZWxlY3RFbGVtZW50PFQ+LCB2OiBib29sZWFuKTogYm9vbGVhbiA9PiB2IHx8IGUuaXNEaXNhYmxlZEV4dGVybmFsbHkoKSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFZhbHVlIG9mIHRoZSBmb3JtIGVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFRbXSB8IFQpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuX3VwZGF0ZU9wdGlvbnNGcm9tVmFsdWUoKTtcbiAgICB0aGlzLl9pc1ZhbHVlTWFudWFsbHlBc3NpZ25lZCA9IHRydWU7XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBUW10gfCBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHByaXZhdGUgX3ZhbHVlOiBUIHwgVFtdIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFNpemUgdmFyaWFudCwgZWl0aGVyIG0gb3Igcy5cbiAgICogQGRlZmF1bHQgJ20nIC8gJ3MnIChsZWFuKVxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogJ20nIHwgJ3MnID0gaXNMZWFuKCkgPyAncycgOiAnbSc7XG5cbiAgLyoqXG4gICAqIEZvcm0gdHlwZSBvZiBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCAnc2VsZWN0LW9uZSAvIHNlbGVjdC1tdWx0aXBsZSdcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm11bHRpcGxlID8gJ3NlbGVjdC1tdWx0aXBsZScgOiAnc2VsZWN0LW9uZSc7XG4gIH1cblxuICAvKiogVGhlIHZhbHVlIGRpc3BsYXllZCBieSB0aGUgY29tcG9uZW50LiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9kaXNwbGF5VmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX29yaWdpblJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZUNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBza2lwSW5pdGlhbDogdHJ1ZSxcbiAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpO1xuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuXG4gIHByaXZhdGUgX292ZXJsYXkhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfb3B0aW9uQ29udGFpbmVyITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX29yaWdpbkVsZW1lbnQhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIgPSBuZXcgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX292ZXJsYXlJZCA9IGBzYmItc2VsZWN0LSR7KytuZXh0SWR9YDtcbiAgcHJpdmF0ZSBfYWN0aXZlSXRlbUluZGV4ID0gLTE7XG4gIHByaXZhdGUgX3NlYXJjaFRpbWVvdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgcHJpdmF0ZSBfc2VhcmNoU3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2RpZExvYWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25NZW51OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2xhbmd1YWdlQ29udHJvbGxlciA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2lzVmFsdWVNYW51YWxseUFzc2lnbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSAnY29tYm9ib3gnIGlucHV0IGVsZW1lbnRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXJFbGVtZW50O1xuICB9XG5cbiAgLyoqIFJldHVybnMgYWxsIFNiYk9wdGlvbkVsZW1lbnRzIGZyb20gdGhpcyBzYmItc2VsZWN0IGluc3RhbmNlLiAqL1xuICBwdWJsaWMgZ2V0IG9wdGlvbnMoKTogU2JiT3B0aW9uRWxlbWVudDxUPltdIHtcbiAgICBjb25zdCBvcHRpb25zOiBTYmJPcHRpb25FbGVtZW50PFQ+W10gPSBbXTtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJPcHRpb25FbGVtZW50PFQ+Pignc2JiLW9wdGlvbicpLmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgY3VzdG9tRWxlbWVudHMudXBncmFkZShvcHRpb24pO1xuICAgICAgb3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Lignb3B0aW9uc2VsZWN0aW9uY2hhbmdlJywgKGU6IEV2ZW50KSA9PiB0aGlzLl9vbk9wdGlvbkNoYW5nZWQoZSkpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdvcHRpb25MYWJlbENoYW5nZWQnLCAoZTogRXZlbnQpID0+IHRoaXMuX29uT3B0aW9uTGFiZWxDaGFuZ2VkKGUpKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignybVvcHRncm91cHNsb3RjaGFuZ2UnLCAoKSA9PiB0aGlzLl91cGRhdGVWYWx1ZU9wdGlvblN0YXRlKCksIHtcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NsaWNrJywgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIFNiYlNlbGVjdEVsZW1lbnQ8VD4gfCBTYmJPcHRpb25FbGVtZW50PFQ+O1xuICAgICAgaWYgKHRhcmdldC5sb2NhbE5hbWUgPT09ICdzYmItb3B0aW9uJykge1xuICAgICAgICAvLyBPcHRpb24gY2xpY2tcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlICYmICF0YXJnZXQuZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl90b2dnbGVPcGVuaW5nKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgTXV0YXRpb25Db250cm9sbGVyKHRoaXMsIHtcbiAgICAgICAgY29uZmlnOiB7IGF0dHJpYnV0ZUZpbHRlcjogWydhcmlhLWxhYmVsbGVkYnknLCAnYXJpYS1sYWJlbCcsICdhcmlhLWRlc2NyaWJlZGJ5J10gfSxcbiAgICAgICAgY2FsbGJhY2s6ICgpID0+IHRoaXMuX3N5bmNBcmlhTGFiZWxzKCksXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3luY0FyaWFMYWJlbHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCB8fCBpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKFxuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQsXG4gICAgICAnYXJpYS1sYWJlbGxlZGJ5JyxcbiAgICAgIHRoaXMuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKSxcbiAgICApO1xuICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnYXJpYS1sYWJlbCcsIHRoaXMuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykpO1xuICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKFxuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQsXG4gICAgICAnYXJpYS1kZXNjcmliZWRieScsXG4gICAgICB0aGlzLmdldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpLFxuICAgICk7XG5cbiAgICAvLyBVc2luZyB0aGUgYXNzb2NpYXRlZCBsYWJlbHMgaXMgb25seSBhIGZhbGxiYWNrLlxuICAgIC8vIFRoZSBkcmF3YmFjayBpcywgdGhhdCBpdCBkb2Vzbid0IGdldCB1cGRhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgbGlzdCBvZiBsYWJlbCBjaGFuZ2VzLlxuICAgIGlmIChcbiAgICAgICF0aGlzLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpICYmXG4gICAgICAhdGhpcy5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScpICYmXG4gICAgICB0aGlzLmludGVybmFscy5sYWJlbHMubGVuZ3RoXG4gICAgKSB7XG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKFxuICAgICAgICAnYXJpYS1sYWJlbCcsXG4gICAgICAgIEFycmF5LmZyb20odGhpcy5pbnRlcm5hbHMubGFiZWxzKVxuICAgICAgICAgIC5tYXAoKGxhYmVsKSA9PiBsYWJlbC50ZXh0Q29udGVudClcbiAgICAgICAgICAuam9pbignLCAnKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqIE9wZW5zIHRoZSBzZWxlY3Rpb24gcGFuZWwuICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnIHx8XG4gICAgICAhdGhpcy5fb3ZlcmxheSB8fFxuICAgICAgdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgdGhpcy5kaXNhYmxlZCB8fFxuICAgICAgdGhpcy5mb3JtRGlzYWJsZWQgfHxcbiAgICAgICF0aGlzLmRpc3BhdGNoQmVmb3JlT3BlbkV2ZW50KClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KCcuc2JiLXNlbGVjdF9fY29udGFpbmVyJyk/LnNob3dQb3BvdmVyPy4oKTtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5pbmcnO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJywgdHJ1ZSk7XG4gICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgb3BlbmVkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbG9zZXMgdGhlIHNlbGVjdGlvbiBwYW5lbC4gKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJyB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnLCBmYWxzZSk7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5hYm9ydCgpO1xuICAgIGlmICh0aGlzLl9vcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aGlzLl9vcmlnaW5SZXNpemVPYnNlcnZlci51bm9ic2VydmUodGhpcy5fb3JpZ2luRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLW9wdGlvbnMtcGFuZWwtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgY3VycmVudCBkaXNwbGF5ZWQgdmFsdWUuICovXG4gIHB1YmxpYyBnZXREaXNwbGF5VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheVZhbHVlID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0YWJsZU9wdGlvbnMoKTogU2JiT3B0aW9uRWxlbWVudDxUPltdIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbHRlcigob3B0KSA9PiAhb3B0Lm1hdGNoZXMoJzpzdGF0ZShkaXNhYmxlZCknKSk7XG4gIH1cblxuICAvKiogTGlzdGVucyB0byBvcHRpb24gY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfb25PcHRpb25DaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBTYmJPcHRpb25FbGVtZW50PFQ+O1xuICAgIGlmICh0YXJnZXQuc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuX29uT3B0aW9uU2VsZWN0ZWQodGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb25PcHRpb25EZXNlbGVjdGVkKHRhcmdldCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIExpc3RlbnMgdG8gb3B0aW9uIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX29uT3B0aW9uTGFiZWxDaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBTYmJPcHRpb25FbGVtZW50PFQ+O1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5fZ2V0U2VsZWN0ZWQoKTtcblxuICAgIGlmIChcbiAgICAgICghQXJyYXkuaXNBcnJheShzZWxlY3RlZCkgJiYgdGFyZ2V0ICE9PSBzZWxlY3RlZCkgfHxcbiAgICAgIChBcnJheS5pc0FycmF5KHNlbGVjdGVkKSAmJiAhc2VsZWN0ZWQuaW5jbHVkZXModGFyZ2V0KSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVEaXNwbGF5VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZURpc3BsYXlWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuX2dldFNlbGVjdGVkKCk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSBzZWxlY3RlZC5tYXAoKG8pID0+IG8udGV4dENvbnRlbnQ/LnRyaW0oKSkuam9pbignLCAnKSB8fCBudWxsO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IHNlbGVjdGVkPy50ZXh0Q29udGVudD8udHJpbSgpIHx8IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2Rpc3BsYXl2YWx1ZWNoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBgdmFsdWVgIHByb3BlcnR5IHNob3VsZCBiZSBhZGFwdGVkIHdoZW4gdGhlIGBtdWx0aXBsZWAgcHJvcGVydHkgY2hhbmdlczpcbiAgICogICAtIGlmIGl0IGNoYW5nZXMgdG8gdHJ1ZSwgdGhlICd2YWx1ZScgaXMgc2V0IHRvIGFuIGFycmF5O1xuICAgKiAgIC0gaWYgaXQgY2hhbmdlcyB0byBmYWxzZSwgdGhlIGZpcnN0IGF2YWlsYWJsZSBvcHRpb24gaXMgc2V0IGFzICd2YWx1ZScgb3RoZXJ3aXNlIGl0J3Mgc2V0IHRvIG51bGwuXG4gICAqL1xuICBwcml2YXRlIF9vbk11bHRpcGxlQ2hhbmdlZChpc0NoYW5naW5nVG9NdWx0aXBsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0NoYW5naW5nVG9NdWx0aXBsZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9pc1ZhbHVlTWFudWFsbHlBc3NpZ25lZCB8fCB0aGlzLnZhbHVlICE9IG51bGwgPyBbdGhpcy52YWx1ZSBhcyBUXSA6IFtdO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLnZhbHVlLmxlbmd0aCA/IHRoaXMudmFsdWVbMF0gOiBudWxsO1xuICAgIH1cbiAgICB0aGlzLl91cGRhdGVEaXNwbGF5VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgYGRpc2FibGVkYCBvciB0aGUgYHJlYWRvbmx5YCBwcm9wZXJ0aWVzIGFyZSBzZXQsIGFuZCB0aGUgcGFuZWwgaXMgb3BlbiwgY2xvc2UgaXQuXG4gICAqL1xuICBwcml2YXRlIF9jbG9zZU9uRGlzYWJsZWRSZWFkb25seUNoYW5nZWQobmV3VmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4gJiYgbmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fdXBkYXRlVmFsdWVPcHRpb25TdGF0ZSgpO1xuXG4gICAgLy8gV2FpdCBmb3Igc3NyIGh5ZHJhdGlvblxuICAgIGlmICghaXNOZXh0anMoKSkge1xuICAgICAgdGhpcy5zdGFydFVwZGF0ZSgpO1xuICAgICAgdGhpcy5fc2V0dXBTZWxlY3QoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBvdmVycmlkZSBmb2N1cygpOiB2b2lkIHtcbiAgICAvLyBGb3J3YXJkIGZvY3VzIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LmZvY3VzKCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBvdmVycmlkZSBibHVyKCk6IHZvaWQge1xuICAgIC8vIEZvcndhcmQgYmx1ciB0byB0aGUgdHJpZ2dlciBlbGVtZW50LlxuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5ibHVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBlbGVtZW50J3MgZmlyc3QgYXR0cmlidXRlIHdob3NlIHF1YWxpZmllZCBuYW1lIGlzIHF1YWxpZmllZE5hbWUuXG4gICAqXG4gICAqIFtNRE4gUmVmZXJlbmNlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvRWxlbWVudC9yZW1vdmVBdHRyaWJ1dGUpXG4gICAqIEBpbnRlcm5hbCBXZSBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgZHVlIHRvIGEgaHlkcmF0aW9uIGlzc3VlIHdpdGggTmV4dC5qcy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSByZW1vdmVBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gSW4gTmV4dC5qcyB0aGUgaHlkcmF0aW9uIG5lZWRzIHRvIGZpbmlzaCBiZWZvcmUgd2UgY2FuIG1hbmlwdWxhdGUgdGhlIGxpZ2h0IERPTS5cbiAgICAvLyBAbGl0L3JlYWN0IGNhbGxzIHJlbW92ZUF0dHJpYnV0ZSgnZGVmZXItaHlkcmF0aW9uJykgaW4gYSB1c2VMYXlvdXRFZmZlY3QsXG4gICAgLy8gd2hpY2ggaXMgZG9uZSBhZnRlciBoeWRyYXRpb24gaXMgZmluaXNoZWQuIER1ZSB0byB0aGlzIHdlIGludGVyY2VwdCB0aGlzIGNhbGxcbiAgICAvLyBpbiBvdmVycmlkaW5nIHJlbW92ZUF0dHJpYnV0ZSB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24gb2YgdGhlIHNiYi1zZWxlY3QuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2xpdC9saXQvYmxvYi9tYWluL3BhY2thZ2VzL3JlYWN0L3NyYy9jcmVhdGUtY29tcG9uZW50LnRzI0wyOTMtTDI5NlxuICAgIC8vIFdlIGFsc28gbmVlZCB0byB3YWl0IGZvciB1cGRhdGUgY29tcGxldGUgaW4gb3JkZXIgdG8gYmUgc3VyZSB0aGF0IHRoZSBzaGFkb3cgRE9NIGhhcyBiZWVuIHJlbmRlcmVkLlxuICAgIGlmIChpc05leHRqcygpICYmIHF1YWxpZmllZE5hbWUgPT09ICdkZWZlci1oeWRyYXRpb24nICYmICF0aGlzLl9kaWRMb2FkKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCkgPT4gdGhpcy5fc2V0dXBTZWxlY3QoKSk7XG4gICAgfVxuICAgIHN1cGVyLnJlbW92ZUF0dHJpYnV0ZShxdWFsaWZpZWROYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgaWYgKGFyaWFSb2xlT25Ib3N0KSB7XG4gICAgICB0aGlzLmlkIHx8PSB0aGlzLl9vdmVybGF5SWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybUZpZWxkID0gdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJykgPz8gdGhpcy5jbG9zZXN0Py4oJ1tkYXRhLWZvcm0tZmllbGRdJyk7XG5cbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gZm9ybUZpZWxkLmhhc0F0dHJpYnV0ZSgnbmVnYXRpdmUnKTtcbiAgICB9XG4gICAgdGhpcy5fc3luY1Byb3BlcnRpZXMoKTtcbiAgICB0aGlzLl9zeW5jQXJpYUxhYmVscygpO1xuXG4gICAgaWYgKHRoaXMuX2RpZExvYWQpIHtcbiAgICAgIHRoaXMuX3NldHVwT3JpZ2luKCk7XG4gICAgICB0aGlzLl9zZXR1cFRyaWdnZXIoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcbiAgICBpZiAoIW5hbWUgJiYgdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3N5bmNBcmlhTGFiZWxzKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmVnYXRpdmUnKSB8fCBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ211bHRpcGxlJykpIHtcbiAgICAgIHRoaXMuX3N5bmNQcm9wZXJ0aWVzKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3JlYWRPbmx5JykpIHtcbiAgICAgIHRoaXMuX2Nsb3NlT25EaXNhYmxlZFJlYWRvbmx5Q2hhbmdlZCh0aGlzLnJlYWRPbmx5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLnByZXBlbmQodGhpcy5fdHJpZ2dlckVsZW1lbnQpOyAvLyBUYWtlIGJhY2sgdGhlIHRyaWdnZXIgZWxlbWVudCBwcmV2aW91c2x5IG1vdmVkIHRvIHRoZSBsaWdodCBET01cbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZXNldCB2YWx1ZSBpcyB0aGUgYXR0cmlidXRlIHZhbHVlICh0aGUgc2V0dXAgdmFsdWUpLCBudWxsIG90aGVyd2lzZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9ICh0aGlzLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSA/IHRoaXMuZ2V0QXR0cmlidXRlKCd2YWx1ZScpIDogbnVsbCkgYXMgVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgIF9yZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICApOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyB2YWx1ZSwgbWFudWFsbHlBc3NpZ25lZCB9ID0gSlNPTi5wYXJzZShzdGF0ZSBhcyBzdHJpbmcpIGFzIHtcbiAgICAgICAgdmFsdWU6IFQgfCBUW107XG4gICAgICAgIG1hbnVhbGx5QXNzaWduZWQ6IGJvb2xlYW47XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcblxuICAgICAgaWYgKHZhbHVlcy5zb21lKCh2KSA9PiB2ICE9PSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JykpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBSZXN0b3JpbmcgY29tcGxleCBvYmplY3RzIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHNiYi1zZWxlY3Qgd2l0aCBzdGF0ZSAke3N0YXRlfWAsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNWYWx1ZU1hbnVhbGx5QXNzaWduZWQgPSBtYW51YWxseUFzc2lnbmVkO1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuX3VwZGF0ZU9wdGlvbnNGcm9tVmFsdWUoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIHJlc3RvcmUgc2JiLXNlbGVjdCB3aXRoIHN0YXRlICR7c3RhdGV9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZvcm1TdGF0ZSgpOiBGb3JtUmVzdG9yZVN0YXRlIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeyB2YWx1ZTogdGhpcy52YWx1ZSwgbWFudWFsbHlBc3NpZ25lZDogdGhpcy5faXNWYWx1ZU1hbnVhbGx5QXNzaWduZWQgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJEaXZpZGVyRWxlbWVudCB8IFNiYk9wdGlvbkhpbnRFbGVtZW50PihcbiAgICAgICdzYmItZGl2aWRlciwgc2JiLW9wdGlvbi1oaW50JyxcbiAgICApLmZvckVhY2goKGVsKSA9PiAoZWwubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlKSk7XG5cbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJPcHRpb25FbGVtZW50PFQ+IHwgU2JiT3B0R3JvdXBFbGVtZW50PihcbiAgICAgICdzYmItb3B0aW9uLCBzYmItb3B0Z3JvdXAnLFxuICAgICkuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbmVnYXRpdmUnLCB0aGlzLm5lZ2F0aXZlKTtcbiAgICAgIGVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW11bHRpcGxlJywgdGhpcy5tdWx0aXBsZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJPcHRpb25FbGVtZW50PFQ+IHwgU2JiT3B0R3JvdXBFbGVtZW50PihcbiAgICAgICdzYmItb3B0aW9uLCBzYmItb3B0Z3JvdXAnLFxuICAgICkuZm9yRWFjaCgoZSkgPT4gZS5yZXF1ZXN0VXBkYXRlPy4oKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVmFsaWRhdGUobmFtZSkgfHwgbmFtZSA9PT0gJ3ZhbHVlJyB8fCBuYW1lID09PSAncmVxdWlyZWQnO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlKCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXF1aXJlZCAmJlxuICAgICAgKHRoaXMub3B0aW9ucy5ldmVyeSgobykgPT4gby52YWx1ZSAhPT0gdGhpcy52YWx1ZSkgfHxcbiAgICAgICAgKCF0aGlzLl9pc1ZhbHVlTWFudWFsbHlBc3NpZ25lZCAmJiB0aGlzLnZhbHVlID09IG51bGwpKVxuICAgICkge1xuICAgICAgdGhpcy5zZXRWYWxpZGl0eUZsYWcoJ3ZhbHVlTWlzc2luZycsIGkxOG5TZWxlY3Rpb25SZXF1aXJlZFt0aGlzLl9sYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbW92ZVZhbGlkaXR5RmxhZygndmFsdWVNaXNzaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBTZWxlY3QoKTogdm9pZCB7XG4gICAgdGhpcy5fc2V0dXBPcmlnaW4oKTtcbiAgICB0aGlzLl9zZXR1cFRyaWdnZXIoKTtcbiAgICB0aGlzLl9kaWRMb2FkID0gdHJ1ZTtcbiAgICB0aGlzLmNvbXBsZXRlVXBkYXRlKCk7XG4gIH1cblxuICAvKiogU2V0cyB0aGUgb3JpZ2luRWxlbWVudDsgaWYgdGhlIGNvbXBvbmVudCBpcyB1c2VkIGluIGEgc2JiLWZvcm0tZmllbGQgdXNlcyBpdCwgb3RoZXJ3aXNlIHVzZXMgdGhlIHBhcmVudEVsZW1lbnQuICovXG4gIHByaXZhdGUgX3NldHVwT3JpZ2luKCk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1GaWVsZCA9IHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpO1xuICAgIGlmICh0aGlzLl9vcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aGlzLl9vcmlnaW5SZXNpemVPYnNlcnZlci51bm9ic2VydmUodGhpcy5fb3JpZ2luRWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMuX29yaWdpbkVsZW1lbnQgPVxuICAgICAgZm9ybUZpZWxkPy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy4oJyNvdmVybGF5LWFuY2hvcicpID8/IHRoaXMucGFyZW50RWxlbWVudCE7XG4gICAgaWYgKHRoaXMuX29yaWdpbkVsZW1lbnQpIHtcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKFxuICAgICAgICAnZGF0YS1vcHRpb24tcGFuZWwtb3JpZ2luLWJvcmRlcmxlc3MnLFxuICAgICAgICAhIWZvcm1GaWVsZD8uaGFzQXR0cmlidXRlPy4oJ2JvcmRlcmxlc3MnKSxcbiAgICAgICk7XG5cbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICB0aGlzLl9vcmlnaW5SZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX29yaWdpbkVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUbyBhc3Nlc3Mgc2NyZWVuLXJlYWRlcnMgcHJvYmxlbXMgY2F1c2VkIGJ5IHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGFyaWEgcGF0dGVybnMgYW5kIHNoYWRvdyBET00sXG4gICAqIHdlIGFyZSBmb3JjZWQgdG8gbW92ZSB0aGUgJ2NvbWJvYm94JyB0cmlnZ2VyIGVsZW1lbnQgdG8gdGhlIGxpZ2h0IERPTVxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0dXBUcmlnZ2VyKCk6IHZvaWQge1xuICAgIC8vIE1vdmUgdGhlIHRyaWdnZXIgYmVmb3JlIHRoZSBzYmItc2VsZWN0XG4gICAgdGhpcy5wYXJlbnRFbGVtZW50IS5pbnNlcnRCZWZvcmU/Lih0aGlzLl90cmlnZ2VyRWxlbWVudCwgdGhpcyk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRPdmVybGF5UG9zaXRpb24oKTogdm9pZCB7XG4gICAgc2V0T3ZlcmxheVBvc2l0aW9uKFxuICAgICAgdGhpcy5fb3ZlcmxheSxcbiAgICAgIHRoaXMuX29yaWdpbkVsZW1lbnQsXG4gICAgICB0aGlzLl9vcHRpb25Db250YWluZXIsXG4gICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJy5zYmItc2VsZWN0X19jb250YWluZXInKSEsXG4gICAgICB0aGlzLFxuICAgICk7XG4gIH1cblxuICAvLyBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnICYmIHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIHRoaXMuX2F0dGFjaE9wZW5QYW5lbEV2ZW50cygpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuY29ubmVjdCgpO1xuICAgIGlmICh0aGlzLl9vcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aGlzLl9vcmlnaW5SZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX29yaWdpbkVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLmRpc3BhdGNoT3BlbkV2ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVDbG9zaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2VkJztcbiAgICB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KCcuc2JiLXNlbGVjdF9fY29udGFpbmVyJyk/LmhpZGVQb3BvdmVyPy4oKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICB0aGlzLl9yZXNldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICB0aGlzLl9vcHRpb25Db250YWluZXIuc2Nyb2xsVG9wID0gMDtcbiAgICB0aGlzLl9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5kaXNwYXRjaENsb3NlRXZlbnQoKTtcbiAgfVxuXG4gIC8qKiBXaGVuIGFuIG9wdGlvbiBpcyBzZWxlY3RlZCwgdXBkYXRlcyB0aGUgZGlzcGxheVZhbHVlOyBpdCBhbHNvIGNsb3NlcyB0aGUgc2VsZWN0IGlmIG5vdCBgbXVsdGlwbGVgLiAqL1xuICBwcml2YXRlIF9vbk9wdGlvblNlbGVjdGVkKG9wdGlvbjogU2JiT3B0aW9uRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgfSBlbHNlIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBbb3B0aW9uLnZhbHVlIV07XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpICYmICF0aGlzLnZhbHVlLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSEpKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IFsuLi50aGlzLnZhbHVlLCBvcHRpb24udmFsdWUhXTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVPcHRpb25zRnJvbVZhbHVlKCk7XG4gICAgdGhpcy5fZGlzcGF0Y2hJbnB1dEV2ZW50cygpO1xuICB9XG5cbiAgLyoqIFdoZW4gYW4gb3B0aW9uIGlzIHVuc2VsZWN0ZWQgaW4gYG11bHRpcGxlYCwgcmVtb3ZlcyBpdCBmcm9tIHZhbHVlIGFuZCB1cGRhdGVzIGRpc3BsYXlWYWx1ZS4gKi9cbiAgcHJpdmF0ZSBfb25PcHRpb25EZXNlbGVjdGVkKG9wdGlvblNlbGVjdGlvbkNoYW5nZTogU2JiT3B0aW9uRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIoKGVsKSA9PiBlbCAhPT0gb3B0aW9uU2VsZWN0aW9uQ2hhbmdlLnZhbHVlKTtcbiAgICAgIHRoaXMuX3VwZGF0ZU9wdGlvbnNGcm9tVmFsdWUoKTtcbiAgICAgIHRoaXMuX2Rpc3BhdGNoSW5wdXRFdmVudHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kaXNwYXRjaElucHV0RXZlbnRzKCk6IHZvaWQge1xuICAgIC8qKiBUaGUgaW5wdXQgZXZlbnQgZmlyZXMgd2hlbiB0aGUgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZCBhcyBhIGRpcmVjdCByZXN1bHQgb2YgYSB1c2VyIGFjdGlvbi4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgZWxlbWVudCdzIHZhbHVlLlxuICAgICAqIFVubGlrZSB0aGUgaW5wdXQgZXZlbnQsIHRoZSBjaGFuZ2UgZXZlbnQgaXMgbm90IG5lY2Vzc2FyaWx5IGZpcmVkXG4gICAgICogZm9yIGVhY2ggYWx0ZXJhdGlvbiB0byBhbiBlbGVtZW50J3MgdmFsdWUuXG4gICAgICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX2F0dGFjaE9wZW5QYW5lbEV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gUmVjYWxjdWxhdGUgdGhlIG92ZXJsYXkgcG9zaXRpb24gb24gc2Nyb2xsIGFuZCB3aW5kb3cgcmVzaXplXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgLy8gV2l0aG91dCBjYXB0dXJlLCBvdGhlciBzY3JvbGwgY29udGV4dHMgd291bGQgbm90IGJ1YmJsZSB0byB0aGlzIGV2ZW50IGxpc3RlbmVyLlxuICAgICAgLy8gQ2FwdHVyZSBhbGxvd3MgdXMgdG8gcmVhY3QgdG8gYWxsIHNjcm9sbCBjb250ZXh0cyBpbiB0aGlzIERPTS5cbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIC8vIENsb3NlIG1lbnUgb24gYmFja2Ryb3AgY2xpY2tcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoZXYpID0+IHRoaXMuX3BvaW50ZXJEb3duTGlzdGVuZXIoZXYpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCAoZXYpID0+IHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrKGV2KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX29uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnKSB7XG4gICAgICB0aGlzLl9vcGVuZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZSA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHRoaXMuX2Nsb3NlZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NoZWNrRm9yTGV0dGVyU2VsZWN0aW9uKGV2ZW50KSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25CeVRleHQoZXZlbnQpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICcgJzpcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlYWRPbmx5IHx8IHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NoZWNrRm9yTGV0dGVyU2VsZWN0aW9uKGV2ZW50KSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25CeVRleHQoZXZlbnQpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICcgJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0QnlLZXlib2FyZCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudCwgMCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50LCB0aGlzLl9zZWxlY3RhYmxlT3B0aW9ucygpLmxlbmd0aCAtIDEpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0ZvckxldHRlclNlbGVjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnIHx8XG4gICAgICBldmVudC5rZXkgPT09ICdDbGVhcicgfHxcbiAgICAgIChldmVudC5rZXkubGVuZ3RoID09PSAxICYmXG4gICAgICAgIGV2ZW50LmtleSAhPT0gJyAnICYmXG4gICAgICAgICFldmVudC5hbHRLZXkgJiZcbiAgICAgICAgIWV2ZW50LmN0cmxLZXkgJiZcbiAgICAgICAgIWV2ZW50Lm1ldGFLZXkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldE5leHRBY3RpdmVPcHRpb25CeVRleHQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBTZXQgdGltZW91dCBhbmQgdGhlIHN0cmluZyB0byBzZWFyY2guXG4gICAgaWYgKHR5cGVvZiB0aGlzLl9zZWFyY2hUaW1lb3V0ID09PSB0eXBlb2Ygc2V0VGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3NlYXJjaFRpbWVvdXQpO1xuICAgIH1cbiAgICB0aGlzLl9zZWFyY2hUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiAodGhpcy5fc2VhcmNoU3RyaW5nID0gJycpLCAxMDAwKTtcbiAgICB0aGlzLl9zZWFyY2hTdHJpbmcgKz0gZXZlbnQua2V5O1xuXG4gICAgLy8gUmVvcmRlciB0aGUgX2ZpbHRlcmVkT3B0aW9uIGFycmF5IHRvIGhhdmUgdGhlIGxhc3Qgc2VsZWN0ZWQgZWxlbWVudCBhdCB0aGUgYm90dG9tLlxuICAgIGNvbnN0IGluZGV4Rm9yU2xpY2U6IG51bWJlciA9IHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCArIDE7XG4gICAgY29uc3Qgc2VsZWN0YWJsZU9wdGlvbnMgPSB0aGlzLl9zZWxlY3RhYmxlT3B0aW9ucygpO1xuICAgIGNvbnN0IGZpbHRlcmVkT3B0aW9uc1NvcnRlZCA9IFtcbiAgICAgIC4uLnNlbGVjdGFibGVPcHRpb25zLnNsaWNlKGluZGV4Rm9yU2xpY2UpLFxuICAgICAgLi4uc2VsZWN0YWJsZU9wdGlvbnMuc2xpY2UoMCwgaW5kZXhGb3JTbGljZSksXG4gICAgXTtcblxuICAgIGNvbnN0IG1hdGNoID0gZmlsdGVyZWRPcHRpb25zU29ydGVkLmZpbmQoXG4gICAgICAob3B0aW9uKSA9PiBvcHRpb24udGV4dENvbnRlbnQ/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLl9zZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKSkgPT09IDAsXG4gICAgKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIC8vIElmIGFuIGV4YWN0IG1hdGNoIGhhcyBiZWVuIGZvdW5kLCBnbyB0byB0aGF0IG9wdGlvbi5cbiAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb24oZXZlbnQsIHNlbGVjdGFibGVPcHRpb25zLmluZGV4T2YobWF0Y2gpKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5fc2VhcmNoU3RyaW5nLmxlbmd0aCA+IDEgJiZcbiAgICAgIG5ldyBSZWdFeHAoYF4ke3RoaXMuX3NlYXJjaFN0cmluZy5jaGFyQXQoMCl9KiRgKS50ZXN0KHRoaXMuX3NlYXJjaFN0cmluZylcbiAgICApIHtcbiAgICAgIC8vIElmIG5vIGV4YWN0IG1hdGNoIGhhcyBiZWVuIGZvdW5kIGJ1dCB0aGUgc3RyaW5nIHRvIHNlYXJjaCBpcyBtYWRlIGJ5IHRoZSBzYW1lIHJlcGVhdGVkIGxldHRlcixcbiAgICAgIC8vIGdvIHRvIHRoZSBmaXJzdCBlbGVtZW50LCBpZiBleGlzdHMsIHRoYXQgbWF0Y2hlcyB0aGUgbGV0dGVyLlxuICAgICAgY29uc3QgZmlyc3RNYXRjaCA9IGZpbHRlcmVkT3B0aW9uc1NvcnRlZC5maW5kKFxuICAgICAgICAob3B0aW9uKSA9PlxuICAgICAgICAgIG9wdGlvbi50ZXh0Q29udGVudD8udG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuX3NlYXJjaFN0cmluZ1swXS50b0xvd2VyQ2FzZSgpKSA9PT0gMCxcbiAgICAgICk7XG4gICAgICBpZiAoZmlyc3RNYXRjaCkge1xuICAgICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50LCBzZWxlY3RhYmxlT3B0aW9ucy5pbmRleE9mKGZpcnN0TWF0Y2gpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gbWF0Y2ggZm91bmQsIGNsZWFyIHRoZSB0aW1lb3V0IGFuZCB0aGUgc2VhcmNoIHRlcm0uXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fc2VhcmNoVGltZW91dCk7XG4gICAgICB0aGlzLl9zZWFyY2hTdHJpbmcgPSAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RCeUtleWJvYXJkKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZU9wdGlvbiA9IHRoaXMuX3NlbGVjdGFibGVPcHRpb25zKClbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICBhY3RpdmVPcHRpb24/Llsnc2VsZWN0VmlhVXNlckludGVyYWN0aW9uJ10oIWFjdGl2ZU9wdGlvbi5zZWxlY3RlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuX3NlbGVjdGFibGVPcHRpb25zKCk7XG5cbiAgICAvLyBQcmV2ZW50IGtleWJvYXJkIG5hdmlnYXRpb24gaWYgYWxsIG9wdGlvbnMgYXJlIGRpc2FibGVkXG4gICAgaWYgKGZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0SW5kZXggPVxuICAgICAgaW5kZXggPz8gZ2V0TmV4dEVsZW1lbnRJbmRleChldmVudCwgdGhpcy5fYWN0aXZlSXRlbUluZGV4LCBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoKTtcbiAgICBjb25zdCBuZXh0T3B0aW9uID0gZmlsdGVyZWRPcHRpb25zW25leHRJbmRleF07XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uID0gZmlsdGVyZWRPcHRpb25zW3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF07XG5cbiAgICB0aGlzLl9zZXRBY3RpdmVFbGVtZW50KG5leHRPcHRpb24sIGFjdGl2ZU9wdGlvbik7XG5cbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuX3NldFNlbGVjdGVkRWxlbWVudChuZXh0T3B0aW9uLCBhY3RpdmVPcHRpb24pO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQ/LnNoaWZ0S2V5KSB7XG4gICAgICBuZXh0T3B0aW9uWydzZWxlY3RWaWFVc2VySW50ZXJhY3Rpb24nXSghbmV4dE9wdGlvbi5zZWxlY3RlZCk7XG4gICAgfVxuICAgIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA9IG5leHRJbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgX3NldEFjdGl2ZUVsZW1lbnQoXG4gICAgbmV4dEFjdGl2ZU9wdGlvbjogU2JiT3B0aW9uRWxlbWVudDxUPixcbiAgICBsYXN0QWN0aXZlT3B0aW9uOiBTYmJPcHRpb25FbGVtZW50PFQ+IHwgbnVsbCA9IG51bGwsXG4gICAgc2V0QWN0aXZlRGVzY2VuZGFudCA9IHRydWUsXG4gICk6IHZvaWQge1xuICAgIG5leHRBY3RpdmVPcHRpb24uc2V0QWN0aXZlKHRydWUpO1xuICAgIG5leHRBY3RpdmVPcHRpb24uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pO1xuXG4gICAgaWYgKHNldEFjdGl2ZURlc2NlbmRhbnQpIHtcbiAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgbmV4dEFjdGl2ZU9wdGlvbi5pZCk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgdGhlIHByZXZpb3VzXG4gICAgaWYgKGxhc3RBY3RpdmVPcHRpb24gJiYgbGFzdEFjdGl2ZU9wdGlvbiAhPT0gbmV4dEFjdGl2ZU9wdGlvbikge1xuICAgICAgbGFzdEFjdGl2ZU9wdGlvbi5zZXRBY3RpdmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldFNlbGVjdGVkRWxlbWVudChcbiAgICBuZXh0QWN0aXZlT3B0aW9uOiBTYmJPcHRpb25FbGVtZW50PFQ+LFxuICAgIGxhc3RBY3RpdmVPcHRpb246IFNiYk9wdGlvbkVsZW1lbnQ8VD4sXG4gICk6IHZvaWQge1xuICAgIG5leHRBY3RpdmVPcHRpb25bJ3NlbGVjdFZpYVVzZXJJbnRlcmFjdGlvbiddKHRydWUpO1xuXG4gICAgaWYgKGxhc3RBY3RpdmVPcHRpb24gJiYgbGFzdEFjdGl2ZU9wdGlvbiAhPT0gbmV4dEFjdGl2ZU9wdGlvbikge1xuICAgICAgbGFzdEFjdGl2ZU9wdGlvblsnc2VsZWN0VmlhVXNlckludGVyYWN0aW9uJ10oZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0QWN0aXZlRWxlbWVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5fc2VsZWN0YWJsZU9wdGlvbnMoKVt0aGlzLl9hY3RpdmVJdGVtSW5kZXhdO1xuXG4gICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGFjdGl2ZUVsZW1lbnQuc2V0QWN0aXZlKGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlSXRlbUluZGV4ID0gLTE7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBwb2ludGVyZG93biBldmVudCB0YXJnZXQgaXMgdHJpZ2dlcmVkIG9uIHRoZSBtZW51LlxuICBwcml2YXRlIF9wb2ludGVyRG93bkxpc3RlbmVyID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICB0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgPSBpc0V2ZW50T25FbGVtZW50KHRoaXMuX292ZXJsYXksIGV2ZW50KTtcbiAgfTtcblxuICAvLyBDbG9zZSBtZW51IG9uIGJhY2tkcm9wIGNsaWNrLlxuICBwcml2YXRlIF9jbG9zZU9uQmFja2Ryb3BDbGljayA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgJiYgIWlzRXZlbnRPbkVsZW1lbnQodGhpcy5fb3ZlcmxheSwgZXZlbnQpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX3VwZGF0ZU9wdGlvbnNGcm9tVmFsdWUoKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZSA6IFt0aGlzLnZhbHVlXTtcblxuICAgIGNvbnN0IGRpc3BsYXlWYWx1ZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHZhbHVlLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSk7XG4gICAgICBpZiAob3B0aW9uLnNlbGVjdGVkKSB7XG4gICAgICAgIGRpc3BsYXlWYWx1ZXMucHVzaChvcHRpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZURpc3BsYXlWYWx1ZSgpO1xuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLl9hY3RpdmVJdGVtSW5kZXggPSB0aGlzLl9zZWxlY3RhYmxlT3B0aW9ucygpLmZpbmRJbmRleChcbiAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSB0aGlzLnZhbHVlLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVWYWx1ZUZyb21PcHRpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5fZ2V0U2VsZWN0ZWQoKTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdGVkKSkge1xuICAgICAgaWYgKHNlbGVjdGVkICYmIHNlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdmFsdWU6IFRbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBzZWxlY3RlZCkge1xuICAgICAgICAgIHZhbHVlLnB1c2gob3B0aW9uLnZhbHVlISk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9hY3RpdmVJdGVtSW5kZXggPSB0aGlzLl9zZWxlY3RhYmxlT3B0aW9ucygpLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24gPT09IHNlbGVjdGVkKTtcbiAgICAgIHRoaXMuX3ZhbHVlID0gc2VsZWN0ZWQudmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlRGlzcGxheVZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVWYWx1ZU9wdGlvblN0YXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc1ZhbHVlTWFudWFsbHlBc3NpZ25lZCkge1xuICAgICAgdGhpcy5fdXBkYXRlT3B0aW9uc0Zyb21WYWx1ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl91cGRhdGVWYWx1ZUZyb21PcHRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0U2VsZWN0ZWQoKTogU2JiT3B0aW9uRWxlbWVudDxUPiB8IFNiYk9wdGlvbkVsZW1lbnQ8VD5bXSB8IG51bGwge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnNlbGVjdGVkKSA/PyBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3RvZ2dsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5mb3JtRGlzYWJsZWQgfHwgdGhpcy5yZWFkT25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uZm9jdXMoKTtcblxuICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgY2FzZSAnb3BlbmVkJzoge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnY2xvc2VkJzoge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zcHJlYWREZWZlcnJlZERpc3BsYXlWYWx1ZShcbiAgICBwbGFjZWhvbGRlcjogVGVtcGxhdGVSZXN1bHQsXG4gICk6IChUZW1wbGF0ZVJlc3VsdCB8IFByb21pc2U8VGVtcGxhdGVSZXN1bHQ+KVtdIHtcbiAgICByZXR1cm4gW3RoaXMuX2RlZmVycmVkRGlzcGxheVZhbHVlKHBsYWNlaG9sZGVyKSwgcGxhY2Vob2xkZXJdO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZGVmZXJyZWREaXNwbGF5VmFsdWUocGxhY2Vob2xkZXI6IFRlbXBsYXRlUmVzdWx0KTogUHJvbWlzZTxUZW1wbGF0ZVJlc3VsdD4ge1xuICAgIGlmICh0aGlzLmh5ZHJhdGlvblJlcXVpcmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheVZhbHVlID8gaHRtbGAke3RoaXMuX2Rpc3BsYXlWYWx1ZX1gIDogcGxhY2Vob2xkZXI7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDwhLS0gVGhpcyBlbGVtZW50IGlzIHZpc3VhbGx5IGhpZGRlbiBhbmQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgbGlnaHQgRE9NIHRvIGFsbG93IHNjcmVlblxuICAgICAgcmVhZGVycyB0byB3b3JrIHByb3Blcmx5IC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHkgc2JiLXNlbGVjdC10cmlnZ2VyXCJcbiAgICAgICAgdGFiaW5kZXg9JHt0aGlzLmRpc2FibGVkIHx8IHRoaXMuZm9ybURpc2FibGVkID8gbm90aGluZyA6ICcwJ31cbiAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICBhcmlhLXJlcXVpcmVkPSR7dGhpcy5yZXF1aXJlZC50b1N0cmluZygpfVxuICAgICAgICBhcmlhLWNvbnRyb2xzPSR7dGhpcy5fb3ZlcmxheUlkfVxuICAgICAgICBhcmlhLW93bnM9JHt0aGlzLl9vdmVybGF5SWR9XG4gICAgICAgIEBrZXlkb3duPSR7dGhpcy5fb25LZXlEb3dufVxuICAgICAgICBAY2xpY2s9JHt0aGlzLl90b2dnbGVPcGVuaW5nfVxuICAgICAgICAke3JlZigocmVmKSA9PiAodGhpcy5fdHJpZ2dlckVsZW1lbnQgPSByZWYgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgID5cbiAgICAgICAgJHt1bnRpbCguLi50aGlzLl9zcHJlYWREZWZlcnJlZERpc3BsYXlWYWx1ZShodG1sYDxzcGFuPiR7dGhpcy5wbGFjZWhvbGRlcn08L3NwYW4+YCkpfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gVmlzdWFsbHkgZGlzcGxheSB0aGUgdmFsdWUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXNlbGVjdF9fdHJpZ2dlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAke3VudGlsKFxuICAgICAgICAgIC4uLnRoaXMuX3NwcmVhZERlZmVycmVkRGlzcGxheVZhbHVlKFxuICAgICAgICAgICAgaHRtbGA8c3BhbiBjbGFzcz1cInNiYi1zZWxlY3RfX3RyaWdnZXItLXBsYWNlaG9sZGVyXCI+JHt0aGlzLnBsYWNlaG9sZGVyfTwvc3Bhbj5gLFxuICAgICAgICAgICksXG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zZWxlY3RfX2dhcC1maXhcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2VsZWN0X19jb250YWluZXJcIiBwb3BvdmVyPVwibWFudWFsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2VsZWN0X19nYXAtZml4XCI+JHtvdmVybGF5R2FwRml4Q29ybmVycygpfTwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgQGFuaW1hdGlvbmVuZD0ke3RoaXMuX29uQW5pbWF0aW9uRW5kfVxuICAgICAgICAgIGNsYXNzPVwic2JiLXNlbGVjdF9fcGFuZWxcIlxuICAgICAgICAgICR7cmVmKChkaWFsb2dSZWYpID0+ICh0aGlzLl9vdmVybGF5ID0gZGlhbG9nUmVmIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXNlbGVjdF9fd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBpZD0keyFhcmlhUm9sZU9uSG9zdCA/IHRoaXMuX292ZXJsYXlJZCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLXNlbGVjdF9fb3B0aW9uc1wiXG4gICAgICAgICAgICAgIHJvbGU9JHshYXJpYVJvbGVPbkhvc3QgPyAnbGlzdGJveCcgOiBub3RoaW5nfVxuICAgICAgICAgICAgICA/YXJpYS1tdWx0aXNlbGVjdGFibGU9JHt0aGlzLm11bHRpcGxlfVxuICAgICAgICAgICAgICAke3JlZigoY29udGFpbmVyUmVmKSA9PiAodGhpcy5fb3B0aW9uQ29udGFpbmVyID0gY29udGFpbmVyUmVmIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fdXBkYXRlVmFsdWVPcHRpb25TdGF0ZX0+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlbGVjdCc6IFNiYlNlbGVjdEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJzdGF0ZSIsInJlZiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
1084
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyBSZXNpemVDb250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9yZXNpemUtY29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eURlY2xhcmF0aW9uLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgaXNTZXJ2ZXIsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcbmltcG9ydCB7IHVudGlsIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvdW50aWwuanMnO1xuXG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4IH0gZnJvbSAnLi4vY29yZS9hMTF5LnRzJztcbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7XG4gIFNiYlByb3BlcnR5V2F0Y2hlckNvbnRyb2xsZXIsXG4gIFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLFxuICBTYmJMYW5ndWFnZUNvbnRyb2xsZXIsXG59IGZyb20gJy4uL2NvcmUvY29udHJvbGxlcnMudHMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlLCBnZXRPdmVycmlkZSwgaGFuZGxlRGlzdGluY3RDaGFuZ2UgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHtcbiAgaXNMZWFuLFxuICBpc05leHRqcyxcbiAgaXNTYWZhcmksXG4gIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uLFxuICBzZXRPclJlbW92ZUF0dHJpYnV0ZSxcbn0gZnJvbSAnLi4vY29yZS9kb20udHMnO1xuaW1wb3J0IHsgaTE4blNlbGVjdGlvblJlcXVpcmVkIH0gZnJvbSAnLi4vY29yZS9pMThuLnRzJztcbmltcG9ydCB7XG4gIHR5cGUgRm9ybVJlc3RvcmVSZWFzb24sXG4gIHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSxcbiAgU2JiRGlzYWJsZWRNaXhpbixcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbiAgU2JiSHlkcmF0aW9uTWl4aW4sXG4gIFNiYk5lZ2F0aXZlTWl4aW4sXG4gIFNiYlJlYWRvbmx5TWl4aW4sXG4gIFNiYlJlcXVpcmVkTWl4aW4sXG4gIFNiYlVwZGF0ZVNjaGVkdWxlck1peGluLFxufSBmcm9tICcuLi9jb3JlL21peGlucy50cyc7XG5pbXBvcnQgeyBpc0V2ZW50T25FbGVtZW50LCBvdmVybGF5R2FwRml4Q29ybmVycywgc2V0T3ZlcmxheVBvc2l0aW9uIH0gZnJvbSAnLi4vY29yZS9vdmVybGF5LnRzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJy4uL2NvcmUvc3R5bGVzLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRGl2aWRlckVsZW1lbnQgfSBmcm9tICcuLi9kaXZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRm9ybUZpZWxkRWxlbWVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wdGlvbkVsZW1lbnQsIFNiYk9wdGlvbkhpbnRFbGVtZW50IH0gZnJvbSAnLi4vb3B0aW9uLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vc2VsZWN0LnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogT24gU2FmYXJpLCB0aGUgYXJpYSByb2xlICdsaXN0Ym94JyBtdXN0IGJlIG9uIHRoZSBob3N0IGVsZW1lbnQsIG9yIGVsc2UgVm9pY2VPdmVyIHdvbid0IHdvcmsgYXQgYWxsLlxuICogT24gdGhlIG90aGVyIGhhbmQsIEpBV1MgYW5kIE5WREEgbmVlZCB0aGUgcm9sZSB0byBiZSBhbiBcImltbWVkaWF0ZSBwYXJlbnRcIiB0byB0aGUgb3B0aW9ucywgb3IgZWxzZSBvcHRncm91cHMgd29uJ3Qgd29yay5cbiAqL1xuY29uc3QgYXJpYVJvbGVPbkhvc3QgPSBpc1NhZmFyaTtcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYSBwYW5lbCB3aXRoIHNlbGVjdGFibGUgb3B0aW9ucy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBvcHRpb25zLlxuICogQGNzc3Byb3AgWy0tc2JiLXNlbGVjdC16LWluZGV4PXZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCldIC0gVG8gc3BlY2lmeSBhIGN1c3RvbSBzdGFjayBvcmRlcixcbiAqIHRoZSBgei1pbmRleGAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgdGhpcyBDU1MgdmFyaWFibGUuIFRoZSBkZWZhdWx0IGB6LWluZGV4YCBvZiB0aGVcbiAqIGNvbXBvbmVudCBpcyBzZXQgdG8gYHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleClgIHdpdGggYSB2YWx1ZSBvZiBgMTAwMGAuXG4gKiBAb3ZlcnJpZGVUeXBlIHZhbHVlIC0gKFQgPSBzdHJpbmcgfCBzdHJpbmdbXSkgfCBudWxsXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1zZWxlY3QnKVxuY2xhc3MgU2JiU2VsZWN0RWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYlVwZGF0ZVNjaGVkdWxlck1peGluKFxuICBTYmJEaXNhYmxlZE1peGluKFxuICAgIFNiYk5lZ2F0aXZlTWl4aW4oXG4gICAgICBTYmJIeWRyYXRpb25NaXhpbihcbiAgICAgICAgU2JiUmVxdWlyZWRNaXhpbihcbiAgICAgICAgICBTYmJSZWFkb25seU1peGluKFxuICAgICAgICAgICAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbjx0eXBlb2YgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQ+KFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICApLFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgcm9sZSA9IGFyaWFSb2xlT25Ib3N0ID8gJ2xpc3Rib3gnIDogbnVsbDtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgc3R5bGVdO1xuXG4gIC8vIFRPRE86IGZpeCB1c2luZyAuLi5zdXBlci5ldmVudHMgcmVxdWlyZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9zYmItZGVzaWduLXN5c3RlbXMvbHluZS1jb21wb25lbnRzL2lzc3Vlcy8yNjAwXG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGNoYW5nZTogJ2NoYW5nZScsXG4gICAgaW5wdXQ6ICdpbnB1dCcsXG4gICAgZGlzcGxheXZhbHVlY2hhbmdlOiAnZGlzcGxheXZhbHVlY2hhbmdlJyxcbiAgICBiZWZvcmVvcGVuOiAnYmVmb3Jlb3BlbicsXG4gICAgb3BlbjogJ29wZW4nLFxuICAgIGJlZm9yZWNsb3NlOiAnYmVmb3JlY2xvc2UnLFxuICAgIGNsb3NlOiAnY2xvc2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBUaGUgcGxhY2Vob2xkZXIgdXNlZCBpZiBubyB2YWx1ZSBoYXMgYmVlbiBzZWxlY3RlZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBhY2Nlc3NvciBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdCBhbGxvd3MgZm9yIG11bHRpcGxlIHNlbGVjdGlvbi4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBoYW5kbGVEaXN0aW5jdENoYW5nZSgoZTogU2JiU2VsZWN0RWxlbWVudDxUPiwgbmV3VmFsdWU6IGJvb2xlYW4pID0+XG4gICAgZS5fb25NdWx0aXBsZUNoYW5nZWQobmV3VmFsdWUpLFxuICApXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQGZvcmNlVHlwZSgpXG4gIEBoYW5kbGVEaXN0aW5jdENoYW5nZSgoZTogU2JiU2VsZWN0RWxlbWVudDxUPiwgbmV3VmFsdWU6IGJvb2xlYW4pID0+XG4gICAgZS5fY2xvc2VPbkRpc2FibGVkUmVhZG9ubHlDaGFuZ2VkKG5ld1ZhbHVlKSxcbiAgKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIEBnZXRPdmVycmlkZSgoZTogU2JiU2VsZWN0RWxlbWVudDxUPiwgdjogYm9vbGVhbik6IGJvb2xlYW4gPT4gdiB8fCBlLmlzRGlzYWJsZWRFeHRlcm5hbGx5KCkpXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBWYWx1ZSBvZiB0aGUgZm9ybSBlbGVtZW50LiAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBUW10gfCBUKSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLl91cGRhdGVPcHRpb25zRnJvbVZhbHVlKCk7XG4gICAgdGhpcy5faXNWYWx1ZU1hbnVhbGx5QXNzaWduZWQgPSB0cnVlO1xuICB9XG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogVFtdIHwgVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBwcml2YXRlIF92YWx1ZTogVCB8IFRbXSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBtIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdtJyB8ICdzJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKlxuICAgKiBGb3JtIHR5cGUgb2YgZWxlbWVudC5cbiAgICogQGRlZmF1bHQgJ3NlbGVjdC1vbmUgLyBzZWxlY3QtbXVsdGlwbGUnXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tdWx0aXBsZSA/ICdzZWxlY3QtbXVsdGlwbGUnIDogJ3NlbGVjdC1vbmUnO1xuICB9XG5cbiAgLyoqIFRoZSB2YWx1ZSBkaXNwbGF5ZWQgYnkgdGhlIGNvbXBvbmVudC4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfZGlzcGxheVZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9vcmlnaW5SZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVDb250cm9sbGVyKHRoaXMsIHtcbiAgICB0YXJnZXQ6IG51bGwsXG4gICAgc2tpcEluaXRpYWw6IHRydWUsXG4gICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICBwcml2YXRlIF9vdmVybGF5ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX29wdGlvbkNvbnRhaW5lciE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vcmlnaW5FbGVtZW50ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9vdmVybGF5SWQgPSBgc2JiLXNlbGVjdC0keysrbmV4dElkfWA7XG4gIHByaXZhdGUgX2FjdGl2ZUl0ZW1JbmRleCA9IC0xO1xuICBwcml2YXRlIF9zZWFyY2hUaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX3NlYXJjaFN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9kaWRMb2FkID0gZmFsc2U7XG4gIHByaXZhdGUgX2lzUG9pbnRlckRvd25FdmVudE9uTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9sYW5ndWFnZUNvbnRyb2xsZXIgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9pc1ZhbHVlTWFudWFsbHlBc3NpZ25lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgJ2NvbWJvYm94JyBpbnB1dCBlbGVtZW50XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGdldCBpbnB1dEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyRWxlbWVudDtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGFsbCBTYmJPcHRpb25FbGVtZW50cyBmcm9tIHRoaXMgc2JiLXNlbGVjdCBpbnN0YW5jZS4gKi9cbiAgcHVibGljIGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkVsZW1lbnQ8VD5bXSB7XG4gICAgY29uc3Qgb3B0aW9uczogU2JiT3B0aW9uRWxlbWVudDxUPltdID0gW107XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiT3B0aW9uRWxlbWVudDxUPj4oJ3NiYi1vcHRpb24nKS5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgIGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGUob3B0aW9uKTtcbiAgICAgIG9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgIH0pO1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ29wdGlvbnNlbGVjdGlvbmNoYW5nZScsIChlOiBFdmVudCkgPT4gdGhpcy5fb25PcHRpb25DaGFuZ2VkKGUpKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Lignb3B0aW9uTGFiZWxDaGFuZ2VkJywgKGU6IEV2ZW50KSA9PiB0aGlzLl9vbk9wdGlvbkxhYmVsQ2hhbmdlZChlKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ8m1b3B0Z3JvdXBzbG90Y2hhbmdlJywgKCkgPT4gdGhpcy5fdXBkYXRlVmFsdWVPcHRpb25TdGF0ZSgpLCB7XG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdjbGljaycsIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBTYmJTZWxlY3RFbGVtZW50PFQ+IHwgU2JiT3B0aW9uRWxlbWVudDxUPjtcbiAgICAgIGlmICh0YXJnZXQubG9jYWxOYW1lID09PSAnc2JiLW9wdGlvbicpIHtcbiAgICAgICAgLy8gT3B0aW9uIGNsaWNrXG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSAmJiAhdGFyZ2V0LmRpc2FibGVkKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdG9nZ2xlT3BlbmluZygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb250cm9sbGVyKFxuICAgICAgbmV3IE11dGF0aW9uQ29udHJvbGxlcih0aGlzLCB7XG4gICAgICAgIGNvbmZpZzogeyBhdHRyaWJ1dGVGaWx0ZXI6IFsnYXJpYS1sYWJlbGxlZGJ5JywgJ2FyaWEtbGFiZWwnLCAnYXJpYS1kZXNjcmliZWRieSddIH0sXG4gICAgICAgIGNhbGxiYWNrOiAoKSA9PiB0aGlzLl9zeW5jQXJpYUxhYmVscygpLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyKHRoaXMsICgpID0+IHRoaXMuY2xvc2VzdCgnc2JiLWZvcm0tZmllbGQnKSwge1xuICAgICAgICBuZWdhdGl2ZTogKGUpID0+IHtcbiAgICAgICAgICB0aGlzLm5lZ2F0aXZlID0gZS5uZWdhdGl2ZTtcbiAgICAgICAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jQXJpYUxhYmVscygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RyaWdnZXJFbGVtZW50IHx8IGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUoXG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCxcbiAgICAgICdhcmlhLWxhYmVsbGVkYnknLFxuICAgICAgdGhpcy5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScpLFxuICAgICk7XG4gICAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUodGhpcy5fdHJpZ2dlckVsZW1lbnQsICdhcmlhLWxhYmVsJywgdGhpcy5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKSk7XG4gICAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUoXG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCxcbiAgICAgICdhcmlhLWRlc2NyaWJlZGJ5JyxcbiAgICAgIHRoaXMuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JyksXG4gICAgKTtcblxuICAgIC8vIFVzaW5nIHRoZSBhc3NvY2lhdGVkIGxhYmVscyBpcyBvbmx5IGEgZmFsbGJhY2suXG4gICAgLy8gVGhlIGRyYXdiYWNrIGlzLCB0aGF0IGl0IGRvZXNuJ3QgZ2V0IHVwZGF0ZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBsaXN0IG9mIGxhYmVsIGNoYW5nZXMuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgJiZcbiAgICAgICF0aGlzLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JykgJiZcbiAgICAgIHRoaXMuaW50ZXJuYWxzLmxhYmVscy5sZW5ndGhcbiAgICApIHtcbiAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICdhcmlhLWxhYmVsJyxcbiAgICAgICAgQXJyYXkuZnJvbSh0aGlzLmludGVybmFscy5sYWJlbHMpXG4gICAgICAgICAgLm1hcCgobGFiZWwpID0+IGxhYmVsLnRleHRDb250ZW50KVxuICAgICAgICAgIC5qb2luKCcsICcpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKiogT3BlbnMgdGhlIHNlbGVjdGlvbiBwYW5lbC4gKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgfHxcbiAgICAgICF0aGlzLl9vdmVybGF5IHx8XG4gICAgICB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwIHx8XG4gICAgICB0aGlzLmRpc2FibGVkIHx8XG4gICAgICB0aGlzLmZvcm1EaXNhYmxlZCB8fFxuICAgICAgIXRoaXMuZGlzcGF0Y2hCZWZvcmVPcGVuRXZlbnQoKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oJy5zYmItc2VsZWN0X19jb250YWluZXInKT8uc2hvd1BvcG92ZXI/LigpO1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZCgnZXhwYW5kZWQnKTtcbiAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKTtcblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBvcGVuZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlcyB0aGUgc2VsZWN0aW9uIHBhbmVsLiAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnIHx8ICF0aGlzLmRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKCdleHBhbmRlZCcpO1xuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICBpZiAodGhpcy5fb3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luUmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMuX29yaWdpbkVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBjbG9zZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKHRoaXMsICctLXNiYi1vcHRpb25zLXBhbmVsLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGN1cnJlbnQgZGlzcGxheWVkIHZhbHVlLiAqL1xuICBwdWJsaWMgZ2V0RGlzcGxheVZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlWYWx1ZSA/PyAnJztcbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdGFibGVPcHRpb25zKCk6IFNiYk9wdGlvbkVsZW1lbnQ8VD5bXSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maWx0ZXIoKG9wdCkgPT4gIW9wdC5tYXRjaGVzKCc6c3RhdGUoZGlzYWJsZWQpJykpO1xuICB9XG5cbiAgLyoqIExpc3RlbnMgdG8gb3B0aW9uIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX29uT3B0aW9uQ2hhbmdlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiT3B0aW9uRWxlbWVudDxUPjtcbiAgICBpZiAodGFyZ2V0LnNlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9vbk9wdGlvblNlbGVjdGVkKHRhcmdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29uT3B0aW9uRGVzZWxlY3RlZCh0YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBMaXN0ZW5zIHRvIG9wdGlvbiBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9vbk9wdGlvbkxhYmVsQ2hhbmdlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiT3B0aW9uRWxlbWVudDxUPjtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuX2dldFNlbGVjdGVkKCk7XG5cbiAgICBpZiAoXG4gICAgICAoIUFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpICYmIHRhcmdldCAhPT0gc2VsZWN0ZWQpIHx8XG4gICAgICAoQXJyYXkuaXNBcnJheShzZWxlY3RlZCkgJiYgIXNlbGVjdGVkLmluY2x1ZGVzKHRhcmdldCkpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlRGlzcGxheVZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVEaXNwbGF5VmFsdWUoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLl9nZXRTZWxlY3RlZCgpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdGVkKSkge1xuICAgICAgdGhpcy5fZGlzcGxheVZhbHVlID0gc2VsZWN0ZWQubWFwKChvKSA9PiBvLnRleHRDb250ZW50Py50cmltKCkpLmpvaW4oJywgJykgfHwgbnVsbDtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSBzZWxlY3RlZD8udGV4dENvbnRlbnQ/LnRyaW0oKSB8fCBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdkaXNwbGF5dmFsdWVjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYHZhbHVlYCBwcm9wZXJ0eSBzaG91bGQgYmUgYWRhcHRlZCB3aGVuIHRoZSBgbXVsdGlwbGVgIHByb3BlcnR5IGNoYW5nZXM6XG4gICAqICAgLSBpZiBpdCBjaGFuZ2VzIHRvIHRydWUsIHRoZSAndmFsdWUnIGlzIHNldCB0byBhbiBhcnJheTtcbiAgICogICAtIGlmIGl0IGNoYW5nZXMgdG8gZmFsc2UsIHRoZSBmaXJzdCBhdmFpbGFibGUgb3B0aW9uIGlzIHNldCBhcyAndmFsdWUnIG90aGVyd2lzZSBpdCdzIHNldCB0byBudWxsLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25NdWx0aXBsZUNoYW5nZWQoaXNDaGFuZ2luZ1RvTXVsdGlwbGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNDaGFuZ2luZ1RvTXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5faXNWYWx1ZU1hbnVhbGx5QXNzaWduZWQgfHwgdGhpcy52YWx1ZSAhPSBudWxsID8gW3RoaXMudmFsdWUgYXMgVF0gOiBbXTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy52YWx1ZS5sZW5ndGggPyB0aGlzLnZhbHVlWzBdIDogbnVsbDtcbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlRGlzcGxheVZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGBkaXNhYmxlZGAgb3IgdGhlIGByZWFkb25seWAgcHJvcGVydGllcyBhcmUgc2V0LCBhbmQgdGhlIHBhbmVsIGlzIG9wZW4sIGNsb3NlIGl0LlxuICAgKi9cbiAgcHJpdmF0ZSBfY2xvc2VPbkRpc2FibGVkUmVhZG9ubHlDaGFuZ2VkKG5ld1ZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNPcGVuICYmIG5ld1ZhbHVlKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMuX3VwZGF0ZVZhbHVlT3B0aW9uU3RhdGUoKTtcblxuICAgIC8vIFdhaXQgZm9yIHNzciBoeWRyYXRpb25cbiAgICBpZiAoIWlzTmV4dGpzKCkpIHtcbiAgICAgIHRoaXMuc3RhcnRVcGRhdGUoKTtcbiAgICAgIHRoaXMuX3NldHVwU2VsZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZm9jdXMoKTogdm9pZCB7XG4gICAgLy8gRm9yd2FyZCBmb2N1cyB0byB0aGUgdHJpZ2dlciBlbGVtZW50LlxuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5mb2N1cygpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYmx1cigpOiB2b2lkIHtcbiAgICAvLyBGb3J3YXJkIGJsdXIgdG8gdGhlIHRyaWdnZXIgZWxlbWVudC5cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uYmx1cigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgZWxlbWVudCdzIGZpcnN0IGF0dHJpYnV0ZSB3aG9zZSBxdWFsaWZpZWQgbmFtZSBpcyBxdWFsaWZpZWROYW1lLlxuICAgKlxuICAgKiBbTUROIFJlZmVyZW5jZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL0VsZW1lbnQvcmVtb3ZlQXR0cmlidXRlKVxuICAgKiBAaW50ZXJuYWwgV2UgbmVlZCB0byBvdmVycmlkZSB0aGlzIGR1ZSB0byBhIGh5ZHJhdGlvbiBpc3N1ZSB3aXRoIE5leHQuanMuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVtb3ZlQXR0cmlidXRlKHF1YWxpZmllZE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIEluIE5leHQuanMgdGhlIGh5ZHJhdGlvbiBuZWVkcyB0byBmaW5pc2ggYmVmb3JlIHdlIGNhbiBtYW5pcHVsYXRlIHRoZSBsaWdodCBET00uXG4gICAgLy8gQGxpdC9yZWFjdCBjYWxscyByZW1vdmVBdHRyaWJ1dGUoJ2RlZmVyLWh5ZHJhdGlvbicpIGluIGEgdXNlTGF5b3V0RWZmZWN0LFxuICAgIC8vIHdoaWNoIGlzIGRvbmUgYWZ0ZXIgaHlkcmF0aW9uIGlzIGZpbmlzaGVkLiBEdWUgdG8gdGhpcyB3ZSBpbnRlcmNlcHQgdGhpcyBjYWxsXG4gICAgLy8gaW4gb3ZlcnJpZGluZyByZW1vdmVBdHRyaWJ1dGUgdG8gZmluaXNoIGluaXRpYWxpemF0aW9uIG9mIHRoZSBzYmItc2VsZWN0LlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9saXQvbGl0L2Jsb2IvbWFpbi9wYWNrYWdlcy9yZWFjdC9zcmMvY3JlYXRlLWNvbXBvbmVudC50cyNMMjkzLUwyOTZcbiAgICAvLyBXZSBhbHNvIG5lZWQgdG8gd2FpdCBmb3IgdXBkYXRlIGNvbXBsZXRlIGluIG9yZGVyIHRvIGJlIHN1cmUgdGhhdCB0aGUgc2hhZG93IERPTSBoYXMgYmVlbiByZW5kZXJlZC5cbiAgICBpZiAoaXNOZXh0anMoKSAmJiBxdWFsaWZpZWROYW1lID09PSAnZGVmZXItaHlkcmF0aW9uJyAmJiAhdGhpcy5fZGlkTG9hZCkge1xuICAgICAgdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpID0+IHRoaXMuX3NldHVwU2VsZWN0KCkpO1xuICAgIH1cbiAgICBzdXBlci5yZW1vdmVBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgIGlmIChhcmlhUm9sZU9uSG9zdCkge1xuICAgICAgdGhpcy5pZCB8fD0gdGhpcy5fb3ZlcmxheUlkO1xuICAgIH1cblxuICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIHRoaXMuX3N5bmNBcmlhTGFiZWxzKCk7XG5cbiAgICBpZiAodGhpcy5fZGlkTG9hZCkge1xuICAgICAgdGhpcy5fc2V0dXBPcmlnaW4oKTtcbiAgICAgIHRoaXMuX3NldHVwVHJpZ2dlcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuICAgIGlmICghbmFtZSAmJiB0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fc3luY0FyaWFMYWJlbHMoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpKSB7XG4gICAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygncmVhZE9ubHknKSkge1xuICAgICAgdGhpcy5fY2xvc2VPbkRpc2FibGVkUmVhZG9ubHlDaGFuZ2VkKHRoaXMucmVhZE9ubHkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMucHJlcGVuZCh0aGlzLl90cmlnZ2VyRWxlbWVudCk7IC8vIFRha2UgYmFjayB0aGUgdHJpZ2dlciBlbGVtZW50IHByZXZpb3VzbHkgbW92ZWQgdG8gdGhlIGxpZ2h0IERPTVxuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlc2V0IHZhbHVlIGlzIHRoZSBhdHRyaWJ1dGUgdmFsdWUgKHRoZSBzZXR1cCB2YWx1ZSksIG51bGwgb3RoZXJ3aXNlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gKHRoaXMuaGFzQXR0cmlidXRlKCd2YWx1ZScpID8gdGhpcy5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykgOiBudWxsKSBhcyBUO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFjayhcbiAgICBzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsXG4gICAgX3JlYXNvbjogRm9ybVJlc3RvcmVSZWFzb24sXG4gICk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHZhbHVlLCBtYW51YWxseUFzc2lnbmVkIH0gPSBKU09OLnBhcnNlKHN0YXRlIGFzIHN0cmluZykgYXMge1xuICAgICAgICB2YWx1ZTogVCB8IFRbXTtcbiAgICAgICAgbWFudWFsbHlBc3NpZ25lZDogYm9vbGVhbjtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuXG4gICAgICBpZiAodmFsdWVzLnNvbWUoKHYpID0+IHYgIT09IG51bGwgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFJlc3RvcmluZyBjb21wbGV4IG9iamVjdHMgaXMgbm90IHN1cHBvcnRlZCBmb3Igc2JiLXNlbGVjdCB3aXRoIHN0YXRlICR7c3RhdGV9YCxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc1ZhbHVlTWFudWFsbHlBc3NpZ25lZCA9IG1hbnVhbGx5QXNzaWduZWQ7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5fdXBkYXRlT3B0aW9uc0Zyb21WYWx1ZSgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gcmVzdG9yZSBzYmItc2VsZWN0IHdpdGggc3RhdGUgJHtzdGF0ZX1gKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZm9ybVN0YXRlKCk6IEZvcm1SZXN0b3JlU3RhdGUge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7IHZhbHVlOiB0aGlzLnZhbHVlLCBtYW51YWxseUFzc2lnbmVkOiB0aGlzLl9pc1ZhbHVlTWFudWFsbHlBc3NpZ25lZCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJEaXZpZGVyRWxlbWVudCB8IFNiYk9wdGlvbkhpbnRFbGVtZW50PihcbiAgICAgICdzYmItZGl2aWRlciwgc2JiLW9wdGlvbi1oaW50JyxcbiAgICApLmZvckVhY2goKGVsKSA9PiAoZWwubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVmFsaWRhdGUobmFtZSkgfHwgbmFtZSA9PT0gJ3ZhbHVlJyB8fCBuYW1lID09PSAncmVxdWlyZWQnO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlKCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXF1aXJlZCAmJlxuICAgICAgKHRoaXMub3B0aW9ucy5ldmVyeSgobykgPT4gby52YWx1ZSAhPT0gdGhpcy52YWx1ZSkgfHxcbiAgICAgICAgKCF0aGlzLl9pc1ZhbHVlTWFudWFsbHlBc3NpZ25lZCAmJiB0aGlzLnZhbHVlID09IG51bGwpKVxuICAgICkge1xuICAgICAgdGhpcy5zZXRWYWxpZGl0eUZsYWcoJ3ZhbHVlTWlzc2luZycsIGkxOG5TZWxlY3Rpb25SZXF1aXJlZFt0aGlzLl9sYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbW92ZVZhbGlkaXR5RmxhZygndmFsdWVNaXNzaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBTZWxlY3QoKTogdm9pZCB7XG4gICAgdGhpcy5fc2V0dXBPcmlnaW4oKTtcbiAgICB0aGlzLl9zZXR1cFRyaWdnZXIoKTtcbiAgICB0aGlzLl9kaWRMb2FkID0gdHJ1ZTtcbiAgICB0aGlzLmNvbXBsZXRlVXBkYXRlKCk7XG4gIH1cblxuICAvKiogU2V0cyB0aGUgb3JpZ2luRWxlbWVudDsgaWYgdGhlIGNvbXBvbmVudCBpcyB1c2VkIGluIGEgc2JiLWZvcm0tZmllbGQgdXNlcyBpdCwgb3RoZXJ3aXNlIHVzZXMgdGhlIHBhcmVudEVsZW1lbnQuICovXG4gIHByaXZhdGUgX3NldHVwT3JpZ2luKCk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1GaWVsZCA9IHRoaXMuY2xvc2VzdD8uPFNiYkZvcm1GaWVsZEVsZW1lbnQ+KCdzYmItZm9ybS1maWVsZCcpO1xuICAgIGlmICh0aGlzLl9vcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aGlzLl9vcmlnaW5SZXNpemVPYnNlcnZlci51bm9ic2VydmUodGhpcy5fb3JpZ2luRWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMuX29yaWdpbkVsZW1lbnQgPVxuICAgICAgZm9ybUZpZWxkPy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy4oJyNvdmVybGF5LWFuY2hvcicpID8/IHRoaXMucGFyZW50RWxlbWVudCE7XG4gICAgaWYgKHRoaXMuX29yaWdpbkVsZW1lbnQpIHtcbiAgICAgIHRoaXMudG9nZ2xlU3RhdGUoJ29wdGlvbi1wYW5lbC1vcmlnaW4tYm9yZGVybGVzcycsIGZvcm1GaWVsZD8uaGFzQXR0cmlidXRlPy4oJ2JvcmRlcmxlc3MnKSk7XG5cbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICB0aGlzLl9vcmlnaW5SZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX29yaWdpbkVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUbyBhc3Nlc3Mgc2NyZWVuLXJlYWRlcnMgcHJvYmxlbXMgY2F1c2VkIGJ5IHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGFyaWEgcGF0dGVybnMgYW5kIHNoYWRvdyBET00sXG4gICAqIHdlIGFyZSBmb3JjZWQgdG8gbW92ZSB0aGUgJ2NvbWJvYm94JyB0cmlnZ2VyIGVsZW1lbnQgdG8gdGhlIGxpZ2h0IERPTVxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0dXBUcmlnZ2VyKCk6IHZvaWQge1xuICAgIC8vIE1vdmUgdGhlIHRyaWdnZXIgYmVmb3JlIHRoZSBzYmItc2VsZWN0XG4gICAgdGhpcy5wYXJlbnRFbGVtZW50IS5pbnNlcnRCZWZvcmU/Lih0aGlzLl90cmlnZ2VyRWxlbWVudCwgdGhpcyk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRPdmVybGF5UG9zaXRpb24oKTogdm9pZCB7XG4gICAgc2V0T3ZlcmxheVBvc2l0aW9uKFxuICAgICAgdGhpcy5fb3ZlcmxheSxcbiAgICAgIHRoaXMuX29yaWdpbkVsZW1lbnQsXG4gICAgICB0aGlzLl9vcHRpb25Db250YWluZXIsXG4gICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJy5zYmItc2VsZWN0X19jb250YWluZXInKSEsXG4gICAgICB0aGlzLFxuICAgICk7XG4gIH1cblxuICAvLyBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnICYmIHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIHRoaXMuX2F0dGFjaE9wZW5QYW5lbEV2ZW50cygpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuY29ubmVjdCgpO1xuICAgIGlmICh0aGlzLl9vcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aGlzLl9vcmlnaW5SZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX29yaWdpbkVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLmRpc3BhdGNoT3BlbkV2ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVDbG9zaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2VkJztcbiAgICB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KCcuc2JiLXNlbGVjdF9fY29udGFpbmVyJyk/LmhpZGVQb3BvdmVyPy4oKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICB0aGlzLl9yZXNldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICB0aGlzLl9vcHRpb25Db250YWluZXIuc2Nyb2xsVG9wID0gMDtcbiAgICB0aGlzLl9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5kaXNwYXRjaENsb3NlRXZlbnQoKTtcbiAgfVxuXG4gIC8qKiBXaGVuIGFuIG9wdGlvbiBpcyBzZWxlY3RlZCwgdXBkYXRlcyB0aGUgZGlzcGxheVZhbHVlOyBpdCBhbHNvIGNsb3NlcyB0aGUgc2VsZWN0IGlmIG5vdCBgbXVsdGlwbGVgLiAqL1xuICBwcml2YXRlIF9vbk9wdGlvblNlbGVjdGVkKG9wdGlvbjogU2JiT3B0aW9uRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgfSBlbHNlIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBbb3B0aW9uLnZhbHVlIV07XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpICYmICF0aGlzLnZhbHVlLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSEpKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IFsuLi50aGlzLnZhbHVlLCBvcHRpb24udmFsdWUhXTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVPcHRpb25zRnJvbVZhbHVlKCk7XG4gICAgdGhpcy5fZGlzcGF0Y2hJbnB1dEV2ZW50cygpO1xuICB9XG5cbiAgLyoqIFdoZW4gYW4gb3B0aW9uIGlzIHVuc2VsZWN0ZWQgaW4gYG11bHRpcGxlYCwgcmVtb3ZlcyBpdCBmcm9tIHZhbHVlIGFuZCB1cGRhdGVzIGRpc3BsYXlWYWx1ZS4gKi9cbiAgcHJpdmF0ZSBfb25PcHRpb25EZXNlbGVjdGVkKG9wdGlvblNlbGVjdGlvbkNoYW5nZTogU2JiT3B0aW9uRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIoKGVsKSA9PiBlbCAhPT0gb3B0aW9uU2VsZWN0aW9uQ2hhbmdlLnZhbHVlKTtcbiAgICAgIHRoaXMuX3VwZGF0ZU9wdGlvbnNGcm9tVmFsdWUoKTtcbiAgICAgIHRoaXMuX2Rpc3BhdGNoSW5wdXRFdmVudHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kaXNwYXRjaElucHV0RXZlbnRzKCk6IHZvaWQge1xuICAgIC8qKiBUaGUgaW5wdXQgZXZlbnQgZmlyZXMgd2hlbiB0aGUgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZCBhcyBhIGRpcmVjdCByZXN1bHQgb2YgYSB1c2VyIGFjdGlvbi4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgZWxlbWVudCdzIHZhbHVlLlxuICAgICAqIFVubGlrZSB0aGUgaW5wdXQgZXZlbnQsIHRoZSBjaGFuZ2UgZXZlbnQgaXMgbm90IG5lY2Vzc2FyaWx5IGZpcmVkXG4gICAgICogZm9yIGVhY2ggYWx0ZXJhdGlvbiB0byBhbiBlbGVtZW50J3MgdmFsdWUuXG4gICAgICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX2F0dGFjaE9wZW5QYW5lbEV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gUmVjYWxjdWxhdGUgdGhlIG92ZXJsYXkgcG9zaXRpb24gb24gc2Nyb2xsIGFuZCB3aW5kb3cgcmVzaXplXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgLy8gV2l0aG91dCBjYXB0dXJlLCBvdGhlciBzY3JvbGwgY29udGV4dHMgd291bGQgbm90IGJ1YmJsZSB0byB0aGlzIGV2ZW50IGxpc3RlbmVyLlxuICAgICAgLy8gQ2FwdHVyZSBhbGxvd3MgdXMgdG8gcmVhY3QgdG8gYWxsIHNjcm9sbCBjb250ZXh0cyBpbiB0aGlzIERPTS5cbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIC8vIENsb3NlIG1lbnUgb24gYmFja2Ryb3AgY2xpY2tcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoZXYpID0+IHRoaXMuX3BvaW50ZXJEb3duTGlzdGVuZXIoZXYpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCAoZXYpID0+IHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrKGV2KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX29uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnKSB7XG4gICAgICB0aGlzLl9vcGVuZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZSA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHRoaXMuX2Nsb3NlZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NoZWNrRm9yTGV0dGVyU2VsZWN0aW9uKGV2ZW50KSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25CeVRleHQoZXZlbnQpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICcgJzpcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlYWRPbmx5IHx8IHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NoZWNrRm9yTGV0dGVyU2VsZWN0aW9uKGV2ZW50KSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25CeVRleHQoZXZlbnQpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICcgJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0QnlLZXlib2FyZCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudCwgMCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50LCB0aGlzLl9zZWxlY3RhYmxlT3B0aW9ucygpLmxlbmd0aCAtIDEpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0ZvckxldHRlclNlbGVjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnIHx8XG4gICAgICBldmVudC5rZXkgPT09ICdDbGVhcicgfHxcbiAgICAgIChldmVudC5rZXkubGVuZ3RoID09PSAxICYmXG4gICAgICAgIGV2ZW50LmtleSAhPT0gJyAnICYmXG4gICAgICAgICFldmVudC5hbHRLZXkgJiZcbiAgICAgICAgIWV2ZW50LmN0cmxLZXkgJiZcbiAgICAgICAgIWV2ZW50Lm1ldGFLZXkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldE5leHRBY3RpdmVPcHRpb25CeVRleHQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBTZXQgdGltZW91dCBhbmQgdGhlIHN0cmluZyB0byBzZWFyY2guXG4gICAgaWYgKHR5cGVvZiB0aGlzLl9zZWFyY2hUaW1lb3V0ID09PSB0eXBlb2Ygc2V0VGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3NlYXJjaFRpbWVvdXQpO1xuICAgIH1cbiAgICB0aGlzLl9zZWFyY2hUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiAodGhpcy5fc2VhcmNoU3RyaW5nID0gJycpLCAxMDAwKTtcbiAgICB0aGlzLl9zZWFyY2hTdHJpbmcgKz0gZXZlbnQua2V5O1xuXG4gICAgLy8gUmVvcmRlciB0aGUgX2ZpbHRlcmVkT3B0aW9uIGFycmF5IHRvIGhhdmUgdGhlIGxhc3Qgc2VsZWN0ZWQgZWxlbWVudCBhdCB0aGUgYm90dG9tLlxuICAgIGNvbnN0IGluZGV4Rm9yU2xpY2U6IG51bWJlciA9IHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCArIDE7XG4gICAgY29uc3Qgc2VsZWN0YWJsZU9wdGlvbnMgPSB0aGlzLl9zZWxlY3RhYmxlT3B0aW9ucygpO1xuICAgIGNvbnN0IGZpbHRlcmVkT3B0aW9uc1NvcnRlZCA9IFtcbiAgICAgIC4uLnNlbGVjdGFibGVPcHRpb25zLnNsaWNlKGluZGV4Rm9yU2xpY2UpLFxuICAgICAgLi4uc2VsZWN0YWJsZU9wdGlvbnMuc2xpY2UoMCwgaW5kZXhGb3JTbGljZSksXG4gICAgXTtcblxuICAgIGNvbnN0IG1hdGNoID0gZmlsdGVyZWRPcHRpb25zU29ydGVkLmZpbmQoXG4gICAgICAob3B0aW9uKSA9PiBvcHRpb24udGV4dENvbnRlbnQ/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLl9zZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKSkgPT09IDAsXG4gICAgKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIC8vIElmIGFuIGV4YWN0IG1hdGNoIGhhcyBiZWVuIGZvdW5kLCBnbyB0byB0aGF0IG9wdGlvbi5cbiAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb24oZXZlbnQsIHNlbGVjdGFibGVPcHRpb25zLmluZGV4T2YobWF0Y2gpKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5fc2VhcmNoU3RyaW5nLmxlbmd0aCA+IDEgJiZcbiAgICAgIG5ldyBSZWdFeHAoYF4ke3RoaXMuX3NlYXJjaFN0cmluZy5jaGFyQXQoMCl9KiRgKS50ZXN0KHRoaXMuX3NlYXJjaFN0cmluZylcbiAgICApIHtcbiAgICAgIC8vIElmIG5vIGV4YWN0IG1hdGNoIGhhcyBiZWVuIGZvdW5kIGJ1dCB0aGUgc3RyaW5nIHRvIHNlYXJjaCBpcyBtYWRlIGJ5IHRoZSBzYW1lIHJlcGVhdGVkIGxldHRlcixcbiAgICAgIC8vIGdvIHRvIHRoZSBmaXJzdCBlbGVtZW50LCBpZiBleGlzdHMsIHRoYXQgbWF0Y2hlcyB0aGUgbGV0dGVyLlxuICAgICAgY29uc3QgZmlyc3RNYXRjaCA9IGZpbHRlcmVkT3B0aW9uc1NvcnRlZC5maW5kKFxuICAgICAgICAob3B0aW9uKSA9PlxuICAgICAgICAgIG9wdGlvbi50ZXh0Q29udGVudD8udG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuX3NlYXJjaFN0cmluZ1swXS50b0xvd2VyQ2FzZSgpKSA9PT0gMCxcbiAgICAgICk7XG4gICAgICBpZiAoZmlyc3RNYXRjaCkge1xuICAgICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50LCBzZWxlY3RhYmxlT3B0aW9ucy5pbmRleE9mKGZpcnN0TWF0Y2gpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gbWF0Y2ggZm91bmQsIGNsZWFyIHRoZSB0aW1lb3V0IGFuZCB0aGUgc2VhcmNoIHRlcm0uXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fc2VhcmNoVGltZW91dCk7XG4gICAgICB0aGlzLl9zZWFyY2hTdHJpbmcgPSAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RCeUtleWJvYXJkKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZU9wdGlvbiA9IHRoaXMuX3NlbGVjdGFibGVPcHRpb25zKClbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICBhY3RpdmVPcHRpb24/Llsnc2VsZWN0VmlhVXNlckludGVyYWN0aW9uJ10oIWFjdGl2ZU9wdGlvbi5zZWxlY3RlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuX3NlbGVjdGFibGVPcHRpb25zKCk7XG5cbiAgICAvLyBQcmV2ZW50IGtleWJvYXJkIG5hdmlnYXRpb24gaWYgYWxsIG9wdGlvbnMgYXJlIGRpc2FibGVkXG4gICAgaWYgKGZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0SW5kZXggPVxuICAgICAgaW5kZXggPz8gZ2V0TmV4dEVsZW1lbnRJbmRleChldmVudCwgdGhpcy5fYWN0aXZlSXRlbUluZGV4LCBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoKTtcbiAgICBjb25zdCBuZXh0T3B0aW9uID0gZmlsdGVyZWRPcHRpb25zW25leHRJbmRleF07XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uID0gZmlsdGVyZWRPcHRpb25zW3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF07XG5cbiAgICB0aGlzLl9zZXRBY3RpdmVFbGVtZW50KG5leHRPcHRpb24sIGFjdGl2ZU9wdGlvbik7XG5cbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuX3NldFNlbGVjdGVkRWxlbWVudChuZXh0T3B0aW9uLCBhY3RpdmVPcHRpb24pO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQ/LnNoaWZ0S2V5KSB7XG4gICAgICBuZXh0T3B0aW9uWydzZWxlY3RWaWFVc2VySW50ZXJhY3Rpb24nXSghbmV4dE9wdGlvbi5zZWxlY3RlZCk7XG4gICAgfVxuICAgIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA9IG5leHRJbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgX3NldEFjdGl2ZUVsZW1lbnQoXG4gICAgbmV4dEFjdGl2ZU9wdGlvbjogU2JiT3B0aW9uRWxlbWVudDxUPixcbiAgICBsYXN0QWN0aXZlT3B0aW9uOiBTYmJPcHRpb25FbGVtZW50PFQ+IHwgbnVsbCA9IG51bGwsXG4gICAgc2V0QWN0aXZlRGVzY2VuZGFudCA9IHRydWUsXG4gICk6IHZvaWQge1xuICAgIG5leHRBY3RpdmVPcHRpb24uc2V0QWN0aXZlKHRydWUpO1xuICAgIG5leHRBY3RpdmVPcHRpb24uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pO1xuXG4gICAgaWYgKHNldEFjdGl2ZURlc2NlbmRhbnQpIHtcbiAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgbmV4dEFjdGl2ZU9wdGlvbi5pZCk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgdGhlIHByZXZpb3VzXG4gICAgaWYgKGxhc3RBY3RpdmVPcHRpb24gJiYgbGFzdEFjdGl2ZU9wdGlvbiAhPT0gbmV4dEFjdGl2ZU9wdGlvbikge1xuICAgICAgbGFzdEFjdGl2ZU9wdGlvbi5zZXRBY3RpdmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldFNlbGVjdGVkRWxlbWVudChcbiAgICBuZXh0QWN0aXZlT3B0aW9uOiBTYmJPcHRpb25FbGVtZW50PFQ+LFxuICAgIGxhc3RBY3RpdmVPcHRpb246IFNiYk9wdGlvbkVsZW1lbnQ8VD4sXG4gICk6IHZvaWQge1xuICAgIG5leHRBY3RpdmVPcHRpb25bJ3NlbGVjdFZpYVVzZXJJbnRlcmFjdGlvbiddKHRydWUpO1xuXG4gICAgaWYgKGxhc3RBY3RpdmVPcHRpb24gJiYgbGFzdEFjdGl2ZU9wdGlvbiAhPT0gbmV4dEFjdGl2ZU9wdGlvbikge1xuICAgICAgbGFzdEFjdGl2ZU9wdGlvblsnc2VsZWN0VmlhVXNlckludGVyYWN0aW9uJ10oZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0QWN0aXZlRWxlbWVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5fc2VsZWN0YWJsZU9wdGlvbnMoKVt0aGlzLl9hY3RpdmVJdGVtSW5kZXhdO1xuXG4gICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGFjdGl2ZUVsZW1lbnQuc2V0QWN0aXZlKGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlSXRlbUluZGV4ID0gLTE7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBwb2ludGVyZG93biBldmVudCB0YXJnZXQgaXMgdHJpZ2dlcmVkIG9uIHRoZSBtZW51LlxuICBwcml2YXRlIF9wb2ludGVyRG93bkxpc3RlbmVyID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICB0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgPSBpc0V2ZW50T25FbGVtZW50KHRoaXMuX292ZXJsYXksIGV2ZW50KTtcbiAgfTtcblxuICAvLyBDbG9zZSBtZW51IG9uIGJhY2tkcm9wIGNsaWNrLlxuICBwcml2YXRlIF9jbG9zZU9uQmFja2Ryb3BDbGljayA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgJiYgIWlzRXZlbnRPbkVsZW1lbnQodGhpcy5fb3ZlcmxheSwgZXZlbnQpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX3VwZGF0ZU9wdGlvbnNGcm9tVmFsdWUoKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZSA6IFt0aGlzLnZhbHVlXTtcblxuICAgIGNvbnN0IGRpc3BsYXlWYWx1ZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHZhbHVlLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSk7XG4gICAgICBpZiAob3B0aW9uLnNlbGVjdGVkKSB7XG4gICAgICAgIGRpc3BsYXlWYWx1ZXMucHVzaChvcHRpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZURpc3BsYXlWYWx1ZSgpO1xuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLl9hY3RpdmVJdGVtSW5kZXggPSB0aGlzLl9zZWxlY3RhYmxlT3B0aW9ucygpLmZpbmRJbmRleChcbiAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSB0aGlzLnZhbHVlLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVWYWx1ZUZyb21PcHRpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5fZ2V0U2VsZWN0ZWQoKTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdGVkKSkge1xuICAgICAgaWYgKHNlbGVjdGVkICYmIHNlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdmFsdWU6IFRbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBzZWxlY3RlZCkge1xuICAgICAgICAgIHZhbHVlLnB1c2gob3B0aW9uLnZhbHVlISk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9hY3RpdmVJdGVtSW5kZXggPSB0aGlzLl9zZWxlY3RhYmxlT3B0aW9ucygpLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24gPT09IHNlbGVjdGVkKTtcbiAgICAgIHRoaXMuX3ZhbHVlID0gc2VsZWN0ZWQudmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlRGlzcGxheVZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVWYWx1ZU9wdGlvblN0YXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc1ZhbHVlTWFudWFsbHlBc3NpZ25lZCkge1xuICAgICAgdGhpcy5fdXBkYXRlT3B0aW9uc0Zyb21WYWx1ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl91cGRhdGVWYWx1ZUZyb21PcHRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0U2VsZWN0ZWQoKTogU2JiT3B0aW9uRWxlbWVudDxUPiB8IFNiYk9wdGlvbkVsZW1lbnQ8VD5bXSB8IG51bGwge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnNlbGVjdGVkKSA/PyBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3RvZ2dsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5mb3JtRGlzYWJsZWQgfHwgdGhpcy5yZWFkT25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uZm9jdXMoKTtcblxuICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgY2FzZSAnb3BlbmVkJzoge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnY2xvc2VkJzoge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zcHJlYWREZWZlcnJlZERpc3BsYXlWYWx1ZShcbiAgICBwbGFjZWhvbGRlcjogVGVtcGxhdGVSZXN1bHQsXG4gICk6IChUZW1wbGF0ZVJlc3VsdCB8IFByb21pc2U8VGVtcGxhdGVSZXN1bHQ+KVtdIHtcbiAgICByZXR1cm4gW3RoaXMuX2RlZmVycmVkRGlzcGxheVZhbHVlKHBsYWNlaG9sZGVyKSwgcGxhY2Vob2xkZXJdO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZGVmZXJyZWREaXNwbGF5VmFsdWUocGxhY2Vob2xkZXI6IFRlbXBsYXRlUmVzdWx0KTogUHJvbWlzZTxUZW1wbGF0ZVJlc3VsdD4ge1xuICAgIGlmICh0aGlzLmh5ZHJhdGlvblJlcXVpcmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheVZhbHVlID8gaHRtbGAke3RoaXMuX2Rpc3BsYXlWYWx1ZX1gIDogcGxhY2Vob2xkZXI7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDwhLS0gVGhpcyBlbGVtZW50IGlzIHZpc3VhbGx5IGhpZGRlbiBhbmQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgbGlnaHQgRE9NIHRvIGFsbG93IHNjcmVlblxuICAgICAgcmVhZGVycyB0byB3b3JrIHByb3Blcmx5IC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHkgc2JiLXNlbGVjdC10cmlnZ2VyXCJcbiAgICAgICAgdGFiaW5kZXg9JHt0aGlzLmRpc2FibGVkIHx8IHRoaXMuZm9ybURpc2FibGVkID8gbm90aGluZyA6ICcwJ31cbiAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICBhcmlhLXJlcXVpcmVkPSR7dGhpcy5yZXF1aXJlZC50b1N0cmluZygpfVxuICAgICAgICBhcmlhLWNvbnRyb2xzPSR7dGhpcy5fb3ZlcmxheUlkfVxuICAgICAgICBhcmlhLW93bnM9JHt0aGlzLl9vdmVybGF5SWR9XG4gICAgICAgIEBrZXlkb3duPSR7dGhpcy5fb25LZXlEb3dufVxuICAgICAgICBAY2xpY2s9JHt0aGlzLl90b2dnbGVPcGVuaW5nfVxuICAgICAgICAke3JlZigocmVmKSA9PiAodGhpcy5fdHJpZ2dlckVsZW1lbnQgPSByZWYgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgID5cbiAgICAgICAgJHt1bnRpbCguLi50aGlzLl9zcHJlYWREZWZlcnJlZERpc3BsYXlWYWx1ZShodG1sYDxzcGFuPiR7dGhpcy5wbGFjZWhvbGRlcn08L3NwYW4+YCkpfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gVmlzdWFsbHkgZGlzcGxheSB0aGUgdmFsdWUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXNlbGVjdF9fdHJpZ2dlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAke3VudGlsKFxuICAgICAgICAgIC4uLnRoaXMuX3NwcmVhZERlZmVycmVkRGlzcGxheVZhbHVlKFxuICAgICAgICAgICAgaHRtbGA8c3BhbiBjbGFzcz1cInNiYi1zZWxlY3RfX3RyaWdnZXItLXBsYWNlaG9sZGVyXCI+JHt0aGlzLnBsYWNlaG9sZGVyfTwvc3Bhbj5gLFxuICAgICAgICAgICksXG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zZWxlY3RfX2dhcC1maXhcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2VsZWN0X19jb250YWluZXJcIiBwb3BvdmVyPVwibWFudWFsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2VsZWN0X19nYXAtZml4XCI+JHtvdmVybGF5R2FwRml4Q29ybmVycygpfTwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgQGFuaW1hdGlvbmVuZD0ke3RoaXMuX29uQW5pbWF0aW9uRW5kfVxuICAgICAgICAgIGNsYXNzPVwic2JiLXNlbGVjdF9fcGFuZWxcIlxuICAgICAgICAgICR7cmVmKChkaWFsb2dSZWYpID0+ICh0aGlzLl9vdmVybGF5ID0gZGlhbG9nUmVmIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXNlbGVjdF9fd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBpZD0keyFhcmlhUm9sZU9uSG9zdCA/IHRoaXMuX292ZXJsYXlJZCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLXNlbGVjdF9fb3B0aW9uc1wiXG4gICAgICAgICAgICAgIHJvbGU9JHshYXJpYVJvbGVPbkhvc3QgPyAnbGlzdGJveCcgOiBub3RoaW5nfVxuICAgICAgICAgICAgICA/YXJpYS1tdWx0aXNlbGVjdGFibGU9JHt0aGlzLm11bHRpcGxlfVxuICAgICAgICAgICAgICAke3JlZigoY29udGFpbmVyUmVmKSA9PiAodGhpcy5fb3B0aW9uQ29udGFpbmVyID0gY29udGFpbmVyUmVmIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fdXBkYXRlVmFsdWVPcHRpb25TdGF0ZX0+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlbGVjdCc6IFNiYlNlbGVjdEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJzdGF0ZSIsInJlZiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErQ0EsTUFBTSxpQkFBaUI7QUFFdkIsSUFBSSxTQUFTO0lBYVAsb0JBQWdCLE1BQUE7OzBCQURyQixjQUFjLFlBQVksQ0FBQzs7OztvQkFDZSx3QkFDekMsaUJBQ0UsaUJBQ0Usa0JBQ0UsaUJBQ0UsaUJBQ0UsdUJBQXVELHVCQUF1QixDQUFDLENBQ2hGLENBQ0YsQ0FDRixDQUNGLENBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVhnQyxFQUFBLG1CQUFRLFlBWTFDO0FBQUEsSUE0R0MsY0FBQTtBQUNFLFlBQUE7QUEzRkY7QUFRQTtBQVFBO0FBa0I2QjtBQVdwQjtBQTdDTyx5QkFBQSxnQ0E5Qlos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
|