@po-ui/ng-components 5.22.4 → 5.22.7
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 +36 -36
- package/bundles/po-ui-ng-components.umd.js +38676 -38663
- package/bundles/po-ui-ng-components.umd.js.map +1 -1
- package/esm2015/lib/components/components.module.js +122 -122
- package/esm2015/lib/components/index.js +38 -38
- package/esm2015/lib/components/po-accordion/index.js +4 -4
- package/esm2015/lib/components/po-accordion/po-accordion-base.component.js +29 -29
- package/esm2015/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.js +66 -66
- package/esm2015/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.js +23 -23
- package/esm2015/lib/components/po-accordion/po-accordion-item-header/po-accordion-item-header.component.js +24 -24
- package/esm2015/lib/components/po-accordion/po-accordion.component.js +70 -70
- package/esm2015/lib/components/po-accordion/po-accordion.module.js +52 -52
- package/esm2015/lib/components/po-accordion/services/po-accordion.service.js +27 -27
- package/esm2015/lib/components/po-avatar/index.js +3 -3
- package/esm2015/lib/components/po-avatar/po-avatar-base.component.js +68 -68
- package/esm2015/lib/components/po-avatar/po-avatar.component.js +42 -42
- package/esm2015/lib/components/po-avatar/po-avatar.module.js +18 -18
- package/esm2015/lib/components/po-badge/po-badge-base.component.js +89 -89
- package/esm2015/lib/components/po-badge/po-badge.component.js +16 -16
- package/esm2015/lib/components/po-badge/po-badge.module.js +18 -18
- package/esm2015/lib/components/po-breadcrumb/index.js +5 -5
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-base.component.js +48 -48
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-dropdown/po-breadcrumb-dropdown.component.js +20 -20
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.js +77 -77
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.service.js +49 -49
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-item/po-breadcrumb-item.component.js +27 -27
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-item.interface.js +2 -2
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb.component.js +159 -159
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb.interface.js +2 -2
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb.module.js +28 -28
- package/esm2015/lib/components/po-button/index.js +3 -3
- package/esm2015/lib/components/po-button/po-button-base.component.js +127 -127
- package/esm2015/lib/components/po-button/po-button.component.js +69 -69
- package/esm2015/lib/components/po-button/po-button.module.js +20 -20
- package/esm2015/lib/components/po-button-group/index.js +5 -5
- package/esm2015/lib/components/po-button-group/po-button-group-base.component.js +95 -95
- package/esm2015/lib/components/po-button-group/po-button-group-item.interface.js +2 -2
- package/esm2015/lib/components/po-button-group/po-button-group-toggle.enum.js +17 -17
- package/esm2015/lib/components/po-button-group/po-button-group.component.js +43 -43
- package/esm2015/lib/components/po-button-group/po-button-group.module.js +20 -20
- package/esm2015/lib/components/po-calendar/index.js +4 -4
- package/esm2015/lib/components/po-calendar/po-calendar-base.component.js +176 -176
- package/esm2015/lib/components/po-calendar/po-calendar-header/po-calendar-header.component.js +24 -24
- package/esm2015/lib/components/po-calendar/po-calendar-mode.enum.js +13 -13
- package/esm2015/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.js +251 -251
- package/esm2015/lib/components/po-calendar/po-calendar.component.js +199 -199
- package/esm2015/lib/components/po-calendar/po-calendar.module.js +19 -19
- package/esm2015/lib/components/po-calendar/services/po-calendar.lang.service.js +187 -187
- package/esm2015/lib/components/po-calendar/services/po-calendar.service.js +44 -44
- package/esm2015/lib/components/po-chart/directives/po-resize-observer.directive.js +44 -44
- package/esm2015/lib/components/po-chart/enums/po-chart-type.enum.js +51 -51
- package/esm2015/lib/components/po-chart/helpers/po-chart-default-values.constant.js +18 -18
- package/esm2015/lib/components/po-chart/index.js +8 -8
- package/esm2015/lib/components/po-chart/interfaces/po-chart-axis-options.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-bar-coordinates.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-container-size.interface.js +11 -11
- package/esm2015/lib/components/po-chart/interfaces/po-chart-label-coordinates.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-min-max-values.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-options.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-path-coordinates.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-points-coordinates.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-serie.interface.js +2 -2
- package/esm2015/lib/components/po-chart/po-chart-base.component.js +244 -244
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-label/po-chart-axis-label.component.js +23 -23
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-path/po-chart-axis-path.component.js +19 -19
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis.component.js +287 -287
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-base.component.js +94 -94
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-path/po-chart-bar-path.component.js +33 -33
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar.component.js +58 -58
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-column/po-chart-column.component.js +59 -59
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-label/po-chart-circular-label.component.js +29 -29
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-circular-path.component.js +35 -35
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-tooltip.directive.js +76 -76
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular.component.js +142 -142
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-donut/po-chart-donut.component.js +115 -115
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-pie/po-chart-pie.component.js +57 -57
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-container.component.js +119 -119
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-area/po-chart-area.component.js +77 -77
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-line-base.component.js +151 -151
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-line.component.js +41 -41
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-path/po-chart-path.component.js +65 -65
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-series-point/po-chart-series-point.component.js +95 -95
- package/esm2015/lib/components/po-chart/po-chart-legend/po-chart-legend.component.js +21 -21
- package/esm2015/lib/components/po-chart/po-chart-types/po-chart-circular/po-chart-circular.constant.js +11 -11
- package/esm2015/lib/components/po-chart/po-chart-types/po-chart-circular/po-chart-circular.js +374 -374
- package/esm2015/lib/components/po-chart/po-chart-types/po-chart-dynamic-type.component.js +45 -45
- package/esm2015/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge-series.interface.js +2 -2
- package/esm2015/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge-text-content/po-chart-gauge-text-content.component.js +75 -75
- package/esm2015/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge.component.js +85 -85
- package/esm2015/lib/components/po-chart/po-chart.component.js +203 -203
- package/esm2015/lib/components/po-chart/po-chart.module.js +61 -61
- package/esm2015/lib/components/po-chart/services/po-chart-maths.service.js +135 -135
- package/esm2015/lib/components/po-chart/services/po-chart-svg-container.service.js +57 -57
- package/esm2015/lib/components/po-container/index.js +3 -3
- package/esm2015/lib/components/po-container/po-container-base.component.js +88 -88
- package/esm2015/lib/components/po-container/po-container.component.js +32 -32
- package/esm2015/lib/components/po-container/po-container.module.js +18 -18
- package/esm2015/lib/components/po-disclaimer/index.js +4 -4
- package/esm2015/lib/components/po-disclaimer/po-disclaimer-base.component.js +77 -77
- package/esm2015/lib/components/po-disclaimer/po-disclaimer.component.js +29 -29
- package/esm2015/lib/components/po-disclaimer/po-disclaimer.interface.js +2 -2
- package/esm2015/lib/components/po-disclaimer/po-disclaimer.module.js +17 -17
- package/esm2015/lib/components/po-disclaimer-group/index.js +5 -5
- package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group-base.component.js +194 -194
- package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group-remove-action.interface.js +2 -2
- package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group.component.js +41 -41
- package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group.interface.js +2 -2
- package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group.module.js +20 -20
- package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-remove/po-disclaimer-remove.component.js +30 -30
- package/esm2015/lib/components/po-divider/index.js +3 -3
- package/esm2015/lib/components/po-divider/po-divider-base.component.js +16 -16
- package/esm2015/lib/components/po-divider/po-divider.component.js +32 -32
- package/esm2015/lib/components/po-divider/po-divider.module.js +18 -18
- package/esm2015/lib/components/po-dropdown/index.js +4 -4
- package/esm2015/lib/components/po-dropdown/po-dropdown-action.interface.js +2 -2
- package/esm2015/lib/components/po-dropdown/po-dropdown-base.component.js +71 -71
- package/esm2015/lib/components/po-dropdown/po-dropdown.component.js +97 -97
- package/esm2015/lib/components/po-dropdown/po-dropdown.module.js +18 -18
- package/esm2015/lib/components/po-dynamic/index.js +11 -11
- package/esm2015/lib/components/po-dynamic/po-dynamic-field-type.enum.js +25 -25
- package/esm2015/lib/components/po-dynamic/po-dynamic-field.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-base.component.js +104 -104
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-field-internal.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields-base.component.js +200 -200
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.js +129 -129
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.service.js +32 -32
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-operation/po-dynamic-form-operation.js +20 -20
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-response.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-field-changed.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-field-validation.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.service.js +39 -39
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.js +167 -167
- package/esm2015/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.js +163 -163
- package/esm2015/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.js +101 -101
- package/esm2015/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.service.js +17 -17
- package/esm2015/lib/components/po-dynamic/po-dynamic.module.js +35 -35
- package/esm2015/lib/components/po-dynamic/po-dynamic.util.js +18 -18
- package/esm2015/lib/components/po-field/index.js +51 -51
- package/esm2015/lib/components/po-field/po-checkbox/po-checkbox-base.component.js +98 -98
- package/esm2015/lib/components/po-field/po-checkbox/po-checkbox.component.js +94 -94
- package/esm2015/lib/components/po-field/po-checkbox-group/interfaces/po-checkbox-group-option-view.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-checkbox-group/interfaces/po-checkbox-group-option.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.js +297 -297
- package/esm2015/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.js +98 -98
- package/esm2015/lib/components/po-field/po-checkbox-group/po-checkbox-group.module.js +20 -20
- package/esm2015/lib/components/po-field/po-clean/po-clean-base.component.js +42 -42
- package/esm2015/lib/components/po-field/po-clean/po-clean.component.js +33 -33
- package/esm2015/lib/components/po-field/po-clean/po-clean.module.js +18 -18
- package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-filter.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-group.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-literals.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-option-group.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-option.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-combo/interfaces/po-response.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-combo/po-combo-base.component.js +749 -749
- package/esm2015/lib/components/po-field/po-combo/po-combo-filter-mode.enum.js +17 -17
- package/esm2015/lib/components/po-field/po-combo/po-combo-filter.service.js +78 -78
- package/esm2015/lib/components/po-field/po-combo/po-combo-option-template/po-combo-option-template.directive.js +81 -81
- package/esm2015/lib/components/po-field/po-combo/po-combo.component.js +525 -525
- package/esm2015/lib/components/po-field/po-datepicker/enums/po-datepicker-iso-format.enum.js +17 -17
- package/esm2015/lib/components/po-field/po-datepicker/po-datepicker-base.component.js +396 -396
- package/esm2015/lib/components/po-field/po-datepicker/po-datepicker.component.js +345 -345
- package/esm2015/lib/components/po-field/po-datepicker/po-datepicker.module.js +22 -22
- package/esm2015/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range-literals.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.js +475 -475
- package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.js +443 -443
- package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range.literals.js +27 -27
- package/esm2015/lib/components/po-field/po-decimal/po-decimal.component.js +598 -598
- package/esm2015/lib/components/po-field/po-email/po-email.component.js +106 -106
- package/esm2015/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.js +29 -29
- package/esm2015/lib/components/po-field/po-field-container/po-field-container-literals.js +15 -15
- package/esm2015/lib/components/po-field/po-field-container/po-field-container.component.js +39 -39
- package/esm2015/lib/components/po-field/po-field-container/po-field-container.module.js +19 -19
- package/esm2015/lib/components/po-field/po-field-validate.model.js +69 -69
- package/esm2015/lib/components/po-field/po-field.model.js +78 -78
- package/esm2015/lib/components/po-field/po-field.module.js +156 -156
- package/esm2015/lib/components/po-field/po-input/po-input-base.component.js +357 -357
- package/esm2015/lib/components/po-field/po-input/po-input.component.js +56 -56
- package/esm2015/lib/components/po-field/po-input/po-mask.js +460 -460
- package/esm2015/lib/components/po-field/po-input-generic/po-input-generic.js +187 -187
- package/esm2015/lib/components/po-field/po-login/po-login.component.js +65 -65
- package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-advanced-filter.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-column.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-filter.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-filtered-items-params.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-literals.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-response-api.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-lookup/po-lookup-base.component.js +455 -451
- package/esm2015/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.js +365 -357
- package/esm2015/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.js +130 -130
- package/esm2015/lib/components/po-field/po-lookup/po-lookup.component.js +337 -337
- package/esm2015/lib/components/po-field/po-lookup/services/po-lookup-filter.service.js +59 -59
- package/esm2015/lib/components/po-field/po-lookup/services/po-lookup-modal.service.js +62 -62
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-base.component.js +576 -576
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.js +139 -139
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-filter-mode.enum.js +17 -17
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-filter.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-filter.service.js +50 -50
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-item/po-multiselect-item.component.js +33 -33
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-literals.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-option.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.js +57 -57
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect.component.js +359 -359
- package/esm2015/lib/components/po-field/po-number/po-number-base.component.js +114 -114
- package/esm2015/lib/components/po-field/po-number/po-number.component.js +119 -119
- package/esm2015/lib/components/po-field/po-password/po-password.component.js +92 -92
- package/esm2015/lib/components/po-field/po-radio-group/po-radio-group-base.component.js +184 -184
- package/esm2015/lib/components/po-field/po-radio-group/po-radio-group-option.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-radio-group/po-radio-group.component.js +119 -119
- package/esm2015/lib/components/po-field/po-rich-text/interfaces/po-rich-text-toolbar-button-group-item.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-base.component.js +181 -181
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.js +312 -312
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.js +96 -96
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component.js +140 -140
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-literals.js +83 -83
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.js +166 -166
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text.component.js +147 -147
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text.service.js +17 -17
- package/esm2015/lib/components/po-field/po-select/po-select-option-template/po-select-option-template.directive.js +59 -59
- package/esm2015/lib/components/po-field/po-select/po-select-option.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-select/po-select.component.js +366 -366
- package/esm2015/lib/components/po-field/po-switch/po-switch-label-position.enum.js +15 -15
- package/esm2015/lib/components/po-field/po-switch/po-switch.component.js +190 -190
- package/esm2015/lib/components/po-field/po-textarea/po-textarea-base.component.js +269 -269
- package/esm2015/lib/components/po-field/po-textarea/po-textarea.component.js +130 -130
- package/esm2015/lib/components/po-field/po-upload/interfaces/po-upload-file-restriction.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-upload/interfaces/po-upload-literals.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-upload/po-upload-base.component.js +581 -581
- package/esm2015/lib/components/po-field/po-upload/po-upload-base.service.js +88 -88
- package/esm2015/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area/po-upload-drag-drop-area.component.js +30 -30
- package/esm2015/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area-overlay/po-upload-drag-drop-area-overlay.component.js +40 -40
- package/esm2015/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.component.js +60 -60
- package/esm2015/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.directive.js +165 -165
- package/esm2015/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.js +63 -63
- package/esm2015/lib/components/po-field/po-upload/po-upload-file.js +39 -39
- package/esm2015/lib/components/po-field/po-upload/po-upload-status.enum.js +13 -13
- package/esm2015/lib/components/po-field/po-upload/po-upload.component.js +326 -326
- package/esm2015/lib/components/po-field/po-upload/po-upload.service.js +8 -8
- package/esm2015/lib/components/po-field/po-url/po-url.component.js +86 -86
- package/esm2015/lib/components/po-field/validators.js +41 -41
- package/esm2015/lib/components/po-gauge/index.js +4 -4
- package/esm2015/lib/components/po-gauge/interfaces/po-gauge-coordinates.interface.js +2 -2
- package/esm2015/lib/components/po-gauge/interfaces/po-gauge-ranges.interface.js +2 -2
- package/esm2015/lib/components/po-gauge/interfaces/po-gauge-svg-container.interface.js +2 -2
- package/esm2015/lib/components/po-gauge/po-gauge-base.component.js +146 -146
- package/esm2015/lib/components/po-gauge/po-gauge-default-values.constant.js +11 -11
- package/esm2015/lib/components/po-gauge/po-gauge-description/po-gauge-description.component.js +27 -27
- package/esm2015/lib/components/po-gauge/po-gauge-legend/po-gauge-legend.component.js +27 -27
- package/esm2015/lib/components/po-gauge/po-gauge-svg/po-gauge-path/po-gauge-path.component.js +20 -20
- package/esm2015/lib/components/po-gauge/po-gauge-svg/po-gauge-pointer/po-gauge-pointer.component.js +50 -50
- package/esm2015/lib/components/po-gauge/po-gauge-svg/po-gauge-svg.component.js +204 -204
- package/esm2015/lib/components/po-gauge/po-gauge-title/po-gauge-title.component.js +13 -13
- package/esm2015/lib/components/po-gauge/po-gauge.component.js +72 -72
- package/esm2015/lib/components/po-gauge/po-gauge.module.js +32 -32
- package/esm2015/lib/components/po-grid/index.js +4 -4
- package/esm2015/lib/components/po-grid/po-grid-cell/po-grid-cell.component.js +111 -111
- package/esm2015/lib/components/po-grid/po-grid-cell-action/po-grid-cell-action.component.js +24 -24
- package/esm2015/lib/components/po-grid/po-grid-head/po-grid-head.component.js +30 -30
- package/esm2015/lib/components/po-grid/po-grid-row-actions.interface.js +2 -2
- package/esm2015/lib/components/po-grid/po-grid.component.js +314 -314
- package/esm2015/lib/components/po-grid/po-grid.module.js +23 -23
- package/esm2015/lib/components/po-icon/index.js +3 -3
- package/esm2015/lib/components/po-icon/po-icon.component.js +62 -62
- package/esm2015/lib/components/po-icon/po-icon.module.js +18 -18
- package/esm2015/lib/components/po-info/index.js +4 -4
- package/esm2015/lib/components/po-info/po-info-base.component.js +62 -62
- package/esm2015/lib/components/po-info/po-info-orietation.enum.js +15 -15
- package/esm2015/lib/components/po-info/po-info.component.js +36 -36
- package/esm2015/lib/components/po-info/po-info.module.js +21 -21
- package/esm2015/lib/components/po-list-view/index.js +7 -7
- package/esm2015/lib/components/po-list-view/interfaces/po-list-view-action.interface.js +2 -2
- package/esm2015/lib/components/po-list-view/interfaces/po-list-view-literals.interface.js +2 -2
- package/esm2015/lib/components/po-list-view/po-list-view-base.component.js +274 -274
- package/esm2015/lib/components/po-list-view/po-list-view-content-template/po-list-view-content-template.directive.js +101 -101
- package/esm2015/lib/components/po-list-view/po-list-view-detail-template/po-list-view-detail-template.directive.js +64 -64
- package/esm2015/lib/components/po-list-view/po-list-view.component.js +128 -128
- package/esm2015/lib/components/po-list-view/po-list-view.module.js +51 -51
- package/esm2015/lib/components/po-loading/index.js +5 -5
- package/esm2015/lib/components/po-loading/po-loading-base.component.js +24 -24
- package/esm2015/lib/components/po-loading/po-loading-icon/po-loading-icon.component.js +37 -37
- package/esm2015/lib/components/po-loading/po-loading-overlay/interfaces/po-loading-overlay-literals.interface.js +2 -2
- package/esm2015/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.js +91 -91
- package/esm2015/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.js +41 -41
- package/esm2015/lib/components/po-loading/po-loading.component.js +16 -16
- package/esm2015/lib/components/po-loading/po-loading.module.js +22 -22
- package/esm2015/lib/components/po-menu/index.js +9 -9
- package/esm2015/lib/components/po-menu/po-menu-base.component.js +299 -299
- package/esm2015/lib/components/po-menu/po-menu-filter/po-menu-filter-literals.interface.js +2 -2
- package/esm2015/lib/components/po-menu/po-menu-filter/po-menu-filter.component.js +40 -40
- package/esm2015/lib/components/po-menu/po-menu-filter/po-menu-filter.interface.js +2 -2
- package/esm2015/lib/components/po-menu/po-menu-header-template/po-menu-header-template.directive.js +51 -51
- package/esm2015/lib/components/po-menu/po-menu-item/po-menu-item-badge.interface.js +2 -2
- package/esm2015/lib/components/po-menu/po-menu-item/po-menu-item-filtered.interface.js +2 -2
- package/esm2015/lib/components/po-menu/po-menu-item/po-menu-item.component.js +173 -173
- package/esm2015/lib/components/po-menu/po-menu-item.interface.js +2 -2
- package/esm2015/lib/components/po-menu/po-menu.component.js +497 -497
- package/esm2015/lib/components/po-menu/po-menu.module.js +26 -26
- package/esm2015/lib/components/po-menu/services/po-menu-global.service.js +32 -32
- package/esm2015/lib/components/po-menu/services/po-menu-items.service.js +35 -35
- package/esm2015/lib/components/po-menu/services/po-menu.service.js +35 -35
- package/esm2015/lib/components/po-menu-panel/index.js +4 -4
- package/esm2015/lib/components/po-menu-panel/po-menu-panel-base.component.js +76 -76
- package/esm2015/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item-internal.interface.js +2 -2
- package/esm2015/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.js +54 -54
- package/esm2015/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.interface.js +2 -2
- package/esm2015/lib/components/po-menu-panel/po-menu-panel.component.js +145 -145
- package/esm2015/lib/components/po-menu-panel/po-menu-panel.module.js +24 -24
- package/esm2015/lib/components/po-menu-panel/services/po-menu-panel-items.service.js +35 -35
- package/esm2015/lib/components/po-modal/index.js +5 -5
- package/esm2015/lib/components/po-modal/po-modal-action.interface.js +2 -2
- package/esm2015/lib/components/po-modal/po-modal-base.component.js +121 -121
- package/esm2015/lib/components/po-modal/po-modal-footer/po-modal-footer.component.js +43 -43
- package/esm2015/lib/components/po-modal/po-modal.component.js +114 -114
- package/esm2015/lib/components/po-modal/po-modal.literals.js +15 -15
- package/esm2015/lib/components/po-modal/po-modal.module.js +19 -19
- package/esm2015/lib/components/po-navbar/index.js +5 -5
- package/esm2015/lib/components/po-navbar/interfaces/po-navbar-icon-action.interface.js +2 -2
- package/esm2015/lib/components/po-navbar/interfaces/po-navbar-item.interface.js +2 -2
- package/esm2015/lib/components/po-navbar/interfaces/po-navbar-literals.interface.js +2 -2
- package/esm2015/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.js +43 -43
- package/esm2015/lib/components/po-navbar/po-navbar-actions/po-navbar-action-popup/po-navbar-action-popup.component.js +18 -18
- package/esm2015/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.js +19 -19
- package/esm2015/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.module.js +18 -18
- package/esm2015/lib/components/po-navbar/po-navbar-base.component.js +147 -147
- package/esm2015/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.js +18 -18
- package/esm2015/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.js +18 -18
- package/esm2015/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.module.js +15 -15
- package/esm2015/lib/components/po-navbar/po-navbar-items/po-navbar-item/po-navbar-item.component.js +30 -30
- package/esm2015/lib/components/po-navbar/po-navbar-items/po-navbar-items.component.js +53 -53
- package/esm2015/lib/components/po-navbar/po-navbar-items/po-navbar-items.module.js +15 -15
- package/esm2015/lib/components/po-navbar/po-navbar-logo/po-navbar-logo.component.js +13 -13
- package/esm2015/lib/components/po-navbar/po-navbar.component.js +213 -213
- package/esm2015/lib/components/po-navbar/po-navbar.module.js +57 -57
- package/esm2015/lib/components/po-page/index.js +15 -15
- package/esm2015/lib/components/po-page/po-page-action.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-base.component.js +23 -23
- package/esm2015/lib/components/po-page/po-page-content/po-page-content-base.component.js +10 -10
- package/esm2015/lib/components/po-page/po-page-content/po-page-content.component.js +54 -54
- package/esm2015/lib/components/po-page/po-page-default/po-page-default-base.component.js +111 -111
- package/esm2015/lib/components/po-page/po-page-default/po-page-default-literals.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-default/po-page-default.component.js +98 -98
- package/esm2015/lib/components/po-page/po-page-default/po-page-default.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-detail/po-page-detail-base.component.js +141 -141
- package/esm2015/lib/components/po-page/po-page-detail/po-page-detail-literals.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-detail/po-page-detail.component.js +62 -62
- package/esm2015/lib/components/po-page/po-page-edit/po-page-edit-base.component.js +146 -146
- package/esm2015/lib/components/po-page/po-page-edit/po-page-edit-literals.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-edit/po-page-edit.component.js +65 -65
- package/esm2015/lib/components/po-page/po-page-filter.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-header/po-page-header-base.component.js +26 -26
- package/esm2015/lib/components/po-page/po-page-header/po-page-header.component.js +15 -15
- package/esm2015/lib/components/po-page/po-page-list/po-page-list-base.component.js +137 -137
- package/esm2015/lib/components/po-page/po-page-list/po-page-list-literals.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-list/po-page-list.component.js +188 -188
- package/esm2015/lib/components/po-page/po-page-slide/po-page-slide-base.component.js +135 -135
- package/esm2015/lib/components/po-page/po-page-slide/po-page-slide.component.js +121 -121
- package/esm2015/lib/components/po-page/po-page.component.js +16 -16
- package/esm2015/lib/components/po-page/po-page.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page.module.js +60 -60
- package/esm2015/lib/components/po-popover/index.js +3 -3
- package/esm2015/lib/components/po-popover/po-popover-base.component.js +113 -113
- package/esm2015/lib/components/po-popover/po-popover.component.js +138 -138
- package/esm2015/lib/components/po-popover/po-popover.module.js +17 -17
- package/esm2015/lib/components/po-popup/index.js +4 -4
- package/esm2015/lib/components/po-popup/po-popup-action.interface.js +2 -2
- package/esm2015/lib/components/po-popup/po-popup-base.component.js +186 -186
- package/esm2015/lib/components/po-popup/po-popup.component.js +169 -169
- package/esm2015/lib/components/po-popup/po-popup.module.js +21 -21
- package/esm2015/lib/components/po-progress/enums/po-progress-status.enum.js +17 -17
- package/esm2015/lib/components/po-progress/index.js +4 -4
- package/esm2015/lib/components/po-progress/po-progress-bar/po-progress-bar.component.js +18 -18
- package/esm2015/lib/components/po-progress/po-progress-base.component.js +107 -107
- package/esm2015/lib/components/po-progress/po-progress.component.js +56 -56
- package/esm2015/lib/components/po-progress/po-progress.module.js +19 -19
- package/esm2015/lib/components/po-slide/directives/po-slide-content-template.directive.js +59 -59
- package/esm2015/lib/components/po-slide/index.js +5 -5
- package/esm2015/lib/components/po-slide/interfaces/po-slide-item.interface.js +2 -2
- package/esm2015/lib/components/po-slide/po-slide-base.component.js +104 -104
- package/esm2015/lib/components/po-slide/po-slide-circles/po-slide-circles.component.js +26 -26
- package/esm2015/lib/components/po-slide/po-slide-control/po-slide-control.component.js +25 -25
- package/esm2015/lib/components/po-slide/po-slide-item/po-slide-item.component.js +37 -37
- package/esm2015/lib/components/po-slide/po-slide.component.js +256 -256
- package/esm2015/lib/components/po-slide/po-slide.module.js +58 -58
- package/esm2015/lib/components/po-stepper/enums/po-stepper-orientation.enum.js +18 -18
- package/esm2015/lib/components/po-stepper/enums/po-stepper-status.enum.js +23 -23
- package/esm2015/lib/components/po-stepper/index.js +7 -7
- package/esm2015/lib/components/po-stepper/po-step/po-step.component.js +78 -78
- package/esm2015/lib/components/po-stepper/po-stepper-base.component.js +144 -144
- package/esm2015/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.js +47 -47
- package/esm2015/lib/components/po-stepper/po-stepper-item.interface.js +2 -2
- package/esm2015/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.js +20 -20
- package/esm2015/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.js +116 -116
- package/esm2015/lib/components/po-stepper/po-stepper.component.js +219 -219
- package/esm2015/lib/components/po-stepper/po-stepper.module.js +27 -27
- package/esm2015/lib/components/po-table/enums/po-table-column-sort-type.enum.js +14 -14
- package/esm2015/lib/components/po-table/enums/po-table-row-template-arrow-direction.enum.js +14 -14
- package/esm2015/lib/components/po-table/index.js +18 -18
- package/esm2015/lib/components/po-table/interfaces/po-table-action.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-boolean.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-column-sort.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-column.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-filter.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-filtered-items-params.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-literals.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-response-api.interface.js +2 -2
- package/esm2015/lib/components/po-table/po-table-base.component.js +860 -860
- package/esm2015/lib/components/po-table/po-table-cell-template/po-table-cell-template.directive.js +82 -82
- package/esm2015/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.js +72 -72
- package/esm2015/lib/components/po-table/po-table-column-icon/po-table-column-icon.interface.js +2 -2
- package/esm2015/lib/components/po-table/po-table-column-label/po-table-column-label.component.js +38 -38
- package/esm2015/lib/components/po-table/po-table-column-label/po-table-column-label.interface.js +2 -2
- package/esm2015/lib/components/po-table/po-table-column-link/po-table-column-link.component.js +38 -38
- package/esm2015/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.js +250 -250
- package/esm2015/lib/components/po-table/po-table-column-template/po-table-column-template.directive.js +90 -90
- package/esm2015/lib/components/po-table/po-table-detail/po-table-detail-column.interface.js +2 -2
- package/esm2015/lib/components/po-table/po-table-detail/po-table-detail.component.js +88 -88
- package/esm2015/lib/components/po-table/po-table-detail/po-table-detail.interface.js +2 -2
- package/esm2015/lib/components/po-table/po-table-icon/po-table-icon.component.js +46 -46
- package/esm2015/lib/components/po-table/po-table-row-template/po-table-row-template.directive.js +128 -128
- package/esm2015/lib/components/po-table/po-table-show-subtitle/po-table-show-subtitle.component.js +21 -21
- package/esm2015/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.js +41 -41
- package/esm2015/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-column.interface.js +2 -2
- package/esm2015/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.js +70 -70
- package/esm2015/lib/components/po-table/po-table.component.js +542 -542
- package/esm2015/lib/components/po-table/po-table.module.js +75 -75
- package/esm2015/lib/components/po-table/services/po-table.service.js +38 -38
- package/esm2015/lib/components/po-tabs/index.js +5 -5
- package/esm2015/lib/components/po-tabs/po-tab/po-tab-base.component.js +82 -82
- package/esm2015/lib/components/po-tabs/po-tab/po-tab.component.js +27 -27
- package/esm2015/lib/components/po-tabs/po-tab/po-tab.interface.js +2 -2
- package/esm2015/lib/components/po-tabs/po-tab-button/po-tab-button.component.js +75 -75
- package/esm2015/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.js +44 -44
- package/esm2015/lib/components/po-tabs/po-tabs-base.component.js +49 -49
- package/esm2015/lib/components/po-tabs/po-tabs.component.js +126 -126
- package/esm2015/lib/components/po-tabs/po-tabs.module.js +21 -21
- package/esm2015/lib/components/po-tag/enums/po-tag-icon.enum.js +19 -19
- package/esm2015/lib/components/po-tag/enums/po-tag-orientation.enum.js +15 -15
- package/esm2015/lib/components/po-tag/enums/po-tag-type.enum.js +19 -19
- package/esm2015/lib/components/po-tag/index.js +5 -5
- package/esm2015/lib/components/po-tag/interfaces/po-tag-item.interface.js +2 -2
- package/esm2015/lib/components/po-tag/po-tag-base.component.js +175 -175
- package/esm2015/lib/components/po-tag/po-tag.component.js +71 -71
- package/esm2015/lib/components/po-tag/po-tag.module.js +21 -21
- package/esm2015/lib/components/po-toolbar/index.js +5 -5
- package/esm2015/lib/components/po-toolbar/po-toolbar-action.interface.js +2 -2
- package/esm2015/lib/components/po-toolbar/po-toolbar-actions/po-toolbar-actions.component.js +35 -35
- package/esm2015/lib/components/po-toolbar/po-toolbar-base.component.js +43 -43
- package/esm2015/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.js +39 -39
- package/esm2015/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.js +28 -28
- package/esm2015/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.interface.js +2 -2
- package/esm2015/lib/components/po-toolbar/po-toolbar.component.js +46 -46
- package/esm2015/lib/components/po-toolbar/po-toolbar.module.js +32 -32
- package/esm2015/lib/components/po-tree-view/index.js +4 -4
- package/esm2015/lib/components/po-tree-view/po-tree-view-base.component.js +197 -197
- package/esm2015/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.component.js +58 -58
- package/esm2015/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.interface.js +2 -2
- package/esm2015/lib/components/po-tree-view/po-tree-view-item-header/po-tree-view-item-header.component.js +26 -26
- package/esm2015/lib/components/po-tree-view/po-tree-view.component.js +60 -60
- package/esm2015/lib/components/po-tree-view/po-tree-view.module.js +49 -49
- package/esm2015/lib/components/po-tree-view/services/po-tree-view.service.js +24 -24
- package/esm2015/lib/components/po-widget/index.js +3 -3
- package/esm2015/lib/components/po-widget/po-widget-base.component.js +216 -216
- package/esm2015/lib/components/po-widget/po-widget.component.js +114 -114
- package/esm2015/lib/components/po-widget/po-widget.module.js +19 -19
- package/esm2015/lib/decorators/index.js +3 -3
- package/esm2015/lib/decorators/input-boolean/input-boolean.decorator.js +18 -18
- package/esm2015/lib/decorators/input-required/input-required.decorator.js +34 -34
- package/esm2015/lib/decorators/property-decorator.interface.js +2 -2
- package/esm2015/lib/decorators/utils-decorators.js +64 -64
- package/esm2015/lib/directives/directives.module.js +14 -14
- package/esm2015/lib/directives/index.js +3 -3
- package/esm2015/lib/directives/po-tooltip/index.js +3 -3
- package/esm2015/lib/directives/po-tooltip/po-tooltip-base.directive.js +106 -106
- package/esm2015/lib/directives/po-tooltip/po-tooltip-control-position.service.js +8 -8
- package/esm2015/lib/directives/po-tooltip/po-tooltip.directive.js +147 -147
- package/esm2015/lib/directives/po-tooltip/po-tooltip.module.js +18 -18
- package/esm2015/lib/enums/po-color-palette.enum.js +35 -35
- package/esm2015/lib/enums/po-key-code.enum.js +31 -31
- package/esm2015/lib/guards/guards.module.js +13 -13
- package/esm2015/lib/guards/index.js +2 -2
- package/esm2015/lib/index.js +10 -10
- package/esm2015/lib/interceptors/index.js +4 -4
- package/esm2015/lib/interceptors/interceptors.module.js +15 -15
- package/esm2015/lib/interceptors/po-http-interceptor/index.js +3 -3
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.js +249 -249
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail-literals.interface.js +39 -39
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.component.js +83 -83
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.interface.js +2 -2
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-literals.js +23 -23
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor.module.js +28 -28
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor.service.js +28 -28
- package/esm2015/lib/interceptors/po-http-request/index.js +3 -3
- package/esm2015/lib/interceptors/po-http-request/po-http-request-control-service.js +23 -23
- package/esm2015/lib/interceptors/po-http-request/po-http-request-interceptor.service.js +169 -169
- package/esm2015/lib/interceptors/po-http-request/po-http-request.module.js +24 -24
- package/esm2015/lib/interfaces/index.js +2 -2
- package/esm2015/lib/interfaces/po-http/po-response-api.interface.js +2 -2
- package/esm2015/lib/pipes/index.js +3 -3
- package/esm2015/lib/pipes/pipes.module.js +14 -14
- package/esm2015/lib/pipes/po-time/index.js +3 -3
- package/esm2015/lib/pipes/po-time/po-time.module.js +19 -19
- package/esm2015/lib/pipes/po-time/po-time.pipe.js +55 -55
- package/esm2015/lib/po.module.js +34 -34
- package/esm2015/lib/services/index.js +11 -11
- package/esm2015/lib/services/po-active-overlay/index.js +3 -3
- package/esm2015/lib/services/po-active-overlay/po-active-overlay.module.js +16 -16
- package/esm2015/lib/services/po-active-overlay/po-active-overlay.service.js +14 -14
- package/esm2015/lib/services/po-color/po-color.service.js +61 -60
- package/esm2015/lib/services/po-color/po-colors.constant.js +43 -43
- package/esm2015/lib/services/po-color-palette/index.js +3 -3
- package/esm2015/lib/services/po-color-palette/po-color-palette.module.js +16 -16
- package/esm2015/lib/services/po-color-palette/po-color-palette.service.js +25 -25
- package/esm2015/lib/services/po-component-injector/index.js +3 -3
- package/esm2015/lib/services/po-component-injector/po-component-injector.module.js +14 -14
- package/esm2015/lib/services/po-component-injector/po-component-injector.service.js +34 -34
- package/esm2015/lib/services/po-control-position/index.js +3 -3
- package/esm2015/lib/services/po-control-position/po-control-position.constants.js +16 -16
- package/esm2015/lib/services/po-control-position/po-control-position.module.js +15 -15
- package/esm2015/lib/services/po-control-position/po-control-position.service.js +361 -361
- package/esm2015/lib/services/po-date/index.js +3 -3
- package/esm2015/lib/services/po-date/po-date.module.js +16 -16
- package/esm2015/lib/services/po-date/po-date.service.js +201 -201
- package/esm2015/lib/services/po-dialog/index.js +8 -8
- package/esm2015/lib/services/po-dialog/interfaces/po-dialog-alert-literals.interface.js +2 -2
- package/esm2015/lib/services/po-dialog/interfaces/po-dialog-confirm-literals.interface.js +2 -2
- package/esm2015/lib/services/po-dialog/interfaces/po-dialog.interface.js +2 -2
- package/esm2015/lib/services/po-dialog/po-dialog-base.service.js +18 -18
- package/esm2015/lib/services/po-dialog/po-dialog.component.js +115 -115
- package/esm2015/lib/services/po-dialog/po-dialog.enum.js +16 -16
- package/esm2015/lib/services/po-dialog/po-dialog.module.js +15 -15
- package/esm2015/lib/services/po-dialog/po-dialog.service.js +42 -42
- package/esm2015/lib/services/po-i18n/index.js +8 -8
- package/esm2015/lib/services/po-i18n/interfaces/po-i18n-config-default.interface.js +2 -2
- package/esm2015/lib/services/po-i18n/interfaces/po-i18n-config.interface.js +2 -2
- package/esm2015/lib/services/po-i18n/interfaces/po-i18n-literals.interface.js +2 -2
- package/esm2015/lib/services/po-i18n/po-i18n-base.pipe.js +40 -40
- package/esm2015/lib/services/po-i18n/po-i18n-base.service.js +439 -439
- package/esm2015/lib/services/po-i18n/po-i18n-config-injection-token.js +3 -3
- package/esm2015/lib/services/po-i18n/po-i18n.module.js +188 -188
- package/esm2015/lib/services/po-i18n/po-i18n.pipe.js +21 -21
- package/esm2015/lib/services/po-i18n/po-i18n.service.js +20 -20
- package/esm2015/lib/services/po-language/index.js +5 -5
- package/esm2015/lib/services/po-language/po-language.constant.js +75 -75
- package/esm2015/lib/services/po-language/po-language.interface.js +2 -2
- package/esm2015/lib/services/po-language/po-language.module.js +15 -15
- package/esm2015/lib/services/po-language/po-language.service.js +136 -136
- package/esm2015/lib/services/po-notification/index.js +6 -6
- package/esm2015/lib/services/po-notification/po-notification-base.service.js +111 -111
- package/esm2015/lib/services/po-notification/po-notification.interface.js +2 -2
- package/esm2015/lib/services/po-notification/po-notification.module.js +15 -15
- package/esm2015/lib/services/po-notification/po-notification.service.js +92 -92
- package/esm2015/lib/services/po-notification/po-toaster/po-toaster-base.component.js +15 -15
- package/esm2015/lib/services/po-notification/po-toaster/po-toaster-orientation.enum.js +13 -13
- package/esm2015/lib/services/po-notification/po-toaster/po-toaster-type.enum.js +17 -17
- package/esm2015/lib/services/po-notification/po-toaster/po-toaster.component.js +132 -132
- package/esm2015/lib/services/po-notification/po-toaster/po-toaster.interface.js +2 -2
- package/esm2015/lib/services/services.module.js +40 -40
- package/esm2015/lib/utils/util.js +508 -508
- package/esm2015/po-ui-ng-components.js +205 -205
- package/esm2015/public-api.js +2 -2
- package/fesm2015/po-ui-ng-components.js +35222 -35209
- package/fesm2015/po-ui-ng-components.js.map +1 -1
- package/lib/components/components.module.d.ts +2 -2
- package/lib/components/index.d.ts +37 -37
- package/lib/components/po-accordion/index.d.ts +3 -3
- package/lib/components/po-accordion/po-accordion-base.component.d.ts +28 -28
- package/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.d.ts +49 -49
- package/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.d.ts +3 -3
- package/lib/components/po-accordion/po-accordion-item-header/po-accordion-item-header.component.d.ts +7 -7
- package/lib/components/po-accordion/po-accordion.component.d.ts +37 -37
- package/lib/components/po-accordion/po-accordion.module.d.ts +33 -33
- package/lib/components/po-accordion/services/po-accordion.service.d.ts +13 -13
- package/lib/components/po-avatar/index.d.ts +2 -2
- package/lib/components/po-avatar/po-avatar-base.component.d.ts +53 -53
- package/lib/components/po-avatar/po-avatar.component.d.ts +28 -28
- package/lib/components/po-avatar/po-avatar.module.d.ts +7 -7
- package/lib/components/po-badge/po-badge-base.component.d.ts +55 -55
- package/lib/components/po-badge/po-badge.component.d.ts +8 -8
- package/lib/components/po-badge/po-badge.module.d.ts +7 -7
- package/lib/components/po-breadcrumb/index.d.ts +4 -4
- package/lib/components/po-breadcrumb/po-breadcrumb-base.component.d.ts +104 -104
- package/lib/components/po-breadcrumb/po-breadcrumb-dropdown/po-breadcrumb-dropdown.component.d.ts +11 -11
- package/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.d.ts +29 -29
- package/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.service.d.ts +27 -27
- package/lib/components/po-breadcrumb/po-breadcrumb-item/po-breadcrumb-item.component.d.ts +13 -13
- package/lib/components/po-breadcrumb/po-breadcrumb-item.interface.d.ts +31 -31
- package/lib/components/po-breadcrumb/po-breadcrumb.component.d.ts +53 -53
- package/lib/components/po-breadcrumb/po-breadcrumb.interface.d.ts +42 -42
- package/lib/components/po-breadcrumb/po-breadcrumb.module.d.ts +8 -8
- package/lib/components/po-button/index.d.ts +2 -2
- package/lib/components/po-button/po-button-base.component.d.ts +120 -120
- package/lib/components/po-button/po-button.component.d.ts +49 -49
- package/lib/components/po-button/po-button.module.d.ts +7 -7
- package/lib/components/po-button-group/index.d.ts +4 -4
- package/lib/components/po-button-group/po-button-group-base.component.d.ts +53 -53
- package/lib/components/po-button-group/po-button-group-item.interface.d.ts +64 -64
- package/lib/components/po-button-group/po-button-group-toggle.enum.d.ts +15 -15
- package/lib/components/po-button-group/po-button-group.component.d.ts +31 -31
- package/lib/components/po-button-group/po-button-group.module.d.ts +7 -7
- package/lib/components/po-calendar/index.d.ts +3 -3
- package/lib/components/po-calendar/po-calendar-base.component.d.ts +129 -129
- package/lib/components/po-calendar/po-calendar-header/po-calendar-header.component.d.ts +8 -8
- package/lib/components/po-calendar/po-calendar-mode.enum.d.ts +11 -11
- package/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.d.ts +77 -77
- package/lib/components/po-calendar/po-calendar.component.d.ts +53 -53
- package/lib/components/po-calendar/po-calendar.module.d.ts +6 -6
- package/lib/components/po-calendar/services/po-calendar.lang.service.d.ts +16 -16
- package/lib/components/po-calendar/services/po-calendar.service.d.ts +5 -5
- package/lib/components/po-chart/directives/po-resize-observer.directive.d.ts +12 -12
- package/lib/components/po-chart/enums/po-chart-type.enum.d.ts +49 -49
- package/lib/components/po-chart/helpers/po-chart-default-values.constant.d.ts +8 -8
- package/lib/components/po-chart/index.d.ts +7 -7
- package/lib/components/po-chart/interfaces/po-chart-axis-options.interface.d.ts +37 -37
- package/lib/components/po-chart/interfaces/po-chart-bar-coordinates.interface.d.ts +23 -23
- package/lib/components/po-chart/interfaces/po-chart-container-size.interface.d.ts +23 -23
- package/lib/components/po-chart/interfaces/po-chart-label-coordinates.interface.d.ts +19 -19
- package/lib/components/po-chart/interfaces/po-chart-min-max-values.interface.d.ts +19 -19
- package/lib/components/po-chart/interfaces/po-chart-options.interface.d.ts +20 -20
- package/lib/components/po-chart/interfaces/po-chart-path-coordinates.interface.d.ts +23 -23
- package/lib/components/po-chart/interfaces/po-chart-points-coordinates.interface.d.ts +26 -26
- package/lib/components/po-chart/interfaces/po-chart-serie.interface.d.ts +104 -101
- package/lib/components/po-chart/po-chart-base.component.d.ts +152 -152
- package/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-label/po-chart-axis-label.component.d.ts +10 -10
- package/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-path/po-chart-axis-path.component.d.ts +7 -7
- package/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis.component.d.ts +60 -60
- package/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-base.component.d.ts +31 -31
- package/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-path/po-chart-bar-path.component.d.ts +13 -13
- package/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar.component.d.ts +13 -13
- package/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-column/po-chart-column.component.d.ts +13 -13
- package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-label/po-chart-circular-label.component.d.ts +11 -11
- package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-circular-path.component.d.ts +13 -13
- package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-tooltip.directive.d.ts +20 -20
- package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular.component.d.ts +42 -42
- package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-donut/po-chart-donut.component.d.ts +16 -16
- package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-pie/po-chart-pie.component.d.ts +8 -8
- package/lib/components/po-chart/po-chart-container/po-chart-container.component.d.ts +43 -43
- package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-area/po-chart-area.component.d.ts +20 -20
- package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-line-base.component.d.ts +46 -46
- package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-line.component.d.ts +13 -13
- package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-path/po-chart-path.component.d.ts +19 -19
- package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-series-point/po-chart-series-point.component.d.ts +30 -30
- package/lib/components/po-chart/po-chart-legend/po-chart-legend.component.d.ts +7 -7
- package/lib/components/po-chart/po-chart-types/po-chart-circular/po-chart-circular.constant.d.ts +7 -7
- package/lib/components/po-chart/po-chart-types/po-chart-circular/po-chart-circular.d.ts +55 -55
- package/lib/components/po-chart/po-chart-types/po-chart-dynamic-type.component.d.ts +36 -36
- package/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge-series.interface.d.ts +39 -39
- package/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge-text-content/po-chart-gauge-text-content.component.d.ts +24 -24
- package/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge.component.d.ts +20 -20
- package/lib/components/po-chart/po-chart.component.d.ts +67 -67
- package/lib/components/po-chart/po-chart.module.d.ts +7 -7
- package/lib/components/po-chart/services/po-chart-maths.service.d.ts +63 -63
- package/lib/components/po-chart/services/po-chart-svg-container.service.d.ts +21 -21
- package/lib/components/po-container/index.d.ts +2 -2
- package/lib/components/po-container/po-container-base.component.d.ts +59 -59
- package/lib/components/po-container/po-container.component.d.ts +24 -24
- package/lib/components/po-container/po-container.module.d.ts +7 -7
- package/lib/components/po-disclaimer/index.d.ts +3 -3
- package/lib/components/po-disclaimer/po-disclaimer-base.component.d.ts +56 -56
- package/lib/components/po-disclaimer/po-disclaimer.component.d.ts +16 -16
- package/lib/components/po-disclaimer/po-disclaimer.interface.d.ts +17 -17
- package/lib/components/po-disclaimer/po-disclaimer.module.d.ts +6 -6
- package/lib/components/po-disclaimer-group/index.d.ts +4 -4
- package/lib/components/po-disclaimer-group/po-disclaimer-group-base.component.d.ts +114 -114
- package/lib/components/po-disclaimer-group/po-disclaimer-group-remove-action.interface.d.ts +18 -18
- package/lib/components/po-disclaimer-group/po-disclaimer-group.component.d.ts +28 -28
- package/lib/components/po-disclaimer-group/po-disclaimer-group.interface.d.ts +78 -78
- package/lib/components/po-disclaimer-group/po-disclaimer-group.module.d.ts +7 -7
- package/lib/components/po-disclaimer-group/po-disclaimer-remove/po-disclaimer-remove.component.d.ts +16 -16
- package/lib/components/po-divider/index.d.ts +2 -2
- package/lib/components/po-divider/po-divider-base.component.d.ts +10 -10
- package/lib/components/po-divider/po-divider.component.d.ts +23 -23
- package/lib/components/po-divider/po-divider.module.d.ts +7 -7
- package/lib/components/po-dropdown/index.d.ts +3 -3
- package/lib/components/po-dropdown/po-dropdown-action.interface.d.ts +11 -11
- package/lib/components/po-dropdown/po-dropdown-base.component.d.ts +54 -54
- package/lib/components/po-dropdown/po-dropdown.component.d.ts +41 -41
- package/lib/components/po-dropdown/po-dropdown.module.d.ts +6 -6
- package/lib/components/po-dynamic/index.d.ts +10 -10
- package/lib/components/po-dynamic/po-dynamic-field-type.enum.d.ts +23 -23
- package/lib/components/po-dynamic/po-dynamic-field.interface.d.ts +130 -130
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-base.component.d.ts +215 -215
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.d.ts +249 -249
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-field-internal.interface.d.ts +14 -14
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields-base.component.d.ts +44 -44
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.d.ts +36 -36
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.interface.d.ts +20 -20
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.service.d.ts +8 -8
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-operation/po-dynamic-form-operation.d.ts +10 -10
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-response.interface.d.ts +29 -29
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-field-changed.interface.d.ts +13 -13
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-field-validation.interface.d.ts +21 -21
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.interface.d.ts +20 -20
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.service.d.ts +12 -12
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.d.ts +83 -83
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.d.ts +134 -134
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.d.ts +104 -104
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.d.ts +36 -36
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.service.d.ts +10 -10
- package/lib/components/po-dynamic/po-dynamic.module.d.ts +2 -2
- package/lib/components/po-dynamic/po-dynamic.util.d.ts +4 -4
- package/lib/components/po-field/index.d.ts +50 -50
- package/lib/components/po-field/po-checkbox/po-checkbox-base.component.d.ts +62 -62
- package/lib/components/po-field/po-checkbox/po-checkbox.component.d.ts +51 -51
- package/lib/components/po-field/po-checkbox-group/interfaces/po-checkbox-group-option-view.interface.d.ts +14 -14
- package/lib/components/po-field/po-checkbox-group/interfaces/po-checkbox-group-option.interface.d.ts +24 -24
- package/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.d.ts +184 -184
- package/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.d.ts +50 -50
- package/lib/components/po-field/po-checkbox-group/po-checkbox-group.module.d.ts +7 -7
- package/lib/components/po-field/po-clean/po-clean-base.component.d.ts +30 -30
- package/lib/components/po-field/po-clean/po-clean.component.d.ts +17 -17
- package/lib/components/po-field/po-clean/po-clean.module.d.ts +7 -7
- package/lib/components/po-field/po-combo/interfaces/po-combo-filter.interface.d.ts +27 -27
- package/lib/components/po-field/po-combo/interfaces/po-combo-group.interface.d.ts +11 -11
- package/lib/components/po-field/po-combo/interfaces/po-combo-literals.interface.d.ts +11 -11
- package/lib/components/po-field/po-combo/interfaces/po-combo-option-group.interface.d.ts +14 -14
- package/lib/components/po-field/po-combo/interfaces/po-combo-option.interface.d.ts +21 -21
- package/lib/components/po-field/po-combo/interfaces/po-response.interface.d.ts +11 -11
- package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +409 -409
- package/lib/components/po-field/po-combo/po-combo-filter-mode.enum.d.ts +15 -15
- package/lib/components/po-field/po-combo/po-combo-filter.service.d.ts +28 -28
- package/lib/components/po-field/po-combo/po-combo-option-template/po-combo-option-template.directive.d.ts +70 -70
- package/lib/components/po-field/po-combo/po-combo.component.d.ts +139 -139
- package/lib/components/po-field/po-datepicker/enums/po-datepicker-iso-format.enum.d.ts +15 -15
- package/lib/components/po-field/po-datepicker/po-datepicker-base.component.d.ts +223 -223
- package/lib/components/po-field/po-datepicker/po-datepicker.component.d.ts +101 -101
- package/lib/components/po-field/po-datepicker/po-datepicker.module.d.ts +7 -7
- package/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range-literals.interface.d.ts +17 -17
- package/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range.interface.d.ts +16 -16
- package/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.d.ts +269 -269
- package/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.d.ts +125 -125
- package/lib/components/po-field/po-datepicker-range/po-datepicker-range.literals.d.ts +7 -7
- package/lib/components/po-field/po-decimal/po-decimal.component.d.ts +180 -180
- package/lib/components/po-field/po-email/po-email.component.d.ts +42 -42
- package/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.d.ts +15 -15
- package/lib/components/po-field/po-field-container/po-field-container-literals.d.ts +14 -14
- package/lib/components/po-field/po-field-container/po-field-container.component.d.ts +18 -18
- package/lib/components/po-field/po-field-container/po-field-container.module.d.ts +7 -7
- package/lib/components/po-field/po-field-validate.model.d.ts +38 -38
- package/lib/components/po-field/po-field.model.d.ts +51 -51
- package/lib/components/po-field/po-field.module.d.ts +12 -12
- package/lib/components/po-field/po-input/po-input-base.component.d.ts +265 -265
- package/lib/components/po-field/po-input/po-input.component.d.ts +29 -29
- package/lib/components/po-field/po-input/po-mask.d.ts +49 -49
- package/lib/components/po-field/po-input-generic/po-input-generic.d.ts +35 -35
- package/lib/components/po-field/po-login/po-login.component.d.ts +34 -34
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-advanced-filter.interface.d.ts +8 -8
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-column.interface.d.ts +44 -44
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-filter.interface.d.ts +29 -29
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-filtered-items-params.interface.d.ts +40 -40
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-literals.interface.d.ts +40 -40
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-response-api.interface.d.ts +8 -8
- package/lib/components/po-field/po-lookup/po-lookup-base.component.d.ts +387 -387
- package/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.d.ts +119 -119
- package/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.d.ts +41 -41
- package/lib/components/po-field/po-lookup/po-lookup.component.d.ts +113 -113
- package/lib/components/po-field/po-lookup/services/po-lookup-filter.service.d.ts +25 -25
- package/lib/components/po-field/po-lookup/services/po-lookup-modal.service.d.ts +44 -44
- package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +345 -345
- package/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.d.ts +57 -57
- package/lib/components/po-field/po-multiselect/po-multiselect-filter-mode.enum.d.ts +15 -15
- package/lib/components/po-field/po-multiselect/po-multiselect-filter.interface.d.ts +28 -28
- package/lib/components/po-field/po-multiselect/po-multiselect-filter.service.d.ts +18 -18
- package/lib/components/po-field/po-multiselect/po-multiselect-item/po-multiselect-item.component.d.ts +17 -17
- package/lib/components/po-field/po-multiselect/po-multiselect-literals.interface.d.ts +15 -15
- package/lib/components/po-field/po-multiselect/po-multiselect-option.interface.d.ts +13 -13
- package/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.d.ts +34 -34
- package/lib/components/po-field/po-multiselect/po-multiselect.component.d.ts +107 -107
- package/lib/components/po-field/po-number/po-number-base.component.d.ts +18 -18
- package/lib/components/po-field/po-number/po-number.component.d.ts +59 -59
- package/lib/components/po-field/po-password/po-password.component.d.ts +48 -48
- package/lib/components/po-field/po-radio-group/po-radio-group-base.component.d.ts +119 -119
- package/lib/components/po-field/po-radio-group/po-radio-group-option.interface.d.ts +15 -15
- package/lib/components/po-field/po-radio-group/po-radio-group.component.d.ts +64 -64
- package/lib/components/po-field/po-rich-text/interfaces/po-rich-text-toolbar-button-group-item.interface.d.ts +4 -4
- package/lib/components/po-field/po-rich-text/po-rich-text-base.component.d.ts +144 -144
- package/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.d.ts +52 -52
- package/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.d.ts +34 -34
- package/lib/components/po-field/po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component.d.ts +45 -45
- package/lib/components/po-field/po-rich-text/po-rich-text-literals.d.ts +82 -82
- package/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.d.ts +45 -45
- package/lib/components/po-field/po-rich-text/po-rich-text.component.d.ts +60 -60
- package/lib/components/po-field/po-rich-text/po-rich-text.service.d.ts +5 -5
- package/lib/components/po-field/po-select/po-select-option-template/po-select-option-template.directive.d.ts +48 -48
- package/lib/components/po-field/po-select/po-select-option.interface.d.ts +13 -13
- package/lib/components/po-field/po-select/po-select.component.d.ts +158 -158
- package/lib/components/po-field/po-switch/po-switch-label-position.enum.d.ts +13 -13
- package/lib/components/po-field/po-switch/po-switch.component.d.ts +102 -102
- package/lib/components/po-field/po-textarea/po-textarea-base.component.d.ts +178 -178
- package/lib/components/po-field/po-textarea/po-textarea.component.d.ts +59 -59
- package/lib/components/po-field/po-upload/interfaces/po-upload-file-restriction.interface.d.ts +37 -37
- package/lib/components/po-field/po-upload/interfaces/po-upload-literals.interface.d.ts +45 -45
- package/lib/components/po-field/po-upload/po-upload-base.component.d.ts +333 -333
- package/lib/components/po-field/po-upload/po-upload-base.service.d.ts +32 -32
- package/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area/po-upload-drag-drop-area.component.d.ts +14 -14
- package/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area-overlay/po-upload-drag-drop-area-overlay.component.d.ts +14 -14
- package/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.component.d.ts +24 -24
- package/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.directive.d.ts +32 -32
- package/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.d.ts +21 -21
- package/lib/components/po-field/po-upload/po-upload-file.d.ts +15 -15
- package/lib/components/po-field/po-upload/po-upload-status.enum.d.ts +6 -6
- package/lib/components/po-field/po-upload/po-upload.component.d.ts +106 -106
- package/lib/components/po-field/po-upload/po-upload.service.d.ts +3 -3
- package/lib/components/po-field/po-url/po-url.component.d.ts +41 -41
- package/lib/components/po-field/validators.d.ts +7 -7
- package/lib/components/po-gauge/index.d.ts +3 -3
- package/lib/components/po-gauge/interfaces/po-gauge-coordinates.interface.d.ts +19 -19
- package/lib/components/po-gauge/interfaces/po-gauge-ranges.interface.d.ts +44 -44
- package/lib/components/po-gauge/interfaces/po-gauge-svg-container.interface.d.ts +15 -15
- package/lib/components/po-gauge/po-gauge-base.component.d.ts +98 -98
- package/lib/components/po-gauge/po-gauge-default-values.constant.d.ts +5 -5
- package/lib/components/po-gauge/po-gauge-description/po-gauge-description.component.d.ts +11 -11
- package/lib/components/po-gauge/po-gauge-legend/po-gauge-legend.component.d.ts +9 -9
- package/lib/components/po-gauge/po-gauge-svg/po-gauge-path/po-gauge-path.component.d.ts +9 -9
- package/lib/components/po-gauge/po-gauge-svg/po-gauge-pointer/po-gauge-pointer.component.d.ts +15 -15
- package/lib/components/po-gauge/po-gauge-svg/po-gauge-svg.component.d.ts +32 -32
- package/lib/components/po-gauge/po-gauge-title/po-gauge-title.component.d.ts +3 -3
- package/lib/components/po-gauge/po-gauge.component.d.ts +37 -37
- package/lib/components/po-gauge/po-gauge.module.d.ts +6 -6
- package/lib/components/po-grid/index.d.ts +3 -3
- package/lib/components/po-grid/po-grid-cell/po-grid-cell.component.d.ts +27 -27
- package/lib/components/po-grid/po-grid-cell-action/po-grid-cell-action.component.d.ts +6 -6
- package/lib/components/po-grid/po-grid-head/po-grid-head.component.d.ts +10 -10
- package/lib/components/po-grid/po-grid-row-actions.interface.d.ts +86 -86
- package/lib/components/po-grid/po-grid.component.d.ts +80 -80
- package/lib/components/po-grid/po-grid.module.d.ts +7 -7
- package/lib/components/po-icon/index.d.ts +2 -2
- package/lib/components/po-icon/po-icon.component.d.ts +39 -39
- package/lib/components/po-icon/po-icon.module.d.ts +7 -7
- package/lib/components/po-info/index.d.ts +3 -3
- package/lib/components/po-info/po-info-base.component.d.ts +46 -46
- package/lib/components/po-info/po-info-orietation.enum.d.ts +13 -13
- package/lib/components/po-info/po-info.component.d.ts +24 -24
- package/lib/components/po-info/po-info.module.d.ts +7 -7
- package/lib/components/po-list-view/index.d.ts +6 -6
- package/lib/components/po-list-view/interfaces/po-list-view-action.interface.d.ts +15 -15
- package/lib/components/po-list-view/interfaces/po-list-view-literals.interface.d.ts +19 -19
- package/lib/components/po-list-view/po-list-view-base.component.d.ts +165 -165
- package/lib/components/po-list-view/po-list-view-content-template/po-list-view-content-template.directive.d.ts +97 -97
- package/lib/components/po-list-view/po-list-view-detail-template/po-list-view-detail-template.directive.d.ts +60 -60
- package/lib/components/po-list-view/po-list-view.component.d.ts +53 -53
- package/lib/components/po-list-view/po-list-view.module.d.ts +33 -33
- package/lib/components/po-loading/index.d.ts +4 -4
- package/lib/components/po-loading/po-loading-base.component.d.ts +14 -14
- package/lib/components/po-loading/po-loading-icon/po-loading-icon.component.d.ts +22 -22
- package/lib/components/po-loading/po-loading-overlay/interfaces/po-loading-overlay-literals.interface.d.ts +13 -13
- package/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.d.ts +59 -59
- package/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.d.ts +28 -28
- package/lib/components/po-loading/po-loading.component.d.ts +8 -8
- package/lib/components/po-loading/po-loading.module.d.ts +8 -8
- package/lib/components/po-menu/index.d.ts +8 -8
- package/lib/components/po-menu/po-menu-base.component.d.ts +182 -182
- package/lib/components/po-menu/po-menu-filter/po-menu-filter-literals.interface.d.ts +14 -14
- package/lib/components/po-menu/po-menu-filter/po-menu-filter.component.d.ts +25 -25
- package/lib/components/po-menu/po-menu-filter/po-menu-filter.interface.d.ts +19 -19
- package/lib/components/po-menu/po-menu-header-template/po-menu-header-template.directive.d.ts +40 -40
- package/lib/components/po-menu/po-menu-item/po-menu-item-badge.interface.d.ts +49 -49
- package/lib/components/po-menu/po-menu-item/po-menu-item-filtered.interface.d.ts +13 -13
- package/lib/components/po-menu/po-menu-item/po-menu-item.component.d.ts +54 -54
- package/lib/components/po-menu/po-menu-item.interface.d.ts +78 -78
- package/lib/components/po-menu/po-menu.component.d.ts +178 -178
- package/lib/components/po-menu/po-menu.module.d.ts +7 -7
- package/lib/components/po-menu/services/po-menu-global.service.d.ts +14 -14
- package/lib/components/po-menu/services/po-menu-items.service.d.ts +16 -16
- package/lib/components/po-menu/services/po-menu.service.d.ts +20 -20
- package/lib/components/po-menu-panel/index.d.ts +3 -3
- package/lib/components/po-menu-panel/po-menu-panel-base.component.d.ts +33 -33
- package/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item-internal.interface.d.ts +16 -16
- package/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.d.ts +23 -23
- package/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.interface.d.ts +18 -18
- package/lib/components/po-menu-panel/po-menu-panel.component.d.ts +91 -91
- package/lib/components/po-menu-panel/po-menu-panel.module.d.ts +7 -7
- package/lib/components/po-menu-panel/services/po-menu-panel-items.service.d.ts +16 -16
- package/lib/components/po-modal/index.d.ts +4 -4
- package/lib/components/po-modal/po-modal-action.interface.d.ts +23 -23
- package/lib/components/po-modal/po-modal-base.component.d.ts +79 -79
- package/lib/components/po-modal/po-modal-footer/po-modal-footer.component.d.ts +30 -30
- package/lib/components/po-modal/po-modal.component.d.ts +46 -46
- package/lib/components/po-modal/po-modal.literals.d.ts +14 -14
- package/lib/components/po-modal/po-modal.module.d.ts +6 -6
- package/lib/components/po-navbar/index.d.ts +4 -4
- package/lib/components/po-navbar/interfaces/po-navbar-icon-action.interface.d.ts +55 -55
- package/lib/components/po-navbar/interfaces/po-navbar-item.interface.d.ts +21 -21
- package/lib/components/po-navbar/interfaces/po-navbar-literals.interface.d.ts +11 -11
- package/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.d.ts +13 -13
- package/lib/components/po-navbar/po-navbar-actions/po-navbar-action-popup/po-navbar-action-popup.component.d.ts +5 -5
- package/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.d.ts +6 -6
- package/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.module.d.ts +2 -2
- package/lib/components/po-navbar/po-navbar-base.component.d.ts +129 -129
- package/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.d.ts +6 -6
- package/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.d.ts +6 -6
- package/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.module.d.ts +2 -2
- package/lib/components/po-navbar/po-navbar-items/po-navbar-item/po-navbar-item.component.d.ts +11 -11
- package/lib/components/po-navbar/po-navbar-items/po-navbar-items.component.d.ts +17 -17
- package/lib/components/po-navbar/po-navbar-items/po-navbar-items.module.d.ts +2 -2
- package/lib/components/po-navbar/po-navbar-logo/po-navbar-logo.component.d.ts +3 -3
- package/lib/components/po-navbar/po-navbar.component.d.ts +57 -57
- package/lib/components/po-navbar/po-navbar.module.d.ts +33 -33
- package/lib/components/po-page/index.d.ts +14 -14
- package/lib/components/po-page/po-page-action.interface.d.ts +16 -16
- package/lib/components/po-page/po-page-base.component.d.ts +22 -22
- package/lib/components/po-page/po-page-content/po-page-content-base.component.d.ts +10 -10
- package/lib/components/po-page/po-page-content/po-page-content.component.d.ts +20 -20
- package/lib/components/po-page/po-page-default/po-page-default-base.component.d.ts +75 -75
- package/lib/components/po-page/po-page-default/po-page-default-literals.interface.d.ts +11 -11
- package/lib/components/po-page/po-page-default/po-page-default.component.d.ts +45 -45
- package/lib/components/po-page/po-page-default/po-page-default.interface.d.ts +13 -13
- package/lib/components/po-page/po-page-detail/po-page-detail-base.component.d.ts +100 -100
- package/lib/components/po-page/po-page-detail/po-page-detail-literals.interface.d.ts +15 -15
- package/lib/components/po-page/po-page-detail/po-page-detail.component.d.ts +28 -28
- package/lib/components/po-page/po-page-edit/po-page-edit-base.component.d.ts +106 -106
- package/lib/components/po-page/po-page-edit/po-page-edit-literals.interface.d.ts +15 -15
- package/lib/components/po-page/po-page-edit/po-page-edit.component.d.ts +29 -29
- package/lib/components/po-page/po-page-filter.interface.d.ts +26 -26
- package/lib/components/po-page/po-page-header/po-page-header-base.component.d.ts +17 -17
- package/lib/components/po-page/po-page-header/po-page-header.component.d.ts +7 -7
- package/lib/components/po-page/po-page-list/po-page-list-base.component.d.ts +108 -108
- package/lib/components/po-page/po-page-list/po-page-list-literals.interface.d.ts +11 -11
- package/lib/components/po-page/po-page-list/po-page-list.component.d.ts +71 -71
- package/lib/components/po-page/po-page-slide/po-page-slide-base.component.d.ts +111 -111
- package/lib/components/po-page/po-page-slide/po-page-slide.component.d.ts +42 -42
- package/lib/components/po-page/po-page.component.d.ts +8 -8
- package/lib/components/po-page/po-page.interface.d.ts +14 -14
- package/lib/components/po-page/po-page.module.d.ts +7 -7
- package/lib/components/po-popover/index.d.ts +2 -2
- package/lib/components/po-popover/po-popover-base.component.d.ts +131 -131
- package/lib/components/po-popover/po-popover.component.d.ts +47 -47
- package/lib/components/po-popover/po-popover.module.d.ts +6 -6
- package/lib/components/po-popup/index.d.ts +3 -3
- package/lib/components/po-popup/po-popup-action.interface.d.ts +91 -91
- package/lib/components/po-popup/po-popup-base.component.d.ts +151 -151
- package/lib/components/po-popup/po-popup.component.d.ts +69 -69
- package/lib/components/po-popup/po-popup.module.d.ts +7 -7
- package/lib/components/po-progress/enums/po-progress-status.enum.d.ts +15 -15
- package/lib/components/po-progress/index.d.ts +3 -3
- package/lib/components/po-progress/po-progress-bar/po-progress-bar.component.d.ts +5 -5
- package/lib/components/po-progress/po-progress-base.component.d.ts +103 -103
- package/lib/components/po-progress/po-progress.component.d.ts +28 -28
- package/lib/components/po-progress/po-progress.module.d.ts +7 -7
- package/lib/components/po-slide/directives/po-slide-content-template.directive.d.ts +48 -48
- package/lib/components/po-slide/index.d.ts +4 -4
- package/lib/components/po-slide/interfaces/po-slide-item.interface.d.ts +17 -17
- package/lib/components/po-slide/po-slide-base.component.d.ts +75 -75
- package/lib/components/po-slide/po-slide-circles/po-slide-circles.component.d.ts +16 -16
- package/lib/components/po-slide/po-slide-control/po-slide-control.component.d.ts +14 -14
- package/lib/components/po-slide/po-slide-item/po-slide-item.component.d.ts +28 -28
- package/lib/components/po-slide/po-slide.component.d.ts +110 -110
- package/lib/components/po-slide/po-slide.module.d.ts +33 -33
- package/lib/components/po-stepper/enums/po-stepper-orientation.enum.d.ts +16 -16
- package/lib/components/po-stepper/enums/po-stepper-status.enum.d.ts +21 -21
- package/lib/components/po-stepper/index.d.ts +6 -6
- package/lib/components/po-stepper/po-step/po-step.component.d.ts +76 -76
- package/lib/components/po-stepper/po-stepper-base.component.d.ts +132 -132
- package/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.d.ts +20 -20
- package/lib/components/po-stepper/po-stepper-item.interface.d.ts +14 -14
- package/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.d.ts +10 -10
- package/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.d.ts +37 -37
- package/lib/components/po-stepper/po-stepper.component.d.ts +80 -80
- package/lib/components/po-stepper/po-stepper.module.d.ts +6 -6
- package/lib/components/po-table/enums/po-table-column-sort-type.enum.d.ts +12 -12
- package/lib/components/po-table/enums/po-table-row-template-arrow-direction.enum.d.ts +12 -12
- package/lib/components/po-table/index.d.ts +17 -17
- package/lib/components/po-table/interfaces/po-table-action.interface.d.ts +8 -8
- package/lib/components/po-table/interfaces/po-table-boolean.interface.d.ts +13 -13
- package/lib/components/po-table/interfaces/po-table-column-sort.interface.d.ts +15 -15
- package/lib/components/po-table/interfaces/po-table-column.interface.d.ts +242 -242
- package/lib/components/po-table/interfaces/po-table-filter.interface.d.ts +16 -16
- package/lib/components/po-table/interfaces/po-table-filtered-items-params.interface.d.ts +33 -33
- package/lib/components/po-table/interfaces/po-table-literals.interface.d.ts +25 -25
- package/lib/components/po-table/interfaces/po-table-response-api.interface.d.ts +7 -7
- package/lib/components/po-table/po-table-base.component.d.ts +501 -501
- package/lib/components/po-table/po-table-cell-template/po-table-cell-template.directive.d.ts +71 -71
- package/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.d.ts +26 -26
- package/lib/components/po-table/po-table-column-icon/po-table-column-icon.interface.d.ts +80 -80
- package/lib/components/po-table/po-table-column-label/po-table-column-label.component.d.ts +17 -17
- package/lib/components/po-table/po-table-column-label/po-table-column-label.interface.d.ts +42 -42
- package/lib/components/po-table/po-table-column-link/po-table-column-link.component.d.ts +15 -15
- package/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.d.ts +74 -74
- package/lib/components/po-table/po-table-column-template/po-table-column-template.directive.d.ts +86 -86
- package/lib/components/po-table/po-table-detail/po-table-detail-column.interface.d.ts +61 -61
- package/lib/components/po-table/po-table-detail/po-table-detail.component.d.ts +44 -44
- package/lib/components/po-table/po-table-detail/po-table-detail.interface.d.ts +36 -36
- package/lib/components/po-table/po-table-icon/po-table-icon.component.d.ts +27 -27
- package/lib/components/po-table/po-table-row-template/po-table-row-template.directive.d.ts +120 -120
- package/lib/components/po-table/po-table-show-subtitle/po-table-show-subtitle.component.d.ts +14 -14
- package/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.d.ts +19 -19
- package/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-column.interface.d.ts +39 -39
- package/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.d.ts +31 -31
- package/lib/components/po-table/po-table.component.d.ts +229 -229
- package/lib/components/po-table/po-table.module.d.ts +6 -6
- package/lib/components/po-table/services/po-table.service.d.ts +14 -14
- package/lib/components/po-tabs/index.d.ts +4 -4
- package/lib/components/po-tabs/po-tab/po-tab-base.component.d.ts +57 -57
- package/lib/components/po-tabs/po-tab/po-tab.component.d.ts +11 -11
- package/lib/components/po-tabs/po-tab/po-tab.interface.d.ts +45 -45
- package/lib/components/po-tabs/po-tab-button/po-tab-button.component.d.ts +29 -29
- package/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.d.ts +23 -23
- package/lib/components/po-tabs/po-tabs-base.component.d.ts +34 -34
- package/lib/components/po-tabs/po-tabs.component.d.ts +50 -50
- package/lib/components/po-tabs/po-tabs.module.d.ts +6 -6
- package/lib/components/po-tag/enums/po-tag-icon.enum.d.ts +17 -17
- package/lib/components/po-tag/enums/po-tag-orientation.enum.d.ts +13 -13
- package/lib/components/po-tag/enums/po-tag-type.enum.d.ts +17 -17
- package/lib/components/po-tag/index.d.ts +4 -4
- package/lib/components/po-tag/interfaces/po-tag-item.interface.d.ts +13 -13
- package/lib/components/po-tag/po-tag-base.component.d.ts +144 -144
- package/lib/components/po-tag/po-tag.component.d.ts +32 -32
- package/lib/components/po-tag/po-tag.module.d.ts +7 -7
- package/lib/components/po-toolbar/index.d.ts +4 -4
- package/lib/components/po-toolbar/po-toolbar-action.interface.d.ts +8 -8
- package/lib/components/po-toolbar/po-toolbar-actions/po-toolbar-actions.component.d.ts +19 -19
- package/lib/components/po-toolbar/po-toolbar-base.component.d.ts +75 -75
- package/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.d.ts +22 -22
- package/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.d.ts +18 -18
- package/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.interface.d.ts +15 -15
- package/lib/components/po-toolbar/po-toolbar.component.d.ts +29 -29
- package/lib/components/po-toolbar/po-toolbar.module.d.ts +8 -8
- package/lib/components/po-tree-view/index.d.ts +3 -3
- package/lib/components/po-tree-view/po-tree-view-base.component.d.ts +86 -86
- package/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.component.d.ts +12 -12
- package/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.interface.d.ts +24 -24
- package/lib/components/po-tree-view/po-tree-view-item-header/po-tree-view-item-header.component.d.ts +10 -10
- package/lib/components/po-tree-view/po-tree-view.component.d.ts +35 -35
- package/lib/components/po-tree-view/po-tree-view.module.d.ts +33 -33
- package/lib/components/po-tree-view/services/po-tree-view.service.d.ts +9 -9
- package/lib/components/po-widget/index.d.ts +2 -2
- package/lib/components/po-widget/po-widget-base.component.d.ts +162 -162
- package/lib/components/po-widget/po-widget.component.d.ts +41 -41
- package/lib/components/po-widget/po-widget.module.d.ts +7 -7
- package/lib/decorators/index.d.ts +2 -2
- package/lib/decorators/input-boolean/input-boolean.decorator.d.ts +10 -10
- package/lib/decorators/input-required/input-required.decorator.d.ts +22 -22
- package/lib/decorators/property-decorator.interface.d.ts +13 -13
- package/lib/decorators/utils-decorators.d.ts +27 -27
- package/lib/directives/directives.module.d.ts +2 -2
- package/lib/directives/index.d.ts +2 -2
- package/lib/directives/po-tooltip/index.d.ts +2 -2
- package/lib/directives/po-tooltip/po-tooltip-base.directive.d.ts +67 -67
- package/lib/directives/po-tooltip/po-tooltip-control-position.service.d.ts +3 -3
- package/lib/directives/po-tooltip/po-tooltip.directive.d.ts +52 -52
- package/lib/directives/po-tooltip/po-tooltip.module.d.ts +7 -7
- package/lib/enums/po-color-palette.enum.d.ts +33 -33
- package/lib/enums/po-key-code.enum.d.ts +29 -29
- package/lib/guards/guards.module.d.ts +2 -2
- package/lib/guards/index.d.ts +1 -1
- package/lib/index.d.ts +9 -9
- package/lib/interceptors/index.d.ts +3 -3
- package/lib/interceptors/interceptors.module.d.ts +2 -2
- package/lib/interceptors/po-http-interceptor/index.d.ts +2 -2
- package/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.d.ts +154 -154
- package/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail-literals.interface.d.ts +6 -6
- package/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.component.d.ts +39 -39
- package/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.interface.d.ts +23 -23
- package/lib/interceptors/po-http-interceptor/po-http-interceptor-literals.d.ts +6 -6
- package/lib/interceptors/po-http-interceptor/po-http-interceptor.module.d.ts +2 -2
- package/lib/interceptors/po-http-interceptor/po-http-interceptor.service.d.ts +16 -16
- package/lib/interceptors/po-http-request/index.d.ts +2 -2
- package/lib/interceptors/po-http-request/po-http-request-control-service.d.ts +12 -12
- package/lib/interceptors/po-http-request/po-http-request-interceptor.service.d.ts +102 -102
- package/lib/interceptors/po-http-request/po-http-request.module.d.ts +2 -2
- package/lib/interfaces/index.d.ts +1 -1
- package/lib/interfaces/po-http/po-response-api.interface.d.ts +13 -13
- package/lib/pipes/index.d.ts +2 -2
- package/lib/pipes/pipes.module.d.ts +2 -2
- package/lib/pipes/po-time/index.d.ts +2 -2
- package/lib/pipes/po-time/po-time.module.d.ts +7 -7
- package/lib/pipes/po-time/po-time.pipe.d.ts +14 -14
- package/lib/po.module.d.ts +2 -2
- package/lib/services/index.d.ts +10 -10
- package/lib/services/po-active-overlay/index.d.ts +2 -2
- package/lib/services/po-active-overlay/po-active-overlay.module.d.ts +7 -7
- package/lib/services/po-active-overlay/po-active-overlay.service.d.ts +3 -3
- package/lib/services/po-color/po-color.service.d.ts +17 -16
- package/lib/services/po-color/po-colors.constant.d.ts +2 -2
- package/lib/services/po-color-palette/index.d.ts +2 -2
- package/lib/services/po-color-palette/po-color-palette.module.d.ts +7 -7
- package/lib/services/po-color-palette/po-color-palette.service.d.ts +7 -7
- package/lib/services/po-component-injector/index.d.ts +2 -2
- package/lib/services/po-component-injector/po-component-injector.module.d.ts +2 -2
- package/lib/services/po-component-injector/po-component-injector.service.d.ts +9 -9
- package/lib/services/po-control-position/index.d.ts +2 -2
- package/lib/services/po-control-position/po-control-position.constants.d.ts +1 -1
- package/lib/services/po-control-position/po-control-position.module.d.ts +7 -7
- package/lib/services/po-control-position/po-control-position.service.d.ts +56 -56
- package/lib/services/po-date/index.d.ts +2 -2
- package/lib/services/po-date/po-date.module.d.ts +7 -7
- package/lib/services/po-date/po-date.service.d.ts +94 -94
- package/lib/services/po-dialog/index.d.ts +7 -7
- package/lib/services/po-dialog/interfaces/po-dialog-alert-literals.interface.d.ts +11 -11
- package/lib/services/po-dialog/interfaces/po-dialog-confirm-literals.interface.d.ts +13 -13
- package/lib/services/po-dialog/interfaces/po-dialog.interface.d.ts +82 -82
- package/lib/services/po-dialog/po-dialog-base.service.d.ts +15 -15
- package/lib/services/po-dialog/po-dialog.component.d.ts +48 -48
- package/lib/services/po-dialog/po-dialog.enum.d.ts +12 -12
- package/lib/services/po-dialog/po-dialog.module.d.ts +2 -2
- package/lib/services/po-dialog/po-dialog.service.d.ts +29 -29
- package/lib/services/po-i18n/index.d.ts +7 -7
- package/lib/services/po-i18n/interfaces/po-i18n-config-default.interface.d.ts +35 -35
- package/lib/services/po-i18n/interfaces/po-i18n-config.interface.d.ts +78 -78
- package/lib/services/po-i18n/interfaces/po-i18n-literals.interface.d.ts +15 -15
- package/lib/services/po-i18n/po-i18n-base.pipe.d.ts +29 -29
- package/lib/services/po-i18n/po-i18n-base.service.d.ts +212 -212
- package/lib/services/po-i18n/po-i18n-config-injection-token.d.ts +3 -3
- package/lib/services/po-i18n/po-i18n.module.d.ts +150 -150
- package/lib/services/po-i18n/po-i18n.pipe.d.ts +15 -15
- package/lib/services/po-i18n/po-i18n.service.d.ts +10 -10
- package/lib/services/po-language/index.d.ts +4 -4
- package/lib/services/po-language/po-language.constant.d.ts +58 -58
- package/lib/services/po-language/po-language.interface.d.ts +43 -43
- package/lib/services/po-language/po-language.module.d.ts +7 -7
- package/lib/services/po-language/po-language.service.d.ts +95 -95
- package/lib/services/po-notification/index.d.ts +5 -5
- package/lib/services/po-notification/po-notification-base.service.d.ts +84 -84
- package/lib/services/po-notification/po-notification.interface.d.ts +33 -33
- package/lib/services/po-notification/po-notification.module.d.ts +2 -2
- package/lib/services/po-notification/po-notification.service.d.ts +31 -31
- package/lib/services/po-notification/po-toaster/po-toaster-base.component.d.ts +41 -41
- package/lib/services/po-notification/po-toaster/po-toaster-orientation.enum.d.ts +11 -11
- package/lib/services/po-notification/po-toaster/po-toaster-type.enum.d.ts +15 -15
- package/lib/services/po-notification/po-toaster/po-toaster.component.d.ts +33 -33
- package/lib/services/po-notification/po-toaster/po-toaster.interface.d.ts +15 -15
- package/lib/services/services.module.d.ts +2 -2
- package/lib/utils/util.d.ts +217 -217
- package/package.json +4 -4
- package/po-ui-ng-components-5.22.7.tgz +0 -0
- package/po-ui-ng-components.d.ts +205 -205
- package/po-ui-ng-components.metadata.json +1 -1
- package/public-api.d.ts +1 -1
- package/schematics/README.md +74 -74
- package/schematics/collection.json +40 -40
- package/schematics/migrations.json +25 -25
- package/schematics/ng-add/index.d.ts +8 -8
- package/schematics/ng-add/index.js +25 -25
- package/schematics/ng-add/index.spec.d.ts +1 -1
- package/schematics/ng-add/index.spec.js +91 -91
- package/schematics/ng-add/schema.json +16 -16
- package/schematics/ng-add/setup-project.d.ts +8 -8
- package/schematics/ng-add/setup-project.js +55 -55
- package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +3 -3
- package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +18 -18
- package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-default/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-default/index.js +12 -12
- package/schematics/ng-generate/po-page-default/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-default/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-default/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-default/schema.js +2 -2
- package/schematics/ng-generate/po-page-default/schema.json +67 -67
- package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +8 -8
- package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +26 -26
- package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-detail/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-detail/index.js +12 -12
- package/schematics/ng-generate/po-page-detail/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-detail/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-detail/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-detail/schema.js +2 -2
- package/schematics/ng-generate/po-page-detail/schema.json +67 -67
- package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +8 -8
- package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +26 -26
- package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-edit/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-edit/index.js +12 -12
- package/schematics/ng-generate/po-page-edit/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-edit/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-edit/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-edit/schema.js +2 -2
- package/schematics/ng-generate/po-page-edit/schema.json +67 -67
- package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +28 -28
- package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +35 -35
- package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +33 -33
- package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-list/index.d.ts +7 -7
- package/schematics/ng-generate/po-page-list/index.js +15 -15
- package/schematics/ng-generate/po-page-list/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-list/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-list/schema.d.ts +5 -5
- package/schematics/ng-generate/po-page-list/schema.js +2 -2
- package/schematics/ng-generate/po-page-list/schema.json +78 -78
- package/schematics/ng-generate/sidemenu/files/app.component.html.template +9 -9
- package/schematics/ng-generate/sidemenu/files/app.component.spec.ts.template +30 -30
- package/schematics/ng-generate/sidemenu/files/app.component.ts.template +20 -20
- package/schematics/ng-generate/sidemenu/index.d.ts +8 -8
- package/schematics/ng-generate/sidemenu/index.js +51 -51
- package/schematics/ng-generate/sidemenu/index.spec.d.ts +1 -1
- package/schematics/ng-generate/sidemenu/index.spec.js +62 -62
- package/schematics/ng-generate/sidemenu/schema.d.ts +13 -13
- package/schematics/ng-generate/sidemenu/schema.js +2 -2
- package/schematics/ng-generate/sidemenu/schema.json +32 -32
- package/schematics/ng-update/v2/changes.d.ts +19 -19
- package/schematics/ng-update/v2/changes.js +58 -58
- package/schematics/ng-update/v2/index.d.ts +1 -1
- package/schematics/ng-update/v2/index.js +145 -145
- package/schematics/ng-update/v3/changes.d.ts +4 -4
- package/schematics/ng-update/v3/changes.js +20 -20
- package/schematics/ng-update/v3/index.d.ts +1 -1
- package/schematics/ng-update/v3/index.js +66 -66
- package/schematics/ng-update/v4/changes.d.ts +4 -4
- package/schematics/ng-update/v4/changes.js +20 -20
- package/schematics/ng-update/v4/index.d.ts +1 -1
- package/schematics/ng-update/v4/index.js +65 -65
- package/schematics/ng-update/v5/changes.d.ts +4 -4
- package/schematics/ng-update/v5/changes.js +25 -25
- package/schematics/ng-update/v5/index.d.ts +1 -1
- package/schematics/ng-update/v5/index.js +65 -65
- package/po-ui-ng-components-5.22.4.tgz +0 -0
|
@@ -1,581 +1,581 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { EventEmitter, Input, Output, Directive } from '@angular/core';
|
|
3
|
-
import { convertToBoolean, isEquals, isIE, isMobile } from '../../../utils/util';
|
|
4
|
-
import { requiredFailed } from '../validators';
|
|
5
|
-
import { PoUploadFile } from './po-upload-file';
|
|
6
|
-
import { PoUploadService } from './po-upload.service';
|
|
7
|
-
import { PoUploadStatus } from './po-upload-status.enum';
|
|
8
|
-
import { InputBoolean } from '../../../decorators';
|
|
9
|
-
import { PoLanguageService } from '../../../services/po-language/po-language.service';
|
|
10
|
-
import { poLocaleDefault } from '../../../services/po-language/po-language.constant';
|
|
11
|
-
export const poUploadLiteralsDefault = {
|
|
12
|
-
en: {
|
|
13
|
-
files: 'files',
|
|
14
|
-
folders: 'folders',
|
|
15
|
-
selectFile: 'Select file',
|
|
16
|
-
selectFiles: 'Select files',
|
|
17
|
-
selectFolder: 'Select folder',
|
|
18
|
-
startSending: 'Start sending',
|
|
19
|
-
dragFilesHere: 'Drag files here',
|
|
20
|
-
dragFoldersHere: 'Drag folders here',
|
|
21
|
-
selectFilesOnComputer: 'or select files on your computer',
|
|
22
|
-
selectFolderOnComputer: 'or select folder on your computer',
|
|
23
|
-
dropFilesHere: 'Drop files here',
|
|
24
|
-
dropFoldersHere: 'Drop folders here',
|
|
25
|
-
invalidDropArea: '{0} were not dropped in the correct area',
|
|
26
|
-
invalidFileType: 'Failed to load {0} file(s) as it is not the allowed file type.',
|
|
27
|
-
invalidAmount: 'Failed to load {0} file(s), as it exceeds the limit amount of files.',
|
|
28
|
-
invalidFormat: 'Failed to load {0} file(s), as it does not match the format(s): {1}.',
|
|
29
|
-
invalidSize: 'Failed to load {0} files(s), as it is not the allowed size: from {1} to {2}.',
|
|
30
|
-
numberOfFilesAllowed: '{0} file(s) allowed',
|
|
31
|
-
allowedFormats: 'Accepted file formats: {0}.',
|
|
32
|
-
allowedFileSizeRange: 'Size limit per file: from {0} to {1}',
|
|
33
|
-
maxFileSizeAllowed: 'Size limit per file: {0} maximum',
|
|
34
|
-
minFileSizeAllowed: 'Size limit per file: {0} minimum',
|
|
35
|
-
errorOccurred: 'An error has occurred',
|
|
36
|
-
sentWithSuccess: 'Sent with success'
|
|
37
|
-
},
|
|
38
|
-
es: {
|
|
39
|
-
files: 'archivos',
|
|
40
|
-
folders: 'carpetas',
|
|
41
|
-
selectFile: 'Seleccionar archivo',
|
|
42
|
-
selectFiles: 'Seleccionar archivos',
|
|
43
|
-
selectFolder: 'Seleccionar carpeta',
|
|
44
|
-
startSending: 'Iniciar carga',
|
|
45
|
-
dragFilesHere: 'Arrastra los archivos aquí',
|
|
46
|
-
dragFoldersHere: 'Arrastra las carpetas aquí',
|
|
47
|
-
selectFilesOnComputer: 'o selecciona los archivos en tu computadora',
|
|
48
|
-
selectFolderOnComputer: 'o selecciona la carpeta en tu computadora',
|
|
49
|
-
dropFilesHere: 'Deja los archivos aquí',
|
|
50
|
-
dropFoldersHere: 'Deja las carpetas aquí',
|
|
51
|
-
invalidDropArea: 'Los {0} no se insertaron en la ubicación correcta',
|
|
52
|
-
invalidFileType: 'Error al cargar {0} archivo (s) ya que no es el tipo de archivo permitido',
|
|
53
|
-
invalidAmount: 'Error al cargar {0} archivo (s) ya que excede la cantidad limite de archivos.',
|
|
54
|
-
invalidFormat: 'Error al cargar {0} archivo (s) ya que no coincide con el formato (s): {1}.',
|
|
55
|
-
invalidSize: 'Error al cargar {0} archivo (s) ya que no cumple con el tamaño permitido: desde {1} hasta {2}.',
|
|
56
|
-
numberOfFilesAllowed: '{0} archivo(s) permitido(s)',
|
|
57
|
-
allowedFormats: 'Formatos aceptados: {0}.',
|
|
58
|
-
allowedFileSizeRange: 'Limite de tamaño de archivo: desde {0} hasta {1}',
|
|
59
|
-
maxFileSizeAllowed: 'Limite de tamaño de archivo: hasta {0}',
|
|
60
|
-
minFileSizeAllowed: 'Limite de tamaño de archivo: minimo {0}',
|
|
61
|
-
errorOccurred: 'Ocurrio un error',
|
|
62
|
-
sentWithSuccess: 'Enviado con éxito'
|
|
63
|
-
},
|
|
64
|
-
pt: {
|
|
65
|
-
files: 'arquivos',
|
|
66
|
-
folders: 'diretórios',
|
|
67
|
-
selectFile: 'Selecionar arquivo',
|
|
68
|
-
selectFiles: 'Selecionar arquivos',
|
|
69
|
-
selectFolder: 'Selecionar pasta',
|
|
70
|
-
startSending: 'Iniciar envio',
|
|
71
|
-
dragFilesHere: 'Arraste os arquivos aqui',
|
|
72
|
-
dragFoldersHere: 'Arraste as pastas aqui',
|
|
73
|
-
selectFilesOnComputer: 'ou selecione os arquivos no computador',
|
|
74
|
-
selectFolderOnComputer: 'ou selecione a pasta no computador',
|
|
75
|
-
dropFilesHere: 'Solte os arquivos aqui',
|
|
76
|
-
dropFoldersHere: 'Solte as pastas aqui',
|
|
77
|
-
invalidDropArea: 'Os {0} não foram inseridos no local correto',
|
|
78
|
-
invalidFileType: 'Falha ao carregar {0} arquivo (s), pois não é o tipo de arquivo permitido',
|
|
79
|
-
invalidAmount: 'Falha ao carregar {0} arquivo(s), pois excede(m) a quantidade limite de arquivos.',
|
|
80
|
-
invalidFormat: 'Falha ao carregar {0} arquivo(s), pois não corresponde(m) ao(s) formato(s): {1}.',
|
|
81
|
-
invalidSize: 'Falha ao carregar {0} arquivo(s), pois não atende ao tamanho permitido: {1} até {2}.',
|
|
82
|
-
numberOfFilesAllowed: 'Quantidade máxima: {0} arquivo(s)',
|
|
83
|
-
allowedFormats: 'Formatos adotados: {0}.',
|
|
84
|
-
allowedFileSizeRange: 'Limite de tamanho por arquivo: de {0} até {1}',
|
|
85
|
-
maxFileSizeAllowed: 'Limite de tamanho por arquivo: até {0}',
|
|
86
|
-
minFileSizeAllowed: 'Limite de tamanho por arquivo: no mínimo {0}',
|
|
87
|
-
errorOccurred: 'Ocorreu um erro',
|
|
88
|
-
sentWithSuccess: 'Enviado com sucesso'
|
|
89
|
-
},
|
|
90
|
-
ru: {
|
|
91
|
-
files: 'файлы',
|
|
92
|
-
folders: 'папки с файлами',
|
|
93
|
-
selectFile: 'Выберите файл',
|
|
94
|
-
selectFiles: 'Выберите файлы',
|
|
95
|
-
selectFolder: 'Выберите папку с файлами',
|
|
96
|
-
startSending: 'Начать загрузку',
|
|
97
|
-
dragFilesHere: 'Перетащите файлы сюда',
|
|
98
|
-
dragFoldersHere: 'Перетащите сюда папки',
|
|
99
|
-
selectFilesOnComputer: 'или выберите файлы на компьютере',
|
|
100
|
-
selectFolderOnComputer: 'или выберите папку на вашем компьютере',
|
|
101
|
-
dropFilesHere: 'Оставьте файлы здесь',
|
|
102
|
-
dropFoldersHere: 'Перетащите сюда папки',
|
|
103
|
-
invalidDropArea: '{0} не были вставлены в правильном месте.',
|
|
104
|
-
invalidFileType: 'Не удалось загрузить файлы {0}, так как это неверный тип файла',
|
|
105
|
-
invalidAmount: 'Não foi possível carregar os arquivos {0} porque eles excederam o limite de arquivos.',
|
|
106
|
-
invalidFormat: 'Не удалось загрузить файлы {0}, так как они не соответствуют формату (ам): {1}.',
|
|
107
|
-
invalidSize: 'Не удалось загрузить файлы {0}, поскольку они не соответствуют разрешенному размеру: от {1} до {2}.',
|
|
108
|
-
numberOfFilesAllowed: 'Максимальное количество: {0} файлов',
|
|
109
|
-
allowedFormats: 'Форматы приняты: {0}.',
|
|
110
|
-
allowedFileSizeRange: 'Ограничение размера файла: от {0} до {1}',
|
|
111
|
-
maxFileSizeAllowed: 'Ограничение размера файла: до {0}',
|
|
112
|
-
minFileSizeAllowed: 'Ограничение размера файла: не менее {0}',
|
|
113
|
-
errorOccurred: 'Произошла ошибка.',
|
|
114
|
-
sentWithSuccess: 'Успешно отправлено'
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
const poUploadFormFieldDefault = 'files';
|
|
118
|
-
const poUploadMaxFileSize = 31457280; // 30MB
|
|
119
|
-
const poUploadMinFileSize = 0;
|
|
120
|
-
/**
|
|
121
|
-
* @description
|
|
122
|
-
*
|
|
123
|
-
* O componente `po-upload` permite que o usuário envie arquivo(s) ao servidor e acompanhe o progresso.
|
|
124
|
-
* Este componente também possibilita algumas configurações como:
|
|
125
|
-
* – Envio de diretórios, onde ele acessa o diretório selecionado assim como seus sub-diretórios;
|
|
126
|
-
* - Múltipla seleção, onde o usuário pode enviar mais de um arquivo ao servidor.
|
|
127
|
-
* - Auto envio, onde o arquivo é enviado imediatamente após a seleção do usuário, não necessitando que o usuário
|
|
128
|
-
* clique em enviar.
|
|
129
|
-
* - Restrições de formatos de arquivo e tamanho.
|
|
130
|
-
* - Função de sucesso que será disparada quando os arquivos forem enviados com sucesso.
|
|
131
|
-
* - Função de erro que será disparada quando houver erro no envio dos arquivos.
|
|
132
|
-
* - Permite habilitar uma área onde os arquivos podem ser arrastados.
|
|
133
|
-
*/
|
|
134
|
-
export class PoUploadBaseComponent {
|
|
135
|
-
constructor(uploadService, languageService) {
|
|
136
|
-
this.uploadService = uploadService;
|
|
137
|
-
/**
|
|
138
|
-
* @optional
|
|
139
|
-
*
|
|
140
|
-
* @description
|
|
141
|
-
*
|
|
142
|
-
* Aplica foco no elemento ao ser iniciado.
|
|
143
|
-
*
|
|
144
|
-
* > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.
|
|
145
|
-
*
|
|
146
|
-
* @default `false`
|
|
147
|
-
*/
|
|
148
|
-
this.autoFocus = false;
|
|
149
|
-
/** Define o valor do atributo `name` do componente. */
|
|
150
|
-
this.name = 'file';
|
|
151
|
-
/**
|
|
152
|
-
* @optional
|
|
153
|
-
*
|
|
154
|
-
* @description
|
|
155
|
-
*
|
|
156
|
-
* Define se o envio do arquivo será automático ao selecionar o mesmo.
|
|
157
|
-
*
|
|
158
|
-
* @default `false`
|
|
159
|
-
*/
|
|
160
|
-
this.autoUpload = false;
|
|
161
|
-
/**
|
|
162
|
-
* @optional
|
|
163
|
-
*
|
|
164
|
-
* @description
|
|
165
|
-
*
|
|
166
|
-
* Função que será executada no momento de realizar o envio do arquivo,
|
|
167
|
-
* onde será possível adicionar informações ao parâmetro que será enviado na requisição.
|
|
168
|
-
* É passado por parâmetro um objeto com o arquivo e a propiedade data nesta propriedade pode ser informado algum dado,
|
|
169
|
-
* que será enviado em conjunto com o arquivo na requisição, por exemplo:
|
|
170
|
-
*
|
|
171
|
-
* ```
|
|
172
|
-
* event.data = {id: 'id do usuario'};
|
|
173
|
-
* ```
|
|
174
|
-
*/
|
|
175
|
-
this.onUpload = new EventEmitter();
|
|
176
|
-
/**
|
|
177
|
-
* @optional
|
|
178
|
-
*
|
|
179
|
-
* @description
|
|
180
|
-
*
|
|
181
|
-
* Evento será disparado quando ocorrer algum erro no envio do arquivo.
|
|
182
|
-
* > Por parâmetro será passado o objeto do retorno que é do tipo `HttpErrorResponse`.
|
|
183
|
-
*/
|
|
184
|
-
this.onError = new EventEmitter();
|
|
185
|
-
/**
|
|
186
|
-
* @optional
|
|
187
|
-
*
|
|
188
|
-
* @description
|
|
189
|
-
*
|
|
190
|
-
* Evento será disparado quando o envio do arquivo for realizado com sucesso.
|
|
191
|
-
* > Por parâmetro será passado o objeto do retorno que é do tipo `HttpResponse`.
|
|
192
|
-
*/
|
|
193
|
-
this.onSuccess = new EventEmitter();
|
|
194
|
-
/**
|
|
195
|
-
* @optional
|
|
196
|
-
*
|
|
197
|
-
* @description
|
|
198
|
-
*
|
|
199
|
-
* Função para atualizar o ngModel do componente, necessário quando não for utilizado dentro da *tag* `form`.
|
|
200
|
-
*
|
|
201
|
-
* Na versão 12.2.0 do Angular a verificação `strictTemplates` vem true como default. Portanto, para utilizar
|
|
202
|
-
* two-way binding no componente deve se utilizar da seguinte forma:
|
|
203
|
-
*
|
|
204
|
-
* ```
|
|
205
|
-
* <po-upload ... [ngModel]="UploadModel" (ngModelChange)="uploadModel = $event"> </po-upload>
|
|
206
|
-
* ```
|
|
207
|
-
*
|
|
208
|
-
*/
|
|
209
|
-
this.ngModelChange = new EventEmitter();
|
|
210
|
-
this.extensionNotAllowed = 0;
|
|
211
|
-
this.quantityNotAllowed = 0;
|
|
212
|
-
this.sizeNotAllowed = 0;
|
|
213
|
-
this.onModelTouched = null;
|
|
214
|
-
this._dragDrop = false;
|
|
215
|
-
this.language = languageService.getShortLanguage();
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* @optional
|
|
219
|
-
*
|
|
220
|
-
* @description
|
|
221
|
-
*
|
|
222
|
-
* Permite a seleção de diretórios contendo um ou mais arquivos para envio.
|
|
223
|
-
*
|
|
224
|
-
* > A habilitação desta propriedade se restringe apenas à seleção de diretórios.
|
|
225
|
-
*
|
|
226
|
-
* > Definição não suportada pelo browser **Internet Explorer**, todavia será possível a seleção de arquivos padrão.
|
|
227
|
-
*
|
|
228
|
-
* @default `false`
|
|
229
|
-
*/
|
|
230
|
-
set directory(value) {
|
|
231
|
-
this._directory = convertToBoolean(value);
|
|
232
|
-
this.canHandleDirectory = this._directory && !isIE() && !isMobile();
|
|
233
|
-
this.setDirectoryAttribute(this.canHandleDirectory);
|
|
234
|
-
}
|
|
235
|
-
get directory() {
|
|
236
|
-
return this._directory;
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* @optional
|
|
240
|
-
*
|
|
241
|
-
* @description
|
|
242
|
-
*
|
|
243
|
-
* Exibe a área onde é possível arrastar e selecionar os arquivos. Quando estiver definida, omite o botão para seleção de arquivos
|
|
244
|
-
* automaticamente.
|
|
245
|
-
*
|
|
246
|
-
* > Recomendamos utilizar apenas um `po-upload` com esta funcionalidade por tela.
|
|
247
|
-
*
|
|
248
|
-
* @default `false`
|
|
249
|
-
*/
|
|
250
|
-
set dragDrop(value) {
|
|
251
|
-
this._dragDrop = convertToBoolean(value);
|
|
252
|
-
}
|
|
253
|
-
get dragDrop() {
|
|
254
|
-
return this._dragDrop;
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* @optional
|
|
258
|
-
*
|
|
259
|
-
* @description
|
|
260
|
-
*
|
|
261
|
-
* Oculta visualmente as informações de restrições para o upload.
|
|
262
|
-
*
|
|
263
|
-
* @default `false`
|
|
264
|
-
*/
|
|
265
|
-
set hideRestrictionsInfo(value) {
|
|
266
|
-
this._hideRestrictionsInfo = convertToBoolean(value);
|
|
267
|
-
}
|
|
268
|
-
get hideRestrictionsInfo() {
|
|
269
|
-
return this._hideRestrictionsInfo;
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* @optional
|
|
273
|
-
*
|
|
274
|
-
* @description
|
|
275
|
-
*
|
|
276
|
-
* Omite o botão de seleção de arquivos.
|
|
277
|
-
*
|
|
278
|
-
* > Caso o valor definido seja `true`, caberá ao desenvolvedor a responsabilidade
|
|
279
|
-
* pela chamada do método `selectFiles()` para seleção de arquivos.
|
|
280
|
-
*
|
|
281
|
-
* @default `false`
|
|
282
|
-
*/
|
|
283
|
-
set hideSelectButton(value) {
|
|
284
|
-
this._hideSelectButton = convertToBoolean(value);
|
|
285
|
-
}
|
|
286
|
-
get hideSelectButton() {
|
|
287
|
-
return this._hideSelectButton;
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* @optional
|
|
291
|
-
*
|
|
292
|
-
* @description
|
|
293
|
-
*
|
|
294
|
-
* Omite o botão de envio de arquivos.
|
|
295
|
-
*
|
|
296
|
-
* > Caso o valor definido seja `true`, caberá ao desenvolvedor a responsabilidade
|
|
297
|
-
* pela chamada do método `sendFiles()` para envio do(s) arquivo(s) selecionado(s).
|
|
298
|
-
*
|
|
299
|
-
* @default `false`
|
|
300
|
-
*/
|
|
301
|
-
set hideSendButton(value) {
|
|
302
|
-
this._hideSendButton = convertToBoolean(value);
|
|
303
|
-
}
|
|
304
|
-
get hideSendButton() {
|
|
305
|
-
return this._hideSendButton;
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* @optional
|
|
309
|
-
*
|
|
310
|
-
* @description
|
|
311
|
-
*
|
|
312
|
-
* Objeto com as literais usadas no `po-upload`.
|
|
313
|
-
*
|
|
314
|
-
* Existem duas maneiras de customizar o componente:
|
|
315
|
-
*
|
|
316
|
-
* - passando um objeto implementando a interface `PoUploadLiterals` com todas as literais disponíveis;
|
|
317
|
-
* - passando apenas as literais que deseja customizar:
|
|
318
|
-
* ```
|
|
319
|
-
* const customLiterals: PoUploadLiterals = {
|
|
320
|
-
* folders: 'Pastas',
|
|
321
|
-
* selectFile: 'Buscar arquivo',
|
|
322
|
-
* startSending: 'Enviar'
|
|
323
|
-
* };
|
|
324
|
-
* ```
|
|
325
|
-
*
|
|
326
|
-
* E para carregar as literais customizadas, basta apenas passar o objeto para o componente:
|
|
327
|
-
*
|
|
328
|
-
* ```
|
|
329
|
-
* <po-upload
|
|
330
|
-
* [p-literals]="customLiterals">
|
|
331
|
-
* </po-upload>
|
|
332
|
-
* ```
|
|
333
|
-
*
|
|
334
|
-
* > O objeto padrão de literais será traduzido de acordo com o idioma do *browser* (pt, en, es, ru).
|
|
335
|
-
*/
|
|
336
|
-
set literals(value) {
|
|
337
|
-
if (value instanceof Object && !(value instanceof Array)) {
|
|
338
|
-
this._literals = Object.assign(Object.assign(Object.assign({}, poUploadLiteralsDefault[poLocaleDefault]), poUploadLiteralsDefault[this.language]), value);
|
|
339
|
-
}
|
|
340
|
-
else {
|
|
341
|
-
this._literals = poUploadLiteralsDefault[this.language];
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
get literals() {
|
|
345
|
-
return this._literals || poUploadLiteralsDefault[this.language];
|
|
346
|
-
}
|
|
347
|
-
/**
|
|
348
|
-
* @optional
|
|
349
|
-
*
|
|
350
|
-
* @description
|
|
351
|
-
*
|
|
352
|
-
* Objeto que segue a definição da interface `PoUploadFileRestrictions`,
|
|
353
|
-
* que possibilita definir tamanho máximo/mínimo e extensão dos arquivos permitidos.
|
|
354
|
-
*/
|
|
355
|
-
set fileRestrictions(restrictions) {
|
|
356
|
-
this._fileRestrictions = this.initRestrictions(restrictions);
|
|
357
|
-
this.setAllowedExtensions(restrictions);
|
|
358
|
-
}
|
|
359
|
-
get fileRestrictions() {
|
|
360
|
-
return this._fileRestrictions;
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* @optional
|
|
364
|
-
*
|
|
365
|
-
* @description
|
|
366
|
-
*
|
|
367
|
-
* Nome do campo de formulário que será enviado para o serviço informado na propriedade `p-url`.
|
|
368
|
-
*
|
|
369
|
-
* @default `files`
|
|
370
|
-
*/
|
|
371
|
-
set formField(value) {
|
|
372
|
-
this._formField = value && typeof value === 'string' ? value : poUploadFormFieldDefault;
|
|
373
|
-
this.getUploadService().formField = this.formField;
|
|
374
|
-
}
|
|
375
|
-
get formField() {
|
|
376
|
-
return this._formField;
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* @optional
|
|
380
|
-
*
|
|
381
|
-
* @description
|
|
382
|
-
*
|
|
383
|
-
* Indica que o campo será desabilitado.
|
|
384
|
-
*/
|
|
385
|
-
set disabled(value) {
|
|
386
|
-
this._disabled = convertToBoolean(value);
|
|
387
|
-
this.validateModel(this.currentFiles);
|
|
388
|
-
}
|
|
389
|
-
get disabled() {
|
|
390
|
-
return this._disabled;
|
|
391
|
-
}
|
|
392
|
-
/**
|
|
393
|
-
* @optional
|
|
394
|
-
*
|
|
395
|
-
* @description
|
|
396
|
-
*
|
|
397
|
-
* Define se pode selecionar mais de um arquivo.
|
|
398
|
-
*
|
|
399
|
-
* > Se utilizada a `p-directory`, habilita-se automaticamente esta propriedade.
|
|
400
|
-
*/
|
|
401
|
-
set isMultiple(value) {
|
|
402
|
-
this._isMultiple = convertToBoolean(value);
|
|
403
|
-
}
|
|
404
|
-
get isMultiple() {
|
|
405
|
-
return this.canHandleDirectory ? true : this._isMultiple;
|
|
406
|
-
}
|
|
407
|
-
/**
|
|
408
|
-
* @optional
|
|
409
|
-
*
|
|
410
|
-
* @description
|
|
411
|
-
*
|
|
412
|
-
* Indica que o campo será obrigatório.
|
|
413
|
-
*
|
|
414
|
-
* @default `false`
|
|
415
|
-
*/
|
|
416
|
-
set required(required) {
|
|
417
|
-
this._required = convertToBoolean(required);
|
|
418
|
-
this.validateModel(this.currentFiles);
|
|
419
|
-
}
|
|
420
|
-
get required() {
|
|
421
|
-
return this._required;
|
|
422
|
-
}
|
|
423
|
-
// Função implementada do ControlValueAccessor
|
|
424
|
-
// Usada para interceptar os estados de habilitado via forms api
|
|
425
|
-
setDisabledState(isDisabled) {
|
|
426
|
-
this.disabled = isDisabled;
|
|
427
|
-
}
|
|
428
|
-
registerOnChange(fn) {
|
|
429
|
-
this.onModelChange = fn;
|
|
430
|
-
}
|
|
431
|
-
registerOnTouched(fn) {
|
|
432
|
-
this.onModelTouched = fn;
|
|
433
|
-
}
|
|
434
|
-
registerOnValidatorChange(fn) {
|
|
435
|
-
this.validatorChange = fn;
|
|
436
|
-
}
|
|
437
|
-
validate(abstractControl) {
|
|
438
|
-
if (requiredFailed(this.required, this.disabled, abstractControl.value)) {
|
|
439
|
-
return {
|
|
440
|
-
required: {
|
|
441
|
-
valid: false
|
|
442
|
-
}
|
|
443
|
-
};
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
writeValue(model) {
|
|
447
|
-
if (model) {
|
|
448
|
-
if (!isEquals(this.currentFiles, model)) {
|
|
449
|
-
this.currentFiles = this.parseFiles(model);
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
else {
|
|
453
|
-
this.currentFiles = undefined;
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
isExceededFileLimit(currentFilesLength) {
|
|
457
|
-
return (this.isMultiple &&
|
|
458
|
-
this.fileRestrictions &&
|
|
459
|
-
this.fileRestrictions.maxFiles > 0 &&
|
|
460
|
-
this.fileRestrictions.maxFiles <= currentFilesLength);
|
|
461
|
-
}
|
|
462
|
-
// Faz o parse dos arquivos selecionados para arquivos do formato PoUploadFile e atualiza os arquivos correntes.
|
|
463
|
-
parseFiles(files) {
|
|
464
|
-
let poUploadFiles = this.currentFiles || [];
|
|
465
|
-
const filesLength = files.length;
|
|
466
|
-
for (let i = 0; i < filesLength; i++) {
|
|
467
|
-
if (this.isExceededFileLimit(poUploadFiles.length)) {
|
|
468
|
-
this.quantityNotAllowed = filesLength - this.fileRestrictions.maxFiles;
|
|
469
|
-
break;
|
|
470
|
-
}
|
|
471
|
-
const file = new PoUploadFile(files[i]);
|
|
472
|
-
if (this.checkRestrictions(file)) {
|
|
473
|
-
poUploadFiles = this.insertFileInFiles(file, poUploadFiles);
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
this.sendFeedback();
|
|
477
|
-
return poUploadFiles;
|
|
478
|
-
}
|
|
479
|
-
validateModel(model) {
|
|
480
|
-
if (this.validatorChange) {
|
|
481
|
-
this.validatorChange(model);
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
// Verifica se o arquivo está de acordo com as restrições.
|
|
485
|
-
checkRestrictions(file) {
|
|
486
|
-
const restrictions = this.fileRestrictions;
|
|
487
|
-
if (restrictions) {
|
|
488
|
-
const allowedExtensions = restrictions.allowedExtensions;
|
|
489
|
-
const minFileSize = restrictions.minFileSize;
|
|
490
|
-
const maxFileSize = restrictions.maxFileSize;
|
|
491
|
-
const isAccept = allowedExtensions ? this.isAllowedExtension(file.extension, allowedExtensions) : true;
|
|
492
|
-
const isAcceptSize = file.size >= minFileSize && file.size <= maxFileSize;
|
|
493
|
-
if (!isAcceptSize) {
|
|
494
|
-
this.sizeNotAllowed = this.sizeNotAllowed + 1;
|
|
495
|
-
}
|
|
496
|
-
return isAccept && isAcceptSize;
|
|
497
|
-
}
|
|
498
|
-
return true;
|
|
499
|
-
}
|
|
500
|
-
existsFileSameName(file, files) {
|
|
501
|
-
return files.some(currentFile => file.name === currentFile.name);
|
|
502
|
-
}
|
|
503
|
-
getUploadService() {
|
|
504
|
-
return this.uploadService;
|
|
505
|
-
}
|
|
506
|
-
insertFileInFiles(newFile, files) {
|
|
507
|
-
if (this.existsFileSameName(newFile, files)) {
|
|
508
|
-
return this.updateExistsFileInFiles(newFile, files);
|
|
509
|
-
}
|
|
510
|
-
if (this.isMultiple) {
|
|
511
|
-
files.push(newFile);
|
|
512
|
-
}
|
|
513
|
-
else {
|
|
514
|
-
files.splice(0, files.length, newFile);
|
|
515
|
-
}
|
|
516
|
-
return files;
|
|
517
|
-
}
|
|
518
|
-
isAllowedExtension(extension, allowedExtensions = []) {
|
|
519
|
-
const isAllowed = allowedExtensions.some(ext => ext.toLowerCase() === extension);
|
|
520
|
-
if (!isAllowed) {
|
|
521
|
-
this.extensionNotAllowed = this.extensionNotAllowed + 1;
|
|
522
|
-
}
|
|
523
|
-
return isAllowed;
|
|
524
|
-
}
|
|
525
|
-
setAllowedExtensions(restrictions = {}) {
|
|
526
|
-
const _allowedExtensions = restrictions.allowedExtensions || [];
|
|
527
|
-
this.allowedExtensions = _allowedExtensions.join(',');
|
|
528
|
-
}
|
|
529
|
-
initRestrictions(restrictions) {
|
|
530
|
-
if (!restrictions) {
|
|
531
|
-
return;
|
|
532
|
-
}
|
|
533
|
-
const minFileSize = restrictions.minFileSize || poUploadMinFileSize;
|
|
534
|
-
const maxFileSize = restrictions.maxFileSize || poUploadMaxFileSize;
|
|
535
|
-
return Object.assign(Object.assign({}, restrictions), { maxFileSize: maxFileSize, minFileSize: minFileSize });
|
|
536
|
-
}
|
|
537
|
-
updateExistsFileInFiles(newFile, files) {
|
|
538
|
-
const fileIndex = files.findIndex(currentFile => newFile.name === currentFile.name && currentFile.status !== PoUploadStatus.Uploaded);
|
|
539
|
-
if (fileIndex !== -1) {
|
|
540
|
-
files.splice(fileIndex, 1, newFile);
|
|
541
|
-
}
|
|
542
|
-
return files;
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
PoUploadBaseComponent.decorators = [
|
|
546
|
-
{ type: Directive }
|
|
547
|
-
];
|
|
548
|
-
PoUploadBaseComponent.ctorParameters = () => [
|
|
549
|
-
{ type: PoUploadService },
|
|
550
|
-
{ type: PoLanguageService }
|
|
551
|
-
];
|
|
552
|
-
PoUploadBaseComponent.propDecorators = {
|
|
553
|
-
autoFocus: [{ type: Input, args: ['p-auto-focus',] }],
|
|
554
|
-
dragDropHeight: [{ type: Input, args: ['p-drag-drop-height',] }],
|
|
555
|
-
label: [{ type: Input, args: ['p-label',] }],
|
|
556
|
-
help: [{ type: Input, args: ['p-help',] }],
|
|
557
|
-
url: [{ type: Input, args: ['p-url',] }],
|
|
558
|
-
name: [{ type: Input, args: ['name',] }],
|
|
559
|
-
autoUpload: [{ type: Input, args: ['p-auto-upload',] }],
|
|
560
|
-
optional: [{ type: Input, args: ['p-optional',] }],
|
|
561
|
-
headers: [{ type: Input, args: ['p-headers',] }],
|
|
562
|
-
onUpload: [{ type: Output, args: ['p-upload',] }],
|
|
563
|
-
onError: [{ type: Output, args: ['p-error',] }],
|
|
564
|
-
onSuccess: [{ type: Output, args: ['p-success',] }],
|
|
565
|
-
ngModelChange: [{ type: Output, args: ['ngModelChange',] }],
|
|
566
|
-
directory: [{ type: Input, args: ['p-directory',] }],
|
|
567
|
-
dragDrop: [{ type: Input, args: ['p-drag-drop',] }],
|
|
568
|
-
hideRestrictionsInfo: [{ type: Input, args: ['p-hide-restrictions-info',] }],
|
|
569
|
-
hideSelectButton: [{ type: Input, args: ['p-hide-select-button',] }],
|
|
570
|
-
hideSendButton: [{ type: Input, args: ['p-hide-send-button',] }],
|
|
571
|
-
literals: [{ type: Input, args: ['p-literals',] }],
|
|
572
|
-
fileRestrictions: [{ type: Input, args: ['p-restrictions',] }],
|
|
573
|
-
formField: [{ type: Input, args: ['p-form-field',] }],
|
|
574
|
-
disabled: [{ type: Input, args: ['p-disabled',] }],
|
|
575
|
-
isMultiple: [{ type: Input, args: ['p-multiple',] }],
|
|
576
|
-
required: [{ type: Input, args: ['p-required',] }]
|
|
577
|
-
};
|
|
578
|
-
__decorate([
|
|
579
|
-
InputBoolean()
|
|
580
|
-
], PoUploadBaseComponent.prototype, "autoFocus", void 0);
|
|
581
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdXBsb2FkLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLXVwbG9hZC9wby11cGxvYWQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXJGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ3JDLEVBQUUsRUFBb0I7UUFDcEIsS0FBSyxFQUFFLE9BQU87UUFDZCxPQUFPLEVBQUUsU0FBUztRQUNsQixVQUFVLEVBQUUsYUFBYTtRQUN6QixXQUFXLEVBQUUsY0FBYztRQUMzQixZQUFZLEVBQUUsZUFBZTtRQUM3QixZQUFZLEVBQUUsZUFBZTtRQUM3QixhQUFhLEVBQUUsaUJBQWlCO1FBQ2hDLGVBQWUsRUFBRSxtQkFBbUI7UUFDcEMscUJBQXFCLEVBQUUsa0NBQWtDO1FBQ3pE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LFFBQVEsQ0FDbkcsQ0FBQztRQUVGLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3BCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7O1lBNWhCRixTQUFTOzs7WUFwSUQsZUFBZTtZQUdmLGlCQUFpQjs7O3dCQThJdkIsS0FBSyxTQUFDLGNBQWM7NkJBYXBCLEtBQUssU0FBQyxvQkFBb0I7b0JBRzFCLEtBQUssU0FBQyxTQUFTO21CQUdmLEtBQUssU0FBQyxRQUFRO2tCQUdkLEtBQUssU0FBQyxPQUFPO21CQUdiLEtBQUssU0FBQyxNQUFNO3lCQVdaLEtBQUssU0FBQyxlQUFlO3VCQWVyQixLQUFLLFNBQUMsWUFBWTtzQkFHbEIsS0FBSyxTQUFDLFdBQVc7dUJBZ0JqQixNQUFNLFNBQUMsVUFBVTtzQkFVakIsTUFBTSxTQUFDLFNBQVM7d0JBVWhCLE1BQU0sU0FBQyxXQUFXOzRCQWlCbEIsTUFBTSxTQUFDLGVBQWU7d0JBd0N0QixLQUFLLFNBQUMsYUFBYTt1QkF1Qm5CLEtBQUssU0FBQyxhQUFhO21DQWlCbkIsS0FBSyxTQUFDLDBCQUEwQjsrQkFvQmhDLEtBQUssU0FBQyxzQkFBc0I7NkJBbUI1QixLQUFLLFNBQUMsb0JBQW9CO3VCQW9DMUIsS0FBSyxTQUFDLFlBQVk7K0JBdUJsQixLQUFLLFNBQUMsZ0JBQWdCO3dCQW1CdEIsS0FBSyxTQUFDLGNBQWM7dUJBaUJwQixLQUFLLFNBQUMsWUFBWTt5QkFtQmxCLEtBQUssU0FBQyxZQUFZO3VCQWlCbEIsS0FBSyxTQUFDLFlBQVk7O0FBcldvQjtJQUFmLFlBQVksRUFBRTt3REFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBpc0VxdWFscywgaXNJRSwgaXNNb2JpbGUgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcclxuaW1wb3J0IHsgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcclxuXHJcbmltcG9ydCB7IFBvVXBsb2FkRmlsZSB9IGZyb20gJy4vcG8tdXBsb2FkLWZpbGUnO1xyXG5pbXBvcnQgeyBQb1VwbG9hZEZpbGVSZXN0cmljdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdXBsb2FkLWZpbGUtcmVzdHJpY3Rpb24uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUG9VcGxvYWRMaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby11cGxvYWQtbGl0ZXJhbHMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUG9VcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9wby11cGxvYWQuc2VydmljZSc7XHJcbmltcG9ydCB7IFBvVXBsb2FkU3RhdHVzIH0gZnJvbSAnLi9wby11cGxvYWQtc3RhdHVzLmVudW0nO1xyXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgcG9Mb2NhbGVEZWZhdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UuY29uc3RhbnQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHBvVXBsb2FkTGl0ZXJhbHNEZWZhdWx0ID0ge1xyXG4gIGVuOiA8UG9VcGxvYWRMaXRlcmFscz57XHJcbiAgICBmaWxlczogJ2ZpbGVzJyxcclxuICAgIGZvbGRlcnM6ICdmb2xkZXJzJyxcclxuICAgIHNlbGVjdEZpbGU6ICdTZWxlY3QgZmlsZScsXHJcbiAgICBzZWxlY3RGaWxlczogJ1NlbGVjdCBmaWxlcycsXHJcbiAgICBzZWxlY3RGb2xkZXI6ICdTZWxlY3QgZm9sZGVyJyxcclxuICAgIHN0YXJ0U2VuZGluZzogJ1N0YXJ0IHNlbmRpbmcnLFxyXG4gICAgZHJhZ0ZpbGVzSGVyZTogJ0RyYWcgZmlsZXMgaGVyZScsXHJcbiAgICBkcmFnRm9sZGVyc0hlcmU6ICdEcmFnIGZvbGRlcnMgaGVyZScsXHJcbiAgICBzZWxlY3RGaWxlc09uQ29tcHV0ZXI6ICdvciBzZWxlY3QgZmlsZXMgb24geW91ciBjb21wdXRlcicsXHJcbiAgICBzZWxlY3RGb2xkZXJPbkNvbXB1dGVyOiAnb3Igc2VsZWN0IGZvbGRlciBvbiB5b3VyIGNvbXB1dGVyJyxcclxuICAgIGRyb3BGaWxlc0hlcmU6ICdEcm9wIGZpbGVzIGhlcmUnLFxyXG4gICAgZHJvcEZvbGRlcnNIZXJlOiAnRHJvcCBmb2xkZXJzIGhlcmUnLFxyXG4gICAgaW52YWxpZERyb3BBcmVhOiAnezB9IHdlcmUgbm90IGRyb3BwZWQgaW4gdGhlIGNvcnJlY3QgYXJlYScsXHJcbiAgICBpbnZhbGlkRmlsZVR5cGU6ICdGYWlsZWQgdG8gbG9hZCB7MH0gZmlsZShzKSBhcyBpdCBpcyBub3QgdGhlIGFsbG93ZWQgZmlsZSB0eXBlLicsXHJcbiAgICBpbnZhbGlkQW1vdW50OiAnRmFpbGVkIHRvIGxvYWQgezB9IGZpbGUocyksIGFzIGl0IGV4Y2VlZHMgdGhlIGxpbWl0IGFtb3VudCBvZiBmaWxlcy4nLFxyXG4gICAgaW52YWxpZEZvcm1hdDogJ0ZhaWxlZCB0byBsb2FkIHswfSBmaWxlKHMpLCBhcyBpdCBkb2VzIG5vdCBtYXRjaCB0aGUgZm9ybWF0KHMpOiB7MX0uJyxcclxuICAgIGludmFsaWRTaXplOiAnRmFpbGVkIHRvIGxvYWQgezB9IGZpbGVzKHMpLCBhcyBpdCBpcyBub3QgdGhlIGFsbG93ZWQgc2l6ZTogZnJvbSB7MX0gdG8gezJ9LicsXHJcbiAgICBudW1iZXJPZkZpbGVzQWxsb3dlZDogJ3swfSBmaWxlKHMpIGFsbG93ZWQnLFxyXG4gICAgYWxsb3dlZEZvcm1hdHM6ICdBY2NlcHRlZCBmaWxlIGZvcm1hdHM6IHswfS4nLFxyXG4gICAgYWxsb3dlZEZpbGVTaXplUmFuZ2U6ICdTaXplIGxpbWl0IHBlciBmaWxlOiBmcm9tIHswfSB0byB7MX0nLFxyXG4gICAgbWF4RmlsZVNpemVBbGxvd2VkOiAnU2l6ZSBsaW1pdCBwZXIgZmlsZTogezB9IG1heGltdW0nLFxyXG4gICAgbWluRmlsZVNpemVBbGxvd2VkOiAnU2l6ZSBsaW1pdCBwZXIgZmlsZTogezB9IG1pbmltdW0nLFxyXG4gICAgZXJyb3JPY2N1cnJlZDogJ0FuIGVycm9yIGhhcyBvY2N1cnJlZCcsXHJcbiAgICBzZW50V2l0aFN1Y2Nlc3M6ICdTZW50IHdpdGggc3VjY2VzcydcclxuICB9LFxyXG4gIGVzOiA8UG9VcGxvYWRMaXRlcmFscz57XHJcbiAgICBmaWxlczogJ2FyY2hpdm9zJyxcclxuICAgIGZvbGRlcnM6ICdjYXJwZXRhcycsXHJcbiAgICBzZWxlY3RGaWxlOiAnU2VsZWNjaW9uYXIgYXJjaGl2bycsXHJcbiAgICBzZWxlY3RGaWxlczogJ1NlbGVjY2lvbmFyIGFyY2hpdm9zJyxcclxuICAgIHNlbGVjdEZvbGRlcjogJ1NlbGVjY2lvbmFyIGNhcnBldGEnLFxyXG4gICAgc3RhcnRTZW5kaW5nOiAnSW5pY2lhciBjYXJnYScsXHJcbiAgICBkcmFnRmlsZXNIZXJlOiAnQXJyYXN0cmEgbG9zIGFyY2hpdm9zIGFxdcOtJyxcclxuICAgIGRyYWdGb2xkZXJzSGVyZTogJ0FycmFzdHJhIGxhcyBjYXJwZXRhcyBhcXXDrScsXHJcbiAgICBzZWxlY3RGaWxlc09uQ29tcHV0ZXI6ICdvIHNlbGVjY2lvbmEgbG9zIGFyY2hpdm9zIGVuIHR1IGNvbXB1dGFkb3JhJyxcclxuICAgIHNlbGVjdEZvbGRlck9uQ29tcHV0ZXI6ICdvIHNlbGVjY2lvbmEgbGEgY2FycGV0YSBlbiB0dSBjb21wdXRhZG9yYScsXHJcbiAgICBkcm9wRmlsZXNIZXJlOiAnRGVqYSBsb3MgYXJjaGl2b3MgYXF1w60nLFxyXG4gICAgZHJvcEZvbGRlcnNIZXJlOiAnRGVqYSBsYXMgY2FycGV0YXMgYXF1w60nLFxyXG4gICAgaW52YWxpZERyb3BBcmVhOiAnTG9zIHswfSBubyBzZSBpbnNlcnRhcm9uIGVuIGxhIHViaWNhY2nDs24gY29ycmVjdGEnLFxyXG4gICAgaW52YWxpZEZpbGVUeXBlOiAnRXJyb3IgYWwgY2FyZ2FyIHswfSBhcmNoaXZvIChzKSB5YSBxdWUgbm8gZXMgZWwgdGlwbyBkZSBhcmNoaXZvIHBlcm1pdGlkbycsXHJcbiAgICBpbnZhbGlkQW1vdW50OiAnRXJyb3IgYWwgY2FyZ2FyIHswfSBhcmNoaXZvIChzKSB5YSBxdWUgZXhjZWRlIGxhIGNhbnRpZGFkIGxpbWl0ZSBkZSBhcmNoaXZvcy4nLFxyXG4gICAgaW52YWxpZEZvcm1hdDogJ0Vycm9yIGFsIGNhcmdhciB7MH0gYXJjaGl2byAocykgeWEgcXVlIG5vIGNvaW5jaWRlIGNvbiBlbCBmb3JtYXRvIChzKTogezF9LicsXHJcbiAgICBpbnZhbGlkU2l6ZTogJ0Vycm9yIGFsIGNhcmdhciB7MH0gYXJjaGl2byAocykgeWEgcXVlIG5vIGN1bXBsZSBjb24gZWwgdGFtYcOxbyBwZXJtaXRpZG86IGRlc2RlIHsxfSBoYXN0YSB7Mn0uJyxcclxuICAgIG51bWJlck9mRmlsZXNBbGxvd2VkOiAnezB9IGFyY2hpdm8ocykgcGVybWl0aWRvKHMpJyxcclxuICAgIGFsbG93ZWRGb3JtYXRzOiAnRm9ybWF0b3MgYWNlcHRhZG9zOiB7MH0uJyxcclxuICAgIGFsbG93ZWRGaWxlU2l6ZVJhbmdlOiAnTGltaXRlIGRlIHRhbWHDsW8gZGUgYXJjaGl2bzogZGVzZGUgezB9IGhhc3RhIHsxfScsXHJcbiAgICBtYXhGaWxlU2l6ZUFsbG93ZWQ6ICdMaW1pdGUgZGUgdGFtYcOxbyBkZSBhcmNoaXZvOiBoYXN0YSB7MH0nLFxyXG4gICAgbWluRmlsZVNpemVBbGxvd2VkOiAnTGltaXRlIGRlIHRhbWHDsW8gZGUgYXJjaGl2bzogbWluaW1vIHswfScsXHJcbiAgICBlcnJvck9jY3VycmVkOiAnT2N1cnJpbyB1biBlcnJvcicsXHJcbiAgICBzZW50V2l0aFN1Y2Nlc3M6ICdFbnZpYWRvIGNvbiDDqXhpdG8nXHJcbiAgfSxcclxuICBwdDogPFBvVXBsb2FkTGl0ZXJhbHM+e1xyXG4gICAgZmlsZXM6ICdhcnF1aXZvcycsXHJcbiAgICBmb2xkZXJzOiAnZGlyZXTDs3Jpb3MnLFxyXG4gICAgc2VsZWN0RmlsZTogJ1NlbGVjaW9uYXIgYXJxdWl2bycsXHJcbiAgICBzZWxlY3RGaWxlczogJ1NlbGVjaW9uYXIgYXJxdWl2b3MnLFxyXG4gICAgc2VsZWN0Rm9sZGVyOiAnU2VsZWNpb25hciBwYXN0YScsXHJcbiAgICBzdGFydFNlbmRpbmc6ICdJbmljaWFyIGVudmlvJyxcclxuICAgIGRyYWdGaWxlc0hlcmU6ICdBcnJhc3RlIG9zIGFycXVpdm9zIGFxdWknLFxyXG4gICAgZHJhZ0ZvbGRlcnNIZXJlOiAnQXJyYXN0ZSBhcyBwYXN0YXMgYXF1aScsXHJcbiAgICBzZWxlY3RGaWxlc09uQ29tcHV0ZXI6ICdvdSBzZWxlY2lvbmUgb3MgYXJxdWl2b3Mgbm8gY29tcHV0YWRvcicsXHJcbiAgICBzZWxlY3RGb2xkZXJPbkNvbXB1dGVyOiAnb3Ugc2VsZWNpb25lIGEgcGFzdGEgbm8gY29tcHV0YWRvcicsXHJcbiAgICBkcm9wRmlsZXNIZXJlOiAnU29sdGUgb3MgYXJxdWl2b3MgYXF1aScsXHJcbiAgICBkcm9wRm9sZGVyc0hlcmU6ICdTb2x0ZSBhcyBwYXN0YXMgYXF1aScsXHJcbiAgICBpbnZhbGlkRHJvcEFyZWE6ICdPcyB7MH0gbsOjbyBmb3JhbSBpbnNlcmlkb3Mgbm8gbG9jYWwgY29ycmV0bycsXHJcbiAgICBpbnZhbGlkRmlsZVR5cGU6ICdGYWxoYSBhbyBjYXJyZWdhciB7MH0gYXJxdWl2byAocyksIHBvaXMgbsOjbyDDqSBvIHRpcG8gZGUgYXJxdWl2byBwZXJtaXRpZG8nLFxyXG4gICAgaW52YWxpZEFtb3VudDogJ0ZhbGhhIGFvIGNhcnJlZ2FyIHswfSBhcnF1aXZvKHMpLCBwb2lzIGV4Y2VkZShtKSBhIHF1YW50aWRhZGUgbGltaXRlIGRlIGFycXVpdm9zLicsXHJcbiAgICBpbnZhbGlkRm9ybWF0OiAnRmFsaGEgYW8gY2FycmVnYXIgezB9IGFycXVpdm8ocyksIHBvaXMgbsOjbyBjb3JyZXNwb25kZShtKSBhbyhzKSBmb3JtYXRvKHMpOiB7MX0uJyxcclxuICAgIGludmFsaWRTaXplOiAnRmFsaGEgYW8gY2FycmVnYXIgezB9IGFycXVpdm8ocyksIHBvaXMgbsOjbyBhdGVuZGUgYW8gdGFtYW5obyBwZXJtaXRpZG86IHsxfSBhdMOpIHsyfS4nLFxyXG4gICAgbnVtYmVyT2ZGaWxlc0FsbG93ZWQ6ICdRdWFudGlkYWRlIG3DoXhpbWE6IHswfSBhcnF1aXZvKHMpJyxcclxuICAgIGFsbG93ZWRGb3JtYXRzOiAnRm9ybWF0b3MgYWRvdGFkb3M6IHswfS4nLFxyXG4gICAgYWxsb3dlZEZpbGVTaXplUmFuZ2U6ICdMaW1pdGUgZGUgdGFtYW5obyBwb3IgYXJxdWl2bzogZGUgezB9IGF0w6kgezF9JyxcclxuICAgIG1heEZpbGVTaXplQWxsb3dlZDogJ0xpbWl0ZSBkZSB0YW1hbmhvIHBvciBhcnF1aXZvOiBhdMOpIHswfScsXHJcbiAgICBtaW5GaWxlU2l6ZUFsbG93ZWQ6ICdMaW1pdGUgZGUgdGFtYW5obyBwb3IgYXJxdWl2bzogbm8gbcOtbmltbyB7MH0nLFxyXG4gICAgZXJyb3JPY2N1cnJlZDogJ09jb3JyZXUgdW0gZXJybycsXHJcbiAgICBzZW50V2l0aFN1Y2Nlc3M6ICdFbnZpYWRvIGNvbSBzdWNlc3NvJ1xyXG4gIH0sXHJcbiAgcnU6IDxQb1VwbG9hZExpdGVyYWxzPntcclxuICAgIGZpbGVzOiAn0YTQsNC50LvRiycsXHJcbiAgICBmb2xkZXJzOiAn0L/QsNC/0LrQuCDRgSDRhNCw0LnQu9Cw0LzQuCcsXHJcbiAgICBzZWxlY3RGaWxlOiAn0JLRi9Cx0LXRgNC40YLQtSDRhNCw0LnQuycsXHJcbiAgICBzZWxlY3RGaWxlczogJ9CS0YvQsdC10YDQuNGC0LUg0YTQsNC50LvRiycsXHJcbiAgICBzZWxlY3RGb2xkZXI6ICfQktGL0LHQtdGA0LjRgtC1INC/0LDQv9C60YMg0YEg0YTQsNC50LvQsNC80LgnLFxyXG4gICAgc3RhcnRTZW5kaW5nOiAn0J3QsNGH0LDRgtGMINC30LDQs9GA0YPQt9C60YMnLFxyXG4gICAgZHJhZ0ZpbGVzSGVyZTogJ9Cf0LXRgNC10YLQsNGJ0LjRgtC1INGE0LDQudC70Ysg0YHRjtC00LAnLFxyXG4gICAgZHJhZ0ZvbGRlcnNIZXJlOiAn0J/QtdGA0LXRgtCw0YnQuNGC0LUg0YHRjtC00LAg0L/QsNC/0LrQuCcsXHJcbiAgICBzZWxlY3RGaWxlc09uQ29tcHV0ZXI6ICfQuNC70Lgg0LLRi9Cx0LXRgNC40YLQtSDRhNCw0LnQu9GLINC90LAg0LrQvtC80L/RjNGO0YLQtdGA0LUnLFxyXG4gICAgc2VsZWN0Rm9sZGVyT25Db21wdXRlcjogJ9C40LvQuCDQstGL0LHQtdGA0LjRgtC1INC/0LDQv9C60YMg0L3QsCDQstCw0YjQtdC8INC60L7QvNC/0YzRjtGC0LXRgNC1JyxcclxuICAgIGRyb3BGaWxlc0hlcmU6ICfQntGB0YLQsNCy0YzRgtC1INGE0LDQudC70Ysg0LfQtNC10YHRjCcsXHJcbiAgICBkcm9wRm9sZGVyc0hlcmU6ICfQn9C10YDQtdGC0LDRidC40YLQtSDRgdGO0LTQsCDQv9Cw0L/QutC4JyxcclxuICAgIGludmFsaWREcm9wQXJlYTogJ3swfSDQvdC1INCx0YvQu9C4INCy0YHRgtCw0LLQu9C10L3RiyDQsiDQv9GA0LDQstC40LvRjNC90L7QvCDQvNC10YHRgtC1LicsXHJcbiAgICBpbnZhbGlkRmlsZVR5cGU6ICfQndC1INGD0LTQsNC70L7RgdGMINC30LDQs9GA0YPQt9C40YLRjCDRhNCw0LnQu9GLIHswfSwg0YLQsNC6INC60LDQuiDRjdGC0L4g0L3QtdCy0LXRgNC90YvQuSDRgtC40L8g0YTQsNC50LvQsCcsXHJcbiAgICBpbnZhbGlkQW1vdW50OiAnTsOjbyBmb2kgcG9zc8OtdmVsIGNhcnJlZ2FyIG9zIGFycXVpdm9zIHswfSBwb3JxdWUgZWxlcyBleGNlZGVyYW0gbyBsaW1pdGUgZGUgYXJxdWl2b3MuJyxcclxuICAgIGludmFsaWRGb3JtYXQ6ICfQndC1INGD0LTQsNC70L7RgdGMINC30LDQs9GA0YPQt9C40YLRjCDRhNCw0LnQu9GLIHswfSwg0YLQsNC6INC60LDQuiDQvtC90Lgg0L3QtSDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RgiDRhNC+0YDQvNCw0YLRgyAo0LDQvCk6IHsxfS4nLFxyXG4gICAgaW52YWxpZFNpemU6ICfQndC1INGD0LTQsNC70L7RgdGMINC30LDQs9GA0YPQt9C40YLRjCDRhNCw0LnQu9GLIHswfSwg0L/QvtGB0LrQvtC70YzQutGDINC+0L3QuCDQvdC1INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGCINGA0LDQt9GA0LXRiNC10L3QvdC+0LzRgyDRgNCw0LfQvNC10YDRgzog0L7RgiB7MX0g0LTQviB7Mn0uJyxcclxuICAgIG51bWJlck9mRmlsZXNBbGxvd2VkOiAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+OiB7MH0g0YTQsNC50LvQvtCyJyxcclxuICAgIGFsbG93ZWRGb3JtYXRzOiAn0KTQvtGA0LzQsNGC0Ysg0L/RgNC40L3Rj9GC0Ys6IHswfS4nLFxyXG4gICAgYWxsb3dlZEZpbGVTaXplUmFuZ2U6ICfQntCz0YDQsNC90LjRh9C10L3QuNC1INGA0LDQt9C80LXRgNCwINGE0LDQudC70LA6INC+0YIgezB9INC00L4gezF9JyxcclxuICAgIG1heEZpbGVTaXplQWxsb3dlZDogJ9Ce0LPRgNCw0L3QuNGH0LXQvdC40LUg0YDQsNC30LzQtdGA0LAg0YTQsNC50LvQsDog0LTQviB7MH0nLFxyXG4gICAgbWluRmlsZVNpemVBbGxvd2VkOiAn0J7Qs9GA0LDQvdC40YfQtdC90LjQtSDRgNCw0LfQvNC10YDQsCDRhNCw0LnQu9CwOiDQvdC1INC80LXQvdC10LUgezB9JyxcclxuICAgIGVycm9yT2NjdXJyZWQ6ICfQn9GA0L7QuNC30L7RiNC70LAg0L7RiNC40LHQutCwLicsXHJcbiAgICBzZW50V2l0aFN1Y2Nlc3M6ICfQo9GB0L/QtdGI0L3QviDQvtGC0L/RgNCw0LLQu9C10L3QvidcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBwb1VwbG9hZEZvcm1GaWVsZERlZmF1bHQgPSAnZmlsZXMnO1xyXG5cclxuY29uc3QgcG9VcGxvYWRNYXhGaWxlU2l6ZSA9IDMxNDU3MjgwOyAvLyAzME1CXHJcbmNvbnN0IHBvVXBsb2FkTWluRmlsZVNpemUgPSAwO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKlxyXG4gKiBPIGNvbXBvbmVudGUgYHBvLXVwbG9hZGAgcGVybWl0ZSBxdWUgbyB1c3XDoXJpbyBlbnZpZSBhcnF1aXZvKHMpIGFvIHNlcnZpZG9yIGUgYWNvbXBhbmhlIG8gcHJvZ3Jlc3NvLlxyXG4gKiBFc3RlIGNvbXBvbmVudGUgdGFtYsOpbSBwb3NzaWJpbGl0YSBhbGd1bWFzIGNvbmZpZ3VyYcOnw7VlcyBjb21vOlxyXG4gKiAg4oCTIEVudmlvIGRlIGRpcmV0w7NyaW9zLCBvbmRlIGVsZSBhY2Vzc2EgbyBkaXJldMOzcmlvIHNlbGVjaW9uYWRvIGFzc2ltIGNvbW8gc2V1cyBzdWItZGlyZXTDs3Jpb3M7XHJcbiAqICAtIE3Dumx0aXBsYSBzZWxlw6fDo28sIG9uZGUgbyB1c3XDoXJpbyBwb2RlIGVudmlhciBtYWlzIGRlIHVtIGFycXVpdm8gYW8gc2Vydmlkb3IuXHJcbiAqICAtIEF1dG8gZW52aW8sIG9uZGUgbyBhcnF1aXZvIMOpIGVudmlhZG8gaW1lZGlhdGFtZW50ZSBhcMOzcyBhIHNlbGXDp8OjbyBkbyB1c3XDoXJpbywgbsOjbyBuZWNlc3NpdGFuZG8gcXVlIG8gdXN1w6FyaW9cclxuICogY2xpcXVlIGVtIGVudmlhci5cclxuICogIC0gUmVzdHJpw6fDtWVzIGRlIGZvcm1hdG9zIGRlIGFycXVpdm8gZSB0YW1hbmhvLlxyXG4gKiAgLSBGdW7Dp8OjbyBkZSBzdWNlc3NvIHF1ZSBzZXLDoSBkaXNwYXJhZGEgcXVhbmRvIG9zIGFycXVpdm9zIGZvcmVtIGVudmlhZG9zIGNvbSBzdWNlc3NvLlxyXG4gKiAgLSBGdW7Dp8OjbyBkZSBlcnJvIHF1ZSBzZXLDoSBkaXNwYXJhZGEgcXVhbmRvIGhvdXZlciBlcnJvIG5vIGVudmlvIGRvcyBhcnF1aXZvcy5cclxuICogIC0gUGVybWl0ZSBoYWJpbGl0YXIgdW1hIMOhcmVhIG9uZGUgb3MgYXJxdWl2b3MgcG9kZW0gc2VyIGFycmFzdGFkb3MuXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvVXBsb2FkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBBcGxpY2EgZm9jbyBubyBlbGVtZW50byBhbyBzZXIgaW5pY2lhZG8uXHJcbiAgICpcclxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcclxuICAgKi9cclxuICBASW5wdXQoJ3AtYXV0by1mb2N1cycpIEBJbnB1dEJvb2xlYW4oKSBhdXRvRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIERlZmluZSBlbSAqcGl4ZWxzKiBhIGFsdHVyYSBkYSDDoXJlYSBvbmRlIHBvZGVtIHNlciBhcnJhc3RhZG9zIG9zIGFycXVpdm9zLiBBIGFsdHVyYSBtw61uaW1hIGFjZWl0YSDDqSBgMTYwcHhgLlxyXG4gICAqXHJcbiAgICogPiBFc3RhIHByb3ByaWVkYWRlIGZ1bmNpb25hIHNvbWVudGUgc2UgYSBwcm9wcmllZGFkZSBgcC1kcmFnLWRyb3BgIGVzdGl2ZXIgaGFiaWxpdGFkYS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGAzMjBgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWRyYWctZHJvcC1oZWlnaHQnKSBkcmFnRHJvcEhlaWdodDogbnVtYmVyO1xyXG5cclxuICAvKiogUsOzdHVsbyBkbyBjYW1wby4gKi9cclxuICBASW5wdXQoJ3AtbGFiZWwnKSBsYWJlbD86IHN0cmluZztcclxuXHJcbiAgLyoqIFRleHRvIGRlIGFwb2lvIHBhcmEgbyBjYW1wby4gKi9cclxuICBASW5wdXQoJ3AtaGVscCcpIGhlbHA/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBVUkwgcXVlIGRldmUgc2VyIGZlaXRhIGEgcmVxdWlzacOnw6NvIGNvbSBvcyBhcnF1aXZvcyBzZWxlY2lvbmFkb3MuICovXHJcbiAgQElucHV0KCdwLXVybCcpIHVybDogc3RyaW5nO1xyXG5cclxuICAvKiogRGVmaW5lIG8gdmFsb3IgZG8gYXRyaWJ1dG8gYG5hbWVgIGRvIGNvbXBvbmVudGUuICovXHJcbiAgQElucHV0KCduYW1lJykgbmFtZTogc3RyaW5nID0gJ2ZpbGUnO1xyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogRGVmaW5lIHNlIG8gZW52aW8gZG8gYXJxdWl2byBzZXLDoSBhdXRvbcOhdGljbyBhbyBzZWxlY2lvbmFyIG8gbWVzbW8uXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWF1dG8tdXBsb2FkJykgYXV0b1VwbG9hZD86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXHJcbiAgICpcclxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxyXG4gICAqICAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcclxuICAgKiAgLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XHJcblxyXG4gIC8qKiBPYmpldG8gcXVlIGNvbnTDqW0gb3MgY2FiZcOnYWxob3MgcXVlIHNlcsOhIGVudmlhZG8gbmEgcmVxdWlzacOnw6NvIGRvcyBhcnF1dmlvcy4gKi9cclxuICBASW5wdXQoJ3AtaGVhZGVycycpIGhlYWRlcnM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IEFycmF5PHN0cmluZz4gfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIEZ1bsOnw6NvIHF1ZSBzZXLDoSBleGVjdXRhZGEgbm8gbW9tZW50byBkZSByZWFsaXphciBvIGVudmlvIGRvIGFycXVpdm8sXHJcbiAgICogb25kZSBzZXLDoSBwb3Nzw612ZWwgYWRpY2lvbmFyIGluZm9ybWHDp8O1ZXMgYW8gcGFyw6JtZXRybyBxdWUgc2Vyw6EgZW52aWFkbyBuYSByZXF1aXNpw6fDo28uXHJcbiAgICogw4kgcGFzc2FkbyBwb3IgcGFyw6JtZXRybyB1bSBvYmpldG8gY29tIG8gYXJxdWl2byBlIGEgcHJvcGllZGFkZSBkYXRhIG5lc3RhIHByb3ByaWVkYWRlIHBvZGUgc2VyIGluZm9ybWFkbyBhbGd1bSBkYWRvLFxyXG4gICAqIHF1ZSBzZXLDoSBlbnZpYWRvIGVtIGNvbmp1bnRvIGNvbSBvIGFycXVpdm8gbmEgcmVxdWlzacOnw6NvLCBwb3IgZXhlbXBsbzpcclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqICAgZXZlbnQuZGF0YSA9IHtpZDogJ2lkIGRvIHVzdWFyaW8nfTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBAT3V0cHV0KCdwLXVwbG9hZCcpIG9uVXBsb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogRXZlbnRvIHNlcsOhIGRpc3BhcmFkbyBxdWFuZG8gb2NvcnJlciBhbGd1bSBlcnJvIG5vIGVudmlvIGRvIGFycXVpdm8uXHJcbiAgICogPiBQb3IgcGFyw6JtZXRybyBzZXLDoSBwYXNzYWRvIG8gb2JqZXRvIGRvIHJldG9ybm8gcXVlIMOpIGRvIHRpcG8gYEh0dHBFcnJvclJlc3BvbnNlYC5cclxuICAgKi9cclxuICBAT3V0cHV0KCdwLWVycm9yJykgb25FcnJvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIEV2ZW50byBzZXLDoSBkaXNwYXJhZG8gcXVhbmRvIG8gZW52aW8gZG8gYXJxdWl2byBmb3IgcmVhbGl6YWRvIGNvbSBzdWNlc3NvLlxyXG4gICAqID4gUG9yIHBhcsOibWV0cm8gc2Vyw6EgcGFzc2FkbyBvIG9iamV0byBkbyByZXRvcm5vIHF1ZSDDqSBkbyB0aXBvIGBIdHRwUmVzcG9uc2VgLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoJ3Atc3VjY2VzcycpIG9uU3VjY2VzczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIEZ1bsOnw6NvIHBhcmEgYXR1YWxpemFyIG8gbmdNb2RlbCBkbyBjb21wb25lbnRlLCBuZWNlc3PDoXJpbyBxdWFuZG8gbsOjbyBmb3IgdXRpbGl6YWRvIGRlbnRybyBkYSAqdGFnKiBgZm9ybWAuXHJcbiAgICpcclxuICAgKiBOYSB2ZXJzw6NvIDEyLjIuMCBkbyBBbmd1bGFyIGEgdmVyaWZpY2HDp8OjbyBgc3RyaWN0VGVtcGxhdGVzYCB2ZW0gdHJ1ZSBjb21vIGRlZmF1bHQuIFBvcnRhbnRvLCBwYXJhIHV0aWxpemFyXHJcbiAgICogdHdvLXdheSBiaW5kaW5nIG5vIGNvbXBvbmVudGUgZGV2ZSBzZSB1dGlsaXphciBkYSBzZWd1aW50ZSBmb3JtYTpcclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqIDxwby11cGxvYWQgLi4uIFtuZ01vZGVsXT1cIlVwbG9hZE1vZGVsXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBsb2FkTW9kZWwgPSAkZXZlbnRcIj4gPC9wby11cGxvYWQ+XHJcbiAgICogYGBgXHJcbiAgICpcclxuICAgKi9cclxuICBAT3V0cHV0KCduZ01vZGVsQ2hhbmdlJykgbmdNb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgYWxsb3dlZEV4dGVuc2lvbnM6IHN0cmluZztcclxuICBjdXJyZW50RmlsZXM6IEFycmF5PFBvVXBsb2FkRmlsZT47XHJcblxyXG4gIGNhbkhhbmRsZURpcmVjdG9yeTogYm9vbGVhbjtcclxuICBvbk1vZGVsQ2hhbmdlOiBhbnk7XHJcblxyXG4gIHByb3RlY3RlZCBleHRlbnNpb25Ob3RBbGxvd2VkID0gMDtcclxuICBwcm90ZWN0ZWQgcXVhbnRpdHlOb3RBbGxvd2VkID0gMDtcclxuICBwcm90ZWN0ZWQgc2l6ZU5vdEFsbG93ZWQgPSAwO1xyXG4gIHByb3RlY3RlZCBvbk1vZGVsVG91Y2hlZDogYW55ID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBfZGlyZWN0b3J5PzogYm9vbGVhbjtcclxuICBwcml2YXRlIF9kaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfZHJhZ0Ryb3A/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZmlsZVJlc3RyaWN0aW9ucz86IFBvVXBsb2FkRmlsZVJlc3RyaWN0aW9ucztcclxuICBwcml2YXRlIF9mb3JtRmllbGQ/OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfaGlkZVJlc3RyaWN0aW9uc0luZm8/OiBib29sZWFuO1xyXG4gIHByaXZhdGUgX2hpZGVTZWxlY3RCdXR0b24/OiBib29sZWFuO1xyXG4gIHByaXZhdGUgX2hpZGVTZW5kQnV0dG9uPzogYm9vbGVhbjtcclxuICBwcml2YXRlIF9pc011bHRpcGxlPzogYm9vbGVhbjtcclxuICBwcml2YXRlIF9saXRlcmFscz86IGFueTtcclxuICBwcml2YXRlIF9yZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBQZXJtaXRlIGEgc2VsZcOnw6NvIGRlIGRpcmV0w7NyaW9zIGNvbnRlbmRvIHVtIG91IG1haXMgYXJxdWl2b3MgcGFyYSBlbnZpby5cclxuICAgKlxyXG4gICAqID4gQSBoYWJpbGl0YcOnw6NvIGRlc3RhIHByb3ByaWVkYWRlIHNlIHJlc3RyaW5nZSBhcGVuYXMgw6Agc2VsZcOnw6NvIGRlIGRpcmV0w7NyaW9zLlxyXG4gICAqXHJcbiAgICogPiBEZWZpbmnDp8OjbyBuw6NvIHN1cG9ydGFkYSBwZWxvIGJyb3dzZXIgKipJbnRlcm5ldCBFeHBsb3JlcioqLCB0b2RhdmlhIHNlcsOhIHBvc3PDrXZlbCBhIHNlbGXDp8OjbyBkZSBhcnF1aXZvcyBwYWRyw6NvLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1kaXJlY3RvcnknKSBzZXQgZGlyZWN0b3J5KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9kaXJlY3RvcnkgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcclxuXHJcbiAgICB0aGlzLmNhbkhhbmRsZURpcmVjdG9yeSA9IHRoaXMuX2RpcmVjdG9yeSAmJiAhaXNJRSgpICYmICFpc01vYmlsZSgpO1xyXG4gICAgdGhpcy5zZXREaXJlY3RvcnlBdHRyaWJ1dGUodGhpcy5jYW5IYW5kbGVEaXJlY3RvcnkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpcmVjdG9yeSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXJlY3Rvcnk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogRXhpYmUgYSDDoXJlYSBvbmRlIMOpIHBvc3PDrXZlbCBhcnJhc3RhciBlIHNlbGVjaW9uYXIgb3MgYXJxdWl2b3MuIFF1YW5kbyBlc3RpdmVyIGRlZmluaWRhLCBvbWl0ZSBvIGJvdMOjbyBwYXJhIHNlbGXDp8OjbyBkZSBhcnF1aXZvc1xyXG4gICAqIGF1dG9tYXRpY2FtZW50ZS5cclxuICAgKlxyXG4gICAqID4gUmVjb21lbmRhbW9zIHV0aWxpemFyIGFwZW5hcyB1bSBgcG8tdXBsb2FkYCBjb20gZXN0YSBmdW5jaW9uYWxpZGFkZSBwb3IgdGVsYS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcclxuICAgKi9cclxuICBASW5wdXQoJ3AtZHJhZy1kcm9wJykgc2V0IGRyYWdEcm9wKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9kcmFnRHJvcCA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRyYWdEcm9wKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RyYWdEcm9wO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIE9jdWx0YSB2aXN1YWxtZW50ZSBhcyBpbmZvcm1hw6fDtWVzIGRlIHJlc3RyacOnw7VlcyBwYXJhIG8gdXBsb2FkLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1oaWRlLXJlc3RyaWN0aW9ucy1pbmZvJykgc2V0IGhpZGVSZXN0cmljdGlvbnNJbmZvKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9oaWRlUmVzdHJpY3Rpb25zSW5mbyA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhpZGVSZXN0cmljdGlvbnNJbmZvKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hpZGVSZXN0cmljdGlvbnNJbmZvO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIE9taXRlIG8gYm90w6NvIGRlIHNlbGXDp8OjbyBkZSBhcnF1aXZvcy5cclxuICAgKlxyXG4gICAqID4gQ2FzbyBvIHZhbG9yIGRlZmluaWRvIHNlamEgYHRydWVgLCBjYWJlcsOhIGFvIGRlc2Vudm9sdmVkb3IgYSByZXNwb25zYWJpbGlkYWRlXHJcbiAgICogcGVsYSBjaGFtYWRhIGRvIG3DqXRvZG8gYHNlbGVjdEZpbGVzKClgIHBhcmEgc2VsZcOnw6NvIGRlIGFycXVpdm9zLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1oaWRlLXNlbGVjdC1idXR0b24nKSBzZXQgaGlkZVNlbGVjdEJ1dHRvbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faGlkZVNlbGVjdEJ1dHRvbiA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xyXG4gIH1cclxuICBnZXQgaGlkZVNlbGVjdEJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9oaWRlU2VsZWN0QnV0dG9uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIE9taXRlIG8gYm90w6NvIGRlIGVudmlvIGRlIGFycXVpdm9zLlxyXG4gICAqXHJcbiAgICogPiBDYXNvIG8gdmFsb3IgZGVmaW5pZG8gc2VqYSBgdHJ1ZWAsIGNhYmVyw6EgYW8gZGVzZW52b2x2ZWRvciBhIHJlc3BvbnNhYmlsaWRhZGVcclxuICAgKiBwZWxhIGNoYW1hZGEgZG8gbcOpdG9kbyBgc2VuZEZpbGVzKClgIHBhcmEgZW52aW8gZG8ocykgYXJxdWl2byhzKSBzZWxlY2lvbmFkbyhzKS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcclxuICAgKi9cclxuICBASW5wdXQoJ3AtaGlkZS1zZW5kLWJ1dHRvbicpIHNldCBoaWRlU2VuZEJ1dHRvbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faGlkZVNlbmRCdXR0b24gPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcclxuICB9XHJcbiAgZ2V0IGhpZGVTZW5kQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hpZGVTZW5kQnV0dG9uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby11cGxvYWRgLlxyXG4gICAqXHJcbiAgICogRXhpc3RlbSBkdWFzIG1hbmVpcmFzIGRlIGN1c3RvbWl6YXIgbyBjb21wb25lbnRlOlxyXG4gICAqXHJcbiAgICogLSBwYXNzYW5kbyB1bSBvYmpldG8gaW1wbGVtZW50YW5kbyBhIGludGVyZmFjZSBgUG9VcGxvYWRMaXRlcmFsc2AgY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpcztcclxuICAgKiAtIHBhc3NhbmRvIGFwZW5hcyBhcyBsaXRlcmFpcyBxdWUgZGVzZWphIGN1c3RvbWl6YXI6XHJcbiAgICogYGBgXHJcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb1VwbG9hZExpdGVyYWxzID0ge1xyXG4gICAqICAgIGZvbGRlcnM6ICdQYXN0YXMnLFxyXG4gICAqICAgIHNlbGVjdEZpbGU6ICdCdXNjYXIgYXJxdWl2bycsXHJcbiAgICogICAgc3RhcnRTZW5kaW5nOiAnRW52aWFyJ1xyXG4gICAqICB9O1xyXG4gICAqIGBgYFxyXG4gICAqXHJcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZTpcclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqIDxwby11cGxvYWRcclxuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XHJcbiAgICogPC9wby11cGxvYWQ+XHJcbiAgICogYGBgXHJcbiAgICpcclxuICAgKiA+IE8gb2JqZXRvIHBhZHLDo28gZGUgbGl0ZXJhaXMgc2Vyw6EgdHJhZHV6aWRvIGRlIGFjb3JkbyBjb20gbyBpZGlvbWEgZG8gKmJyb3dzZXIqIChwdCwgZW4sIGVzLCBydSkuXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWxpdGVyYWxzJykgc2V0IGxpdGVyYWxzKHZhbHVlOiBQb1VwbG9hZExpdGVyYWxzKSB7XHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSkge1xyXG4gICAgICB0aGlzLl9saXRlcmFscyA9IHtcclxuICAgICAgICAuLi5wb1VwbG9hZExpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxyXG4gICAgICAgIC4uLnBvVXBsb2FkTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxyXG4gICAgICAgIC4uLnZhbHVlXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9saXRlcmFscyA9IHBvVXBsb2FkTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgbGl0ZXJhbHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGl0ZXJhbHMgfHwgcG9VcGxvYWRMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogT2JqZXRvIHF1ZSBzZWd1ZSBhIGRlZmluacOnw6NvIGRhIGludGVyZmFjZSBgUG9VcGxvYWRGaWxlUmVzdHJpY3Rpb25zYCxcclxuICAgKiBxdWUgcG9zc2liaWxpdGEgZGVmaW5pciB0YW1hbmhvIG3DoXhpbW8vbcOtbmltbyBlIGV4dGVuc8OjbyBkb3MgYXJxdWl2b3MgcGVybWl0aWRvcy5cclxuICAgKi9cclxuICBASW5wdXQoJ3AtcmVzdHJpY3Rpb25zJykgc2V0IGZpbGVSZXN0cmljdGlvbnMocmVzdHJpY3Rpb25zOiBQb1VwbG9hZEZpbGVSZXN0cmljdGlvbnMpIHtcclxuICAgIHRoaXMuX2ZpbGVSZXN0cmljdGlvbnMgPSB0aGlzLmluaXRSZXN0cmljdGlvbnMocmVzdHJpY3Rpb25zKTtcclxuXHJcbiAgICB0aGlzLnNldEFsbG93ZWRFeHRlbnNpb25zKHJlc3RyaWN0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsZVJlc3RyaWN0aW9ucygpOiBQb1VwbG9hZEZpbGVSZXN0cmljdGlvbnMge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVSZXN0cmljdGlvbnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogTm9tZSBkbyBjYW1wbyBkZSBmb3JtdWzDoXJpbyBxdWUgc2Vyw6EgZW52aWFkbyBwYXJhIG8gc2VydmnDp28gaW5mb3JtYWRvIG5hIHByb3ByaWVkYWRlIGBwLXVybGAuXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgZmlsZXNgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWZvcm0tZmllbGQnKSBzZXQgZm9ybUZpZWxkKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2Zvcm1GaWVsZCA9IHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IHBvVXBsb2FkRm9ybUZpZWxkRGVmYXVsdDtcclxuXHJcbiAgICB0aGlzLmdldFVwbG9hZFNlcnZpY2UoKS5mb3JtRmllbGQgPSB0aGlzLmZvcm1GaWVsZDtcclxuICB9XHJcblxyXG4gIGdldCBmb3JtRmllbGQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtRmllbGQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogSW5kaWNhIHF1ZSBvIGNhbXBvIHNlcsOhIGRlc2FiaWxpdGFkby5cclxuICAgKi9cclxuICBASW5wdXQoJ3AtZGlzYWJsZWQnKSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XHJcblxyXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuY3VycmVudEZpbGVzKTtcclxuICB9XHJcblxyXG4gIGdldCBkaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBEZWZpbmUgc2UgcG9kZSBzZWxlY2lvbmFyIG1haXMgZGUgdW0gYXJxdWl2by5cclxuICAgKlxyXG4gICAqID4gU2UgdXRpbGl6YWRhIGEgYHAtZGlyZWN0b3J5YCwgaGFiaWxpdGEtc2UgYXV0b21hdGljYW1lbnRlIGVzdGEgcHJvcHJpZWRhZGUuXHJcbiAgICovXHJcbiAgQElucHV0KCdwLW11bHRpcGxlJykgc2V0IGlzTXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2lzTXVsdGlwbGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCBpc011bHRpcGxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FuSGFuZGxlRGlyZWN0b3J5ID8gdHJ1ZSA6IHRoaXMuX2lzTXVsdGlwbGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogSW5kaWNhIHF1ZSBvIGNhbXBvIHNlcsOhIG9icmlnYXTDs3Jpby5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcclxuICAgKi9cclxuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3JlcXVpcmVkID0gY29udmVydFRvQm9vbGVhbihyZXF1aXJlZCk7XHJcblxyXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuY3VycmVudEZpbGVzKTtcclxuICB9XHJcblxyXG4gIGdldCByZXF1aXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB1cGxvYWRTZXJ2aWNlOiBQb1VwbG9hZFNlcnZpY2UsIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UpIHtcclxuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBvcyBlc3RhZG9zIGRlIGhhYmlsaXRhZG8gdmlhIGZvcm1zIGFwaVxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCkge1xyXG4gICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKGFic3RyYWN0Q29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XHJcbiAgICBpZiAocmVxdWlyZWRGYWlsZWQodGhpcy5yZXF1aXJlZCwgdGhpcy5kaXNhYmxlZCwgYWJzdHJhY3RDb250cm9sLnZhbHVlKSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHJlcXVpcmVkOiB7XHJcbiAgICAgICAgICB2YWxpZDogZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG1vZGVsOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChtb2RlbCkge1xyXG4gICAgICBpZiAoIWlzRXF1YWxzKHRoaXMuY3VycmVudEZpbGVzLCBtb2RlbCkpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGaWxlcyA9IHRoaXMucGFyc2VGaWxlcyhtb2RlbCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbGVzID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGlzRXhjZWVkZWRGaWxlTGltaXQoY3VycmVudEZpbGVzTGVuZ3RoOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuaXNNdWx0aXBsZSAmJlxyXG4gICAgICB0aGlzLmZpbGVSZXN0cmljdGlvbnMgJiZcclxuICAgICAgdGhpcy5maWxlUmVzdHJpY3Rpb25zLm1heEZpbGVzID4gMCAmJlxyXG4gICAgICB0aGlzLmZpbGVSZXN0cmljdGlvbnMubWF4RmlsZXMgPD0gY3VycmVudEZpbGVzTGVuZ3RoXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gRmF6IG8gcGFyc2UgZG9zIGFycXVpdm9zIHNlbGVjaW9uYWRvcyBwYXJhIGFycXVpdm9zIGRvIGZvcm1hdG8gUG9VcGxvYWRGaWxlIGUgYXR1YWxpemEgb3MgYXJxdWl2b3MgY29ycmVudGVzLlxyXG4gIHByb3RlY3RlZCBwYXJzZUZpbGVzKGZpbGVzOiBBcnJheTxGaWxlPik6IEFycmF5PFBvVXBsb2FkRmlsZT4ge1xyXG4gICAgbGV0IHBvVXBsb2FkRmlsZXM6IEFycmF5PFBvVXBsb2FkRmlsZT4gPSB0aGlzLmN1cnJlbnRGaWxlcyB8fCBbXTtcclxuICAgIGNvbnN0IGZpbGVzTGVuZ3RoID0gZmlsZXMubGVuZ3RoO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXNMZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5pc0V4Y2VlZGVkRmlsZUxpbWl0KHBvVXBsb2FkRmlsZXMubGVuZ3RoKSkge1xyXG4gICAgICAgIHRoaXMucXVhbnRpdHlOb3RBbGxvd2VkID0gZmlsZXNMZW5ndGggLSB0aGlzLmZpbGVSZXN0cmljdGlvbnMubWF4RmlsZXM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZmlsZSA9IG5ldyBQb1VwbG9hZEZpbGUoZmlsZXNbaV0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY2hlY2tSZXN0cmljdGlvbnMoZmlsZSkpIHtcclxuICAgICAgICBwb1VwbG9hZEZpbGVzID0gdGhpcy5pbnNlcnRGaWxlSW5GaWxlcyhmaWxlLCBwb1VwbG9hZEZpbGVzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZW5kRmVlZGJhY2soKTtcclxuICAgIHJldHVybiBwb1VwbG9hZEZpbGVzO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHZhbGlkYXRlTW9kZWwobW9kZWw6IGFueSkge1xyXG4gICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKG1vZGVsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFZlcmlmaWNhIHNlIG8gYXJxdWl2byBlc3TDoSBkZSBhY29yZG8gY29tIGFzIHJlc3RyacOnw7Vlcy5cclxuICBwcml2YXRlIGNoZWNrUmVzdHJpY3Rpb25zKGZpbGU6IFBvVXBsb2FkRmlsZSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcmVzdHJpY3Rpb25zID0gdGhpcy5maWxlUmVzdHJpY3Rpb25zO1xyXG5cclxuICAgIGlmIChyZXN0cmljdGlvbnMpIHtcclxuICAgICAgY29uc3QgYWxsb3dlZEV4dGVuc2lvbnMgPSByZXN0cmljdGlvbnMuYWxsb3dlZEV4dGVuc2lvbnM7XHJcbiAgICAgIGNvbnN0IG1pbkZpbGVTaXplID0gcmVzdHJpY3Rpb25zLm1pbkZpbGVTaXplO1xyXG4gICAgICBjb25zdCBtYXhGaWxlU2l6ZSA9IHJlc3RyaWN0aW9ucy5tYXhGaWxlU2l6ZTtcclxuXHJcbiAgICAgIGNvbnN0IGlzQWNjZXB0ID0gYWxsb3dlZEV4dGVuc2lvbnMgPyB0aGlzLmlzQWxsb3dlZEV4dGVuc2lvbihmaWxlLmV4dGVuc2lvbiwgYWxsb3dlZEV4dGVuc2lvbnMpIDogdHJ1ZTtcclxuICAgICAgY29uc3QgaXNBY2NlcHRTaXplID0gZmlsZS5zaXplID49IG1pbkZpbGVTaXplICYmIGZpbGUuc2l6ZSA8PSBtYXhGaWxlU2l6ZTtcclxuXHJcbiAgICAgIGlmICghaXNBY2NlcHRTaXplKSB7XHJcbiAgICAgICAgdGhpcy5zaXplTm90QWxsb3dlZCA9IHRoaXMuc2l6ZU5vdEFsbG93ZWQgKyAxO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gaXNBY2NlcHQgJiYgaXNBY2NlcHRTaXplO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleGlzdHNGaWxlU2FtZU5hbWUoZmlsZTogUG9VcGxvYWRGaWxlLCBmaWxlczogQXJyYXk8UG9VcGxvYWRGaWxlPik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGZpbGVzLnNvbWUoY3VycmVudEZpbGUgPT4gZmlsZS5uYW1lID09PSBjdXJyZW50RmlsZS5uYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VXBsb2FkU2VydmljZSgpOiBQb1VwbG9hZFNlcnZpY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMudXBsb2FkU2VydmljZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5zZXJ0RmlsZUluRmlsZXMobmV3RmlsZTogUG9VcGxvYWRGaWxlLCBmaWxlczogQXJyYXk8UG9VcGxvYWRGaWxlPikge1xyXG4gICAgaWYgKHRoaXMuZXhpc3RzRmlsZVNhbWVOYW1lKG5ld0ZpbGUsIGZpbGVzKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVFeGlzdHNGaWxlSW5GaWxlcyhuZXdGaWxlLCBmaWxlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNNdWx0aXBsZSkge1xyXG4gICAgICBmaWxlcy5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmlsZXMuc3BsaWNlKDAsIGZpbGVzLmxlbmd0aCwgbmV3RmlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZpbGVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0FsbG93ZWRFeHRlbnNpb24oZXh0ZW5zaW9uOiBzdHJpbmcsIGFsbG93ZWRFeHRlbnNpb25zOiBBcnJheTxzdHJpbmc+ID0gW10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGlzQWxsb3dlZCA9IGFsbG93ZWRFeHRlbnNpb25zLnNvbWUoZXh0ID0+IGV4dC50b0xvd2VyQ2FzZSgpID09PSBleHRlbnNpb24pO1xyXG4gICAgaWYgKCFpc0FsbG93ZWQpIHtcclxuICAgICAgdGhpcy5leHRlbnNpb25Ob3RBbGxvd2VkID0gdGhpcy5leHRlbnNpb25Ob3RBbGxvd2VkICsgMTtcclxuICAgIH1cclxuICAgIHJldHVybiBpc0FsbG93ZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEFsbG93ZWRFeHRlbnNpb25zKHJlc3RyaWN0aW9uczogUG9VcGxvYWRGaWxlUmVzdHJpY3Rpb25zID0ge30pIHtcclxuICAgIGNvbnN0IF9hbGxvd2VkRXh0ZW5zaW9ucyA9IHJlc3RyaWN0aW9ucy5hbGxvd2VkRXh0ZW5zaW9ucyB8fCBbXTtcclxuXHJcbiAgICB0aGlzLmFsbG93ZWRFeHRlbnNpb25zID0gX2FsbG93ZWRFeHRlbnNpb25zLmpvaW4oJywnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFJlc3RyaWN0aW9ucyhyZXN0cmljdGlvbnM6IFBvVXBsb2FkRmlsZVJlc3RyaWN0aW9ucyk6IFBvVXBsb2FkRmlsZVJlc3RyaWN0aW9ucyB7XHJcbiAgICBpZiAoIXJlc3RyaWN0aW9ucykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWluRmlsZVNpemUgPSByZXN0cmljdGlvbnMubWluRmlsZVNpemUgfHwgcG9VcGxvYWRNaW5GaWxlU2l6ZTtcclxuICAgIGNvbnN0IG1heEZpbGVTaXplID0gcmVzdHJpY3Rpb25zLm1heEZpbGVTaXplIHx8IHBvVXBsb2FkTWF4RmlsZVNpemU7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4ucmVzdHJpY3Rpb25zLFxyXG4gICAgICBtYXhGaWxlU2l6ZTogbWF4RmlsZVNpemUsXHJcbiAgICAgIG1pbkZpbGVTaXplOiBtaW5GaWxlU2l6ZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRXhpc3RzRmlsZUluRmlsZXMobmV3RmlsZTogUG9VcGxvYWRGaWxlLCBmaWxlczogQXJyYXk8UG9VcGxvYWRGaWxlPikge1xyXG4gICAgY29uc3QgZmlsZUluZGV4ID0gZmlsZXMuZmluZEluZGV4KFxyXG4gICAgICBjdXJyZW50RmlsZSA9PiBuZXdGaWxlLm5hbWUgPT09IGN1cnJlbnRGaWxlLm5hbWUgJiYgY3VycmVudEZpbGUuc3RhdHVzICE9PSBQb1VwbG9hZFN0YXR1cy5VcGxvYWRlZFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoZmlsZUluZGV4ICE9PSAtMSkge1xyXG4gICAgICBmaWxlcy5zcGxpY2UoZmlsZUluZGV4LCAxLCBuZXdGaWxlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmlsZXM7XHJcbiAgfVxyXG5cclxuICBhYnN0cmFjdCBzZW5kRmVlZGJhY2soKTogdm9pZDtcclxuXHJcbiAgYWJzdHJhY3Qgc2V0RGlyZWN0b3J5QXR0cmlidXRlKHZhbHVlOiBib29sZWFuKTtcclxufVxyXG4iXX0=
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { EventEmitter, Input, Output, Directive } from '@angular/core';
|
|
3
|
+
import { convertToBoolean, isEquals, isIE, isMobile } from '../../../utils/util';
|
|
4
|
+
import { requiredFailed } from '../validators';
|
|
5
|
+
import { PoUploadFile } from './po-upload-file';
|
|
6
|
+
import { PoUploadService } from './po-upload.service';
|
|
7
|
+
import { PoUploadStatus } from './po-upload-status.enum';
|
|
8
|
+
import { InputBoolean } from '../../../decorators';
|
|
9
|
+
import { PoLanguageService } from '../../../services/po-language/po-language.service';
|
|
10
|
+
import { poLocaleDefault } from '../../../services/po-language/po-language.constant';
|
|
11
|
+
export const poUploadLiteralsDefault = {
|
|
12
|
+
en: {
|
|
13
|
+
files: 'files',
|
|
14
|
+
folders: 'folders',
|
|
15
|
+
selectFile: 'Select file',
|
|
16
|
+
selectFiles: 'Select files',
|
|
17
|
+
selectFolder: 'Select folder',
|
|
18
|
+
startSending: 'Start sending',
|
|
19
|
+
dragFilesHere: 'Drag files here',
|
|
20
|
+
dragFoldersHere: 'Drag folders here',
|
|
21
|
+
selectFilesOnComputer: 'or select files on your computer',
|
|
22
|
+
selectFolderOnComputer: 'or select folder on your computer',
|
|
23
|
+
dropFilesHere: 'Drop files here',
|
|
24
|
+
dropFoldersHere: 'Drop folders here',
|
|
25
|
+
invalidDropArea: '{0} were not dropped in the correct area',
|
|
26
|
+
invalidFileType: 'Failed to load {0} file(s) as it is not the allowed file type.',
|
|
27
|
+
invalidAmount: 'Failed to load {0} file(s), as it exceeds the limit amount of files.',
|
|
28
|
+
invalidFormat: 'Failed to load {0} file(s), as it does not match the format(s): {1}.',
|
|
29
|
+
invalidSize: 'Failed to load {0} files(s), as it is not the allowed size: from {1} to {2}.',
|
|
30
|
+
numberOfFilesAllowed: '{0} file(s) allowed',
|
|
31
|
+
allowedFormats: 'Accepted file formats: {0}.',
|
|
32
|
+
allowedFileSizeRange: 'Size limit per file: from {0} to {1}',
|
|
33
|
+
maxFileSizeAllowed: 'Size limit per file: {0} maximum',
|
|
34
|
+
minFileSizeAllowed: 'Size limit per file: {0} minimum',
|
|
35
|
+
errorOccurred: 'An error has occurred',
|
|
36
|
+
sentWithSuccess: 'Sent with success'
|
|
37
|
+
},
|
|
38
|
+
es: {
|
|
39
|
+
files: 'archivos',
|
|
40
|
+
folders: 'carpetas',
|
|
41
|
+
selectFile: 'Seleccionar archivo',
|
|
42
|
+
selectFiles: 'Seleccionar archivos',
|
|
43
|
+
selectFolder: 'Seleccionar carpeta',
|
|
44
|
+
startSending: 'Iniciar carga',
|
|
45
|
+
dragFilesHere: 'Arrastra los archivos aquí',
|
|
46
|
+
dragFoldersHere: 'Arrastra las carpetas aquí',
|
|
47
|
+
selectFilesOnComputer: 'o selecciona los archivos en tu computadora',
|
|
48
|
+
selectFolderOnComputer: 'o selecciona la carpeta en tu computadora',
|
|
49
|
+
dropFilesHere: 'Deja los archivos aquí',
|
|
50
|
+
dropFoldersHere: 'Deja las carpetas aquí',
|
|
51
|
+
invalidDropArea: 'Los {0} no se insertaron en la ubicación correcta',
|
|
52
|
+
invalidFileType: 'Error al cargar {0} archivo (s) ya que no es el tipo de archivo permitido',
|
|
53
|
+
invalidAmount: 'Error al cargar {0} archivo (s) ya que excede la cantidad limite de archivos.',
|
|
54
|
+
invalidFormat: 'Error al cargar {0} archivo (s) ya que no coincide con el formato (s): {1}.',
|
|
55
|
+
invalidSize: 'Error al cargar {0} archivo (s) ya que no cumple con el tamaño permitido: desde {1} hasta {2}.',
|
|
56
|
+
numberOfFilesAllowed: '{0} archivo(s) permitido(s)',
|
|
57
|
+
allowedFormats: 'Formatos aceptados: {0}.',
|
|
58
|
+
allowedFileSizeRange: 'Limite de tamaño de archivo: desde {0} hasta {1}',
|
|
59
|
+
maxFileSizeAllowed: 'Limite de tamaño de archivo: hasta {0}',
|
|
60
|
+
minFileSizeAllowed: 'Limite de tamaño de archivo: minimo {0}',
|
|
61
|
+
errorOccurred: 'Ocurrio un error',
|
|
62
|
+
sentWithSuccess: 'Enviado con éxito'
|
|
63
|
+
},
|
|
64
|
+
pt: {
|
|
65
|
+
files: 'arquivos',
|
|
66
|
+
folders: 'diretórios',
|
|
67
|
+
selectFile: 'Selecionar arquivo',
|
|
68
|
+
selectFiles: 'Selecionar arquivos',
|
|
69
|
+
selectFolder: 'Selecionar pasta',
|
|
70
|
+
startSending: 'Iniciar envio',
|
|
71
|
+
dragFilesHere: 'Arraste os arquivos aqui',
|
|
72
|
+
dragFoldersHere: 'Arraste as pastas aqui',
|
|
73
|
+
selectFilesOnComputer: 'ou selecione os arquivos no computador',
|
|
74
|
+
selectFolderOnComputer: 'ou selecione a pasta no computador',
|
|
75
|
+
dropFilesHere: 'Solte os arquivos aqui',
|
|
76
|
+
dropFoldersHere: 'Solte as pastas aqui',
|
|
77
|
+
invalidDropArea: 'Os {0} não foram inseridos no local correto',
|
|
78
|
+
invalidFileType: 'Falha ao carregar {0} arquivo (s), pois não é o tipo de arquivo permitido',
|
|
79
|
+
invalidAmount: 'Falha ao carregar {0} arquivo(s), pois excede(m) a quantidade limite de arquivos.',
|
|
80
|
+
invalidFormat: 'Falha ao carregar {0} arquivo(s), pois não corresponde(m) ao(s) formato(s): {1}.',
|
|
81
|
+
invalidSize: 'Falha ao carregar {0} arquivo(s), pois não atende ao tamanho permitido: {1} até {2}.',
|
|
82
|
+
numberOfFilesAllowed: 'Quantidade máxima: {0} arquivo(s)',
|
|
83
|
+
allowedFormats: 'Formatos adotados: {0}.',
|
|
84
|
+
allowedFileSizeRange: 'Limite de tamanho por arquivo: de {0} até {1}',
|
|
85
|
+
maxFileSizeAllowed: 'Limite de tamanho por arquivo: até {0}',
|
|
86
|
+
minFileSizeAllowed: 'Limite de tamanho por arquivo: no mínimo {0}',
|
|
87
|
+
errorOccurred: 'Ocorreu um erro',
|
|
88
|
+
sentWithSuccess: 'Enviado com sucesso'
|
|
89
|
+
},
|
|
90
|
+
ru: {
|
|
91
|
+
files: 'файлы',
|
|
92
|
+
folders: 'папки с файлами',
|
|
93
|
+
selectFile: 'Выберите файл',
|
|
94
|
+
selectFiles: 'Выберите файлы',
|
|
95
|
+
selectFolder: 'Выберите папку с файлами',
|
|
96
|
+
startSending: 'Начать загрузку',
|
|
97
|
+
dragFilesHere: 'Перетащите файлы сюда',
|
|
98
|
+
dragFoldersHere: 'Перетащите сюда папки',
|
|
99
|
+
selectFilesOnComputer: 'или выберите файлы на компьютере',
|
|
100
|
+
selectFolderOnComputer: 'или выберите папку на вашем компьютере',
|
|
101
|
+
dropFilesHere: 'Оставьте файлы здесь',
|
|
102
|
+
dropFoldersHere: 'Перетащите сюда папки',
|
|
103
|
+
invalidDropArea: '{0} не были вставлены в правильном месте.',
|
|
104
|
+
invalidFileType: 'Не удалось загрузить файлы {0}, так как это неверный тип файла',
|
|
105
|
+
invalidAmount: 'Não foi possível carregar os arquivos {0} porque eles excederam o limite de arquivos.',
|
|
106
|
+
invalidFormat: 'Не удалось загрузить файлы {0}, так как они не соответствуют формату (ам): {1}.',
|
|
107
|
+
invalidSize: 'Не удалось загрузить файлы {0}, поскольку они не соответствуют разрешенному размеру: от {1} до {2}.',
|
|
108
|
+
numberOfFilesAllowed: 'Максимальное количество: {0} файлов',
|
|
109
|
+
allowedFormats: 'Форматы приняты: {0}.',
|
|
110
|
+
allowedFileSizeRange: 'Ограничение размера файла: от {0} до {1}',
|
|
111
|
+
maxFileSizeAllowed: 'Ограничение размера файла: до {0}',
|
|
112
|
+
minFileSizeAllowed: 'Ограничение размера файла: не менее {0}',
|
|
113
|
+
errorOccurred: 'Произошла ошибка.',
|
|
114
|
+
sentWithSuccess: 'Успешно отправлено'
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
const poUploadFormFieldDefault = 'files';
|
|
118
|
+
const poUploadMaxFileSize = 31457280; // 30MB
|
|
119
|
+
const poUploadMinFileSize = 0;
|
|
120
|
+
/**
|
|
121
|
+
* @description
|
|
122
|
+
*
|
|
123
|
+
* O componente `po-upload` permite que o usuário envie arquivo(s) ao servidor e acompanhe o progresso.
|
|
124
|
+
* Este componente também possibilita algumas configurações como:
|
|
125
|
+
* – Envio de diretórios, onde ele acessa o diretório selecionado assim como seus sub-diretórios;
|
|
126
|
+
* - Múltipla seleção, onde o usuário pode enviar mais de um arquivo ao servidor.
|
|
127
|
+
* - Auto envio, onde o arquivo é enviado imediatamente após a seleção do usuário, não necessitando que o usuário
|
|
128
|
+
* clique em enviar.
|
|
129
|
+
* - Restrições de formatos de arquivo e tamanho.
|
|
130
|
+
* - Função de sucesso que será disparada quando os arquivos forem enviados com sucesso.
|
|
131
|
+
* - Função de erro que será disparada quando houver erro no envio dos arquivos.
|
|
132
|
+
* - Permite habilitar uma área onde os arquivos podem ser arrastados.
|
|
133
|
+
*/
|
|
134
|
+
export class PoUploadBaseComponent {
|
|
135
|
+
constructor(uploadService, languageService) {
|
|
136
|
+
this.uploadService = uploadService;
|
|
137
|
+
/**
|
|
138
|
+
* @optional
|
|
139
|
+
*
|
|
140
|
+
* @description
|
|
141
|
+
*
|
|
142
|
+
* Aplica foco no elemento ao ser iniciado.
|
|
143
|
+
*
|
|
144
|
+
* > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.
|
|
145
|
+
*
|
|
146
|
+
* @default `false`
|
|
147
|
+
*/
|
|
148
|
+
this.autoFocus = false;
|
|
149
|
+
/** Define o valor do atributo `name` do componente. */
|
|
150
|
+
this.name = 'file';
|
|
151
|
+
/**
|
|
152
|
+
* @optional
|
|
153
|
+
*
|
|
154
|
+
* @description
|
|
155
|
+
*
|
|
156
|
+
* Define se o envio do arquivo será automático ao selecionar o mesmo.
|
|
157
|
+
*
|
|
158
|
+
* @default `false`
|
|
159
|
+
*/
|
|
160
|
+
this.autoUpload = false;
|
|
161
|
+
/**
|
|
162
|
+
* @optional
|
|
163
|
+
*
|
|
164
|
+
* @description
|
|
165
|
+
*
|
|
166
|
+
* Função que será executada no momento de realizar o envio do arquivo,
|
|
167
|
+
* onde será possível adicionar informações ao parâmetro que será enviado na requisição.
|
|
168
|
+
* É passado por parâmetro um objeto com o arquivo e a propiedade data nesta propriedade pode ser informado algum dado,
|
|
169
|
+
* que será enviado em conjunto com o arquivo na requisição, por exemplo:
|
|
170
|
+
*
|
|
171
|
+
* ```
|
|
172
|
+
* event.data = {id: 'id do usuario'};
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
this.onUpload = new EventEmitter();
|
|
176
|
+
/**
|
|
177
|
+
* @optional
|
|
178
|
+
*
|
|
179
|
+
* @description
|
|
180
|
+
*
|
|
181
|
+
* Evento será disparado quando ocorrer algum erro no envio do arquivo.
|
|
182
|
+
* > Por parâmetro será passado o objeto do retorno que é do tipo `HttpErrorResponse`.
|
|
183
|
+
*/
|
|
184
|
+
this.onError = new EventEmitter();
|
|
185
|
+
/**
|
|
186
|
+
* @optional
|
|
187
|
+
*
|
|
188
|
+
* @description
|
|
189
|
+
*
|
|
190
|
+
* Evento será disparado quando o envio do arquivo for realizado com sucesso.
|
|
191
|
+
* > Por parâmetro será passado o objeto do retorno que é do tipo `HttpResponse`.
|
|
192
|
+
*/
|
|
193
|
+
this.onSuccess = new EventEmitter();
|
|
194
|
+
/**
|
|
195
|
+
* @optional
|
|
196
|
+
*
|
|
197
|
+
* @description
|
|
198
|
+
*
|
|
199
|
+
* Função para atualizar o ngModel do componente, necessário quando não for utilizado dentro da *tag* `form`.
|
|
200
|
+
*
|
|
201
|
+
* Na versão 12.2.0 do Angular a verificação `strictTemplates` vem true como default. Portanto, para utilizar
|
|
202
|
+
* two-way binding no componente deve se utilizar da seguinte forma:
|
|
203
|
+
*
|
|
204
|
+
* ```
|
|
205
|
+
* <po-upload ... [ngModel]="UploadModel" (ngModelChange)="uploadModel = $event"> </po-upload>
|
|
206
|
+
* ```
|
|
207
|
+
*
|
|
208
|
+
*/
|
|
209
|
+
this.ngModelChange = new EventEmitter();
|
|
210
|
+
this.extensionNotAllowed = 0;
|
|
211
|
+
this.quantityNotAllowed = 0;
|
|
212
|
+
this.sizeNotAllowed = 0;
|
|
213
|
+
this.onModelTouched = null;
|
|
214
|
+
this._dragDrop = false;
|
|
215
|
+
this.language = languageService.getShortLanguage();
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* @optional
|
|
219
|
+
*
|
|
220
|
+
* @description
|
|
221
|
+
*
|
|
222
|
+
* Permite a seleção de diretórios contendo um ou mais arquivos para envio.
|
|
223
|
+
*
|
|
224
|
+
* > A habilitação desta propriedade se restringe apenas à seleção de diretórios.
|
|
225
|
+
*
|
|
226
|
+
* > Definição não suportada pelo browser **Internet Explorer**, todavia será possível a seleção de arquivos padrão.
|
|
227
|
+
*
|
|
228
|
+
* @default `false`
|
|
229
|
+
*/
|
|
230
|
+
set directory(value) {
|
|
231
|
+
this._directory = convertToBoolean(value);
|
|
232
|
+
this.canHandleDirectory = this._directory && !isIE() && !isMobile();
|
|
233
|
+
this.setDirectoryAttribute(this.canHandleDirectory);
|
|
234
|
+
}
|
|
235
|
+
get directory() {
|
|
236
|
+
return this._directory;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* @optional
|
|
240
|
+
*
|
|
241
|
+
* @description
|
|
242
|
+
*
|
|
243
|
+
* Exibe a área onde é possível arrastar e selecionar os arquivos. Quando estiver definida, omite o botão para seleção de arquivos
|
|
244
|
+
* automaticamente.
|
|
245
|
+
*
|
|
246
|
+
* > Recomendamos utilizar apenas um `po-upload` com esta funcionalidade por tela.
|
|
247
|
+
*
|
|
248
|
+
* @default `false`
|
|
249
|
+
*/
|
|
250
|
+
set dragDrop(value) {
|
|
251
|
+
this._dragDrop = convertToBoolean(value);
|
|
252
|
+
}
|
|
253
|
+
get dragDrop() {
|
|
254
|
+
return this._dragDrop;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* @optional
|
|
258
|
+
*
|
|
259
|
+
* @description
|
|
260
|
+
*
|
|
261
|
+
* Oculta visualmente as informações de restrições para o upload.
|
|
262
|
+
*
|
|
263
|
+
* @default `false`
|
|
264
|
+
*/
|
|
265
|
+
set hideRestrictionsInfo(value) {
|
|
266
|
+
this._hideRestrictionsInfo = convertToBoolean(value);
|
|
267
|
+
}
|
|
268
|
+
get hideRestrictionsInfo() {
|
|
269
|
+
return this._hideRestrictionsInfo;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* @optional
|
|
273
|
+
*
|
|
274
|
+
* @description
|
|
275
|
+
*
|
|
276
|
+
* Omite o botão de seleção de arquivos.
|
|
277
|
+
*
|
|
278
|
+
* > Caso o valor definido seja `true`, caberá ao desenvolvedor a responsabilidade
|
|
279
|
+
* pela chamada do método `selectFiles()` para seleção de arquivos.
|
|
280
|
+
*
|
|
281
|
+
* @default `false`
|
|
282
|
+
*/
|
|
283
|
+
set hideSelectButton(value) {
|
|
284
|
+
this._hideSelectButton = convertToBoolean(value);
|
|
285
|
+
}
|
|
286
|
+
get hideSelectButton() {
|
|
287
|
+
return this._hideSelectButton;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* @optional
|
|
291
|
+
*
|
|
292
|
+
* @description
|
|
293
|
+
*
|
|
294
|
+
* Omite o botão de envio de arquivos.
|
|
295
|
+
*
|
|
296
|
+
* > Caso o valor definido seja `true`, caberá ao desenvolvedor a responsabilidade
|
|
297
|
+
* pela chamada do método `sendFiles()` para envio do(s) arquivo(s) selecionado(s).
|
|
298
|
+
*
|
|
299
|
+
* @default `false`
|
|
300
|
+
*/
|
|
301
|
+
set hideSendButton(value) {
|
|
302
|
+
this._hideSendButton = convertToBoolean(value);
|
|
303
|
+
}
|
|
304
|
+
get hideSendButton() {
|
|
305
|
+
return this._hideSendButton;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* @optional
|
|
309
|
+
*
|
|
310
|
+
* @description
|
|
311
|
+
*
|
|
312
|
+
* Objeto com as literais usadas no `po-upload`.
|
|
313
|
+
*
|
|
314
|
+
* Existem duas maneiras de customizar o componente:
|
|
315
|
+
*
|
|
316
|
+
* - passando um objeto implementando a interface `PoUploadLiterals` com todas as literais disponíveis;
|
|
317
|
+
* - passando apenas as literais que deseja customizar:
|
|
318
|
+
* ```
|
|
319
|
+
* const customLiterals: PoUploadLiterals = {
|
|
320
|
+
* folders: 'Pastas',
|
|
321
|
+
* selectFile: 'Buscar arquivo',
|
|
322
|
+
* startSending: 'Enviar'
|
|
323
|
+
* };
|
|
324
|
+
* ```
|
|
325
|
+
*
|
|
326
|
+
* E para carregar as literais customizadas, basta apenas passar o objeto para o componente:
|
|
327
|
+
*
|
|
328
|
+
* ```
|
|
329
|
+
* <po-upload
|
|
330
|
+
* [p-literals]="customLiterals">
|
|
331
|
+
* </po-upload>
|
|
332
|
+
* ```
|
|
333
|
+
*
|
|
334
|
+
* > O objeto padrão de literais será traduzido de acordo com o idioma do *browser* (pt, en, es, ru).
|
|
335
|
+
*/
|
|
336
|
+
set literals(value) {
|
|
337
|
+
if (value instanceof Object && !(value instanceof Array)) {
|
|
338
|
+
this._literals = Object.assign(Object.assign(Object.assign({}, poUploadLiteralsDefault[poLocaleDefault]), poUploadLiteralsDefault[this.language]), value);
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
this._literals = poUploadLiteralsDefault[this.language];
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
get literals() {
|
|
345
|
+
return this._literals || poUploadLiteralsDefault[this.language];
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* @optional
|
|
349
|
+
*
|
|
350
|
+
* @description
|
|
351
|
+
*
|
|
352
|
+
* Objeto que segue a definição da interface `PoUploadFileRestrictions`,
|
|
353
|
+
* que possibilita definir tamanho máximo/mínimo e extensão dos arquivos permitidos.
|
|
354
|
+
*/
|
|
355
|
+
set fileRestrictions(restrictions) {
|
|
356
|
+
this._fileRestrictions = this.initRestrictions(restrictions);
|
|
357
|
+
this.setAllowedExtensions(restrictions);
|
|
358
|
+
}
|
|
359
|
+
get fileRestrictions() {
|
|
360
|
+
return this._fileRestrictions;
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* @optional
|
|
364
|
+
*
|
|
365
|
+
* @description
|
|
366
|
+
*
|
|
367
|
+
* Nome do campo de formulário que será enviado para o serviço informado na propriedade `p-url`.
|
|
368
|
+
*
|
|
369
|
+
* @default `files`
|
|
370
|
+
*/
|
|
371
|
+
set formField(value) {
|
|
372
|
+
this._formField = value && typeof value === 'string' ? value : poUploadFormFieldDefault;
|
|
373
|
+
this.getUploadService().formField = this.formField;
|
|
374
|
+
}
|
|
375
|
+
get formField() {
|
|
376
|
+
return this._formField;
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* @optional
|
|
380
|
+
*
|
|
381
|
+
* @description
|
|
382
|
+
*
|
|
383
|
+
* Indica que o campo será desabilitado.
|
|
384
|
+
*/
|
|
385
|
+
set disabled(value) {
|
|
386
|
+
this._disabled = convertToBoolean(value);
|
|
387
|
+
this.validateModel(this.currentFiles);
|
|
388
|
+
}
|
|
389
|
+
get disabled() {
|
|
390
|
+
return this._disabled;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* @optional
|
|
394
|
+
*
|
|
395
|
+
* @description
|
|
396
|
+
*
|
|
397
|
+
* Define se pode selecionar mais de um arquivo.
|
|
398
|
+
*
|
|
399
|
+
* > Se utilizada a `p-directory`, habilita-se automaticamente esta propriedade.
|
|
400
|
+
*/
|
|
401
|
+
set isMultiple(value) {
|
|
402
|
+
this._isMultiple = convertToBoolean(value);
|
|
403
|
+
}
|
|
404
|
+
get isMultiple() {
|
|
405
|
+
return this.canHandleDirectory ? true : this._isMultiple;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* @optional
|
|
409
|
+
*
|
|
410
|
+
* @description
|
|
411
|
+
*
|
|
412
|
+
* Indica que o campo será obrigatório.
|
|
413
|
+
*
|
|
414
|
+
* @default `false`
|
|
415
|
+
*/
|
|
416
|
+
set required(required) {
|
|
417
|
+
this._required = convertToBoolean(required);
|
|
418
|
+
this.validateModel(this.currentFiles);
|
|
419
|
+
}
|
|
420
|
+
get required() {
|
|
421
|
+
return this._required;
|
|
422
|
+
}
|
|
423
|
+
// Função implementada do ControlValueAccessor
|
|
424
|
+
// Usada para interceptar os estados de habilitado via forms api
|
|
425
|
+
setDisabledState(isDisabled) {
|
|
426
|
+
this.disabled = isDisabled;
|
|
427
|
+
}
|
|
428
|
+
registerOnChange(fn) {
|
|
429
|
+
this.onModelChange = fn;
|
|
430
|
+
}
|
|
431
|
+
registerOnTouched(fn) {
|
|
432
|
+
this.onModelTouched = fn;
|
|
433
|
+
}
|
|
434
|
+
registerOnValidatorChange(fn) {
|
|
435
|
+
this.validatorChange = fn;
|
|
436
|
+
}
|
|
437
|
+
validate(abstractControl) {
|
|
438
|
+
if (requiredFailed(this.required, this.disabled, abstractControl.value)) {
|
|
439
|
+
return {
|
|
440
|
+
required: {
|
|
441
|
+
valid: false
|
|
442
|
+
}
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
writeValue(model) {
|
|
447
|
+
if (model) {
|
|
448
|
+
if (!isEquals(this.currentFiles, model)) {
|
|
449
|
+
this.currentFiles = this.parseFiles(model);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
else {
|
|
453
|
+
this.currentFiles = undefined;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
isExceededFileLimit(currentFilesLength) {
|
|
457
|
+
return (this.isMultiple &&
|
|
458
|
+
this.fileRestrictions &&
|
|
459
|
+
this.fileRestrictions.maxFiles > 0 &&
|
|
460
|
+
this.fileRestrictions.maxFiles <= currentFilesLength);
|
|
461
|
+
}
|
|
462
|
+
// Faz o parse dos arquivos selecionados para arquivos do formato PoUploadFile e atualiza os arquivos correntes.
|
|
463
|
+
parseFiles(files) {
|
|
464
|
+
let poUploadFiles = this.currentFiles || [];
|
|
465
|
+
const filesLength = files.length;
|
|
466
|
+
for (let i = 0; i < filesLength; i++) {
|
|
467
|
+
if (this.isExceededFileLimit(poUploadFiles.length)) {
|
|
468
|
+
this.quantityNotAllowed = filesLength - this.fileRestrictions.maxFiles;
|
|
469
|
+
break;
|
|
470
|
+
}
|
|
471
|
+
const file = new PoUploadFile(files[i]);
|
|
472
|
+
if (this.checkRestrictions(file)) {
|
|
473
|
+
poUploadFiles = this.insertFileInFiles(file, poUploadFiles);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
this.sendFeedback();
|
|
477
|
+
return poUploadFiles;
|
|
478
|
+
}
|
|
479
|
+
validateModel(model) {
|
|
480
|
+
if (this.validatorChange) {
|
|
481
|
+
this.validatorChange(model);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
// Verifica se o arquivo está de acordo com as restrições.
|
|
485
|
+
checkRestrictions(file) {
|
|
486
|
+
const restrictions = this.fileRestrictions;
|
|
487
|
+
if (restrictions) {
|
|
488
|
+
const allowedExtensions = restrictions.allowedExtensions;
|
|
489
|
+
const minFileSize = restrictions.minFileSize;
|
|
490
|
+
const maxFileSize = restrictions.maxFileSize;
|
|
491
|
+
const isAccept = allowedExtensions ? this.isAllowedExtension(file.extension, allowedExtensions) : true;
|
|
492
|
+
const isAcceptSize = file.size >= minFileSize && file.size <= maxFileSize;
|
|
493
|
+
if (!isAcceptSize) {
|
|
494
|
+
this.sizeNotAllowed = this.sizeNotAllowed + 1;
|
|
495
|
+
}
|
|
496
|
+
return isAccept && isAcceptSize;
|
|
497
|
+
}
|
|
498
|
+
return true;
|
|
499
|
+
}
|
|
500
|
+
existsFileSameName(file, files) {
|
|
501
|
+
return files.some(currentFile => file.name === currentFile.name);
|
|
502
|
+
}
|
|
503
|
+
getUploadService() {
|
|
504
|
+
return this.uploadService;
|
|
505
|
+
}
|
|
506
|
+
insertFileInFiles(newFile, files) {
|
|
507
|
+
if (this.existsFileSameName(newFile, files)) {
|
|
508
|
+
return this.updateExistsFileInFiles(newFile, files);
|
|
509
|
+
}
|
|
510
|
+
if (this.isMultiple) {
|
|
511
|
+
files.push(newFile);
|
|
512
|
+
}
|
|
513
|
+
else {
|
|
514
|
+
files.splice(0, files.length, newFile);
|
|
515
|
+
}
|
|
516
|
+
return files;
|
|
517
|
+
}
|
|
518
|
+
isAllowedExtension(extension, allowedExtensions = []) {
|
|
519
|
+
const isAllowed = allowedExtensions.some(ext => ext.toLowerCase() === extension);
|
|
520
|
+
if (!isAllowed) {
|
|
521
|
+
this.extensionNotAllowed = this.extensionNotAllowed + 1;
|
|
522
|
+
}
|
|
523
|
+
return isAllowed;
|
|
524
|
+
}
|
|
525
|
+
setAllowedExtensions(restrictions = {}) {
|
|
526
|
+
const _allowedExtensions = restrictions.allowedExtensions || [];
|
|
527
|
+
this.allowedExtensions = _allowedExtensions.join(',');
|
|
528
|
+
}
|
|
529
|
+
initRestrictions(restrictions) {
|
|
530
|
+
if (!restrictions) {
|
|
531
|
+
return;
|
|
532
|
+
}
|
|
533
|
+
const minFileSize = restrictions.minFileSize || poUploadMinFileSize;
|
|
534
|
+
const maxFileSize = restrictions.maxFileSize || poUploadMaxFileSize;
|
|
535
|
+
return Object.assign(Object.assign({}, restrictions), { maxFileSize: maxFileSize, minFileSize: minFileSize });
|
|
536
|
+
}
|
|
537
|
+
updateExistsFileInFiles(newFile, files) {
|
|
538
|
+
const fileIndex = files.findIndex(currentFile => newFile.name === currentFile.name && currentFile.status !== PoUploadStatus.Uploaded);
|
|
539
|
+
if (fileIndex !== -1) {
|
|
540
|
+
files.splice(fileIndex, 1, newFile);
|
|
541
|
+
}
|
|
542
|
+
return files;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
PoUploadBaseComponent.decorators = [
|
|
546
|
+
{ type: Directive }
|
|
547
|
+
];
|
|
548
|
+
PoUploadBaseComponent.ctorParameters = () => [
|
|
549
|
+
{ type: PoUploadService },
|
|
550
|
+
{ type: PoLanguageService }
|
|
551
|
+
];
|
|
552
|
+
PoUploadBaseComponent.propDecorators = {
|
|
553
|
+
autoFocus: [{ type: Input, args: ['p-auto-focus',] }],
|
|
554
|
+
dragDropHeight: [{ type: Input, args: ['p-drag-drop-height',] }],
|
|
555
|
+
label: [{ type: Input, args: ['p-label',] }],
|
|
556
|
+
help: [{ type: Input, args: ['p-help',] }],
|
|
557
|
+
url: [{ type: Input, args: ['p-url',] }],
|
|
558
|
+
name: [{ type: Input, args: ['name',] }],
|
|
559
|
+
autoUpload: [{ type: Input, args: ['p-auto-upload',] }],
|
|
560
|
+
optional: [{ type: Input, args: ['p-optional',] }],
|
|
561
|
+
headers: [{ type: Input, args: ['p-headers',] }],
|
|
562
|
+
onUpload: [{ type: Output, args: ['p-upload',] }],
|
|
563
|
+
onError: [{ type: Output, args: ['p-error',] }],
|
|
564
|
+
onSuccess: [{ type: Output, args: ['p-success',] }],
|
|
565
|
+
ngModelChange: [{ type: Output, args: ['ngModelChange',] }],
|
|
566
|
+
directory: [{ type: Input, args: ['p-directory',] }],
|
|
567
|
+
dragDrop: [{ type: Input, args: ['p-drag-drop',] }],
|
|
568
|
+
hideRestrictionsInfo: [{ type: Input, args: ['p-hide-restrictions-info',] }],
|
|
569
|
+
hideSelectButton: [{ type: Input, args: ['p-hide-select-button',] }],
|
|
570
|
+
hideSendButton: [{ type: Input, args: ['p-hide-send-button',] }],
|
|
571
|
+
literals: [{ type: Input, args: ['p-literals',] }],
|
|
572
|
+
fileRestrictions: [{ type: Input, args: ['p-restrictions',] }],
|
|
573
|
+
formField: [{ type: Input, args: ['p-form-field',] }],
|
|
574
|
+
disabled: [{ type: Input, args: ['p-disabled',] }],
|
|
575
|
+
isMultiple: [{ type: Input, args: ['p-multiple',] }],
|
|
576
|
+
required: [{ type: Input, args: ['p-required',] }]
|
|
577
|
+
};
|
|
578
|
+
__decorate([
|
|
579
|
+
InputBoolean()
|
|
580
|
+
], PoUploadBaseComponent.prototype, "autoFocus", void 0);
|
|
581
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdXBsb2FkLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLXVwbG9hZC9wby11cGxvYWQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXJGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ3JDLEVBQUUsRUFBb0I7UUFDcEIsS0FBSyxFQUFFLE9BQU87UUFDZCxPQUFPLEVBQUUsU0FBUztRQUNsQixVQUFVLEVBQUUsYUFBYTtRQUN6QixXQUFXLEVBQUUsY0FBYztRQUMzQixZQUFZLEVBQUUsZUFBZTtRQUM3QixZQUFZLEVBQUUsZUFBZTtRQUM3QixhQUFhLEVBQUUsaUJBQWlCO1FBQ2hDLGVBQWUsRUFBRSxtQkFBbUI7UUFDcEMscUJBQXFCLEVBQUUsa0NBQWtDO1FBQ3pE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LFFBQVEsQ0FDbkcsQ0FBQztRQUVGLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3BCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7O1lBNWhCRixTQUFTOzs7WUFwSUQsZUFBZTtZQUdmLGlCQUFpQjs7O3dCQThJdkIsS0FBSyxTQUFDLGNBQWM7NkJBYXBCLEtBQUssU0FBQyxvQkFBb0I7b0JBRzFCLEtBQUssU0FBQyxTQUFTO21CQUdmLEtBQUssU0FBQyxRQUFRO2tCQUdkLEtBQUssU0FBQyxPQUFPO21CQUdiLEtBQUssU0FBQyxNQUFNO3lCQVdaLEtBQUssU0FBQyxlQUFlO3VCQWVyQixLQUFLLFNBQUMsWUFBWTtzQkFHbEIsS0FBSyxTQUFDLFdBQVc7dUJBZ0JqQixNQUFNLFNBQUMsVUFBVTtzQkFVakIsTUFBTSxTQUFDLFNBQVM7d0JBVWhCLE1BQU0sU0FBQyxXQUFXOzRCQWlCbEIsTUFBTSxTQUFDLGVBQWU7d0JBd0N0QixLQUFLLFNBQUMsYUFBYTt1QkF1Qm5CLEtBQUssU0FBQyxhQUFhO21DQWlCbkIsS0FBSyxTQUFDLDBCQUEwQjsrQkFvQmhDLEtBQUssU0FBQyxzQkFBc0I7NkJBbUI1QixLQUFLLFNBQUMsb0JBQW9CO3VCQW9DMUIsS0FBSyxTQUFDLFlBQVk7K0JBdUJsQixLQUFLLFNBQUMsZ0JBQWdCO3dCQW1CdEIsS0FBSyxTQUFDLGNBQWM7dUJBaUJwQixLQUFLLFNBQUMsWUFBWTt5QkFtQmxCLEtBQUssU0FBQyxZQUFZO3VCQWlCbEIsS0FBSyxTQUFDLFlBQVk7O0FBcldvQjtJQUFmLFlBQVksRUFBRTt3REFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBpc0VxdWFscywgaXNJRSwgaXNNb2JpbGUgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IHJlcXVpcmVkRmFpbGVkIH0gZnJvbSAnLi4vdmFsaWRhdG9ycyc7XG5cbmltcG9ydCB7IFBvVXBsb2FkRmlsZSB9IGZyb20gJy4vcG8tdXBsb2FkLWZpbGUnO1xuaW1wb3J0IHsgUG9VcGxvYWRGaWxlUmVzdHJpY3Rpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXVwbG9hZC1maWxlLXJlc3RyaWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1VwbG9hZExpdGVyYWxzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXVwbG9hZC1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9VcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9wby11cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBQb1VwbG9hZFN0YXR1cyB9IGZyb20gJy4vcG8tdXBsb2FkLXN0YXR1cy5lbnVtJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcblxuZXhwb3J0IGNvbnN0IHBvVXBsb2FkTGl0ZXJhbHNEZWZhdWx0ID0ge1xuICBlbjogPFBvVXBsb2FkTGl0ZXJhbHM+e1xuICAgIGZpbGVzOiAnZmlsZXMnLFxuICAgIGZvbGRlcnM6ICdmb2xkZXJzJyxcbiAgICBzZWxlY3RGaWxlOiAnU2VsZWN0IGZpbGUnLFxuICAgIHNlbGVjdEZpbGVzOiAnU2VsZWN0IGZpbGVzJyxcbiAgICBzZWxlY3RGb2xkZXI6ICdTZWxlY3QgZm9sZGVyJyxcbiAgICBzdGFydFNlbmRpbmc6ICdTdGFydCBzZW5kaW5nJyxcbiAgICBkcmFnRmlsZXNIZXJlOiAnRHJhZyBmaWxlcyBoZXJlJyxcbiAgICBkcmFnRm9sZGVyc0hlcmU6ICdEcmFnIGZvbGRlcnMgaGVyZScsXG4gICAgc2VsZWN0RmlsZXNPbkNvbXB1dGVyOiAnb3Igc2VsZWN0IGZpbGVzIG9uIHlvdXIgY29tcHV0ZXInLFxuICAgIHNlbGVjdEZvbGRlck9uQ29tcHV0ZXI6ICdvciBzZWxlY3QgZm9sZGVyIG9uIHlvdXIgY29tcHV0ZXInLFxuICAgIGRyb3BGaWxlc0hlcmU6ICdEcm9wIGZpbGVzIGhlcmUnLFxuICAgIGRyb3BGb2xkZXJzSGVyZTogJ0Ryb3AgZm9sZGVycyBoZXJlJyxcbiAgICBpbnZhbGlkRHJvcEFyZWE6ICd7MH0gd2VyZSBub3QgZHJvcHBlZCBpbiB0aGUgY29ycmVjdCBhcmVhJyxcbiAgICBpbnZhbGlkRmlsZVR5cGU6ICdGYWlsZWQgdG8gbG9hZCB7MH0gZmlsZShzKSBhcyBpdCBpcyBub3QgdGhlIGFsbG93ZWQgZmlsZSB0eXBlLicsXG4gICAgaW52YWxpZEFtb3VudDogJ0ZhaWxlZCB0byBsb2FkIHswfSBmaWxlKHMpLCBhcyBpdCBleGNlZWRzIHRoZSBsaW1pdCBhbW91bnQgb2YgZmlsZXMuJyxcbiAgICBpbnZhbGlkRm9ybWF0OiAnRmFpbGVkIHRvIGxvYWQgezB9IGZpbGUocyksIGFzIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBmb3JtYXQocyk6IHsxfS4nLFxuICAgIGludmFsaWRTaXplOiAnRmFpbGVkIHRvIGxvYWQgezB9IGZpbGVzKHMpLCBhcyBpdCBpcyBub3QgdGhlIGFsbG93ZWQgc2l6ZTogZnJvbSB7MX0gdG8gezJ9LicsXG4gICAgbnVtYmVyT2ZGaWxlc0FsbG93ZWQ6ICd7MH0gZmlsZShzKSBhbGxvd2VkJyxcbiAgICBhbGxvd2VkRm9ybWF0czogJ0FjY2VwdGVkIGZpbGUgZm9ybWF0czogezB9LicsXG4gICAgYWxsb3dlZEZpbGVTaXplUmFuZ2U6ICdTaXplIGxpbWl0IHBlciBmaWxlOiBmcm9tIHswfSB0byB7MX0nLFxuICAgIG1heEZpbGVTaXplQWxsb3dlZDogJ1NpemUgbGltaXQgcGVyIGZpbGU6IHswfSBtYXhpbXVtJyxcbiAgICBtaW5GaWxlU2l6ZUFsbG93ZWQ6ICdTaXplIGxpbWl0IHBlciBmaWxlOiB7MH0gbWluaW11bScsXG4gICAgZXJyb3JPY2N1cnJlZDogJ0FuIGVycm9yIGhhcyBvY2N1cnJlZCcsXG4gICAgc2VudFdpdGhTdWNjZXNzOiAnU2VudCB3aXRoIHN1Y2Nlc3MnXG4gIH0sXG4gIGVzOiA8UG9VcGxvYWRMaXRlcmFscz57XG4gICAgZmlsZXM6ICdhcmNoaXZvcycsXG4gICAgZm9sZGVyczogJ2NhcnBldGFzJyxcbiAgICBzZWxlY3RGaWxlOiAnU2VsZWNjaW9uYXIgYXJjaGl2bycsXG4gICAgc2VsZWN0RmlsZXM6ICdTZWxlY2Npb25hciBhcmNoaXZvcycsXG4gICAgc2VsZWN0Rm9sZGVyOiAnU2VsZWNjaW9uYXIgY2FycGV0YScsXG4gICAgc3RhcnRTZW5kaW5nOiAnSW5pY2lhciBjYXJnYScsXG4gICAgZHJhZ0ZpbGVzSGVyZTogJ0FycmFzdHJhIGxvcyBhcmNoaXZvcyBhcXXDrScsXG4gICAgZHJhZ0ZvbGRlcnNIZXJlOiAnQXJyYXN0cmEgbGFzIGNhcnBldGFzIGFxdcOtJyxcbiAgICBzZWxlY3RGaWxlc09uQ29tcHV0ZXI6ICdvIHNlbGVjY2lvbmEgbG9zIGFyY2hpdm9zIGVuIHR1IGNvbXB1dGFkb3JhJyxcbiAgICBzZWxlY3RGb2xkZXJPbkNvbXB1dGVyOiAnbyBzZWxlY2Npb25hIGxhIGNhcnBldGEgZW4gdHUgY29tcHV0YWRvcmEnLFxuICAgIGRyb3BGaWxlc0hlcmU6ICdEZWphIGxvcyBhcmNoaXZvcyBhcXXDrScsXG4gICAgZHJvcEZvbGRlcnNIZXJlOiAnRGVqYSBsYXMgY2FycGV0YXMgYXF1w60nLFxuICAgIGludmFsaWREcm9wQXJlYTogJ0xvcyB7MH0gbm8gc2UgaW5zZXJ0YXJvbiBlbiBsYSB1YmljYWNpw7NuIGNvcnJlY3RhJyxcbiAgICBpbnZhbGlkRmlsZVR5cGU6ICdFcnJvciBhbCBjYXJnYXIgezB9IGFyY2hpdm8gKHMpIHlhIHF1ZSBubyBlcyBlbCB0aXBvIGRlIGFyY2hpdm8gcGVybWl0aWRvJyxcbiAgICBpbnZhbGlkQW1vdW50OiAnRXJyb3IgYWwgY2FyZ2FyIHswfSBhcmNoaXZvIChzKSB5YSBxdWUgZXhjZWRlIGxhIGNhbnRpZGFkIGxpbWl0ZSBkZSBhcmNoaXZvcy4nLFxuICAgIGludmFsaWRGb3JtYXQ6ICdFcnJvciBhbCBjYXJnYXIgezB9IGFyY2hpdm8gKHMpIHlhIHF1ZSBubyBjb2luY2lkZSBjb24gZWwgZm9ybWF0byAocyk6IHsxfS4nLFxuICAgIGludmFsaWRTaXplOiAnRXJyb3IgYWwgY2FyZ2FyIHswfSBhcmNoaXZvIChzKSB5YSBxdWUgbm8gY3VtcGxlIGNvbiBlbCB0YW1hw7FvIHBlcm1pdGlkbzogZGVzZGUgezF9IGhhc3RhIHsyfS4nLFxuICAgIG51bWJlck9mRmlsZXNBbGxvd2VkOiAnezB9IGFyY2hpdm8ocykgcGVybWl0aWRvKHMpJyxcbiAgICBhbGxvd2VkRm9ybWF0czogJ0Zvcm1hdG9zIGFjZXB0YWRvczogezB9LicsXG4gICAgYWxsb3dlZEZpbGVTaXplUmFuZ2U6ICdMaW1pdGUgZGUgdGFtYcOxbyBkZSBhcmNoaXZvOiBkZXNkZSB7MH0gaGFzdGEgezF9JyxcbiAgICBtYXhGaWxlU2l6ZUFsbG93ZWQ6ICdMaW1pdGUgZGUgdGFtYcOxbyBkZSBhcmNoaXZvOiBoYXN0YSB7MH0nLFxuICAgIG1pbkZpbGVTaXplQWxsb3dlZDogJ0xpbWl0ZSBkZSB0YW1hw7FvIGRlIGFyY2hpdm86IG1pbmltbyB7MH0nLFxuICAgIGVycm9yT2NjdXJyZWQ6ICdPY3VycmlvIHVuIGVycm9yJyxcbiAgICBzZW50V2l0aFN1Y2Nlc3M6ICdFbnZpYWRvIGNvbiDDqXhpdG8nXG4gIH0sXG4gIHB0OiA8UG9VcGxvYWRMaXRlcmFscz57XG4gICAgZmlsZXM6ICdhcnF1aXZvcycsXG4gICAgZm9sZGVyczogJ2RpcmV0w7NyaW9zJyxcbiAgICBzZWxlY3RGaWxlOiAnU2VsZWNpb25hciBhcnF1aXZvJyxcbiAgICBzZWxlY3RGaWxlczogJ1NlbGVjaW9uYXIgYXJxdWl2b3MnLFxuICAgIHNlbGVjdEZvbGRlcjogJ1NlbGVjaW9uYXIgcGFzdGEnLFxuICAgIHN0YXJ0U2VuZGluZzogJ0luaWNpYXIgZW52aW8nLFxuICAgIGRyYWdGaWxlc0hlcmU6ICdBcnJhc3RlIG9zIGFycXVpdm9zIGFxdWknLFxuICAgIGRyYWdGb2xkZXJzSGVyZTogJ0FycmFzdGUgYXMgcGFzdGFzIGFxdWknLFxuICAgIHNlbGVjdEZpbGVzT25Db21wdXRlcjogJ291IHNlbGVjaW9uZSBvcyBhcnF1aXZvcyBubyBjb21wdXRhZG9yJyxcbiAgICBzZWxlY3RGb2xkZXJPbkNvbXB1dGVyOiAnb3Ugc2VsZWNpb25lIGEgcGFzdGEgbm8gY29tcHV0YWRvcicsXG4gICAgZHJvcEZpbGVzSGVyZTogJ1NvbHRlIG9zIGFycXVpdm9zIGFxdWknLFxuICAgIGRyb3BGb2xkZXJzSGVyZTogJ1NvbHRlIGFzIHBhc3RhcyBhcXVpJyxcbiAgICBpbnZhbGlkRHJvcEFyZWE6ICdPcyB7MH0gbsOjbyBmb3JhbSBpbnNlcmlkb3Mgbm8gbG9jYWwgY29ycmV0bycsXG4gICAgaW52YWxpZEZpbGVUeXBlOiAnRmFsaGEgYW8gY2FycmVnYXIgezB9IGFycXVpdm8gKHMpLCBwb2lzIG7Do28gw6kgbyB0aXBvIGRlIGFycXVpdm8gcGVybWl0aWRvJyxcbiAgICBpbnZhbGlkQW1vdW50OiAnRmFsaGEgYW8gY2FycmVnYXIgezB9IGFycXVpdm8ocyksIHBvaXMgZXhjZWRlKG0pIGEgcXVhbnRpZGFkZSBsaW1pdGUgZGUgYXJxdWl2b3MuJyxcbiAgICBpbnZhbGlkRm9ybWF0OiAnRmFsaGEgYW8gY2FycmVnYXIgezB9IGFycXVpdm8ocyksIHBvaXMgbsOjbyBjb3JyZXNwb25kZShtKSBhbyhzKSBmb3JtYXRvKHMpOiB7MX0uJyxcbiAgICBpbnZhbGlkU2l6ZTogJ0ZhbGhhIGFvIGNhcnJlZ2FyIHswfSBhcnF1aXZvKHMpLCBwb2lzIG7Do28gYXRlbmRlIGFvIHRhbWFuaG8gcGVybWl0aWRvOiB7MX0gYXTDqSB7Mn0uJyxcbiAgICBudW1iZXJPZkZpbGVzQWxsb3dlZDogJ1F1YW50aWRhZGUgbcOheGltYTogezB9IGFycXVpdm8ocyknLFxuICAgIGFsbG93ZWRGb3JtYXRzOiAnRm9ybWF0b3MgYWRvdGFkb3M6IHswfS4nLFxuICAgIGFsbG93ZWRGaWxlU2l6ZVJhbmdlOiAnTGltaXRlIGRlIHRhbWFuaG8gcG9yIGFycXVpdm86IGRlIHswfSBhdMOpIHsxfScsXG4gICAgbWF4RmlsZVNpemVBbGxvd2VkOiAnTGltaXRlIGRlIHRhbWFuaG8gcG9yIGFycXVpdm86IGF0w6kgezB9JyxcbiAgICBtaW5GaWxlU2l6ZUFsbG93ZWQ6ICdMaW1pdGUgZGUgdGFtYW5obyBwb3IgYXJxdWl2bzogbm8gbcOtbmltbyB7MH0nLFxuICAgIGVycm9yT2NjdXJyZWQ6ICdPY29ycmV1IHVtIGVycm8nLFxuICAgIHNlbnRXaXRoU3VjY2VzczogJ0VudmlhZG8gY29tIHN1Y2Vzc28nXG4gIH0sXG4gIHJ1OiA8UG9VcGxvYWRMaXRlcmFscz57XG4gICAgZmlsZXM6ICfRhNCw0LnQu9GLJyxcbiAgICBmb2xkZXJzOiAn0L/QsNC/0LrQuCDRgSDRhNCw0LnQu9Cw0LzQuCcsXG4gICAgc2VsZWN0RmlsZTogJ9CS0YvQsdC10YDQuNGC0LUg0YTQsNC50LsnLFxuICAgIHNlbGVjdEZpbGVzOiAn0JLRi9Cx0LXRgNC40YLQtSDRhNCw0LnQu9GLJyxcbiAgICBzZWxlY3RGb2xkZXI6ICfQktGL0LHQtdGA0LjRgtC1INC/0LDQv9C60YMg0YEg0YTQsNC50LvQsNC80LgnLFxuICAgIHN0YXJ0U2VuZGluZzogJ9Cd0LDRh9Cw0YLRjCDQt9Cw0LPRgNGD0LfQutGDJyxcbiAgICBkcmFnRmlsZXNIZXJlOiAn0J/QtdGA0LXRgtCw0YnQuNGC0LUg0YTQsNC50LvRiyDRgdGO0LTQsCcsXG4gICAgZHJhZ0ZvbGRlcnNIZXJlOiAn0J/QtdGA0LXRgtCw0YnQuNGC0LUg0YHRjtC00LAg0L/QsNC/0LrQuCcsXG4gICAgc2VsZWN0RmlsZXNPbkNvbXB1dGVyOiAn0LjQu9C4INCy0YvQsdC10YDQuNGC0LUg0YTQsNC50LvRiyDQvdCwINC60L7QvNC/0YzRjtGC0LXRgNC1JyxcbiAgICBzZWxlY3RGb2xkZXJPbkNvbXB1dGVyOiAn0LjQu9C4INCy0YvQsdC10YDQuNGC0LUg0L/QsNC/0LrRgyDQvdCwINCy0LDRiNC10Lwg0LrQvtC80L/RjNGO0YLQtdGA0LUnLFxuICAgIGRyb3BGaWxlc0hlcmU6ICfQntGB0YLQsNCy0YzRgtC1INGE0LDQudC70Ysg0LfQtNC10YHRjCcsXG4gICAgZHJvcEZvbGRlcnNIZXJlOiAn0J/QtdGA0LXRgtCw0YnQuNGC0LUg0YHRjtC00LAg0L/QsNC/0LrQuCcsXG4gICAgaW52YWxpZERyb3BBcmVhOiAnezB9INC90LUg0LHRi9C70Lgg0LLRgdGC0LDQstC70LXQvdGLINCyINC/0YDQsNCy0LjQu9GM0L3QvtC8INC80LXRgdGC0LUuJyxcbiAgICBpbnZhbGlkRmlsZVR5cGU6ICfQndC1INGD0LTQsNC70L7RgdGMINC30LDQs9GA0YPQt9C40YLRjCDRhNCw0LnQu9GLIHswfSwg0YLQsNC6INC60LDQuiDRjdGC0L4g0L3QtdCy0LXRgNC90YvQuSDRgtC40L8g0YTQsNC50LvQsCcsXG4gICAgaW52YWxpZEFtb3VudDogJ07Do28gZm9pIHBvc3PDrXZlbCBjYXJyZWdhciBvcyBhcnF1aXZvcyB7MH0gcG9ycXVlIGVsZXMgZXhjZWRlcmFtIG8gbGltaXRlIGRlIGFycXVpdm9zLicsXG4gICAgaW52YWxpZEZvcm1hdDogJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0LfQsNCz0YDRg9C30LjRgtGMINGE0LDQudC70YsgezB9LCDRgtCw0Log0LrQsNC6INC+0L3QuCDQvdC1INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGCINGE0L7RgNC80LDRgtGDICjQsNC8KTogezF9LicsXG4gICAgaW52YWxpZFNpemU6ICfQndC1INGD0LTQsNC70L7RgdGMINC30LDQs9GA0YPQt9C40YLRjCDRhNCw0LnQu9GLIHswfSwg0L/QvtGB0LrQvtC70YzQutGDINC+0L3QuCDQvdC1INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGCINGA0LDQt9GA0LXRiNC10L3QvdC+0LzRgyDRgNCw0LfQvNC10YDRgzog0L7RgiB7MX0g0LTQviB7Mn0uJyxcbiAgICBudW1iZXJPZkZpbGVzQWxsb3dlZDogJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQvjogezB9INGE0LDQudC70L7QsicsXG4gICAgYWxsb3dlZEZvcm1hdHM6ICfQpNC+0YDQvNCw0YLRiyDQv9GA0LjQvdGP0YLRizogezB9LicsXG4gICAgYWxsb3dlZEZpbGVTaXplUmFuZ2U6ICfQntCz0YDQsNC90LjRh9C10L3QuNC1INGA0LDQt9C80LXRgNCwINGE0LDQudC70LA6INC+0YIgezB9INC00L4gezF9JyxcbiAgICBtYXhGaWxlU2l6ZUFsbG93ZWQ6ICfQntCz0YDQsNC90LjRh9C10L3QuNC1INGA0LDQt9C80LXRgNCwINGE0LDQudC70LA6INC00L4gezB9JyxcbiAgICBtaW5GaWxlU2l6ZUFsbG93ZWQ6ICfQntCz0YDQsNC90LjRh9C10L3QuNC1INGA0LDQt9C80LXRgNCwINGE0LDQudC70LA6INC90LUg0LzQtdC90LXQtSB7MH0nLFxuICAgIGVycm9yT2NjdXJyZWQ6ICfQn9GA0L7QuNC30L7RiNC70LAg0L7RiNC40LHQutCwLicsXG4gICAgc2VudFdpdGhTdWNjZXNzOiAn0KPRgdC/0LXRiNC90L4g0L7RgtC/0YDQsNCy0LvQtdC90L4nXG4gIH1cbn07XG5cbmNvbnN0IHBvVXBsb2FkRm9ybUZpZWxkRGVmYXVsdCA9ICdmaWxlcyc7XG5cbmNvbnN0IHBvVXBsb2FkTWF4RmlsZVNpemUgPSAzMTQ1NzI4MDsgLy8gMzBNQlxuY29uc3QgcG9VcGxvYWRNaW5GaWxlU2l6ZSA9IDA7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBjb21wb25lbnRlIGBwby11cGxvYWRgIHBlcm1pdGUgcXVlIG8gdXN1w6FyaW8gZW52aWUgYXJxdWl2byhzKSBhbyBzZXJ2aWRvciBlIGFjb21wYW5oZSBvIHByb2dyZXNzby5cbiAqIEVzdGUgY29tcG9uZW50ZSB0YW1iw6ltIHBvc3NpYmlsaXRhIGFsZ3VtYXMgY29uZmlndXJhw6fDtWVzIGNvbW86XG4gKiAg4oCTIEVudmlvIGRlIGRpcmV0w7NyaW9zLCBvbmRlIGVsZSBhY2Vzc2EgbyBkaXJldMOzcmlvIHNlbGVjaW9uYWRvIGFzc2ltIGNvbW8gc2V1cyBzdWItZGlyZXTDs3Jpb3M7XG4gKiAgLSBNw7psdGlwbGEgc2VsZcOnw6NvLCBvbmRlIG8gdXN1w6FyaW8gcG9kZSBlbnZpYXIgbWFpcyBkZSB1bSBhcnF1aXZvIGFvIHNlcnZpZG9yLlxuICogIC0gQXV0byBlbnZpbywgb25kZSBvIGFycXVpdm8gw6kgZW52aWFkbyBpbWVkaWF0YW1lbnRlIGFww7NzIGEgc2VsZcOnw6NvIGRvIHVzdcOhcmlvLCBuw6NvIG5lY2Vzc2l0YW5kbyBxdWUgbyB1c3XDoXJpb1xuICogY2xpcXVlIGVtIGVudmlhci5cbiAqICAtIFJlc3RyacOnw7VlcyBkZSBmb3JtYXRvcyBkZSBhcnF1aXZvIGUgdGFtYW5oby5cbiAqICAtIEZ1bsOnw6NvIGRlIHN1Y2Vzc28gcXVlIHNlcsOhIGRpc3BhcmFkYSBxdWFuZG8gb3MgYXJxdWl2b3MgZm9yZW0gZW52aWFkb3MgY29tIHN1Y2Vzc28uXG4gKiAgLSBGdW7Dp8OjbyBkZSBlcnJvIHF1ZSBzZXLDoSBkaXNwYXJhZGEgcXVhbmRvIGhvdXZlciBlcnJvIG5vIGVudmlvIGRvcyBhcnF1aXZvcy5cbiAqICAtIFBlcm1pdGUgaGFiaWxpdGFyIHVtYSDDoXJlYSBvbmRlIG9zIGFycXVpdm9zIHBvZGVtIHNlciBhcnJhc3RhZG9zLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb1VwbG9hZEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dG8tZm9jdXMnKSBASW5wdXRCb29sZWFuKCkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGVtICpwaXhlbHMqIGEgYWx0dXJhIGRhIMOhcmVhIG9uZGUgcG9kZW0gc2VyIGFycmFzdGFkb3Mgb3MgYXJxdWl2b3MuIEEgYWx0dXJhIG3DrW5pbWEgYWNlaXRhIMOpIGAxNjBweGAuXG4gICAqXG4gICAqID4gRXN0YSBwcm9wcmllZGFkZSBmdW5jaW9uYSBzb21lbnRlIHNlIGEgcHJvcHJpZWRhZGUgYHAtZHJhZy1kcm9wYCBlc3RpdmVyIGhhYmlsaXRhZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAzMjBgXG4gICAqL1xuICBASW5wdXQoJ3AtZHJhZy1kcm9wLWhlaWdodCcpIGRyYWdEcm9wSGVpZ2h0OiBudW1iZXI7XG5cbiAgLyoqIFLDs3R1bG8gZG8gY2FtcG8uICovXG4gIEBJbnB1dCgncC1sYWJlbCcpIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKiBUZXh0byBkZSBhcG9pbyBwYXJhIG8gY2FtcG8uICovXG4gIEBJbnB1dCgncC1oZWxwJykgaGVscD86IHN0cmluZztcblxuICAvKiogVVJMIHF1ZSBkZXZlIHNlciBmZWl0YSBhIHJlcXVpc2nDp8OjbyBjb20gb3MgYXJxdWl2b3Mgc2VsZWNpb25hZG9zLiAqL1xuICBASW5wdXQoJ3AtdXJsJykgdXJsOiBzdHJpbmc7XG5cbiAgLyoqIERlZmluZSBvIHZhbG9yIGRvIGF0cmlidXRvIGBuYW1lYCBkbyBjb21wb25lbnRlLiAqL1xuICBASW5wdXQoJ25hbWUnKSBuYW1lOiBzdHJpbmcgPSAnZmlsZSc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHNlIG8gZW52aW8gZG8gYXJxdWl2byBzZXLDoSBhdXRvbcOhdGljbyBhbyBzZWxlY2lvbmFyIG8gbWVzbW8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1hdXRvLXVwbG9hZCcpIGF1dG9VcGxvYWQ/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb3BjaW9uYWwgc2Vyw6EgZXhpYmlkYS5cbiAgICpcbiAgICogPiBOw6NvIHNlcsOhIGV4aWJpZGEgYSBpbmRpY2HDp8OjbyBzZTpcbiAgICogIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAgLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25hbCcpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIC8qKiBPYmpldG8gcXVlIGNvbnTDqW0gb3MgY2FiZcOnYWxob3MgcXVlIHNlcsOhIGVudmlhZG8gbmEgcmVxdWlzacOnw6NvIGRvcyBhcnF1dmlvcy4gKi9cbiAgQElucHV0KCdwLWhlYWRlcnMnKSBoZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+IH07XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRnVuw6fDo28gcXVlIHNlcsOhIGV4ZWN1dGFkYSBubyBtb21lbnRvIGRlIHJlYWxpemFyIG8gZW52aW8gZG8gYXJxdWl2byxcbiAgICogb25kZSBzZXLDoSBwb3Nzw612ZWwgYWRpY2lvbmFyIGluZm9ybWHDp8O1ZXMgYW8gcGFyw6JtZXRybyBxdWUgc2Vyw6EgZW52aWFkbyBuYSByZXF1aXNpw6fDo28uXG4gICAqIMOJIHBhc3NhZG8gcG9yIHBhcsOibWV0cm8gdW0gb2JqZXRvIGNvbSBvIGFycXVpdm8gZSBhIHByb3BpZWRhZGUgZGF0YSBuZXN0YSBwcm9wcmllZGFkZSBwb2RlIHNlciBpbmZvcm1hZG8gYWxndW0gZGFkbyxcbiAgICogcXVlIHNlcsOhIGVudmlhZG8gZW0gY29uanVudG8gY29tIG8gYXJxdWl2byBuYSByZXF1aXNpw6fDo28sIHBvciBleGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogICBldmVudC5kYXRhID0ge2lkOiAnaWQgZG8gdXN1YXJpbyd9O1xuICAgKiBgYGBcbiAgICovXG4gIEBPdXRwdXQoJ3AtdXBsb2FkJykgb25VcGxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIHNlcsOhIGRpc3BhcmFkbyBxdWFuZG8gb2NvcnJlciBhbGd1bSBlcnJvIG5vIGVudmlvIGRvIGFycXVpdm8uXG4gICAqID4gUG9yIHBhcsOibWV0cm8gc2Vyw6EgcGFzc2FkbyBvIG9iamV0byBkbyByZXRvcm5vIHF1ZSDDqSBkbyB0aXBvIGBIdHRwRXJyb3JSZXNwb25zZWAuXG4gICAqL1xuICBAT3V0cHV0KCdwLWVycm9yJykgb25FcnJvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gc2Vyw6EgZGlzcGFyYWRvIHF1YW5kbyBvIGVudmlvIGRvIGFycXVpdm8gZm9yIHJlYWxpemFkbyBjb20gc3VjZXNzby5cbiAgICogPiBQb3IgcGFyw6JtZXRybyBzZXLDoSBwYXNzYWRvIG8gb2JqZXRvIGRvIHJldG9ybm8gcXVlIMOpIGRvIHRpcG8gYEh0dHBSZXNwb25zZWAuXG4gICAqL1xuICBAT3V0cHV0KCdwLXN1Y2Nlc3MnKSBvblN1Y2Nlc3M6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRnVuw6fDo28gcGFyYSBhdHVhbGl6YXIgbyBuZ01vZGVsIGRvIGNvbXBvbmVudGUsIG5lY2Vzc8OhcmlvIHF1YW5kbyBuw6NvIGZvciB1dGlsaXphZG8gZGVudHJvIGRhICp0YWcqIGBmb3JtYC5cbiAgICpcbiAgICogTmEgdmVyc8OjbyAxMi4yLjAgZG8gQW5ndWxhciBhIHZlcmlmaWNhw6fDo28gYHN0cmljdFRlbXBsYXRlc2AgdmVtIHRydWUgY29tbyBkZWZhdWx0LiBQb3J0YW50bywgcGFyYSB1dGlsaXphclxuICAgKiB0d28td2F5IGJpbmRpbmcgbm8gY29tcG9uZW50ZSBkZXZlIHNlIHV0aWxpemFyIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLXVwbG9hZCAuLi4gW25nTW9kZWxdPVwiVXBsb2FkTW9kZWxcIiAobmdNb2RlbENoYW5nZSk9XCJ1cGxvYWRNb2RlbCA9ICRldmVudFwiPiA8L3BvLXVwbG9hZD5cbiAgICogYGBgXG4gICAqXG4gICAqL1xuICBAT3V0cHV0KCduZ01vZGVsQ2hhbmdlJykgbmdNb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBhbGxvd2VkRXh0ZW5zaW9uczogc3RyaW5nO1xuICBjdXJyZW50RmlsZXM6IEFycmF5PFBvVXBsb2FkRmlsZT47XG5cbiAgY2FuSGFuZGxlRGlyZWN0b3J5OiBib29sZWFuO1xuICBvbk1vZGVsQ2hhbmdlOiBhbnk7XG5cbiAgcHJvdGVjdGVkIGV4dGVuc2lvbk5vdEFsbG93ZWQgPSAwO1xuICBwcm90ZWN0ZWQgcXVhbnRpdHlOb3RBbGxvd2VkID0gMDtcbiAgcHJvdGVjdGVkIHNpemVOb3RBbGxvd2VkID0gMDtcbiAgcHJvdGVjdGVkIG9uTW9kZWxUb3VjaGVkOiBhbnkgPSBudWxsO1xuXG4gIHByaXZhdGUgX2RpcmVjdG9yeT86IGJvb2xlYW47XG4gIHByaXZhdGUgX2Rpc2FibGVkPzogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfZHJhZ0Ryb3A/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZpbGVSZXN0cmljdGlvbnM/OiBQb1VwbG9hZEZpbGVSZXN0cmljdGlvbnM7XG4gIHByaXZhdGUgX2Zvcm1GaWVsZD86IHN0cmluZztcbiAgcHJpdmF0ZSBfaGlkZVJlc3RyaWN0aW9uc0luZm8/OiBib29sZWFuO1xuICBwcml2YXRlIF9oaWRlU2VsZWN0QnV0dG9uPzogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfaGlkZVNlbmRCdXR0b24/OiBib29sZWFuO1xuICBwcml2YXRlIF9pc011bHRpcGxlPzogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfbGl0ZXJhbHM/OiBhbnk7XG4gIHByaXZhdGUgX3JlcXVpcmVkPzogYm9vbGVhbjtcbiAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nO1xuICBwcml2YXRlIHZhbGlkYXRvckNoYW5nZTogYW55O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgYSBzZWxlw6fDo28gZGUgZGlyZXTDs3Jpb3MgY29udGVuZG8gdW0gb3UgbWFpcyBhcnF1aXZvcyBwYXJhIGVudmlvLlxuICAgKlxuICAgKiA+IEEgaGFiaWxpdGHDp8OjbyBkZXN0YSBwcm9wcmllZGFkZSBzZSByZXN0cmluZ2UgYXBlbmFzIMOgIHNlbGXDp8OjbyBkZSBkaXJldMOzcmlvcy5cbiAgICpcbiAgICogPiBEZWZpbmnDp8OjbyBuw6NvIHN1cG9ydGFkYSBwZWxvIGJyb3dzZXIgKipJbnRlcm5ldCBFeHBsb3JlcioqLCB0b2RhdmlhIHNlcsOhIHBvc3PDrXZlbCBhIHNlbGXDp8OjbyBkZSBhcnF1aXZvcyBwYWRyw6NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtZGlyZWN0b3J5Jykgc2V0IGRpcmVjdG9yeSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2RpcmVjdG9yeSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuXG4gICAgdGhpcy5jYW5IYW5kbGVEaXJlY3RvcnkgPSB0aGlzLl9kaXJlY3RvcnkgJiYgIWlzSUUoKSAmJiAhaXNNb2JpbGUoKTtcbiAgICB0aGlzLnNldERpcmVjdG9yeUF0dHJpYnV0ZSh0aGlzLmNhbkhhbmRsZURpcmVjdG9yeSk7XG4gIH1cblxuICBnZXQgZGlyZWN0b3J5KCkge1xuICAgIHJldHVybiB0aGlzLl9kaXJlY3Rvcnk7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFeGliZSBhIMOhcmVhIG9uZGUgw6kgcG9zc8OtdmVsIGFycmFzdGFyIGUgc2VsZWNpb25hciBvcyBhcnF1aXZvcy4gUXVhbmRvIGVzdGl2ZXIgZGVmaW5pZGEsIG9taXRlIG8gYm90w6NvIHBhcmEgc2VsZcOnw6NvIGRlIGFycXVpdm9zXG4gICAqIGF1dG9tYXRpY2FtZW50ZS5cbiAgICpcbiAgICogPiBSZWNvbWVuZGFtb3MgdXRpbGl6YXIgYXBlbmFzIHVtIGBwby11cGxvYWRgIGNvbSBlc3RhIGZ1bmNpb25hbGlkYWRlIHBvciB0ZWxhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtZHJhZy1kcm9wJykgc2V0IGRyYWdEcm9wKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZHJhZ0Ryb3AgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBkcmFnRHJvcCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZHJhZ0Ryb3A7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBPY3VsdGEgdmlzdWFsbWVudGUgYXMgaW5mb3JtYcOnw7VlcyBkZSByZXN0cmnDp8O1ZXMgcGFyYSBvIHVwbG9hZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWhpZGUtcmVzdHJpY3Rpb25zLWluZm8nKSBzZXQgaGlkZVJlc3RyaWN0aW9uc0luZm8odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9oaWRlUmVzdHJpY3Rpb25zSW5mbyA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IGhpZGVSZXN0cmljdGlvbnNJbmZvKCkge1xuICAgIHJldHVybiB0aGlzLl9oaWRlUmVzdHJpY3Rpb25zSW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9taXRlIG8gYm90w6NvIGRlIHNlbGXDp8OjbyBkZSBhcnF1aXZvcy5cbiAgICpcbiAgICogPiBDYXNvIG8gdmFsb3IgZGVmaW5pZG8gc2VqYSBgdHJ1ZWAsIGNhYmVyw6EgYW8gZGVzZW52b2x2ZWRvciBhIHJlc3BvbnNhYmlsaWRhZGVcbiAgICogcGVsYSBjaGFtYWRhIGRvIG3DqXRvZG8gYHNlbGVjdEZpbGVzKClgIHBhcmEgc2VsZcOnw6NvIGRlIGFycXVpdm9zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtaGlkZS1zZWxlY3QtYnV0dG9uJykgc2V0IGhpZGVTZWxlY3RCdXR0b24odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9oaWRlU2VsZWN0QnV0dG9uID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cbiAgZ2V0IGhpZGVTZWxlY3RCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGVTZWxlY3RCdXR0b247XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBPbWl0ZSBvIGJvdMOjbyBkZSBlbnZpbyBkZSBhcnF1aXZvcy5cbiAgICpcbiAgICogPiBDYXNvIG8gdmFsb3IgZGVmaW5pZG8gc2VqYSBgdHJ1ZWAsIGNhYmVyw6EgYW8gZGVzZW52b2x2ZWRvciBhIHJlc3BvbnNhYmlsaWRhZGVcbiAgICogcGVsYSBjaGFtYWRhIGRvIG3DqXRvZG8gYHNlbmRGaWxlcygpYCBwYXJhIGVudmlvIGRvKHMpIGFycXVpdm8ocykgc2VsZWNpb25hZG8ocykuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1oaWRlLXNlbmQtYnV0dG9uJykgc2V0IGhpZGVTZW5kQnV0dG9uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faGlkZVNlbmRCdXR0b24gPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuICBnZXQgaGlkZVNlbmRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGVTZW5kQnV0dG9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLXVwbG9hZGAuXG4gICAqXG4gICAqIEV4aXN0ZW0gZHVhcyBtYW5laXJhcyBkZSBjdXN0b21pemFyIG8gY29tcG9uZW50ZTpcbiAgICpcbiAgICogLSBwYXNzYW5kbyB1bSBvYmpldG8gaW1wbGVtZW50YW5kbyBhIGludGVyZmFjZSBgUG9VcGxvYWRMaXRlcmFsc2AgY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpcztcbiAgICogLSBwYXNzYW5kbyBhcGVuYXMgYXMgbGl0ZXJhaXMgcXVlIGRlc2VqYSBjdXN0b21pemFyOlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb1VwbG9hZExpdGVyYWxzID0ge1xuICAgKiAgICBmb2xkZXJzOiAnUGFzdGFzJyxcbiAgICogICAgc2VsZWN0RmlsZTogJ0J1c2NhciBhcnF1aXZvJyxcbiAgICogICAgc3RhcnRTZW5kaW5nOiAnRW52aWFyJ1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhcyBsaXRlcmFpcyBjdXN0b21pemFkYXMsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGU6XG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tdXBsb2FkXG4gICAqICAgW3AtbGl0ZXJhbHNdPVwiY3VzdG9tTGl0ZXJhbHNcIj5cbiAgICogPC9wby11cGxvYWQ+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gb2JqZXRvIHBhZHLDo28gZGUgbGl0ZXJhaXMgc2Vyw6EgdHJhZHV6aWRvIGRlIGFjb3JkbyBjb20gbyBpZGlvbWEgZG8gKmJyb3dzZXIqIChwdCwgZW4sIGVzLCBydSkuXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvVXBsb2FkTGl0ZXJhbHMpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSB7XG4gICAgICAgIC4uLnBvVXBsb2FkTGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAgIC4uLnBvVXBsb2FkTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb1VwbG9hZExpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgICB9XG4gIH1cbiAgZ2V0IGxpdGVyYWxzKCkge1xuICAgIHJldHVybiB0aGlzLl9saXRlcmFscyB8fCBwb1VwbG9hZExpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBxdWUgc2VndWUgYSBkZWZpbmnDp8OjbyBkYSBpbnRlcmZhY2UgYFBvVXBsb2FkRmlsZVJlc3RyaWN0aW9uc2AsXG4gICAqIHF1ZSBwb3NzaWJpbGl0YSBkZWZpbmlyIHRhbWFuaG8gbcOheGltby9tw61uaW1vIGUgZXh0ZW5zw6NvIGRvcyBhcnF1aXZvcyBwZXJtaXRpZG9zLlxuICAgKi9cbiAgQElucHV0KCdwLXJlc3RyaWN0aW9ucycpIHNldCBmaWxlUmVzdHJpY3Rpb25zKHJlc3RyaWN0aW9uczogUG9VcGxvYWRGaWxlUmVzdHJpY3Rpb25zKSB7XG4gICAgdGhpcy5fZmlsZVJlc3RyaWN0aW9ucyA9IHRoaXMuaW5pdFJlc3RyaWN0aW9ucyhyZXN0cmljdGlvbnMpO1xuXG4gICAgdGhpcy5zZXRBbGxvd2VkRXh0ZW5zaW9ucyhyZXN0cmljdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGZpbGVSZXN0cmljdGlvbnMoKTogUG9VcGxvYWRGaWxlUmVzdHJpY3Rpb25zIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZVJlc3RyaWN0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE5vbWUgZG8gY2FtcG8gZGUgZm9ybXVsw6FyaW8gcXVlIHNlcsOhIGVudmlhZG8gcGFyYSBvIHNlcnZpw6dvIGluZm9ybWFkbyBuYSBwcm9wcmllZGFkZSBgcC11cmxgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmlsZXNgXG4gICAqL1xuICBASW5wdXQoJ3AtZm9ybS1maWVsZCcpIHNldCBmb3JtRmllbGQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Zvcm1GaWVsZCA9IHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IHBvVXBsb2FkRm9ybUZpZWxkRGVmYXVsdDtcblxuICAgIHRoaXMuZ2V0VXBsb2FkU2VydmljZSgpLmZvcm1GaWVsZCA9IHRoaXMuZm9ybUZpZWxkO1xuICB9XG5cbiAgZ2V0IGZvcm1GaWVsZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9mb3JtRmllbGQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6EgZGVzYWJpbGl0YWRvLlxuICAgKi9cbiAgQElucHV0KCdwLWRpc2FibGVkJykgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbCh0aGlzLmN1cnJlbnRGaWxlcyk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHNlIHBvZGUgc2VsZWNpb25hciBtYWlzIGRlIHVtIGFycXVpdm8uXG4gICAqXG4gICAqID4gU2UgdXRpbGl6YWRhIGEgYHAtZGlyZWN0b3J5YCwgaGFiaWxpdGEtc2UgYXV0b21hdGljYW1lbnRlIGVzdGEgcHJvcHJpZWRhZGUuXG4gICAqL1xuICBASW5wdXQoJ3AtbXVsdGlwbGUnKSBzZXQgaXNNdWx0aXBsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzTXVsdGlwbGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBpc011bHRpcGxlKCkge1xuICAgIHJldHVybiB0aGlzLmNhbkhhbmRsZURpcmVjdG9yeSA/IHRydWUgOiB0aGlzLl9pc011bHRpcGxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHF1ZSBvIGNhbXBvIHNlcsOhIG9icmlnYXTDs3Jpby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXJlcXVpcmVkJykgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb252ZXJ0VG9Cb29sZWFuKHJlcXVpcmVkKTtcblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbCh0aGlzLmN1cnJlbnRGaWxlcyk7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHVwbG9hZFNlcnZpY2U6IFBvVXBsb2FkU2VydmljZSwgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgb3MgZXN0YWRvcyBkZSBoYWJpbGl0YWRvIHZpYSBmb3JtcyBhcGlcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHZhbGlkYXRlKGFic3RyYWN0Q29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKHJlcXVpcmVkRmFpbGVkKHRoaXMucmVxdWlyZWQsIHRoaXMuZGlzYWJsZWQsIGFic3RyYWN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlcXVpcmVkOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZShtb2RlbDogYW55KTogdm9pZCB7XG4gICAgaWYgKG1vZGVsKSB7XG4gICAgICBpZiAoIWlzRXF1YWxzKHRoaXMuY3VycmVudEZpbGVzLCBtb2RlbCkpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsZXMgPSB0aGlzLnBhcnNlRmlsZXMobW9kZWwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRGaWxlcyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNFeGNlZWRlZEZpbGVMaW1pdChjdXJyZW50RmlsZXNMZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzTXVsdGlwbGUgJiZcbiAgICAgIHRoaXMuZmlsZVJlc3RyaWN0aW9ucyAmJlxuICAgICAgdGhpcy5maWxlUmVzdHJpY3Rpb25zLm1heEZpbGVzID4gMCAmJlxuICAgICAgdGhpcy5maWxlUmVzdHJpY3Rpb25zLm1heEZpbGVzIDw9IGN1cnJlbnRGaWxlc0xlbmd0aFxuICAgICk7XG4gIH1cblxuICAvLyBGYXogbyBwYXJzZSBkb3MgYXJxdWl2b3Mgc2VsZWNpb25hZG9zIHBhcmEgYXJxdWl2b3MgZG8gZm9ybWF0byBQb1VwbG9hZEZpbGUgZSBhdHVhbGl6YSBvcyBhcnF1aXZvcyBjb3JyZW50ZXMuXG4gIHByb3RlY3RlZCBwYXJzZUZpbGVzKGZpbGVzOiBBcnJheTxGaWxlPik6IEFycmF5PFBvVXBsb2FkRmlsZT4ge1xuICAgIGxldCBwb1VwbG9hZEZpbGVzOiBBcnJheTxQb1VwbG9hZEZpbGU+ID0gdGhpcy5jdXJyZW50RmlsZXMgfHwgW107XG4gICAgY29uc3QgZmlsZXNMZW5ndGggPSBmaWxlcy5sZW5ndGg7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmlzRXhjZWVkZWRGaWxlTGltaXQocG9VcGxvYWRGaWxlcy5sZW5ndGgpKSB7XG4gICAgICAgIHRoaXMucXVhbnRpdHlOb3RBbGxvd2VkID0gZmlsZXNMZW5ndGggLSB0aGlzLmZpbGVSZXN0cmljdGlvbnMubWF4RmlsZXM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29uc3QgZmlsZSA9IG5ldyBQb1VwbG9hZEZpbGUoZmlsZXNbaV0pO1xuXG4gICAgICBpZiAodGhpcy5jaGVja1Jlc3RyaWN0aW9ucyhmaWxlKSkge1xuICAgICAgICBwb1VwbG9hZEZpbGVzID0gdGhpcy5pbnNlcnRGaWxlSW5GaWxlcyhmaWxlLCBwb1VwbG9hZEZpbGVzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZW5kRmVlZGJhY2soKTtcbiAgICByZXR1cm4gcG9VcGxvYWRGaWxlcztcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1vZGVsKG1vZGVsOiBhbnkpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKG1vZGVsKTtcbiAgICB9XG4gIH1cblxuICAvLyBWZXJpZmljYSBzZSBvIGFycXVpdm8gZXN0w6EgZGUgYWNvcmRvIGNvbSBhcyByZXN0cmnDp8O1ZXMuXG4gIHByaXZhdGUgY2hlY2tSZXN0cmljdGlvbnMoZmlsZTogUG9VcGxvYWRGaWxlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVzdHJpY3Rpb25zID0gdGhpcy5maWxlUmVzdHJpY3Rpb25zO1xuXG4gICAgaWYgKHJlc3RyaWN0aW9ucykge1xuICAgICAgY29uc3QgYWxsb3dlZEV4dGVuc2lvbnMgPSByZXN0cmljdGlvbnMuYWxsb3dlZEV4dGVuc2lvbnM7XG4gICAgICBjb25zdCBtaW5GaWxlU2l6ZSA9IHJlc3RyaWN0aW9ucy5taW5GaWxlU2l6ZTtcbiAgICAgIGNvbnN0IG1heEZpbGVTaXplID0gcmVzdHJpY3Rpb25zLm1heEZpbGVTaXplO1xuXG4gICAgICBjb25zdCBpc0FjY2VwdCA9IGFsbG93ZWRFeHRlbnNpb25zID8gdGhpcy5pc0FsbG93ZWRFeHRlbnNpb24oZmlsZS5leHRlbnNpb24sIGFsbG93ZWRFeHRlbnNpb25zKSA6IHRydWU7XG4gICAgICBjb25zdCBpc0FjY2VwdFNpemUgPSBmaWxlLnNpemUgPj0gbWluRmlsZVNpemUgJiYgZmlsZS5zaXplIDw9IG1heEZpbGVTaXplO1xuXG4gICAgICBpZiAoIWlzQWNjZXB0U2l6ZSkge1xuICAgICAgICB0aGlzLnNpemVOb3RBbGxvd2VkID0gdGhpcy5zaXplTm90QWxsb3dlZCArIDE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpc0FjY2VwdCAmJiBpc0FjY2VwdFNpemU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGV4aXN0c0ZpbGVTYW1lTmFtZShmaWxlOiBQb1VwbG9hZEZpbGUsIGZpbGVzOiBBcnJheTxQb1VwbG9hZEZpbGU+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpbGVzLnNvbWUoY3VycmVudEZpbGUgPT4gZmlsZS5uYW1lID09PSBjdXJyZW50RmlsZS5uYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VXBsb2FkU2VydmljZSgpOiBQb1VwbG9hZFNlcnZpY2Uge1xuICAgIHJldHVybiB0aGlzLnVwbG9hZFNlcnZpY2U7XG4gIH1cblxuICBwcml2YXRlIGluc2VydEZpbGVJbkZpbGVzKG5ld0ZpbGU6IFBvVXBsb2FkRmlsZSwgZmlsZXM6IEFycmF5PFBvVXBsb2FkRmlsZT4pIHtcbiAgICBpZiAodGhpcy5leGlzdHNGaWxlU2FtZU5hbWUobmV3RmlsZSwgZmlsZXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVFeGlzdHNGaWxlSW5GaWxlcyhuZXdGaWxlLCBmaWxlcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgZmlsZXMucHVzaChuZXdGaWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsZXMuc3BsaWNlKDAsIGZpbGVzLmxlbmd0aCwgbmV3RmlsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FsbG93ZWRFeHRlbnNpb24oZXh0ZW5zaW9uOiBzdHJpbmcsIGFsbG93ZWRFeHRlbnNpb25zOiBBcnJheTxzdHJpbmc+ID0gW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBpc0FsbG93ZWQgPSBhbGxvd2VkRXh0ZW5zaW9ucy5zb21lKGV4dCA9PiBleHQudG9Mb3dlckNhc2UoKSA9PT0gZXh0ZW5zaW9uKTtcbiAgICBpZiAoIWlzQWxsb3dlZCkge1xuICAgICAgdGhpcy5leHRlbnNpb25Ob3RBbGxvd2VkID0gdGhpcy5leHRlbnNpb25Ob3RBbGxvd2VkICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIGlzQWxsb3dlZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWxsb3dlZEV4dGVuc2lvbnMocmVzdHJpY3Rpb25zOiBQb1VwbG9hZEZpbGVSZXN0cmljdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IF9hbGxvd2VkRXh0ZW5zaW9ucyA9IHJlc3RyaWN0aW9ucy5hbGxvd2VkRXh0ZW5zaW9ucyB8fCBbXTtcblxuICAgIHRoaXMuYWxsb3dlZEV4dGVuc2lvbnMgPSBfYWxsb3dlZEV4dGVuc2lvbnMuam9pbignLCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UmVzdHJpY3Rpb25zKHJlc3RyaWN0aW9uczogUG9VcGxvYWRGaWxlUmVzdHJpY3Rpb25zKTogUG9VcGxvYWRGaWxlUmVzdHJpY3Rpb25zIHtcbiAgICBpZiAoIXJlc3RyaWN0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1pbkZpbGVTaXplID0gcmVzdHJpY3Rpb25zLm1pbkZpbGVTaXplIHx8IHBvVXBsb2FkTWluRmlsZVNpemU7XG4gICAgY29uc3QgbWF4RmlsZVNpemUgPSByZXN0cmljdGlvbnMubWF4RmlsZVNpemUgfHwgcG9VcGxvYWRNYXhGaWxlU2l6ZTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5yZXN0cmljdGlvbnMsXG4gICAgICBtYXhGaWxlU2l6ZTogbWF4RmlsZVNpemUsXG4gICAgICBtaW5GaWxlU2l6ZTogbWluRmlsZVNpemVcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVFeGlzdHNGaWxlSW5GaWxlcyhuZXdGaWxlOiBQb1VwbG9hZEZpbGUsIGZpbGVzOiBBcnJheTxQb1VwbG9hZEZpbGU+KSB7XG4gICAgY29uc3QgZmlsZUluZGV4ID0gZmlsZXMuZmluZEluZGV4KFxuICAgICAgY3VycmVudEZpbGUgPT4gbmV3RmlsZS5uYW1lID09PSBjdXJyZW50RmlsZS5uYW1lICYmIGN1cnJlbnRGaWxlLnN0YXR1cyAhPT0gUG9VcGxvYWRTdGF0dXMuVXBsb2FkZWRcbiAgICApO1xuXG4gICAgaWYgKGZpbGVJbmRleCAhPT0gLTEpIHtcbiAgICAgIGZpbGVzLnNwbGljZShmaWxlSW5kZXgsIDEsIG5ld0ZpbGUpO1xuICAgIH1cblxuICAgIHJldHVybiBmaWxlcztcbiAgfVxuXG4gIGFic3RyYWN0IHNlbmRGZWVkYmFjaygpOiB2b2lkO1xuXG4gIGFic3RyYWN0IHNldERpcmVjdG9yeUF0dHJpYnV0ZSh2YWx1ZTogYm9vbGVhbik7XG59XG4iXX0=
|