@sbb-esta/lyne-elements 3.0.0-next.1 → 3.0.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion.component.js +19 -22
- package/action-group/action-group.component.js +3 -5
- package/alert/alert/alert.component.d.ts +5 -7
- package/alert/alert/alert.component.d.ts.map +1 -1
- package/alert/alert/alert.component.js +69 -84
- package/alert/alert-group/alert-group.component.js +2 -3
- package/autocomplete/autocomplete-base-element.js +83 -95
- package/autocomplete/autocomplete.component.js +28 -33
- package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +42 -50
- package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts +1 -1
- package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +4 -5
- package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +17 -20
- package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts +1 -1
- package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +21 -24
- package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +5 -5
- package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +27 -31
- package/button/mini-button/mini-button.component.js +1 -1
- package/button/mini-button-group/mini-button-group.component.js +1 -2
- package/calendar/calendar.component.d.ts +0 -5
- package/calendar/calendar.component.d.ts.map +1 -1
- package/calendar/calendar.component.js +129 -147
- package/card/card/card.component.js +12 -12
- package/card/card-badge/card-badge.component.js +17 -17
- package/card/common/card-action-common.js +20 -22
- package/checkbox/checkbox/checkbox.component.js +17 -20
- package/checkbox/checkbox-group/checkbox-group.component.js +39 -52
- package/checkbox/checkbox-panel/checkbox-panel.component.js +18 -21
- package/checkbox/common/checkbox-common.js +13 -15
- package/chip/chip-group/chip-group.component.js +66 -80
- package/clock/clock.component.js +50 -60
- package/container/container/container.component.js +28 -29
- package/container/sticky-bar/sticky-bar.component.js +25 -26
- package/core/a11y/focus-trap-controller.js +11 -14
- package/core/a11y/input-modality-detector.js +15 -16
- package/core/a11y/interactivity-checker.js +10 -10
- package/core/a11y/live-announcer.js +12 -14
- package/core/base-elements/button-base-element.js +58 -63
- package/core/base-elements/link-base-element.js +3 -6
- package/core/base-elements/open-close-base-element.js +1 -1
- package/core/config/config.d.ts.map +1 -1
- package/core/controllers/escapable-overlay-controller.js +10 -12
- package/core/controllers/id-reference-controller.js +13 -14
- package/core/controllers/inert-controller.js +8 -10
- package/core/controllers/slot-state-controller.js +16 -26
- package/core/datetime/date-adapter.d.ts +1 -1
- package/core/datetime/date-adapter.d.ts.map +1 -1
- package/core/datetime/date-adapter.js +21 -21
- package/core/datetime/native-date-adapter.d.ts +1 -1
- package/core/datetime/native-date-adapter.d.ts.map +1 -1
- package/core/datetime/native-date-adapter.js +28 -28
- package/core/decorators/force-type.js +4 -5
- package/core/decorators/id-reference.js +34 -37
- package/core/decorators/plain-date.js +16 -19
- package/core/dom/breakpoint.js +8 -8
- package/core/eventing/event-emitter.js +4 -5
- package/core/i18n/i18n.js +41 -41
- package/core/mixins/element-internals-mixin.d.ts +21 -0
- package/core/mixins/element-internals-mixin.d.ts.map +1 -1
- package/core/mixins/element-internals-mixin.js +109 -23
- package/core/mixins/form-associated-checkbox-mixin.js +32 -37
- package/core/mixins/form-associated-input-mixin.d.ts.map +1 -1
- package/core/mixins/form-associated-input-mixin.js +69 -93
- package/core/mixins/form-associated-mixin.js +32 -35
- package/core/mixins/form-associated-radio-button-mixin.js +3 -5
- package/core/mixins/hydration-mixin.js +12 -13
- package/core/mixins/named-slot-list-mixin.js +32 -37
- package/core/mixins/panel-mixin.js +26 -27
- package/core/mixins/readonly-mixin.d.ts.map +1 -1
- package/core/mixins/readonly-mixin.js +10 -11
- package/core/mixins.js +27 -25
- package/core/overlay/position.js +23 -23
- package/core/styles/core/mediaqueries.scss +1 -1
- package/core/styles/core.scss +70 -35
- package/core/styles/mixins/table.scss +1 -24
- package/core/testing/event-spy.js +2 -4
- package/core/testing/wait-for-image-ready.js +8 -9
- package/core/testing/wait-for-render.js +8 -9
- package/core.css +29 -0
- package/custom-elements.json +5233 -2634
- package/date-input/date-input.component.d.ts +16 -1
- package/date-input/date-input.component.d.ts.map +1 -1
- package/date-input/date-input.component.js +71 -58
- package/datepicker/common/datepicker-button.d.ts +31 -20
- package/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/datepicker/common/datepicker-button.js +79 -74
- package/datepicker/common.d.ts +0 -1
- package/datepicker/common.d.ts.map +1 -1
- package/datepicker/common.js +3 -5
- package/datepicker/datepicker/datepicker.component.d.ts +23 -102
- package/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
- package/datepicker/datepicker/datepicker.component.js +91 -233
- package/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts +2 -2
- package/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts.map +1 -1
- package/datepicker/datepicker-next-day/datepicker-next-day.component.js +27 -18
- package/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts +2 -2
- package/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts.map +1 -1
- package/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +27 -18
- package/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts +6 -26
- package/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts.map +1 -1
- package/datepicker/datepicker-toggle/datepicker-toggle.component.js +36 -145
- package/datepicker.js +9 -11
- package/development/accordion/accordion.component.js +4 -7
- package/development/action-group/action-group.component.js +3 -5
- package/development/alert/alert/alert.component.d.ts +5 -7
- package/development/alert/alert/alert.component.d.ts.map +1 -1
- package/development/alert/alert/alert.component.js +34 -52
- package/development/alert/alert-group/alert-group.component.js +2 -3
- package/development/autocomplete/autocomplete-base-element.js +20 -32
- package/development/autocomplete/autocomplete.component.js +7 -12
- package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +10 -18
- package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts +1 -1
- package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +4 -9
- package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +1 -1
- package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +4 -7
- package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts +1 -1
- package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +4 -7
- package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +2 -2
- package/development/breadcrumb/breadcrumb/breadcrumb.component.js +1 -1
- package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +5 -9
- package/development/button/accent-button/accent-button.component.js +1 -1
- package/development/button/accent-button-link/accent-button-link.component.js +1 -1
- package/development/button/accent-button-static/accent-button-static.component.js +1 -1
- package/development/button/button/button.component.js +1 -1
- package/development/button/button-link/button-link.component.js +1 -1
- package/development/button/button-static/button-static.component.js +1 -1
- package/development/button/common/button-common.js +1 -1
- package/development/button/mini-button/mini-button.component.js +1 -1
- package/development/button/mini-button-group/mini-button-group.component.js +2 -3
- package/development/button/secondary-button/secondary-button.component.js +1 -1
- package/development/button/secondary-button-link/secondary-button-link.component.js +1 -1
- package/development/button/secondary-button-static/secondary-button-static.component.js +1 -1
- package/development/button/transparent-button/transparent-button.component.js +1 -1
- package/development/button/transparent-button-link/transparent-button-link.component.js +1 -1
- package/development/button/transparent-button-static/transparent-button-static.component.js +1 -1
- package/development/calendar/calendar.component.d.ts +0 -5
- package/development/calendar/calendar.component.d.ts.map +1 -1
- package/development/calendar/calendar.component.js +20 -44
- package/development/card/card/card.component.js +1 -1
- package/development/card/card-badge/card-badge.component.js +2 -2
- package/development/card/card-button/card-button.component.js +1 -1
- package/development/card/card-link/card-link.component.js +1 -1
- package/development/card/common/card-action-common.js +4 -6
- package/development/checkbox/checkbox/checkbox.component.js +2 -5
- package/development/checkbox/checkbox-group/checkbox-group.component.js +8 -21
- package/development/checkbox/checkbox-panel/checkbox-panel.component.js +2 -5
- package/development/checkbox/common/checkbox-common.js +3 -5
- package/development/chip/chip/chip.component.js +1 -1
- package/development/chip/chip-group/chip-group.component.js +18 -32
- package/development/chip-label/chip-label.component.js +1 -1
- package/development/clock/clock.component.js +23 -33
- package/development/container/container/container.component.js +2 -3
- package/development/container/sticky-bar/sticky-bar.component.js +3 -4
- package/development/core/a11y/arrow-navigation.js +1 -1
- package/development/core/a11y/fake-event-detection.js +1 -1
- package/development/core/a11y/focus-trap-controller.js +6 -9
- package/development/core/a11y/focus-visible-within-controller.js +1 -1
- package/development/core/a11y/input-modality-detector.js +2 -3
- package/development/core/a11y/interactivity-checker.js +2 -2
- package/development/core/a11y/live-announcer.js +6 -8
- package/development/core/base-elements/action-base-element.js +2 -3
- package/development/core/base-elements/button-base-element.js +6 -11
- package/development/core/base-elements/link-base-element.js +4 -7
- package/development/core/base-elements/open-close-base-element.js +2 -2
- package/development/core/config/config.d.ts.map +1 -1
- package/development/core/config/config.js +1 -1
- package/development/core/controllers/escapable-overlay-controller.js +3 -5
- package/development/core/controllers/id-reference-controller.js +2 -3
- package/development/core/controllers/inert-controller.js +4 -6
- package/development/core/controllers/language-controller.js +1 -1
- package/development/core/controllers/media-matchers-controller.js +1 -1
- package/development/core/controllers/slot-state-controller.js +8 -18
- package/development/core/datetime/date-adapter.d.ts +1 -1
- package/development/core/datetime/date-adapter.d.ts.map +1 -1
- package/development/core/datetime/date-adapter.js +5 -5
- package/development/core/datetime/native-date-adapter.d.ts +1 -1
- package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
- package/development/core/datetime/native-date-adapter.js +4 -4
- package/development/core/decorators/force-type.js +3 -4
- package/development/core/decorators/get-override.js +1 -1
- package/development/core/decorators/handle-distinct-change.js +1 -1
- package/development/core/decorators/host-attributes.js +1 -1
- package/development/core/decorators/id-reference.js +4 -7
- package/development/core/decorators/plain-date.js +5 -8
- package/development/core/decorators/slot-state.js +1 -1
- package/development/core/dom/animation.js +1 -1
- package/development/core/dom/breakpoint.js +2 -2
- package/development/core/dom/host-context.js +1 -1
- package/development/core/dom/platform.js +1 -1
- package/development/core/dom/scroll.js +1 -1
- package/development/core/dom/set-or-remove-attribute.js +1 -1
- package/development/core/eventing/composed-path-has-attribute.js +1 -1
- package/development/core/eventing/event-emitter.js +2 -3
- package/development/core/eventing/form-element-handlers.js +1 -1
- package/development/core/eventing/forward-event.js +1 -1
- package/development/core/eventing/throttle.js +1 -1
- package/development/core/i18n/i18n.js +18 -18
- package/development/core/mixins/animation-complete-mixin.js +1 -1
- package/development/core/mixins/disabled-mixin.js +1 -1
- package/development/core/mixins/element-internals-mixin.d.ts +21 -0
- package/development/core/mixins/element-internals-mixin.d.ts.map +1 -1
- package/development/core/mixins/element-internals-mixin.js +123 -2
- package/development/core/mixins/form-associated-checkbox-mixin.js +6 -9
- package/development/core/mixins/form-associated-input-mixin.d.ts.map +1 -1
- package/development/core/mixins/form-associated-input-mixin.js +29 -59
- package/development/core/mixins/form-associated-mixin.js +6 -9
- package/development/core/mixins/form-associated-radio-button-mixin.js +7 -9
- package/development/core/mixins/hydration-mixin.js +3 -4
- package/development/core/mixins/named-slot-list-mixin.js +4 -7
- package/development/core/mixins/negative-mixin.js +1 -1
- package/development/core/mixins/panel-mixin.js +2 -3
- package/development/core/mixins/readonly-mixin.d.ts.map +1 -1
- package/development/core/mixins/readonly-mixin.js +4 -6
- package/development/core/mixins/required-mixin.js +1 -1
- package/development/core/mixins/update-scheduler-mixin.js +1 -1
- package/development/core/mixins.js +4 -2
- package/development/core/overlay/overlay-option-panel.js +1 -1
- package/development/core/overlay/overlay-trigger-attributes.js +1 -1
- package/development/core/overlay/overlay.js +1 -1
- package/development/core/overlay/position.js +5 -5
- package/development/core/testing/event-spy.js +3 -5
- package/development/core/testing/mocha-extensions.js +1 -1
- package/development/core/testing/wait-for-condition.js +1 -1
- package/development/core/testing/wait-for-image-ready.js +2 -3
- package/development/core/testing/wait-for-render.js +2 -3
- package/development/date-input/date-input.component.d.ts +16 -1
- package/development/date-input/date-input.component.d.ts.map +1 -1
- package/development/date-input/date-input.component.js +28 -11
- package/development/datepicker/common/datepicker-button.d.ts +31 -20
- package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/development/datepicker/common/datepicker-button.js +103 -90
- package/development/datepicker/common.d.ts +0 -1
- package/development/datepicker/common.d.ts.map +1 -1
- package/development/datepicker/common.js +4 -6
- package/development/datepicker/datepicker/datepicker.component.d.ts +23 -102
- package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
- package/development/datepicker/datepicker/datepicker.component.js +94 -337
- package/development/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts +2 -2
- package/development/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts.map +1 -1
- package/development/datepicker/datepicker-next-day/datepicker-next-day.component.js +18 -6
- package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts +2 -2
- package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts.map +1 -1
- package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +18 -6
- package/development/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts +6 -26
- package/development/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts.map +1 -1
- package/development/datepicker/datepicker-toggle/datepicker-toggle.component.js +137 -224
- package/development/datepicker.js +3 -5
- package/development/dialog/dialog/dialog.component.d.ts +7 -16
- package/development/dialog/dialog/dialog.component.d.ts.map +1 -1
- package/development/dialog/dialog/dialog.component.js +78 -149
- package/development/dialog/dialog-actions/dialog-actions.component.d.ts +2 -2
- package/development/dialog/dialog-actions/dialog-actions.component.d.ts.map +1 -1
- package/development/dialog/dialog-actions/dialog-actions.component.js +20 -17
- package/development/dialog/dialog-content/dialog-content.component.d.ts.map +1 -1
- package/development/dialog/dialog-content/dialog-content.component.js +5 -46
- package/development/dialog/dialog-title/dialog-title.component.d.ts +2 -26
- package/development/dialog/dialog-title/dialog-title.component.d.ts.map +1 -1
- package/development/dialog/dialog-title/dialog-title.component.js +12 -179
- package/development/divider/divider.component.js +2 -2
- package/development/expansion-panel/expansion-panel/expansion-panel.component.js +9 -13
- package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +2 -2
- package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +5 -6
- package/development/file-selector/common/file-selector-common.js +2 -3
- package/development/file-selector/file-selector/file-selector.component.js +1 -1
- package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
- package/development/flip-card/flip-card/flip-card.component.js +7 -13
- package/development/flip-card/flip-card-details/flip-card-details.component.js +3 -4
- package/development/flip-card/flip-card-summary/flip-card-summary.component.js +3 -4
- package/development/footer/footer.component.js +1 -1
- package/development/form-error/form-error.component.js +3 -4
- 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 +39 -67
- package/development/form-field/form-field-clear/form-field-clear.component.d.ts.map +1 -1
- package/development/form-field/form-field-clear/form-field-clear.component.js +6 -8
- package/development/header/common/header-action-common.js +1 -1
- package/development/header/header/header.component.js +5 -8
- package/development/header/header-button/header-button.component.js +1 -1
- package/development/header/header-link/header-link.component.js +1 -1
- package/development/icon/icon-base.d.ts +5 -3
- package/development/icon/icon-base.d.ts.map +1 -1
- package/development/icon/icon-base.js +4 -7
- package/development/icon/icon-name-mixin.js +1 -1
- package/development/icon/icon-request.js +2 -3
- package/development/icon/icon-validate.js +1 -1
- package/development/icon/icon.component.d.ts +1 -2
- package/development/icon/icon.component.d.ts.map +1 -1
- package/development/icon/icon.component.js +8 -19
- package/development/image/image.component.js +7 -9
- package/development/journey-header/journey-header.component.d.ts +5 -5
- package/development/journey-header/journey-header.component.d.ts.map +1 -1
- package/development/journey-header/journey-header.component.js +26 -40
- package/development/lead-container/lead-container.component.js +1 -1
- package/development/link/block-link/block-link.component.js +1 -1
- package/development/link/block-link-button/block-link-button.component.js +1 -1
- package/development/link/block-link-static/block-link-static.component.js +1 -1
- package/development/link/common/block-link-common.js +1 -1
- package/development/link/common/inline-link-common.js +1 -1
- package/development/link/link/link.component.js +1 -1
- package/development/link/link-button/link-button.component.js +1 -1
- package/development/link/link-static/link-static.component.js +1 -1
- package/development/link-common-DPLJx5Uo.js +1 -1
- package/development/link-list/common/link-list-base.js +1 -1
- package/development/link-list/link-list/link-list.component.js +1 -1
- package/development/link-list/link-list-anchor/link-list-anchor.component.js +1 -1
- package/development/loading-indicator/loading-indicator.component.js +1 -1
- package/development/loading-indicator-circle/loading-indicator-circle.component.js +1 -1
- package/development/logo/logo.component.js +1 -1
- package/development/map-container/map-container.component.js +2 -3
- package/development/menu/common/menu-action-common.js +1 -1
- package/development/menu/menu/menu.component.js +17 -25
- package/development/menu/menu-button/menu-button.component.js +1 -1
- package/development/menu/menu-link/menu-link.component.js +1 -1
- package/development/message/message.component.d.ts +4 -8
- package/development/message/message.component.d.ts.map +1 -1
- package/development/message/message.component.js +12 -54
- package/development/navigation/common/navigation-action-common.js +3 -5
- package/development/navigation/navigation/navigation.component.js +19 -35
- package/development/navigation/navigation-button/navigation-button.component.js +1 -1
- package/development/navigation/navigation-link/navigation-link.component.js +1 -1
- package/development/navigation/navigation-list/navigation-list.component.js +1 -1
- package/development/navigation/navigation-marker/navigation-marker.component.js +4 -6
- package/development/navigation/navigation-section/navigation-section.component.d.ts +1 -1
- package/development/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
- package/development/navigation/navigation-section/navigation-section.component.js +27 -37
- package/development/notification/notification.component.d.ts +7 -9
- package/development/notification/notification.component.d.ts.map +1 -1
- package/development/notification/notification.component.js +47 -77
- package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
- package/development/option/optgroup/optgroup-base-element.js +8 -14
- package/development/option/optgroup/optgroup.component.js +6 -10
- package/development/option/option/option-base-element.js +3 -4
- package/development/option/option/option.component.js +7 -10
- package/development/overlay/overlay-base-element.d.ts +24 -6
- package/development/overlay/overlay-base-element.d.ts.map +1 -1
- package/development/overlay/overlay-base-element.js +114 -15
- package/development/overlay/overlay.component.d.ts +2 -12
- package/development/overlay/overlay.component.d.ts.map +1 -1
- package/development/overlay/overlay.component.js +33 -98
- package/development/paginator/common/paginator-common.js +1 -1
- package/development/paginator/compact-paginator/compact-paginator.component.js +1 -1
- package/development/paginator/paginator/paginator.component.js +2 -3
- package/development/popover/popover/popover.component.d.ts +45 -34
- package/development/popover/popover/popover.component.d.ts.map +1 -1
- package/development/popover/popover/popover.component.js +215 -172
- package/development/popover/popover-trigger/popover-trigger.component.js +1 -1
- package/development/popover/popover.js +2 -1
- package/development/popover.js +2 -1
- package/development/radio-button/common/radio-button-common.js +6 -10
- package/development/radio-button/radio-button/radio-button.component.js +2 -5
- package/development/radio-button/radio-button-group/radio-button-group.component.d.ts +1 -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 +8 -24
- package/development/radio-button/radio-button-panel/radio-button-panel.component.js +3 -7
- package/development/screen-reader-only/screen-reader-only.component.js +1 -1
- package/development/select/select.component.js +26 -49
- package/development/selection-expansion-panel/selection-expansion-panel.component.js +7 -11
- package/development/sidebar/icon-sidebar/icon-sidebar.component.js +1 -1
- package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.js +1 -1
- package/development/sidebar/icon-sidebar-container/icon-sidebar-container.component.js +4 -7
- package/development/sidebar/icon-sidebar-content/icon-sidebar-content.component.js +1 -1
- package/development/sidebar/icon-sidebar-link/icon-sidebar-link.component.js +1 -1
- package/development/sidebar/sidebar/sidebar.component.js +9 -16
- package/development/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts +0 -1
- package/development/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts.map +1 -1
- package/development/sidebar/sidebar-close-button/sidebar-close-button.component.js +3 -8
- package/development/sidebar/sidebar-container/sidebar-container.component.js +9 -13
- package/development/sidebar/sidebar-content/sidebar-content.component.js +1 -1
- package/development/sidebar/sidebar-title/sidebar-title.component.d.ts +2 -0
- package/development/sidebar/sidebar-title/sidebar-title.component.d.ts.map +1 -1
- package/development/sidebar/sidebar-title/sidebar-title.component.js +3 -9
- package/development/signet/signet.component.js +1 -1
- package/development/skiplink-list/skiplink-list.component.d.ts.map +1 -1
- package/development/skiplink-list/skiplink-list.component.js +19 -10
- package/development/slider/slider.component.js +4 -6
- package/development/status/status.component.d.ts +4 -7
- package/development/status/status.component.d.ts.map +1 -1
- package/development/status/status.component.js +23 -57
- package/development/stepper/step/step.component.d.ts +2 -2
- package/development/stepper/step/step.component.d.ts.map +1 -1
- package/development/stepper/step/step.component.js +20 -22
- package/development/stepper/step-label/step-label.component.d.ts +3 -4
- package/development/stepper/step-label/step-label.component.d.ts.map +1 -1
- package/development/stepper/step-label/step-label.component.js +20 -24
- package/development/stepper/stepper/stepper.component.js +16 -29
- package/development/table/table-wrapper/table-wrapper.component.js +2 -7
- package/development/tabs/tab/tab.component.js +1 -1
- package/development/tabs/tab-group/tab-group.component.js +23 -38
- package/development/tabs/tab-label/tab-label.component.js +1 -1
- package/development/tag/tag/tag.component.js +7 -13
- package/development/tag/tag-group/tag-group.component.js +5 -13
- package/development/teaser/teaser.component.d.ts +6 -10
- package/development/teaser/teaser.component.d.ts.map +1 -1
- package/development/teaser/teaser.component.js +48 -76
- package/development/teaser-hero/teaser-hero.component.js +1 -1
- package/development/teaser-product/common/teaser-product-common.js +1 -1
- package/development/teaser-product/teaser-product/teaser-product.component.js +1 -1
- package/development/teaser-product/teaser-product-static/teaser-product-static.component.js +1 -1
- package/development/time-input/time-input.component.js +10 -14
- package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
- package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.d.ts.map +1 -1
- package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.js +2 -5
- package/development/title/title-base.d.ts +0 -8
- package/development/title/title-base.d.ts.map +1 -1
- package/development/title/title-base.js +17 -49
- package/development/title/title.component.d.ts +2 -0
- package/development/title/title.component.d.ts.map +1 -1
- package/development/title/title.component.js +9 -14
- package/development/toast/toast.component.d.ts.map +1 -1
- package/development/toast/toast.component.js +7 -16
- package/development/toggle/toggle/toggle.component.js +8 -12
- package/development/toggle/toggle-option/toggle-option.component.d.ts +1 -1
- package/development/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
- package/development/toggle/toggle-option/toggle-option.component.js +10 -17
- package/development/toggle-check/toggle-check.component.js +1 -1
- package/development/train/train/train.component.js +1 -1
- package/development/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
- package/development/train/train-formation/train-formation.component.js +5 -7
- package/development/train/train-wagon/train-wagon.component.js +1 -1
- package/development/visual-checkbox/visual-checkbox.component.js +1 -1
- package/dialog/dialog/dialog.component.d.ts +7 -16
- package/dialog/dialog/dialog.component.d.ts.map +1 -1
- package/dialog/dialog/dialog.component.js +57 -87
- package/dialog/dialog-actions/dialog-actions.component.d.ts +2 -2
- package/dialog/dialog-actions/dialog-actions.component.d.ts.map +1 -1
- package/dialog/dialog-actions/dialog-actions.component.js +16 -16
- package/dialog/dialog-content/dialog-content.component.d.ts.map +1 -1
- package/dialog/dialog-content/dialog-content.component.js +14 -19
- package/dialog/dialog-title/dialog-title.component.d.ts +2 -26
- package/dialog/dialog-title/dialog-title.component.d.ts.map +1 -1
- package/dialog/dialog-title/dialog-title.component.js +16 -111
- package/divider/divider.component.js +3 -3
- package/expansion-panel/expansion-panel/expansion-panel.component.js +5 -9
- package/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +1 -1
- package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +30 -31
- package/file-selector/common/file-selector-common.js +1 -2
- package/flip-card/flip-card/flip-card.component.js +48 -54
- package/flip-card/flip-card-details/flip-card-details.component.js +15 -16
- package/flip-card/flip-card-summary/flip-card-summary.component.js +19 -20
- package/form-error/form-error.component.js +13 -14
- 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 +149 -168
- package/form-field/form-field-clear/form-field-clear.component.d.ts.map +1 -1
- package/form-field/form-field-clear/form-field-clear.component.js +19 -21
- package/header/header/header.component.js +26 -29
- package/icon/icon-base.d.ts +5 -3
- package/icon/icon-base.d.ts.map +1 -1
- package/icon/icon-base.js +32 -34
- package/icon/icon-request.js +10 -11
- package/icon/icon.component.d.ts +1 -2
- package/icon/icon.component.d.ts.map +1 -1
- package/icon/icon.component.js +37 -37
- package/icon-sidebar-button-common-CM-ueEhH.js +7 -0
- package/image/image.component.js +4 -6
- package/journey-header/journey-header.component.d.ts +5 -5
- package/journey-header/journey-header.component.d.ts.map +1 -1
- package/journey-header/journey-header.component.js +50 -63
- package/map-container/map-container.component.js +1 -2
- package/menu/menu/menu.component.js +47 -55
- package/message/message.component.d.ts +4 -8
- package/message/message.component.d.ts.map +1 -1
- package/message/message.component.js +18 -47
- package/navigation/common/navigation-action-common.js +19 -21
- package/navigation/navigation/navigation.component.js +73 -92
- package/navigation/navigation-marker/navigation-marker.component.js +26 -28
- package/navigation/navigation-section/navigation-section.component.d.ts +1 -1
- package/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
- package/navigation/navigation-section/navigation-section.component.js +72 -82
- package/notification/notification.component.d.ts +7 -9
- package/notification/notification.component.d.ts.map +1 -1
- package/notification/notification.component.js +77 -95
- package/option/optgroup/optgroup-base-element.d.ts.map +1 -1
- package/option/optgroup/optgroup-base-element.js +36 -38
- package/option/optgroup/optgroup.component.js +16 -20
- package/option/option/option-base-element.js +3 -4
- package/option/option/option.component.js +26 -29
- package/overlay/overlay-base-element.d.ts +24 -6
- package/overlay/overlay-base-element.d.ts.map +1 -1
- package/overlay/overlay-base-element.js +98 -51
- package/overlay/overlay.component.d.ts +2 -12
- package/overlay/overlay.component.d.ts.map +1 -1
- package/overlay/overlay.component.js +57 -95
- package/package.json +1 -1
- package/paginator/paginator/paginator.component.js +3 -4
- package/popover/popover/popover.component.d.ts +45 -34
- package/popover/popover/popover.component.d.ts.map +1 -1
- package/popover/popover/popover.component.js +194 -168
- package/popover/popover-trigger/popover-trigger.component.js +1 -1
- package/popover/popover.js +2 -1
- package/popover.js +5 -4
- package/radio-button/common/radio-button-common.js +11 -15
- package/radio-button/radio-button/radio-button.component.js +16 -19
- package/radio-button/radio-button-group/radio-button-group.component.d.ts +1 -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 +27 -43
- package/radio-button/radio-button-panel/radio-button-panel.component.js +33 -37
- package/select/select.component.js +94 -117
- package/selection-expansion-panel/selection-expansion-panel.component.js +35 -39
- package/sidebar/common.js +1 -1
- package/sidebar/icon-sidebar-container/icon-sidebar-container.component.js +10 -13
- package/sidebar/sidebar/sidebar.component.js +62 -69
- package/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts +0 -1
- package/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts.map +1 -1
- package/sidebar/sidebar-close-button/sidebar-close-button.component.js +18 -18
- package/sidebar/sidebar-container/sidebar-container.component.js +29 -33
- package/sidebar/sidebar-title/sidebar-title.component.d.ts +2 -0
- package/sidebar/sidebar-title/sidebar-title.component.d.ts.map +1 -1
- package/sidebar/sidebar-title/sidebar-title.component.js +16 -16
- package/sidebar.js +1 -1
- package/skiplink-list/skiplink-list.component.d.ts.map +1 -1
- package/skiplink-list/skiplink-list.component.js +36 -39
- package/slider/slider.component.js +11 -13
- package/standard-theme.css +29 -25
- package/status/status.component.d.ts +4 -7
- package/status/status.component.d.ts.map +1 -1
- package/status/status.component.js +34 -50
- package/stepper/step/step.component.d.ts +2 -2
- package/stepper/step/step.component.d.ts.map +1 -1
- package/stepper/step/step.component.js +29 -30
- package/stepper/step-label/step-label.component.d.ts +3 -4
- package/stepper/step-label/step-label.component.d.ts.map +1 -1
- package/stepper/step-label/step-label.component.js +22 -25
- package/stepper/stepper/stepper.component.js +72 -86
- package/table/table-wrapper/table-wrapper.component.js +17 -18
- package/table.css +0 -25
- package/tabs/tab-group/tab-group.component.js +77 -92
- package/tabs/tab-label/tab-label.component.js +12 -12
- package/tag/tag/tag.component.js +49 -55
- package/tag/tag-group/tag-group.component.js +37 -45
- package/teaser/teaser.component.d.ts +6 -10
- package/teaser/teaser.component.d.ts.map +1 -1
- package/teaser/teaser.component.js +45 -68
- package/teaser-product/common.js +1 -1
- package/teaser-product/teaser-product/teaser-product.component.js +1 -1
- package/teaser-product-common-C8oSkIxy.js +5 -0
- package/teaser-product.js +1 -1
- package/time-input/time-input.component.js +29 -33
- package/timetable-occupancy-icon/timetable-occupancy-icon.component.d.ts.map +1 -1
- package/timetable-occupancy-icon/timetable-occupancy-icon.component.js +22 -25
- package/title/title-base.d.ts +0 -8
- package/title/title-base.d.ts.map +1 -1
- package/title/title-base.js +34 -53
- package/title/title.component.d.ts +2 -0
- package/title/title.component.d.ts.map +1 -1
- package/title/title.component.js +9 -9
- package/toast/toast.component.d.ts.map +1 -1
- package/toast/toast.component.js +6 -9
- package/toggle/toggle/toggle.component.js +27 -31
- package/toggle/toggle-option/toggle-option.component.d.ts +1 -1
- package/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
- package/toggle/toggle-option/toggle-option.component.js +44 -51
- package/train/train-formation/train-formation.component.js +41 -43
- package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss +0 -530
- package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +0 -1123
- package/datepicker/common/datepicker-association-controllers.d.ts +0 -21
- package/datepicker/common/datepicker-association-controllers.d.ts.map +0 -1
- package/datepicker/common/datepicker-association-controllers.js +0 -58
- package/development/datepicker/common/datepicker-association-controllers.d.ts +0 -21
- package/development/datepicker/common/datepicker-association-controllers.d.ts.map +0 -1
- package/development/datepicker/common/datepicker-association-controllers.js +0 -82
- package/icon-sidebar-button-common-DG8bnrBu.js +0 -7
- package/teaser-product-common-CpMAlYEp.js +0 -5
|
@@ -69,7 +69,6 @@ let SbbChipGroupElement = (() => {
|
|
|
69
69
|
let _separatorKeys_extraInitializers = [];
|
|
70
70
|
var SbbChipGroupElement2 = (_a = class extends _classSuper {
|
|
71
71
|
constructor() {
|
|
72
|
-
var _a2, _b;
|
|
73
72
|
super();
|
|
74
73
|
__privateAdd(this, _displayWith_accessor_storage);
|
|
75
74
|
__privateAdd(this, _separatorKeys_accessor_storage);
|
|
@@ -81,8 +80,8 @@ let SbbChipGroupElement = (() => {
|
|
|
81
80
|
this._inputAttributeObserver = !isServer ? new MutationObserver(() => this._reactToInputChanges()) : null;
|
|
82
81
|
this._formFieldAttributeObserver = !isServer ? new MutationObserver(() => this._inheritSize()) : null;
|
|
83
82
|
this._language = new SbbLanguageController(this);
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
this.addEventListener?.(SbbChipElement.events.requestDelete, (ev) => this._deleteChip(ev.target));
|
|
84
|
+
this.addEventListener?.("keydown", (ev) => this._onChipKeyDown(ev));
|
|
86
85
|
}
|
|
87
86
|
/** Value of the form element. */
|
|
88
87
|
set value(value) {
|
|
@@ -94,10 +93,7 @@ let SbbChipGroupElement = (() => {
|
|
|
94
93
|
toRemove.splice(toRemove.indexOf(c), 1);
|
|
95
94
|
}
|
|
96
95
|
}
|
|
97
|
-
toRemove.forEach((value2) =>
|
|
98
|
-
var _a2;
|
|
99
|
-
return (_a2 = this._chipElements().find((c) => c.value === value2)) == null ? void 0 : _a2.remove();
|
|
100
|
-
});
|
|
96
|
+
toRemove.forEach((value2) => this._chipElements().find((c) => c.value === value2)?.remove());
|
|
101
97
|
const toAdd = [...value];
|
|
102
98
|
for (const c of oldValue) {
|
|
103
99
|
if (toAdd.includes(c)) {
|
|
@@ -161,41 +157,37 @@ let SbbChipGroupElement = (() => {
|
|
|
161
157
|
}
|
|
162
158
|
/** Return the list of chip elements **/
|
|
163
159
|
_chipElements() {
|
|
164
|
-
|
|
165
|
-
return Array.from(((_a2 = this.querySelectorAll) == null ? void 0 : _a2.call(this, "sbb-chip")) ?? []);
|
|
160
|
+
return Array.from(this.querySelectorAll?.("sbb-chip") ?? []);
|
|
166
161
|
}
|
|
167
162
|
/** Return the list of enabled chip elements **/
|
|
168
163
|
_enabledChipElements() {
|
|
169
|
-
|
|
170
|
-
return Array.from(((_a2 = this.querySelectorAll) == null ? void 0 : _a2.call(this, "sbb-chip:not([disabled])")) ?? []);
|
|
164
|
+
return Array.from(this.querySelectorAll?.("sbb-chip:not([disabled])") ?? []);
|
|
171
165
|
}
|
|
172
166
|
_setupComponent() {
|
|
173
|
-
var _a2, _b, _c, _d, _e;
|
|
174
167
|
const input = this.querySelector("input");
|
|
175
168
|
if (input && input !== this._inputElement) {
|
|
176
|
-
|
|
177
|
-
|
|
169
|
+
this._inputAbortController?.abort();
|
|
170
|
+
this._inputAttributeObserver?.disconnect();
|
|
178
171
|
this._inputElement = input;
|
|
179
172
|
this._inputAbortController = new AbortController();
|
|
180
173
|
this._inputElement.addEventListener("keydown", (ev) => this._onInputKeyDown(ev), {
|
|
181
174
|
signal: this._inputAbortController.signal
|
|
182
175
|
});
|
|
183
176
|
this._inputElement.addEventListener("inputAutocomplete", (event) => {
|
|
184
|
-
|
|
185
|
-
this._createChipFromInput("autocomplete", (_a3 = event.detail) == null ? void 0 : _a3.option.value);
|
|
177
|
+
this._createChipFromInput("autocomplete", event.detail?.option.value);
|
|
186
178
|
}, {
|
|
187
179
|
signal: this._inputAbortController.signal
|
|
188
180
|
});
|
|
189
|
-
|
|
181
|
+
this._inputAttributeObserver?.observe(this._inputElement, {
|
|
190
182
|
attributes: true,
|
|
191
183
|
attributeFilter: ["readonly", "disabled"]
|
|
192
184
|
});
|
|
193
185
|
}
|
|
194
186
|
this._inheritSize();
|
|
195
|
-
|
|
187
|
+
this._formFieldAttributeObserver?.disconnect();
|
|
196
188
|
const formField = this.closest("sbb-form-field");
|
|
197
189
|
if (formField) {
|
|
198
|
-
|
|
190
|
+
this._formFieldAttributeObserver?.observe(formField, {
|
|
199
191
|
attributes: true,
|
|
200
192
|
attributeFilter: ["size"]
|
|
201
193
|
});
|
|
@@ -253,7 +245,6 @@ let SbbChipGroupElement = (() => {
|
|
|
253
245
|
* If the input is not empty, create a chip with its value
|
|
254
246
|
*/
|
|
255
247
|
_createChipFromInput(origin = "input", value) {
|
|
256
|
-
var _a2;
|
|
257
248
|
const inputValue = value ?? this._inputElement.value.trim();
|
|
258
249
|
if (!inputValue) {
|
|
259
250
|
return;
|
|
@@ -261,7 +252,7 @@ let SbbChipGroupElement = (() => {
|
|
|
261
252
|
const eventDetail = {
|
|
262
253
|
origin,
|
|
263
254
|
value: inputValue,
|
|
264
|
-
label: (value ?
|
|
255
|
+
label: (value ? this.displayWith?.(value) : null) ?? void 0,
|
|
265
256
|
setValue: (value2) => eventDetail.value = value2,
|
|
266
257
|
setLabel: (label) => eventDetail.label = label
|
|
267
258
|
};
|
|
@@ -283,7 +274,6 @@ let SbbChipGroupElement = (() => {
|
|
|
283
274
|
* @param index The index of the enabled chip. If null, focus the last one.
|
|
284
275
|
*/
|
|
285
276
|
_focusChip(index) {
|
|
286
|
-
var _a2;
|
|
287
277
|
const enabledChips = this._enabledChipElements();
|
|
288
278
|
if (index !== void 0 && enabledChips[index]) {
|
|
289
279
|
enabledChips[index].focus();
|
|
@@ -293,20 +283,19 @@ let SbbChipGroupElement = (() => {
|
|
|
293
283
|
enabledChips[enabledChips.length - 1].focus();
|
|
294
284
|
return;
|
|
295
285
|
}
|
|
296
|
-
|
|
286
|
+
this._inputElement?.focus();
|
|
297
287
|
}
|
|
298
288
|
_emitInputEvents() {
|
|
299
289
|
this._input.emit();
|
|
300
290
|
this._change.emit();
|
|
301
291
|
}
|
|
302
292
|
_createChipElement(value, label) {
|
|
303
|
-
var _a2;
|
|
304
293
|
if (isServer) {
|
|
305
294
|
return;
|
|
306
295
|
}
|
|
307
296
|
const newChip = document.createElement("sbb-chip");
|
|
308
297
|
newChip.value = value;
|
|
309
|
-
newChip.innerText = label ?? (value ?
|
|
298
|
+
newChip.innerText = label ?? (value ? this.displayWith?.(value) : null) ?? "";
|
|
310
299
|
if (!displayWithWarningLogged && !label && typeof value === "object" && !this.displayWith) {
|
|
311
300
|
console.warn(`displayWith has not been set yet for sbb-chip-group and value is an object.
|
|
312
301
|
If you are using object values, you need to provide displayWidth before
|
|
@@ -316,21 +305,18 @@ let SbbChipGroupElement = (() => {
|
|
|
316
305
|
this.insertBefore(newChip, this._inputElement ?? this.querySelector("input"));
|
|
317
306
|
}
|
|
318
307
|
_reactToInputChanges() {
|
|
319
|
-
|
|
320
|
-
this.disabled = ((_a2 = this._inputElement) == null ? void 0 : _a2.disabled) ?? false;
|
|
308
|
+
this.disabled = this._inputElement?.disabled ?? false;
|
|
321
309
|
this._proxyStateToChips();
|
|
322
310
|
}
|
|
323
311
|
_proxyStateToChips() {
|
|
324
312
|
this._chipElements().forEach((c) => {
|
|
325
|
-
var _a2;
|
|
326
313
|
c.disabled = this.disabled || this.formDisabled;
|
|
327
|
-
c.readOnly =
|
|
314
|
+
c.readOnly = this._inputElement?.hasAttribute("readonly") ?? false;
|
|
328
315
|
c.negative = this.negative;
|
|
329
316
|
});
|
|
330
317
|
}
|
|
331
318
|
_inheritSize() {
|
|
332
|
-
|
|
333
|
-
this.setAttribute("data-size", ((_a2 = this.closest("sbb-form-field")) == null ? void 0 : _a2.size) ?? (isLean() ? "s" : "m"));
|
|
319
|
+
this.setAttribute("data-size", this.closest("sbb-form-field")?.size ?? (isLean() ? "s" : "m"));
|
|
334
320
|
}
|
|
335
321
|
_updateInputDescription() {
|
|
336
322
|
if (!this._inputElement) {
|
|
@@ -372,4 +358,4 @@ let SbbChipGroupElement = (() => {
|
|
|
372
358
|
export {
|
|
373
359
|
SbbChipGroupElement
|
|
374
360
|
};
|
|
375
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jaGlwL2NoaXAtZ3JvdXAvY2hpcC1ncm91cC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaXNBcnJvd0tleVByZXNzZWQgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBpc0xlYW4gfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IGkxOG5DaGlwR3JvdXBJbnB1dERlc2NyaXB0aW9uLCBpMThuU2VsZWN0aW9uUmVxdWlyZWQgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBGb3JtUmVzdG9yZVJlYXNvbixcbiAgdHlwZSBGb3JtUmVzdG9yZVN0YXRlLFxuICBTYmJEaXNhYmxlZE1peGluLFxuICBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4sXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4sXG4gIFNiYk5lZ2F0aXZlTWl4aW4sXG4gIFNiYlJlcXVpcmVkTWl4aW4sXG59IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiT3B0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9vcHRpb24vb3B0aW9uL29wdGlvbi1iYXNlLWVsZW1lbnQuanMnO1xuaW1wb3J0IHsgU2JiQ2hpcEVsZW1lbnQgfSBmcm9tICcuLi9jaGlwLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vY2hpcC1ncm91cC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5sZXQgZGlzcGxheVdpdGhXYXJuaW5nTG9nZ2VkID0gZmFsc2U7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8VCA9IHN0cmluZz4ge1xuICAvKiogVGhlIGVsZW1lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGNoaXAgY3JlYXRpb24gKi9cbiAgb3JpZ2luOiAnaW5wdXQnIHwgJ2F1dG9jb21wbGV0ZSc7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIG5ldyBjaGlwLiBFaXRoZXIgdGhlIGlucHV0IG9yIHRoZSBvcHRpb24gdmFsdWUgZGVwZW5kaW5nIG9uIHRoZSBvcmlnaW4uXG4gICAqIEVpdGhlciB0aGUgdmFsdWUgZnJvbSB0aGUgaW5wdXQgd2hpY2ggaXMgYWx3YXlzIGBzdHJpbmdgIG9yIHRoZSB2YWx1ZSBmcm9tIHRoZSBzZWxlY3RlZCBvcHRpb25cbiAgICogZnJvbSBhbiBhdXRvY29tcGxldGUsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW55IG90aGVyIHR5cGUuXG4gICAqL1xuICB2YWx1ZTogVCB8IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBTZXQgYSBuZXcgdmFsdWUgZm9yIHRoZSBjaGlwIHRoYXQgd2lsbCBiZSBjcmVhdGVkICovXG4gIHNldFZhbHVlKHZhbHVlOiBUKTogdm9pZDtcbiAgLyoqIFNldCBhIGxhYmVsIGZvciB0aGUgY2hpcCB0aGF0IHdpbGwgYmUgY3JlYXRlZCAqL1xuICBzZXRMYWJlbCh2YWx1ZTogc3RyaW5nKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgYHNiYi1jaGlwLWdyb3VwYCBjb21wb25lbnQgaXMgdXNlZCBhcyBhIGNvbnRhaW5lciBmb3Igb25lIG9yIG11bHRpcGxlIGBzYmItY2hpcGAuXG4gKlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gY2hhbmdlIC0gTm90aWZpZXMgdGhhdCB0aGUgY29tcG9uZW50J3MgdmFsdWUgaGFzIGNoYW5nZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBpbnB1dCAtIE5vdGlmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCdzIHZhbHVlIGhhcyBjaGFuZ2VkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDxTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlscz59IGNoaXBJbnB1dFRva2VuRW5kIC0gTm90aWZpZXMgdGhhdCBhIGNoaXAgaXMgYWJvdXQgdG8gYmUgY3JlYXRlZC4gQ2FuIGJlIHVzZWQgdG8gY3VzdG9taXplIHRoZSB2YWx1ZSBhbmQgdGhlIGxhYmVsLiBDYW4gYmUgcHJldmVudGVkLlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1jaGlwYCBlbGVtZW50cy5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSAoVCA9IHN0cmluZ1tdKSB8IG51bGxcbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWNoaXAtZ3JvdXAnKVxuY2xhc3MgU2JiQ2hpcEdyb3VwRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYlJlcXVpcmVkTWl4aW4oXG4gIFNiYkRpc2FibGVkTWl4aW4oU2JiTmVnYXRpdmVNaXhpbihTYmJGb3JtQXNzb2NpYXRlZE1peGluKFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbihMaXRFbGVtZW50KSkpKSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAnbGlzdGJveCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBpbnB1dDogJ2lucHV0JyxcbiAgICBjaGFuZ2U6ICdjaGFuZ2UnLFxuICAgIGNoaXBJbnB1dFRva2VuRW5kOiAnY2hpcElucHV0VG9rZW5FbmQnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBWYWx1ZSBvZiB0aGUgZm9ybSBlbGVtZW50LiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBBcnJheSB9KVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiAoVCB8IG51bGwpW10gfCBudWxsKSB7XG4gICAgdmFsdWUgPSB2YWx1ZSA/PyBbXTtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG5cbiAgICAvLyBTdWJ0cmFjdCBmcm9tICdvbGRWYWx1ZScgdGhlIG5ldyAndmFsdWUnXG4gICAgLy8gVGhlIHJlc3VsdCBhcmUgdGhlIGNoaXBzIHRvIHJlbW92ZSAoaGFuZGxlIGR1cGxpY2F0ZXMpXG4gICAgY29uc3QgdG9SZW1vdmUgPSBbLi4ub2xkVmFsdWVdO1xuICAgIGZvciAoY29uc3QgYyBvZiB2YWx1ZSkge1xuICAgICAgaWYgKHRvUmVtb3ZlLmluY2x1ZGVzKGMpKSB7XG4gICAgICAgIHRvUmVtb3ZlLnNwbGljZSh0b1JlbW92ZS5pbmRleE9mKGMpLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdG9SZW1vdmUuZm9yRWFjaCgodmFsdWUpID0+XG4gICAgICB0aGlzLl9jaGlwRWxlbWVudHMoKVxuICAgICAgICAuZmluZCgoYykgPT4gYy52YWx1ZSA9PT0gdmFsdWUpXG4gICAgICAgID8ucmVtb3ZlKCksXG4gICAgKTtcblxuICAgIC8vIFN1YnRyYWN0IGZyb20gdGhlIG5ldyAndmFsdWUnIHdoYXQgd2FzIGFscmVhZHkgcHJlc2VudFxuICAgIC8vIFRoZSByZXN1bHQgYXJlIHRoZSBuZXcgY2hpcHMgdG8gYWRkIChoYW5kbGUgZHVwbGljYXRlcylcbiAgICBjb25zdCB0b0FkZCA9IFsuLi52YWx1ZV07XG4gICAgZm9yIChjb25zdCBjIG9mIG9sZFZhbHVlKSB7XG4gICAgICBpZiAodG9BZGQuaW5jbHVkZXMoYykpIHtcbiAgICAgICAgdG9BZGQuc3BsaWNlKHRvQWRkLmluZGV4T2YoYyksIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0b0FkZC5mb3JFYWNoKChjKSA9PiB0aGlzLl9jcmVhdGVDaGlwRWxlbWVudChjKSk7XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiAoVCB8IG51bGwpW10ge1xuICAgIHJldHVybiB0aGlzLl9jaGlwRWxlbWVudHMoKS5tYXAoKGMpID0+IGMudmFsdWUpO1xuICB9XG5cbiAgLyoqIEZ1bmN0aW9uIHRoYXQgbWFwcyBhIGNoaXAncyB2YWx1ZSB0byBpdHMgZGlzcGxheSB2YWx1ZS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZGlzcGxheVdpdGg6ICgodmFsdWU6IFQpID0+IHN0cmluZykgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIGFycmF5IG9mIGtleXMgdGhhdCB3aWxsIHRyaWdnZXIgYSBgY2hpcElucHV0VG9rZW5FbmRgIGV2ZW50LiBEZWZhdWx0IGBbJ0VudGVyJ11gICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3NlcGFyYXRvci1rZXlzJywgdHlwZTogQXJyYXkgfSlcbiAgcHVibGljIGFjY2Vzc29yIHNlcGFyYXRvcktleXM6IHN0cmluZ1tdID0gWydFbnRlciddO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBjb21wb25lbnQncyB2YWx1ZSBoYXMgY2hhbmdlZC4gKi9cbiAgcHJpdmF0ZSBfY2hhbmdlOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKHRoaXMsIFNiYkNoaXBHcm91cEVsZW1lbnQuZXZlbnRzLmNoYW5nZSk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCdzIHZhbHVlIGhhcyBjaGFuZ2VkLiAqL1xuICBwcml2YXRlIF9pbnB1dDogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJDaGlwR3JvdXBFbGVtZW50LmV2ZW50cy5pbnB1dCk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgYSBjaGlwIGlzIGFib3V0IHRvIGJlIGNyZWF0ZWQuIENhbiBiZSBwcmV2ZW50ZWQuICovXG4gIHByaXZhdGUgX2NoaXBJbnB1dFRva2VuRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlsczxUPj4oXG4gICAgdGhpcyxcbiAgICBTYmJDaGlwR3JvdXBFbGVtZW50LmV2ZW50cy5jaGlwSW5wdXRUb2tlbkVuZCxcbiAgKTtcblxuICAvKipcbiAgICogTGlzdGVucyB0byB0aGUgY2hhbmdlcyBvbiBgcmVhZG9ubHlgIGFuZCBgZGlzYWJsZWRgIGF0dHJpYnV0ZXMgb2YgYDxpbnB1dD5gLlxuICAgKi9cbiAgcHJpdmF0ZSBfaW5wdXRBdHRyaWJ1dGVPYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gdGhpcy5fcmVhY3RUb0lucHV0Q2hhbmdlcygpKVxuICAgIDogbnVsbDtcblxuICAvKipcbiAgICogTGlzdGVucyB0byB0aGUgJ3NpemUnIGNoYW5nZXMgb24gdGhlIGBzYmItZm9ybS1maWVsZGAuXG4gICAqL1xuICBwcml2YXRlIF9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gdGhpcy5faW5oZXJpdFNpemUoKSlcbiAgICA6IG51bGw7XG5cbiAgcHJpdmF0ZSBfaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9pbnB1dEFib3J0Q29udHJvbGxlcjogQWJvcnRDb250cm9sbGVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LihTYmJDaGlwRWxlbWVudC5ldmVudHMucmVxdWVzdERlbGV0ZSwgKGV2KSA9PlxuICAgICAgdGhpcy5fZGVsZXRlQ2hpcChldi50YXJnZXQgYXMgU2JiQ2hpcEVsZW1lbnQ8VD4pLFxuICAgICk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5ZG93bicsIChldikgPT4gdGhpcy5fb25DaGlwS2V5RG93bihldikpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fc2V0dXBDb21wb25lbnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlcyk6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Zvcm1EaXNhYmxlZCcpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJylcbiAgICApIHtcbiAgICAgIHRoaXMuX3Byb3h5U3RhdGVUb0NoaXBzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgIF9yZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXN0YXRlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkRm9ybURhdGEoc3RhdGUgYXMgRm9ybURhdGEpLnRoZW4oKGFycmF5KSA9PiAodGhpcy52YWx1ZSA9IGFycmF5KSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9yZWFkRm9ybURhdGEoZm9ybURhdGE6IEZvcm1EYXRhKTogUHJvbWlzZTxUW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBmb3JtRGF0YVxuICAgICAgICAuZ2V0QWxsKHRoaXMubmFtZSlcbiAgICAgICAgLm1hcChhc3luYyAoZW50cnkpID0+XG4gICAgICAgICAgZW50cnkgaW5zdGFuY2VvZiBCbG9iID8gSlNPTi5wYXJzZShhd2FpdCBlbnRyeS50ZXh0KCkpIDogKGVudHJ5IGFzIFQpLFxuICAgICAgICApLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVmFsaWRhdGUobmFtZSkgfHwgbmFtZSA9PT0gJ3JlcXVpcmVkJyB8fCBuYW1lID09PSAndmFsdWUnO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlKCk7XG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuc2V0VmFsaWRpdHlGbGFnKCd2YWx1ZU1pc3NpbmcnLCBpMThuU2VsZWN0aW9uUmVxdWlyZWRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbW92ZVZhbGlkaXR5RmxhZygndmFsdWVNaXNzaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJldHVybiB0aGUgbGlzdCBvZiBjaGlwIGVsZW1lbnRzICoqL1xuICBwcml2YXRlIF9jaGlwRWxlbWVudHMoKTogU2JiQ2hpcEVsZW1lbnQ8VD5bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiQ2hpcEVsZW1lbnQ8VD4+KCdzYmItY2hpcCcpID8/IFtdKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gdGhlIGxpc3Qgb2YgZW5hYmxlZCBjaGlwIGVsZW1lbnRzICoqL1xuICBwcml2YXRlIF9lbmFibGVkQ2hpcEVsZW1lbnRzKCk6IFNiYkNoaXBFbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKCdzYmItY2hpcDpub3QoW2Rpc2FibGVkXSknKSA/PyBbXSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cENvbXBvbmVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcblxuICAgIC8vIENvbm5lY3QgdG8gdGhlIGlucHV0XG4gICAgaWYgKGlucHV0ICYmIGlucHV0ICE9PSB0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5faW5wdXRBdHRyaWJ1dGVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50ID0gaW5wdXQ7XG5cbiAgICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXYpID0+IHRoaXMuX29uSW5wdXRLZXlEb3duKGV2KSwge1xuICAgICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdpbnB1dEF1dG9jb21wbGV0ZScsXG4gICAgICAgIChldmVudDogQ3VzdG9tRXZlbnQ8eyBvcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+IH0+KSA9PiB7XG4gICAgICAgICAgdGhpcy5fY3JlYXRlQ2hpcEZyb21JbnB1dCgnYXV0b2NvbXBsZXRlJywgZXZlbnQuZGV0YWlsPy5vcHRpb24udmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICB0aGlzLl9pbnB1dEF0dHJpYnV0ZU9ic2VydmVyPy5vYnNlcnZlKHRoaXMuX2lucHV0RWxlbWVudCwge1xuICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsncmVhZG9ubHknLCAnZGlzYWJsZWQnXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEluaGVyaXQgc2l6ZSBmcm9tIHRoZSBmb3JtLWZpZWxkIGFuZCBvYnNlcnZlIGZvciBjaGFuZ2VzXG4gICAgdGhpcy5faW5oZXJpdFNpemUoKTtcbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIGNvbnN0IGZvcm1GaWVsZCA9IHRoaXMuY2xvc2VzdCgnc2JiLWZvcm0tZmllbGQnKTtcbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlcj8ub2JzZXJ2ZShmb3JtRmllbGQsIHtcbiAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3NpemUnXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWVtcHR5JywgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApO1xuICAgIHRoaXMuX3JlYWN0VG9JbnB1dENoYW5nZXMoKTtcbiAgICB0aGlzLl91cGRhdGVJbnB1dERlc2NyaXB0aW9uKCk7XG4gICAgdGhpcy51cGRhdGVGb3JtVmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gZm9yIGtleWJvYXJkIGV2ZW50cyBvbiB0aGUgY2hpcCBlbGVtZW50c1xuICAgKiovXG4gIHByaXZhdGUgX29uQ2hpcEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudFRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBTYmJDaGlwRWxlbWVudDxUPjtcbiAgICBpZiAoZXZlbnRUYXJnZXQubG9jYWxOYW1lICE9PSAnc2JiLWNoaXAnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQXJyb3cga2V5cyBhbGxvdyBuYXZpZ2F0aW9uIGJldHdlZW4gY2hpcHMgZm9jdXMgc3RlcHNcbiAgICBpZiAoaXNBcnJvd0tleVByZXNzZWQoZXZlbnQpKSB7XG4gICAgICBjb25zdCBmb2N1c1N0ZXBzID0gdGhpcy5fZW5hYmxlZENoaXBFbGVtZW50cygpO1xuICAgICAgY29uc3QgbmV4dCA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZlbnQsIGZvY3VzU3RlcHMuaW5kZXhPZihldmVudFRhcmdldCksIGZvY3VzU3RlcHMubGVuZ3RoKTtcbiAgICAgIGZvY3VzU3RlcHNbbmV4dF0uZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgIGlmICghZXZlbnRUYXJnZXQucmVhZE9ubHkgJiYgIWV2ZW50VGFyZ2V0LmRpc2FibGVkKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLl9kZWxldGVDaGlwKGV2ZW50VGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGZvciBrZXlib2FyZCBldmVudHMgb24gdGhlIGlucHV0XG4gICAqKi9cbiAgcHJpdmF0ZSBfb25JbnB1dEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGlmICghdGhpcy5faW5wdXRFbGVtZW50IS52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuX2ZvY3VzQ2hpcCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBQcmV2ZW50cyB0aGUgZm9ybSBzdWJtaXRcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHVzZXIgdHlwZWQgb25lIG9mIHRoZSBzZXBhcmF0b3Iga2V5cywgdHJpZ2dlciBhIGNoaXBJbnB1dFRva2VuRW5kIGV2ZW50XG4gICAgaWYgKHRoaXMuc2VwYXJhdG9yS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBwcmV2ZW50IHR5cGluZyB0aGUgc2VwYXJhdG9yIGtleSBpbnRvIHRoZSBpbnB1dFxuICAgICAgdGhpcy5fY3JlYXRlQ2hpcEZyb21JbnB1dCgnaW5wdXQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGlucHV0IGlzIG5vdCBlbXB0eSwgY3JlYXRlIGEgY2hpcCB3aXRoIGl0cyB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBfY3JlYXRlQ2hpcEZyb21JbnB1dChvcmlnaW46ICdpbnB1dCcgfCAnYXV0b2NvbXBsZXRlJyA9ICdpbnB1dCcsIHZhbHVlPzogVCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSB2YWx1ZSA/PyB0aGlzLl9pbnB1dEVsZW1lbnQhLnZhbHVlLnRyaW0oKTtcbiAgICBpZiAoIWlucHV0VmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudERldGFpbDogU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8VD4gPSB7XG4gICAgICBvcmlnaW46IG9yaWdpbixcbiAgICAgIHZhbHVlOiBpbnB1dFZhbHVlLFxuICAgICAgbGFiZWw6ICh2YWx1ZSA/IHRoaXMuZGlzcGxheVdpdGg/Lih2YWx1ZSkgOiBudWxsKSA/PyB1bmRlZmluZWQsXG4gICAgICBzZXRWYWx1ZTogKHZhbHVlOiBUKSA9PiAoZXZlbnREZXRhaWwudmFsdWUgPSB2YWx1ZSksXG4gICAgICBzZXRMYWJlbDogKGxhYmVsOiBzdHJpbmcpID0+IChldmVudERldGFpbC5sYWJlbCA9IGxhYmVsKSxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLl9jaGlwSW5wdXRUb2tlbkVuZC5lbWl0KGV2ZW50RGV0YWlsKSkge1xuICAgICAgcmV0dXJuOyAvLyBldmVudCBwcmV2ZW50ZWQ7IGRvIG5vdGhpbmcgKHRoZSBjb25zdW1lciBoYXMgdG8gY3JlYXRlIHRoZSBjaGlwKVxuICAgIH1cblxuICAgIHRoaXMuX2NyZWF0ZUNoaXBFbGVtZW50KGV2ZW50RGV0YWlsLnZhbHVlIGFzIFQsIGV2ZW50RGV0YWlsLmxhYmVsKTtcbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQhLnZhbHVlID0gJyc7IC8vIEVtcHR5IHRoZSBpbnB1dFxuICAgIHRoaXMuX2VtaXRJbnB1dEV2ZW50cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVsZXRlQ2hpcChjaGlwOiBTYmJDaGlwRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGNvbnN0IGNoaXBzID0gdGhpcy5fZW5hYmxlZENoaXBFbGVtZW50cygpO1xuICAgIGNoaXAucmVtb3ZlKCk7XG4gICAgdGhpcy5fZW1pdElucHV0RXZlbnRzKCk7XG4gICAgdGhpcy5fZm9jdXNDaGlwKGNoaXBzLmluZGV4T2YoY2hpcCkpOyAvLyBGb2N1cyB0aGUgbmV4dCBjaGlwXG4gIH1cblxuICAvKipcbiAgICogRm9jdXMgYW4gZW5hYmxlZCBjaGlwLiBJZiBub25lIGFyZSBwcmVzZW50LCBmb2N1cyB0aGUgaW5wdXRcbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgZW5hYmxlZCBjaGlwLiBJZiBudWxsLCBmb2N1cyB0aGUgbGFzdCBvbmUuXG4gICAqL1xuICBwcml2YXRlIF9mb2N1c0NoaXAoaW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkQ2hpcHMgPSB0aGlzLl9lbmFibGVkQ2hpcEVsZW1lbnRzKCk7XG5cbiAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCAmJiBlbmFibGVkQ2hpcHNbaW5kZXhdKSB7XG4gICAgICBlbmFibGVkQ2hpcHNbaW5kZXhdLmZvY3VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGVuYWJsZWRDaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICBlbmFibGVkQ2hpcHNbZW5hYmxlZENoaXBzLmxlbmd0aCAtIDFdLmZvY3VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXRFbGVtZW50Py5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdElucHV0RXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX2lucHV0LmVtaXQoKTtcbiAgICB0aGlzLl9jaGFuZ2UuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlQ2hpcEVsZW1lbnQodmFsdWU6IFQgfCBudWxsLCBsYWJlbD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdDaGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2JiLWNoaXAnKSBhcyBTYmJDaGlwRWxlbWVudDxUPjtcbiAgICBuZXdDaGlwLnZhbHVlID0gdmFsdWU7XG4gICAgbmV3Q2hpcC5pbm5lclRleHQgPSBsYWJlbCA/PyAodmFsdWUgPyB0aGlzLmRpc3BsYXlXaXRoPy4odmFsdWUpIDogbnVsbCkgPz8gJyc7XG4gICAgaWYgKFxuICAgICAgaW1wb3J0Lm1ldGEuZW52LkRFViAmJlxuICAgICAgIWRpc3BsYXlXaXRoV2FybmluZ0xvZ2dlZCAmJlxuICAgICAgIWxhYmVsICYmXG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAhdGhpcy5kaXNwbGF5V2l0aFxuICAgICkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgZGlzcGxheVdpdGggaGFzIG5vdCBiZWVuIHNldCB5ZXQgZm9yIHNiYi1jaGlwLWdyb3VwIGFuZCB2YWx1ZSBpcyBhbiBvYmplY3QuXG4gICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIG9iamVjdCB2YWx1ZXMsIHlvdSBuZWVkIHRvIHByb3ZpZGUgZGlzcGxheVdpZHRoIGJlZm9yZVxuICAgICAgICAgc2V0dGluZyBvciBzZWxlY3RpbmcgYW55IHZhbHVlLmAsXG4gICAgICApO1xuICAgICAgZGlzcGxheVdpdGhXYXJuaW5nTG9nZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5pbnNlcnRCZWZvcmUobmV3Q2hpcCwgdGhpcy5faW5wdXRFbGVtZW50ID8/IHRoaXMucXVlcnlTZWxlY3RvcignaW5wdXQnKSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWFjdFRvSW5wdXRDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSB0aGlzLl9pbnB1dEVsZW1lbnQ/LmRpc2FibGVkID8/IGZhbHNlO1xuICAgIHRoaXMuX3Byb3h5U3RhdGVUb0NoaXBzKCk7XG4gIH1cblxuICBwcml2YXRlIF9wcm94eVN0YXRlVG9DaGlwcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGlwRWxlbWVudHMoKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICBjLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmZvcm1EaXNhYmxlZDtcbiAgICAgIGMucmVhZE9ubHkgPSB0aGlzLl9pbnB1dEVsZW1lbnQ/Lmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSA/PyBmYWxzZTtcbiAgICAgIGMubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5oZXJpdFNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2l6ZScsIHRoaXMuY2xvc2VzdCgnc2JiLWZvcm0tZmllbGQnKT8uc2l6ZSA/PyAoaXNMZWFuKCkgPyAncycgOiAnbScpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUlucHV0RGVzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZShcbiAgICAgICdhcmlhLWRlc2NyaXB0aW9uJyxcbiAgICAgIGAke2kxOG5DaGlwR3JvdXBJbnB1dERlc2NyaXB0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke3RoaXMudmFsdWUubGVuZ3RofWAsXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1jaGlwLWdyb3VwXCI+XG4gICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fc2V0dXBDb21wb25lbnR9Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1jaGlwLWdyb3VwJzogU2JiQ2hpcEdyb3VwRWxlbWVudDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudEV2ZW50TWFwIHtcbiAgICBjaGlwSW5wdXRUb2tlbkVuZDogQ3VzdG9tRXZlbnQ8U2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8YW55Pj47XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTYmJDaGlwR3JvdXBFbGVtZW50IiwiX2EiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QkEsSUFBSSwyQkFBMkI7SUE2QnpCLHVCQUFtQixNQUFBOzswQkFEeEIsY0FBYyxnQkFBZ0IsQ0FBQzs7OztBQUNjLE1BQUEsY0FBQSxpQkFDNUMsaUJBQWlCLGlCQUFpQix1QkFBdUIseUJBQXlCLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Ozs7Ozs7O0FBRDVEQSxNQUFBQSx3QkFBQSxtQkFBUSxZQUU3QztBQUFBLElBaUZDLGNBQUE7OztBQXBDQTtBQUlBO0FBbkRJLHlCQUFBLGdDQUFBLGtCQUFBLE1BQUEsMEJBQUEsR0ErQ3lELGtCQUFBLE1BQUEsMkJBQUEsSUFBSTtBQUl2Qix5QkFBQSxrQ0FBQSxrQkFBQSxNQUFBLDhCQUFBLEdBQUEsa0JBQUEsTUFBQSw2QkFBQSxDQUFDLE9BQU8sQ0FBQztBQUczQyxXQUFBLFdBQXdCLGtCQUFBLE1BQUEsZ0NBQUEsR0FBQSxJQUFJLGFBQWEsTUFBTUEscUJBQW9CLE9BQU8sTUFBTTtBQUdoRixXQUFBLFNBQXVCLElBQUksYUFBYSxNQUFNQSxxQkFBb0IsT0FBTyxLQUFLO0FBRzlFLFdBQUEscUJBQXFCLElBQUksYUFDL0IsTUFDQUEscUJBQW9CLE9BQU8saUJBQWlCO0FBTWYsV0FBQSwwQkFBRyxDQUFDLFdBQy9CLElBQUksaUJBQWlCLE1BQU0sS0FBSyxxQkFBc0IsQ0FBQSxJQUN0RDtBQUsrQixXQUFBLDhCQUFHLENBQUMsV0FDbkMsSUFBSSxpQkFBaUIsTUFBTSxLQUFLLGFBQWMsQ0FBQSxJQUM5QztBQUlJLFdBQUEsWUFBWSxJQUFJLHNCQUFzQixJQUFJO0FBSzNDLE9BQUFDLE1BQUEsS0FBQSxxQkFBQSxnQkFBQUEsSUFBQSxXQUFtQixlQUFlLE9BQU8sZUFBZSxDQUFDLE9BQzVELEtBQUssWUFBWSxHQUFHLE1BQTJCO0FBR2pELGlCQUFLLHFCQUFMLDhCQUF3QixXQUFXLENBQUMsT0FBTyxLQUFLLGVBQWUsRUFBRTtBQUFBLElBQUM7QUFBQTtBQUFBLElBN0VwRSxJQUFXLE1BQU0sT0FBMEI7QUFDekMsY0FBUSxTQUFTLENBQUE7QUFDakIsWUFBTSxXQUFXLEtBQUs7QUFJaEIsWUFBQSxXQUFXLENBQUMsR0FBRyxRQUFRO0FBQzdCLGlCQUFXLEtBQUssT0FBTztBQUNqQixZQUFBLFNBQVMsU0FBUyxDQUFDLEdBQUc7QUFDeEIsbUJBQVMsT0FBTyxTQUFTLFFBQVEsQ0FBQyxHQUFHLENBQUM7QUFBQSxRQUFBO0FBQUEsTUFDeEM7QUFFRixlQUFTLFFBQVEsQ0FBQ0MsV0FDaEI7O0FBQUEsZ0JBQUFELE1BQUEsS0FBSyxnQkFDRixLQUFLLENBQUMsTUFBTSxFQUFFLFVBQVVDLE1BQUssTUFEaEMsZ0JBQUFELElBRUk7QUFBQSxPQUFRO0FBS1IsWUFBQSxRQUFRLENBQUMsR0FBRyxLQUFLO0FBQ3ZCLGlCQUFXLEtBQUssVUFBVTtBQUNwQixZQUFBLE1BQU0sU0FBUyxDQUFDLEdBQUc7QUFDckIsZ0JBQU0sT0FBTyxNQUFNLFFBQVEsQ0FBQyxHQUFHLENBQUM7QUFBQSxRQUFBO0FBQUEsTUFDbEM7QUFFRixZQUFNLFFBQVEsQ0FBQyxNQUFNLEtBQUssbUJBQW1CLENBQUMsQ0FBQztBQUFBLElBQUE7QUFBQSxJQUVqRCxJQUFXLFFBQUs7QUFDZCxhQUFPLEtBQUssZ0JBQWdCLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSztBQUFBLElBQUE7QUFBQTtBQUFBLElBS2hELElBQWdCLGNBQWtEO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFsRSxJQUFnQixZQUFrRCxPQUFBO0FBQUEseUJBQUEsK0JBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQUlsRSxJQUFnQixnQkFBb0M7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQXBELElBQWdCLGNBQW9DLE9BQUE7QUFBQSx5QkFBQSxpQ0FBQTtBQUFBLElBQUE7QUFBQSxJQTBDcEMsb0JBQWlCO0FBQy9CLFlBQU0sa0JBQWlCO0FBQ3ZCLFdBQUssZ0JBQWU7QUFBQSxJQUFBO0FBQUEsSUFHSCxXQUFXLG1CQUFpQztBQUM3RCxZQUFNLFdBQVcsaUJBQWlCO0FBR2hDLFVBQUEsa0JBQWtCLElBQUksVUFBVSxLQUNoQyxrQkFBa0IsSUFBSSxjQUFjLEtBQ3BDLGtCQUFrQixJQUFJLFVBQVUsR0FDaEM7QUFDQSxhQUFLLG1CQUFrQjtBQUFBLE1BQUE7QUFBQSxJQUN6QjtBQUFBO0FBQUEsSUFJSyxvQkFBaUI7QUFDdEIsV0FBSyxRQUFRO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFJUix5QkFDTCxPQUNBLFNBQTBCO0FBRTFCLFVBQUksQ0FBQyxPQUFPO0FBQ1YsYUFBSyxRQUFRO0FBQ2I7QUFBQSxNQUFBO0FBR0csV0FBQSxjQUFjLEtBQWlCLEVBQUUsS0FBSyxDQUFDLFVBQVcsS0FBSyxRQUFRLEtBQU07QUFBQSxJQUFBO0FBQUEsSUFHcEUsTUFBTSxjQUFjLFVBQWtCO0FBQ3JDLGFBQUEsUUFBUSxJQUNiLFNBQ0csT0FBTyxLQUFLLElBQUksRUFDaEIsSUFBSSxPQUFPLFVBQ1YsaUJBQWlCLE9BQU8sS0FBSyxNQUFNLE1BQU0sTUFBTSxLQUFNLENBQUEsSUFBSyxLQUFXLENBQ3RFO0FBQUEsSUFBQTtBQUFBLElBSVksZUFBZSxNQUE2QjtBQUM3RCxhQUFPLE1BQU0sZUFBZSxJQUFJLEtBQUssU0FBUyxjQUFjLFNBQVM7QUFBQSxJQUFBO0FBQUEsSUFHcEQsV0FBUTtBQUN6QixZQUFNLFNBQVE7QUFDZCxVQUFJLEtBQUssWUFBWSxLQUFLLE1BQU0sV0FBVyxHQUFHO0FBQzVDLGFBQUssZ0JBQWdCLGdCQUFnQixzQkFBc0IsS0FBSyxVQUFVLE9BQU8sQ0FBQztBQUFBLE1BQUEsT0FDN0U7QUFDTCxhQUFLLG1CQUFtQixjQUFjO0FBQUEsTUFBQTtBQUFBLElBQ3hDO0FBQUE7QUFBQSxJQUlNLGdCQUFhOztBQUNuQixhQUFPLE1BQU0sT0FBS0EsTUFBQSxLQUFLLHFCQUFMLGdCQUFBQSxJQUFBLFdBQTJDLGdCQUFlLEVBQUU7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQUl4RSx1QkFBb0I7O0FBQzFCLGFBQU8sTUFBTSxPQUFLQSxNQUFBLEtBQUsscUJBQUwsZ0JBQUFBLElBQUEsV0FBd0IsZ0NBQStCLEVBQUU7QUFBQSxJQUFBO0FBQUEsSUFHckUsa0JBQWU7O0FBQ2YsWUFBQSxRQUFRLEtBQUssY0FBYyxPQUFPO0FBR3BDLFVBQUEsU0FBUyxVQUFVLEtBQUssZUFBZTtBQUN6QyxTQUFBQSxNQUFBLEtBQUssMEJBQUwsZ0JBQUFBLElBQTRCO0FBQzVCLG1CQUFLLDRCQUFMLG1CQUE4QjtBQUM5QixhQUFLLGdCQUFnQjtBQUVoQixhQUFBLHdCQUF3QixJQUFJO0FBQzVCLGFBQUEsY0FBYyxpQkFBaUIsV0FBVyxDQUFDLE9BQU8sS0FBSyxnQkFBZ0IsRUFBRSxHQUFHO0FBQUEsVUFDL0UsUUFBUSxLQUFLLHNCQUFzQjtBQUFBLFFBQUEsQ0FDcEM7QUFDRCxhQUFLLGNBQWMsaUJBQ2pCLHFCQUNBLENBQUMsVUFBMkQ7O0FBQzFELGVBQUsscUJBQXFCLGlCQUFnQkEsTUFBQSxNQUFNLFdBQU4sZ0JBQUFBLElBQWMsT0FBTyxLQUFLO0FBQUEsUUFBQSxHQUV0RTtBQUFBLFVBQ0UsUUFBUSxLQUFLLHNCQUFzQjtBQUFBLFFBQUEsQ0FDcEM7QUFHRSxtQkFBQSw0QkFBQSxtQkFBeUIsUUFBUSxLQUFLLGVBQWU7QUFBQSxVQUN4RCxZQUFZO0FBQUEsVUFDWixpQkFBaUIsQ0FBQyxZQUFZLFVBQVU7QUFBQSxRQUFBO0FBQUEsTUFDekM7QUFJSCxXQUFLLGFBQVk7QUFDakIsaUJBQUssZ0NBQUwsbUJBQWtDO0FBQzVCLFlBQUEsWUFBWSxLQUFLLFFBQVEsZ0JBQWdCO0FBQy9DLFVBQUksV0FBVztBQUNSLG1CQUFBLGdDQUFBLG1CQUE2QixRQUFRLFdBQVc7QUFBQSxVQUNuRCxZQUFZO0FBQUEsVUFDWixpQkFBaUIsQ0FBQyxNQUFNO0FBQUEsUUFBQTtBQUFBLE1BQ3pCO0FBR0gsV0FBSyxnQkFBZ0IsY0FBYyxLQUFLLE1BQU0sV0FBVyxDQUFDO0FBQzFELFdBQUsscUJBQW9CO0FBQ3pCLFdBQUssd0JBQXVCO0FBQzVCLFdBQUssZ0JBQWU7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFNZCxlQUFlLE9BQW9CO0FBQ3pDLFlBQU0sY0FBYyxNQUFNO0FBQ3RCLFVBQUEsWUFBWSxjQUFjLFlBQVk7QUFDeEM7QUFBQSxNQUFBO0FBSUUsVUFBQSxrQkFBa0IsS0FBSyxHQUFHO0FBQ3RCLGNBQUEsYUFBYSxLQUFLO0FBQ2xCLGNBQUEsT0FBTyxvQkFBb0IsT0FBTyxXQUFXLFFBQVEsV0FBVyxHQUFHLFdBQVcsTUFBTTtBQUMvRSxtQkFBQSxJQUFJLEVBQUU7QUFDakI7QUFBQSxNQUFBO0FBR0YsY0FBUSxNQUFNLEtBQUs7QUFBQSxRQUNqQixLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsY0FBSSxDQUFDLFlBQVksWUFBWSxDQUFDLFlBQVksVUFBVTtBQUNsRCxrQkFBTSxlQUFjO0FBQ3BCLGlCQUFLLFlBQVksV0FBVztBQUFBLFVBQUE7QUFFOUI7QUFBQSxNQUFBO0FBQUEsSUFDSjtBQUFBO0FBQUE7QUFBQTtBQUFBLElBTU0sZ0JBQWdCLE9BQW9CO0FBQzFDLGNBQVEsTUFBTSxLQUFLO0FBQUEsUUFDakIsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNDLGNBQUEsQ0FBQyxLQUFLLGNBQWUsT0FBTztBQUM5QixpQkFBSyxXQUFVO0FBQUEsVUFBQTtBQUVqQjtBQUFBLFFBQ0YsS0FBSztBQUNILGdCQUFNLGVBQWdCO0FBQ3RCO0FBQUEsTUFBQTtBQUlKLFVBQUksS0FBSyxjQUFjLFNBQVMsTUFBTSxHQUFHLEdBQUc7QUFDMUMsY0FBTSxlQUFnQjtBQUN0QixhQUFLLHFCQUFxQixPQUFPO0FBQUEsTUFBQTtBQUFBLElBQ25DO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFNTSxxQkFBcUIsU0FBbUMsU0FBUyxPQUFTOztBQUNoRixZQUFNLGFBQWEsU0FBUyxLQUFLLGNBQWUsTUFBTSxLQUFJO0FBQzFELFVBQUksQ0FBQyxZQUFZO0FBQ2Y7QUFBQSxNQUFBO0FBR0YsWUFBTSxjQUFtRDtBQUFBLFFBQ3ZEO0FBQUEsUUFDQSxPQUFPO0FBQUEsUUFDUCxRQUFRLFNBQVFBLE1BQUEsS0FBSyxnQkFBTCxnQkFBQUEsSUFBQSxXQUFtQixTQUFTLFNBQVM7QUFBQSxRQUNyRCxVQUFVLENBQUNDLFdBQWMsWUFBWSxRQUFRQTtBQUFBQSxRQUM3QyxVQUFVLENBQUMsVUFBbUIsWUFBWSxRQUFRO0FBQUE7QUFHcEQsVUFBSSxDQUFDLEtBQUssbUJBQW1CLEtBQUssV0FBVyxHQUFHO0FBQzlDO0FBQUEsTUFBQTtBQUdGLFdBQUssbUJBQW1CLFlBQVksT0FBWSxZQUFZLEtBQUs7QUFDakUsV0FBSyxjQUFlLFFBQVE7QUFDNUIsV0FBSyxpQkFBZ0I7QUFBQSxJQUFBO0FBQUEsSUFHZixZQUFZLE1BQXVCO0FBQ25DLFlBQUEsUUFBUSxLQUFLO0FBQ25CLFdBQUssT0FBTTtBQUNYLFdBQUssaUJBQWdCO0FBQ3JCLFdBQUssV0FBVyxNQUFNLFFBQVEsSUFBSSxDQUFDO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFPN0IsV0FBVyxPQUFjOztBQUN6QixZQUFBLGVBQWUsS0FBSztBQUUxQixVQUFJLFVBQVUsVUFBYSxhQUFhLEtBQUssR0FBRztBQUNqQyxxQkFBQSxLQUFLLEVBQUU7QUFDcEI7QUFBQSxNQUFBO0FBR0UsVUFBQSxhQUFhLFNBQVMsR0FBRztBQUMzQixxQkFBYSxhQUFhLFNBQVMsQ0FBQyxFQUFFLE1BQUs7QUFDM0M7QUFBQSxNQUFBO0FBR0YsT0FBQUQsTUFBQSxLQUFLLGtCQUFMLGdCQUFBQSxJQUFvQjtBQUFBO0lBR2QsbUJBQWdCO0FBQ3RCLFdBQUssT0FBTztBQUNaLFdBQUssUUFBUTs7SUFHUCxtQkFBbUIsT0FBaUIsT0FBYzs7QUFDeEQsVUFBSSxVQUFVO0FBQ1o7QUFBQSxNQUFBO0FBRUksWUFBQSxVQUFVLFNBQVMsY0FBYyxVQUFVO0FBQ2pELGNBQVEsUUFBUTtBQUNoQixjQUFRLFlBQVksVUFBVSxTQUFRQSxNQUFBLEtBQUssZ0JBQUwsZ0JBQUFBLElBQUEsV0FBbUIsU0FBUyxTQUFTO0FBR3pFLFVBQUEsQ0FBQyw0QkFDRCxDQUFDLFNBQ0QsT0FBTyxVQUFVLFlBQ2pCLENBQUMsS0FBSyxhQUNOO0FBQ0EsZ0JBQVEsS0FDTjtBQUFBO0FBQUEseUNBRWlDO0FBRVIsbUNBQUE7QUFBQSxNQUFBO0FBRTdCLFdBQUssYUFBYSxTQUFTLEtBQUssaUJBQWlCLEtBQUssY0FBYyxPQUFPLENBQUM7QUFBQSxJQUFBO0FBQUEsSUFHdEUsdUJBQW9COztBQUNyQixXQUFBLGFBQVdBLE1BQUEsS0FBSyxrQkFBTCxnQkFBQUEsSUFBb0IsYUFBWTtBQUNoRCxXQUFLLG1CQUFrQjtBQUFBLElBQUE7QUFBQSxJQUdqQixxQkFBa0I7QUFDeEIsV0FBSyxjQUFlLEVBQUMsUUFBUSxDQUFDLE1BQUs7O0FBQy9CLFVBQUEsV0FBVyxLQUFLLFlBQVksS0FBSztBQUNuQyxVQUFFLGFBQVdBLE1BQUEsS0FBSyxrQkFBTCxnQkFBQUEsSUFBb0IsYUFBYSxnQkFBZTtBQUM3RCxVQUFFLFdBQVcsS0FBSztBQUFBLE1BQUEsQ0FDbkI7QUFBQSxJQUFBO0FBQUEsSUFHSyxlQUFZOztBQUNiLFdBQUEsYUFBYSxlQUFhQSxNQUFBLEtBQUssUUFBUSxnQkFBZ0IsTUFBN0IsZ0JBQUFBLElBQWdDLFVBQVMsT0FBQSxJQUFXLE1BQU0sSUFBSTtBQUFBLElBQUE7QUFBQSxJQUd2RiwwQkFBdUI7QUFDekIsVUFBQSxDQUFDLEtBQUssZUFBZTtBQUN2QjtBQUFBLE1BQUE7QUFFRixXQUFLLGNBQWMsYUFDakIsb0JBQ0EsR0FBRyw4QkFBOEIsS0FBSyxVQUFVLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxNQUFNLEVBQUU7QUFBQSxJQUFBO0FBQUEsSUFJaEUsU0FBTTtBQUNoQixhQUFBO0FBQUE7QUFBQSw0QkFFaUIsS0FBSyxlQUFlO0FBQUE7QUFBQTtBQUFBLElBQUE7QUFBQSxLQW5VOUMsK0NBSUE7O0FBdkNDLDRCQUFBLENBQUEsU0FBUyxFQUFFLE1BQU0sTUFBTyxDQUFBLENBQUM7QUFrQ3pCLDhCQUFBLENBQUEsU0FBUyxFQUFFLFdBQVcsTUFBTyxDQUFBLENBQUM7aUNBSTlCLFNBQVMsRUFBRSxXQUFXLGtCQUFrQixNQUFNLE1BQUEsQ0FBTyxDQUFDO0FBckN2RCxpQkFBQSxJQUFBLE1BQUEsdUJBQUEsRUFBQSxNQUFBLFVBQUEsTUFBQSxTQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLFdBQUEsS0FBQSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBVyxRQTJCVjtBQUFBLFNBQUEsVUFBQSxhQUFBLE1BQUEsMEJBQUE7QUFPZSxpQkFBQSxJQUFBLE1BQUEseUJBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxlQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGlCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxhQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLGNBQWtEO0FBQUEsU0FBQSxVQUFBLGFBQUEsMkJBQUEsOEJBQUE7QUFJbEQsaUJBQUEsSUFBQSxNQUFBLDJCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsaUJBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsbUJBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLGVBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUEsZ0JBQW9DO0FBQUEsU0FBQSxVQUFBLGFBQUEsNkJBQUEsZ0NBQUE7QUFuRHRELGlCQXNYQyxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1FBblhpQyxHQUFJLE9BQUcsV0FDaEIsR0FBTSxTQUFtQixPQUN6QixHQUFBLFNBQVM7QUFBQSxJQUM5QixPQUFPO0FBQUEsSUFDUCxRQUFRO0FBQUEsSUFDUixtQkFBbUI7QUFBQSxFQUNYLEdBVE4sa0JBQW1CLFlBQUEsdUJBQUEsR0FBYTs7OyJ9
|
|
361
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jaGlwL2NoaXAtZ3JvdXAvY2hpcC1ncm91cC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaXNBcnJvd0tleVByZXNzZWQgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBpc0xlYW4gfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IGkxOG5DaGlwR3JvdXBJbnB1dERlc2NyaXB0aW9uLCBpMThuU2VsZWN0aW9uUmVxdWlyZWQgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBGb3JtUmVzdG9yZVJlYXNvbixcbiAgdHlwZSBGb3JtUmVzdG9yZVN0YXRlLFxuICBTYmJEaXNhYmxlZE1peGluLFxuICBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4sXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4sXG4gIFNiYk5lZ2F0aXZlTWl4aW4sXG4gIFNiYlJlcXVpcmVkTWl4aW4sXG59IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiT3B0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9vcHRpb24vb3B0aW9uL29wdGlvbi1iYXNlLWVsZW1lbnQuanMnO1xuaW1wb3J0IHsgU2JiQ2hpcEVsZW1lbnQgfSBmcm9tICcuLi9jaGlwLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vY2hpcC1ncm91cC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5sZXQgZGlzcGxheVdpdGhXYXJuaW5nTG9nZ2VkID0gZmFsc2U7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8VCA9IHN0cmluZz4ge1xuICAvKiogVGhlIGVsZW1lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGNoaXAgY3JlYXRpb24gKi9cbiAgb3JpZ2luOiAnaW5wdXQnIHwgJ2F1dG9jb21wbGV0ZSc7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIG5ldyBjaGlwLiBFaXRoZXIgdGhlIGlucHV0IG9yIHRoZSBvcHRpb24gdmFsdWUgZGVwZW5kaW5nIG9uIHRoZSBvcmlnaW4uXG4gICAqIEVpdGhlciB0aGUgdmFsdWUgZnJvbSB0aGUgaW5wdXQgd2hpY2ggaXMgYWx3YXlzIGBzdHJpbmdgIG9yIHRoZSB2YWx1ZSBmcm9tIHRoZSBzZWxlY3RlZCBvcHRpb25cbiAgICogZnJvbSBhbiBhdXRvY29tcGxldGUsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW55IG90aGVyIHR5cGUuXG4gICAqL1xuICB2YWx1ZTogVCB8IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBTZXQgYSBuZXcgdmFsdWUgZm9yIHRoZSBjaGlwIHRoYXQgd2lsbCBiZSBjcmVhdGVkICovXG4gIHNldFZhbHVlKHZhbHVlOiBUKTogdm9pZDtcbiAgLyoqIFNldCBhIGxhYmVsIGZvciB0aGUgY2hpcCB0aGF0IHdpbGwgYmUgY3JlYXRlZCAqL1xuICBzZXRMYWJlbCh2YWx1ZTogc3RyaW5nKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgYHNiYi1jaGlwLWdyb3VwYCBjb21wb25lbnQgaXMgdXNlZCBhcyBhIGNvbnRhaW5lciBmb3Igb25lIG9yIG11bHRpcGxlIGBzYmItY2hpcGAuXG4gKlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gY2hhbmdlIC0gTm90aWZpZXMgdGhhdCB0aGUgY29tcG9uZW50J3MgdmFsdWUgaGFzIGNoYW5nZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBpbnB1dCAtIE5vdGlmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCdzIHZhbHVlIGhhcyBjaGFuZ2VkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDxTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlscz59IGNoaXBJbnB1dFRva2VuRW5kIC0gTm90aWZpZXMgdGhhdCBhIGNoaXAgaXMgYWJvdXQgdG8gYmUgY3JlYXRlZC4gQ2FuIGJlIHVzZWQgdG8gY3VzdG9taXplIHRoZSB2YWx1ZSBhbmQgdGhlIGxhYmVsLiBDYW4gYmUgcHJldmVudGVkLlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1jaGlwYCBlbGVtZW50cy5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSAoVCA9IHN0cmluZ1tdKSB8IG51bGxcbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWNoaXAtZ3JvdXAnKVxuY2xhc3MgU2JiQ2hpcEdyb3VwRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYlJlcXVpcmVkTWl4aW4oXG4gIFNiYkRpc2FibGVkTWl4aW4oU2JiTmVnYXRpdmVNaXhpbihTYmJGb3JtQXNzb2NpYXRlZE1peGluKFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbihMaXRFbGVtZW50KSkpKSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAnbGlzdGJveCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBpbnB1dDogJ2lucHV0JyxcbiAgICBjaGFuZ2U6ICdjaGFuZ2UnLFxuICAgIGNoaXBJbnB1dFRva2VuRW5kOiAnY2hpcElucHV0VG9rZW5FbmQnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBWYWx1ZSBvZiB0aGUgZm9ybSBlbGVtZW50LiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBBcnJheSB9KVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiAoVCB8IG51bGwpW10gfCBudWxsKSB7XG4gICAgdmFsdWUgPSB2YWx1ZSA/PyBbXTtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG5cbiAgICAvLyBTdWJ0cmFjdCBmcm9tICdvbGRWYWx1ZScgdGhlIG5ldyAndmFsdWUnXG4gICAgLy8gVGhlIHJlc3VsdCBhcmUgdGhlIGNoaXBzIHRvIHJlbW92ZSAoaGFuZGxlIGR1cGxpY2F0ZXMpXG4gICAgY29uc3QgdG9SZW1vdmUgPSBbLi4ub2xkVmFsdWVdO1xuICAgIGZvciAoY29uc3QgYyBvZiB2YWx1ZSkge1xuICAgICAgaWYgKHRvUmVtb3ZlLmluY2x1ZGVzKGMpKSB7XG4gICAgICAgIHRvUmVtb3ZlLnNwbGljZSh0b1JlbW92ZS5pbmRleE9mKGMpLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdG9SZW1vdmUuZm9yRWFjaCgodmFsdWUpID0+XG4gICAgICB0aGlzLl9jaGlwRWxlbWVudHMoKVxuICAgICAgICAuZmluZCgoYykgPT4gYy52YWx1ZSA9PT0gdmFsdWUpXG4gICAgICAgID8ucmVtb3ZlKCksXG4gICAgKTtcblxuICAgIC8vIFN1YnRyYWN0IGZyb20gdGhlIG5ldyAndmFsdWUnIHdoYXQgd2FzIGFscmVhZHkgcHJlc2VudFxuICAgIC8vIFRoZSByZXN1bHQgYXJlIHRoZSBuZXcgY2hpcHMgdG8gYWRkIChoYW5kbGUgZHVwbGljYXRlcylcbiAgICBjb25zdCB0b0FkZCA9IFsuLi52YWx1ZV07XG4gICAgZm9yIChjb25zdCBjIG9mIG9sZFZhbHVlKSB7XG4gICAgICBpZiAodG9BZGQuaW5jbHVkZXMoYykpIHtcbiAgICAgICAgdG9BZGQuc3BsaWNlKHRvQWRkLmluZGV4T2YoYyksIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0b0FkZC5mb3JFYWNoKChjKSA9PiB0aGlzLl9jcmVhdGVDaGlwRWxlbWVudChjKSk7XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiAoVCB8IG51bGwpW10ge1xuICAgIHJldHVybiB0aGlzLl9jaGlwRWxlbWVudHMoKS5tYXAoKGMpID0+IGMudmFsdWUpO1xuICB9XG5cbiAgLyoqIEZ1bmN0aW9uIHRoYXQgbWFwcyBhIGNoaXAncyB2YWx1ZSB0byBpdHMgZGlzcGxheSB2YWx1ZS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZGlzcGxheVdpdGg6ICgodmFsdWU6IFQpID0+IHN0cmluZykgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIGFycmF5IG9mIGtleXMgdGhhdCB3aWxsIHRyaWdnZXIgYSBgY2hpcElucHV0VG9rZW5FbmRgIGV2ZW50LiBEZWZhdWx0IGBbJ0VudGVyJ11gICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3NlcGFyYXRvci1rZXlzJywgdHlwZTogQXJyYXkgfSlcbiAgcHVibGljIGFjY2Vzc29yIHNlcGFyYXRvcktleXM6IHN0cmluZ1tdID0gWydFbnRlciddO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBjb21wb25lbnQncyB2YWx1ZSBoYXMgY2hhbmdlZC4gKi9cbiAgcHJpdmF0ZSBfY2hhbmdlOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKHRoaXMsIFNiYkNoaXBHcm91cEVsZW1lbnQuZXZlbnRzLmNoYW5nZSk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCdzIHZhbHVlIGhhcyBjaGFuZ2VkLiAqL1xuICBwcml2YXRlIF9pbnB1dDogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJDaGlwR3JvdXBFbGVtZW50LmV2ZW50cy5pbnB1dCk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgYSBjaGlwIGlzIGFib3V0IHRvIGJlIGNyZWF0ZWQuIENhbiBiZSBwcmV2ZW50ZWQuICovXG4gIHByaXZhdGUgX2NoaXBJbnB1dFRva2VuRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlsczxUPj4oXG4gICAgdGhpcyxcbiAgICBTYmJDaGlwR3JvdXBFbGVtZW50LmV2ZW50cy5jaGlwSW5wdXRUb2tlbkVuZCxcbiAgKTtcblxuICAvKipcbiAgICogTGlzdGVucyB0byB0aGUgY2hhbmdlcyBvbiBgcmVhZG9ubHlgIGFuZCBgZGlzYWJsZWRgIGF0dHJpYnV0ZXMgb2YgYDxpbnB1dD5gLlxuICAgKi9cbiAgcHJpdmF0ZSBfaW5wdXRBdHRyaWJ1dGVPYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gdGhpcy5fcmVhY3RUb0lucHV0Q2hhbmdlcygpKVxuICAgIDogbnVsbDtcblxuICAvKipcbiAgICogTGlzdGVucyB0byB0aGUgJ3NpemUnIGNoYW5nZXMgb24gdGhlIGBzYmItZm9ybS1maWVsZGAuXG4gICAqL1xuICBwcml2YXRlIF9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gdGhpcy5faW5oZXJpdFNpemUoKSlcbiAgICA6IG51bGw7XG5cbiAgcHJpdmF0ZSBfaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9pbnB1dEFib3J0Q29udHJvbGxlcjogQWJvcnRDb250cm9sbGVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LihTYmJDaGlwRWxlbWVudC5ldmVudHMucmVxdWVzdERlbGV0ZSwgKGV2KSA9PlxuICAgICAgdGhpcy5fZGVsZXRlQ2hpcChldi50YXJnZXQgYXMgU2JiQ2hpcEVsZW1lbnQ8VD4pLFxuICAgICk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5ZG93bicsIChldikgPT4gdGhpcy5fb25DaGlwS2V5RG93bihldikpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fc2V0dXBDb21wb25lbnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlcyk6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Zvcm1EaXNhYmxlZCcpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJylcbiAgICApIHtcbiAgICAgIHRoaXMuX3Byb3h5U3RhdGVUb0NoaXBzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgIF9yZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXN0YXRlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkRm9ybURhdGEoc3RhdGUgYXMgRm9ybURhdGEpLnRoZW4oKGFycmF5KSA9PiAodGhpcy52YWx1ZSA9IGFycmF5KSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9yZWFkRm9ybURhdGEoZm9ybURhdGE6IEZvcm1EYXRhKTogUHJvbWlzZTxUW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBmb3JtRGF0YVxuICAgICAgICAuZ2V0QWxsKHRoaXMubmFtZSlcbiAgICAgICAgLm1hcChhc3luYyAoZW50cnkpID0+XG4gICAgICAgICAgZW50cnkgaW5zdGFuY2VvZiBCbG9iID8gSlNPTi5wYXJzZShhd2FpdCBlbnRyeS50ZXh0KCkpIDogKGVudHJ5IGFzIFQpLFxuICAgICAgICApLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVmFsaWRhdGUobmFtZSkgfHwgbmFtZSA9PT0gJ3JlcXVpcmVkJyB8fCBuYW1lID09PSAndmFsdWUnO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlKCk7XG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuc2V0VmFsaWRpdHlGbGFnKCd2YWx1ZU1pc3NpbmcnLCBpMThuU2VsZWN0aW9uUmVxdWlyZWRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbW92ZVZhbGlkaXR5RmxhZygndmFsdWVNaXNzaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJldHVybiB0aGUgbGlzdCBvZiBjaGlwIGVsZW1lbnRzICoqL1xuICBwcml2YXRlIF9jaGlwRWxlbWVudHMoKTogU2JiQ2hpcEVsZW1lbnQ8VD5bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiQ2hpcEVsZW1lbnQ8VD4+KCdzYmItY2hpcCcpID8/IFtdKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gdGhlIGxpc3Qgb2YgZW5hYmxlZCBjaGlwIGVsZW1lbnRzICoqL1xuICBwcml2YXRlIF9lbmFibGVkQ2hpcEVsZW1lbnRzKCk6IFNiYkNoaXBFbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKCdzYmItY2hpcDpub3QoW2Rpc2FibGVkXSknKSA/PyBbXSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cENvbXBvbmVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcblxuICAgIC8vIENvbm5lY3QgdG8gdGhlIGlucHV0XG4gICAgaWYgKGlucHV0ICYmIGlucHV0ICE9PSB0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5faW5wdXRBdHRyaWJ1dGVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50ID0gaW5wdXQ7XG5cbiAgICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXYpID0+IHRoaXMuX29uSW5wdXRLZXlEb3duKGV2KSwge1xuICAgICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdpbnB1dEF1dG9jb21wbGV0ZScsXG4gICAgICAgIChldmVudDogQ3VzdG9tRXZlbnQ8eyBvcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+IH0+KSA9PiB7XG4gICAgICAgICAgdGhpcy5fY3JlYXRlQ2hpcEZyb21JbnB1dCgnYXV0b2NvbXBsZXRlJywgZXZlbnQuZGV0YWlsPy5vcHRpb24udmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICB0aGlzLl9pbnB1dEF0dHJpYnV0ZU9ic2VydmVyPy5vYnNlcnZlKHRoaXMuX2lucHV0RWxlbWVudCwge1xuICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsncmVhZG9ubHknLCAnZGlzYWJsZWQnXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEluaGVyaXQgc2l6ZSBmcm9tIHRoZSBmb3JtLWZpZWxkIGFuZCBvYnNlcnZlIGZvciBjaGFuZ2VzXG4gICAgdGhpcy5faW5oZXJpdFNpemUoKTtcbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIGNvbnN0IGZvcm1GaWVsZCA9IHRoaXMuY2xvc2VzdCgnc2JiLWZvcm0tZmllbGQnKTtcbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlcj8ub2JzZXJ2ZShmb3JtRmllbGQsIHtcbiAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3NpemUnXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWVtcHR5JywgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApO1xuICAgIHRoaXMuX3JlYWN0VG9JbnB1dENoYW5nZXMoKTtcbiAgICB0aGlzLl91cGRhdGVJbnB1dERlc2NyaXB0aW9uKCk7XG4gICAgdGhpcy51cGRhdGVGb3JtVmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gZm9yIGtleWJvYXJkIGV2ZW50cyBvbiB0aGUgY2hpcCBlbGVtZW50c1xuICAgKiovXG4gIHByaXZhdGUgX29uQ2hpcEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudFRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBTYmJDaGlwRWxlbWVudDxUPjtcbiAgICBpZiAoZXZlbnRUYXJnZXQubG9jYWxOYW1lICE9PSAnc2JiLWNoaXAnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQXJyb3cga2V5cyBhbGxvdyBuYXZpZ2F0aW9uIGJldHdlZW4gY2hpcHMgZm9jdXMgc3RlcHNcbiAgICBpZiAoaXNBcnJvd0tleVByZXNzZWQoZXZlbnQpKSB7XG4gICAgICBjb25zdCBmb2N1c1N0ZXBzID0gdGhpcy5fZW5hYmxlZENoaXBFbGVtZW50cygpO1xuICAgICAgY29uc3QgbmV4dCA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZlbnQsIGZvY3VzU3RlcHMuaW5kZXhPZihldmVudFRhcmdldCksIGZvY3VzU3RlcHMubGVuZ3RoKTtcbiAgICAgIGZvY3VzU3RlcHNbbmV4dF0uZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgIGlmICghZXZlbnRUYXJnZXQucmVhZE9ubHkgJiYgIWV2ZW50VGFyZ2V0LmRpc2FibGVkKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLl9kZWxldGVDaGlwKGV2ZW50VGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGZvciBrZXlib2FyZCBldmVudHMgb24gdGhlIGlucHV0XG4gICAqKi9cbiAgcHJpdmF0ZSBfb25JbnB1dEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGlmICghdGhpcy5faW5wdXRFbGVtZW50IS52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuX2ZvY3VzQ2hpcCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBQcmV2ZW50cyB0aGUgZm9ybSBzdWJtaXRcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHVzZXIgdHlwZWQgb25lIG9mIHRoZSBzZXBhcmF0b3Iga2V5cywgdHJpZ2dlciBhIGNoaXBJbnB1dFRva2VuRW5kIGV2ZW50XG4gICAgaWYgKHRoaXMuc2VwYXJhdG9yS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBwcmV2ZW50IHR5cGluZyB0aGUgc2VwYXJhdG9yIGtleSBpbnRvIHRoZSBpbnB1dFxuICAgICAgdGhpcy5fY3JlYXRlQ2hpcEZyb21JbnB1dCgnaW5wdXQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGlucHV0IGlzIG5vdCBlbXB0eSwgY3JlYXRlIGEgY2hpcCB3aXRoIGl0cyB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBfY3JlYXRlQ2hpcEZyb21JbnB1dChvcmlnaW46ICdpbnB1dCcgfCAnYXV0b2NvbXBsZXRlJyA9ICdpbnB1dCcsIHZhbHVlPzogVCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSB2YWx1ZSA/PyB0aGlzLl9pbnB1dEVsZW1lbnQhLnZhbHVlLnRyaW0oKTtcbiAgICBpZiAoIWlucHV0VmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudERldGFpbDogU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8VD4gPSB7XG4gICAgICBvcmlnaW46IG9yaWdpbixcbiAgICAgIHZhbHVlOiBpbnB1dFZhbHVlLFxuICAgICAgbGFiZWw6ICh2YWx1ZSA/IHRoaXMuZGlzcGxheVdpdGg/Lih2YWx1ZSkgOiBudWxsKSA/PyB1bmRlZmluZWQsXG4gICAgICBzZXRWYWx1ZTogKHZhbHVlOiBUKSA9PiAoZXZlbnREZXRhaWwudmFsdWUgPSB2YWx1ZSksXG4gICAgICBzZXRMYWJlbDogKGxhYmVsOiBzdHJpbmcpID0+IChldmVudERldGFpbC5sYWJlbCA9IGxhYmVsKSxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLl9jaGlwSW5wdXRUb2tlbkVuZC5lbWl0KGV2ZW50RGV0YWlsKSkge1xuICAgICAgcmV0dXJuOyAvLyBldmVudCBwcmV2ZW50ZWQ7IGRvIG5vdGhpbmcgKHRoZSBjb25zdW1lciBoYXMgdG8gY3JlYXRlIHRoZSBjaGlwKVxuICAgIH1cblxuICAgIHRoaXMuX2NyZWF0ZUNoaXBFbGVtZW50KGV2ZW50RGV0YWlsLnZhbHVlIGFzIFQsIGV2ZW50RGV0YWlsLmxhYmVsKTtcbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQhLnZhbHVlID0gJyc7IC8vIEVtcHR5IHRoZSBpbnB1dFxuICAgIHRoaXMuX2VtaXRJbnB1dEV2ZW50cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVsZXRlQ2hpcChjaGlwOiBTYmJDaGlwRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGNvbnN0IGNoaXBzID0gdGhpcy5fZW5hYmxlZENoaXBFbGVtZW50cygpO1xuICAgIGNoaXAucmVtb3ZlKCk7XG4gICAgdGhpcy5fZW1pdElucHV0RXZlbnRzKCk7XG4gICAgdGhpcy5fZm9jdXNDaGlwKGNoaXBzLmluZGV4T2YoY2hpcCkpOyAvLyBGb2N1cyB0aGUgbmV4dCBjaGlwXG4gIH1cblxuICAvKipcbiAgICogRm9jdXMgYW4gZW5hYmxlZCBjaGlwLiBJZiBub25lIGFyZSBwcmVzZW50LCBmb2N1cyB0aGUgaW5wdXRcbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgZW5hYmxlZCBjaGlwLiBJZiBudWxsLCBmb2N1cyB0aGUgbGFzdCBvbmUuXG4gICAqL1xuICBwcml2YXRlIF9mb2N1c0NoaXAoaW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkQ2hpcHMgPSB0aGlzLl9lbmFibGVkQ2hpcEVsZW1lbnRzKCk7XG5cbiAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCAmJiBlbmFibGVkQ2hpcHNbaW5kZXhdKSB7XG4gICAgICBlbmFibGVkQ2hpcHNbaW5kZXhdLmZvY3VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGVuYWJsZWRDaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICBlbmFibGVkQ2hpcHNbZW5hYmxlZENoaXBzLmxlbmd0aCAtIDFdLmZvY3VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXRFbGVtZW50Py5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdElucHV0RXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX2lucHV0LmVtaXQoKTtcbiAgICB0aGlzLl9jaGFuZ2UuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlQ2hpcEVsZW1lbnQodmFsdWU6IFQgfCBudWxsLCBsYWJlbD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdDaGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2JiLWNoaXAnKSBhcyBTYmJDaGlwRWxlbWVudDxUPjtcbiAgICBuZXdDaGlwLnZhbHVlID0gdmFsdWU7XG4gICAgbmV3Q2hpcC5pbm5lclRleHQgPSBsYWJlbCA/PyAodmFsdWUgPyB0aGlzLmRpc3BsYXlXaXRoPy4odmFsdWUpIDogbnVsbCkgPz8gJyc7XG4gICAgaWYgKFxuICAgICAgaW1wb3J0Lm1ldGEuZW52LkRFViAmJlxuICAgICAgIWRpc3BsYXlXaXRoV2FybmluZ0xvZ2dlZCAmJlxuICAgICAgIWxhYmVsICYmXG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAhdGhpcy5kaXNwbGF5V2l0aFxuICAgICkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgZGlzcGxheVdpdGggaGFzIG5vdCBiZWVuIHNldCB5ZXQgZm9yIHNiYi1jaGlwLWdyb3VwIGFuZCB2YWx1ZSBpcyBhbiBvYmplY3QuXG4gICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIG9iamVjdCB2YWx1ZXMsIHlvdSBuZWVkIHRvIHByb3ZpZGUgZGlzcGxheVdpZHRoIGJlZm9yZVxuICAgICAgICAgc2V0dGluZyBvciBzZWxlY3RpbmcgYW55IHZhbHVlLmAsXG4gICAgICApO1xuICAgICAgZGlzcGxheVdpdGhXYXJuaW5nTG9nZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5pbnNlcnRCZWZvcmUobmV3Q2hpcCwgdGhpcy5faW5wdXRFbGVtZW50ID8/IHRoaXMucXVlcnlTZWxlY3RvcignaW5wdXQnKSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWFjdFRvSW5wdXRDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSB0aGlzLl9pbnB1dEVsZW1lbnQ/LmRpc2FibGVkID8/IGZhbHNlO1xuICAgIHRoaXMuX3Byb3h5U3RhdGVUb0NoaXBzKCk7XG4gIH1cblxuICBwcml2YXRlIF9wcm94eVN0YXRlVG9DaGlwcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGlwRWxlbWVudHMoKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICBjLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmZvcm1EaXNhYmxlZDtcbiAgICAgIGMucmVhZE9ubHkgPSB0aGlzLl9pbnB1dEVsZW1lbnQ/Lmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSA/PyBmYWxzZTtcbiAgICAgIGMubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5oZXJpdFNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2l6ZScsIHRoaXMuY2xvc2VzdCgnc2JiLWZvcm0tZmllbGQnKT8uc2l6ZSA/PyAoaXNMZWFuKCkgPyAncycgOiAnbScpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUlucHV0RGVzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZShcbiAgICAgICdhcmlhLWRlc2NyaXB0aW9uJyxcbiAgICAgIGAke2kxOG5DaGlwR3JvdXBJbnB1dERlc2NyaXB0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke3RoaXMudmFsdWUubGVuZ3RofWAsXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1jaGlwLWdyb3VwXCI+XG4gICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fc2V0dXBDb21wb25lbnR9Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1jaGlwLWdyb3VwJzogU2JiQ2hpcEdyb3VwRWxlbWVudDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudEV2ZW50TWFwIHtcbiAgICBjaGlwSW5wdXRUb2tlbkVuZDogQ3VzdG9tRXZlbnQ8U2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8YW55Pj47XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTYmJDaGlwR3JvdXBFbGVtZW50IiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkJBLElBQUksMkJBQTJCO0lBNkJ6Qix1QkFBbUIsTUFBQTs7MEJBRHhCLGNBQWMsZ0JBQWdCLENBQUM7Ozs7QUFDYyxNQUFBLGNBQUEsaUJBQzVDLGlCQUFpQixpQkFBaUIsdUJBQXVCLHlCQUF5QixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Ozs7Ozs7OztBQUQ1RCxNQUFBQSx3QkFBQSxtQkFBUSxZQUU3QztBQUFBLElBaUZDLGNBQUE7QUFDRSxZQUFBO0FBckNGO0FBSUE7QUFKZ0IseUJBQUEsZ0NBL0NaLGtCQUFBLE1BQUEsMEJBQUEsR0FBbUIsa0JBQUEsTUFBQSwyQkErQ3NDLElBQUk7QUFJakQseUJBQUEsa0NBQUEsa0JBQUEsTUFBQSw4QkFBQSxHQUFBLGtCQUFBLE1BQUEsNkJBQTBCLENBQUMsT0FBTyxDQUFDO0FBRzNDLFdBQUEsV0FBTyxrQkFBQSxNQUFBLGdDQUFBLEdBQWlCLElBQUksYUFBYSxNQUFNQSxxQkFBb0IsT0FBTyxNQUFNO0FBR2hGLFdBQUEsU0FBdUIsSUFBSSxhQUFhLE1BQU1BLHFCQUFvQixPQUFPLEtBQUs7QUFHOUUsV0FBQSxxQkFBcUIsSUFBSSxhQUMvQixNQUNBQSxxQkFBb0IsT0FBTyxpQkFBaUI7QUFNdEMsV0FBQSwwQkFBMEIsQ0FBQyxXQUMvQixJQUFJLGlCQUFpQixNQUFNLEtBQUsscUJBQUEsQ0FBc0IsSUFDdEQ7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
|
|
@@ -151,4 +151,4 @@ let SbbChipLabelElement = (() => {
|
|
|
151
151
|
export {
|
|
152
152
|
SbbChipLabelElement
|
|
153
153
|
};
|
|
154
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1sYWJlbC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jaGlwLWxhYmVsL2NoaXAtbGFiZWwuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2NoaXAtbGFiZWwuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBicmllZiBhbmQgY29tcGFjdCBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSBgc2JiLWNoaXAtbGFiZWxgLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItY2hpcC1sYWJlbCcpXG5jbGFzcyBTYmJDaGlwTGFiZWxFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBTaXplIG9mIHRoZSBjaGlwLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzaXplOiAneHhzJyB8ICd4cycgfCAncycgPSAneHhzJztcblxuICAvKiogQ29sb3Igb2YgdGhlIGNoaXAuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIGNvbG9yOiAnbWlsaycgfCAnY2hhcmNvYWwnIHwgJ3doaXRlJyB8ICdncmFuaXRlJyA9ICdtaWxrJztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWNoaXAtbGFiZWxcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItY2hpcF9fdGV4dC13cmFwcGVyXCI+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+
|
|
154
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1sYWJlbC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jaGlwLWxhYmVsL2NoaXAtbGFiZWwuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2NoaXAtbGFiZWwuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBicmllZiBhbmQgY29tcGFjdCBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSBgc2JiLWNoaXAtbGFiZWxgLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItY2hpcC1sYWJlbCcpXG5jbGFzcyBTYmJDaGlwTGFiZWxFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBTaXplIG9mIHRoZSBjaGlwLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzaXplOiAneHhzJyB8ICd4cycgfCAncycgPSAneHhzJztcblxuICAvKiogQ29sb3Igb2YgdGhlIGNoaXAuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIGNvbG9yOiAnbWlsaycgfCAnY2hhcmNvYWwnIHwgJ3doaXRlJyB8ICdncmFuaXRlJyA9ICdtaWxrJztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWNoaXAtbGFiZWxcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItY2hpcF9fdGV4dC13cmFwcGVyXCI+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWNoaXAtbGFiZWwnOiBTYmJDaGlwTGFiZWxFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWFNLHVCQUFtQixNQUFBOzswQkFEeEIsY0FBYyxnQkFBZ0IsQ0FBQzs7OztvQkFDRTs7Ozs7OztBQUFSLEVBQUEsbUJBQVEsWUFBVTtBQUFBOztBQUsxQyxpREFBQSxrQkFBQSxNQUFBLG9CQUEyQyxLQUFLO0FBSWhELG1EQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLHFCQUFtRSxNQUFNOzs7O0lBSnpFLElBQWdCLE9BQUk7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQXBCLElBQWdCLEtBQUksT0FBQTtBQUFBLHlCQUFBLHdCQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFJcEIsSUFBZ0IsUUFBSztBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBckIsSUFBZ0IsTUFBSyxPQUFBO0FBQUEseUJBQUEseUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFFRixTQUFNO0FBQ3ZCLGFBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBO0FBQUEsS0FQVCx3Q0FJQTs7QUFMQyx1QkFBQSxDQUFBLFNBQVMsRUFBRSxTQUFTLEtBQUEsQ0FBTSxDQUFDO0FBSTNCLHdCQUFBLENBQUEsU0FBUyxFQUFFLFNBQVMsS0FBQSxDQUFNLENBQUM7QUFINUIsaUJBQUEsSUFBQSxNQUFBLGtCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsUUFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxVQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBZ0IsTUFBSSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBSixPQUFJO0FBQUEsSUFBQSxLQUFBLFVBQUEsYUFBQSxvQkFBQSx1QkFBQTtBQUlwQixpQkFBQSxJQUFBLE1BQUEsbUJBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxTQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLFdBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFnQixPQUFLLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFMLFFBQUs7QUFBQSxJQUFBLEtBQUEsVUFBQSxhQUFBLHFCQUFBLHdCQUFBO0FBVHZCLGlCQUFBLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUFDeUIsR0FBQSxTQUF5QixPQUQ1QyxrQkFBQSxZQUFBLHVCQUFBLEdBQW9COzs7In0=
|
|
@@ -214,27 +214,24 @@ let SbbClockElement = (() => {
|
|
|
214
214
|
}
|
|
215
215
|
/** Starts the clock by defining the hands starting position then starting the animations. */
|
|
216
216
|
async _startClock() {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
(_b = this._clockHandSeconds) == null ? void 0 : _b.addEventListener("animationend", this._moveMinutesHandFn, ADD_EVENT_LISTENER_OPTIONS);
|
|
217
|
+
this._clockHandHours?.addEventListener("animationend", this._moveHoursHandFn, ADD_EVENT_LISTENER_OPTIONS);
|
|
218
|
+
this._clockHandSeconds?.addEventListener("animationend", this._moveMinutesHandFn, ADD_EVENT_LISTENER_OPTIONS);
|
|
220
219
|
await new Promise((resolve) => setTimeout(() => {
|
|
221
|
-
var _a3;
|
|
222
220
|
this._setHandsStartingPosition();
|
|
223
|
-
|
|
221
|
+
this.style?.setProperty("--sbb-clock-animation-play-state", "running");
|
|
224
222
|
this._state = "running";
|
|
225
223
|
resolve();
|
|
226
224
|
}, INITIAL_TIMEOUT_DURATION));
|
|
227
225
|
}
|
|
228
226
|
/** Stops the clock by removing all the animations. */
|
|
229
227
|
async _stopClock() {
|
|
230
|
-
var _a2, _b, _c, _d;
|
|
231
228
|
clearInterval(this._handMovement);
|
|
232
229
|
this._removeSecondsAnimationStyles();
|
|
233
230
|
this._removeHoursAnimationStyles();
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
231
|
+
this._clockHandHours?.removeEventListener("animationend", this._moveHoursHandFn);
|
|
232
|
+
this._clockHandSeconds?.removeEventListener("animationend", this._moveMinutesHandFn);
|
|
233
|
+
this._clockHandMinutes?.classList.add("sbb-clock__hand-minutes--no-transition");
|
|
234
|
+
this.style?.setProperty("--sbb-clock-animation-play-state", "paused");
|
|
238
235
|
this._state = "paused";
|
|
239
236
|
}
|
|
240
237
|
/**
|
|
@@ -249,7 +246,6 @@ let SbbClockElement = (() => {
|
|
|
249
246
|
}
|
|
250
247
|
/** Set the starting position for the three hands on the clock face. */
|
|
251
248
|
_setHandsStartingPosition() {
|
|
252
|
-
var _a2, _b, _c, _d, _e, _f;
|
|
253
249
|
this._assignCurrentTime();
|
|
254
250
|
const remainingSeconds = TOTAL_SECONDS_ON_CLOCK_FACE - this._seconds;
|
|
255
251
|
const remainingMinutes = TOTAL_MINUTES_ON_CLOCK_FACE - this._minutes;
|
|
@@ -267,13 +263,13 @@ let SbbClockElement = (() => {
|
|
|
267
263
|
if (remainingHours > 0) {
|
|
268
264
|
hoursAnimationDuration += (remainingHours - hasRemainingMinutesOrSeconds) * SECONDS_IN_AN_HOUR;
|
|
269
265
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
266
|
+
this.style?.setProperty("--sbb-clock-hours-animation-start-angle", `${Math.ceil(this._hours * HOURS_ANGLE + this._minutes / 2)}deg`);
|
|
267
|
+
this.style?.setProperty("--sbb-clock-hours-animation-duration", `${hoursAnimationDuration}s`);
|
|
268
|
+
this.style?.setProperty("--sbb-clock-seconds-animation-start-angle", `${Math.ceil(this._seconds * SBB_SECONDS_ANGLE)}deg`);
|
|
269
|
+
this.style?.setProperty("--sbb-clock-seconds-animation-duration", `${remainingSeconds}s`);
|
|
274
270
|
this._setMinutesHand();
|
|
275
|
-
|
|
276
|
-
|
|
271
|
+
this._clockHandSeconds?.classList.add("sbb-clock__hand-seconds--initial-minute");
|
|
272
|
+
this._clockHandHours?.classList.add("sbb-clock__hand-hours--initial-hour");
|
|
277
273
|
this.toggleAttribute("data-initialized", true);
|
|
278
274
|
}
|
|
279
275
|
/** Given the current date, calculates the hh/mm/ss values and the hh/mm/ss left to the next midnight. */
|
|
@@ -286,23 +282,20 @@ let SbbClockElement = (() => {
|
|
|
286
282
|
}
|
|
287
283
|
/** Set the starting position for the minutes hand. */
|
|
288
284
|
_setMinutesHand() {
|
|
289
|
-
|
|
290
|
-
(_a2 = this._clockHandMinutes) == null ? void 0 : _a2.style.setProperty("transform", `rotateZ(${Math.ceil(this._minutes * MINUTES_ANGLE)}deg)`);
|
|
285
|
+
this._clockHandMinutes?.style.setProperty("transform", `rotateZ(${Math.ceil(this._minutes * MINUTES_ANGLE)}deg)`);
|
|
291
286
|
}
|
|
292
287
|
/** Move the hours hand to the next value. */
|
|
293
288
|
_moveHoursHand() {
|
|
294
|
-
var _a2;
|
|
295
289
|
this._removeHoursAnimationStyles();
|
|
296
290
|
let hoursAngle = Math.ceil(this._hours * HOURS_ANGLE + this._minutes / 2);
|
|
297
291
|
if (hoursAngle >= FULL_ANGLE) {
|
|
298
292
|
hoursAngle -= FULL_ANGLE;
|
|
299
293
|
}
|
|
300
|
-
|
|
294
|
+
this._clockHandHours?.style.setProperty("transform", `rotateZ(${hoursAngle}deg)`);
|
|
301
295
|
}
|
|
302
296
|
/** Move the minutes hand to the next value. */
|
|
303
297
|
_moveMinutesHand() {
|
|
304
|
-
|
|
305
|
-
(_a2 = this._clockHandSeconds) == null ? void 0 : _a2.removeEventListener("animationend", this._moveMinutesHandFn);
|
|
298
|
+
this._clockHandSeconds?.removeEventListener("animationend", this._moveMinutesHandFn);
|
|
306
299
|
this._removeSecondsAnimationStyles();
|
|
307
300
|
this._addMinutesAndSetHands();
|
|
308
301
|
this._handMovement = setInterval(() => this._addMinutesAndSetHands(), TOTAL_SECONDS_ON_CLOCK_FACE * 1e3);
|
|
@@ -325,22 +318,19 @@ let SbbClockElement = (() => {
|
|
|
325
318
|
this._clockHandSeconds.style.removeProperty("animation");
|
|
326
319
|
}
|
|
327
320
|
_removeEventListeners() {
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
(_b = this._clockHandSeconds) == null ? void 0 : _b.removeEventListener("animationend", this._moveMinutesHandFn);
|
|
321
|
+
document?.removeEventListener("visibilitychange", this._handlePageVisibilityChange);
|
|
322
|
+
this._clockHandHours?.removeEventListener("animationend", this._moveHoursHandFn);
|
|
323
|
+
this._clockHandSeconds?.removeEventListener("animationend", this._moveMinutesHandFn);
|
|
332
324
|
clearInterval(this._handMovement);
|
|
333
325
|
}
|
|
334
326
|
_removeHoursAnimationStyles() {
|
|
335
|
-
|
|
336
|
-
(_a2 = this._clockHandHours) == null ? void 0 : _a2.classList.remove("sbb-clock__hand-hours--initial-hour");
|
|
327
|
+
this._clockHandHours?.classList.remove("sbb-clock__hand-hours--initial-hour");
|
|
337
328
|
this.style.removeProperty("--sbb-clock-hours-animation-start-angle");
|
|
338
329
|
this.style.removeProperty("--sbb-clock-hours-animation-duration");
|
|
339
330
|
}
|
|
340
331
|
_removeSecondsAnimationStyles() {
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
(_b = this._clockHandMinutes) == null ? void 0 : _b.classList.remove("sbb-clock__hand-minutes--no-transition");
|
|
332
|
+
this._clockHandSeconds?.classList.remove("sbb-clock__hand-seconds--initial-minute");
|
|
333
|
+
this._clockHandMinutes?.classList.remove("sbb-clock__hand-minutes--no-transition");
|
|
344
334
|
this.style.removeProperty("--sbb-clock-seconds-animation-start-angle");
|
|
345
335
|
this.style.removeProperty("--sbb-clock-seconds-animation-duration");
|
|
346
336
|
}
|
|
@@ -387,4 +377,4 @@ let SbbClockElement = (() => {
|
|
|
387
377
|
export {
|
|
388
378
|
SbbClockElement
|
|
389
379
|
};
|
|
390
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2suY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19mYWNlLnN2Zz9yYXciLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19ob3Vycy5zdmc/cmF3IiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Nsb2NrL2Fzc2V0cy9zYmJfY2xvY2tfbWludXRlcy5zdmc/cmF3IiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Nsb2NrL2Fzc2V0cy9zYmJfY2xvY2tfc2Vjb25kcy5zdmc/cmF3IiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Nsb2NrL2Nsb2NrLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZm9jdXNhYmxlPVxcXCJmYWxzZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTA1IDEwNVxcXCI+PGcgY2xhc3M9XFxcImZhY2VcXFwiPjxjaXJjbGUgZmlsbD1cXFwiI0ZGRlxcXCIgY3g9XFxcIjUyLjVcXFwiIGN5PVxcXCI1Mi41XFxcIiByPVxcXCI1Mi41XFxcIi8+PHBhdGggZD1cXFwiTTUwLjc1IDRoMy41djEyaC0zLjV6TTUwLjc1IDg5aDMuNXYxMmgtMy41ek03NS4yMzMgOS42MjNsMy4wMyAxLjc1LTYgMTAuMzkyLTMuMDMtMS43NXpNMzIuNzM0IDgzLjIzM2wzLjAzIDEuNzUtNiAxMC4zOTItMy4wMy0xLjc1ek05My42MjggMjYuNzMybDEuNzUgMy4wMzEtMTAuMzkyIDYtMS43NS0zLjAzek0yMC4wMTcgNjkuMjM0bDEuNzUgMy4wMzEtMTAuMzkyIDYtMS43NS0zLjAzek0xMDEgNTAuNzV2My41SDg5di0zLjV6TTE2IDUwLjc1djMuNUg0di0zLjV6TTk1LjM3OSA3NS4yMzJsLTEuNzUgMy4wMzEtMTAuMzkyLTYgMS43NS0zLjAzek0yMS43NjYgMzIuNzM0bC0xLjc1IDMuMDMxLTEwLjM5Mi02IDEuNzUtMy4wM3pNNzguMjY3IDkzLjYzbC0zLjAzIDEuNzUtNi0xMC4zOTMgMy4wMy0xLjc1ek0zNS43NjYgMjAuMDE1bC0zLjAzIDEuNzUtNi0xMC4zOTIgMy4wMy0xLjc1elxcXCIvPjxnPjxwYXRoIGQ9XFxcIk01Ni44NzMgNC4xOWwxLjM5Mi4xNDctLjM2NiAzLjQ4LTEuMzkyLS4xNDV6TTQ3LjEwMSA5Ny4xNzdsMS4zOTMuMTQ2LS4zNjYgMy40ODEtMS4zOTItLjE0NnpNNjEuODk2IDQuOTE0bDEuMzcuMjktLjcyOCAzLjQyNC0xLjM3LS4yOXpNNDIuNDU4IDk2LjM2NmwxLjM3LjI5LS43MjggMy40MjQtMS4zNy0uMjkxek02Ni44MjUgNi4xNTdsMS4zMzIuNDMyLTEuMDgyIDMuMzMtMS4zMzEtLjQzNHpNMzcuOTMxIDk1LjA4NWwxLjMzMi40MzItMS4wODIgMy4zMy0xLjMzMS0uNDMzek03MS41ODQgNy45MDZsMS4yOC41NjktMS40MjQgMy4xOTctMS4yOC0uNTd6TTMzLjU2IDkzLjMybDEuMjc4LjU2OS0xLjQyMyAzLjE5Ny0xLjI4LS41N3pNODAuNDQgMTIuODUybDEuMTMzLjgyMy0yLjA1OCAyLjgzMS0xLjEzMi0uODIzek0yNS40ODEgODguNDk0bDEuMTMzLjgyMi0yLjA1NyAyLjgzMi0xLjEzMy0uODIzek04NC40MyAxNS45ODZsMS4wNC45MzctMi4zNDIgMi42LTEuMDQtLjkzNnpNMjEuODcgODUuNDY5bDEuMDQuOTM2LTIuMzQxIDIuNjAxLTEuMDQtLjkzN3pNODguMDcyIDE5LjUyMmwuOTM3IDEuMDQtMi42IDIuMzQzLS45MzctMS4wNHpNMTguNTkzIDgyLjA4OGwuOTM3IDEuMDQtMi42MDEgMi4zNDItLjkzNy0xLjA0ek05MS4zMjggMjMuNDI1bC44MjMgMS4xMzMtMi44MzIgMi4wNTctLjgyMy0xLjEzMnpNMTUuNjg0IDc4LjM4NWwuODIzIDEuMTMyLTIuODMyIDIuMDU4LS44MjItMS4xMzN6TTk2LjUyIDMyLjEyOGwuNTcgMS4yNzktMy4xOTggMS40MjMtLjU3LTEuMjc4ek0xMS4xMDkgNzAuMTYxbC41NjkgMS4yNzktMy4xOTcgMS40MjMtLjU3LTEuMjc5ek05OC40MDcgMzYuODVsLjQzMyAxLjMzMi0zLjMzIDEuMDgxLS40MzItMS4zMzF6TTkuNDgzIDY1Ljc0bC40MzIgMS4zMy0zLjMyOSAxLjA4Mi0uNDMyLTEuMzMxek05OS43OTUgNDEuNzI2bC4yOTEgMS4zNy0zLjQyMy43MjctLjI5LTEuMzd6TTguMzQgNjEuMTdsLjI5MiAxLjM3LTMuNDI0LjcyOC0uMjktMS4zN3pNMTAwLjY2IDQ2LjczbC4xNDYgMS4zOTMtMy40OC4zNjYtLjE0Ny0xLjM5MnpNNy42NzQgNTYuNTA2bC4xNDYgMS4zOTItMy40OC4zNjYtLjE0Ny0xLjM5MnpNMTAwLjgxMSA1Ni44NzNsLS4xNDYgMS4zOTItMy40OC0uMzY1LjE0NS0xLjM5M3pNNy44MjEgNDcuMTAxbC0uMTQ2IDEuMzkyLTMuNDgtLjM2NS4xNDUtMS4zOTN6TTEwMC4wOSA2MS44OTVsLS4yOTEgMS4zNjktMy40MjQtLjcyOC4yOTEtMS4zNjl6TTguNjMxIDQyLjQ2bC0uMjkxIDEuMzctMy40MjMtLjcyOC4yOS0xLjM3ek05OC44NCA2Ni44MjdsLS40MzIgMS4zMzEtMy4zMjktMS4wODEuNDMzLTEuMzMyek05LjkxOCAzNy45M2wtLjQzMyAxLjMzMS0zLjMyOS0xLjA4Mi40MzMtMS4zMzF6TTk3LjA5OCA3MS41ODVsLS41NjkgMS4yOC0zLjE5Ny0xLjQyNC41Ny0xLjI4ek0xMS42NzcgMzMuNTU4bC0uNTcgMS4yOC0zLjE5Ny0xLjQyNC41Ny0xLjI3OXpNOTIuMTQ5IDgwLjQzOWwtLjgyMyAxLjEzMy0yLjgzMi0yLjA1OC44MjMtMS4xMzJ6TTE2LjUwNiAyNS40ODJsLS44MjMgMS4xMzMtMi44MzEtMi4wNTcuODIzLTEuMTMzek04OS4wMTcgODQuNDMxbC0uOTM3IDEuMDQtMi42LTIuMzQxLjkzNi0xLjA0ek0xOS41MjggMjEuODY5bC0uOTM2IDEuMDQtMi42MDEtMi4zNDIuOTM2LTEuMDR6TTg1LjQ4IDg4LjA3NmwtMS4wNDEuOTM2LTIuMzQyLTIuNiAxLjA0LS45Mzd6TTIyLjkxIDE4LjU5bC0xLjA0LjkzNy0yLjM0MS0yLjYwMSAxLjA0LS45Mzd6TTgxLjU3NCA5MS4zMjhsLTEuMTMzLjgyMy0yLjA1Ny0yLjgzMSAxLjEzMi0uODIzek0yNi42MTcgMTUuNjg0bC0xLjEzMy44MjMtMi4wNTctMi44MzIgMS4xMzItLjgyM3pNNzIuODczIDk2LjUyNGwtMS4yNzkuNTctMS40MjMtMy4xOTggMS4yNzgtLjU3ek0zNC44MzggMTEuMTA1bC0xLjI3OS41Ny0xLjQyMy0zLjE5OCAxLjI3OS0uNTd6TTY4LjE1MSA5OC40MDVsLTEuMzMxLjQzMi0xLjA4Mi0zLjMyOSAxLjMzMi0uNDMyek0zOS4yNTkgOS40ODVsLTEuMzMyLjQzMy0xLjA4MS0zLjMzIDEuMzMxLS40MzJ6TTYzLjI3MiA5OS43OTlsLTEuMzY5LjI5LS43MjgtMy40MjIgMS4zNy0uMjkxek00My44MyA4LjMzN2wtMS4zNjkuMjkxLS43MjctMy40MjMgMS4zNy0uMjkxek01OC4yNyAxMDAuNjYybC0xLjM5My4xNDYtLjM2Ni0zLjQ4IDEuMzkzLS4xNDd6TTQ4LjQ5NCA3LjY3MmwtMS4zOTIuMTQ3LS4zNjYtMy40ODEgMS4zOTItLjE0N3pcXFwiLz48L2c+PC9nPjwvc3ZnPlxcblwiIiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwNSAxMDVcXFwiPjxwYXRoIGlkPVxcXCJtb2RfY2xvY2tfc3ZnX2hvdXJzXFxcIiBkPVxcXCJNNTUuNyA2NC41aC02LjRsLjYtNDRoNS4yelxcXCIvPjwvc3ZnPlxcblwiIiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwNSAxMDVcXFwiPjxwYXRoIGQ9XFxcIk01NS4xLDY0LjVoLTUuMmwwLjgtNThoMy42TDU1LjEsNjQuNXpcXFwiLz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBkPVxcXCJNNTcuOCwyMS4zYzAtMi45LTIuNC01LjItNS4yLTUuMnMtNS4zLDIuMy01LjMsNS4yYzAsMi43LDIsNC44LDQuNSw1LjJWNjloMS41VjI2LjVDNTUuOCwyNi4yLDU3LjgsMjQsNTcuOCwyMS4zelxcXCIvPjwvc3ZnPlxcblwiIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIGlzU2VydmVyLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJUaW1lIH0gZnJvbSAnLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcblxuaW1wb3J0IGNsb2NrRmFjZVNWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfZmFjZS5zdmc/cmF3JztcbmltcG9ydCBjbG9ja0hhbmRsZUhvdXJzU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19ob3Vycy5zdmc/cmF3JztcbmltcG9ydCBjbG9ja0hhbmRsZU1pbnV0ZXNTVkcgZnJvbSAnLi9hc3NldHMvc2JiX2Nsb2NrX21pbnV0ZXMuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVTZWNvbmRzU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19zZWNvbmRzLnN2Zz9yYXcnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vY2xvY2suc2Nzcz9saXQmaW5saW5lJztcblxuLyoqIE51bWJlciBvZiBob3VycyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbmNvbnN0IFRPVEFMX0hPVVJTX09OX0NMT0NLX0ZBQ0UgPSAxMjtcblxuLyoqIE51bWJlciBvZiBtaW51dGVzIG9uIHRoZSBjbG9jayBmYWNlLiAqL1xuY29uc3QgVE9UQUxfTUlOVVRFU19PTl9DTE9DS19GQUNFID0gNjA7XG5cbi8qKiBOdW1iZXIgb2Ygc2Vjb25kcyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbmNvbnN0IFRPVEFMX1NFQ09ORFNfT05fQ0xPQ0tfRkFDRSA9IDYwO1xuXG4vKiogVGltZW91dCBmb3IgdGhlIGNsb2NrIHN0YXJ0LiAqL1xuY29uc3QgSU5JVElBTF9USU1FT1VUX0RVUkFUSU9OID0gNTA7XG5cbi8qKiBBbmdsZSBpbiBhIHNpbmdsZSByb3RhdGlvbi4gKi9cbmNvbnN0IEZVTExfQU5HTEUgPSAzNjA7XG5cbi8qKiBBbmdsZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBob3VyczogMzYwLzEyLCBtZWFucyBhIGZ1bGwgcm90YXRpb24gLyBudW1iZXIgb2YgaG91cnMgaW4gYSByb3RhdGlvbi4gKi9cbmNvbnN0IEhPVVJTX0FOR0xFID0gMzA7XG5cbi8qKiBBbmdsZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBtaW51dGVzOiAzNjAvNjAsIG1lYW5zIGEgZnVsbCByb3RhdGlvbiAvIG51bWJlciBvZiBtaW51dGVzIGluIG9uZSBob3VyLiAqL1xuY29uc3QgTUlOVVRFU19BTkdMRSA9IDY7XG5cbi8qKiBBbmdsZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBzZWNvbmRzIGZvciBTQkIgY2xvY2sgY3VzdG9tIGJlaGF2aW9yLiAqL1xuY29uc3QgU0JCX1NFQ09ORFNfQU5HTEUgPSAzNjAgLyA1OC41O1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgaW4gYSBtaW51dGUuICovXG5jb25zdCBTRUNPTkRTX0lOX0FfTUlOVVRFID0gNjA7XG5cbi8qKiBOdW1iZXIgb2Ygc2Vjb25kcyBpbiBhbiBob3VyLiAqL1xuY29uc3QgU0VDT05EU19JTl9BTl9IT1VSID0gMzYwMDtcblxuLyoqIEFzIGEgZmFsbGJhY2sgbWVhc3VyZSwgcmVzZXQgdGhlIGNsb2NrIGV2ZXJ5IGhhbGYgYW4gaG91ciAqL1xuY29uc3QgUkVTRVRfSU5URVJWQUwgPSBTRUNPTkRTX0lOX0FOX0hPVVIgLyAyO1xuXG5jb25zdCBBRERfRVZFTlRfTElTVEVORVJfT1BUSU9OUzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gIG9uY2U6IHRydWUsXG4gIHBhc3NpdmU6IHRydWUsXG59O1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGFuIGFuYWxvZyBjbG9jayB3aXRoIHRoZSBjbGFzc2ljIFNCQiBmYWNlLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItY2xvY2snKVxuY2xhc3MgU2JiQ2xvY2tFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgYSBzcGVjaWZpYyB0aW1lIHdoaWNoIHRoZSBjbG9jayBzaG91bGQgc2hvdyBzdGF0aWNhbGx5LlxuICAgKiBAcGFyYW0gdmFsdWUgSEg6TU06c3NcbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBub3c6IFNiYlRpbWUgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciB0aGUgY2xvY2sgaXMgdGlja2luZyBvciBub3QgKi9cbiAgcHJpdmF0ZSBfc3RhdGU6ICdydW5uaW5nJyB8ICdwYXVzZWQnID0gJ3BhdXNlZCc7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgaG91ciBoYW5kLiAqL1xuICBwcml2YXRlIF9jbG9ja0hhbmRIb3VycyE6IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIG1pbnV0ZSBoYW5kLiAqL1xuICBwcml2YXRlIF9jbG9ja0hhbmRNaW51dGVzITogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2Vjb25kIGhhbmQuICovXG4gIHByaXZhdGUgX2Nsb2NrSGFuZFNlY29uZHMhOiBIVE1MRWxlbWVudDtcblxuICAvKiogSG91cnMgdmFsdWUgZm9yIHRoZSBjdXJyZW50IGRhdGUuICovXG4gIHByaXZhdGUgX2hvdXJzITogbnVtYmVyO1xuXG4gIC8qKiBNaW51dGVzIHZhbHVlIGZvciB0aGUgY3VycmVudCBkYXRlLiAqL1xuICBwcml2YXRlIF9taW51dGVzITogbnVtYmVyO1xuXG4gIC8qKiBTZWNvbmRzIHZhbHVlIGZvciB0aGUgY3VycmVudCBkYXRlLiAqL1xuICBwcml2YXRlIF9zZWNvbmRzITogbnVtYmVyO1xuXG4gIC8qKiBNb3ZlIHRoZSBtaW51dGVzIGhhbmQgZXZlcnkgbWludXRlLiAqL1xuICBwcml2YXRlIF9oYW5kTW92ZW1lbnQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG5cbiAgcHJpdmF0ZSBfcmVzZXRJbnRlcnZhbElkPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgaG91cnMgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfbW92ZUhvdXJzSGFuZEZuID0gKCk6IHZvaWQgPT4gdGhpcy5fbW92ZUhvdXJzSGFuZCgpO1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgbWludXRlcyBoYW5kLiAqL1xuICBwcml2YXRlIF9tb3ZlTWludXRlc0hhbmRGbiA9ICgpOiB2b2lkID0+IHRoaXMuX21vdmVNaW51dGVzSGFuZCgpO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgdGhpcy5fcmVzZXRJbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5fcmVzZXRDbG9jaygpLCBSRVNFVF9JTlRFUlZBTCAqIDEwMDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIWlzU2VydmVyICYmIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbm93JykpIHtcbiAgICAgIHRoaXMuX3N0YXJ0T3JDb25maWd1cmVDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCB0aGlzLl9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSwgZmFsc2UpO1xuICAgICAgdGhpcy5fc3RhcnRPckNvbmZpZ3VyZUNsb2NrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX3Jlc2V0SW50ZXJ2YWxJZCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAodGhpcy5ub3cpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAnaGlkZGVuJykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuX3N0YXJ0Q2xvY2soKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBhc3luYyBfc3RhcnRPckNvbmZpZ3VyZUNsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm5vdykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgICB0aGlzLl9yZXNldFNlY29uZHNIYW5kQW5pbWF0aW9uKCk7XG4gICAgICB0aGlzLl9zZXRIYW5kc1N0YXJ0aW5nUG9zaXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5fc3RhcnRDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTdGFydHMgdGhlIGNsb2NrIGJ5IGRlZmluaW5nIHRoZSBoYW5kcyBzdGFydGluZyBwb3NpdGlvbiB0aGVuIHN0YXJ0aW5nIHRoZSBhbmltYXRpb25zLiAqL1xuICBwcml2YXRlIGFzeW5jIF9zdGFydENsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2FuaW1hdGlvbmVuZCcsXG4gICAgICB0aGlzLl9tb3ZlSG91cnNIYW5kRm4sXG4gICAgICBBRERfRVZFTlRfTElTVEVORVJfT1BUSU9OUyxcbiAgICApO1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnYW5pbWF0aW9uZW5kJyxcbiAgICAgIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuLFxuICAgICAgQUREX0VWRU5UX0xJU1RFTkVSX09QVElPTlMsXG4gICAgKTtcblxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldEhhbmRzU3RhcnRpbmdQb3NpdGlvbigpO1xuXG4gICAgICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1hbmltYXRpb24tcGxheS1zdGF0ZScsICdydW5uaW5nJyk7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gJ3J1bm5pbmcnO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9LCBJTklUSUFMX1RJTUVPVVRfRFVSQVRJT04pLFxuICAgICk7XG4gIH1cblxuICAvKiogU3RvcHMgdGhlIGNsb2NrIGJ5IHJlbW92aW5nIGFsbCB0aGUgYW5pbWF0aW9ucy4gKi9cbiAgcHJpdmF0ZSBhc3luYyBfc3RvcENsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faGFuZE1vdmVtZW50KTtcblxuICAgIHRoaXMuX3JlbW92ZVNlY29uZHNBbmltYXRpb25TdHlsZXMoKTtcbiAgICB0aGlzLl9yZW1vdmVIb3Vyc0FuaW1hdGlvblN0eWxlcygpO1xuXG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVIb3Vyc0hhbmRGbik7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4pO1xuXG4gICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcz8uY2xhc3NMaXN0LmFkZCgnc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb24nKTtcblxuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1hbmltYXRpb24tcGxheS1zdGF0ZScsICdwYXVzZWQnKTtcbiAgICB0aGlzLl9zdGF0ZSA9ICdwYXVzZWQnO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzIGEgZmFsbGJhY2sgbWVhc3VyZSB0byBwcmV2ZW50IGRlLXN5bmMsIHJlc2V0IHRoZSBjbG9jayB0byB0aGUgc3lzdGVtIHRpbWUuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9yZXNldENsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zdGF0ZSAhPT0gJ3J1bm5pbmcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuX3N0b3BDbG9jaygpO1xuICAgIGF3YWl0IHRoaXMuX3N0YXJ0Q2xvY2soKTtcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciB0aGUgdGhyZWUgaGFuZHMgb24gdGhlIGNsb2NrIGZhY2UuICovXG4gIHByaXZhdGUgX3NldEhhbmRzU3RhcnRpbmdQb3NpdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hc3NpZ25DdXJyZW50VGltZSgpO1xuICAgIGNvbnN0IHJlbWFpbmluZ1NlY29uZHMgPSBUT1RBTF9TRUNPTkRTX09OX0NMT0NLX0ZBQ0UgLSB0aGlzLl9zZWNvbmRzO1xuICAgIGNvbnN0IHJlbWFpbmluZ01pbnV0ZXMgPSBUT1RBTF9NSU5VVEVTX09OX0NMT0NLX0ZBQ0UgLSB0aGlzLl9taW51dGVzO1xuICAgIGNvbnN0IHJlbWFpbmluZ0hvdXJzID0gVE9UQUxfSE9VUlNfT05fQ0xPQ0tfRkFDRSAtIHRoaXMuX2hvdXJzO1xuXG4gICAgbGV0IGhvdXJzQW5pbWF0aW9uRHVyYXRpb24gPSAwO1xuICAgIGxldCBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzID0gMDtcblxuICAgIGlmIChyZW1haW5pbmdTZWNvbmRzID4gMCkge1xuICAgICAgaG91cnNBbmltYXRpb25EdXJhdGlvbiArPSByZW1haW5pbmdTZWNvbmRzO1xuICAgICAgaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcyA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHJlbWFpbmluZ01pbnV0ZXMgPiAwKSB7XG4gICAgICBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uICs9XG4gICAgICAgIChyZW1haW5pbmdNaW51dGVzIC0gaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcykgKiBTRUNPTkRTX0lOX0FfTUlOVVRFO1xuICAgICAgaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcyA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHJlbWFpbmluZ0hvdXJzID4gMCkge1xuICAgICAgaG91cnNBbmltYXRpb25EdXJhdGlvbiArPVxuICAgICAgICAocmVtYWluaW5nSG91cnMgLSBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzKSAqIFNFQ09ORFNfSU5fQU5fSE9VUjtcbiAgICB9XG5cbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eShcbiAgICAgICctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tc3RhcnQtYW5nbGUnLFxuICAgICAgYCR7TWF0aC5jZWlsKHRoaXMuX2hvdXJzICogSE9VUlNfQU5HTEUgKyB0aGlzLl9taW51dGVzIC8gMil9ZGVnYCxcbiAgICApO1xuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tZHVyYXRpb24nLCBgJHtob3Vyc0FuaW1hdGlvbkR1cmF0aW9ufXNgKTtcbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eShcbiAgICAgICctLXNiYi1jbG9jay1zZWNvbmRzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScsXG4gICAgICBgJHtNYXRoLmNlaWwodGhpcy5fc2Vjb25kcyAqIFNCQl9TRUNPTkRTX0FOR0xFKX1kZWdgLFxuICAgICk7XG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLWR1cmF0aW9uJywgYCR7cmVtYWluaW5nU2Vjb25kc31zYCk7XG5cbiAgICB0aGlzLl9zZXRNaW51dGVzSGFuZCgpO1xuXG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8uY2xhc3NMaXN0LmFkZCgnc2JiLWNsb2NrX19oYW5kLXNlY29uZHMtLWluaXRpYWwtbWludXRlJyk7XG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LmNsYXNzTGlzdC5hZGQoJ3NiYi1jbG9ja19faGFuZC1ob3Vycy0taW5pdGlhbC1ob3VyJyk7XG5cbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1pbml0aWFsaXplZCcsIHRydWUpO1xuICB9XG5cbiAgLyoqIEdpdmVuIHRoZSBjdXJyZW50IGRhdGUsIGNhbGN1bGF0ZXMgdGhlIGhoL21tL3NzIHZhbHVlcyBhbmQgdGhlIGhoL21tL3NzIGxlZnQgdG8gdGhlIG5leHQgbWlkbmlnaHQuICovXG4gIHByaXZhdGUgX2Fzc2lnbkN1cnJlbnRUaW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLm5vdyA/IG51bGwgOiBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSBkYXRlXG4gICAgICA/IFtkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpLCBkYXRlLmdldFNlY29uZHMoKV1cbiAgICAgIDogdGhpcy5ub3chLnNwbGl0KCc6JykubWFwKChwKSA9PiArcCk7XG5cbiAgICB0aGlzLl9ob3VycyA9IGhvdXJzICUgMTI7XG4gICAgdGhpcy5fbWludXRlcyA9IG1pbnV0ZXM7XG4gICAgdGhpcy5fc2Vjb25kcyA9IHNlY29uZHM7XG4gIH1cblxuICAvKiogU2V0IHRoZSBzdGFydGluZyBwb3NpdGlvbiBmb3IgdGhlIG1pbnV0ZXMgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfc2V0TWludXRlc0hhbmQoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcz8uc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAndHJhbnNmb3JtJyxcbiAgICAgIGByb3RhdGVaKCR7TWF0aC5jZWlsKHRoaXMuX21pbnV0ZXMgKiBNSU5VVEVTX0FOR0xFKX1kZWcpYCxcbiAgICApO1xuICB9XG5cbiAgLyoqIE1vdmUgdGhlIGhvdXJzIGhhbmQgdG8gdGhlIG5leHQgdmFsdWUuICovXG4gIHByaXZhdGUgX21vdmVIb3Vyc0hhbmQoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVtb3ZlSG91cnNBbmltYXRpb25TdHlsZXMoKTtcblxuICAgIGxldCBob3Vyc0FuZ2xlID0gTWF0aC5jZWlsKHRoaXMuX2hvdXJzICogSE9VUlNfQU5HTEUgKyB0aGlzLl9taW51dGVzIC8gMik7XG5cbiAgICBpZiAoaG91cnNBbmdsZSA+PSBGVUxMX0FOR0xFKSB7XG4gICAgICBob3Vyc0FuZ2xlIC09IEZVTExfQU5HTEU7XG4gICAgfVxuXG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LnN0eWxlLnNldFByb3BlcnR5KCd0cmFuc2Zvcm0nLCBgcm90YXRlWigke2hvdXJzQW5nbGV9ZGVnKWApO1xuICB9XG5cbiAgLyoqIE1vdmUgdGhlIG1pbnV0ZXMgaGFuZCB0byB0aGUgbmV4dCB2YWx1ZS4gKi9cbiAgcHJpdmF0ZSBfbW92ZU1pbnV0ZXNIYW5kKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuKTtcblxuICAgIHRoaXMuX3JlbW92ZVNlY29uZHNBbmltYXRpb25TdHlsZXMoKTtcblxuICAgIHRoaXMuX2FkZE1pbnV0ZXNBbmRTZXRIYW5kcygpO1xuXG4gICAgdGhpcy5faGFuZE1vdmVtZW50ID0gc2V0SW50ZXJ2YWwoXG4gICAgICAoKSA9PiB0aGlzLl9hZGRNaW51dGVzQW5kU2V0SGFuZHMoKSxcbiAgICAgIFRPVEFMX1NFQ09ORFNfT05fQ0xPQ0tfRkFDRSAqIDEwMDAsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZE1pbnV0ZXNBbmRTZXRIYW5kcygpOiB2b2lkIHtcbiAgICB0aGlzLl9taW51dGVzKys7XG4gICAgdGhpcy5fc2V0TWludXRlc0hhbmQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmluZyBhbmltYXRpb24gYnkgb3ZlcnJpZGluZyB3aXRoIGVtcHR5IHN0cmluZyxcbiAgICogdGhlbiB0cmlnZ2VyaW5nIGEgcmVmbG93IGFuZCByZSBhZGQgb3JpZ2luYWwgYW5pbWF0aW9uIGJ5IHJlbW92aW5nIG92ZXJyaWRlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVzZXRTZWNvbmRzSGFuZEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2Nsb2NrSGFuZFNlY29uZHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcy5zdHlsZS5hbmltYXRpb24gPSAnJztcbiAgICAvLyBIYWNrIHRvIHRyaWdnZXIgcmVmbG93XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzLm9mZnNldEhlaWdodDtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdhbmltYXRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGRvY3VtZW50Py5yZW1vdmVFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgdGhpcy5faGFuZGxlUGFnZVZpc2liaWxpdHlDaGFuZ2UpO1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlSG91cnNIYW5kRm4pO1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX2hhbmRNb3ZlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVIb3Vyc0FuaW1hdGlvblN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uY2xhc3NMaXN0LnJlbW92ZSgnc2JiLWNsb2NrX19oYW5kLWhvdXJzLS1pbml0aWFsLWhvdXInKTtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tc3RhcnQtYW5nbGUnKTtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZVNlY29uZHNBbmltYXRpb25TdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8uY2xhc3NMaXN0LnJlbW92ZSgnc2JiLWNsb2NrX19oYW5kLXNlY29uZHMtLWluaXRpYWwtbWludXRlJyk7XG4gICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcz8uY2xhc3NMaXN0LnJlbW92ZSgnc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb24nKTtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1jbG9jay1zZWNvbmRzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItY2xvY2tcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItY2xvY2tfX2ZhY2VcIiAuaW5uZXJIVE1MPSR7Y2xvY2tGYWNlU1ZHfT48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJzYmItY2xvY2tfX2hhbmQtaG91cnNcIlxuICAgICAgICAgIC5pbm5lckhUTUw9JHtjbG9ja0hhbmRsZUhvdXJzU1ZHfVxuICAgICAgICAgICR7cmVmKChlPzogRWxlbWVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvY2tIYW5kSG91cnMgPSBlIGFzIEhUTUxTcGFuRWxlbWVudDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1taW51dGVzIHNiYi1jbG9ja19faGFuZC1taW51dGVzLS1uby10cmFuc2l0aW9uXCJcbiAgICAgICAgICAuaW5uZXJIVE1MPSR7Y2xvY2tIYW5kbGVNaW51dGVzU1ZHfVxuICAgICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb2NrSGFuZE1pbnV0ZXMgPSBlbCBhcyBIVE1MU3BhbkVsZW1lbnQ7XG4gICAgICAgICAgfSl9XG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJzYmItY2xvY2tfX2hhbmQtc2Vjb25kc1wiXG4gICAgICAgICAgLmlubmVySFRNTD0ke2Nsb2NrSGFuZGxlU2Vjb25kc1NWR31cbiAgICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzID0gZWwgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICAgIH0pfVxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWNsb2NrJzogU2JiQ2xvY2tFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsTUFBZSxlQUFBO0FDQWYsTUFBZSxz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
|
|
380
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2suY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19mYWNlLnN2Zz9yYXciLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19ob3Vycy5zdmc/cmF3IiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Nsb2NrL2Fzc2V0cy9zYmJfY2xvY2tfbWludXRlcy5zdmc/cmF3IiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Nsb2NrL2Fzc2V0cy9zYmJfY2xvY2tfc2Vjb25kcy5zdmc/cmF3IiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Nsb2NrL2Nsb2NrLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZm9jdXNhYmxlPVxcXCJmYWxzZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTA1IDEwNVxcXCI+PGcgY2xhc3M9XFxcImZhY2VcXFwiPjxjaXJjbGUgZmlsbD1cXFwiI0ZGRlxcXCIgY3g9XFxcIjUyLjVcXFwiIGN5PVxcXCI1Mi41XFxcIiByPVxcXCI1Mi41XFxcIi8+PHBhdGggZD1cXFwiTTUwLjc1IDRoMy41djEyaC0zLjV6TTUwLjc1IDg5aDMuNXYxMmgtMy41ek03NS4yMzMgOS42MjNsMy4wMyAxLjc1LTYgMTAuMzkyLTMuMDMtMS43NXpNMzIuNzM0IDgzLjIzM2wzLjAzIDEuNzUtNiAxMC4zOTItMy4wMy0xLjc1ek05My42MjggMjYuNzMybDEuNzUgMy4wMzEtMTAuMzkyIDYtMS43NS0zLjAzek0yMC4wMTcgNjkuMjM0bDEuNzUgMy4wMzEtMTAuMzkyIDYtMS43NS0zLjAzek0xMDEgNTAuNzV2My41SDg5di0zLjV6TTE2IDUwLjc1djMuNUg0di0zLjV6TTk1LjM3OSA3NS4yMzJsLTEuNzUgMy4wMzEtMTAuMzkyLTYgMS43NS0zLjAzek0yMS43NjYgMzIuNzM0bC0xLjc1IDMuMDMxLTEwLjM5Mi02IDEuNzUtMy4wM3pNNzguMjY3IDkzLjYzbC0zLjAzIDEuNzUtNi0xMC4zOTMgMy4wMy0xLjc1ek0zNS43NjYgMjAuMDE1bC0zLjAzIDEuNzUtNi0xMC4zOTIgMy4wMy0xLjc1elxcXCIvPjxnPjxwYXRoIGQ9XFxcIk01Ni44NzMgNC4xOWwxLjM5Mi4xNDctLjM2NiAzLjQ4LTEuMzkyLS4xNDV6TTQ3LjEwMSA5Ny4xNzdsMS4zOTMuMTQ2LS4zNjYgMy40ODEtMS4zOTItLjE0NnpNNjEuODk2IDQuOTE0bDEuMzcuMjktLjcyOCAzLjQyNC0xLjM3LS4yOXpNNDIuNDU4IDk2LjM2NmwxLjM3LjI5LS43MjggMy40MjQtMS4zNy0uMjkxek02Ni44MjUgNi4xNTdsMS4zMzIuNDMyLTEuMDgyIDMuMzMtMS4zMzEtLjQzNHpNMzcuOTMxIDk1LjA4NWwxLjMzMi40MzItMS4wODIgMy4zMy0xLjMzMS0uNDMzek03MS41ODQgNy45MDZsMS4yOC41NjktMS40MjQgMy4xOTctMS4yOC0uNTd6TTMzLjU2IDkzLjMybDEuMjc4LjU2OS0xLjQyMyAzLjE5Ny0xLjI4LS41N3pNODAuNDQgMTIuODUybDEuMTMzLjgyMy0yLjA1OCAyLjgzMS0xLjEzMi0uODIzek0yNS40ODEgODguNDk0bDEuMTMzLjgyMi0yLjA1NyAyLjgzMi0xLjEzMy0uODIzek04NC40MyAxNS45ODZsMS4wNC45MzctMi4zNDIgMi42LTEuMDQtLjkzNnpNMjEuODcgODUuNDY5bDEuMDQuOTM2LTIuMzQxIDIuNjAxLTEuMDQtLjkzN3pNODguMDcyIDE5LjUyMmwuOTM3IDEuMDQtMi42IDIuMzQzLS45MzctMS4wNHpNMTguNTkzIDgyLjA4OGwuOTM3IDEuMDQtMi42MDEgMi4zNDItLjkzNy0xLjA0ek05MS4zMjggMjMuNDI1bC44MjMgMS4xMzMtMi44MzIgMi4wNTctLjgyMy0xLjEzMnpNMTUuNjg0IDc4LjM4NWwuODIzIDEuMTMyLTIuODMyIDIuMDU4LS44MjItMS4xMzN6TTk2LjUyIDMyLjEyOGwuNTcgMS4yNzktMy4xOTggMS40MjMtLjU3LTEuMjc4ek0xMS4xMDkgNzAuMTYxbC41NjkgMS4yNzktMy4xOTcgMS40MjMtLjU3LTEuMjc5ek05OC40MDcgMzYuODVsLjQzMyAxLjMzMi0zLjMzIDEuMDgxLS40MzItMS4zMzF6TTkuNDgzIDY1Ljc0bC40MzIgMS4zMy0zLjMyOSAxLjA4Mi0uNDMyLTEuMzMxek05OS43OTUgNDEuNzI2bC4yOTEgMS4zNy0zLjQyMy43MjctLjI5LTEuMzd6TTguMzQgNjEuMTdsLjI5MiAxLjM3LTMuNDI0LjcyOC0uMjktMS4zN3pNMTAwLjY2IDQ2LjczbC4xNDYgMS4zOTMtMy40OC4zNjYtLjE0Ny0xLjM5MnpNNy42NzQgNTYuNTA2bC4xNDYgMS4zOTItMy40OC4zNjYtLjE0Ny0xLjM5MnpNMTAwLjgxMSA1Ni44NzNsLS4xNDYgMS4zOTItMy40OC0uMzY1LjE0NS0xLjM5M3pNNy44MjEgNDcuMTAxbC0uMTQ2IDEuMzkyLTMuNDgtLjM2NS4xNDUtMS4zOTN6TTEwMC4wOSA2MS44OTVsLS4yOTEgMS4zNjktMy40MjQtLjcyOC4yOTEtMS4zNjl6TTguNjMxIDQyLjQ2bC0uMjkxIDEuMzctMy40MjMtLjcyOC4yOS0xLjM3ek05OC44NCA2Ni44MjdsLS40MzIgMS4zMzEtMy4zMjktMS4wODEuNDMzLTEuMzMyek05LjkxOCAzNy45M2wtLjQzMyAxLjMzMS0zLjMyOS0xLjA4Mi40MzMtMS4zMzF6TTk3LjA5OCA3MS41ODVsLS41NjkgMS4yOC0zLjE5Ny0xLjQyNC41Ny0xLjI4ek0xMS42NzcgMzMuNTU4bC0uNTcgMS4yOC0zLjE5Ny0xLjQyNC41Ny0xLjI3OXpNOTIuMTQ5IDgwLjQzOWwtLjgyMyAxLjEzMy0yLjgzMi0yLjA1OC44MjMtMS4xMzJ6TTE2LjUwNiAyNS40ODJsLS44MjMgMS4xMzMtMi44MzEtMi4wNTcuODIzLTEuMTMzek04OS4wMTcgODQuNDMxbC0uOTM3IDEuMDQtMi42LTIuMzQxLjkzNi0xLjA0ek0xOS41MjggMjEuODY5bC0uOTM2IDEuMDQtMi42MDEtMi4zNDIuOTM2LTEuMDR6TTg1LjQ4IDg4LjA3NmwtMS4wNDEuOTM2LTIuMzQyLTIuNiAxLjA0LS45Mzd6TTIyLjkxIDE4LjU5bC0xLjA0LjkzNy0yLjM0MS0yLjYwMSAxLjA0LS45Mzd6TTgxLjU3NCA5MS4zMjhsLTEuMTMzLjgyMy0yLjA1Ny0yLjgzMSAxLjEzMi0uODIzek0yNi42MTcgMTUuNjg0bC0xLjEzMy44MjMtMi4wNTctMi44MzIgMS4xMzItLjgyM3pNNzIuODczIDk2LjUyNGwtMS4yNzkuNTctMS40MjMtMy4xOTggMS4yNzgtLjU3ek0zNC44MzggMTEuMTA1bC0xLjI3OS41Ny0xLjQyMy0zLjE5OCAxLjI3OS0uNTd6TTY4LjE1MSA5OC40MDVsLTEuMzMxLjQzMi0xLjA4Mi0zLjMyOSAxLjMzMi0uNDMyek0zOS4yNTkgOS40ODVsLTEuMzMyLjQzMy0xLjA4MS0zLjMzIDEuMzMxLS40MzJ6TTYzLjI3MiA5OS43OTlsLTEuMzY5LjI5LS43MjgtMy40MjIgMS4zNy0uMjkxek00My44MyA4LjMzN2wtMS4zNjkuMjkxLS43MjctMy40MjMgMS4zNy0uMjkxek01OC4yNyAxMDAuNjYybC0xLjM5My4xNDYtLjM2Ni0zLjQ4IDEuMzkzLS4xNDd6TTQ4LjQ5NCA3LjY3MmwtMS4zOTIuMTQ3LS4zNjYtMy40ODEgMS4zOTItLjE0N3pcXFwiLz48L2c+PC9nPjwvc3ZnPlxcblwiIiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwNSAxMDVcXFwiPjxwYXRoIGlkPVxcXCJtb2RfY2xvY2tfc3ZnX2hvdXJzXFxcIiBkPVxcXCJNNTUuNyA2NC41aC02LjRsLjYtNDRoNS4yelxcXCIvPjwvc3ZnPlxcblwiIiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwNSAxMDVcXFwiPjxwYXRoIGQ9XFxcIk01NS4xLDY0LjVoLTUuMmwwLjgtNThoMy42TDU1LjEsNjQuNXpcXFwiLz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBkPVxcXCJNNTcuOCwyMS4zYzAtMi45LTIuNC01LjItNS4yLTUuMnMtNS4zLDIuMy01LjMsNS4yYzAsMi43LDIsNC44LDQuNSw1LjJWNjloMS41VjI2LjVDNTUuOCwyNi4yLDU3LjgsMjQsNTcuOCwyMS4zelxcXCIvPjwvc3ZnPlxcblwiIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIGlzU2VydmVyLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJUaW1lIH0gZnJvbSAnLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcblxuaW1wb3J0IGNsb2NrRmFjZVNWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfZmFjZS5zdmc/cmF3JztcbmltcG9ydCBjbG9ja0hhbmRsZUhvdXJzU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19ob3Vycy5zdmc/cmF3JztcbmltcG9ydCBjbG9ja0hhbmRsZU1pbnV0ZXNTVkcgZnJvbSAnLi9hc3NldHMvc2JiX2Nsb2NrX21pbnV0ZXMuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVTZWNvbmRzU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19zZWNvbmRzLnN2Zz9yYXcnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vY2xvY2suc2Nzcz9saXQmaW5saW5lJztcblxuLyoqIE51bWJlciBvZiBob3VycyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbmNvbnN0IFRPVEFMX0hPVVJTX09OX0NMT0NLX0ZBQ0UgPSAxMjtcblxuLyoqIE51bWJlciBvZiBtaW51dGVzIG9uIHRoZSBjbG9jayBmYWNlLiAqL1xuY29uc3QgVE9UQUxfTUlOVVRFU19PTl9DTE9DS19GQUNFID0gNjA7XG5cbi8qKiBOdW1iZXIgb2Ygc2Vjb25kcyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbmNvbnN0IFRPVEFMX1NFQ09ORFNfT05fQ0xPQ0tfRkFDRSA9IDYwO1xuXG4vKiogVGltZW91dCBmb3IgdGhlIGNsb2NrIHN0YXJ0LiAqL1xuY29uc3QgSU5JVElBTF9USU1FT1VUX0RVUkFUSU9OID0gNTA7XG5cbi8qKiBBbmdsZSBpbiBhIHNpbmdsZSByb3RhdGlvbi4gKi9cbmNvbnN0IEZVTExfQU5HTEUgPSAzNjA7XG5cbi8qKiBBbmdsZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBob3VyczogMzYwLzEyLCBtZWFucyBhIGZ1bGwgcm90YXRpb24gLyBudW1iZXIgb2YgaG91cnMgaW4gYSByb3RhdGlvbi4gKi9cbmNvbnN0IEhPVVJTX0FOR0xFID0gMzA7XG5cbi8qKiBBbmdsZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBtaW51dGVzOiAzNjAvNjAsIG1lYW5zIGEgZnVsbCByb3RhdGlvbiAvIG51bWJlciBvZiBtaW51dGVzIGluIG9uZSBob3VyLiAqL1xuY29uc3QgTUlOVVRFU19BTkdMRSA9IDY7XG5cbi8qKiBBbmdsZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBzZWNvbmRzIGZvciBTQkIgY2xvY2sgY3VzdG9tIGJlaGF2aW9yLiAqL1xuY29uc3QgU0JCX1NFQ09ORFNfQU5HTEUgPSAzNjAgLyA1OC41O1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgaW4gYSBtaW51dGUuICovXG5jb25zdCBTRUNPTkRTX0lOX0FfTUlOVVRFID0gNjA7XG5cbi8qKiBOdW1iZXIgb2Ygc2Vjb25kcyBpbiBhbiBob3VyLiAqL1xuY29uc3QgU0VDT05EU19JTl9BTl9IT1VSID0gMzYwMDtcblxuLyoqIEFzIGEgZmFsbGJhY2sgbWVhc3VyZSwgcmVzZXQgdGhlIGNsb2NrIGV2ZXJ5IGhhbGYgYW4gaG91ciAqL1xuY29uc3QgUkVTRVRfSU5URVJWQUwgPSBTRUNPTkRTX0lOX0FOX0hPVVIgLyAyO1xuXG5jb25zdCBBRERfRVZFTlRfTElTVEVORVJfT1BUSU9OUzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gIG9uY2U6IHRydWUsXG4gIHBhc3NpdmU6IHRydWUsXG59O1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGFuIGFuYWxvZyBjbG9jayB3aXRoIHRoZSBjbGFzc2ljIFNCQiBmYWNlLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItY2xvY2snKVxuY2xhc3MgU2JiQ2xvY2tFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgYSBzcGVjaWZpYyB0aW1lIHdoaWNoIHRoZSBjbG9jayBzaG91bGQgc2hvdyBzdGF0aWNhbGx5LlxuICAgKiBAcGFyYW0gdmFsdWUgSEg6TU06c3NcbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBub3c6IFNiYlRpbWUgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciB0aGUgY2xvY2sgaXMgdGlja2luZyBvciBub3QgKi9cbiAgcHJpdmF0ZSBfc3RhdGU6ICdydW5uaW5nJyB8ICdwYXVzZWQnID0gJ3BhdXNlZCc7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgaG91ciBoYW5kLiAqL1xuICBwcml2YXRlIF9jbG9ja0hhbmRIb3VycyE6IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIG1pbnV0ZSBoYW5kLiAqL1xuICBwcml2YXRlIF9jbG9ja0hhbmRNaW51dGVzITogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2Vjb25kIGhhbmQuICovXG4gIHByaXZhdGUgX2Nsb2NrSGFuZFNlY29uZHMhOiBIVE1MRWxlbWVudDtcblxuICAvKiogSG91cnMgdmFsdWUgZm9yIHRoZSBjdXJyZW50IGRhdGUuICovXG4gIHByaXZhdGUgX2hvdXJzITogbnVtYmVyO1xuXG4gIC8qKiBNaW51dGVzIHZhbHVlIGZvciB0aGUgY3VycmVudCBkYXRlLiAqL1xuICBwcml2YXRlIF9taW51dGVzITogbnVtYmVyO1xuXG4gIC8qKiBTZWNvbmRzIHZhbHVlIGZvciB0aGUgY3VycmVudCBkYXRlLiAqL1xuICBwcml2YXRlIF9zZWNvbmRzITogbnVtYmVyO1xuXG4gIC8qKiBNb3ZlIHRoZSBtaW51dGVzIGhhbmQgZXZlcnkgbWludXRlLiAqL1xuICBwcml2YXRlIF9oYW5kTW92ZW1lbnQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG5cbiAgcHJpdmF0ZSBfcmVzZXRJbnRlcnZhbElkPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgaG91cnMgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfbW92ZUhvdXJzSGFuZEZuID0gKCk6IHZvaWQgPT4gdGhpcy5fbW92ZUhvdXJzSGFuZCgpO1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgbWludXRlcyBoYW5kLiAqL1xuICBwcml2YXRlIF9tb3ZlTWludXRlc0hhbmRGbiA9ICgpOiB2b2lkID0+IHRoaXMuX21vdmVNaW51dGVzSGFuZCgpO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgdGhpcy5fcmVzZXRJbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5fcmVzZXRDbG9jaygpLCBSRVNFVF9JTlRFUlZBTCAqIDEwMDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIWlzU2VydmVyICYmIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbm93JykpIHtcbiAgICAgIHRoaXMuX3N0YXJ0T3JDb25maWd1cmVDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCB0aGlzLl9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSwgZmFsc2UpO1xuICAgICAgdGhpcy5fc3RhcnRPckNvbmZpZ3VyZUNsb2NrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX3Jlc2V0SW50ZXJ2YWxJZCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAodGhpcy5ub3cpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAnaGlkZGVuJykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuX3N0YXJ0Q2xvY2soKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBhc3luYyBfc3RhcnRPckNvbmZpZ3VyZUNsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm5vdykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgICB0aGlzLl9yZXNldFNlY29uZHNIYW5kQW5pbWF0aW9uKCk7XG4gICAgICB0aGlzLl9zZXRIYW5kc1N0YXJ0aW5nUG9zaXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5fc3RhcnRDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTdGFydHMgdGhlIGNsb2NrIGJ5IGRlZmluaW5nIHRoZSBoYW5kcyBzdGFydGluZyBwb3NpdGlvbiB0aGVuIHN0YXJ0aW5nIHRoZSBhbmltYXRpb25zLiAqL1xuICBwcml2YXRlIGFzeW5jIF9zdGFydENsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2FuaW1hdGlvbmVuZCcsXG4gICAgICB0aGlzLl9tb3ZlSG91cnNIYW5kRm4sXG4gICAgICBBRERfRVZFTlRfTElTVEVORVJfT1BUSU9OUyxcbiAgICApO1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnYW5pbWF0aW9uZW5kJyxcbiAgICAgIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuLFxuICAgICAgQUREX0VWRU5UX0xJU1RFTkVSX09QVElPTlMsXG4gICAgKTtcblxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldEhhbmRzU3RhcnRpbmdQb3NpdGlvbigpO1xuXG4gICAgICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1hbmltYXRpb24tcGxheS1zdGF0ZScsICdydW5uaW5nJyk7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gJ3J1bm5pbmcnO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9LCBJTklUSUFMX1RJTUVPVVRfRFVSQVRJT04pLFxuICAgICk7XG4gIH1cblxuICAvKiogU3RvcHMgdGhlIGNsb2NrIGJ5IHJlbW92aW5nIGFsbCB0aGUgYW5pbWF0aW9ucy4gKi9cbiAgcHJpdmF0ZSBhc3luYyBfc3RvcENsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faGFuZE1vdmVtZW50KTtcblxuICAgIHRoaXMuX3JlbW92ZVNlY29uZHNBbmltYXRpb25TdHlsZXMoKTtcbiAgICB0aGlzLl9yZW1vdmVIb3Vyc0FuaW1hdGlvblN0eWxlcygpO1xuXG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVIb3Vyc0hhbmRGbik7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4pO1xuXG4gICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcz8uY2xhc3NMaXN0LmFkZCgnc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb24nKTtcblxuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1hbmltYXRpb24tcGxheS1zdGF0ZScsICdwYXVzZWQnKTtcbiAgICB0aGlzLl9zdGF0ZSA9ICdwYXVzZWQnO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzIGEgZmFsbGJhY2sgbWVhc3VyZSB0byBwcmV2ZW50IGRlLXN5bmMsIHJlc2V0IHRoZSBjbG9jayB0byB0aGUgc3lzdGVtIHRpbWUuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9yZXNldENsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zdGF0ZSAhPT0gJ3J1bm5pbmcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuX3N0b3BDbG9jaygpO1xuICAgIGF3YWl0IHRoaXMuX3N0YXJ0Q2xvY2soKTtcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciB0aGUgdGhyZWUgaGFuZHMgb24gdGhlIGNsb2NrIGZhY2UuICovXG4gIHByaXZhdGUgX3NldEhhbmRzU3RhcnRpbmdQb3NpdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hc3NpZ25DdXJyZW50VGltZSgpO1xuICAgIGNvbnN0IHJlbWFpbmluZ1NlY29uZHMgPSBUT1RBTF9TRUNPTkRTX09OX0NMT0NLX0ZBQ0UgLSB0aGlzLl9zZWNvbmRzO1xuICAgIGNvbnN0IHJlbWFpbmluZ01pbnV0ZXMgPSBUT1RBTF9NSU5VVEVTX09OX0NMT0NLX0ZBQ0UgLSB0aGlzLl9taW51dGVzO1xuICAgIGNvbnN0IHJlbWFpbmluZ0hvdXJzID0gVE9UQUxfSE9VUlNfT05fQ0xPQ0tfRkFDRSAtIHRoaXMuX2hvdXJzO1xuXG4gICAgbGV0IGhvdXJzQW5pbWF0aW9uRHVyYXRpb24gPSAwO1xuICAgIGxldCBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzID0gMDtcblxuICAgIGlmIChyZW1haW5pbmdTZWNvbmRzID4gMCkge1xuICAgICAgaG91cnNBbmltYXRpb25EdXJhdGlvbiArPSByZW1haW5pbmdTZWNvbmRzO1xuICAgICAgaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcyA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHJlbWFpbmluZ01pbnV0ZXMgPiAwKSB7XG4gICAgICBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uICs9XG4gICAgICAgIChyZW1haW5pbmdNaW51dGVzIC0gaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcykgKiBTRUNPTkRTX0lOX0FfTUlOVVRFO1xuICAgICAgaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcyA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHJlbWFpbmluZ0hvdXJzID4gMCkge1xuICAgICAgaG91cnNBbmltYXRpb25EdXJhdGlvbiArPVxuICAgICAgICAocmVtYWluaW5nSG91cnMgLSBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzKSAqIFNFQ09ORFNfSU5fQU5fSE9VUjtcbiAgICB9XG5cbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eShcbiAgICAgICctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tc3RhcnQtYW5nbGUnLFxuICAgICAgYCR7TWF0aC5jZWlsKHRoaXMuX2hvdXJzICogSE9VUlNfQU5HTEUgKyB0aGlzLl9taW51dGVzIC8gMil9ZGVnYCxcbiAgICApO1xuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tZHVyYXRpb24nLCBgJHtob3Vyc0FuaW1hdGlvbkR1cmF0aW9ufXNgKTtcbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eShcbiAgICAgICctLXNiYi1jbG9jay1zZWNvbmRzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScsXG4gICAgICBgJHtNYXRoLmNlaWwodGhpcy5fc2Vjb25kcyAqIFNCQl9TRUNPTkRTX0FOR0xFKX1kZWdgLFxuICAgICk7XG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLWR1cmF0aW9uJywgYCR7cmVtYWluaW5nU2Vjb25kc31zYCk7XG5cbiAgICB0aGlzLl9zZXRNaW51dGVzSGFuZCgpO1xuXG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8uY2xhc3NMaXN0LmFkZCgnc2JiLWNsb2NrX19oYW5kLXNlY29uZHMtLWluaXRpYWwtbWludXRlJyk7XG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LmNsYXNzTGlzdC5hZGQoJ3NiYi1jbG9ja19faGFuZC1ob3Vycy0taW5pdGlhbC1ob3VyJyk7XG5cbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1pbml0aWFsaXplZCcsIHRydWUpO1xuICB9XG5cbiAgLyoqIEdpdmVuIHRoZSBjdXJyZW50IGRhdGUsIGNhbGN1bGF0ZXMgdGhlIGhoL21tL3NzIHZhbHVlcyBhbmQgdGhlIGhoL21tL3NzIGxlZnQgdG8gdGhlIG5leHQgbWlkbmlnaHQuICovXG4gIHByaXZhdGUgX2Fzc2lnbkN1cnJlbnRUaW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLm5vdyA/IG51bGwgOiBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSBkYXRlXG4gICAgICA/IFtkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpLCBkYXRlLmdldFNlY29uZHMoKV1cbiAgICAgIDogdGhpcy5ub3chLnNwbGl0KCc6JykubWFwKChwKSA9PiArcCk7XG5cbiAgICB0aGlzLl9ob3VycyA9IGhvdXJzICUgMTI7XG4gICAgdGhpcy5fbWludXRlcyA9IG1pbnV0ZXM7XG4gICAgdGhpcy5fc2Vjb25kcyA9IHNlY29uZHM7XG4gIH1cblxuICAvKiogU2V0IHRoZSBzdGFydGluZyBwb3NpdGlvbiBmb3IgdGhlIG1pbnV0ZXMgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfc2V0TWludXRlc0hhbmQoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcz8uc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAndHJhbnNmb3JtJyxcbiAgICAgIGByb3RhdGVaKCR7TWF0aC5jZWlsKHRoaXMuX21pbnV0ZXMgKiBNSU5VVEVTX0FOR0xFKX1kZWcpYCxcbiAgICApO1xuICB9XG5cbiAgLyoqIE1vdmUgdGhlIGhvdXJzIGhhbmQgdG8gdGhlIG5leHQgdmFsdWUuICovXG4gIHByaXZhdGUgX21vdmVIb3Vyc0hhbmQoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVtb3ZlSG91cnNBbmltYXRpb25TdHlsZXMoKTtcblxuICAgIGxldCBob3Vyc0FuZ2xlID0gTWF0aC5jZWlsKHRoaXMuX2hvdXJzICogSE9VUlNfQU5HTEUgKyB0aGlzLl9taW51dGVzIC8gMik7XG5cbiAgICBpZiAoaG91cnNBbmdsZSA+PSBGVUxMX0FOR0xFKSB7XG4gICAgICBob3Vyc0FuZ2xlIC09IEZVTExfQU5HTEU7XG4gICAgfVxuXG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LnN0eWxlLnNldFByb3BlcnR5KCd0cmFuc2Zvcm0nLCBgcm90YXRlWigke2hvdXJzQW5nbGV9ZGVnKWApO1xuICB9XG5cbiAgLyoqIE1vdmUgdGhlIG1pbnV0ZXMgaGFuZCB0byB0aGUgbmV4dCB2YWx1ZS4gKi9cbiAgcHJpdmF0ZSBfbW92ZU1pbnV0ZXNIYW5kKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuKTtcblxuICAgIHRoaXMuX3JlbW92ZVNlY29uZHNBbmltYXRpb25TdHlsZXMoKTtcblxuICAgIHRoaXMuX2FkZE1pbnV0ZXNBbmRTZXRIYW5kcygpO1xuXG4gICAgdGhpcy5faGFuZE1vdmVtZW50ID0gc2V0SW50ZXJ2YWwoXG4gICAgICAoKSA9PiB0aGlzLl9hZGRNaW51dGVzQW5kU2V0SGFuZHMoKSxcbiAgICAgIFRPVEFMX1NFQ09ORFNfT05fQ0xPQ0tfRkFDRSAqIDEwMDAsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZE1pbnV0ZXNBbmRTZXRIYW5kcygpOiB2b2lkIHtcbiAgICB0aGlzLl9taW51dGVzKys7XG4gICAgdGhpcy5fc2V0TWludXRlc0hhbmQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmluZyBhbmltYXRpb24gYnkgb3ZlcnJpZGluZyB3aXRoIGVtcHR5IHN0cmluZyxcbiAgICogdGhlbiB0cmlnZ2VyaW5nIGEgcmVmbG93IGFuZCByZSBhZGQgb3JpZ2luYWwgYW5pbWF0aW9uIGJ5IHJlbW92aW5nIG92ZXJyaWRlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVzZXRTZWNvbmRzSGFuZEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2Nsb2NrSGFuZFNlY29uZHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcy5zdHlsZS5hbmltYXRpb24gPSAnJztcbiAgICAvLyBIYWNrIHRvIHRyaWdnZXIgcmVmbG93XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzLm9mZnNldEhlaWdodDtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdhbmltYXRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGRvY3VtZW50Py5yZW1vdmVFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgdGhpcy5faGFuZGxlUGFnZVZpc2liaWxpdHlDaGFuZ2UpO1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlSG91cnNIYW5kRm4pO1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX2hhbmRNb3ZlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVIb3Vyc0FuaW1hdGlvblN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uY2xhc3NMaXN0LnJlbW92ZSgnc2JiLWNsb2NrX19oYW5kLWhvdXJzLS1pbml0aWFsLWhvdXInKTtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tc3RhcnQtYW5nbGUnKTtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZVNlY29uZHNBbmltYXRpb25TdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8uY2xhc3NMaXN0LnJlbW92ZSgnc2JiLWNsb2NrX19oYW5kLXNlY29uZHMtLWluaXRpYWwtbWludXRlJyk7XG4gICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcz8uY2xhc3NMaXN0LnJlbW92ZSgnc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb24nKTtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1jbG9jay1zZWNvbmRzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItY2xvY2tcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItY2xvY2tfX2ZhY2VcIiAuaW5uZXJIVE1MPSR7Y2xvY2tGYWNlU1ZHfT48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJzYmItY2xvY2tfX2hhbmQtaG91cnNcIlxuICAgICAgICAgIC5pbm5lckhUTUw9JHtjbG9ja0hhbmRsZUhvdXJzU1ZHfVxuICAgICAgICAgICR7cmVmKChlPzogRWxlbWVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvY2tIYW5kSG91cnMgPSBlIGFzIEhUTUxTcGFuRWxlbWVudDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1taW51dGVzIHNiYi1jbG9ja19faGFuZC1taW51dGVzLS1uby10cmFuc2l0aW9uXCJcbiAgICAgICAgICAuaW5uZXJIVE1MPSR7Y2xvY2tIYW5kbGVNaW51dGVzU1ZHfVxuICAgICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb2NrSGFuZE1pbnV0ZXMgPSBlbCBhcyBIVE1MU3BhbkVsZW1lbnQ7XG4gICAgICAgICAgfSl9XG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJzYmItY2xvY2tfX2hhbmQtc2Vjb25kc1wiXG4gICAgICAgICAgLmlubmVySFRNTD0ke2Nsb2NrSGFuZGxlU2Vjb25kc1NWR31cbiAgICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzID0gZWwgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICAgIH0pfVxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWNsb2NrJzogU2JiQ2xvY2tFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxNQUFBLGVBQWU7QUNBZixNQUFBLHNCQUFl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
|
|
@@ -151,10 +151,9 @@ let SbbContainerElement = (() => {
|
|
|
151
151
|
__privateSet(this, _color_accessor_storage, value);
|
|
152
152
|
}
|
|
153
153
|
willUpdate(changedProperties) {
|
|
154
|
-
var _a2, _b;
|
|
155
154
|
super.willUpdate(changedProperties);
|
|
156
155
|
if (changedProperties.has("expanded")) {
|
|
157
|
-
|
|
156
|
+
this.querySelector?.("sbb-sticky-bar")?.toggleAttribute("data-expanded", this.expanded);
|
|
158
157
|
}
|
|
159
158
|
}
|
|
160
159
|
render() {
|
|
@@ -191,4 +190,4 @@ let SbbContainerElement = (() => {
|
|
|
191
190
|
export {
|
|
192
191
|
SbbContainerElement
|
|
193
192
|
};
|
|
194
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvbnRhaW5lci9jb250YWluZXIvY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBMaXRFbGVtZW50LFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGZvcmNlVHlwZSwgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vY29udGFpbmVyLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgaXRzIGNvbnRlbnQgd2l0aCB0aGUgZGVmYXVsdCBwYWdlIHNwYWNpbmcuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYW55dGhpbmcgdG8gdGhlIGNvbnRhaW5lci5cbiAqIEBzbG90IHN0aWNreS1iYXIgLSBUaGUgc2xvdCB1c2VkIGJ5IHRoZSBzYmItc3RpY2t5LWJhciBjb21wb25lbnQuXG4gKiBAc2xvdCBpbWFnZSAtIFRoZSBzbG90IHVzZWQgdG8gc2xvdCBhbiBgc2JiLWltYWdlYCB0byB1c2UgYXMgYmFja2dyb3VuZC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWNvbnRhaW5lcicpXG5Ac2xvdFN0YXRlKClcbmNsYXNzIFNiYkNvbnRhaW5lckVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbnRhaW5lciBpcyBleHBhbmRlZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGJhY2tncm91bmQgY29sb3IgaXMgc2hvd24gb24gZnVsbCBjb250YWluZXIgd2lkdGggb24gbGFyZ2Ugc2NyZWVucy4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUsIGF0dHJpYnV0ZTogJ2JhY2tncm91bmQtZXhwYW5kZWQnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBiYWNrZ3JvdW5kRXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogQ29sb3Igb2YgdGhlIGNvbnRhaW5lciwgbGlrZSB0cmFuc3BhcmVudCwgd2hpdGUgZXRjLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBjb2xvcjpcbiAgICB8ICd0cmFuc3BhcmVudCdcbiAgICB8ICd3aGl0ZSdcbiAgICB8ICdtaWxrJ1xuICAgIHwgJ21pZG5pZ2h0J1xuICAgIHwgJ2NoYXJjb2FsJyA9ICd3aGl0ZSc7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdleHBhbmRlZCcpKSB7XG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3I/Lignc2JiLXN0aWNreS1iYXInKT8udG9nZ2xlQXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJywgdGhpcy5leHBhbmRlZCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWNvbnRhaW5lclwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwiaW1hZ2VcIj48L3Nsb3Q+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItY29udGFpbmVyX19jb250ZW50XCI+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNsb3QgbmFtZT1cInN0aWNreS1iYXJcIj48L3Nsb3Q+
|
|
193
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvbnRhaW5lci9jb250YWluZXIvY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBMaXRFbGVtZW50LFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGZvcmNlVHlwZSwgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vY29udGFpbmVyLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgaXRzIGNvbnRlbnQgd2l0aCB0aGUgZGVmYXVsdCBwYWdlIHNwYWNpbmcuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYW55dGhpbmcgdG8gdGhlIGNvbnRhaW5lci5cbiAqIEBzbG90IHN0aWNreS1iYXIgLSBUaGUgc2xvdCB1c2VkIGJ5IHRoZSBzYmItc3RpY2t5LWJhciBjb21wb25lbnQuXG4gKiBAc2xvdCBpbWFnZSAtIFRoZSBzbG90IHVzZWQgdG8gc2xvdCBhbiBgc2JiLWltYWdlYCB0byB1c2UgYXMgYmFja2dyb3VuZC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWNvbnRhaW5lcicpXG5Ac2xvdFN0YXRlKClcbmNsYXNzIFNiYkNvbnRhaW5lckVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbnRhaW5lciBpcyBleHBhbmRlZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGJhY2tncm91bmQgY29sb3IgaXMgc2hvd24gb24gZnVsbCBjb250YWluZXIgd2lkdGggb24gbGFyZ2Ugc2NyZWVucy4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUsIGF0dHJpYnV0ZTogJ2JhY2tncm91bmQtZXhwYW5kZWQnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBiYWNrZ3JvdW5kRXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogQ29sb3Igb2YgdGhlIGNvbnRhaW5lciwgbGlrZSB0cmFuc3BhcmVudCwgd2hpdGUgZXRjLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBjb2xvcjpcbiAgICB8ICd0cmFuc3BhcmVudCdcbiAgICB8ICd3aGl0ZSdcbiAgICB8ICdtaWxrJ1xuICAgIHwgJ21pZG5pZ2h0J1xuICAgIHwgJ2NoYXJjb2FsJyA9ICd3aGl0ZSc7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdleHBhbmRlZCcpKSB7XG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3I/Lignc2JiLXN0aWNreS1iYXInKT8udG9nZ2xlQXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJywgdGhpcy5leHBhbmRlZCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWNvbnRhaW5lclwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwiaW1hZ2VcIj48L3Nsb3Q+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItY29udGFpbmVyX19jb250ZW50XCI+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNsb3QgbmFtZT1cInN0aWNreS1iYXJcIj48L3Nsb3Q+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWNvbnRhaW5lcic6IFNiYkNvbnRhaW5lckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXVCTSx1QkFBbUIsTUFBQTs7QUFGeEIsTUFBQSxtQkFBQSxDQUFBLGNBQWMsZUFBZSxHQUM3QixXQUFXOzs7O29CQUNzQjs7Ozs7Ozs7OztBQUFSLEVBQUEsbUJBQVEsWUFBVTtBQUFBOztBQU0xQyxxREFBQSxrQkFBQSxNQUFBLHdCQUFvQyxLQUFLO0FBS3pDLGdFQUFBLGtCQUFBLE1BQUEsMkJBQUEsR0FBQSxrQkFBQSxNQUFBLGtDQUE4QyxLQUFLO0FBR3RCLG1EQUFBLGtCQUFBLE1BQUEscUNBQUEsR0FBQSxrQkFBQSxNQUFBLHFCQUtaLE9BQU87Ozs7SUFieEIsSUFBZ0IsV0FBUTtBQUFBLGFB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
|