@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1779265349 → 5.0.0-next.3-dev.1779279790
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/_index.scss +6 -2
- package/autocomplete/autocomplete-base-element.js +1 -1
- package/autocomplete/autocomplete.component.js +1 -1
- package/{autocomplete-base-element-6leI6UF4.js → autocomplete-base-element-DjfmUS0W.js} +11 -10
- package/autocomplete.js +1 -1
- package/autocomplete.pure.js +1 -1
- package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
- package/{breadcrumb-group.component-XPdnV6-a.js → breadcrumb-group.component-a49dItu9.js} +23 -19
- package/breadcrumb.js +1 -1
- package/breadcrumb.pure.js +1 -1
- package/button/mini-button-group/mini-button-group.component.js +1 -1
- package/button.js +1 -1
- package/button.pure.js +1 -1
- package/calendar/calendar/calendar.component.js +1 -1
- package/{calendar.component-CiT0mE7S.js → calendar.component-BhUyyFtR.js} +53 -49
- package/calendar.js +1 -1
- package/calendar.pure.js +1 -1
- package/container/sticky-bar/sticky-bar.component.js +1 -1
- package/container.js +1 -1
- package/container.pure.js +1 -1
- package/core/base-elements/button-base-element.js +47 -68
- package/core/datetime/date-adapter.js +2 -2
- package/core/mixins/form-associated-checkbox-mixin.js +17 -26
- package/core/mixins/named-slot-list-mixin.js +14 -14
- package/core/styles/_index.scss +1 -12
- package/core/styles/_theme.scss +16 -0
- package/core/styles/core/functions.scss +0 -8
- package/core/styles/{a11y.scss → features/a11y.scss} +2 -2
- package/core/styles/{animation.scss → features/animation.scss} +1 -1
- package/core/styles/features/color-scheme.scss +11 -0
- package/core/styles/{core.scss → features/core.scss} +138 -171
- package/core/styles/{image.scss → features/image.scss} +29 -7
- package/core/styles/{layout.private.scss → features/layout.private.scss} +5 -4
- package/core/styles/{layout.scss → features/layout.scss} +1 -1
- package/core/styles/{lists.scss → features/lists.scss} +1 -1
- package/core/styles/{scrollbar.scss → features/scrollbar.scss} +1 -1
- package/core/styles/features/typography.private.scss +9 -0
- package/core/styles/{typography.scss → features/typography.scss} +2 -2
- package/core/styles/internals/button-reset.scss +5 -0
- package/core/styles/{host-scrollbar.scss → internals/host-scrollbar.scss} +1 -1
- package/core/styles/internals/list-reset.scss +6 -0
- package/core/styles/internals/popover-reset.scss +6 -0
- package/core/styles/{screen-reader-only.scss → internals/screen-reader-only.scss} +1 -1
- package/core/styles/mixins/{a11y.scss → _a11y.scss} +0 -21
- package/core/styles/mixins/{helpers.scss → _helpers.scss} +3 -14
- package/core/styles/mixins/{lists.scss → _lists.scss} +8 -12
- package/core/styles/mixins/{pearl-chain-bullet.scss → _pearl-chain-bullet.scss} +5 -5
- package/core/styles/mixins/_reset.scss +38 -0
- package/core/styles/mixins/{typo.scss → _typo.scss} +23 -75
- package/core/styles/styles.js +2 -2
- package/core.js +40 -42
- package/custom-elements.json +166 -384
- package/datepicker/common/datepicker-button.js +1 -1
- package/{datepicker-button-aYDFZ_3v.js → datepicker-button-CuoZoC6e.js} +0 -3
- package/datepicker.js +1 -1
- package/datepicker.pure.js +1 -1
- package/development/autocomplete/autocomplete-base-element.d.ts +0 -2
- package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/development/autocomplete/autocomplete-base-element.js +1 -1
- package/development/autocomplete/autocomplete.component.js +1 -1
- package/development/autocomplete-base-element-CTZEg--s.js +695 -0
- package/development/autocomplete.js +1 -1
- package/development/autocomplete.pure.js +1 -1
- package/development/block-link-common-DNvRfeay.js +1 -1
- package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
- package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
- package/development/breadcrumb-group.component-DvY1hq51.js +197 -0
- package/development/breadcrumb.component-D6Cd2FPo.js +1 -1
- package/development/breadcrumb.js +1 -1
- package/development/breadcrumb.pure.js +1 -1
- package/development/button/mini-button-group/mini-button-group.component.js +1 -1
- package/development/button-common-C-A7Dulr.js +1 -1
- package/development/button.js +1 -1
- package/development/button.pure.js +1 -1
- package/development/calendar/calendar/calendar.component.d.ts +0 -6
- package/development/calendar/calendar/calendar.component.d.ts.map +1 -1
- package/development/calendar/calendar/calendar.component.js +1 -1
- package/development/calendar-cell-base-element-mWRSDeWc.js +1 -1
- package/development/calendar.component-DnC8Zkdk.js +1478 -0
- package/development/calendar.js +1 -1
- package/development/calendar.pure.js +1 -1
- package/development/card.component-CL2gHoyP.js +1 -1
- package/development/chip-label.component-DHHNtvTt.js +1 -1
- package/development/{compact-paginator.component-BgkpxaaD.js → compact-paginator.component-m8MASSB7.js} +1 -1
- package/development/container/sticky-bar/sticky-bar.component.js +1 -1
- package/development/container.js +1 -1
- package/development/container.pure.js +1 -1
- package/development/core/base-elements/button-base-element.d.ts +1 -0
- package/development/core/base-elements/button-base-element.d.ts.map +1 -1
- package/development/core/base-elements/button-base-element.js +66 -92
- package/development/core/base-elements/element.d.ts.map +1 -1
- package/development/core/datetime/date-adapter.d.ts +0 -5
- package/development/core/datetime/date-adapter.d.ts.map +1 -1
- package/development/core/datetime/date-adapter.js +2 -7
- package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
- package/development/core/mixins/form-associated-checkbox-mixin.js +7 -21
- package/development/core/mixins/form-associated-mixin.d.ts +1 -1
- package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
- package/development/core/mixins/form-associated-mixin.js +1 -1
- package/development/core/mixins/named-slot-list-mixin.js +3 -3
- package/development/core/styles/styles.d.ts +3 -1
- package/development/core/styles/styles.d.ts.map +1 -1
- package/development/core/styles/styles.js +2 -2
- package/development/core.d.ts +0 -2
- package/development/core.d.ts.map +1 -1
- package/development/core.js +3 -5
- package/development/date-input.component-HxRyCudr.js +1 -1
- package/development/datepicker/common/datepicker-button.d.ts +0 -2
- package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/development/datepicker/common/datepicker-button.js +1 -1
- package/development/{datepicker-button-BAT1ebzJ.js → datepicker-button-Bb76EBYH.js} +1 -5
- package/development/datepicker.js +1 -1
- package/development/datepicker.pure.js +1 -1
- package/development/dialog/dialog/dialog.component.js +1 -1
- package/development/dialog-actions.component-e0ZTTUin.js +1 -1
- package/development/{dialog.component-D8B2dVck.js → dialog.component-cZ3SAujq.js} +5 -5
- package/development/dialog.js +1 -1
- package/development/dialog.pure.js +1 -1
- package/development/element-BAsBayf5.js +1 -1
- package/development/error.component-WCkiwM7_.js +1 -1
- package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts.map +1 -1
- package/development/expansion-panel-header.component-gg5A_7Pz.js +1 -1
- package/development/expansion-panel.component-DcFrWkIt.js +1 -1
- package/development/file-selector/common/file-selector-common.js +1 -1
- package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
- package/development/file-selector-common-Dd0S0qE3.js +421 -0
- package/development/{file-selector-dropzone.component-B84OL4Xd.js → file-selector-dropzone.component-DWLdqMmI.js} +2 -2
- package/development/file-selector.js +2 -2
- package/development/file-selector.pure.js +2 -2
- package/development/flip-card/flip-card/flip-card.component.d.ts.map +1 -1
- package/development/flip-card/flip-card/flip-card.component.js +1 -1
- package/development/flip-card.component-MmiS-x-W.js +189 -0
- package/development/flip-card.js +1 -1
- package/development/flip-card.pure.js +1 -1
- package/development/footer.component-K2bWizjw.js +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 +1 -1
- package/development/form-field.component-Cb58q-Ty.js +702 -0
- package/development/form-field.js +1 -1
- package/development/form-field.pure.js +1 -1
- package/development/header/common/header-action-common.js +1 -1
- package/development/header-action-common-BYB-HYtn.js +86 -0
- package/development/header.component-C4e7CNql.js +1 -1
- package/development/header.js +1 -1
- package/development/header.pure.js +1 -1
- package/development/icon/icon.component.d.ts +1 -1
- package/development/icon/icon.component.d.ts.map +1 -1
- package/development/icon/icon.component.js +5 -7
- package/development/inline-link-common-BV6oAtAA.js +18 -0
- package/development/link/common/inline-link-common.js +1 -1
- package/development/link-common-2RGn9Qz_.js +1 -1
- package/development/link-list/link-list.component.js +1 -1
- package/development/link-list-anchor/link-list-anchor.component.js +1 -1
- package/development/{link-list-anchor.component-Csb-FOQL.js → link-list-anchor.component-BMtCbCRD.js} +2 -2
- package/development/link-list-anchor.js +1 -1
- package/development/link-list-anchor.pure.js +1 -1
- package/development/link-list.component-CLxhjWR7.js +97 -0
- package/development/link-list.js +1 -1
- package/development/link-list.pure.js +1 -1
- package/development/link.js +1 -1
- package/development/link.pure.js +1 -1
- package/development/loading-indicator-circle.component-Cfjw5vyz.js +1 -1
- package/development/logo.component-DYKgAgq0.js +1 -1
- package/development/menu/common/menu-action-common.js +1 -1
- package/development/menu/menu/menu.component.d.ts.map +1 -1
- package/development/menu/menu/menu.component.js +1 -1
- package/development/menu-action-common-DL4t4_-J.js +32 -0
- package/development/menu.component-3qEIFutc.js +369 -0
- package/development/menu.js +2 -2
- package/development/menu.pure.js +2 -2
- package/development/message/message.component.js +1 -1
- package/development/{message.component-CdO5GyE2.js → message.component-BJ-84a0B.js} +2 -2
- package/development/message.js +1 -1
- package/development/message.pure.js +1 -1
- package/development/{mini-button-group.component-VYKZf1rq.js → mini-button-group.component-C88pIaaL.js} +2 -2
- package/development/mini-button-link.component-kpRsi8I2.js +1 -1
- package/development/navigation/navigation/navigation.component.d.ts.map +1 -1
- package/development/navigation/navigation/navigation.component.js +1 -1
- package/development/navigation/navigation-list/navigation-list.component.js +1 -1
- package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
- package/development/navigation-action-common-wrzPCkMT.js +1 -1
- package/development/navigation-list.component-CU-SGC8c.js +86 -0
- package/development/navigation-marker.component-CTk9U0kA.js +120 -0
- package/development/navigation-section.component-iaypc6yQ.js +1 -1
- package/development/navigation.component-Bu1wVUNx.js +319 -0
- package/development/navigation.js +3 -3
- package/development/navigation.pure.js +3 -3
- package/development/optgroup-base-element-BzfcJgxG.js +140 -0
- package/development/option/optgroup/optgroup-base-element.d.ts +1 -2
- package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
- package/development/option/optgroup/optgroup-base-element.js +1 -1
- package/development/option/optgroup/optgroup.component.js +1 -1
- package/development/option/option/option.component.js +1 -1
- package/development/option/option-styles.d.ts +2 -0
- package/development/option/option-styles.d.ts.map +1 -0
- package/development/option/option-styles.js +2 -0
- package/development/option-styles-IEQgVpCe.js +8 -0
- package/development/option.component-BrTjDq6X.js +131 -0
- package/development/option.js +5 -4
- package/development/option.pure.d.ts +1 -0
- package/development/option.pure.d.ts.map +1 -1
- package/development/option.pure.js +4 -3
- package/development/overlay/overlay-base-element.d.ts +2 -4
- package/development/overlay/overlay-base-element.d.ts.map +1 -1
- package/development/overlay/overlay-base-element.js +8 -7
- package/development/overlay/overlay.component.js +1 -1
- package/development/{overlay.component-YSCuGeme.js → overlay.component-DywhKxO1.js} +5 -5
- package/development/overlay.js +1 -1
- package/development/overlay.pure.js +1 -1
- 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.d.ts.map +1 -1
- package/development/paginator/paginator/paginator.component.js +1 -1
- package/development/{paginator-common-B7iba0wQ.js → paginator-common-CRchtcXc.js} +1 -1
- package/development/paginator.component-B8y5tVCL.js +265 -0
- package/development/paginator.js +3 -3
- package/development/paginator.pure.js +3 -3
- package/development/panel-mixin-DPybe45K.js +1 -1
- package/development/popover/popover.component.d.ts.map +1 -1
- package/development/popover/popover.component.js +1 -1
- package/development/popover.component-Ds4fNNsq.js +578 -0
- package/development/popover.js +1 -1
- package/development/popover.pure.js +1 -1
- package/development/radio-button/common/radio-button-common.js +1 -1
- package/development/radio-button/radio-button.component.js +1 -1
- package/development/radio-button-common-Ckz2nMS7.js +129 -0
- package/development/{radio-button.component-DnErH-1J.js → radio-button.component-qsLFvciH.js} +2 -2
- package/development/radio-button.js +2 -2
- package/development/radio-button.pure.js +2 -2
- package/development/select/select.component.d.ts.map +1 -1
- package/development/select/select.component.js +1 -1
- package/development/select.component-BE7ZMrAc.js +809 -0
- package/development/select.js +1 -1
- package/development/select.pure.js +1 -1
- package/development/selection-action-panel/selection-action-panel.component.js +1 -1
- package/development/{selection-action-panel.component-BT0HmTja.js → selection-action-panel.component-C3UlmLkJ.js} +1 -1
- package/development/selection-action-panel.js +1 -1
- package/development/selection-action-panel.pure.js +1 -1
- package/development/selection-expansion-panel/selection-expansion-panel.component.js +1 -1
- package/development/selection-expansion-panel.component-4Ron8XNy.js +186 -0
- package/development/selection-expansion-panel.js +1 -1
- package/development/selection-expansion-panel.pure.js +1 -1
- package/development/sidebar/common/styles.js +1 -1
- package/development/sidebar/sidebar/sidebar.component.js +1 -1
- package/development/sidebar/sidebar-close-button/sidebar-close-button.component.js +1 -1
- package/development/sidebar/sidebar-container/sidebar-container.component.js +1 -1
- package/development/sidebar/sidebar-content/sidebar-content.component.js +1 -1
- package/development/sidebar/sidebar-title/sidebar-title.component.js +1 -1
- package/development/{sidebar-close-button.component-CXnf-P5H.js → sidebar-close-button.component-ByQtC65O.js} +1 -1
- package/development/sidebar-container.component-BmavabUg.js +100 -0
- package/development/{sidebar-content.component-DbcREBUa.js → sidebar-content.component-DcsIIWpz.js} +1 -1
- package/development/{sidebar-title.component-BW04otyD.js → sidebar-title.component-DgJdkoiE.js} +1 -1
- package/development/{sidebar.component-mfXnE6WQ.js → sidebar.component-BszwyJQa.js} +1 -1
- package/development/sidebar.js +5 -5
- package/development/sidebar.pure.js +5 -5
- package/development/signet/signet.component.js +1 -1
- package/development/{signet.component-k14RJ8FA.js → signet.component-DXLTVjJS.js} +1 -1
- package/development/signet.js +1 -1
- package/development/signet.pure.js +1 -1
- package/development/skiplink-list/skiplink-list.component.js +1 -1
- package/development/skiplink-list.component-BC8rpyf9.js +129 -0
- package/development/skiplink-list.js +1 -1
- package/development/skiplink-list.pure.js +1 -1
- package/development/slider/slider.component.d.ts +1 -0
- package/development/slider/slider.component.d.ts.map +1 -1
- package/development/slider/slider.component.js +1 -1
- package/development/slider.component-Dz4Nl2ZL.js +333 -0
- package/development/slider.js +1 -1
- package/development/slider.pure.js +1 -1
- package/development/status/status.component.js +1 -1
- package/development/{status.component-B9en2l26.js → status.component-thSGiOrl.js} +1 -1
- package/development/status.js +1 -1
- package/development/status.pure.js +1 -1
- package/development/step-label.component-CpdXVv32.js +127 -0
- package/development/{step.component-B_YHm1tz.js → step.component-CfA-kmt1.js} +1 -11
- package/development/stepper/step/step.component.d.ts +4 -14
- package/development/stepper/step/step.component.d.ts.map +1 -1
- package/development/stepper/step/step.component.js +1 -1
- package/development/stepper/step-label/step-label.component.js +1 -1
- package/development/stepper/stepper/stepper.component.js +1 -1
- package/development/stepper.component-2yRFnnju.js +443 -0
- package/development/stepper.js +3 -3
- package/development/stepper.pure.js +3 -3
- package/development/{sticky-bar.component-BJLtRvcd.js → sticky-bar.component-DZpy1gBU.js} +2 -2
- package/development/{styles-WppEBrlW.js → styles-BmvNZZle.js} +1 -1
- package/development/styles-D8h0fqb5.js +30 -0
- package/development/{tab-group.component-CGMBihsQ.js → tab-group.component-DhcfjVxe.js} +1 -1
- package/development/{tab-label.component-CQOLO2t7.js → tab-label.component-B7YEhR1C.js} +1 -1
- package/development/tab-nav-bar.component-DrZ1U7lM.js +109 -0
- package/development/{tab.component-BVhYPy5Y.js → tab.component-COn1G0XA.js} +1 -1
- package/development/table/table-wrapper/table-wrapper.component.js +1 -1
- package/development/{table-wrapper.component-By59zmcU.js → table-wrapper.component-9Lst6dT2.js} +1 -1
- package/development/table.js +1 -1
- package/development/table.pure.js +1 -1
- package/development/tabs/common/styles.js +1 -1
- package/development/tabs/tab/tab.component.js +1 -1
- package/development/tabs/tab-group/tab-group.component.js +1 -1
- package/development/tabs/tab-label/tab-label.component.js +1 -1
- package/development/tabs/tab-nav-bar/tab-nav-bar.component.js +1 -1
- package/development/tabs.js +5 -5
- package/development/tabs.pure.js +5 -5
- package/development/tag/tag/tag.component.js +1 -1
- package/development/tag/tag-group/tag-group.component.js +1 -1
- package/development/tag-group.component-OQ3sxhZI.js +194 -0
- package/development/tag.component-DWOPDWwe.js +238 -0
- package/development/tag.js +2 -2
- package/development/tag.pure.js +2 -2
- package/development/teaser/teaser.component.js +1 -1
- package/development/teaser-hero/teaser-hero.component.js +1 -1
- package/development/{teaser-hero.component-BHMcPmdh.js → teaser-hero.component-Cp42iJGt.js} +1 -1
- package/development/teaser-hero.js +1 -1
- package/development/teaser-hero.pure.js +1 -1
- package/development/teaser-panel/teaser-panel.component.js +1 -1
- package/development/{teaser-panel.component-BRfbvmkb.js → teaser-panel.component-ptDalUEe.js} +1 -1
- package/development/teaser-panel.js +1 -1
- package/development/teaser-panel.pure.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-common-DOyLdTks.js → teaser-product-common-DxBw-__I.js} +1 -1
- package/development/teaser-product.component-CPj4vJ2V.js +37 -0
- package/development/teaser-product.js +2 -2
- package/development/teaser-product.pure.js +2 -2
- package/development/teaser.component-Dgrc2jh8.js +116 -0
- package/development/teaser.js +1 -1
- package/development/teaser.pure.js +1 -1
- package/development/time-input/time-input.component.js +1 -1
- package/development/time-input.component-BFjDAfbv.js +187 -0
- package/development/time-input.js +1 -1
- package/development/time-input.pure.js +1 -1
- package/development/timetable-form/timetable-form/timetable-form.component.js +1 -1
- package/development/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
- package/development/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
- package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +1 -1
- package/development/{timetable-form-details.component-BeuAZUQe.js → timetable-form-details.component-BFmuJ8-6.js} +1 -1
- package/development/{timetable-form-field.component-DC2z1Cwf.js → timetable-form-field.component-DD04XyA0.js} +1 -1
- package/development/{timetable-form-swap-button.component-CnbVc8Ok.js → timetable-form-swap-button.component-DphGegO6.js} +1 -1
- package/development/{timetable-form.component-C8DfPePn.js → timetable-form.component-EIr4B4mA.js} +1 -1
- package/development/timetable-form.js +4 -4
- package/development/timetable-form.pure.js +4 -4
- package/development/timetable-occupancy/timetable-occupancy.component.d.ts.map +1 -1
- package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
- package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.js +1 -1
- package/development/timetable-occupancy-icon.component-vsXoAiKz.js +95 -0
- package/development/timetable-occupancy-icon.js +1 -1
- package/development/timetable-occupancy-icon.pure.js +1 -1
- package/development/timetable-occupancy.component-B0zY0RnI.js +126 -0
- package/development/timetable-occupancy.js +1 -1
- package/development/timetable-occupancy.pure.js +1 -1
- package/development/title/title-base.js +1 -1
- package/development/title/title.component.d.ts +0 -2
- package/development/title/title.component.d.ts.map +1 -1
- package/development/title/title.component.js +1 -1
- package/development/title-base-CPAVrsQ9.js +102 -0
- package/development/title.component-DCg9U2CK.js +69 -0
- package/development/title.js +2 -2
- package/development/title.pure.js +2 -2
- package/development/toast/toast.component.d.ts.map +1 -1
- package/development/toast/toast.component.js +1 -1
- package/development/{toast.component-DonS3uQm.js → toast.component-TvSfu5nl.js} +3 -3
- package/development/toast.js +1 -1
- package/development/toast.pure.js +1 -1
- package/development/toggle/toggle/toggle.component.js +1 -1
- package/development/toggle/toggle-option/toggle-option.component.js +1 -1
- package/development/toggle-check/toggle-check.component.js +1 -1
- package/development/{toggle-check.component-BIV7jFIc.js → toggle-check.component-CbGa5-8I.js} +1 -1
- package/development/toggle-check.js +1 -1
- package/development/toggle-check.pure.js +1 -1
- package/development/{toggle-option.component-DRxwLSKU.js → toggle-option.component-BxGnhJFH.js} +1 -1
- package/development/toggle.component-Q68IDQWX.js +243 -0
- package/development/toggle.js +2 -2
- package/development/toggle.pure.js +2 -2
- package/development/tooltip/tooltip.component.d.ts.map +1 -1
- package/development/tooltip/tooltip.component.js +1 -1
- package/development/tooltip.component-Baoh6M8V.js +369 -0
- package/development/tooltip.js +1 -1
- package/development/tooltip.pure.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 +1 -1
- package/development/train/train-wagon-common.js +1 -1
- package/development/{train-blocked-passage.component-Cxd7dBDC.js → train-blocked-passage.component-C7ve-a1E.js} +1 -1
- package/development/{train-formation.component-BEg6OPib.js → train-formation.component-DQ_hLKNv.js} +2 -2
- package/development/train-wagon-common-CdckItEt.js +441 -0
- package/development/train.component-Bi74L6C7.js +239 -0
- package/development/train.js +4 -4
- package/development/train.pure.js +4 -4
- package/development/visual-checkbox/visual-checkbox.component.js +1 -1
- package/development/{visual-checkbox.component-Dm8DNhH2.js → visual-checkbox.component-B4_iHcsX.js} +1 -1
- package/development/visual-checkbox.js +1 -1
- package/development/visual-checkbox.pure.js +1 -1
- package/dialog/dialog/dialog.component.js +1 -1
- package/{dialog.component-CsBryhM-.js → dialog.component-D3G0AX4Y.js} +4 -4
- package/dialog.js +1 -1
- package/dialog.pure.js +1 -1
- package/file-selector/common/file-selector-common.js +1 -1
- package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
- package/{file-selector-common-VNwWFEmM.js → file-selector-common-BNGnjK__.js} +1 -1
- package/{file-selector-dropzone.component-CGo6odhC.js → file-selector-dropzone.component-sE_fofSq.js} +1 -1
- package/file-selector.js +2 -2
- package/file-selector.pure.js +2 -2
- package/flip-card/flip-card/flip-card.component.js +1 -1
- package/{flip-card.component-CZ0v44Ym.js → flip-card.component-ZsA_kDPS.js} +22 -18
- package/flip-card.js +1 -1
- package/flip-card.pure.js +1 -1
- package/form-field/form-field/form-field.component.js +1 -1
- package/{form-field.component-BdfK6r2v.js → form-field.component-BoLly8qP.js} +4 -4
- package/form-field.js +1 -1
- package/form-field.pure.js +1 -1
- package/header/common/header-action-common.js +1 -1
- package/header-action-common-B-eRBjSz.js +64 -0
- package/header.js +1 -1
- package/header.pure.js +1 -1
- package/icon/icon.component.js +2 -5
- package/inline-link-common-O650N_pm.js +13 -0
- package/lean-off-brand-theme.css +416 -503
- package/lean-safety-theme.css +416 -503
- package/lean-theme.css +416 -503
- package/link/common/inline-link-common.js +1 -1
- package/link-list/link-list.component.js +1 -1
- package/link-list-anchor/link-list-anchor.component.js +1 -1
- package/{link-list-anchor.component-DG_HCtHH.js → link-list-anchor.component-Bjz_EKvE.js} +1 -1
- package/link-list-anchor.js +1 -1
- package/link-list-anchor.pure.js +1 -1
- package/{link-list.component-BNVd0a8U.js → link-list.component-Dg-7TBPC.js} +1 -1
- package/link-list.js +1 -1
- package/link-list.pure.js +1 -1
- package/link.js +1 -1
- package/link.pure.js +1 -1
- package/menu/common/menu-action-common.js +1 -1
- package/menu/menu/menu.component.js +1 -1
- package/{menu-action-common-Wy36tk18.js → menu-action-common-DakEXPg7.js} +1 -1
- package/{menu.component-DrrKSRmJ.js → menu.component-CqXsI5Cg.js} +25 -21
- package/menu.js +2 -2
- package/menu.pure.js +2 -2
- package/message/message.component.js +1 -1
- package/{message.component-CdfsCpnE.js → message.component-CORYX4KP.js} +1 -1
- package/message.js +1 -1
- package/message.pure.js +1 -1
- package/{mini-button-group.component-DQBU0BDm.js → mini-button-group.component-DWayyUpK.js} +1 -1
- package/navigation/navigation/navigation.component.js +1 -1
- package/navigation/navigation-list/navigation-list.component.js +1 -1
- package/navigation/navigation-marker/navigation-marker.component.js +1 -1
- package/{navigation-list.component-Cezo1tC-.js → navigation-list.component-C5y3ohH0.js} +1 -1
- package/{navigation-marker.component-CNsMaqpH.js → navigation-marker.component-VbvKu1TR.js} +1 -1
- package/{navigation.component-DLgmWh_c.js → navigation.component-DKJujMqj.js} +23 -19
- package/navigation.js +3 -3
- package/navigation.pure.js +3 -3
- package/off-brand-theme.css +416 -503
- package/{optgroup-base-element-Cxe8SIQh.js → optgroup-base-element-CBxsRPUF.js} +10 -17
- package/option/optgroup/optgroup-base-element.js +1 -1
- package/option/optgroup/optgroup.component.js +1 -1
- package/option/option/option.component.js +1 -1
- package/option/option-styles.js +2 -0
- package/option-styles-DcD5grSB.js +6 -0
- package/option.js +6 -5
- package/option.pure.js +5 -4
- package/overlay/overlay-base-element.js +24 -24
- package/overlay/overlay.component.js +1 -1
- package/{overlay.component-myJflfLY.js → overlay.component-OSLtja0_.js} +4 -4
- package/overlay.js +1 -1
- package/overlay.pure.js +1 -1
- package/package.json +5 -49
- package/paginator/common/paginator-common.js +1 -1
- package/paginator/compact-paginator/compact-paginator.component.js +1 -1
- package/paginator/paginator/paginator.component.js +1 -1
- package/paginator.component-Dk1xDHgW.js +212 -0
- package/paginator.js +3 -3
- package/paginator.pure.js +3 -3
- package/popover/popover.component.js +1 -1
- package/{popover.component-Dm_86bPY.js → popover.component-Bm-bx-Hs.js} +32 -32
- package/popover.js +1 -1
- package/popover.pure.js +1 -1
- package/radio-button/common/radio-button-common.js +1 -1
- package/radio-button/radio-button.component.js +1 -1
- package/{radio-button.component-CZ273yAb.js → radio-button.component-CGeTCfMq.js} +1 -1
- package/radio-button.js +2 -2
- package/radio-button.pure.js +2 -2
- package/safety-theme.css +416 -503
- package/select/select.component.js +1 -1
- package/{select.component-CLPLpFDz.js → select.component-UcWSndDu.js} +41 -39
- package/select.js +1 -1
- package/select.pure.js +1 -1
- package/selection-action-panel/selection-action-panel.component.js +1 -1
- package/selection-action-panel.js +1 -1
- package/selection-action-panel.pure.js +1 -1
- package/selection-expansion-panel/selection-expansion-panel.component.js +1 -1
- package/selection-expansion-panel.js +1 -1
- package/selection-expansion-panel.pure.js +1 -1
- package/sidebar/sidebar/sidebar.component.js +1 -1
- package/sidebar/sidebar-close-button/sidebar-close-button.component.js +1 -1
- package/sidebar/sidebar-container/sidebar-container.component.js +1 -1
- package/sidebar/sidebar-content/sidebar-content.component.js +1 -1
- package/sidebar/sidebar-title/sidebar-title.component.js +1 -1
- package/sidebar.js +5 -5
- package/sidebar.pure.js +5 -5
- package/signet/signet.component.js +1 -1
- package/signet.js +1 -1
- package/signet.pure.js +1 -1
- package/skiplink-list/skiplink-list.component.js +1 -1
- package/{skiplink-list.component-BXaqYpsI.js → skiplink-list.component-ClGb1J_H.js} +1 -1
- package/skiplink-list.js +1 -1
- package/skiplink-list.pure.js +1 -1
- package/slider/slider.component.js +1 -1
- package/{slider.component-BlUWAWJU.js → slider.component-BMkoF1l1.js} +23 -31
- package/slider.js +1 -1
- package/slider.pure.js +1 -1
- package/standard-theme.css +416 -503
- package/status/status.component.js +1 -1
- package/status.js +1 -1
- package/status.pure.js +1 -1
- package/stepper/step/step.component.js +1 -1
- package/stepper/step-label/step-label.component.js +1 -1
- package/stepper/stepper/stepper.component.js +1 -1
- package/stepper.js +3 -3
- package/stepper.pure.js +3 -3
- package/{sticky-bar.component-dmlGAZLW.js → sticky-bar.component-DtXeRUqi.js} +1 -1
- package/styles-DV41ClRb.js +5 -0
- package/{tab-nav-bar.component-FT2W0urU.js → tab-nav-bar.component-CRC6xnaX.js} +1 -1
- package/table/table-wrapper/table-wrapper.component.js +1 -1
- package/table.js +1 -1
- package/table.pure.js +1 -1
- package/tabs/common/styles.js +1 -1
- package/tabs/tab/tab.component.js +1 -1
- package/tabs/tab-group/tab-group.component.js +1 -1
- package/tabs/tab-label/tab-label.component.js +1 -1
- package/tabs/tab-nav-bar/tab-nav-bar.component.js +1 -1
- package/tabs.js +5 -5
- package/tabs.pure.js +5 -5
- package/tag/tag/tag.component.js +1 -1
- package/tag/tag-group/tag-group.component.js +1 -1
- package/{tag-group.component-9UfHHJ79.js → tag-group.component-wnzXwLPf.js} +1 -1
- package/tag.js +2 -2
- package/tag.pure.js +2 -2
- package/teaser/teaser.component.js +1 -1
- package/teaser-hero/teaser-hero.component.js +1 -1
- package/teaser-hero.js +1 -1
- package/teaser-hero.pure.js +1 -1
- package/teaser-panel/teaser-panel.component.js +1 -1
- package/teaser-panel.js +1 -1
- package/teaser-panel.pure.js +1 -1
- package/teaser-product/common/teaser-product-common.js +1 -1
- package/teaser-product/teaser-product/teaser-product.component.js +1 -1
- package/teaser-product.js +2 -2
- package/teaser-product.pure.js +2 -2
- package/teaser.js +1 -1
- package/teaser.pure.js +1 -1
- package/time-input/time-input.component.js +1 -1
- package/time-input.js +1 -1
- package/time-input.pure.js +1 -1
- package/timetable-form/timetable-form/timetable-form.component.js +1 -1
- package/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
- package/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
- package/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +1 -1
- package/timetable-form.js +4 -4
- package/timetable-form.pure.js +4 -4
- package/timetable-occupancy/timetable-occupancy.component.js +1 -1
- package/timetable-occupancy-icon/timetable-occupancy-icon.component.js +1 -1
- package/timetable-occupancy-icon.js +1 -1
- package/timetable-occupancy-icon.pure.js +1 -1
- package/{timetable-occupancy.component-DGQ20zH1.js → timetable-occupancy.component-CIkq1cT7.js} +17 -13
- package/timetable-occupancy.js +1 -1
- package/timetable-occupancy.pure.js +1 -1
- package/title/title-base.js +1 -1
- package/title/title.component.js +1 -1
- package/{title-base-JBhKD3ur.js → title-base-B1xzk7Zb.js} +1 -1
- package/{title.component-VnTeqomb.js → title.component-DTnG8op9.js} +2 -2
- package/title.js +2 -2
- package/title.pure.js +2 -2
- package/toast/toast.component.js +1 -1
- package/{toast.component-BMN90Ouu.js → toast.component-Ew5vuGXf.js} +19 -19
- package/toast.js +1 -1
- package/toast.pure.js +1 -1
- package/toggle/toggle/toggle.component.js +1 -1
- package/toggle/toggle-option/toggle-option.component.js +1 -1
- package/toggle-check/toggle-check.component.js +1 -1
- package/toggle-check.js +1 -1
- package/toggle-check.pure.js +1 -1
- package/toggle.js +2 -2
- package/toggle.pure.js +2 -2
- package/tooltip/tooltip.component.js +1 -1
- package/{tooltip.component-NfyDxfw7.js → tooltip.component-ihyNBI7f.js} +25 -25
- package/tooltip.js +1 -1
- package/tooltip.pure.js +1 -1
- package/train/train/train.component.js +1 -1
- package/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
- package/train/train-formation/train-formation.component.js +1 -1
- package/train/train-wagon-common.js +1 -1
- package/{train-formation.component-DVxNBPIB.js → train-formation.component-CYqdWnkL.js} +1 -1
- package/{train-wagon-common-CDCsWVgi.js → train-wagon-common-C1Py1D01.js} +1 -1
- package/{train.component-DxadS7O8.js → train.component-DRLUjuXY.js} +1 -1
- package/train.js +4 -4
- package/train.pure.js +4 -4
- package/visual-checkbox/visual-checkbox.component.js +1 -1
- package/visual-checkbox.js +1 -1
- package/visual-checkbox.pure.js +1 -1
- package/a11y.css +0 -20
- package/animation.css +0 -14
- package/badge.css +0 -32
- package/core/decorators/host-attributes.js +0 -17
- package/core/eventing/throttle.js +0 -11
- package/core/styles/badge.scss +0 -3
- package/core/styles/mixins/badge.scss +0 -42
- package/core/styles/mixins/buttons.scss +0 -12
- package/core/styles/mixins/card.scss +0 -205
- package/core/styles/mixins/dev_and_debug.scss +0 -8
- package/core/styles/mixins/image.scss +0 -43
- package/core/styles/mixins/inputs.scss +0 -11
- package/core/styles/mixins/link.scss +0 -125
- package/core/styles/mixins/panel.scss +0 -80
- package/core/styles/mixins/popover.scss +0 -14
- package/core/styles/mixins/table.scss +0 -185
- package/core/styles/mixins/timetable-form.scss +0 -63
- package/core/styles/option-panel-common.global.scss +0 -11
- package/core/styles/option-panel-common.scss +0 -157
- package/core/styles/theme.scss +0 -20
- package/core/styles/timetable-form.scss +0 -27
- package/core/styles/typography.private.scss +0 -9
- package/core.css +0 -2713
- package/development/autocomplete-base-element-qnPoRLvM.js +0 -695
- package/development/breadcrumb-group.component-BUBfl6LV.js +0 -193
- package/development/calendar.component-CG96KGTg.js +0 -1469
- package/development/core/decorators/host-attributes.d.ts +0 -22
- package/development/core/decorators/host-attributes.d.ts.map +0 -1
- package/development/core/decorators/host-attributes.js +0 -41
- package/development/core/eventing/throttle.d.ts +0 -3
- package/development/core/eventing/throttle.d.ts.map +0 -1
- package/development/core/eventing/throttle.js +0 -18
- package/development/file-selector-common-mZ5UYxOF.js +0 -421
- package/development/flip-card.component-DujrPKzU.js +0 -185
- package/development/form-field.component-CPWBCHer.js +0 -702
- package/development/header-action-common-Be0XQge2.js +0 -86
- package/development/inline-link-common-gmt6yz3v.js +0 -18
- package/development/link-list.component-B90qHOUD.js +0 -97
- package/development/menu-action-common-DRXQc85Y.js +0 -32
- package/development/menu.component-Cv9wRj4H.js +0 -365
- package/development/navigation-list.component-Dvv-bZ2V.js +0 -86
- package/development/navigation-marker.component-DMqe-VlY.js +0 -120
- package/development/navigation.component-CqNkBvEs.js +0 -315
- package/development/optgroup-base-element-CLfE6pmz.js +0 -147
- package/development/option.component-CV6cZnJe.js +0 -131
- package/development/paginator.component-BwLUSpDj.js +0 -261
- package/development/popover.component-CKUZbWbV.js +0 -578
- package/development/radio-button-common-G0jLFo41.js +0 -129
- package/development/select.component-CUjF11sq.js +0 -807
- package/development/selection-expansion-panel.component-BT78Qhbf.js +0 -186
- package/development/sidebar-container.component-CxwDKxv9.js +0 -100
- package/development/skiplink-list.component-m7xm-pns.js +0 -129
- package/development/slider.component-D_nLTlRF.js +0 -346
- package/development/step-label.component-Bo7Z0w7N.js +0 -127
- package/development/stepper.component-BeqeUIRN.js +0 -443
- package/development/styles-Cctez2BS.js +0 -22
- package/development/tab-nav-bar.component-B_mi8GGR.js +0 -109
- package/development/tag-group.component-Db8prSBL.js +0 -194
- package/development/tag.component-DG1uxD28.js +0 -238
- package/development/teaser-product.component-DMyuB-cH.js +0 -37
- package/development/teaser.component-CF_NUbwJ.js +0 -116
- package/development/time-input.component-XxzRoupm.js +0 -187
- package/development/timetable-occupancy-icon.component-UBmyZsTO.js +0 -95
- package/development/timetable-occupancy.component-DMm242Fr.js +0 -122
- package/development/title-base-D_Rjyk_j.js +0 -102
- package/development/title.component-CMxYhTfw.js +0 -71
- package/development/toggle.component-B03k5qc1.js +0 -243
- package/development/tooltip.component-D8zik3p4.js +0 -369
- package/development/train-wagon-common-Dg-BjUtC.js +0 -441
- package/development/train.component-dECIGw2x.js +0 -239
- package/header-action-common-DuPx0U2o.js +0 -64
- package/inline-link-common-BqqH1ExY.js +0 -13
- package/layout.css +0 -30
- package/lists.css +0 -194
- package/normalize.css +0 -95
- package/paginator.component-DB8l-B6J.js +0 -208
- package/scrollbar.css +0 -124
- package/styles-DAMaYe4p.js +0 -5
- package/table.css +0 -261
- package/timetable-form.css +0 -73
- package/typography.css +0 -67
- /package/{compact-paginator.component-BAuShgQE.js → compact-paginator.component-B-8gf_qD.js} +0 -0
- /package/core/styles/{disable-animation.scss → disable-animation-extension.scss} +0 -0
- /package/core/styles/{node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables-as-css.scss → features/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables-as-css.scss} +0 -0
- /package/core/styles/{node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss → features/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss} +0 -0
- /package/core/styles/{normalize.scss → features/normalize.scss} +0 -0
- /package/core/styles/{scrollbar.private.scss → features/scrollbar.private.scss} +0 -0
- /package/core/styles/mixins/{animation.scss → _animation.scss} +0 -0
- /package/core/styles/mixins/{font-face.scss → _font-face.scss} +0 -0
- /package/core/styles/mixins/{layout.scss → _layout.scss} +0 -0
- /package/core/styles/mixins/{scrollbar.scss → _scrollbar.scss} +0 -0
- /package/{disable-animation.css → disable-animation-extension.css} +0 -0
- /package/{option.component-BeorlZT0.js → option.component-DiH8AMlV.js} +0 -0
- /package/{paginator-common-BWewgXga.js → paginator-common-C0Kn9ibe.js} +0 -0
- /package/{radio-button-common-CrIRn10q.js → radio-button-common-BDNSqXg-.js} +0 -0
- /package/{selection-action-panel.component-DCGJQ3Mx.js → selection-action-panel.component-Ba7N1Hgt.js} +0 -0
- /package/{selection-expansion-panel.component-Cu1egfTY.js → selection-expansion-panel.component-BL1FPfPM.js} +0 -0
- /package/{sidebar-close-button.component-8owwjvk3.js → sidebar-close-button.component-CLjOpBM2.js} +0 -0
- /package/{sidebar-container.component-Dcke-Uhr.js → sidebar-container.component-8filIF5E.js} +0 -0
- /package/{sidebar-content.component-CYupfsq_.js → sidebar-content.component-DMdjHDdq.js} +0 -0
- /package/{sidebar-title.component-Cf64lCJx.js → sidebar-title.component-DaIkBNY9.js} +0 -0
- /package/{sidebar.component-LaqQzMo2.js → sidebar.component-D_HLDNnq.js} +0 -0
- /package/{signet.component-3Xfke8uk.js → signet.component-6q3GxORI.js} +0 -0
- /package/{status.component-mel7wA1j.js → status.component-DMfZTgzz.js} +0 -0
- /package/{step-label.component-BGSaHafq.js → step-label.component-CjNZYk5b.js} +0 -0
- /package/{step.component-tJh-Pb_E.js → step.component-BCkwsZdk.js} +0 -0
- /package/{stepper.component-BCl77LVa.js → stepper.component-mq66fR06.js} +0 -0
- /package/{styles-DisU4TWi.js → styles-DWm_OYpV.js} +0 -0
- /package/{tab-group.component-CDhggNpe.js → tab-group.component-MEm2W7QR.js} +0 -0
- /package/{tab-label.component-BuF2qt1T.js → tab-label.component-BqznCfW8.js} +0 -0
- /package/{tab.component-D6hfhlZw.js → tab.component-DPwbvqp4.js} +0 -0
- /package/{table-wrapper.component-C83EYuZP.js → table-wrapper.component-LzYuAVPb.js} +0 -0
- /package/{tag.component-BKuxfdDi.js → tag.component-zGPaopTo.js} +0 -0
- /package/{teaser-hero.component-mv6HL4vm.js → teaser-hero.component-BlhffYux.js} +0 -0
- /package/{teaser-panel.component-qRmy2lbz.js → teaser-panel.component-BCbKgXVt.js} +0 -0
- /package/{teaser-product-common-J1KZ2Hlw.js → teaser-product-common-C_lgMbyC.js} +0 -0
- /package/{teaser-product.component-BcleFVcu.js → teaser-product.component-CQIXu7sq.js} +0 -0
- /package/{teaser.component-BOqCERR7.js → teaser.component-D9z78Eny.js} +0 -0
- /package/{time-input.component-Dw8pPYDK.js → time-input.component-CLHEoWze.js} +0 -0
- /package/{timetable-form-details.component-0c6h6shd.js → timetable-form-details.component-DJ3oPkQP.js} +0 -0
- /package/{timetable-form-field.component-Cya8n2Ms.js → timetable-form-field.component-6s8_sz9h.js} +0 -0
- /package/{timetable-form-swap-button.component-rI_0UYJw.js → timetable-form-swap-button.component-BY2m2_k9.js} +0 -0
- /package/{timetable-form.component-DVps6baq.js → timetable-form.component-Swe8BX7g.js} +0 -0
- /package/{timetable-occupancy-icon.component-ABh1bz-X.js → timetable-occupancy-icon.component-C44eSFOM.js} +0 -0
- /package/{toggle-check.component-BcQ5ht0O.js → toggle-check.component-Ce-klZJB.js} +0 -0
- /package/{toggle-option.component-DQcPDXyl.js → toggle-option.component-BdMfGuA-.js} +0 -0
- /package/{toggle.component-DARkqJol.js → toggle.component-ySmrXvjA.js} +0 -0
- /package/{train-blocked-passage.component-B601YYJl.js → train-blocked-passage.component-UnNCmspZ.js} +0 -0
- /package/{visual-checkbox.component-YhX5Qk3j.js → visual-checkbox.component-JmGORoDU.js} +0 -0
|
@@ -317,4 +317,4 @@ var SbbExpansionPanelElement = (() => {
|
|
|
317
317
|
//#endregion
|
|
318
318
|
export { SbbExpansionPanelElement as t };
|
|
319
319
|
|
|
320
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC1EY0ZyV2tJdC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbi8vIE9wZW4vQ2xvc2UgYW5pbWF0aW9uIHZhcnNcbiRvcGVuLWFuaW0tcm93cy1mcm9tOiAwZnI7XG4kb3Blbi1hbmltLXJvd3MtdG86IDFmcjtcbiRvcGVuLWFuaW0tb3BhY2l0eS1mcm9tOiAwO1xuJG9wZW4tYW5pbS1vcGFjaXR5LXRvOiAxO1xuXG46aG9zdCB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1hbmltYXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTR4KVxuICApO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWNvbG9yOiB2YXIoLS1zYmItYm9yZGVyLWNvbG9yLTQtaW52ZXJ0ZWQpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXdpZHRoOiB2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KTtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItY29sb3IpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWJsb2NrLXN0YXJ0LXdpZHRoOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci13aWR0aCk7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1lbmQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtc3RhcnQtc3RhcnQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtZW5kLWVuZC1yYWRpdXM6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXJhZGl1cyk7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1lbmQtc3RhcnQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJhY2tncm91bmQtY29sb3IpO1xuICBib3JkZXI6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1jb2xvcik7XG4gIGJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtY29sb3IpO1xuICBib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWJsb2NrLXN0YXJ0LXdpZHRoKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1zdGFydC1yYWRpdXMpXG4gICAgdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1lbmQtcmFkaXVzKSB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWVuZC1lbmQtcmFkaXVzKVxuICAgIHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtZW5kLXN0YXJ0LXJhZGl1cyk7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG59XG5cbjpob3N0KFtzaXplPSdzJ10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLXRpdGxlLWdhcDogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC10aXRsZS1nYXAtcyk7XG59XG5cbjpob3N0KFtzaXplPSdsJ10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLXRpdGxlLWdhcDogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC10aXRsZS1nYXAtbCk7XG59XG5cbjpob3N0KDpub3QoW3NpemVdKSkge1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtdGl0bGUtZ2FwOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLXRpdGxlLWdhcC1kZWZhdWx0KTtcbn1cblxuOmhvc3QoW2Rpc2FibGVkXSkge1xuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1jb2xvcjogR3JheVRleHQ7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogR3JheVRleHQ7XG4gIH1cbn1cblxuOmhvc3QoW2V4cGFuZGVkXSkge1xuICAtLV9zYmItZXhwYW5zaW9uLXBhbmVsLWRpc3BsYXktZXhwYW5kZWQ6IGdyaWQ7XG59XG5cbjpob3N0KDpzdGF0ZShhY2NvcmRpb24pOnN0YXRlKGFjY29yZGlvbi1maXJzdCkpIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLXN0YXJ0LWVuZC1yYWRpdXM6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXJhZGl1cyk7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1zdGFydC1yYWRpdXM6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXJhZGl1cyk7XG59XG5cbjpob3N0KDpzdGF0ZShhY2NvcmRpb24pOm5vdCg6c3RhdGUoYWNjb3JkaW9uLWZpcnN0KSkpIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogMDtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1lbmQtcmFkaXVzOiAwO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtc3RhcnQtc3RhcnQtcmFkaXVzOiAwO1xufVxuXG46aG9zdCg6c3RhdGUoYWNjb3JkaW9uKTpzdGF0ZShhY2NvcmRpb24tbGFzdCkpIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWVuZC1lbmQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtZW5kLXN0YXJ0LXJhZGl1czogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItcmFkaXVzKTtcbn1cblxuOmhvc3QoOnN0YXRlKGFjY29yZGlvbik6bm90KDpzdGF0ZShhY2NvcmRpb24tbGFzdCkpKSB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1lbmQtZW5kLXJhZGl1czogMDtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWVuZC1zdGFydC1yYWRpdXM6IDA7XG59XG5cbjpob3N0KFtjb2xvcj0nd2hpdGUnXSkge1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMSk7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zKTtcbn1cblxuOmhvc3QoW2NvbG9yPSdtaWxrJ10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMSk7XG59XG5cbjpob3N0KFtib3JkZXJsZXNzXSkge1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXdpZHRoOiAwO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogMDtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItd2lkdGg6IHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMXgpO1xuICAgIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXdpZHRoKTtcbiAgfVxufVxuXG46aG9zdChbYm9yZGVybGVzc106c3RhdGUoYWNjb3JkaW9uKTpub3QoOnN0YXRlKGFjY29yZGlvbi1maXJzdCkpKSB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTF4KTtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogMDtcbiAgfVxufVxuXG46aG9zdCg6bm90KFtkaXNhYmxlZF0pOnN0YXRlKHRvZ2dsZS1ob3ZlcikpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyKTtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1jb2xvcjogSGlnaGxpZ2h0O1xuICAgIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtY29sb3I6IEhpZ2hsaWdodDtcbiAgfVxufVxuXG4uc2JiLWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4uc2JiLWV4cGFuc2lvbi1wYW5lbF9fY29udGVudC13cmFwcGVyIHtcbiAgZGlzcGxheTogdmFyKC0tX3NiYi1leHBhbnNpb24tcGFuZWwtZGlzcGxheS1leHBhbmRlZCwgbm9uZSk7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogI3skb3Blbi1hbmltLXJvd3MtZnJvbX07XG4gIG9wYWNpdHk6ICN7JG9wZW4tYW5pbS1vcGFjaXR5LWZyb219O1xuXG4gIDpob3N0KDpzdGF0ZShzdGF0ZS1vcGVuZWQpKSAmIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLXRvfTtcbiAgICBvcGFjaXR5OiAjeyRvcGVuLWFuaW0tb3BhY2l0eS10b307XG4gIH1cblxuICA6aG9zdCg6c3RhdGUoc3RhdGUtb3BlbmluZykpICYge1xuICAgIGFuaW1hdGlvbi1uYW1lOiBvcGVuLCBvcGVuLW9wYWNpdHk7XG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLWFuaW1hdGlvbi1lYXNpbmcpO1xuICAgIGFuaW1hdGlvbi1kZWxheTogMHMsIHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgfVxuXG4gIDpob3N0KDpzdGF0ZShzdGF0ZS1jbG9zaW5nKSkgJiB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgYW5pbWF0aW9uLW5hbWU6IGNsb3NlO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1hbmltYXRpb24tZWFzaW5nKTtcbiAgfVxufVxuXG4uc2JiLWV4cGFuc2lvbi1wYW5lbF9fY29udGVudCB7XG4gIC8vIEVuYWJsZXMgb3ZlcmZsb3cgZm9yIGNvbnRlbnRcbiAgbWluLWhlaWdodDogMDtcbiAgbWluLXdpZHRoOiAwO1xufVxuXG5Aa2V5ZnJhbWVzIG9wZW4ge1xuICBmcm9tIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLWZyb219O1xuICB9XG5cbiAgdG8ge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogI3skb3Blbi1hbmltLXJvd3MtdG99O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgb3Blbi1vcGFjaXR5IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktZnJvbX07XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktdG99O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgY2xvc2Uge1xuICBmcm9tIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLXRvfTtcbiAgICBvcGFjaXR5OiAjeyRvcGVuLWFuaW0tb3BhY2l0eS10b307XG4gIH1cblxuICB0byB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAjeyRvcGVuLWFuaW0tcm93cy1mcm9tfTtcbiAgICBvcGFjaXR5OiAjeyRvcGVuLWFuaW0tb3BhY2l0eS1mcm9tfTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgaHRtbCwgbm90aGluZywgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQge1xuICBmb3JjZVR5cGUsXG4gIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uLFxuICBTYmJFbGVtZW50LFxuICB0eXBlIFNiYkhlYWRpbmdMZXZlbCxcbiAgdHlwZSBTYmJPcGVuZWRDbG9zZWRTdGF0ZSxcbiAgybVzdGF0ZUNvbnRyb2xsZXIsXG59IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJFeHBhbnNpb25QYW5lbENvbnRlbnRFbGVtZW50IH0gZnJvbSAnLi4vZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQvZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQuY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRXhwYW5zaW9uUGFuZWxIZWFkZXJFbGVtZW50IH0gZnJvbSAnLi4vZXhwYW5zaW9uLXBhbmVsLWhlYWRlci9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2V4cGFuc2lvbi1wYW5lbC5zY3NzP2lubGluZSc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGFuIGV4cGFuZGFibGUgc3VtbWFyeS1kZXRhaWxzIHdpZGdldC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBhIGBzYmItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcmAgYW5kIGEgYHNiYi1leHBhbnNpb24tcGFuZWwtY29udGVudGAgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkV4cGFuc2lvblBhbmVsRWxlbWVudCBleHRlbmRzIFNiYkVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLWV4cGFuc2lvbi1wYW5lbCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFt1bnNhZmVDU1Moc3R5bGUpXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgYmVmb3Jlb3BlbjogJ2JlZm9yZW9wZW4nLFxuICAgIG9wZW46ICdvcGVuJyxcbiAgICBiZWZvcmVjbG9zZTogJ2JlZm9yZWNsb3NlJyxcbiAgICBjbG9zZTogJ2Nsb3NlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogSGVhZGluZyBsZXZlbDsgaWYgdW5zZXQsIGEgYGRpdmAgd2lsbCBiZSByZW5kZXJlZC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAndGl0bGUtbGV2ZWwnIH0pIHB1YmxpYyBhY2Nlc3NvciB0aXRsZUxldmVsOiBTYmJIZWFkaW5nTGV2ZWwgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHBhbmVsLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBjb2xvcjogJ3doaXRlJyB8ICdtaWxrJyA9ICd3aGl0ZSc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHBhbmVsIGlzIGV4cGFuZGVkLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBzZXQgZXhwYW5kZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9leHBhbmRlZCA9IHZhbHVlO1xuICAgIHRoaXMuX29uRXhwYW5kZWRDaGFuZ2UoKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9leHBhbmRlZDtcbiAgfVxuICBwcml2YXRlIF9leHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBwYW5lbCBpcyBkaXNhYmxlZCwgc28gaXRzIGV4cGFuZGVkIHN0YXRlIGNhbid0IGJlIGNoYW5nZWQuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy5fdXBkYXRlRGlzYWJsZWRPbkhlYWRlcih0aGlzLl9kaXNhYmxlZCk7XG4gIH1cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgcGFuZWwgaGFzIG5vIGJvcmRlci4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGJvcmRlcmxlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgcyAobGVhbiB0aGVtZSBkZWZhdWx0KSBvciBsIChzdGFuZGFyZCB0aGVtZSBkZWZhdWx0KS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdsJyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUaGUgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgcHJpdmF0ZSBzZXQgX3N0YXRlKHN0YXRlOiBTYmJPcGVuZWRDbG9zZWRTdGF0ZSkge1xuICAgIGlmICh0aGlzLl9zdGF0ZUludGVybmFsKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKGBzdGF0ZS0ke3RoaXMuX3N0YXRlSW50ZXJuYWx9YCk7XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlSW50ZXJuYWwgPSBzdGF0ZTtcbiAgICBpZiAodGhpcy5fc3RhdGVJbnRlcm5hbCkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZChgc3RhdGUtJHt0aGlzLl9zdGF0ZUludGVybmFsfWApO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGdldCBfc3RhdGUoKTogU2JiT3BlbmVkQ2xvc2VkU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZUludGVybmFsO1xuICB9XG4gIHByaXZhdGUgX3N0YXRlSW50ZXJuYWwhOiBTYmJPcGVuZWRDbG9zZWRTdGF0ZTtcblxuICBwcml2YXRlIF9wcm9ncmVzc2l2ZUlkID0gYC0keysrbmV4dElkfWA7XG4gIHByaXZhdGUgX2hlYWRlclJlZj86IFNiYkV4cGFuc2lvblBhbmVsSGVhZGVyRWxlbWVudDtcbiAgcHJpdmF0ZSBfY29udGVudFJlZj86IFNiYkV4cGFuc2lvblBhbmVsQ29udGVudEVsZW1lbnQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLl9zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCd0b2dnbGVleHBhbmRlZCcsIChldjogRXZlbnQpID0+IHtcbiAgICAgIGlmIChldi50YXJnZXQgPT09IHRoaXMuX2hlYWRlclJlZikge1xuICAgICAgICB0aGlzLl90b2dnbGVFeHBhbmRlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnYWNjb3JkaW9uJywgISF0aGlzLmNsb3Nlc3Q/Lignc2JiLWFjY29yZGlvbicpKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoJ2FjY29yZGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdG9nZ2xlRXhwYW5kZWQoKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25FeHBhbmRlZENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkZXJSZWY/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIFN0cmluZyh0aGlzLmV4cGFuZGVkKSk7XG4gICAgdGhpcy5fY29udGVudFJlZj8uc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIFN0cmluZyghdGhpcy5leHBhbmRlZCkpO1xuXG4gICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuX29wZW4oKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3N0YXRlID09PSAnb3BlbmVkJykge1xuICAgICAgdGhpcy5fY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gJ29wZW5pbmcnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JlZm9yZW9wZW4nKSk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgb3BlbmVkYCBzdGF0ZS5cbiAgICBpZiAoIXRoaXMuaGFzVXBkYXRlZCB8fCB0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWV4cGFuc2lvbi1wYW5lbGAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmVmb3JlY2xvc2UnKSk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItZXhwYW5zaW9uLXBhbmVsLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIGlzIG9wZW5lZC4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdvcGVuJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIGlzIGNsb3NlZC4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjbG9zZScpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZURpc2FibGVkT25IZWFkZXIobmV3RGlzYWJsZWRWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9oZWFkZXJSZWYpIHtcbiAgICAgIHRoaXMuX2hlYWRlclJlZi5kaXNhYmxlZCA9IG5ld0Rpc2FibGVkVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb20odGhpcy5jaGlsZHJlbiA/PyBbXSk7XG4gICAgY29uc3QgaGVhZGVyID0gY2hpbGRyZW4uZmluZChcbiAgICAgIChlKTogZSBpcyBTYmJFeHBhbnNpb25QYW5lbEhlYWRlckVsZW1lbnQgPT4gZS5sb2NhbE5hbWUgPT09ICdzYmItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcicsXG4gICAgKTtcbiAgICBjb25zdCBjb250ZW50ID0gY2hpbGRyZW4uZmluZChcbiAgICAgIChlKTogZSBpcyBTYmJFeHBhbnNpb25QYW5lbENvbnRlbnRFbGVtZW50ID0+IGUubG9jYWxOYW1lID09PSAnc2JiLWV4cGFuc2lvbi1wYW5lbC1jb250ZW50JyxcbiAgICApO1xuICAgIGlmICh0aGlzLl9oZWFkZXJSZWYgPT09IGhlYWRlciAmJiB0aGlzLl9jb250ZW50UmVmID09PSBjb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChoZWFkZXIgJiYgdGhpcy5faGVhZGVyUmVmICE9PSBoZWFkZXIpIHtcbiAgICAgIGhlYWRlci5pZCB8fD0gYHNiYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyJHt0aGlzLl9wcm9ncmVzc2l2ZUlkfWA7XG4gICAgICBoZWFkZXIuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgU3RyaW5nKHRoaXMuZXhwYW5kZWQpKTtcbiAgICAgIGhlYWRlci50b2dnbGVBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgdGhpcy5kaXNhYmxlZCk7XG4gICAgfVxuICAgIGlmIChjb250ZW50ICYmIHRoaXMuX2NvbnRlbnRSZWYgIT09IGNvbnRlbnQpIHtcbiAgICAgIGNvbnRlbnQuaWQgfHw9IGBzYmItZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQke3RoaXMuX3Byb2dyZXNzaXZlSWR9YDtcbiAgICAgIGNvbnRlbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIFN0cmluZyghdGhpcy5leHBhbmRlZCkpO1xuICAgIH1cblxuICAgIHRoaXMuX2hlYWRlclJlZiA9IGhlYWRlcjtcbiAgICB0aGlzLl9jb250ZW50UmVmID0gY29udGVudDtcbiAgICBpZiAodGhpcy5faGVhZGVyUmVmICYmIHRoaXMuX2NvbnRlbnRSZWYpIHtcbiAgICAgIHRoaXMuX2hlYWRlclJlZi5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCB0aGlzLl9jb250ZW50UmVmLmlkKTtcbiAgICAgIHRoaXMuX2NvbnRlbnRSZWYuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCB0aGlzLl9oZWFkZXJSZWYuaWQpO1xuICAgICAgybVzdGF0ZUNvbnRyb2xsZXIodGhpcy5fY29udGVudFJlZikudG9nZ2xlKFxuICAgICAgICAnaWNvbi1zcGFjZScsXG4gICAgICAgIMm1c3RhdGVDb250cm9sbGVyKHRoaXMuX2hlYWRlclJlZikuaGFzKCdpY29uJyksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3Blbi1vcGFjaXR5JyAmJiB0aGlzLl9zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnICYmIHRoaXMuX3N0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXZcbiAgICAgICAgcm9sZT0ke3RoaXMudGl0bGVMZXZlbCA/ICdoZWFkaW5nJyA6IG5vdGhpbmd9XG4gICAgICAgIGFyaWEtbGV2ZWw9JHt0aGlzLnRpdGxlTGV2ZWwgfHwgbm90aGluZ31cbiAgICAgICAgY2xhc3M9XCJzYmItZXhwYW5zaW9uLXBhbmVsX19oZWFkZXJcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1leHBhbnNpb24tcGFuZWxfX2NvbnRlbnQtd3JhcHBlclwiIEBhbmltYXRpb25lbmQ9JHt0aGlzLl9vbkFuaW1hdGlvbkVuZH0+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWV4cGFuc2lvbi1wYW5lbF9fY29udGVudFwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJjb250ZW50XCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1leHBhbnNpb24tcGFuZWwnOiBTYmJFeHBhbnNpb25QYW5lbEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUNnQkEsSUFBSSxTQUFTOzs7Ozs7SUFPQSxrQ0FBd0I7bUJBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FBakMsaUNBQWlDLFlBQVU7Ozs2QkFXckQsU0FBUyxFQUFFLFdB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
|
|
320
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC1EY0ZyV2tJdC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbi8vIE9wZW4vQ2xvc2UgYW5pbWF0aW9uIHZhcnNcbiRvcGVuLWFuaW0tcm93cy1mcm9tOiAwZnI7XG4kb3Blbi1hbmltLXJvd3MtdG86IDFmcjtcbiRvcGVuLWFuaW0tb3BhY2l0eS1mcm9tOiAwO1xuJG9wZW4tYW5pbS1vcGFjaXR5LXRvOiAxO1xuXG46aG9zdCB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1hbmltYXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTR4KVxuICApO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWNvbG9yOiB2YXIoLS1zYmItYm9yZGVyLWNvbG9yLTQtaW52ZXJ0ZWQpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXdpZHRoOiB2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KTtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItY29sb3IpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWJsb2NrLXN0YXJ0LXdpZHRoOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci13aWR0aCk7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1lbmQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtc3RhcnQtc3RhcnQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtZW5kLWVuZC1yYWRpdXM6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXJhZGl1cyk7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1lbmQtc3RhcnQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJhY2tncm91bmQtY29sb3IpO1xuICBib3JkZXI6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1jb2xvcik7XG4gIGJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtY29sb3IpO1xuICBib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWJsb2NrLXN0YXJ0LXdpZHRoKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1zdGFydC1yYWRpdXMpXG4gICAgdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1lbmQtcmFkaXVzKSB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWVuZC1lbmQtcmFkaXVzKVxuICAgIHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtZW5kLXN0YXJ0LXJhZGl1cyk7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG59XG5cbjpob3N0KFtzaXplPSdzJ10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLXRpdGxlLWdhcDogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC10aXRsZS1nYXAtcyk7XG59XG5cbjpob3N0KFtzaXplPSdsJ10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLXRpdGxlLWdhcDogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC10aXRsZS1nYXAtbCk7XG59XG5cbjpob3N0KDpub3QoW3NpemVdKSkge1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtdGl0bGUtZ2FwOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLXRpdGxlLWdhcC1kZWZhdWx0KTtcbn1cblxuOmhvc3QoW2Rpc2FibGVkXSkge1xuICBAbWVkaWEgKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSkge1xuICAgIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItY29sb3I6IEdyYXlUZXh0O1xuICAgIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtY29sb3I6IEdyYXlUZXh0O1xuICB9XG59XG5cbjpob3N0KFtleHBhbmRlZF0pIHtcbiAgLS1fc2JiLWV4cGFuc2lvbi1wYW5lbC1kaXNwbGF5LWV4cGFuZGVkOiBncmlkO1xufVxuXG46aG9zdCg6c3RhdGUoYWNjb3JkaW9uKTpzdGF0ZShhY2NvcmRpb24tZmlyc3QpKSB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1lbmQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtc3RhcnQtc3RhcnQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xufVxuXG46aG9zdCg6c3RhdGUoYWNjb3JkaW9uKTpub3QoOnN0YXRlKGFjY29yZGlvbi1maXJzdCkpKSB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IDA7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtc3RhcnQtZW5kLXJhZGl1czogMDtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLXN0YXJ0LXN0YXJ0LXJhZGl1czogMDtcbn1cblxuOmhvc3QoOnN0YXRlKGFjY29yZGlvbik6c3RhdGUoYWNjb3JkaW9uLWxhc3QpKSB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1lbmQtZW5kLXJhZGl1czogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItcmFkaXVzKTtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWVuZC1zdGFydC1yYWRpdXM6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXJhZGl1cyk7XG59XG5cbjpob3N0KDpzdGF0ZShhY2NvcmRpb24pOm5vdCg6c3RhdGUoYWNjb3JkaW9uLWxhc3QpKSkge1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtZW5kLWVuZC1yYWRpdXM6IDA7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1lbmQtc3RhcnQtcmFkaXVzOiAwO1xufVxuXG46aG9zdChbY29sb3I9J3doaXRlJ10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTEpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMyk7XG59XG5cbjpob3N0KFtjb2xvcj0nbWlsayddKSB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zKTtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJhY2tncm91bmQtY29sb3ItaG92ZXI6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTEpO1xufVxuXG46aG9zdChbYm9yZGVybGVzc10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci13aWR0aDogMDtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IDA7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gIEBtZWRpYSAoZm9yY2VkLWNvbG9yczogYWN0aXZlKSB7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci13aWR0aDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCk7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItd2lkdGgpO1xuICB9XG59XG5cbjpob3N0KFtib3JkZXJsZXNzXTpzdGF0ZShhY2NvcmRpb24pOm5vdCg6c3RhdGUoYWNjb3JkaW9uLWZpcnN0KSkpIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMXgpO1xuXG4gIEBtZWRpYSAoZm9yY2VkLWNvbG9yczogYWN0aXZlKSB7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogMDtcbiAgfVxufVxuXG46aG9zdCg6bm90KFtkaXNhYmxlZF0pOnN0YXRlKHRvZ2dsZS1ob3ZlcikpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyKTtcblxuICBAbWVkaWEgKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSkge1xuICAgIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItY29sb3I6IEhpZ2hsaWdodDtcbiAgICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yOiBIaWdobGlnaHQ7XG4gIH1cbn1cblxuLnNiYi1leHBhbnNpb24tcGFuZWxfX2hlYWRlciB7XG4gIG1hcmdpbjogMDtcbn1cblxuLnNiYi1leHBhbnNpb24tcGFuZWxfX2NvbnRlbnQtd3JhcHBlciB7XG4gIGRpc3BsYXk6IHZhcigtLV9zYmItZXhwYW5zaW9uLXBhbmVsLWRpc3BsYXktZXhwYW5kZWQsIG5vbmUpO1xuICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLWZyb219O1xuICBvcGFjaXR5OiAjeyRvcGVuLWFuaW0tb3BhY2l0eS1mcm9tfTtcblxuICA6aG9zdCg6c3RhdGUoc3RhdGUtb3BlbmVkKSkgJiB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAjeyRvcGVuLWFuaW0tcm93cy10b307XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktdG99O1xuICB9XG5cbiAgOmhvc3QoOnN0YXRlKHN0YXRlLW9wZW5pbmcpKSAmIHtcbiAgICBhbmltYXRpb24tbmFtZTogb3Blbiwgb3Blbi1vcGFjaXR5O1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1hbmltYXRpb24tZWFzaW5nKTtcbiAgICBhbmltYXRpb24tZGVsYXk6IDBzLCB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gIH1cblxuICA6aG9zdCg6c3RhdGUoc3RhdGUtY2xvc2luZykpICYge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIGFuaW1hdGlvbi1uYW1lOiBjbG9zZTtcbiAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG4gIH1cbn1cblxuLnNiYi1leHBhbnNpb24tcGFuZWxfX2NvbnRlbnQge1xuICAvLyBFbmFibGVzIG92ZXJmbG93IGZvciBjb250ZW50XG4gIG1pbi1oZWlnaHQ6IDA7XG4gIG1pbi13aWR0aDogMDtcbn1cblxuQGtleWZyYW1lcyBvcGVuIHtcbiAgZnJvbSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAjeyRvcGVuLWFuaW0tcm93cy1mcm9tfTtcbiAgfVxuXG4gIHRvIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLXRvfTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIG9wZW4tb3BhY2l0eSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6ICN7JG9wZW4tYW5pbS1vcGFjaXR5LWZyb219O1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6ICN7JG9wZW4tYW5pbS1vcGFjaXR5LXRvfTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGNsb3NlIHtcbiAgZnJvbSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAjeyRvcGVuLWFuaW0tcm93cy10b307XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktdG99O1xuICB9XG5cbiAgdG8ge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogI3skb3Blbi1hbmltLXJvd3MtZnJvbX07XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktZnJvbX07XG4gIH1cbn1cbiIsImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGh0bWwsIG5vdGhpbmcsIHR5cGUgVGVtcGxhdGVSZXN1bHQsIHVuc2FmZUNTUyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBpc1plcm9BbmltYXRpb25EdXJhdGlvbixcbiAgU2JiRWxlbWVudCxcbiAgdHlwZSBTYmJIZWFkaW5nTGV2ZWwsXG4gIHR5cGUgU2JiT3BlbmVkQ2xvc2VkU3RhdGUsXG4gIMm1c3RhdGVDb250cm9sbGVyLFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRXhwYW5zaW9uUGFuZWxDb250ZW50RWxlbWVudCB9IGZyb20gJy4uL2V4cGFuc2lvbi1wYW5lbC1jb250ZW50L2V4cGFuc2lvbi1wYW5lbC1jb250ZW50LmNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkV4cGFuc2lvblBhbmVsSGVhZGVyRWxlbWVudCB9IGZyb20gJy4uL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIvZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9leHBhbnNpb24tcGFuZWwuc2Nzcz9pbmxpbmUnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBleHBhbmRhYmxlIHN1bW1hcnktZGV0YWlscyB3aWRnZXQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYSBgc2JiLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJgIGFuZCBhIGBzYmItZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRgIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJFeHBhbnNpb25QYW5lbEVsZW1lbnQgZXh0ZW5kcyBTYmJFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1leHBhbnNpb24tcGFuZWwnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbdW5zYWZlQ1NTKHN0eWxlKV07XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGJlZm9yZW9wZW46ICdiZWZvcmVvcGVuJyxcbiAgICBvcGVuOiAnb3BlbicsXG4gICAgYmVmb3JlY2xvc2U6ICdiZWZvcmVjbG9zZScsXG4gICAgY2xvc2U6ICdjbG9zZScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIEhlYWRpbmcgbGV2ZWw7IGlmIHVuc2V0LCBhIGBkaXZgIHdpbGwgYmUgcmVuZGVyZWQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3RpdGxlLWxldmVsJyB9KSBwdWJsaWMgYWNjZXNzb3IgdGl0bGVMZXZlbDogU2JiSGVhZGluZ0xldmVsIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBwYW5lbC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3IgY29sb3I6ICd3aGl0ZScgfCAnbWlsaycgPSAnd2hpdGUnO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBwYW5lbCBpcyBleHBhbmRlZC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZXhwYW5kZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl9vbkV4cGFuZGVkQ2hhbmdlKCk7XG4gIH1cbiAgcHVibGljIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZXhwYW5kZWQ7XG4gIH1cbiAgcHJpdmF0ZSBfZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgcGFuZWwgaXMgZGlzYWJsZWQsIHNvIGl0cyBleHBhbmRlZCBzdGF0ZSBjYW4ndCBiZSBjaGFuZ2VkLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuX3VwZGF0ZURpc2FibGVkT25IZWFkZXIodGhpcy5fZGlzYWJsZWQpO1xuICB9XG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHBhbmVsIGhhcyBubyBib3JkZXIuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBib3JkZXJsZXNzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNpemUgdmFyaWFudCwgZWl0aGVyIHMgKGxlYW4gdGhlbWUgZGVmYXVsdCkgb3IgbCAoc3RhbmRhcmQgdGhlbWUgZGVmYXVsdCkuXG4gICAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBzaXplOiAncycgfCAnbCcgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuICovXG4gIHByaXZhdGUgc2V0IF9zdGF0ZShzdGF0ZTogU2JiT3BlbmVkQ2xvc2VkU3RhdGUpIHtcbiAgICBpZiAodGhpcy5fc3RhdGVJbnRlcm5hbCkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShgc3RhdGUtJHt0aGlzLl9zdGF0ZUludGVybmFsfWApO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0ZUludGVybmFsID0gc3RhdGU7XG4gICAgaWYgKHRoaXMuX3N0YXRlSW50ZXJuYWwpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoYHN0YXRlLSR7dGhpcy5fc3RhdGVJbnRlcm5hbH1gKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBnZXQgX3N0YXRlKCk6IFNiYk9wZW5lZENsb3NlZFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGVJbnRlcm5hbDtcbiAgfVxuICBwcml2YXRlIF9zdGF0ZUludGVybmFsITogU2JiT3BlbmVkQ2xvc2VkU3RhdGU7XG5cbiAgcHJpdmF0ZSBfcHJvZ3Jlc3NpdmVJZCA9IGAtJHsrK25leHRJZH1gO1xuICBwcml2YXRlIF9oZWFkZXJSZWY/OiBTYmJFeHBhbnNpb25QYW5lbEhlYWRlckVsZW1lbnQ7XG4gIHByaXZhdGUgX2NvbnRlbnRSZWY/OiBTYmJFeHBhbnNpb25QYW5lbENvbnRlbnRFbGVtZW50O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5fc3RhdGUgPSAnY2xvc2VkJztcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LigndG9nZ2xlZXhwYW5kZWQnLCAoZXY6IEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXYudGFyZ2V0ID09PSB0aGlzLl9oZWFkZXJSZWYpIHtcbiAgICAgICAgdGhpcy5fdG9nZ2xlRXhwYW5kZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2FjY29yZGlvbicsICEhdGhpcy5jbG9zZXN0Py4oJ3NiYi1hY2NvcmRpb24nKSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKCdhY2NvcmRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RvZ2dsZUV4cGFuZGVkKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcbiAgfVxuXG4gIHByaXZhdGUgX29uRXhwYW5kZWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5faGVhZGVyUmVmPy5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBTdHJpbmcodGhpcy5leHBhbmRlZCkpO1xuICAgIHRoaXMuX2NvbnRlbnRSZWY/LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCBTdHJpbmcoIXRoaXMuZXhwYW5kZWQpKTtcblxuICAgIGlmICh0aGlzLmV4cGFuZGVkKSB7XG4gICAgICB0aGlzLl9vcGVuKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9zdGF0ZSA9PT0gJ29wZW5lZCcpIHtcbiAgICAgIHRoaXMuX2Nsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZXhwYW5zaW9uLXBhbmVsYCBzdGFydHMgdGhlIG9wZW5pbmcgdHJhbnNpdGlvbi4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdiZWZvcmVvcGVuJykpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKCF0aGlzLmhhc1VwZGF0ZWQgfHwgdGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Nsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gJ2Nsb3NpbmcnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIGJlZ2lucyB0aGUgY2xvc2luZyB0cmFuc2l0aW9uLiAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JlZm9yZWNsb3NlJykpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLWV4cGFuc2lvbi1wYW5lbC1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAnb3BlbmVkJztcbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZXhwYW5zaW9uLXBhbmVsYCBpcyBvcGVuZWQuICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnb3BlbicpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAnY2xvc2VkJztcbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZXhwYW5zaW9uLXBhbmVsYCBpcyBjbG9zZWQuICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2xvc2UnKSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVEaXNhYmxlZE9uSGVhZGVyKG5ld0Rpc2FibGVkVmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faGVhZGVyUmVmKSB7XG4gICAgICB0aGlzLl9oZWFkZXJSZWYuZGlzYWJsZWQgPSBuZXdEaXNhYmxlZFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVNsb3RjaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4gPz8gW10pO1xuICAgIGNvbnN0IGhlYWRlciA9IGNoaWxkcmVuLmZpbmQoXG4gICAgICAoZSk6IGUgaXMgU2JiRXhwYW5zaW9uUGFuZWxIZWFkZXJFbGVtZW50ID0+IGUubG9jYWxOYW1lID09PSAnc2JiLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXInLFxuICAgICk7XG4gICAgY29uc3QgY29udGVudCA9IGNoaWxkcmVuLmZpbmQoXG4gICAgICAoZSk6IGUgaXMgU2JiRXhwYW5zaW9uUGFuZWxDb250ZW50RWxlbWVudCA9PiBlLmxvY2FsTmFtZSA9PT0gJ3NiYi1leHBhbnNpb24tcGFuZWwtY29udGVudCcsXG4gICAgKTtcbiAgICBpZiAodGhpcy5faGVhZGVyUmVmID09PSBoZWFkZXIgJiYgdGhpcy5fY29udGVudFJlZiA9PT0gY29udGVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaGVhZGVyICYmIHRoaXMuX2hlYWRlclJlZiAhPT0gaGVhZGVyKSB7XG4gICAgICBoZWFkZXIuaWQgfHw9IGBzYmItZXhwYW5zaW9uLXBhbmVsLWhlYWRlciR7dGhpcy5fcHJvZ3Jlc3NpdmVJZH1gO1xuICAgICAgaGVhZGVyLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIFN0cmluZyh0aGlzLmV4cGFuZGVkKSk7XG4gICAgICBoZWFkZXIudG9nZ2xlQXR0cmlidXRlKCdkaXNhYmxlZCcsIHRoaXMuZGlzYWJsZWQpO1xuICAgIH1cbiAgICBpZiAoY29udGVudCAmJiB0aGlzLl9jb250ZW50UmVmICE9PSBjb250ZW50KSB7XG4gICAgICBjb250ZW50LmlkIHx8PSBgc2JiLWV4cGFuc2lvbi1wYW5lbC1jb250ZW50JHt0aGlzLl9wcm9ncmVzc2l2ZUlkfWA7XG4gICAgICBjb250ZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCBTdHJpbmcoIXRoaXMuZXhwYW5kZWQpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9oZWFkZXJSZWYgPSBoZWFkZXI7XG4gICAgdGhpcy5fY29udGVudFJlZiA9IGNvbnRlbnQ7XG4gICAgaWYgKHRoaXMuX2hlYWRlclJlZiAmJiB0aGlzLl9jb250ZW50UmVmKSB7XG4gICAgICB0aGlzLl9oZWFkZXJSZWYuc2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJywgdGhpcy5fY29udGVudFJlZi5pZCk7XG4gICAgICB0aGlzLl9jb250ZW50UmVmLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JywgdGhpcy5faGVhZGVyUmVmLmlkKTtcbiAgICAgIMm1c3RhdGVDb250cm9sbGVyKHRoaXMuX2NvbnRlbnRSZWYpLnRvZ2dsZShcbiAgICAgICAgJ2ljb24tc3BhY2UnLFxuICAgICAgICDJtXN0YXRlQ29udHJvbGxlcih0aGlzLl9oZWFkZXJSZWYpLmhhcygnaWNvbicpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4tb3BhY2l0eScgJiYgdGhpcy5fc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLl9zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2XG4gICAgICAgIHJvbGU9JHt0aGlzLnRpdGxlTGV2ZWwgPyAnaGVhZGluZycgOiBub3RoaW5nfVxuICAgICAgICBhcmlhLWxldmVsPSR7dGhpcy50aXRsZUxldmVsIHx8IG5vdGhpbmd9XG4gICAgICAgIGNsYXNzPVwic2JiLWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlclwiIEBzbG90Y2hhbmdlPSR7dGhpcy5faGFuZGxlU2xvdGNoYW5nZX0+PC9zbG90PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZXhwYW5zaW9uLXBhbmVsX19jb250ZW50LXdyYXBwZXJcIiBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25BbmltYXRpb25FbmR9PlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1leHBhbnNpb24tcGFuZWxfX2NvbnRlbnRcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiY29udGVudFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5faGFuZGxlU2xvdGNoYW5nZX0+PC9zbG90PlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZXhwYW5zaW9uLXBhbmVsJzogU2JiRXhwYW5zaW9uUGFuZWxFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FDZ0JBLElBQUksU0FBUzs7Ozs7O0lBT0Esa0NBQXdCO21CQUFTOzs7Ozs7Ozs7Ozs7Ozs7O2NBQWpDLGlDQUFpQyxZQUFVOzs7NkJBV3JELFNBQVMsRUFB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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as SbbFileSelectorCommonElementMixin, t as SbbFileChangeEvent } from "../../file-selector-common-
|
|
1
|
+
import { n as SbbFileSelectorCommonElementMixin, t as SbbFileChangeEvent } from "../../file-selector-common-Dd0S0qE3.js";
|
|
2
2
|
export { SbbFileChangeEvent, SbbFileSelectorCommonElementMixin };
|
package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as SbbFileSelectorDropzoneElement } from "../../file-selector-dropzone.component-
|
|
1
|
+
import { t as SbbFileSelectorDropzoneElement } from "../../file-selector-dropzone.component-DWLdqMmI.js";
|
|
2
2
|
export { SbbFileSelectorDropzoneElement };
|
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { nothing, unsafeCSS } from "lit";
|
|
3
|
+
import { property } from "lit/decorators.js";
|
|
4
|
+
import { SbbDisabledMixin, SbbFormAssociatedMixin, SbbLanguageController, forceType, forwardEvent, i18nFileSelectorButtonLabel, i18nFileSelectorButtonLabelMultiple, i18nFileSelectorCurrentlySelected, i18nFileSelectorDeleteFile, sbbInputModalityDetector, screenReaderOnlyStyles, ɵstateController } from "./core.js";
|
|
5
|
+
import { html as html$1, unsafeStatic } from "lit/static-html.js";
|
|
6
|
+
import { SbbSecondaryButtonElement } from "./button.pure.js";
|
|
7
|
+
import { ref } from "lit/directives/ref.js";
|
|
8
|
+
//#region src/elements/file-selector/common/file-selector-common.scss?inline
|
|
9
|
+
var file_selector_common_default = ":host {\n --sbb-file-selector-transition-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-2x)\n );\n display: block;\n width: 20rem;\n}\n\n@media (forced-colors: active) {\n :host(:disabled) {\n --sbb-file-selector-color: GrayText;\n --sbb-file-selector-subtitle-color: GrayText;\n --sbb-file-selector-border-color: GrayText;\n }\n}\n\n:host(:is(:state(active),[state--active])) {\n --sbb-file-selector-background-color: var(--sbb-background-color-3);\n --sbb-file-selector-border-color: var(--sbb-color-storm);\n --sbb-file-selector-border-color: light-dark(var(--sbb-color-storm), var(--sbb-color-anthracite));\n}\n@media (forced-colors: active) {\n :host(:is(:state(active),[state--active])) {\n --sbb-file-selector-border-color: Highlight;\n }\n}\n\n.sbb-file-selector__input-container {\n -webkit-tap-highlight-color: transparent;\n display: flex;\n flex-direction: column;\n}\n\n.sbb-file-selector__file-list {\n display: flex;\n flex-direction: column;\n row-gap: var(--sbb-spacing-fixed-3x);\n margin-block: 0;\n padding-inline: 0;\n padding-block: var(--sbb-spacing-fixed-6x) var(--sbb-spacing-fixed-1x);\n}\n\n.sbb-file-selector__file {\n display: flex;\n gap: var(--sbb-spacing-fixed-4x);\n align-items: center;\n justify-content: space-between;\n line-height: var(--sbb-typo-line-height-text);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n font-size: var(--sbb-text-font-size-s);\n}\n\n.sbb-file-selector__file-details {\n display: flex;\n flex: 1;\n justify-content: space-between;\n gap: var(--sbb-spacing-fixed-4x);\n overflow: auto;\n}\n\n.sbb-file-selector__file-name {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.sbb-file-selector__file-size {\n white-space: nowrap;\n color: var(--sbb-color-metal);\n color: light-dark(var(--sbb-color-metal), var(--sbb-color-smoke));\n}\n\n:host(:not(:is(:state(slotted-error),[state--slotted-error]))) .sbb-file-selector__error {\n display: none;\n}";
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region src/elements/file-selector/common/file-selector-common.ts
|
|
12
|
+
var SbbFileChangeEvent = class extends Event {
|
|
13
|
+
get files() {
|
|
14
|
+
return this._files;
|
|
15
|
+
}
|
|
16
|
+
constructor(files) {
|
|
17
|
+
super("filechanged", {
|
|
18
|
+
bubbles: true,
|
|
19
|
+
composed: true
|
|
20
|
+
});
|
|
21
|
+
this._files = Object.freeze(files || []);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
var SbbFileSelectorCommonElementMixin = (superclass) => {
|
|
25
|
+
return (() => {
|
|
26
|
+
let _classSuper = SbbDisabledMixin(SbbFormAssociatedMixin(superclass));
|
|
27
|
+
let _instanceExtraInitializers = [];
|
|
28
|
+
let _size_decorators;
|
|
29
|
+
let _size_initializers = [];
|
|
30
|
+
let _size_extraInitializers = [];
|
|
31
|
+
let _multiple_decorators;
|
|
32
|
+
let _multiple_initializers = [];
|
|
33
|
+
let _multiple_extraInitializers = [];
|
|
34
|
+
let _multipleMode_decorators;
|
|
35
|
+
let _multipleMode_initializers = [];
|
|
36
|
+
let _multipleMode_extraInitializers = [];
|
|
37
|
+
let _accept_decorators;
|
|
38
|
+
let _accept_initializers = [];
|
|
39
|
+
let _accept_extraInitializers = [];
|
|
40
|
+
let _accessibilityLabel_decorators;
|
|
41
|
+
let _accessibilityLabel_initializers = [];
|
|
42
|
+
let _accessibilityLabel_extraInitializers = [];
|
|
43
|
+
let _set_value_decorators;
|
|
44
|
+
let _set_files_decorators;
|
|
45
|
+
return class SbbFileSelectorCommonElement extends _classSuper {
|
|
46
|
+
constructor() {
|
|
47
|
+
super(...arguments);
|
|
48
|
+
this.#size_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _size_initializers, null));
|
|
49
|
+
this.#multiple_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _multiple_initializers, false));
|
|
50
|
+
this.#multipleMode_accessor_storage = (__runInitializers(this, _multiple_extraInitializers), __runInitializers(this, _multipleMode_initializers, "default"));
|
|
51
|
+
this.#accept_accessor_storage = (__runInitializers(this, _multipleMode_extraInitializers), __runInitializers(this, _accept_initializers, ""));
|
|
52
|
+
this.#accessibilityLabel_accessor_storage = (__runInitializers(this, _accept_extraInitializers), __runInitializers(this, _accessibilityLabel_initializers, ""));
|
|
53
|
+
this._files = (__runInitializers(this, _accessibilityLabel_extraInitializers), []);
|
|
54
|
+
this._suffixes = [
|
|
55
|
+
"B",
|
|
56
|
+
"kB",
|
|
57
|
+
"MB",
|
|
58
|
+
"GB",
|
|
59
|
+
"TB"
|
|
60
|
+
];
|
|
61
|
+
this.language = new SbbLanguageController(this);
|
|
62
|
+
this._counter = 0;
|
|
63
|
+
}
|
|
64
|
+
static {
|
|
65
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
66
|
+
_size_decorators = [property({ reflect: true })];
|
|
67
|
+
_multiple_decorators = [forceType(), property({ type: Boolean })];
|
|
68
|
+
_multipleMode_decorators = [property({ attribute: "multiple-mode" })];
|
|
69
|
+
_accept_decorators = [forceType(), property()];
|
|
70
|
+
_accessibilityLabel_decorators = [forceType(), property({ attribute: "accessibility-label" })];
|
|
71
|
+
_set_value_decorators = [property({ attribute: false })];
|
|
72
|
+
_set_files_decorators = [property({ attribute: false })];
|
|
73
|
+
__esDecorate(this, null, _size_decorators, {
|
|
74
|
+
kind: "accessor",
|
|
75
|
+
name: "size",
|
|
76
|
+
static: false,
|
|
77
|
+
private: false,
|
|
78
|
+
access: {
|
|
79
|
+
has: (obj) => "size" in obj,
|
|
80
|
+
get: (obj) => obj.size,
|
|
81
|
+
set: (obj, value) => {
|
|
82
|
+
obj.size = value;
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
metadata: _metadata
|
|
86
|
+
}, _size_initializers, _size_extraInitializers);
|
|
87
|
+
__esDecorate(this, null, _multiple_decorators, {
|
|
88
|
+
kind: "accessor",
|
|
89
|
+
name: "multiple",
|
|
90
|
+
static: false,
|
|
91
|
+
private: false,
|
|
92
|
+
access: {
|
|
93
|
+
has: (obj) => "multiple" in obj,
|
|
94
|
+
get: (obj) => obj.multiple,
|
|
95
|
+
set: (obj, value) => {
|
|
96
|
+
obj.multiple = value;
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
metadata: _metadata
|
|
100
|
+
}, _multiple_initializers, _multiple_extraInitializers);
|
|
101
|
+
__esDecorate(this, null, _multipleMode_decorators, {
|
|
102
|
+
kind: "accessor",
|
|
103
|
+
name: "multipleMode",
|
|
104
|
+
static: false,
|
|
105
|
+
private: false,
|
|
106
|
+
access: {
|
|
107
|
+
has: (obj) => "multipleMode" in obj,
|
|
108
|
+
get: (obj) => obj.multipleMode,
|
|
109
|
+
set: (obj, value) => {
|
|
110
|
+
obj.multipleMode = value;
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
metadata: _metadata
|
|
114
|
+
}, _multipleMode_initializers, _multipleMode_extraInitializers);
|
|
115
|
+
__esDecorate(this, null, _accept_decorators, {
|
|
116
|
+
kind: "accessor",
|
|
117
|
+
name: "accept",
|
|
118
|
+
static: false,
|
|
119
|
+
private: false,
|
|
120
|
+
access: {
|
|
121
|
+
has: (obj) => "accept" in obj,
|
|
122
|
+
get: (obj) => obj.accept,
|
|
123
|
+
set: (obj, value) => {
|
|
124
|
+
obj.accept = value;
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
metadata: _metadata
|
|
128
|
+
}, _accept_initializers, _accept_extraInitializers);
|
|
129
|
+
__esDecorate(this, null, _accessibilityLabel_decorators, {
|
|
130
|
+
kind: "accessor",
|
|
131
|
+
name: "accessibilityLabel",
|
|
132
|
+
static: false,
|
|
133
|
+
private: false,
|
|
134
|
+
access: {
|
|
135
|
+
has: (obj) => "accessibilityLabel" in obj,
|
|
136
|
+
get: (obj) => obj.accessibilityLabel,
|
|
137
|
+
set: (obj, value) => {
|
|
138
|
+
obj.accessibilityLabel = value;
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
metadata: _metadata
|
|
142
|
+
}, _accessibilityLabel_initializers, _accessibilityLabel_extraInitializers);
|
|
143
|
+
__esDecorate(this, null, _set_value_decorators, {
|
|
144
|
+
kind: "setter",
|
|
145
|
+
name: "value",
|
|
146
|
+
static: false,
|
|
147
|
+
private: false,
|
|
148
|
+
access: {
|
|
149
|
+
has: (obj) => "value" in obj,
|
|
150
|
+
set: (obj, value) => {
|
|
151
|
+
obj.value = value;
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
metadata: _metadata
|
|
155
|
+
}, null, _instanceExtraInitializers);
|
|
156
|
+
__esDecorate(this, null, _set_files_decorators, {
|
|
157
|
+
kind: "setter",
|
|
158
|
+
name: "files",
|
|
159
|
+
static: false,
|
|
160
|
+
private: false,
|
|
161
|
+
access: {
|
|
162
|
+
has: (obj) => "files" in obj,
|
|
163
|
+
set: (obj, value) => {
|
|
164
|
+
obj.files = value;
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
metadata: _metadata
|
|
168
|
+
}, null, _instanceExtraInitializers);
|
|
169
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
170
|
+
enumerable: true,
|
|
171
|
+
configurable: true,
|
|
172
|
+
writable: true,
|
|
173
|
+
value: _metadata
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
static {
|
|
177
|
+
this.elementDependencies = [SbbSecondaryButtonElement];
|
|
178
|
+
}
|
|
179
|
+
static {
|
|
180
|
+
this.events = { filechanged: "filechanged" };
|
|
181
|
+
}
|
|
182
|
+
static {
|
|
183
|
+
this.styles = [screenReaderOnlyStyles, unsafeCSS(file_selector_common_default)];
|
|
184
|
+
}
|
|
185
|
+
#size_accessor_storage;
|
|
186
|
+
/**
|
|
187
|
+
* Size variant, either s (lean theme default) or m (standard theme default).
|
|
188
|
+
*/
|
|
189
|
+
get size() {
|
|
190
|
+
return this.#size_accessor_storage;
|
|
191
|
+
}
|
|
192
|
+
set size(value) {
|
|
193
|
+
this.#size_accessor_storage = value;
|
|
194
|
+
}
|
|
195
|
+
#multiple_accessor_storage;
|
|
196
|
+
/** Whether more than one file can be selected. */
|
|
197
|
+
get multiple() {
|
|
198
|
+
return this.#multiple_accessor_storage;
|
|
199
|
+
}
|
|
200
|
+
set multiple(value) {
|
|
201
|
+
this.#multiple_accessor_storage = value;
|
|
202
|
+
}
|
|
203
|
+
#multipleMode_accessor_storage;
|
|
204
|
+
/** Whether the newly added files should override the previously added ones. */
|
|
205
|
+
get multipleMode() {
|
|
206
|
+
return this.#multipleMode_accessor_storage;
|
|
207
|
+
}
|
|
208
|
+
set multipleMode(value) {
|
|
209
|
+
this.#multipleMode_accessor_storage = value;
|
|
210
|
+
}
|
|
211
|
+
#accept_accessor_storage;
|
|
212
|
+
/** A comma-separated list of allowed unique file type specifiers. */
|
|
213
|
+
get accept() {
|
|
214
|
+
return this.#accept_accessor_storage;
|
|
215
|
+
}
|
|
216
|
+
set accept(value) {
|
|
217
|
+
this.#accept_accessor_storage = value;
|
|
218
|
+
}
|
|
219
|
+
#accessibilityLabel_accessor_storage;
|
|
220
|
+
/** This will be forwarded as aria-label to the native input element. */
|
|
221
|
+
get accessibilityLabel() {
|
|
222
|
+
return this.#accessibilityLabel_accessor_storage;
|
|
223
|
+
}
|
|
224
|
+
set accessibilityLabel(value) {
|
|
225
|
+
this.#accessibilityLabel_accessor_storage = value;
|
|
226
|
+
}
|
|
227
|
+
/** The path of the first selected file. Empty string ('') if no file is selected */
|
|
228
|
+
set value(value) {
|
|
229
|
+
this._hiddenInput.value = value ?? "";
|
|
230
|
+
if (!value) this.files = [];
|
|
231
|
+
}
|
|
232
|
+
get value() {
|
|
233
|
+
return this._hiddenInput?.value;
|
|
234
|
+
}
|
|
235
|
+
/** The list of selected files. */
|
|
236
|
+
set files(value) {
|
|
237
|
+
this._files = value ?? [];
|
|
238
|
+
const dt = new DataTransfer();
|
|
239
|
+
this.files.forEach((e) => dt.items.add(e));
|
|
240
|
+
this._hiddenInput.files = dt.files;
|
|
241
|
+
this.updateFormValue();
|
|
242
|
+
}
|
|
243
|
+
get files() {
|
|
244
|
+
return this._files;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Form type of element.
|
|
248
|
+
* @default 'file'
|
|
249
|
+
*/
|
|
250
|
+
get type() {
|
|
251
|
+
return "file";
|
|
252
|
+
}
|
|
253
|
+
formResetCallback() {
|
|
254
|
+
this.files = [];
|
|
255
|
+
}
|
|
256
|
+
formStateRestoreCallback(state, _reason) {
|
|
257
|
+
if (!state) return;
|
|
258
|
+
this.files = state.getAll(this.name);
|
|
259
|
+
}
|
|
260
|
+
updateFormValue() {
|
|
261
|
+
const formValue = new FormData();
|
|
262
|
+
this.files.forEach((file) => formValue.append(this.name, file));
|
|
263
|
+
this.internals.setFormValue(formValue);
|
|
264
|
+
}
|
|
265
|
+
_checkFileEquality(file1, file2) {
|
|
266
|
+
return file1.name === file2.name && file1.size === file2.size && file1.lastModified === file2.lastModified;
|
|
267
|
+
}
|
|
268
|
+
_onFocus() {
|
|
269
|
+
if (sbbInputModalityDetector.mostRecentModality === "keyboard") ɵstateController(this.loadButton).add("focus-visible");
|
|
270
|
+
}
|
|
271
|
+
_onBlur() {
|
|
272
|
+
ɵstateController(this.loadButton).delete("focus-visible");
|
|
273
|
+
}
|
|
274
|
+
_readFiles(event) {
|
|
275
|
+
const fileInput = event.target;
|
|
276
|
+
if (fileInput.files) this.createFileList(fileInput.files);
|
|
277
|
+
forwardEvent(event, this);
|
|
278
|
+
}
|
|
279
|
+
createFileList(files) {
|
|
280
|
+
const fileArray = Array.from(files);
|
|
281
|
+
if (!this.multiple && files.length > 1 || this.accept && fileArray.some((file) => !this.accept.split(",").some((a) => file.name.endsWith(a.trim())))) return;
|
|
282
|
+
if (!this.multiple || this.multipleMode !== "persistent" || this.files.length === 0) this.files = fileArray;
|
|
283
|
+
else this.files = fileArray.filter((newFile) => this.files.findIndex((oldFile) => this._checkFileEquality(newFile, oldFile)) === -1).concat(this.files);
|
|
284
|
+
this._updateA11yLiveRegion();
|
|
285
|
+
this._dispatchFileChangedEvent();
|
|
286
|
+
}
|
|
287
|
+
getButtonLabel() {
|
|
288
|
+
return this.multiple ? i18nFileSelectorButtonLabelMultiple[this.language.current] : i18nFileSelectorButtonLabel[this.language.current];
|
|
289
|
+
}
|
|
290
|
+
_removeFile(file) {
|
|
291
|
+
this.files = this.files.filter((f) => !this._checkFileEquality(file, f));
|
|
292
|
+
this._updateA11yLiveRegion();
|
|
293
|
+
/** The input event fires when the value has been changed as a direct result of a user action. */
|
|
294
|
+
this.dispatchEvent(new InputEvent("input", {
|
|
295
|
+
bubbles: true,
|
|
296
|
+
composed: true
|
|
297
|
+
}));
|
|
298
|
+
/**
|
|
299
|
+
* The change event is fired when the user modifies the element's value.
|
|
300
|
+
* Unlike the input event, the change event is not necessarily fired
|
|
301
|
+
* for each alteration to an element's value.
|
|
302
|
+
*/
|
|
303
|
+
this.dispatchEvent(new Event("change", { bubbles: true }));
|
|
304
|
+
this._dispatchFileChangedEvent();
|
|
305
|
+
}
|
|
306
|
+
_dispatchFileChangedEvent() {
|
|
307
|
+
const filechanged = this.files;
|
|
308
|
+
/**
|
|
309
|
+
* @type {SbbFileChangeEvent}
|
|
310
|
+
* An event which is emitted each time the file list changes.
|
|
311
|
+
*/
|
|
312
|
+
this.dispatchEvent(new SbbFileChangeEvent(filechanged));
|
|
313
|
+
}
|
|
314
|
+
/** Calculates the correct unit for the file's size. */
|
|
315
|
+
_formatFileSize(size) {
|
|
316
|
+
const i = Math.floor(Math.log(size) / Math.log(1024));
|
|
317
|
+
return `${(size / Math.pow(1024, i)).toFixed(0)} ${this._suffixes[i]}`;
|
|
318
|
+
}
|
|
319
|
+
_updateA11yLiveRegion() {
|
|
320
|
+
this._liveRegion.innerText = i18nFileSelectorCurrentlySelected(this.files.map((e) => e.name))[this.language.current];
|
|
321
|
+
}
|
|
322
|
+
_renderFileList() {
|
|
323
|
+
const TAG_NAME = this.files.length > 1 ? {
|
|
324
|
+
WRAPPER: "ul",
|
|
325
|
+
ELEMENT: "li"
|
|
326
|
+
} : {
|
|
327
|
+
WRAPPER: "div",
|
|
328
|
+
ELEMENT: "span"
|
|
329
|
+
};
|
|
330
|
+
return html$1`
|
|
331
|
+
<${unsafeStatic(TAG_NAME.WRAPPER)} class="sbb-file-selector__file-list">
|
|
332
|
+
${this.files.map((file) => html$1`
|
|
333
|
+
<${unsafeStatic(TAG_NAME.ELEMENT)} class="sbb-file-selector__file">
|
|
334
|
+
<span class="sbb-file-selector__file-details">
|
|
335
|
+
<span class="sbb-file-selector__file-name">${file.name}</span>
|
|
336
|
+
<span class="sbb-file-selector__file-size">${this._formatFileSize(file.size)}</span>
|
|
337
|
+
</span>
|
|
338
|
+
<sbb-secondary-button
|
|
339
|
+
size=${this.size || nothing}
|
|
340
|
+
icon-name="trash-small"
|
|
341
|
+
@click=${() => this._removeFile(file)}
|
|
342
|
+
aria-label=${`${i18nFileSelectorDeleteFile[this.language.current]} - ${file.name}`}
|
|
343
|
+
></sbb-secondary-button>
|
|
344
|
+
</${unsafeStatic(TAG_NAME.ELEMENT)}>`)}
|
|
345
|
+
</${unsafeStatic(TAG_NAME.WRAPPER)}>
|
|
346
|
+
`;
|
|
347
|
+
}
|
|
348
|
+
_onDragEnter(event) {
|
|
349
|
+
this._counter++;
|
|
350
|
+
if (!this.disabled && !this.formDisabled) {
|
|
351
|
+
this._setDragState(event.target, true);
|
|
352
|
+
this._blockEvent(event);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
_onDragLeave(event) {
|
|
356
|
+
this._counter--;
|
|
357
|
+
if (!this.disabled && !this.formDisabled && event.target === this._dragTarget && this._counter === 0) {
|
|
358
|
+
this._setDragState();
|
|
359
|
+
this._blockEvent(event);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
_onFileDrop(event) {
|
|
363
|
+
this._counter = 0;
|
|
364
|
+
if (!this.disabled && !this.formDisabled) {
|
|
365
|
+
this._setDragState();
|
|
366
|
+
this._blockEvent(event);
|
|
367
|
+
this.createFileList(event.dataTransfer.files);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
_blockEvent(event) {
|
|
371
|
+
event.stopPropagation();
|
|
372
|
+
event.preventDefault();
|
|
373
|
+
}
|
|
374
|
+
_setDragState(dragTarget = void 0, isDragEnter = false) {
|
|
375
|
+
this._dragTarget = dragTarget;
|
|
376
|
+
this.toggleState("active", isDragEnter);
|
|
377
|
+
ɵstateController(this.loadButton).toggle("active", isDragEnter);
|
|
378
|
+
}
|
|
379
|
+
render() {
|
|
380
|
+
const ariaLabel = this.accessibilityLabel ? `${this.getButtonLabel()} - ${this.accessibilityLabel}` : void 0;
|
|
381
|
+
return html$1`
|
|
382
|
+
<div
|
|
383
|
+
class="sbb-file-selector__input-container"
|
|
384
|
+
@dragenter=${this._onDragEnter}
|
|
385
|
+
@dragover=${this._blockEvent}
|
|
386
|
+
@dragleave=${this._onDragLeave}
|
|
387
|
+
@drop=${this._onFileDrop}
|
|
388
|
+
>
|
|
389
|
+
${this.renderTemplate(html$1`<input
|
|
390
|
+
class="sbb-screen-reader-only"
|
|
391
|
+
type="file"
|
|
392
|
+
?disabled=${this.disabled || this.formDisabled}
|
|
393
|
+
?multiple=${this.multiple}
|
|
394
|
+
accept=${this.accept || nothing}
|
|
395
|
+
aria-label=${ariaLabel || nothing}
|
|
396
|
+
@change=${this._readFiles}
|
|
397
|
+
@focus=${this._onFocus}
|
|
398
|
+
@blur=${this._onBlur}
|
|
399
|
+
${ref((el) => {
|
|
400
|
+
this._hiddenInput = el;
|
|
401
|
+
})}
|
|
402
|
+
/>`)}
|
|
403
|
+
</div>
|
|
404
|
+
<p
|
|
405
|
+
role="status"
|
|
406
|
+
class="sbb-screen-reader-only"
|
|
407
|
+
${ref((p) => this._liveRegion = p)}
|
|
408
|
+
></p>
|
|
409
|
+
${this.files.length > 0 ? this._renderFileList() : nothing}
|
|
410
|
+
<div class="sbb-file-selector__error">
|
|
411
|
+
<slot name="error"></slot>
|
|
412
|
+
</div>
|
|
413
|
+
`;
|
|
414
|
+
}
|
|
415
|
+
};
|
|
416
|
+
})();
|
|
417
|
+
};
|
|
418
|
+
//#endregion
|
|
419
|
+
export { SbbFileSelectorCommonElementMixin as n, SbbFileChangeEvent as t };
|
|
420
|
+
|
|
421
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zZWxlY3Rvci1jb21tb24tRGQwUzBxRTMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ZpbGUtc2VsZWN0b3IvY29tbW9uL2ZpbGUtc2VsZWN0b3ItY29tbW9uLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ZpbGUtc2VsZWN0b3IvY29tbW9uL2ZpbGUtc2VsZWN0b3ItY29tbW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItZmlsZS1zZWxlY3Rvci10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoXG4gICAgLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sXG4gICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi0yeClcbiAgKTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgzMjApfTtcbn1cblxuOmhvc3QoOmRpc2FibGVkKSB7XG4gIEBtZWRpYSAoZm9yY2VkLWNvbG9yczogYWN0aXZlKSB7XG4gICAgLS1zYmItZmlsZS1zZWxlY3Rvci1jb2xvcjogR3JheVRleHQ7XG4gICAgLS1zYmItZmlsZS1zZWxlY3Rvci1zdWJ0aXRsZS1jb2xvcjogR3JheVRleHQ7XG4gICAgLS1zYmItZmlsZS1zZWxlY3Rvci1ib3JkZXItY29sb3I6IEdyYXlUZXh0O1xuICB9XG59XG5cbjpob3N0KDpzdGF0ZShhY3RpdmUpKSB7XG4gIC0tc2JiLWZpbGUtc2VsZWN0b3ItYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMyk7XG4gIC0tc2JiLWZpbGUtc2VsZWN0b3ItYm9yZGVyLWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1zdG9ybSksIHZhcigtLXNiYi1jb2xvci1hbnRocmFjaXRlKSk7XG5cbiAgQG1lZGlhIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpIHtcbiAgICAtLXNiYi1maWxlLXNlbGVjdG9yLWJvcmRlci1jb2xvcjogSGlnaGxpZ2h0O1xuICB9XG59XG5cbi5zYmItZmlsZS1zZWxlY3Rvcl9faW5wdXQtY29udGFpbmVyIHtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLnNiYi1maWxlLXNlbGVjdG9yX19maWxlLWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICByb3ctZ2FwOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0zeCk7XG4gIG1hcmdpbi1ibG9jazogMDtcbiAgcGFkZGluZy1pbmxpbmU6IDA7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTZ4KSB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xeCk7XG59XG5cbi5zYmItZmlsZS1zZWxlY3Rvcl9fZmlsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtNHgpO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXNiYi10eXBvLWxldHRlci1zcGFjaW5nLXRleHQpO1xuICBmb250LXNpemU6IHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS1zKTtcbn1cblxuLnNiYi1maWxlLXNlbGVjdG9yX19maWxlLWRldGFpbHMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4OiAxO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGdhcDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtNHgpO1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLnNiYi1maWxlLXNlbGVjdG9yX19maWxlLW5hbWUge1xuICBAaW5jbHVkZSBzYmIuZWxsaXBzaXM7XG59XG5cbi5zYmItZmlsZS1zZWxlY3Rvcl9fZmlsZS1zaXplIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgY29sb3I6IGxpZ2h0LWRhcmsodmFyKC0tc2JiLWNvbG9yLW1ldGFsKSwgdmFyKC0tc2JiLWNvbG9yLXNtb2tlKSk7XG59XG5cbi5zYmItZmlsZS1zZWxlY3Rvcl9fZXJyb3Ige1xuICA6aG9zdCg6bm90KDpzdGF0ZShzbG90dGVkLWVycm9yKSkpICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIG5vdGhpbmcsIHR5cGUgVGVtcGxhdGVSZXN1bHQsIHVuc2FmZUNTUyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5pbXBvcnQgeyBodG1sLCB1bnNhZmVTdGF0aWMgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQge1xuICBTYmJTZWNvbmRhcnlCdXR0b25FbGVtZW50LFxuICB0eXBlIFNiYlNlY29uZGFyeUJ1dHRvblN0YXRpY0VsZW1lbnQsXG59IGZyb20gJy4uLy4uL2J1dHRvbi5wdXJlLnRzJztcbmltcG9ydCB7XG4gIHR5cGUgQWJzdHJhY3RDb25zdHJ1Y3RvcixcbiAgZm9yY2VUeXBlLFxuICB0eXBlIEZvcm1SZXN0b3JlUmVhc29uLFxuICB0eXBlIEZvcm1SZXN0b3JlU3RhdGUsXG4gIGZvcndhcmRFdmVudCxcbiAgaTE4bkZpbGVTZWxlY3RvckJ1dHRvbkxhYmVsLFxuICBpMThuRmlsZVNlbGVjdG9yQnV0dG9uTGFiZWxNdWx0aXBsZSxcbiAgaTE4bkZpbGVTZWxlY3RvckN1cnJlbnRseVNlbGVjdGVkLFxuICBpMThuRmlsZVNlbGVjdG9yRGVsZXRlRmlsZSxcbiAgU2JiRGlzYWJsZWRNaXhpbixcbiAgU2JiRWxlbWVudCxcbiAgdHlwZSBTYmJFbGVtZW50Q29uc3RydWN0b3IsXG4gIHR5cGUgU2JiRWxlbWVudFR5cGUsXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4sXG4gIHNiYklucHV0TW9kYWxpdHlEZXRlY3RvcixcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxuICBzY3JlZW5SZWFkZXJPbmx5U3R5bGVzLFxuICDJtXN0YXRlQ29udHJvbGxlcixcbn0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2ZpbGUtc2VsZWN0b3ItY29tbW9uLnNjc3M/aW5saW5lJztcblxuZXhwb3J0IGNsYXNzIFNiYkZpbGVDaGFuZ2VFdmVudCBleHRlbmRzIEV2ZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZXM6IHJlYWRvbmx5IEZpbGVbXTtcblxuICBwdWJsaWMgZ2V0IGZpbGVzKCk6IHJlYWRvbmx5IEZpbGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVzO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGZpbGVzOiByZWFkb25seSBGaWxlW10pIHtcbiAgICBzdXBlcignZmlsZWNoYW5nZWQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pO1xuICAgIHRoaXMuX2ZpbGVzID0gT2JqZWN0LmZyZWV6ZShmaWxlcyB8fCBbXSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgU2JiRmlsZVNlbGVjdG9yQ29tbW9uRWxlbWVudE1peGluVHlwZSBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4oU2JiRWxlbWVudCksXG4pIHtcbiAgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyB8IG51bGw7XG4gIHB1YmxpYyBhY2Nlc3NvciBtdWx0aXBsZTogYm9vbGVhbjtcbiAgcHVibGljIGFjY2Vzc29yIG11bHRpcGxlTW9kZTogJ2RlZmF1bHQnIHwgJ3BlcnNpc3RlbnQnO1xuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXB0OiBzdHJpbmc7XG4gIHB1YmxpYyBhY2Nlc3NvciBhY2Nlc3NpYmlsaXR5TGFiZWw6IHN0cmluZztcbiAgcHVibGljIGFjY2Vzc29yIGZpbGVzOiBSZWFkb25seTxGaWxlPltdO1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyBvdmVycmlkZSBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpO1xuICBwcm90ZWN0ZWQgbG9hZEJ1dHRvbjogU2JiU2Vjb25kYXJ5QnV0dG9uU3RhdGljRWxlbWVudDtcbiAgcHJvdGVjdGVkIGxhbmd1YWdlOiBTYmJMYW5ndWFnZUNvbnRyb2xsZXI7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZW5kZXJUZW1wbGF0ZShpbnB1dDogVGVtcGxhdGVSZXN1bHQpOiBUZW1wbGF0ZVJlc3VsdDtcbiAgcHJvdGVjdGVkIGNyZWF0ZUZpbGVMaXN0KGZpbGVzOiBGaWxlTGlzdCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBnZXRCdXR0b25MYWJlbCgpOiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkO1xuICBwdWJsaWMgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCwgcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbik6IHZvaWQ7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJGaWxlU2VsZWN0b3JDb21tb25FbGVtZW50TWl4aW4gPSA8XG4gIFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkVsZW1lbnQ+ICYgU2JiRWxlbWVudENvbnN0cnVjdG9yLFxuPihcbiAgc3VwZXJjbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRmlsZVNlbGVjdG9yQ29tbW9uRWxlbWVudE1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRmlsZVNlbGVjdG9yQ29tbW9uRWxlbWVudFxuICAgIGV4dGVuZHMgU2JiRGlzYWJsZWRNaXhpbihTYmJGb3JtQXNzb2NpYXRlZE1peGluKHN1cGVyY2xhc3MpKVxuICAgIGltcGxlbWVudHMgUGFydGlhbDxTYmJGaWxlU2VsZWN0b3JDb21tb25FbGVtZW50TWl4aW5UeXBlPlxuICB7XG4gICAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBlbGVtZW50RGVwZW5kZW5jaWVzOiBTYmJFbGVtZW50VHlwZVtdID0gW1NiYlNlY29uZGFyeUJ1dHRvbkVsZW1lbnRdO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgICAgZmlsZWNoYW5nZWQ6ICdmaWxlY2hhbmdlZCcsXG4gICAgfSBhcyBjb25zdDtcbiAgICBwdWJsaWMgc3RhdGljIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbc2NyZWVuUmVhZGVyT25seVN0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgICAvKipcbiAgICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBzIChsZWFuIHRoZW1lIGRlZmF1bHQpIG9yIG0gKHN0YW5kYXJkIHRoZW1lIGRlZmF1bHQpLlxuICAgICAqL1xuICAgIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIFdoZXRoZXIgbW9yZSB0aGFuIG9uZSBmaWxlIGNhbiBiZSBzZWxlY3RlZC4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gICAgcHVibGljIGFjY2Vzc29yIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgbmV3bHkgYWRkZWQgZmlsZXMgc2hvdWxkIG92ZXJyaWRlIHRoZSBwcmV2aW91c2x5IGFkZGVkIG9uZXMuICovXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnbXVsdGlwbGUtbW9kZScgfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgbXVsdGlwbGVNb2RlOiAnZGVmYXVsdCcgfCAncGVyc2lzdGVudCcgPSAnZGVmYXVsdCc7XG5cbiAgICAvKiogQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGxvd2VkIHVuaXF1ZSBmaWxlIHR5cGUgc3BlY2lmaWVycy4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoKVxuICAgIHB1YmxpYyBhY2Nlc3NvciBhY2NlcHQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQuICovXG4gICAgQGZvcmNlVHlwZSgpXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1sYWJlbCcgfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBUaGUgcGF0aCBvZiB0aGUgZmlyc3Qgc2VsZWN0ZWQgZmlsZS4gRW1wdHkgc3RyaW5nICgnJykgaWYgbm8gZmlsZSBpcyBzZWxlY3RlZCAqL1xuICAgIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICB0aGlzLl9oaWRkZW5JbnB1dC52YWx1ZSA9IHZhbHVlID8/ICcnO1xuXG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLl9oaWRkZW5JbnB1dD8udmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBsaXN0IG9mIHNlbGVjdGVkIGZpbGVzLiAqL1xuICAgIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgICBwdWJsaWMgc2V0IGZpbGVzKHZhbHVlOiBSZWFkb25seTxGaWxlPltdKSB7XG4gICAgICB0aGlzLl9maWxlcyA9IHZhbHVlID8/IFtdO1xuXG4gICAgICAvLyB1cGRhdGUgdGhlIGlubmVyIGlucHV0XG4gICAgICBjb25zdCBkdDogRGF0YVRyYW5zZmVyID0gbmV3IERhdGFUcmFuc2ZlcigpO1xuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKChlOiBSZWFkb25seTxGaWxlPikgPT4gZHQuaXRlbXMuYWRkKGUpKTtcbiAgICAgIHRoaXMuX2hpZGRlbklucHV0LmZpbGVzID0gZHQuZmlsZXM7XG5cbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZmlsZXMoKTogUmVhZG9ubHk8RmlsZT5bXSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmlsZXM7XG4gICAgfVxuICAgIHByaXZhdGUgX2ZpbGVzOiBSZWFkb25seTxGaWxlPltdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIHR5cGUgb2YgZWxlbWVudC5cbiAgICAgKiBAZGVmYXVsdCAnZmlsZSdcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAnZmlsZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGlkZGVuSW5wdXQhOiBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHByaXZhdGUgX3N1ZmZpeGVzOiBzdHJpbmdbXSA9IFsnQicsICdrQicsICdNQicsICdHQicsICdUQiddO1xuICAgIHByaXZhdGUgX2xpdmVSZWdpb24hOiBIVE1MUGFyYWdyYXBoRWxlbWVudDtcbiAgICBwcm90ZWN0ZWQgbG9hZEJ1dHRvbiE6IFNiYlNlY29uZGFyeUJ1dHRvblN0YXRpY0VsZW1lbnQ7XG4gICAgcHJvdGVjdGVkIGxhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICAgIC8vIFNhZmFyaSBoYXMgYSBwZWN1bGlhciBiZWhhdmlvciB3aGVuIGRyYWdnaW5nIGZpbGVzIG9uIHRoZSBpbm5lciBidXR0b24gaW4gJ2Ryb3B6b25lJyB2YXJpYW50O1xuICAgIC8vIHRoaXMgd2lsbCByZXF1aXJlIGEgY291bnRlciB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBkcmFnRW50ZXIvZHJhZ0xlYXZlLlxuICAgIHByaXZhdGUgX2NvdW50ZXI6IG51bWJlciA9IDA7XG4gICAgcHJpdmF0ZSBfZHJhZ1RhcmdldD86IEhUTUxFbGVtZW50O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJlbmRlclRlbXBsYXRlKGlucHV0OiBUZW1wbGF0ZVJlc3VsdCk6IFRlbXBsYXRlUmVzdWx0O1xuXG4gICAgcHVibGljIG92ZXJyaWRlIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgICBzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsXG4gICAgICBfcmVhc29uPzogRm9ybVJlc3RvcmVSZWFzb24sXG4gICAgKTogdm9pZCB7XG4gICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlsZXMgPSAoc3RhdGUgYXMgRm9ybURhdGEpLmdldEFsbCh0aGlzLm5hbWUpIGFzIFJlYWRvbmx5PEZpbGU+W107XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZUZvcm1WYWx1ZSgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKChmaWxlKSA9PiBmb3JtVmFsdWUuYXBwZW5kKHRoaXMubmFtZSwgZmlsZSkpO1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc2V0Rm9ybVZhbHVlKGZvcm1WYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hlY2tGaWxlRXF1YWxpdHkoZmlsZTE6IFJlYWRvbmx5PEZpbGU+LCBmaWxlMjogUmVhZG9ubHk8RmlsZT4pOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGZpbGUxLm5hbWUgPT09IGZpbGUyLm5hbWUgJiZcbiAgICAgICAgZmlsZTEuc2l6ZSA9PT0gZmlsZTIuc2l6ZSAmJlxuICAgICAgICBmaWxlMS5sYXN0TW9kaWZpZWQgPT09IGZpbGUyLmxhc3RNb2RpZmllZFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9vbkZvY3VzKCk6IHZvaWQge1xuICAgICAgaWYgKHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCcpIHtcbiAgICAgICAgybVzdGF0ZUNvbnRyb2xsZXIodGhpcy5sb2FkQnV0dG9uKS5hZGQoJ2ZvY3VzLXZpc2libGUnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9vbkJsdXIoKTogdm9pZCB7XG4gICAgICDJtXN0YXRlQ29udHJvbGxlcih0aGlzLmxvYWRCdXR0b24pLmRlbGV0ZSgnZm9jdXMtdmlzaWJsZScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlYWRGaWxlcyhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGZpbGVJbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgaWYgKGZpbGVJbnB1dC5maWxlcykge1xuICAgICAgICB0aGlzLmNyZWF0ZUZpbGVMaXN0KGZpbGVJbnB1dC5maWxlcyk7XG4gICAgICB9XG4gICAgICBmb3J3YXJkRXZlbnQoZXZlbnQsIHRoaXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVGaWxlTGlzdChmaWxlczogRmlsZUxpc3QpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGZpbGVBcnJheSA9IEFycmF5LmZyb20oZmlsZXMpO1xuICAgICAgaWYgKFxuICAgICAgICAoIXRoaXMubXVsdGlwbGUgJiYgZmlsZXMubGVuZ3RoID4gMSkgfHxcbiAgICAgICAgKHRoaXMuYWNjZXB0ICYmXG4gICAgICAgICAgZmlsZUFycmF5LnNvbWUoXG4gICAgICAgICAgICAoZmlsZSkgPT4gIXRoaXMuYWNjZXB0LnNwbGl0KCcsJykuc29tZSgoYSkgPT4gZmlsZS5uYW1lLmVuZHNXaXRoKGEudHJpbSgpKSksXG4gICAgICAgICAgKSlcbiAgICAgICkge1xuICAgICAgICAvLyBJZiBtdWx0aXBsZSBmaWxlcyBhcmUgc2VsZWN0ZWQgYnV0IHRoZSBzZWxlY3RvciBpcyBub3QgaW4gbXVsdGlwbGUgbW9kZSxcbiAgICAgICAgLy8gaWdub3JlIHRoZSBzZWxlY3Rpb24gKGxpa2UgbmF0aXZlIGJlaGF2aW9yKS5cbiAgICAgICAgLy8gSWYgdGhlIGFjY2VwdCBhdHRyaWJ1dGUgaXMgc2V0LCBjaGVjayBpZiB0aGUgc2VsZWN0ZWQgZmlsZXMgbWF0Y2ggdGhlIGFsbG93ZWQgdHlwZXMuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8IHRoaXMubXVsdGlwbGVNb2RlICE9PSAncGVyc2lzdGVudCcgfHwgdGhpcy5maWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5maWxlcyA9IGZpbGVBcnJheTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsZXMgPSBmaWxlQXJyYXlcbiAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgLy8gUmVtb3ZlIGR1cGxpY2F0ZXNcbiAgICAgICAgICAgIChuZXdGaWxlOiBSZWFkb25seTxGaWxlPik6IGJvb2xlYW4gPT5cbiAgICAgICAgICAgICAgdGhpcy5maWxlcyEuZmluZEluZGV4KChvbGRGaWxlOiBSZWFkb25seTxGaWxlPikgPT5cbiAgICAgICAgICAgICAgICB0aGlzLl9jaGVja0ZpbGVFcXVhbGl0eShuZXdGaWxlLCBvbGRGaWxlKSxcbiAgICAgICAgICAgICAgKSA9PT0gLTEsXG4gICAgICAgICAgKVxuICAgICAgICAgIC5jb25jYXQodGhpcy5maWxlcyk7XG4gICAgICB9XG4gICAgICB0aGlzLl91cGRhdGVBMTF5TGl2ZVJlZ2lvbigpO1xuICAgICAgdGhpcy5fZGlzcGF0Y2hGaWxlQ2hhbmdlZEV2ZW50KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5tdWx0aXBsZVxuICAgICAgICA/IGkxOG5GaWxlU2VsZWN0b3JCdXR0b25MYWJlbE11bHRpcGxlW3RoaXMubGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgOiBpMThuRmlsZVNlbGVjdG9yQnV0dG9uTGFiZWxbdGhpcy5sYW5ndWFnZS5jdXJyZW50XTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW1vdmVGaWxlKGZpbGU6IFJlYWRvbmx5PEZpbGU+KTogdm9pZCB7XG4gICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoKGY6IFJlYWRvbmx5PEZpbGU+KSA9PiAhdGhpcy5fY2hlY2tGaWxlRXF1YWxpdHkoZmlsZSwgZikpO1xuICAgICAgdGhpcy5fdXBkYXRlQTExeUxpdmVSZWdpb24oKTtcblxuICAgICAgLy8gRGlzcGF0Y2ggbmF0aXZlIGV2ZW50cyBhcyBpZiB0aGUgcmVzZXQgaXMgZG9uZSB2aWEgdGhlIGZpbGUgc2VsZWN0aW9uIHdpbmRvdy5cbiAgICAgIC8qKiBUaGUgaW5wdXQgZXZlbnQgZmlyZXMgd2hlbiB0aGUgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZCBhcyBhIGRpcmVjdCByZXN1bHQgb2YgYSB1c2VyIGFjdGlvbi4gKi9cbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IElucHV0RXZlbnQoJ2lucHV0Jywge1xuICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgY29tcG9zZWQ6IHRydWUsXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgY2hhbmdlIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgbW9kaWZpZXMgdGhlIGVsZW1lbnQncyB2YWx1ZS5cbiAgICAgICAqIFVubGlrZSB0aGUgaW5wdXQgZXZlbnQsIHRoZSBjaGFuZ2UgZXZlbnQgaXMgbm90IG5lY2Vzc2FyaWx5IGZpcmVkXG4gICAgICAgKiBmb3IgZWFjaCBhbHRlcmF0aW9uIHRvIGFuIGVsZW1lbnQncyB2YWx1ZS5cbiAgICAgICAqL1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMuX2Rpc3BhdGNoRmlsZUNoYW5nZWRFdmVudCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc3BhdGNoRmlsZUNoYW5nZWRFdmVudCgpOiB2b2lkIHtcbiAgICAgIC8vIEZJWE1FOiB0aGUgbmFtZSBvZiB0aGlzIHZhcmlhYmxlIGFwcGVhcnMgYXMgZXZlbnQgbmFtZSBpbiB0aGUgcmVhZG1lXG4gICAgICAvLyAgZHVlIHRvIGEgYnVnIGluIHRoZSBjdXN0b20tZWxlbWVudHMtbWFuaWZlc3QgbGlicmFyeS5cbiAgICAgIC8vICBodHRwczovL2dpdGh1Yi5jb20vb3Blbi13Yy9jdXN0b20tZWxlbWVudHMtbWFuaWZlc3QvaXNzdWVzLzE0OVxuICAgICAgY29uc3QgZmlsZWNoYW5nZWQgPSB0aGlzLmZpbGVzO1xuICAgICAgLyoqXG4gICAgICAgKiBAdHlwZSB7U2JiRmlsZUNoYW5nZUV2ZW50fVxuICAgICAgICogQW4gZXZlbnQgd2hpY2ggaXMgZW1pdHRlZCBlYWNoIHRpbWUgdGhlIGZpbGUgbGlzdCBjaGFuZ2VzLlxuICAgICAgICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFNiYkZpbGVDaGFuZ2VFdmVudChmaWxlY2hhbmdlZCkpO1xuICAgIH1cblxuICAgIC8qKiBDYWxjdWxhdGVzIHRoZSBjb3JyZWN0IHVuaXQgZm9yIHRoZSBmaWxlJ3Mgc2l6ZS4gKi9cbiAgICBwcml2YXRlIF9mb3JtYXRGaWxlU2l6ZShzaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgY29uc3QgaTogbnVtYmVyID0gTWF0aC5mbG9vcihNYXRoLmxvZyhzaXplKSAvIE1hdGgubG9nKDEwMjQpKTtcbiAgICAgIHJldHVybiBgJHsoc2l6ZSAvIE1hdGgucG93KDEwMjQsIGkpKS50b0ZpeGVkKDApfSAke3RoaXMuX3N1ZmZpeGVzW2ldfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdXBkYXRlQTExeUxpdmVSZWdpb24oKTogdm9pZCB7XG4gICAgICB0aGlzLl9saXZlUmVnaW9uLmlubmVyVGV4dCA9IGkxOG5GaWxlU2VsZWN0b3JDdXJyZW50bHlTZWxlY3RlZCh0aGlzLmZpbGVzLm1hcCgoZSkgPT4gZS5uYW1lKSlbXG4gICAgICAgIHRoaXMubGFuZ3VhZ2UuY3VycmVudFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW5kZXJGaWxlTGlzdCgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgICBjb25zdCBUQUdfTkFNRTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9XG4gICAgICAgIHRoaXMuZmlsZXMubGVuZ3RoID4gMVxuICAgICAgICAgID8geyBXUkFQUEVSOiAndWwnLCBFTEVNRU5UOiAnbGknIH1cbiAgICAgICAgICA6IHsgV1JBUFBFUjogJ2RpdicsIEVMRU1FTlQ6ICdzcGFuJyB9O1xuXG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBsaXQvYmluZGluZy1wb3NpdGlvbnMgKi9cbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgPCR7dW5zYWZlU3RhdGljKFRBR19OQU1FLldSQVBQRVIpfSBjbGFzcz1cInNiYi1maWxlLXNlbGVjdG9yX19maWxlLWxpc3RcIj5cbiAgICAgICAgJHt0aGlzLmZpbGVzLm1hcChcbiAgICAgICAgICAoZmlsZTogUmVhZG9ubHk8RmlsZT4pID0+IGh0bWxgXG4gICAgICAgICAgICA8JHt1bnNhZmVTdGF0aWMoVEFHX05BTUUuRUxFTUVOVCl9IGNsYXNzPVwic2JiLWZpbGUtc2VsZWN0b3JfX2ZpbGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1maWxlLXNlbGVjdG9yX19maWxlLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWZpbGUtc2VsZWN0b3JfX2ZpbGUtbmFtZVwiPiR7ZmlsZS5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWZpbGUtc2VsZWN0b3JfX2ZpbGUtc2l6ZVwiPiR7dGhpcy5fZm9ybWF0RmlsZVNpemUoZmlsZS5zaXplKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c2JiLXNlY29uZGFyeS1idXR0b25cbiAgICAgICAgICAgICAgICBzaXplPSR7dGhpcy5zaXplIHx8IG5vdGhpbmd9XG4gICAgICAgICAgICAgICAgaWNvbi1uYW1lPVwidHJhc2gtc21hbGxcIlxuICAgICAgICAgICAgICAgIEBjbGljaz0keygpID0+IHRoaXMuX3JlbW92ZUZpbGUoZmlsZSl9XG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0ke2Ake2kxOG5GaWxlU2VsZWN0b3JEZWxldGVGaWxlW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19IC0gJHtmaWxlLm5hbWV9YH1cbiAgICAgICAgICAgICAgPjwvc2JiLXNlY29uZGFyeS1idXR0b24+XG4gICAgICAgICAgICA8LyR7dW5zYWZlU3RhdGljKFRBR19OQU1FLkVMRU1FTlQpfT5gLFxuICAgICAgICApfVxuICAgICAgPC8ke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRS5XUkFQUEVSKX0+XG4gICAgYDtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgbGl0L2JpbmRpbmctcG9zaXRpb25zICovXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfb25EcmFnRW50ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgdGhpcy5fY291bnRlcisrO1xuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLmZvcm1EaXNhYmxlZCkge1xuICAgICAgICB0aGlzLl9zZXREcmFnU3RhdGUoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LCB0cnVlKTtcbiAgICAgICAgdGhpcy5fYmxvY2tFdmVudChldmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgdGhpcy5fY291bnRlci0tO1xuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJlxuICAgICAgICAhdGhpcy5mb3JtRGlzYWJsZWQgJiZcbiAgICAgICAgZXZlbnQudGFyZ2V0ID09PSB0aGlzLl9kcmFnVGFyZ2V0ICYmXG4gICAgICAgIHRoaXMuX2NvdW50ZXIgPT09IDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLl9zZXREcmFnU3RhdGUoKTtcbiAgICAgICAgdGhpcy5fYmxvY2tFdmVudChldmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfb25GaWxlRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICB0aGlzLl9jb3VudGVyID0gMDtcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5mb3JtRGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5fc2V0RHJhZ1N0YXRlKCk7XG4gICAgICAgIHRoaXMuX2Jsb2NrRXZlbnQoZXZlbnQpO1xuICAgICAgICB0aGlzLmNyZWF0ZUZpbGVMaXN0KGV2ZW50LmRhdGFUcmFuc2ZlciEuZmlsZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2Jsb2NrRXZlbnQoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldERyYWdTdGF0ZShcbiAgICAgIGRyYWdUYXJnZXQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgICAgaXNEcmFnRW50ZXI6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICApOiB2b2lkIHtcbiAgICAgIHRoaXMuX2RyYWdUYXJnZXQgPSBkcmFnVGFyZ2V0O1xuICAgICAgdGhpcy50b2dnbGVTdGF0ZSgnYWN0aXZlJywgaXNEcmFnRW50ZXIpO1xuICAgICAgybVzdGF0ZUNvbnRyb2xsZXIodGhpcy5sb2FkQnV0dG9uKS50b2dnbGUoJ2FjdGl2ZScsIGlzRHJhZ0VudGVyKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAgIGNvbnN0IGFyaWFMYWJlbCA9IHRoaXMuYWNjZXNzaWJpbGl0eUxhYmVsXG4gICAgICAgID8gYCR7dGhpcy5nZXRCdXR0b25MYWJlbCgpfSAtICR7dGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWx9YFxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzYmItZmlsZS1zZWxlY3Rvcl9faW5wdXQtY29udGFpbmVyXCJcbiAgICAgICAgICBAZHJhZ2VudGVyPSR7dGhpcy5fb25EcmFnRW50ZXJ9XG4gICAgICAgICAgQGRyYWdvdmVyPSR7dGhpcy5fYmxvY2tFdmVudH1cbiAgICAgICAgICBAZHJhZ2xlYXZlPSR7dGhpcy5fb25EcmFnTGVhdmV9XG4gICAgICAgICAgQGRyb3A9JHt0aGlzLl9vbkZpbGVEcm9wfVxuICAgICAgICA+XG4gICAgICAgICAgJHt0aGlzLnJlbmRlclRlbXBsYXRlKFxuICAgICAgICAgICAgaHRtbGA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCJcbiAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLmRpc2FibGVkIHx8IHRoaXMuZm9ybURpc2FibGVkfVxuICAgICAgICAgICAgICA/bXVsdGlwbGU9JHt0aGlzLm11bHRpcGxlfVxuICAgICAgICAgICAgICBhY2NlcHQ9JHt0aGlzLmFjY2VwdCB8fCBub3RoaW5nfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPSR7YXJpYUxhYmVsIHx8IG5vdGhpbmd9XG4gICAgICAgICAgICAgIEBjaGFuZ2U9JHt0aGlzLl9yZWFkRmlsZXN9XG4gICAgICAgICAgICAgIEBmb2N1cz0ke3RoaXMuX29uRm9jdXN9XG4gICAgICAgICAgICAgIEBibHVyPSR7dGhpcy5fb25CbHVyfVxuICAgICAgICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGlkZGVuSW5wdXQgPSBlbCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIC8+YCxcbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHBcbiAgICAgICAgICByb2xlPVwic3RhdHVzXCJcbiAgICAgICAgICBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIlxuICAgICAgICAgICR7cmVmKChwPzogRWxlbWVudCkgPT4gKHRoaXMuX2xpdmVSZWdpb24gPSBwIGFzIEhUTUxQYXJhZ3JhcGhFbGVtZW50KSl9XG4gICAgICAgID48L3A+XG4gICAgICAgICR7dGhpcy5maWxlcy5sZW5ndGggPiAwID8gdGhpcy5fcmVuZGVyRmlsZUxpc3QoKSA6IG5vdGhpbmd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZmlsZS1zZWxlY3Rvcl9fZXJyb3JcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZXJyb3JcIj48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgYDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkZpbGVTZWxlY3RvckNvbW1vbkVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkZpbGVTZWxlY3RvckNvbW1vbkVsZW1lbnRNaXhpblR5cGU+ICZcbiAgICBUO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUNnQ0EsSUFBYSxxQkFBYixjQUF3QyxNQUFLO0NBRzNDLElBQVcsUUFBSztFQUNkLE9BQU8sS0FBSztDQUNkO0NBRUEsWUFBbUIsT0FBc0I7RUFDdkMsTUFBTSxlQUFlO0dBQUUsU0FBUztHQUFNLFVBQVU7RUFBSSxDQUFFO0VBQ3RELEtBQUssU0FBUyxPQUFPLE9BQU8sU0FBUyxDQUFBLENBQUU7Q0FDekM7O0FBd0JGLElBQWEscUNBR1gsZUFDa0U7Q0EwVWxFLGNBelUyQztvQkFDakMsaUJBQWlCLHVCQUF1QixVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFEOUMscUNBQ0wsWUFBb0Q7OztJQVlmLEtBQUEsMEJBYmhDLGtCQUFBLE1BQUEsMEJBQUEsR0FBNEIsa0JBQUEsTUFBQSxvQkFhNkIsSUFBSTtJQUsxRCxLQUFBLDhCQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLHdCQUFvQixLQUFLO0lBSXpCLEtBQUEsa0NBQUEsa0JBQUEsTUFBQSwyQkFBQSxHQUFBLGtCQUFBLE1BQUEsNEJBQXlDLFNBQVM7SUFLbEQsS0FBQSw0QkFBQSxrQkFBQSxNQUFBLCtCQUFBLEdBQUEsa0JBQUEsTUFBQSxzQkFBaUIsRUFBRTtJQUtuQixLQUFBLHdDQUFBLGtCQUFBLE1BQUEseUJBQUEsR0FBQSxrQkFBQSxNQUFBLGtDQUE2QixFQUFFO0lBOEJ2QyxLQUFBLFVBQU0sa0JBQUEsTUFBQSxxQ0FBQSxHQUFxQixDQUFBO0lBVzNCLEtBQUEsWUFBc0I7S0FBQztLQUFLO0tBQU07S0FBTTtLQUFNO0lBQUk7SUFHaEQsS0FBQSxXQUFXLElBQUksc0JBQXNCLElBQUk7SUFJM0MsS0FBQSxX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
|