@fundamental-ngx/platform 0.47.4 → 0.48.0-rc.1
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/README.md +0 -28
- package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +6 -11
- package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +6 -8
- package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +5 -6
- package/esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +5 -5
- package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +8 -11
- package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +6 -8
- package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +5 -7
- package/esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +5 -6
- package/esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +6 -6
- package/esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +6 -7
- package/esm2022/approval-flow/approval-flow.component.mjs +8 -10
- package/esm2022/approval-flow/approval-flow.module.mjs +4 -4
- package/esm2022/approval-flow/services/approval-flow-add-node-view.service.mjs +3 -3
- package/esm2022/button/button.component.mjs +5 -5
- package/esm2022/button/button.module.mjs +4 -4
- package/esm2022/dynamic-page/directives/dynamic-page-header-subtitle.directive.mjs +3 -3
- package/esm2022/dynamic-page/directives/dynamic-page-header-title.directive.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content-host.component.mjs +5 -5
- package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +5 -5
- package/esm2022/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/actions/global-actions/dynamic-page-global-actions.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/actions/layout-actions/dynamic-page-layout-actions.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +4 -4
- package/esm2022/dynamic-page/dynamic-page-header/key-info/dynamic-page-key-info.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title-image.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page.component.mjs +8 -10
- package/esm2022/dynamic-page/dynamic-page.config.mjs +4 -4
- package/esm2022/dynamic-page/dynamic-page.module.mjs +4 -4
- package/esm2022/dynamic-page/dynamic-page.service.mjs +3 -3
- package/esm2022/feed-input/feed-input.component.mjs +6 -7
- package/esm2022/feed-input/feed-input.module.mjs +4 -4
- package/esm2022/form/auto-complete/auto-complete.directive.mjs +5 -5
- package/esm2022/form/auto-complete/auto-complete.module.mjs +4 -4
- package/esm2022/form/checkbox/checkbox.component.mjs +6 -6
- package/esm2022/form/checkbox/checkbox.module.mjs +4 -4
- package/esm2022/form/checkbox-group/checkbox-group.component.mjs +8 -8
- package/esm2022/form/checkbox-group/checkbox-group.module.mjs +4 -4
- package/esm2022/form/combobox/combobox/combobox.component.mjs +9 -11
- package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +13 -15
- package/esm2022/form/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
- package/esm2022/form/combobox/combobox.config.mjs +4 -4
- package/esm2022/form/combobox/combobox.module.mjs +4 -4
- package/esm2022/form/combobox/commons/base-combobox.mjs +8 -6
- package/esm2022/form/combobox/directives/combobox-item.directive.mjs +15 -15
- package/esm2022/form/date-picker/date-picker.component.mjs +6 -6
- package/esm2022/form/date-picker/date-picker.module.mjs +4 -4
- package/esm2022/form/datetime-picker/datetime-picker.component.mjs +6 -6
- package/esm2022/form/datetime-picker/datetime-picker.module.mjs +4 -4
- package/esm2022/form/form-generator/base-dynamic-form-generator-control.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +6 -7
- package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +4 -4
- package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +5 -5
- package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +6 -6
- package/esm2022/form/form-generator/fdp-form-generator.module.mjs +4 -4
- package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +9 -11
- package/esm2022/form/form-generator/form-generator-components-accessor.service.mjs +3 -3
- package/esm2022/form/form-generator/form-generator-field/form-generator-field.component.mjs +7 -8
- package/esm2022/form/form-generator/form-generator.service.mjs +5 -5
- package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +5 -5
- package/esm2022/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +3 -3
- package/esm2022/form/form-group/fdp-form.module.mjs +4 -4
- package/esm2022/form/form-group/form-field/form-field.component.mjs +10 -10
- package/esm2022/form/form-group/form-field-error/form-field-error-description.directive.mjs +6 -6
- package/esm2022/form/form-group/form-field-error/form-field-error-heading.directive.mjs +6 -6
- package/esm2022/form/form-group/form-field-error/form-field-error.directive.mjs +5 -5
- package/esm2022/form/form-group/form-field-extras/form-field-extras.component.mjs +3 -3
- package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +6 -6
- package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +6 -6
- package/esm2022/form/form-group/form-group.component.mjs +8 -10
- package/esm2022/form/form-group/pipes/field-group-row-value.pipe.mjs +3 -3
- package/esm2022/form/form-group/services/form-field-layout.service.mjs +5 -5
- package/esm2022/form/index.mjs +1 -3
- package/esm2022/form/input/fdp-input.module.mjs +4 -4
- package/esm2022/form/input/input.component.mjs +6 -6
- package/esm2022/form/input-group/addon-body.component.mjs +5 -5
- package/esm2022/form/input-group/addon.component.mjs +5 -5
- package/esm2022/form/input-group/input-group.component.mjs +12 -12
- package/esm2022/form/input-group/input-group.config.mjs +4 -4
- package/esm2022/form/input-group/input-group.module.mjs +4 -4
- package/esm2022/form/input-group/input.component.mjs +3 -3
- package/esm2022/form/input-message-group-with-template/input-message-group-with-template.component.mjs +7 -7
- package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +6 -6
- package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +10 -12
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +8 -9
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +4 -4
- package/esm2022/form/multi-combobox/multi-combobox.config.mjs +4 -4
- package/esm2022/form/multi-combobox/multi-combobox.module.mjs +4 -4
- package/esm2022/form/multi-input/base-multi-input.mjs +6 -6
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +12 -12
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
- package/esm2022/form/multi-input/multi-input.component.mjs +9 -11
- package/esm2022/form/multi-input/multi-input.config.mjs +4 -4
- package/esm2022/form/multi-input/multi-input.module.mjs +4 -4
- package/esm2022/form/radio-group/radio/radio.component.mjs +8 -8
- package/esm2022/form/radio-group/radio-group.component.mjs +8 -8
- package/esm2022/form/radio-group/radio-group.module.mjs +4 -4
- package/esm2022/form/select/commons/base-select.mjs +6 -6
- package/esm2022/form/select/select/select.component.mjs +8 -8
- package/esm2022/form/select/select.config.mjs +4 -4
- package/esm2022/form/select/select.module.mjs +4 -4
- package/esm2022/form/step-input/base.step-input.mjs +5 -5
- package/esm2022/form/step-input/number/number-step-input.component.mjs +9 -10
- package/esm2022/form/step-input/step-input-action-button.mjs +3 -3
- package/esm2022/form/step-input/step-input-control.directive.mjs +6 -6
- package/esm2022/form/step-input/step-input-decrement.directive.mjs +5 -5
- package/esm2022/form/step-input/step-input-increment.directive.mjs +5 -5
- package/esm2022/form/step-input/step-input.config.mjs +3 -3
- package/esm2022/form/step-input/step-input.module.mjs +4 -4
- package/esm2022/form/switch/switch/switch.component.mjs +6 -6
- package/esm2022/form/switch/switch/switch.config.mjs +3 -3
- package/esm2022/form/switch/switch.module.mjs +4 -4
- package/esm2022/form/text-area/text-area.component.mjs +8 -9
- package/esm2022/form/text-area/text-area.config.mjs +3 -3
- package/esm2022/form/text-area/text-area.module.mjs +4 -4
- package/esm2022/form/time-picker/time-picker.component.mjs +6 -6
- package/esm2022/form/time-picker/time-picker.module.mjs +4 -4
- package/esm2022/fundamental-ngx.module.mjs +14 -33
- package/esm2022/icon-tab-bar/components/closable-icon-tab-bar.class.mjs +3 -3
- package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +5 -9
- package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +6 -8
- package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +6 -8
- package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +5 -8
- package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +7 -9
- package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +6 -15
- package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +5 -9
- package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +6 -8
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +5 -5
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +5 -5
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +5 -5
- package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +8 -9
- package/esm2022/icon-tab-bar/icon-tab-bar.module.mjs +4 -4
- package/esm2022/index.mjs +8 -12
- package/esm2022/info-label/info-label.component.mjs +5 -5
- package/esm2022/info-label/info-label.module.mjs +4 -4
- package/esm2022/link/link.component.mjs +5 -5
- package/esm2022/link/link.module.mjs +4 -4
- package/esm2022/list/action-list-item/action-list-item.component.mjs +3 -3
- package/esm2022/list/action-list-item/action-list-item.module.mjs +4 -4
- package/esm2022/list/base-list-item.mjs +11 -11
- package/esm2022/list/display-list-item/display-list-item.component.mjs +6 -7
- package/esm2022/list/display-list-item/display-list-item.module.mjs +4 -4
- package/esm2022/list/free-content-list-item/free-content-list-item.component.mjs +4 -4
- package/esm2022/list/list-group-footer.component.mjs +3 -3
- package/esm2022/list/list-group-header.component.mjs +3 -3
- package/esm2022/list/list.component.mjs +9 -11
- package/esm2022/list/list.config.mjs +3 -3
- package/esm2022/list/list.module.mjs +4 -4
- package/esm2022/list/load-more-content.directive.mjs +4 -4
- package/esm2022/list/object-list-item/object-list-item-row.component.mjs +4 -4
- package/esm2022/list/object-list-item/object-list-item.component.mjs +6 -7
- package/esm2022/list/object-list-item/object-list-item.module.mjs +4 -4
- package/esm2022/list/standard-list-item/standard-list-item.component.mjs +6 -7
- package/esm2022/list/standard-list-item/standard-list-item.module.mjs +4 -4
- package/esm2022/menu/menu-item.component.mjs +7 -7
- package/esm2022/menu/menu-trigger.directive.mjs +6 -6
- package/esm2022/menu/menu.component.mjs +6 -6
- package/esm2022/menu/menu.module.mjs +4 -4
- package/esm2022/menu-button/menu-button.component.mjs +5 -5
- package/esm2022/menu-button/menu-button.module.mjs +4 -4
- package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +6 -6
- package/esm2022/message-popover/components/message-view/message-view.component.mjs +8 -10
- package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +6 -6
- package/esm2022/message-popover/message-popover.component.mjs +7 -9
- package/esm2022/message-popover/platform-message-popover.module.mjs +4 -4
- package/esm2022/object-marker/object-marker.component.mjs +6 -7
- package/esm2022/object-marker/object-marker.module.mjs +4 -4
- package/esm2022/object-status/object-status.component.mjs +8 -8
- package/esm2022/object-status/object-status.module.mjs +4 -4
- package/esm2022/page-footer/page-footer.component.mjs +6 -6
- package/esm2022/page-footer/page-footer.module.mjs +4 -4
- package/esm2022/panel/panel-actions.component.mjs +3 -3
- package/esm2022/panel/panel-content/panel-content.component.mjs +4 -4
- package/esm2022/panel/panel.component.mjs +5 -5
- package/esm2022/panel/panel.config.mjs +4 -4
- package/esm2022/panel/panel.module.mjs +4 -4
- package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +8 -9
- package/esm2022/search-field/search-field-mobile/search-field-mobile.module.mjs +4 -4
- package/esm2022/search-field/search-field.component.mjs +16 -18
- package/esm2022/search-field/search-field.module.mjs +4 -4
- package/esm2022/settings-generator/controls/theme-selector-list/theme-selector-list.component.mjs +9 -16
- package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +5 -6
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +6 -9
- package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +6 -8
- package/esm2022/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +7 -7
- package/esm2022/settings-generator/settings-generator-layout-accessor.service.mjs +3 -3
- package/esm2022/settings-generator/settings-generator.component.mjs +9 -9
- package/esm2022/settings-generator/settings-generator.module.mjs +4 -4
- package/esm2022/settings-generator/settings-generator.service.mjs +4 -4
- package/esm2022/shared/base.mjs +5 -5
- package/esm2022/shared/form/base.input.mjs +6 -6
- package/esm2022/shared/form/collection-base.input.mjs +6 -6
- package/esm2022/shared/form/inline-layout-collection-base.input.mjs +13 -13
- package/esm2022/shared/pipes/convert-bytes/convert-bytes.pipe.mjs +3 -3
- package/esm2022/shared/pipes/pipe.module.mjs +4 -4
- package/esm2022/shared/platform.config.mjs +3 -3
- package/esm2022/slider/slider.component.mjs +6 -6
- package/esm2022/slider/slider.module.mjs +4 -4
- package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.mjs +4 -4
- package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +4 -4
- package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +6 -9
- package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +7 -9
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +3 -3
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +5 -5
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +4 -4
- package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +3 -3
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +8 -10
- package/esm2022/smart-filter-bar/smart-filter-bar.module.mjs +4 -4
- package/esm2022/smart-filter-bar/smart-filter-bar.service.mjs +4 -4
- package/esm2022/split-menu-button/split-menu-button.component.mjs +6 -6
- package/esm2022/split-menu-button/split-menu-button.module.mjs +4 -4
- package/esm2022/table/components/no-data-wrapper/no-data-wrapper.component.mjs +3 -3
- package/esm2022/table/components/reset-button/reset-button.component.mjs +5 -5
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +6 -8
- package/esm2022/table/components/table-column/table-column.component.mjs +6 -6
- package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +6 -6
- package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +5 -15
- package/esm2022/table/components/table-group-row/table-group-row.component.mjs +7 -7
- package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +6 -6
- package/esm2022/table/components/table-header-row/table-header-row.component.mjs +11 -13
- package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +7 -9
- package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +9 -11
- package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +6 -9
- package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +6 -8
- package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +9 -11
- package/esm2022/table/components/table-p13-dialog/table-p13-columns.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +5 -5
- package/esm2022/table/components/table-p13-dialog/table-p13-filter.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-group.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-sort.component.mjs +3 -3
- package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +7 -9
- package/esm2022/table/components/table-row/table-row.component.mjs +8 -12
- package/esm2022/table/components/table-toolbar/table-toolbar-actions.component.mjs +3 -3
- package/esm2022/table/components/table-toolbar/table-toolbar-left-actions.component.mjs +3 -3
- package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +7 -8
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +6 -6
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +5 -6
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +5 -14
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +5 -8
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +5 -7
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +7 -10
- package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +6 -8
- package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +6 -9
- package/esm2022/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +5 -5
- package/esm2022/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +3 -3
- package/esm2022/table/table.component.mjs +9 -14
- package/esm2022/table/table.module.mjs +4 -4
- package/esm2022/table-helpers/directives/platform-table-column-responsive.directive.mjs +6 -6
- package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +4 -4
- package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +5 -5
- package/esm2022/table-helpers/directives/table-cell-selectable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-cell.directive.mjs +16 -16
- package/esm2022/table-helpers/directives/table-data-source.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-draggable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-header.directive.mjs +7 -7
- package/esm2022/table-helpers/directives/table-initial-state.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +4 -4
- package/esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +4 -4
- package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +3 -3
- package/esm2022/table-helpers/enums/collection-filter.enum.mjs +16 -1
- package/esm2022/table-helpers/pipes/cell-styles.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/column-resizable-side.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/column-sorting-direction.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/row-classes.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/selection-cell-styles.pipe.mjs +3 -3
- package/esm2022/table-helpers/services/table-column-resize.service.mjs +5 -5
- package/esm2022/table-helpers/services/table-responsive.service.mjs +5 -5
- package/esm2022/table-helpers/services/table-row.service.mjs +3 -3
- package/esm2022/table-helpers/services/table-scroll-dispatcher.service.mjs +3 -3
- package/esm2022/table-helpers/services/table.service.mjs +3 -3
- package/esm2022/table-helpers/table-helpers.module.mjs +4 -4
- package/esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +5 -5
- package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +6 -10
- package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +13 -15
- package/esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +3 -3
- package/esm2022/value-help-dialog/directives/condition-count-message.directive.mjs +5 -5
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +12 -17
- package/esm2022/value-help-dialog/value-help-dialog.module.mjs +4 -4
- package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +5 -5
- package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +6 -8
- package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +3 -3
- package/esm2022/variant-management/directives/variant-management-dirty-label.directive.mjs +4 -4
- package/esm2022/variant-management/variant-management.component.mjs +8 -10
- package/esm2022/variant-management/variant-management.module.mjs +4 -4
- package/esm2022/wizard-generator/base-wizard-generator.mjs +5 -5
- package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +7 -8
- package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +7 -9
- package/esm2022/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +6 -7
- package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +6 -7
- package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +5 -6
- package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +7 -7
- package/esm2022/wizard-generator/directives/wizard-generator-finish-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-go-next-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-review-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-summary-step.directive.mjs +3 -3
- package/esm2022/wizard-generator/wizard-dialog-generator.service.mjs +4 -4
- package/esm2022/wizard-generator/wizard-generator.module.mjs +4 -4
- package/esm2022/wizard-generator/wizard-generator.service.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +62 -74
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-button.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +54 -56
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +9 -10
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +444 -602
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +59 -87
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-info-label.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-link.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +73 -78
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu.mjs +20 -20
- package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +29 -33
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs +9 -10
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-status.mjs +12 -12
- package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +9 -9
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-panel.mjs +19 -19
- package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +29 -32
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +45 -56
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-shared.mjs +36 -36
- package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-slider.mjs +9 -9
- package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +48 -53
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +9 -9
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +115 -100
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +168 -218
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +41 -52
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +28 -31
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +58 -61
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform.mjs +19 -42
- package/fesm2022/fundamental-ngx-platform.mjs.map +1 -1
- package/form/combobox/combobox-mobile/combobox/combobox-mobile.component.d.ts +2 -2
- package/form/form-group/form-group.component.d.ts +1 -1
- package/form/index.d.ts +0 -2
- package/form/input-group/input-group.component.d.ts +2 -2
- package/form/multi-combobox/multi-combobox/multi-combobox.component.d.ts +1 -1
- package/form/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +2 -2
- package/fundamental-ngx-platform-v0.48.0-rc.1.tgz +0 -0
- package/fundamental-ngx.module.d.ts +27 -31
- package/icon-tab-bar/components/icon-tab-bar-base.class.d.ts +0 -2
- package/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.d.ts +0 -2
- package/index.d.ts +7 -11
- package/list/list.component.d.ts +1 -1
- package/package.json +4 -28
- package/page-footer/page-footer.component.d.ts +1 -1
- package/schematics/ng-add/index.js +1 -1
- package/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.d.ts +1 -1
- package/settings-generator/settings-generator.component.d.ts +2 -2
- package/table/components/table-p13-dialog/filtering/filter-rule.component.d.ts +2 -0
- package/table/table.component.d.ts +1 -1
- package/table-helpers/enums/collection-filter.enum.d.ts +2 -0
- package/value-help-dialog/components/select-tab/select-tab.component.d.ts +1 -1
- package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +1 -1
- package/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.d.ts +2 -2
- package/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.d.ts +2 -2
- package/action-bar/README.md +0 -25
- package/action-bar/action-bar.component.d.ts +0 -36
- package/action-bar/action-bar.module.d.ts +0 -8
- package/action-bar/index.d.ts +0 -2
- package/action-button-group/README.md +0 -25
- package/action-button-group/action-button-group.component.d.ts +0 -11
- package/action-button-group/action-button-group.module.d.ts +0 -7
- package/action-button-group/index.d.ts +0 -2
- package/esm2022/action-bar/action-bar.component.mjs +0 -64
- package/esm2022/action-bar/action-bar.module.mjs +0 -17
- package/esm2022/action-bar/fundamental-ngx-platform-action-bar.mjs +0 -5
- package/esm2022/action-bar/index.mjs +0 -3
- package/esm2022/action-button-group/action-button-group.component.mjs +0 -21
- package/esm2022/action-button-group/action-button-group.module.mjs +0 -16
- package/esm2022/action-button-group/fundamental-ngx-platform-action-button-group.mjs +0 -5
- package/esm2022/action-button-group/index.mjs +0 -3
- package/esm2022/form/platform-file-uploader/platform-file-uploader.component.mjs +0 -143
- package/esm2022/form/platform-file-uploader/platform-file-uploader.module.mjs +0 -16
- package/esm2022/thumbnail/fundamental-ngx-platform-thumbnail.mjs +0 -5
- package/esm2022/thumbnail/index.mjs +0 -6
- package/esm2022/thumbnail/thumbnail-details/thumbnail-details.component.mjs +0 -166
- package/esm2022/thumbnail/thumbnail-image/thumbnail-image.component.mjs +0 -100
- package/esm2022/thumbnail/thumbnail.component.mjs +0 -148
- package/esm2022/thumbnail/thumbnail.interfaces.mjs +0 -2
- package/esm2022/thumbnail/thumbnail.module.mjs +0 -19
- package/esm2022/upload-collection/dialogs/move-to/move-to.component.mjs +0 -148
- package/esm2022/upload-collection/dialogs/new-folder/new-folder.component.mjs +0 -69
- package/esm2022/upload-collection/directives/upload-collection-dragndrop.directive.mjs +0 -138
- package/esm2022/upload-collection/domain/upload-collection-data-provider.mjs +0 -106
- package/esm2022/upload-collection/domain/upload-collection-data-source.mjs +0 -95
- package/esm2022/upload-collection/fundamental-ngx-platform-upload-collection.mjs +0 -5
- package/esm2022/upload-collection/helpers/generate-message-stripe-data.mjs +0 -20
- package/esm2022/upload-collection/index.mjs +0 -12
- package/esm2022/upload-collection/models/upload-collection.models.mjs +0 -58
- package/esm2022/upload-collection/services/files-validator.service.mjs +0 -68
- package/esm2022/upload-collection/upload-collection/upload-collection-data-provider-test.mjs +0 -280
- package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +0 -926
- package/esm2022/upload-collection/upload-collection.module.mjs +0 -33
- package/fesm2022/fundamental-ngx-platform-action-bar.mjs +0 -85
- package/fesm2022/fundamental-ngx-platform-action-bar.mjs.map +0 -1
- package/fesm2022/fundamental-ngx-platform-action-button-group.mjs +0 -41
- package/fesm2022/fundamental-ngx-platform-action-button-group.mjs.map +0 -1
- package/fesm2022/fundamental-ngx-platform-thumbnail.mjs +0 -418
- package/fesm2022/fundamental-ngx-platform-thumbnail.mjs.map +0 -1
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +0 -1893
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +0 -1
- package/form/platform-file-uploader/platform-file-uploader.component.d.ts +0 -69
- package/form/platform-file-uploader/platform-file-uploader.module.d.ts +0 -7
- package/fundamental-ngx-platform-v0.47.4.tgz +0 -0
- package/thumbnail/README.md +0 -25
- package/thumbnail/index.d.ts +0 -5
- package/thumbnail/thumbnail-details/thumbnail-details.component.d.ts +0 -57
- package/thumbnail/thumbnail-image/thumbnail-image.component.d.ts +0 -48
- package/thumbnail/thumbnail.component.d.ts +0 -73
- package/thumbnail/thumbnail.interfaces.d.ts +0 -12
- package/thumbnail/thumbnail.module.d.ts +0 -9
- package/upload-collection/README.md +0 -25
- package/upload-collection/dialogs/move-to/move-to.component.d.ts +0 -57
- package/upload-collection/dialogs/new-folder/new-folder.component.d.ts +0 -26
- package/upload-collection/directives/upload-collection-dragndrop.directive.d.ts +0 -64
- package/upload-collection/domain/upload-collection-data-provider.d.ts +0 -46
- package/upload-collection/domain/upload-collection-data-source.d.ts +0 -49
- package/upload-collection/helpers/generate-message-stripe-data.d.ts +0 -3
- package/upload-collection/index.d.ts +0 -11
- package/upload-collection/models/upload-collection.models.d.ts +0 -225
- package/upload-collection/services/files-validator.service.d.ts +0 -18
- package/upload-collection/upload-collection/upload-collection-data-provider-test.d.ts +0 -36
- package/upload-collection/upload-collection/upload-collection.component.d.ts +0 -259
- package/upload-collection/upload-collection.module.d.ts +0 -11
|
@@ -446,10 +446,10 @@ export class WizardGeneratorService {
|
|
|
446
446
|
_getCompletedStepIds() {
|
|
447
447
|
return this.items.filter((i) => i.status === 'completed').map((i) => i.id);
|
|
448
448
|
}
|
|
449
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
450
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
449
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: WizardGeneratorService, deps: [{ token: i1.FormGeneratorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
450
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: WizardGeneratorService }); }
|
|
451
451
|
}
|
|
452
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
452
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: WizardGeneratorService, decorators: [{
|
|
453
453
|
type: Injectable
|
|
454
|
-
}], ctorParameters:
|
|
454
|
+
}], ctorParameters: () => [{ type: i1.FormGeneratorService }] });
|
|
455
455
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLWdlbmVyYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3dpemFyZC1nZW5lcmF0b3Ivd2l6YXJkLWdlbmVyYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFZeEUsTUFBTSxDQUFOLElBQVksOEJBSVg7QUFKRCxXQUFZLDhCQUE4QjtJQUN0QyxtRkFBaUQsQ0FBQTtJQUNqRCwrRUFBNkMsQ0FBQTtJQUM3QyxtRkFBaUQsQ0FBQTtBQUNyRCxDQUFDLEVBSlcsOEJBQThCLEtBQTlCLDhCQUE4QixRQUl6QztBQWlCRDs7R0FFRztBQUVILE1BQU0sT0FBTyxzQkFBc0I7SUFpRC9CLGNBQWM7SUFDZCxZQUFvQixxQkFBMkM7UUFBM0MsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFzQjtRQTlDL0Q7O1dBRUc7UUFDSCxvQkFBZSxHQUFvQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTdDOztXQUVHO1FBQ0gsb0JBQWUsR0FBeUIsRUFBRSxDQUFDO1FBRTNDOzs7V0FHRztRQUNILG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBRXRCLGNBQWM7UUFDZCw2QkFBd0IsR0FB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QUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQzs4R0ExakJRLHNCQUFzQjtrSEFBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBjb25jYXQsIG1lcmdlV2l0aCwgdW5pcSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7IEZvcm1HZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9mb3JtJztcbmltcG9ydCB7IFdpemFyZEdlbmVyYXRvckZvcm1Hcm91cCwgV2l6YXJkR2VuZXJhdG9yRm9ybUl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMvd2l6YXJkLWdlbmVyYXRvci1mb3JtLWdyb3VwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBzZWxlY3RTdHJhdGVneSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbSwgV2l6YXJkR2VuZXJhdG9ySXRlbSB9IGZyb20gJy4vaW50ZXJmYWNlcy93aXphcmQtZ2VuZXJhdG9yLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gICAgV2l6YXJkR2VuZXJhdG9yRGVwZW5kZW5jeUZpZWxkcyxcbiAgICBXaXphcmRHZW5lcmF0b3JGb3Jtc1ZhbHVlLFxuICAgIFdpemFyZFN0ZXBTdWJtaXR0ZWRGb3JtcyxcbiAgICBXaXphcmRWaXNpYmxlU3RlcHNcbn0gZnJvbSAnLi9pbnRlcmZhY2VzL3dpemFyZC1nZW5lcmF0b3ItZm9ybXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFdpemFyZEdlbmVyYXRvclN0ZXAgfSBmcm9tICcuL2ludGVyZmFjZXMvd2l6YXJkLXN0ZXAuaW50ZXJmYWNlJztcblxuZXhwb3J0IHR5cGUgU3RlcHNDb21wb25lbnRzID0gTWFwPHN0cmluZywgV2l6YXJkR2VuZXJhdG9yU3RlcD47XG5cbmV4cG9ydCBlbnVtIFdpemFyZEdlbmVyYXRvclJlZnJlc2hTdHJhdGVneSB7XG4gICAgUkVGUkVTSF9TVEVQX1ZJU0lCSUxJVFkgPSAncmVmcmVzaFN0ZXBWaXNpYmlsaXR5JyxcbiAgICBSRVZBTElEQVRFX1NURVBfRk9STVMgPSAncmV2YWxpZGF0ZVN0ZXBGb3JtcycsXG4gICAgUkVGUkVTSF9GT1JNX1ZJU0lCSUxJVFkgPSAncmVmcmVzaEZvcm1WaXNpYmlsaXR5J1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlcGVuZGVuY3lTdGVwcyB7XG4gICAgLyoqIFN0ZXAgSUQgKi9cbiAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICAgIC8qKiBGb3JtIElEIHdpdGggYXJyYXkgb2YgZm9ybSBjb250cm9sIGlkJ3MgKi9cbiAgICAgICAgW2tleTogc3RyaW5nXToge1xuICAgICAgICAgICAgW2tleSBpbiBXaXphcmRHZW5lcmF0b3JSZWZyZXNoU3RyYXRlZ3ldPzogc3RyaW5nW107XG4gICAgICAgIH07XG4gICAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGVwRGVwZW5kZW5jeUZpZWxkcyB7XG4gICAgLyoqIERlcGVuZGVudCBzdGVwICovXG4gICAgW2tleTogc3RyaW5nXTogRGVwZW5kZW5jeVN0ZXBzO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBIZWxwZXIgc2VydmljZSB0byBrZWVwIGFsbCB0cmFuc2Zvcm1hdGlvbnMgYW5kIGRhdGEgaW4gb25lIHBsYWNlLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgV2l6YXJkR2VuZXJhdG9yU2VydmljZSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpdGVtczogUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVmlzaWJsZSBzdGVwcyBjb21wb25lbnRzXG4gICAgICovXG4gICAgc3RlcHNDb21wb25lbnRzOiBTdGVwc0NvbXBvbmVudHMgPSBuZXcgTWFwKCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gT2JqZWN0IHdpdGggc3RlcHMgdGhhdCBhcmUgZGVwZW5kZW5jaWVzIGZvciBhbm90aGVyIHN0ZXBzLlxuICAgICAqL1xuICAgIGRlcGVuZGVuY3lTdGVwczogU3RlcERlcGVuZGVuY3lGaWVsZHMgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRvIGFwcGVuZCB0aGUgc3RlcCB0byB0aGUgd2l6YXJkLiBJZiBmYWxzZSwgZWFjaCBzdGVwIHdpbGwgYmUgZGlzcGxheWVkIG9uIGEgZGlmZmVyZW50IHBhZ2UuXG4gICAgICogRGVmYXVsdCBpcyB0cnVlLlxuICAgICAqL1xuICAgIGFwcGVuZFRvV2l6YXJkID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Nob3VsZFJlZGlyZWN0VG9TdW1tYXJ5ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU3RlcHMgdGhhdCBhcmUgdmlzaWJsZSB0byB0aGUgdXNlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgdmlzaWJsZVdpemFyZFN0ZXBzOiBQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92aXNpYmxlV2l6YXJkU3RlcHMkID0gbmV3IFN1YmplY3Q8UHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtW10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FwcGVuZFRvV2l6YXJkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odGhpcy5hcHBlbmRUb1dpemFyZCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBzQ29tcG9uZW50cyQgPSBuZXcgU3ViamVjdDxTdGVwc0NvbXBvbmVudHM+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBzT3JkZXJDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbmV4dFN0ZXBJbmRleCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1Ym1pdHRlZEZvcm1SYXdWYWx1ZXM6IFdpemFyZEdlbmVyYXRvckZvcm1zVmFsdWUgPSB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfd2l6YXJkU3RlcElkczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZm9ybUdlbmVyYXRvclNlcnZpY2U6IEZvcm1HZW5lcmF0b3JTZXJ2aWNlKSB7fVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldHVybnMgY3VycmVudCBzdGVwIElEIGluIFdpemFyZC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBDdXJyZW50IHN0ZXAgSUQuXG4gICAgICovXG4gICAgZ2V0Q3VycmVudFN0ZXBJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcElkID0gdGhpcy52aXNpYmxlV2l6YXJkU3RlcHM/LmZpbmQoKGkpID0+IGkuc3RhdHVzID09PSAnY3VycmVudCcpO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50U3RlcElkPy5pZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0dXJucyBjdXJyZW50IHN0ZXAgaW5kZXguXG4gICAgICogQHJldHVybnMge251bWJlcn0gSW5kZXggb2YgdGhlIGN1cnJlbnQgc3RlcCBpbiBhcnJheSBvZiBXaXphcmQgc3RlcHMuXG4gICAgICovXG4gICAgZ2V0Q3VycmVudFN0ZXBJbmRleCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcElkID0gdGhpcy5nZXRDdXJyZW50U3RlcElkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0ZXBJbmRleChjdXJyZW50U3RlcElkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2hlcyBmb3IgdGhlIGluZGV4IG9mIHRoZSBzdGVwIGJhc2VkIG9uIGl0J3MgSURcbiAgICAgKiBAcGFyYW0gc3RlcElkIFN0ZXAgSURcbiAgICAgKiBAcmV0dXJucyBJbmRleCBpbiB0aGUgYXJyYXkgb2Ygc3RlcHMgZm9yIGRlZmluZWQgc3RlcCBJRC5cbiAgICAgKi9cbiAgICBnZXRTdGVwSW5kZXgoc3RlcElkPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgc3RlcEluZGV4ID0gdGhpcy52aXNpYmxlV2l6YXJkU3RlcHM/LmZpbmRJbmRleCgoaSkgPT4gaS5pZCA9PT0gc3RlcElkKTtcbiAgICAgICAgcmV0dXJuIHN0ZXBJbmRleCA+IC0xID8gc3RlcEluZGV4IDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2VuZHMgY29tbWFuZCB0byBzdWJtaXQgYWxsIGZvcm1zIGluc2lkZSB0aGUgc3RlcC5cbiAgICAgKiBAcGFyYW0gc3RlcElkIFN0ZXAgSUQgZm9yIHdoaWNoIGZvcm1zIG5lZWQncyB0byBiZSBzdWJtaXR0ZWQuXG4gICAgICogQHBhcmFtIHNraXBJZlVudG91Y2hlZCBTa2lwIHZhbGlkYXRpb24gaWYgZm9ybSBoYXZlbid0IGJlZW4gdG91Y2hlZC5cbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxXaXphcmRTdGVwU3VibWl0dGVkRm9ybXM+fSBPYnNlcnZhYmxlLCB3aGljaCB3aWxsIGVtaXRcbiAgICAgKiB3aGVuIGFsbCB2aXNpYmxlIGZvcm1zIGluIHN0ZXAgYXJlIHN1Ym1pdHRlZC5cbiAgICAgKi9cbiAgICBzdWJtaXRTdGVwRm9ybXMoc3RlcElkPzogc3RyaW5nLCBza2lwSWZVbnRvdWNoZWQgPSBmYWxzZSk6IE9ic2VydmFibGU8V2l6YXJkU3RlcFN1Ym1pdHRlZEZvcm1zIHwgbnVsbD4ge1xuICAgICAgICBpZiAoIXN0ZXBJZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RlcCA9IHRoaXMuc3RlcHNDb21wb25lbnRzLmdldChzdGVwSWQpO1xuXG4gICAgICAgIGlmICghc3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0ZXAuc3VibWl0Rm9ybXMoc2tpcElmVW50b3VjaGVkKS5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdWJtaXR0ZWRGb3JtUmF3VmFsdWVzW3N0ZXBJZF0gPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUcmlnZ2VycyB2YWxpZGF0aW9uIGZvciBjdXJyZW50IHN0ZXAgZm9ybXMuXG4gICAgICogQHJldHVybnMge09ic2VydmFibGU8Ym9vbGVhbj59IE9ic2VydmFibGUgd2l0aCB2YWxpZGF0aW9uIHJlc3VsdC5cbiAgICAgKi9cbiAgICB2YWxpZGF0ZVN0ZXBGb3Jtcyhza2lwSWZVbnRvdWNoZWQgPSBmYWxzZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcElkID0gdGhpcy5nZXRDdXJyZW50U3RlcElkKCk7XG5cbiAgICAgICAgaWYgKCFjdXJyZW50U3RlcElkKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdWJtaXRTdGVwRm9ybXMoY3VycmVudFN0ZXBJZCwgc2tpcElmVW50b3VjaGVkKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXN1bHQpID0+IHJlc3VsdCA9PT0gbnVsbCB8fCBPYmplY3QudmFsdWVzKHJlc3VsdCkuZXZlcnkoKHIpID0+IHIuc3VjY2VzcykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNldHMgbmV3IGFycmF5IG9mIHZpc2libGUgc3RlcHMgZm9yIFdpemFyZC5cbiAgICAgKiBAcGFyYW0gc3RlcHMgc3RlcHMgdGhhdCBuZWVkcyB0byBiZSBzaG93biBpbiBXaXphcmQuXG4gICAgICovXG4gICAgc2V0VmlzaWJsZVN0ZXBzKHN0ZXBzOiBQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpc2libGVXaXphcmRTdGVwcyA9IHN0ZXBzO1xuICAgICAgICB0aGlzLl92aXNpYmxlV2l6YXJkU3RlcHMkLm5leHQoc3RlcHMpO1xuXG4gICAgICAgIHRoaXMuc2V0V2l6YXJkU3RlcElkcyhzdGVwcy5tYXAoKHMpID0+IHMuaWQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXT59IE9ic2VydmFibGUsIHdoaWNoIHdpbGwgZW1pdCBldmVyeSB0aW1lXG4gICAgICogd2hlbiBhcnJheSBvZiB2aXNpYmxlIHN0ZXAgaXRlbXMgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgKi9cbiAgICBnZXRWaXNpYmxlU3RlcHMoKTogT2JzZXJ2YWJsZTxQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZVdpemFyZFN0ZXBzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUnVucyBpbml0aWFsIHRyYW5zZm9ybWF0aW9uIGZvciBwYXNzZWQgV2l6YXJkIHN0ZXBzLlxuICAgICAqIEBwYXJhbSBpdGVtcyBBbGwgV2l6YXJkIHN0ZXBzLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdPn0gQXJyYXkgb2YgdHJhbnNmb3JtZWQgV2l6YXJkIHN0ZXBzLlxuICAgICAqL1xuICAgIGFzeW5jIHByZXBhcmVXaXphcmRJdGVtcyhpdGVtczogV2l6YXJkR2VuZXJhdG9ySXRlbVtdKTogUHJvbWlzZTxQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXT4ge1xuICAgICAgICBsZXQgbmV3SXRlbXM6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBpdGVtcy5tYXAoYXN5bmMgKGksIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHsgLi4uaSB9O1xuICAgICAgICAgICAgICAgIGl0ZW0uc3RhdHVzID0gaXRlbS5zdGF0dXMgfHwgJ3VwY29taW5nJztcbiAgICAgICAgICAgICAgICBpdGVtLnRpdGxlID0gYXdhaXQgdGhpcy5fZ2V0Rm9ybUl0ZW1Qcm9wZXJ0eVZhbHVlKGl0ZW0sIGluZGV4LCAndGl0bGUnKTtcbiAgICAgICAgICAgICAgICBpdGVtLm5hbWUgPSBhd2FpdCB0aGlzLl9nZXRGb3JtSXRlbVByb3BlcnR5VmFsdWUoaXRlbSwgaW5kZXgsICduYW1lJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0gYXMgUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBTdW1tYXJ5IHN0ZXAgbXVzdCBiZSB0aGUgbGFzdCBvbmUgaW4gYXJyYXlcbiAgICAgICAgY29uc3Qgc3VtbWFyeVN0ZXBJbmRleCA9IG5ld0l0ZW1zLmZpbmRJbmRleCgoaSkgPT4gaS5zdW1tYXJ5ID09PSB0cnVlKTtcblxuICAgICAgICBpZiAoc3VtbWFyeVN0ZXBJbmRleCAhPT0gLTEgJiYgc3VtbWFyeVN0ZXBJbmRleCAhPT0gbmV3SXRlbXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgbmV3SXRlbXMuc3BsaWNlKG5ld0l0ZW1zLmxlbmd0aCAtIDEsIDAsIG5ld0l0ZW1zLnNwbGljZShzdW1tYXJ5U3RlcEluZGV4LCAxKVswXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBubyBjdXJyZW50IHN0ZXAgZm91bmQsIHNldCBmaXJzdCBhcyBjdXJyZW50LlxuICAgICAgICBpZiAobmV3SXRlbXMuZmluZEluZGV4KChpKSA9PiBpLnN0YXR1cyA9PT0gJ2N1cnJlbnQnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIG5ld0l0ZW1zWzBdLnN0YXR1cyA9ICdjdXJyZW50JztcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld0l0ZW1zID0gdGhpcy5fc2V0QnJhbmNoaW5nU3RlcHMobmV3SXRlbXMpO1xuXG4gICAgICAgIHRoaXMuX2J1aWxkRGVwZW5kZW5jeU1hcChuZXdJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5pdGVtcyA9IG5ld0l0ZW1zO1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hTdGVwVmlzaWJpbGl0eSgpO1xuXG4gICAgICAgIHJldHVybiBuZXdJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUnVucyBjb25kaXRpb25hbCBmdW5jdGlvbiBmb3IgZWFjaCBzdGVwIHRvIGRlZmluZSBpZiBzdGVwIHNob3VsZCBiZSBzaG93bi5cbiAgICAgKi9cbiAgICBhc3luYyByZWZyZXNoU3RlcFZpc2liaWxpdHkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGF3YWl0IHRoaXMuZ2V0V2l6YXJkRm9ybVZhbHVlKCk7XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZVN0ZXBJZHM6IFdpemFyZFZpc2libGVTdGVwcyA9IHt9O1xuXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoIWlzRnVuY3Rpb24oaXRlbS53aGVuKSkge1xuICAgICAgICAgICAgICAgIHZpc2libGVTdGVwSWRzW2l0ZW0uaWRdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgb2JqID0gaXRlbS53aGVuISh0aGlzLl9nZXRDb21wbGV0ZWRTdGVwSWRzKCksIGZvcm1WYWx1ZSwgdGhpcy5fZm9ybUdlbmVyYXRvclNlcnZpY2UuZm9ybXMpO1xuXG4gICAgICAgICAgICB2aXNpYmxlU3RlcElkc1tpdGVtLmlkXSA9IGF3YWl0IHRoaXMuX2dldEZ1bmN0aW9uVmFsdWUob2JqKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0VmlzaWJsZVN0ZXBzKHRoaXMuaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB2aXNpYmxlU3RlcElkc1tpdGVtLmlkXSA9PT0gdHJ1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIGN1cnJlbnQgZm9ybSBncm91cCBzaG91bGQgYmUgdmlzaWJsZS5cbiAgICAgKiBAcGFyYW0gZm9ybUdyb3VwIEZvcm0gR3JvdXAuXG4gICAgICovXG4gICAgYXN5bmMgcmVmcmVzaEZvcm1WaXNpYmlsaXR5KGZvcm1Hcm91cDogV2l6YXJkR2VuZXJhdG9yRm9ybUdyb3VwKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGF3YWl0IHRoaXMuZ2V0V2l6YXJkRm9ybVZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgb2JqID0gZm9ybUdyb3VwLndoZW4/Lih0aGlzLl9nZXRDb21wbGV0ZWRTdGVwSWRzKCksIGZvcm1WYWx1ZSwgdGhpcy5fZm9ybUdlbmVyYXRvclNlcnZpY2UuZm9ybXMpID8/IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2dldEZ1bmN0aW9uVmFsdWUob2JqKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2xlYXJzIGFycmF5IG9mIFdpemFyZCBzdGVwcyBjb21wb25lbnRzLlxuICAgICAqL1xuICAgIGNsZWFyV2l6YXJkU3RlcENvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RlcHNDb21wb25lbnRzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuX3N0ZXBzQ29tcG9uZW50cyQubmV4dCh0aGlzLnN0ZXBzQ29tcG9uZW50cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMge09ic2VydmFibGU8U3RlcHNDb21wb25lbnRzPn0gT2JzZXJ2YWJsZSwgd2hpY2ggd2lsbCBlbWl0IGV2ZXJ5IHRpbWVcbiAgICAgKiB3aGVuIFNldCB2aXNpYmxlIHN0ZXBzIGNvbXBvbmVudHMgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgKi9cbiAgICB0cmFja1N0ZXBzQ29tcG9uZW50cygpOiBPYnNlcnZhYmxlPFN0ZXBzQ29tcG9uZW50cz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RlcHNDb21wb25lbnRzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkcyBuZXcgY29tcG9uZW50IHRvIHRoZSBzZXQgb2YgV2l6YXJkIHN0ZXBzIGNvbXBvbmVudHMuXG4gICAgICogQHBhcmFtIGNvbXBvbmVudCBXaXphcmQgU3RlcCBjb21wb25lbnQgdG8gYWRkLlxuICAgICAqIEBwYXJhbSBrZXkgV2l6YXJkIFN0ZXAgSUQuXG4gICAgICovXG4gICAgYWRkV2l6YXJkU3RlcENvbXBvbmVudChjb21wb25lbnQ6IFdpemFyZEdlbmVyYXRvclN0ZXAsIGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RlcHNDb21wb25lbnRzLnNldChrZXksIGNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuX3N0ZXBzQ29tcG9uZW50cyQubmV4dCh0aGlzLnN0ZXBzQ29tcG9uZW50cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlbW92ZXMgQ29tcG9uZW50IGZyb20gdGhlIHNldCBvZiBXaXphcmQgc3RlcHMgY29tcG9uZW50cy5cbiAgICAgKiBAcGFyYW0ga2V5XG4gICAgICovXG4gICAgcmVtb3ZlV2l6YXJkU3RlcENvbXBvbmVudChrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0ZXBzQ29tcG9uZW50cy5kZWxldGUoa2V5KTtcbiAgICAgICAgdGhpcy5fc3RlcHNDb21wb25lbnRzJC5uZXh0KHRoaXMuc3RlcHNDb21wb25lbnRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RlcCBTdGVwIElEIHdoaWNoIGluY2x1ZGVzIGRlcGVuZGVuY3kgZmllbGRzLlxuICAgICAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGZvcm1zIGFuZCB0aGVpciBmaWVsZHMgdGhhdCBhcmUgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBzdGVwcy5cbiAgICAgKi9cbiAgICBnZXRTdGVwRGVwZW5kZW5jeUZpZWxkcyhzdGVwOiBzdHJpbmcpOiBEZXBlbmRlbmN5U3RlcHMge1xuICAgICAgICByZXR1cm4gdGhpcy5kZXBlbmRlbmN5U3RlcHNbc3RlcF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTm90aWZpZXMgc3RlcCBjb21wb25lbnRzIHRvIHJldmFsaWRhdGUgaW5uZXIgZm9ybXMuXG4gICAgICogQHBhcmFtIHN0ZXBJZHMgU3RlcCBJRCdzIHdoaWNoIG5lZWRzIHRvIGJlIHJldmFsaWRhdGVkLlxuICAgICAqL1xuICAgIG5vdGlmeVN0ZXBzVG9SZXZhbGlkYXRlRm9ybXMoc3RlcElkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgc3RlcElkcy5mb3JFYWNoKChzdGVwSWQpID0+IHRoaXMuc3RlcHNDb21wb25lbnRzLmdldChzdGVwSWQpPy51cGRhdGVGb3Jtc1N0YXRlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vdGlmaWVzIHN0ZXAgY29tcG9uZW50cyB0byByZWZyZXNoIGZvcm0gZ3JvdXBzIHZpc2liaWxpdHkuXG4gICAgICogQHBhcmFtIHN0ZXBJZHMgU3RlcCBJRCdzIHdoaWNoIG5lZWRzIHRvIGJlIGNoZWNrZWQuXG4gICAgICovXG4gICAgYXN5bmMgcmVmcmVzaEZvcm1zVmlzaWJpbGl0eShzdGVwSWRzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBmb3IgKGNvbnN0IHN0ZXBJZCBvZiBzdGVwSWRzKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN0ZXBzQ29tcG9uZW50cy5nZXQoc3RlcElkKT8ucmVmcmVzaEZvcm1zVmlzaWJpbGl0eSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGZvcm1hdHRlZCBGbGFnIGRlZmluaW5nIHdoZXRoZXIgZm9ybSB2YWx1ZSBzaG91bGQgYmUgZm9ybWF0dGVkIGJ5IGZvcm0gY29udHJvbFxuICAgICAqIHRyYW5zZm9ybWVycywgb3IgcmV0dXJuIHJhdyB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtXaXphcmRHZW5lcmF0b3JGb3Jtc1ZhbHVlfSBXaXphcmQgZm9ybSB2YWx1ZVxuICAgICAqL1xuICAgIGFzeW5jIGdldFdpemFyZEZvcm1WYWx1ZShmb3JtYXR0ZWQgPSBmYWxzZSk6IFByb21pc2U8V2l6YXJkR2VuZXJhdG9yRm9ybXNWYWx1ZT4ge1xuICAgICAgICBjb25zdCB3aXphcmRGb3JtVmFsdWU6IFdpemFyZEdlbmVyYXRvckZvcm1zVmFsdWUgPSB7fTtcblxuICAgICAgICBpZiAoIXRoaXMudmlzaWJsZVdpemFyZFN0ZXBzKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l6YXJkRm9ybVZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMudmlzaWJsZVdpemFyZFN0ZXBzLmZpbHRlcigocykgPT4gIXMuc3VtbWFyeSkpIHtcbiAgICAgICAgICAgIHdpemFyZEZvcm1WYWx1ZVtpdGVtLmlkXSA9IHt9O1xuXG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLnN0ZXBzQ29tcG9uZW50cy5nZXQoaXRlbS5pZCk7XG5cbiAgICAgICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1zID0gY29tcG9uZW50LmdldFZpc2libGVGb3JtcygpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm0gb2YgaXRlbT8uZm9ybUdyb3VwcyA/PyBbXSkge1xuICAgICAgICAgICAgICAgIGlmICghZm9ybXNbZm9ybS5pZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgd2l6YXJkRm9ybVZhbHVlW2l0ZW0uaWRdW2Zvcm0uaWRdID0gZm9ybWF0dGVkXG4gICAgICAgICAgICAgICAgICAgID8gYXdhaXQgdGhpcy5fZm9ybUdlbmVyYXRvclNlcnZpY2UuZ2V0Rm9ybVZhbHVlKGZvcm1zW2Zvcm0uaWRdPy5mb3JtKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2Zvcm1HZW5lcmF0b3JTZXJ2aWNlLl9nZXRGb3JtVmFsdWVXaXRob3V0VW5ncm91cGVkKGNsb25lRGVlcChmb3Jtc1tmb3JtLmlkXT8uZm9ybS52YWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdpemFyZEZvcm1WYWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdGVwSWQgU3RlcCBJRCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gaW5kaWNhdG9yIGlmIHN0ZXAgd2FzIHByZXZpb3VzbHkgdmFsaWRhdGVkIGFuZCBzdWJtaXR0ZWQuXG4gICAgICovXG4gICAgc3RlcFN1Ym1pdHRlZChzdGVwSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0dGVkRm9ybVJhd1ZhbHVlc1tzdGVwSWRdICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gaWYgc3RlcHMgYXJlIHVudG91Y2hlZCwgd2lsbCByZXR1cm4gdHJ1ZSwgaWYgeWVzIC0gZmFsc2VcbiAgICAgKi9cbiAgICBpc1N0ZXBzVW50b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIHJldHVybiBbLi4udGhpcy5zdGVwc0NvbXBvbmVudHNdLmV2ZXJ5KChbXywgY29tcG9uZW50XSkgPT5cbiAgICAgICAgICAgIGNvbXBvbmVudC5mb3JtR2VuZXJhdG9ycy50b0FycmF5KCkuZXZlcnkoKGl0ZW0pID0+ICFpdGVtLmZvcm0udG91Y2hlZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnRzIHdpemFyZCB0byBkZWZpbmVkIHN0ZXAuXG4gICAgICogQHBhcmFtIHN0ZXBJZCBTdGVwIElEIHRvIGVkaXRcbiAgICAgKi9cbiAgICBlZGl0U3RlcChzdGVwSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGVwSW5kZXggPSB0aGlzLnZpc2libGVXaXphcmRTdGVwcy5maW5kSW5kZXgoKHMpID0+IHMuaWQgPT09IHN0ZXBJZCk7XG5cbiAgICAgICAgdGhpcy52aXNpYmxlV2l6YXJkU3RlcHMgPSB0aGlzLnZpc2libGVXaXphcmRTdGVwcy5tYXAoKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBzdGVwLnN0YXR1cyA9IGluZGV4ID09PSBzdGVwSW5kZXggPyAnY3VycmVudCcgOiBpbmRleCA8IHN0ZXBJbmRleCA/ICdjb21wbGV0ZWQnIDogJ3VwY29taW5nJztcblxuICAgICAgICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHN1bW1hcnlTdGVwSW5kZXggPSB0aGlzLnZpc2libGVXaXphcmRTdGVwcy5maW5kSW5kZXgoKHMpID0+IHMuc3VtbWFyeSk7XG5cbiAgICAgICAgdGhpcy5fc2hvdWxkUmVkaXJlY3RUb1N1bW1hcnkgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuX2FwcGVuZFRvV2l6YXJkJC5uZXh0KGZhbHNlKTtcblxuICAgICAgICB0aGlzLnNldFZpc2libGVTdGVwcyh0aGlzLnZpc2libGVXaXphcmRTdGVwcyk7XG5cbiAgICAgICAgdGhpcy5zZXROZXh0U3RlcEluZGV4KHN1bW1hcnlTdGVwSW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCdzIGN1cnJlbnQgc2V0IG9mIHN0ZXAgSUQnc1xuICAgICAqIEBwYXJhbSBpZHMgc3RlcCBJRCdzXG4gICAgICovXG4gICAgc2V0V2l6YXJkU3RlcElkcyhpZHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fd2l6YXJkU3RlcElkcy5ldmVyeSgoc3RlcElkLCBpbmRleCkgPT4gaWRzW2luZGV4XSA9PT0gc3RlcElkKSkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RDaGFuZ2VkU3RlcEluZGV4ID0gdGhpcy5fd2l6YXJkU3RlcElkcy5maW5kSW5kZXgoKHN0ZXBJZCwgaW5kZXgpID0+IGlkc1tpbmRleF0gIT09IHN0ZXBJZCk7XG5cbiAgICAgICAgICAgIHRoaXMuX25leHRTdGVwSW5kZXgkLm5leHQoZmlyc3RDaGFuZ2VkU3RlcEluZGV4KTtcblxuICAgICAgICAgICAgdGhpcy5fc3RlcHNPcmRlckNoYW5nZWQkLm5leHQoZmlyc3RDaGFuZ2VkU3RlcEluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3dpemFyZFN0ZXBJZHMgPSBpZHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IG5leHQgc3RlcCBpbmRleC5cbiAgICAgKiBAcGFyYW0gaW5kZXggTmV4dCBzdGVwIGluZGV4LlxuICAgICAqL1xuICAgIHNldE5leHRTdGVwSW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9uZXh0U3RlcEluZGV4JC5uZXh0KGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG9ic2VydmFibGUgb2YgbmV4dCBzdGVwIGluZGV4IHdoaWNoIGVtaXRzIHdoZW4gaW5kZXggaXMgY2hhbmdlZC5cbiAgICAgKi9cbiAgICB0cmFja05leHRTdGVwSW5kZXgoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25leHRTdGVwSW5kZXgkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgb2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB3aGVuIHN0ZXBzIG9yZGVyIGhhcyBiZWVuIGNoYW5nZWQuXG4gICAgICovXG4gICAgdHJhY2tTdGVwc09yZGVyKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGVwc09yZGVyQ2hhbmdlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RvcmVzIG9yaWdpbmFsICdhcHBlbmRUb1dpemFyZCcgaW5wdXQgcHJvcGVydHkuXG4gICAgICogQHBhcmFtIHZhbHVlXG4gICAgICovXG4gICAgc2V0T3JpZ2luYWxBcHBlbmRUb1dpemFyZFN0YXRlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYXBwZW5kVG9XaXphcmQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fYXBwZW5kVG9XaXphcmQkLm5leHQodGhpcy5hcHBlbmRUb1dpemFyZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzZXRzIG1vZGlmaWVkICdhcHBlbmRUb1dpemFyZCcgcHJvcGVydHkgdG8gb3JpZ2luYWwgb25lLlxuICAgICAqL1xuICAgIHJlc3RvcmVBcHBlbmRUb1dpemFyZFN0YXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hcHBlbmRUb1dpemFyZCQubmV4dCh0aGlzLmFwcGVuZFRvV2l6YXJkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG9ic2VydmFibGUgd2hpY2ggZW1pdHMgd2hlbiAnYXBwZW5kVG9XaXphcmQnIHByb3BlcnR5IGhhcyBiZWVuIGNoYW5nZWQuXG4gICAgICovXG4gICAgdHJhY2tBcHBlbmRUb1dpemFyZFN0YXRlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwZW5kVG9XaXphcmQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gaXRlbXNcbiAgICAgKiBAcGFyYW0gaW5kZXhcbiAgICAgKiBAcGFyYW0ga2V5XG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIF9nZXRGb3JtSXRlbVByb3BlcnR5VmFsdWU8VCA9IHN0cmluZz4oXG4gICAgICAgIGl0ZW1zOiBXaXphcmRHZW5lcmF0b3JJdGVtLFxuICAgICAgICBpbmRleDogbnVtYmVyLFxuICAgICAgICBrZXk6IGtleW9mIFdpemFyZEdlbmVyYXRvckl0ZW1cbiAgICApOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgbGV0IHZhbHVlOiBhbnkgPSBpdGVtc1trZXldO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IG9iaiA9IHZhbHVlKGluZGV4KTtcblxuICAgICAgICAgICAgdmFsdWUgPSBhd2FpdCB0aGlzLl9nZXRGdW5jdGlvblZhbHVlKG9iaik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWUgYXMgVDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGRlc2NyaXB0aW9uIFJldHVybnMgdmFsdWUgZnJvbSBQcm9taXNlLWxpa2UsIE9ic2VydmFibGUtbGlrZSwgc2ltcGxlIGZ1bmN0aW9uIG9yIGp1c3Qgc29tZSBvYmplY3QuXG4gICAgICogQHBhcmFtIG9ialxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBfZ2V0RnVuY3Rpb25WYWx1ZShvYmo6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IHN0cmF0ZWd5ID0gc2VsZWN0U3RyYXRlZ3kob2JqKTtcblxuICAgICAgICBsZXQgcmVzdWx0OiBhbnk7XG5cbiAgICAgICAgYXdhaXQgc3RyYXRlZ3kuY3JlYXRlU3Vic2NyaXB0aW9uKG9iaiwgKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoaXNGdW5jdGlvbihyZXN1bHQpKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9nZXRGdW5jdGlvblZhbHVlKHJlc3VsdCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAZGVzY3JpcHRpb24gU2V0cyBgYnJhbmNoaW5nYCBwcm9wZXJ0eSBmb3IgdGhlIHN0ZXBzIHRoYXQgd2lsbCBjcmVhdGUgbmV3IGJyYW5jaGVzLlxuICAgICAqIEBwYXJhbSBpdGVtc1xuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0QnJhbmNoaW5nU3RlcHMoaXRlbXM6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdKTogUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtW10ge1xuICAgICAgICBjb25zdCBicmFuY2hpbmdJdGVtcyA9IGl0ZW1zXG4gICAgICAgICAgICAuZmlsdGVyKChpKSA9PiBpLmRlcGVuZGVuY3lGaWVsZHMpXG4gICAgICAgICAgICAucmVkdWNlKChzdGVwSWRzLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uZGVwZW5kZW5jeUZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICBzdGVwSWRzID0gWy4uLnN0ZXBJZHMsIC4uLk9iamVjdC5rZXlzKGl0ZW0uZGVwZW5kZW5jeUZpZWxkcyldO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBzdGVwSWRzO1xuICAgICAgICAgICAgfSwgW10gYXMgc3RyaW5nW10pO1xuXG4gICAgICAgIGlmIChicmFuY2hpbmdJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uYnJhbmNoaW5nID0gaXRlbS5icmFuY2hpbmcgfHwgYnJhbmNoaW5nSXRlbXMuaW5jbHVkZXMoaXRlbS5pZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX25vcm1hbGl6ZURlcGVuZGVuY3lTdGVwKFxuICAgICAgICBkZXBlbmRlbmN5OiB7IFtwOiBzdHJpbmddOiBzdHJpbmdbXSB9LFxuICAgICAgICBzdHJhdGVneTogV2l6YXJkR2VuZXJhdG9yUmVmcmVzaFN0cmF0ZWd5LFxuICAgICAgICBkZXBlbmRlbnRTdGVwPzogc3RyaW5nXG4gICAgKTogRGVwZW5kZW5jeVN0ZXBzIHtcbiAgICAgICAgY29uc3QgbmV3RGVwZW5kZW5jeTogRGVwZW5kZW5jeVN0ZXBzID0ge307XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoZGVwZW5kZW5jeSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICBuZXdEZXBlbmRlbmN5W2tleV0gPSB7fTtcblxuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgICAgIG5ld0RlcGVuZGVuY3lba2V5XVt2XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgW3N0cmF0ZWd5XTogZGVwZW5kZW50U3RlcCA/IFtkZXBlbmRlbnRTdGVwXSA6IFtdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ld0RlcGVuZGVuY3k7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9idWlsZERlcGVuZGVuY3lNYXAoaXRlbXM6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jeVN0ZXBzID0ge307XG5cbiAgICAgICAgY29uc3QgbWVyZ2VBcnJheXMgPSAob2JqVmFsdWU6IGFueSwgc3JjVmFsdWU6IGFueSk6IGFueSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpWYWx1ZSkgJiYgIW9ialZhbHVlLmluY2x1ZGVzKHNyY1ZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmlxKG9ialZhbHVlLmNvbmNhdChzcmNWYWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGJ1aWxkRGVwZW5kZW5jeVN0ZXBzID0gKFxuICAgICAgICAgICAgZGVwZW5kZW5jeUZpZWxkczogV2l6YXJkR2VuZXJhdG9yRGVwZW5kZW5jeUZpZWxkcyxcbiAgICAgICAgICAgIHN0cmF0ZWd5OiBXaXphcmRHZW5lcmF0b3JSZWZyZXNoU3RyYXRlZ3ksXG4gICAgICAgICAgICBzdGVwSWQ/OiBzdHJpbmdcbiAgICAgICAgKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtpZCwgZm9ybXNdIG9mIE9iamVjdC5lbnRyaWVzKGRlcGVuZGVuY3lGaWVsZHMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXBlbmRlbmN5U3RlcHNbaWRdID0gbWVyZ2VXaXRoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcGVuZGVuY3lTdGVwc1tpZF0gfHwge30sXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vcm1hbGl6ZURlcGVuZGVuY3lTdGVwKGZvcm1zLCBzdHJhdGVneSwgc3RlcElkKSxcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2VBcnJheXNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGl0ZW1zXG4gICAgICAgICAgICAuZmlsdGVyKChzKSA9PiBzLmZvcm1Hcm91cHM/Lmxlbmd0aClcbiAgICAgICAgICAgIC5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuZGVwZW5kZW5jeUZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICBidWlsZERlcGVuZGVuY3lTdGVwcyhzdGVwLmRlcGVuZGVuY3lGaWVsZHMsIFdpemFyZEdlbmVyYXRvclJlZnJlc2hTdHJhdGVneS5SRUZSRVNIX1NURVBfVklTSUJJTElUWSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwZW5kZW50Rm9ybXMgPSBzdGVwLmZvcm1Hcm91cHM/LmZpbHRlcigoZm9ybSkgPT4gZm9ybS5kZXBlbmRlbmN5RmllbGRzKTtcblxuICAgICAgICAgICAgICAgIGRlcGVuZGVudEZvcm1zPy5mb3JFYWNoKChmb3JtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGJ1aWxkRGVwZW5kZW5jeVN0ZXBzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS5kZXBlbmRlbmN5RmllbGRzISxcbiAgICAgICAgICAgICAgICAgICAgICAgIFdpemFyZEdlbmVyYXRvclJlZnJlc2hTdHJhdGVneS5SRUZSRVNIX0ZPUk1fVklTSUJJTElUWSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAuaWRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXBGaWVsZHM6IFdpemFyZEdlbmVyYXRvckZvcm1JdGVtW10gPSBjb25jYXQoXG4gICAgICAgICAgICAgICAgICAgIC4uLlsuLi4oc3RlcC5mb3JtR3JvdXBzID8/IFtdKV0ubWFwKChpdGVtKSA9PiBpdGVtLmZvcm1JdGVtcy5maWx0ZXIoKGYpID0+IGYuZGVwZW5kZW5jeUZpZWxkcykpXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHN0ZXBGaWVsZHMuZm9yRWFjaCgoZm9ybUl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYnVpbGREZXBlbmRlbmN5U3RlcHMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSXRlbS5kZXBlbmRlbmN5RmllbGRzISxcbiAgICAgICAgICAgICAgICAgICAgICAgIFdpemFyZEdlbmVyYXRvclJlZnJlc2hTdHJhdGVneS5SRVZBTElEQVRFX1NURVBfRk9STVMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwLmlkXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldENvbXBsZXRlZFN0ZXBJZHMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoKGkpID0+IGkuc3RhdHVzID09PSAnY29tcGxldGVkJykubWFwKChpKSA9PiBpLmlkKTtcbiAgICB9XG59XG4iXX0=
|