@sapui5/sap.fe.macros 1.141.2 → 1.143.0
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/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +4 -10
- package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
- package/src/sap/fe/macros/Chart.js +34 -23
- package/src/sap/fe/macros/Chart.tsx +25 -11
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +47 -36
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +50 -31
- package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
- package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
- package/src/sap/fe/macros/CommonHelper.js +14 -24
- package/src/sap/fe/macros/CommonHelper.ts +18 -25
- package/src/sap/fe/macros/ConditionalSwitch.js +1 -2
- package/src/sap/fe/macros/ConditionalSwitch.tsx +0 -1
- package/src/sap/fe/macros/ConditionalSwitchProperty.js +1 -3
- package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +0 -2
- package/src/sap/fe/macros/Field.js +34 -17
- package/src/sap/fe/macros/Field.ts +64 -32
- package/src/sap/fe/macros/FooterContent.js +7 -3
- package/src/sap/fe/macros/FooterContent.tsx +8 -13
- package/src/sap/fe/macros/KPITag.js +6 -6
- package/src/sap/fe/macros/KPITag.tsx +8 -6
- package/src/sap/fe/macros/MacroAPI.js +4 -3
- package/src/sap/fe/macros/MacroAPI.ts +3 -3
- package/src/sap/fe/macros/MessageButton.js +4 -3
- package/src/sap/fe/macros/MessageButton.tsx +7 -3
- package/src/sap/fe/macros/MicroChart.js +12 -7
- package/src/sap/fe/macros/MicroChart.tsx +9 -3
- package/src/sap/fe/macros/MultiValueField.js +22 -36
- package/src/sap/fe/macros/MultiValueField.tsx +34 -66
- package/src/sap/fe/macros/RichTextEditor.js +3 -4
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
- package/src/sap/fe/macros/Share.js +7 -7
- package/src/sap/fe/macros/Share.tsx +9 -6
- package/src/sap/fe/macros/Status.js +39 -11
- package/src/sap/fe/macros/Status.tsx +25 -5
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
- package/src/sap/fe/macros/chart/Action.js +25 -2
- package/src/sap/fe/macros/chart/Action.ts +13 -0
- package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
- package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +29 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +46 -14
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +58 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +75 -13
- package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
- package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +7 -7
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +3 -2
- package/src/sap/fe/macros/controls/FileWrapper.js +11 -5
- package/src/sap/fe/macros/controls/FileWrapper.ts +10 -4
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +3 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -0
- package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
- package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +3 -3
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +2 -2
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +40 -12
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -9
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +4 -4
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +2 -2
- package/src/sap/fe/macros/field/FieldHelper.js +4 -3
- package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +44 -9
- package/src/sap/fe/macros/field/FieldRuntime.ts +72 -8
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
- package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +130 -40
- package/src/sap/fe/macros/filter/FilterUtils.ts +167 -45
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +15 -9
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +36 -17
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +21 -10
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +81 -63
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.js +376 -0
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.ts +463 -0
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +27 -2
- package/src/sap/fe/macros/form/Form.block.ts +31 -11
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +110 -63
- package/src/sap/fe/macros/form/FormContainer.block.ts +121 -64
- package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
- package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
- package/src/sap/fe/macros/insights/InsightsService.js +3 -2
- package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
- package/src/sap/fe/macros/internal/DataPoint.js +7 -8
- package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
- package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
- package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +2 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +2 -1
- package/src/sap/fe/macros/library.js +5 -6
- package/src/sap/fe/macros/{library.ts → library.tsx} +3 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +13 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/messages/MessageButton.js +21 -12
- package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +7 -3
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +8 -2
- package/src/sap/fe/macros/quickView/QuickView.js +5 -4
- package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +21 -5
- package/src/sap/fe/macros/table/Action.ts +14 -4
- package/src/sap/fe/macros/table/ActionGroup.js +15 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
- package/src/sap/fe/macros/table/Column.js +3 -2
- package/src/sap/fe/macros/table/Column.ts +1 -1
- package/src/sap/fe/macros/table/MdcTableTemplate.js +96 -18
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +136 -17
- package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
- package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
- package/src/sap/fe/macros/table/Table.block.js +74 -30
- package/src/sap/fe/macros/table/Table.block.tsx +77 -14
- package/src/sap/fe/macros/table/TableAPI.js +175 -132
- package/src/sap/fe/macros/table/TableAPI.ts +67 -30
- package/src/sap/fe/macros/table/TableDefinition.js +20 -3
- package/src/sap/fe/macros/table/TableDefinition.ts +18 -2
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +12 -9
- package/src/sap/fe/macros/table/TableHelper.js +5 -2
- package/src/sap/fe/macros/table/TableHelper.ts +5 -2
- package/src/sap/fe/macros/table/TableRuntime.js +25 -13
- package/src/sap/fe/macros/table/TableRuntime.ts +31 -17
- package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
- package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
- package/src/sap/fe/macros/table/Utils.js +9 -3
- package/src/sap/fe/macros/table/Utils.ts +14 -8
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +72 -29
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +114 -123
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +15 -6
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +14 -5
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -3
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +3 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +42 -14
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +49 -19
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +3 -4
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +2 -3
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +5 -4
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +6 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +17 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +24 -9
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EntityType,Property } from "@sap-ux/vocabularies-types";
|
|
1
|
+
import type { EntityType, Property } from "@sap-ux/vocabularies-types";
|
|
2
2
|
import type { PropertyPath } from "@sap-ux/vocabularies-types/Edm";
|
|
3
3
|
import { CommonAnnotationTypes } from "@sap-ux/vocabularies-types/vocabularies/Common";
|
|
4
4
|
import type { SelectionFields } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
@@ -8,13 +8,13 @@ import type AppComponent from "sap/fe/core/AppComponent";
|
|
|
8
8
|
import type { BaseTreeModifier } from "sap/fe/core/CommonUtils";
|
|
9
9
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
10
10
|
import ConverterContext from "sap/fe/core/converters/ConverterContext";
|
|
11
|
-
import type { BaseManifestSettings,HiddenDraft } from "sap/fe/core/converters/ManifestSettings";
|
|
11
|
+
import type { BaseManifestSettings, HiddenDraft } from "sap/fe/core/converters/ManifestSettings";
|
|
12
12
|
import ManifestWrapper from "sap/fe/core/converters/ManifestWrapper";
|
|
13
13
|
import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
|
|
14
14
|
import type { IDiagnostics } from "sap/fe/core/converters/TemplateConverter";
|
|
15
15
|
import type { TableVisualization } from "sap/fe/core/converters/controls/Common/Table";
|
|
16
16
|
import type { PropertyTypeConfig } from "sap/fe/core/converters/controls/Common/table/Columns";
|
|
17
|
-
import type { FilterField,PropertyInfo,PropertyInfoExternal } from "sap/fe/core/converters/controls/ListReport/FilterBar";
|
|
17
|
+
import type { FilterField, PropertyInfo, PropertyInfoExternal } from "sap/fe/core/converters/controls/ListReport/FilterBar";
|
|
18
18
|
import * as FilterBarConverter from "sap/fe/core/converters/controls/ListReport/FilterBar";
|
|
19
19
|
import { getAllCustomAggregates } from "sap/fe/core/helpers/MetaModelFunction";
|
|
20
20
|
import ModelHelper from "sap/fe/core/helpers/ModelHelper";
|
|
@@ -23,6 +23,7 @@ import { getContextRelativeTargetObjectPath } from "sap/fe/core/templating/DataM
|
|
|
23
23
|
import { ODATA_TYPE_MAPPING } from "sap/fe/core/templating/DisplayModeFormatter";
|
|
24
24
|
import CommonHelper from "sap/fe/macros/CommonHelper";
|
|
25
25
|
import DelegateUtil from "sap/fe/macros/DelegateUtil";
|
|
26
|
+
import { type default as FEFilterBar } from "sap/fe/macros/controls/FilterBar";
|
|
26
27
|
import SemanticDateOperators from "sap/fe/macros/filterBar/SemanticDateOperators";
|
|
27
28
|
import type { AnnotationValueListType } from "sap/fe/macros/internal/valuehelp/ValueListHelper";
|
|
28
29
|
import type TableAPI from "sap/fe/macros/table/TableAPI";
|
|
@@ -37,6 +38,7 @@ import type { ConditionObject } from "sap/ui/mdc/condition/Condition";
|
|
|
37
38
|
import Condition from "sap/ui/mdc/condition/Condition";
|
|
38
39
|
import ConditionConverter from "sap/ui/mdc/condition/ConditionConverter";
|
|
39
40
|
import ConditionValidated from "sap/ui/mdc/enums/ConditionValidated";
|
|
41
|
+
import OperatorName from "sap/ui/mdc/enums/OperatorName";
|
|
40
42
|
import type { IFilter } from "sap/ui/mdc/library";
|
|
41
43
|
import TypeMap from "sap/ui/mdc/odata/v4/TypeMap";
|
|
42
44
|
import StateUtil from "sap/ui/mdc/p13n/StateUtil";
|
|
@@ -126,7 +128,8 @@ const oFilterUtils = {
|
|
|
126
128
|
metaModel?: ODataMetaModel,
|
|
127
129
|
appComponent?: AppComponent,
|
|
128
130
|
oModifier?: BaseTreeModifier,
|
|
129
|
-
lineItemTerm?: string
|
|
131
|
+
lineItemTerm?: string,
|
|
132
|
+
propertyInfosFromFilterBar?: PropertyInfo[]
|
|
130
133
|
): FilterField[] {
|
|
131
134
|
const oMetaModel = this._getFilterMetaModel(oFilterControl, metaModel);
|
|
132
135
|
const sFilterEntityTypePath = DelegateUtil.getCustomData<string>(oFilterControl, "entityType");
|
|
@@ -149,7 +152,8 @@ const oFilterUtils = {
|
|
|
149
152
|
includeHidden,
|
|
150
153
|
oModifier,
|
|
151
154
|
lineItemTerm,
|
|
152
|
-
annotationPath
|
|
155
|
+
annotationPath,
|
|
156
|
+
propertyInfosFromFilterBar
|
|
153
157
|
);
|
|
154
158
|
},
|
|
155
159
|
|
|
@@ -372,8 +376,8 @@ const oFilterUtils = {
|
|
|
372
376
|
},
|
|
373
377
|
|
|
374
378
|
/**
|
|
375
|
-
* Transforms DateTimeOffset
|
|
376
|
-
* with
|
|
379
|
+
* Transforms DateTimeOffset filters by converting EQ operators to BT operators
|
|
380
|
+
* with precision-based range from .000... to .999... based on property precision.
|
|
377
381
|
* @param aFilters Array of filter objects to transform
|
|
378
382
|
* @param mConditions Filter conditions from the filter bar
|
|
379
383
|
* @param oFilterBar The filter bar instance to access property information
|
|
@@ -401,8 +405,8 @@ const oFilterUtils = {
|
|
|
401
405
|
return;
|
|
402
406
|
}
|
|
403
407
|
|
|
404
|
-
// Create a
|
|
405
|
-
const dateTimeOffsetPaths:
|
|
408
|
+
// Create a map of condition paths to their precision levels
|
|
409
|
+
const dateTimeOffsetPaths: Map<string, number> = new Map<string, number>();
|
|
406
410
|
|
|
407
411
|
Object.keys(mConditions).forEach(function (sConditionPath: string): void {
|
|
408
412
|
if (mConditions[sConditionPath] && mConditions[sConditionPath].length > 0) {
|
|
@@ -420,15 +424,16 @@ const oFilterUtils = {
|
|
|
420
424
|
}
|
|
421
425
|
| undefined;
|
|
422
426
|
|
|
423
|
-
// Check if property is DateTimeOffset
|
|
427
|
+
// Check if property is DateTimeOffset
|
|
424
428
|
const isDateTimeOffset: boolean =
|
|
425
429
|
(propertyInfo?.dataType?.includes("DateTimeOffset") ?? false) ||
|
|
426
430
|
(propertyInfo?.typeConfig?.typeInstance?.getName().includes("DateTimeOffset") ?? false);
|
|
427
431
|
const precision: number | undefined =
|
|
428
432
|
propertyInfo?.constraints?.precision ?? propertyInfo?.typeConfig?.typeInstance?.constraints?.precision;
|
|
429
433
|
|
|
430
|
-
|
|
431
|
-
|
|
434
|
+
// Only process DateTimeOffset properties with defined precision
|
|
435
|
+
if (isDateTimeOffset && precision !== undefined && precision > 0) {
|
|
436
|
+
dateTimeOffsetPaths.set(sConditionPath, precision);
|
|
432
437
|
}
|
|
433
438
|
}
|
|
434
439
|
});
|
|
@@ -440,9 +445,9 @@ const oFilterUtils = {
|
|
|
440
445
|
/**
|
|
441
446
|
* Recursively transforms filters to handle all possible nested aFilters structures.
|
|
442
447
|
* @param aFilters Array of filter objects to transform
|
|
443
|
-
* @param dateTimeOffsetPaths
|
|
448
|
+
* @param dateTimeOffsetPaths Map of condition paths to their precision levels
|
|
444
449
|
*/
|
|
445
|
-
_transformDateTimeOffSetFilterValueRecursively: function (aFilters: Filter[], dateTimeOffsetPaths:
|
|
450
|
+
_transformDateTimeOffSetFilterValueRecursively: function (aFilters: Filter[], dateTimeOffsetPaths: Map<string, number>): void {
|
|
446
451
|
for (let i = 0; i < aFilters.length; i++) {
|
|
447
452
|
const filter: Filter = aFilters[i];
|
|
448
453
|
|
|
@@ -457,6 +462,7 @@ const oFilterUtils = {
|
|
|
457
462
|
const filterPath: string | undefined = filter.getPath();
|
|
458
463
|
const filterOperator: FilterOperator | undefined = filter.getOperator() as FilterOperator | undefined;
|
|
459
464
|
const filterValue1: unknown = filter.getValue1();
|
|
465
|
+
const filterValue2: unknown = filter.getValue2?.();
|
|
460
466
|
|
|
461
467
|
// Handle undefined filterOperator gracefully
|
|
462
468
|
if (filterOperator === undefined) {
|
|
@@ -467,15 +473,24 @@ const oFilterUtils = {
|
|
|
467
473
|
continue; // Skip this filter and continue with next one
|
|
468
474
|
}
|
|
469
475
|
|
|
470
|
-
|
|
476
|
+
// Check for transformation conditions:
|
|
477
|
+
// 1. EQ operator with valid first value
|
|
478
|
+
// 2. Any operator with two values (irrespective of operator type)
|
|
479
|
+
const shouldTransform: boolean =
|
|
480
|
+
(filterOperator === "EQ" && filterValue1 !== undefined && filterValue1 !== null) ||
|
|
481
|
+
(filterValue1 !== undefined && filterValue1 !== null && filterValue2 !== undefined && filterValue2 !== null);
|
|
482
|
+
|
|
483
|
+
if (shouldTransform) {
|
|
471
484
|
// For direct properties - check if the path matches any condition path
|
|
472
485
|
if (filterPath && dateTimeOffsetPaths.has(filterPath)) {
|
|
473
|
-
const
|
|
486
|
+
const precision: number = dateTimeOffsetPaths.get(filterPath)!;
|
|
487
|
+
const transformedFilter: Filter | null = this._transformDateTimeOffSetFilterValue(filter, precision);
|
|
474
488
|
if (transformedFilter) {
|
|
475
489
|
aFilters[i] = transformedFilter;
|
|
476
490
|
}
|
|
477
491
|
}
|
|
478
492
|
} else if (filterOperator === "Any") {
|
|
493
|
+
// Handle navigation property filters
|
|
479
494
|
const nestedFilter = filter.getCondition();
|
|
480
495
|
if (!nestedFilter) {
|
|
481
496
|
continue;
|
|
@@ -501,6 +516,7 @@ const oFilterUtils = {
|
|
|
501
516
|
const subFilterPath: string | undefined = subFilter.getPath();
|
|
502
517
|
const subFilterOperator: FilterOperator | undefined = subFilter.getOperator() as FilterOperator | undefined;
|
|
503
518
|
const subFilterValue1: unknown = subFilter.getValue1();
|
|
519
|
+
const subFilterValue2: unknown = subFilter.getValue2?.();
|
|
504
520
|
|
|
505
521
|
// Handle undefined subFilterOperator gracefully
|
|
506
522
|
if (subFilterOperator === undefined) {
|
|
@@ -511,9 +527,17 @@ const oFilterUtils = {
|
|
|
511
527
|
continue; // Skip this sub-filter
|
|
512
528
|
}
|
|
513
529
|
|
|
514
|
-
|
|
530
|
+
// Check for transformation conditions for sub-filters
|
|
531
|
+
const shouldTransformSubFilter: boolean =
|
|
532
|
+
(subFilterOperator === "EQ" && subFilterValue1 !== undefined && subFilterValue1 !== null) ||
|
|
533
|
+
(subFilterValue1 !== undefined &&
|
|
534
|
+
subFilterValue1 !== null &&
|
|
535
|
+
subFilterValue2 !== undefined &&
|
|
536
|
+
subFilterValue2 !== null);
|
|
537
|
+
|
|
538
|
+
if (shouldTransformSubFilter) {
|
|
515
539
|
// Check if any condition path matches the navigation pattern
|
|
516
|
-
const matchingConditionPath: string | undefined = Array.from(dateTimeOffsetPaths).find(function (
|
|
540
|
+
const matchingConditionPath: string | undefined = Array.from(dateTimeOffsetPaths.keys()).find(function (
|
|
517
541
|
sConditionPath: string
|
|
518
542
|
): boolean {
|
|
519
543
|
// Extract navigation and property parts from condition path
|
|
@@ -529,7 +553,8 @@ const oFilterUtils = {
|
|
|
529
553
|
});
|
|
530
554
|
|
|
531
555
|
if (matchingConditionPath) {
|
|
532
|
-
const
|
|
556
|
+
const precision: number = dateTimeOffsetPaths.get(matchingConditionPath)!;
|
|
557
|
+
const transformedSubFilter: Filter | null = this._transformDateTimeOffSetFilterValue(subFilter, precision);
|
|
533
558
|
if (transformedSubFilter) {
|
|
534
559
|
nestedFilterWithMultipleConditions.aFilters[j] = transformedSubFilter;
|
|
535
560
|
hasTransformation = true;
|
|
@@ -554,11 +579,10 @@ const oFilterUtils = {
|
|
|
554
579
|
// Handle single condition within navigation property
|
|
555
580
|
const nestedFilterPath: string | undefined = nestedFilter.getPath();
|
|
556
581
|
const nestedFilterOperator: FilterOperator | undefined = nestedFilter.getOperator() as FilterOperator | undefined;
|
|
557
|
-
|
|
558
582
|
const nestedFilterValue1: unknown = nestedFilter.getValue1();
|
|
583
|
+
const nestedFilterValue2: unknown = nestedFilter.getValue2?.();
|
|
559
584
|
|
|
560
585
|
// Handle undefined nestedFilterOperator gracefully
|
|
561
|
-
|
|
562
586
|
if (nestedFilterOperator === undefined) {
|
|
563
587
|
Log.warning(
|
|
564
588
|
"FilterUtils._transformDateTimeOffsetFilters: Filter operator is undefined, skipping filter transformation",
|
|
@@ -567,9 +591,17 @@ const oFilterUtils = {
|
|
|
567
591
|
continue; // Skip this nested filter
|
|
568
592
|
}
|
|
569
593
|
|
|
570
|
-
|
|
594
|
+
// Check for transformation conditions for nested filters
|
|
595
|
+
const shouldTransformNested: boolean =
|
|
596
|
+
(nestedFilterOperator === "EQ" && nestedFilterValue1 !== undefined && nestedFilterValue1 !== null) ||
|
|
597
|
+
(nestedFilterValue1 !== undefined &&
|
|
598
|
+
nestedFilterValue1 !== null &&
|
|
599
|
+
nestedFilterValue2 !== undefined &&
|
|
600
|
+
nestedFilterValue2 !== null);
|
|
601
|
+
|
|
602
|
+
if (shouldTransformNested) {
|
|
571
603
|
// Check if any condition path matches the navigation pattern
|
|
572
|
-
const matchingConditionPath: string | undefined = Array.from(dateTimeOffsetPaths).find(function (
|
|
604
|
+
const matchingConditionPath: string | undefined = Array.from(dateTimeOffsetPaths.keys()).find(function (
|
|
573
605
|
sConditionPath: string
|
|
574
606
|
): boolean {
|
|
575
607
|
// Extract navigation and property parts from condition path
|
|
@@ -585,7 +617,11 @@ const oFilterUtils = {
|
|
|
585
617
|
});
|
|
586
618
|
|
|
587
619
|
if (matchingConditionPath) {
|
|
588
|
-
const
|
|
620
|
+
const precision: number = dateTimeOffsetPaths.get(matchingConditionPath)!;
|
|
621
|
+
const transformedNestedFilter: Filter | null = this._transformDateTimeOffSetFilterValue(
|
|
622
|
+
nestedFilter,
|
|
623
|
+
precision
|
|
624
|
+
);
|
|
589
625
|
if (transformedNestedFilter) {
|
|
590
626
|
// Create new Any filter with transformed nested filter
|
|
591
627
|
aFilters[i] = new Filter({
|
|
@@ -603,31 +639,53 @@ const oFilterUtils = {
|
|
|
603
639
|
},
|
|
604
640
|
|
|
605
641
|
/**
|
|
606
|
-
* Transforms a single filter value
|
|
607
|
-
*
|
|
608
|
-
*
|
|
642
|
+
* Transforms a single filter value for DateTimeOffset precision properties.
|
|
643
|
+
* Handles EQ operator by converting to BT range, and adjusts second value for any filter with two values.
|
|
644
|
+
* Precision determines the number of decimal places: precision 3 = .999, precision 7 = .9999999.
|
|
645
|
+
* @param filter The filter to transform
|
|
646
|
+
* @param precision The precision level for the DateTimeOffset property
|
|
647
|
+
* @returns Transformed filter with microsecond precision or null if no transformation needed
|
|
609
648
|
*/
|
|
610
|
-
_transformDateTimeOffSetFilterValue: function (filter: Filter): Filter | null {
|
|
611
|
-
const
|
|
649
|
+
_transformDateTimeOffSetFilterValue: function (filter: Filter, precision: number): Filter | null {
|
|
650
|
+
const operator: string | undefined = filter.getOperator();
|
|
651
|
+
const value1: unknown = filter.getValue1();
|
|
652
|
+
const value2: unknown = filter.getValue2?.();
|
|
653
|
+
|
|
654
|
+
if (operator === undefined) {
|
|
655
|
+
Log.warning(
|
|
656
|
+
"FilterUtils._transformDateTimeOffsetFilters: Filter operator is undefined, skipping filter transformation",
|
|
657
|
+
`filterPath: ${filter.getPath()}, filterValue1: ${value1}`
|
|
658
|
+
);
|
|
659
|
+
return null;
|
|
660
|
+
}
|
|
612
661
|
|
|
613
|
-
|
|
662
|
+
// Only process filters with valid first value
|
|
663
|
+
if (value1 === null || value1 === undefined) {
|
|
614
664
|
return null;
|
|
615
665
|
}
|
|
616
666
|
|
|
617
|
-
|
|
618
|
-
|
|
667
|
+
const originalValue1: string = value1 as string;
|
|
668
|
+
|
|
669
|
+
// Parse datetime: 2025-08-13T15:19:15.0000000+02:00 or Z
|
|
670
|
+
const dateTimeMatch1: RegExpMatchArray | null = originalValue1.match(
|
|
619
671
|
/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(?:\.(\d{0,7}))?([+-]\d{2}:\d{2}|Z)$/
|
|
620
672
|
);
|
|
621
673
|
|
|
622
|
-
if (
|
|
623
|
-
|
|
624
|
-
|
|
674
|
+
if (!dateTimeMatch1) {
|
|
675
|
+
return null;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
const dateTimePart1: string = dateTimeMatch1[1];
|
|
679
|
+
const timezone1: string = dateTimeMatch1[3];
|
|
625
680
|
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
681
|
+
// Generate precision-based decimal suffix (e.g., .999 for precision 3, .9999999 for precision 7)
|
|
682
|
+
const maxDecimalValue: string = "9".repeat(precision);
|
|
683
|
+
|
|
684
|
+
// Handle EQ operator - convert to BT with full precision range
|
|
685
|
+
if (operator === "EQ") {
|
|
686
|
+
const startValue = `${dateTimePart1}.${"0".repeat(precision)}${timezone1}`;
|
|
687
|
+
const endValue = `${dateTimePart1}.${maxDecimalValue}${timezone1}`;
|
|
629
688
|
|
|
630
|
-
// Return new BT filter with microsecond range
|
|
631
689
|
return new Filter({
|
|
632
690
|
path: filter.getPath(),
|
|
633
691
|
operator: FilterOperator.BT,
|
|
@@ -636,6 +694,32 @@ const oFilterUtils = {
|
|
|
636
694
|
});
|
|
637
695
|
}
|
|
638
696
|
|
|
697
|
+
// For any operator with two values, adjust the second value to max precision
|
|
698
|
+
if (value2 !== null && value2 !== undefined) {
|
|
699
|
+
const originalValue2: string = value2 as string;
|
|
700
|
+
const dateTimeMatch2: RegExpMatchArray | null = originalValue2.match(
|
|
701
|
+
/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(?:\.(\d{0,7}))?([+-]\d{2}:\d{2}|Z)$/
|
|
702
|
+
);
|
|
703
|
+
|
|
704
|
+
if (!dateTimeMatch2) {
|
|
705
|
+
return null;
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
const dateTimePart2: string = dateTimeMatch2[1];
|
|
709
|
+
const timezone2: string = dateTimeMatch2[3];
|
|
710
|
+
|
|
711
|
+
// Keep first value unchanged, modify second value to max precision
|
|
712
|
+
const adjustedValue2 = `${dateTimePart2}.${maxDecimalValue}${timezone2}`;
|
|
713
|
+
|
|
714
|
+
return new Filter({
|
|
715
|
+
path: filter.getPath(),
|
|
716
|
+
operator: filter.getOperator(),
|
|
717
|
+
value1: originalValue1, // Keep original first value unchanged
|
|
718
|
+
value2: adjustedValue2 // Transform second value to max precision
|
|
719
|
+
});
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
// No transformation needed for single-value non-EQ operators
|
|
639
723
|
return null;
|
|
640
724
|
},
|
|
641
725
|
hasEditStateFilterRecursively: function (filters: Filter[]): boolean {
|
|
@@ -939,6 +1023,12 @@ const oFilterUtils = {
|
|
|
939
1023
|
return;
|
|
940
1024
|
}
|
|
941
1025
|
|
|
1026
|
+
// We wait for filter bar to be ready.
|
|
1027
|
+
if (oFilterBar.isA<FEFilterBar>("sap.fe.macros.controls.FilterBar")) {
|
|
1028
|
+
// _setFilterValues could be called in case of adaptation filter bar, so we explicitly check for FE filter bar control.
|
|
1029
|
+
await oFilterBar.whenInitialized();
|
|
1030
|
+
}
|
|
1031
|
+
|
|
942
1032
|
// common filter Operators need a value. Do nothing if this value is undefined
|
|
943
1033
|
// BCP: 2270135274
|
|
944
1034
|
if (
|
|
@@ -998,8 +1088,8 @@ const oFilterUtils = {
|
|
|
998
1088
|
// Get the value list info of the property to later check whether the values exist
|
|
999
1089
|
const valueListInfo = await this._getValueListInfo(mainFilterBarControl, propertyPath);
|
|
1000
1090
|
if (values && values.length) {
|
|
1001
|
-
if (sOperator ===
|
|
1002
|
-
// The operator BT
|
|
1091
|
+
if (sOperator === OperatorName.BT || sOperator === OperatorName.NOTBT) {
|
|
1092
|
+
// The operator BT and NOTBT require one condition with both thresholds
|
|
1003
1093
|
filter[sConditionPath] = [Condition.createCondition(sOperator, values, null, null, ConditionValidated.NotValidated)];
|
|
1004
1094
|
} else {
|
|
1005
1095
|
// Regular single and multi value conditions, if there are no values, we do not want any conditions
|
|
@@ -1077,7 +1167,8 @@ const oFilterUtils = {
|
|
|
1077
1167
|
includeHidden?: boolean,
|
|
1078
1168
|
oModifier?: BaseTreeModifier,
|
|
1079
1169
|
lineItemTerm?: string,
|
|
1080
|
-
annotationPath?: string
|
|
1170
|
+
annotationPath?: string,
|
|
1171
|
+
propertyInfosFromFilterBar?: PropertyInfo[]
|
|
1081
1172
|
): FilterField[] {
|
|
1082
1173
|
const filterFields = FilterBarConverter.getSelectionFields(
|
|
1083
1174
|
oConverterContext,
|
|
@@ -1087,9 +1178,15 @@ const oFilterUtils = {
|
|
|
1087
1178
|
lineItemTerm
|
|
1088
1179
|
);
|
|
1089
1180
|
let selectionFields: FilterField[] = filterFields.selectionFields;
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1181
|
+
let propertyInfos: PropertyInfo[];
|
|
1182
|
+
//During templating time while adding a flex change propertyInfosFromFilterBar will be passed
|
|
1183
|
+
if (propertyInfosFromFilterBar && propertyInfosFromFilterBar.length > 0) {
|
|
1184
|
+
propertyInfos = propertyInfosFromFilterBar;
|
|
1185
|
+
} else {
|
|
1186
|
+
propertyInfos = (oFilterControl as Partial<IFilterControl>).data
|
|
1187
|
+
? this.getFilterPropertyInfo(oFilterControl)
|
|
1188
|
+
: JSON.parse(filterFields.sPropertyInfo.replace(/\\\{/g, "{").replace(/\\\}/g, "}")); // propertyInfo string is returned from the getSelectionFields
|
|
1189
|
+
}
|
|
1093
1190
|
if (
|
|
1094
1191
|
(oModifier
|
|
1095
1192
|
? oModifier.getControlType(oFilterControl) === "sap.ui.mdc.FilterBar"
|
|
@@ -1301,6 +1398,31 @@ const oFilterUtils = {
|
|
|
1301
1398
|
}
|
|
1302
1399
|
return _propertyInfo;
|
|
1303
1400
|
});
|
|
1401
|
+
},
|
|
1402
|
+
|
|
1403
|
+
/**
|
|
1404
|
+
* Checks if the Property already exists in the propertyInfo array, used during templating to avoid duplicates.
|
|
1405
|
+
* @param parentControl FilterBar control where the custom data is stored
|
|
1406
|
+
* @param modifier Modifier
|
|
1407
|
+
* @param propertyInfoName Name of the property to be checked
|
|
1408
|
+
* @returns Array of PropertyInfos after removing the unwanted properties
|
|
1409
|
+
*/
|
|
1410
|
+
_checkIfPropertyInfoExists: async function (
|
|
1411
|
+
parentControl: FilterBar,
|
|
1412
|
+
modifier: BaseTreeModifier,
|
|
1413
|
+
propertyInfoName: string
|
|
1414
|
+
): Promise<boolean> {
|
|
1415
|
+
let propertyInfo: PropertyInfo[] = [];
|
|
1416
|
+
try {
|
|
1417
|
+
const customDataValue = await DelegateUtil.getCustomDataWithModifier<string>(parentControl, "feFilterInfo", modifier);
|
|
1418
|
+
if (customDataValue) {
|
|
1419
|
+
propertyInfo = JSON.parse(customDataValue);
|
|
1420
|
+
return propertyInfo.some((obj: PropertyInfo) => obj.name === propertyInfoName);
|
|
1421
|
+
}
|
|
1422
|
+
return false;
|
|
1423
|
+
} catch (error) {
|
|
1424
|
+
return false;
|
|
1425
|
+
}
|
|
1304
1426
|
}
|
|
1305
1427
|
};
|
|
1306
1428
|
|
|
@@ -102,7 +102,7 @@ sap.ui.define(["sap/fe/macros/filterBar/DefaultSemanticDateOperators", "sap/ui/c
|
|
|
102
102
|
filterOperator,
|
|
103
103
|
group: {
|
|
104
104
|
id: 3,
|
|
105
|
-
text: resourceBundle.getText(`M_EXTENDED_OPERATOR_GRP_TEXT
|
|
105
|
+
text: resourceBundle.getText(`M_EXTENDED_OPERATOR_GRP_TEXT`)
|
|
106
106
|
},
|
|
107
107
|
calcRange: function () {
|
|
108
108
|
const [fromPick, toPick] = operatorsToExtend[primitiveOperator].fnRanges();
|
|
@@ -217,4 +217,4 @@ sap.ui.define(["sap/fe/macros/filterBar/DefaultSemanticDateOperators", "sap/ui/c
|
|
|
217
217
|
};
|
|
218
218
|
return ExtendedSemanticDateOperators;
|
|
219
219
|
}, false);
|
|
220
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcGVyYXRvcnNUb0V4dGVuZCIsImdldEZpeGVkRGF0ZVNpbmdsZVZhbHVlT3BlcmF0aW9ucyIsInNpbmdsZVZhbHVlRGF0ZU9wZXJhdG9yTmFtZXMiLCJPYmplY3QiLCJrZXlzIiwiRlJPTV9PUCIsIlRPX09QIiwiZXh0ZW5kZWRGcm9tT3BlcmF0b3JzIiwicmVkdWNlIiwib3BlcmF0aW9ucyIsInNpbmdsZURhdGVPcGVyYXRvcktleSIsImtleSIsImNhdGVnb3J5IiwiRFlOQU1JQ19EQVRFX0NBVEVHT1JZIiwicHJpbWl0aXZlT3BlcmF0b3IiLCJleHRlbmRlZFRvT3BlcmF0b3JzIiwiZXh0ZW5kZWRPcGVyYXRvcnMiLCJleHRlbmRlZE9wZXJhdG9yTmFtZXMiLCJpc0Zyb21FeHRlbmRlZE9wZXJhdG9yIiwib3BlcmF0b3JOYW1lIiwiaW5jbHVkZXMiLCJpc1RvRXh0ZW5kZWRPcGVyYXRvciIsImdldEV4dGVuZGVkT3BlcmF0b3IiLCJyZXNvdXJjZUJ1bmRsZSIsImZpbHRlck9wZXJhdG9yIiwiRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRGaWx0ZXJPcGVyYXRvciIsInRva2VuVGV4dEtleSIsImNyZWF0ZVJhbmdlT3BlcmF0b3IiLCJuYW1lIiwibG9uZ1RleHQiLCJnZXRUZXh0IiwidG9rZW5UZXh0IiwidmFsdWVUeXBlcyIsIk9wZXJhdG9yVmFsdWVUeXBlIiwiU3RhdGljIiwiZ3JvdXAiLCJpZCIsInRleHQiLCJjYWxjUmFuZ2UiLCJmcm9tUGljayIsInRvUGljayIsImZuUmFuZ2VzIiwiY29uZmlnIiwiUmFuZ2VPcGVyYXRvciIsImdldE9wZXJhdG9yc0luZm8iLCJnZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiZ2V0Q29ycmVzcG9uZGluZ1NpbmdsZURhdGVPcGVyYXRvciIsImlzRXh0ZW5kZWRPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJFUSIsIkdFIiwiTEUiLCJhZGRFeHRlbmRlZEZpbHRlck9wZXJhdG9ycyIsIm9wZXJhdG9yTmFtZXMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJvcGVyYXRvcnMiLCJGaWx0ZXJPcGVyYXRvclV0aWwiLCJnZXRPcGVyYXRvciIsIm9wZXJhdG9yIiwicHVzaCIsImFkZE9wZXJhdG9ycyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB7IERZTkFNSUNfREFURV9DQVRFR09SWSwgZ2V0Rml4ZWREYXRlU2luZ2xlVmFsdWVPcGVyYXRpb25zIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0RlZmF1bHRTZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFVuaXZlcnNhbERhdGUgZnJvbSBcInNhcC91aS9jb3JlL2RhdGUvVW5pdmVyc2FsRGF0ZVwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yVXRpbCBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vRmlsdGVyT3BlcmF0b3JVdGlsXCI7XG5pbXBvcnQgUmFuZ2VPcGVyYXRvciwgeyB0eXBlIENvbmZpZ3VyYXRpb24gfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vUmFuZ2VPcGVyYXRvclwiO1xuaW1wb3J0IE9wZXJhdG9yVmFsdWVUeXBlIGZyb20gXCJzYXAvdWkvbWRjL2VudW1zL09wZXJhdG9yVmFsdWVUeXBlXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgRmlsdGVyT3BlcmF0b3IgfSBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIE1vZGVsT3BlcmF0b3IgfSBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5cbi8qKlxuICogU2luZ2xlIHZhbHVlIGRhdGUgb3BlcmF0b3JzIHdpdGggcmFuZ2VzLlxuICogV2Ugc2hhbGwgdXNlIHRoZXNlIHNpbmdsZSB2YWx1ZSBkYXRlIG9wZXJhdG9yIGFuZCBjb21iaW5lIHdpdGggXCJGUk9NXCIgYW5kIFwiVE9cIiBvcGVyYXRvcnMuXG4gKiBUaGUgcmVzdWx0YW50IG9wZXJhdG9yIGlzIGV4cGVjdGVkIHRvIGJlIGEgcmFuZ2Ugb3BlcmF0b3IuIEhlbmNlIHdlIHdvdWxkIG5lZWQgdGhlIHJhbmdlcy5cbiAqIExpa2U6XG4gKiB7XG4gKiBcdDxvcGVyYXRvciBuYW1lPjoge1xuICogXHRcdGtleTogPGlkZW50aWZpZXI+LFxuICogXHRcdGZuUmFuZ2VzOiA8QVBJIHRvIGdldCB0aGUgcmFuZ2U+XG4gKiBcdH0sXG4gKiBcdDxtb3JlIG9wZXJhdG9ycz4uLi5cbiAqIH1cbiAqL1xuY29uc3Qgb3BlcmF0b3JzVG9FeHRlbmQgPSBnZXRGaXhlZERhdGVTaW5nbGVWYWx1ZU9wZXJhdGlvbnMoKTtcblxuLy8gU2luZ2xlIFZhbHVlIGRhdGUgb3BlcmF0b3JzOiBMaWtlIFwiVE9EQVlcIiwgXCJUT01PUlJPV1wiLCBcIkxBU1REQVlZRUFSXCIsIGV0Yy5cbnR5cGUgU2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lID0ga2V5b2YgdHlwZW9mIG9wZXJhdG9yc1RvRXh0ZW5kO1xuY29uc3Qgc2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lcyA9IE9iamVjdC5rZXlzKG9wZXJhdG9yc1RvRXh0ZW5kKSBhcyBTaW5nbGVWYWx1ZURhdGVPcGVyYXRvck5hbWVbXTtcblxuY29uc3QgRlJPTV9PUCA9IFwiRlJPTVwiO1xuY29uc3QgVE9fT1AgPSBcIlRPXCI7XG50eXBlIEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSA9IGAke3R5cGVvZiBGUk9NX09QfSR7U2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lfWA7XG50eXBlIEV4dGVuZGVkVE9PcGVyYXRvcnNOYW1lID0gYCR7dHlwZW9mIFRPX09QfSR7U2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lfWA7XG5cbi8qKlxuICogT3BlcmF0aW9ucyBpbmZvIHRvIGlkZW50aWZ5IHdoaWNoIG9wZXJhdG9ycyB0aGUgdXNlciB3YW50cyB0byBzdXBwb3J0LlxuICogTGlrZTpcbiAqIHtcbiAqIFx0PG9wZXJhdG9yIG5hbWU+OiB7XG4gKiBcdFx0a2V5OiA8aWRlbnRpZmllcj4sXG4gKiBcdFx0Y2F0ZWdvcnk6IDx0eXBlIG9mIG9wZXJhdG9yPlxuICogXHR9LFxuICogXHQ8bW9yZSBvcGVyYXRvcnM+Li4uXG4gKiB9XG4gKi9cbnR5cGUgT3BlcmF0aW9uID0ge1xuXHRrZXk6IHN0cmluZztcblx0Y2F0ZWdvcnk6IHN0cmluZztcbn07XG50eXBlIEV4dGVuZGVkT3BlcmF0aW9uID0gT3BlcmF0aW9uICYge1xuXHRwcmltaXRpdmVPcGVyYXRvcjogU2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lO1xufTtcbmNvbnN0IGV4dGVuZGVkRnJvbU9wZXJhdG9yczogUmVjb3JkPEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+ID0gc2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lcy5yZWR1Y2UoXG5cdChvcGVyYXRpb25zLCBzaW5nbGVEYXRlT3BlcmF0b3JLZXkpID0+IHtcblx0XHRvcGVyYXRpb25zW2Ake0ZST01fT1B9JHtzaW5nbGVEYXRlT3BlcmF0b3JLZXl9YF0gPSB7XG5cdFx0XHRrZXk6IGAke0ZST01fT1B9JHtzaW5nbGVEYXRlT3BlcmF0b3JLZXl9YCxcblx0XHRcdGNhdGVnb3J5OiBEWU5BTUlDX0RBVEVfQ0FURUdPUlksXG5cdFx0XHRwcmltaXRpdmVPcGVyYXRvcjogc2luZ2xlRGF0ZU9wZXJhdG9yS2V5XG5cdFx0fTtcblx0XHRyZXR1cm4gb3BlcmF0aW9ucztcblx0fSxcblx0e30gYXMgUmVjb3JkPEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+XG4pO1xuY29uc3QgZXh0ZW5kZWRUb09wZXJhdG9yczogUmVjb3JkPEV4dGVuZGVkVE9PcGVyYXRvcnNOYW1lLCBFeHRlbmRlZE9wZXJhdGlvbj4gPSBzaW5nbGVWYWx1ZURhdGVPcGVyYXRvck5hbWVzLnJlZHVjZShcblx0KG9wZXJhdGlvbnMsIHNpbmdsZURhdGVPcGVyYXRvcktleSkgPT4ge1xuXHRcdG9wZXJhdGlvbnNbYCR7VE9fT1B9JHtzaW5nbGVEYXRlT3BlcmF0b3JLZXl9YF0gPSB7XG5cdFx0XHRrZXk6IGAke1RPX09QfSR7c2luZ2xlRGF0ZU9wZXJhdG9yS2V5fWAsXG5cdFx0XHRjYXRlZ29yeTogRFlOQU1JQ19EQVRFX0NBVEVHT1JZLFxuXHRcdFx0cHJpbWl0aXZlT3BlcmF0b3I6IHNpbmdsZURhdGVPcGVyYXRvcktleVxuXHRcdH07XG5cdFx0cmV0dXJuIG9wZXJhdGlvbnM7XG5cdH0sXG5cdHt9IGFzIFJlY29yZDxFeHRlbmRlZFRPT3BlcmF0b3JzTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+XG4pO1xuXG4vLyBFeHRlbmQgT3BlcmF0b3JzIGxpa2UgXCJGUk9NVE9EQVlcIiwgXCJUT1RPREFZXCIsIFwiRlJPTVlFU1RFUkRBWVwiLCBldGMuXG5jb25zdCBleHRlbmRlZE9wZXJhdG9ycyA9IHsgLi4uZXh0ZW5kZWRGcm9tT3BlcmF0b3JzLCAuLi5leHRlbmRlZFRvT3BlcmF0b3JzIH07XG5leHBvcnQgdHlwZSBFeHRlbmRlZE9wZXJhdG9yTmFtZSA9IEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSB8IEV4dGVuZGVkVE9PcGVyYXRvcnNOYW1lO1xuY29uc3QgZXh0ZW5kZWRPcGVyYXRvck5hbWVzID0gT2JqZWN0LmtleXMoZXh0ZW5kZWRPcGVyYXRvcnMpIGFzIEV4dGVuZGVkT3BlcmF0b3JOYW1lW107XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIG9wZXJhdG9yIGlzIGEgRlJPTSBleHRlbmRlZCBvcGVyYXRvciBsaWtlIFwiRlJPTVRPREFZXCIsIFwiRlJPTVRPTU9SUk9XXCIuXG4gKiBAcGFyYW0gb3BlcmF0b3JOYW1lIE9wZXJhdG9yIG5hbWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIEJvb2xlYW4uIElmICdmcm9tJyBleHRlbmRlZCBvcGVyYXRvci5cbiAqL1xuZnVuY3Rpb24gaXNGcm9tRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWU6IHN0cmluZyk6IG9wZXJhdG9yTmFtZSBpcyBFeHRlbmRlZEZST01PcGVyYXRvck5hbWUge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMoZXh0ZW5kZWRGcm9tT3BlcmF0b3JzKS5pbmNsdWRlcyhvcGVyYXRvck5hbWUpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBvcGVyYXRvciBpcyBhIFRPIGV4dGVuZGVkIG9wZXJhdG9yIGxpa2UgXCJUT1RPREFZXCIsIFwiVE9UT01PUlJPV1wiLlxuICogQHBhcmFtIG9wZXJhdG9yTmFtZSBPcGVyYXRvciBuYW1lIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBCb29sZWFuLiBJZiAndG8nIGV4dGVuZGVkIG9wZXJhdG9yLlxuICovXG5mdW5jdGlvbiBpc1RvRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWU6IHN0cmluZyk6IG9wZXJhdG9yTmFtZSBpcyBFeHRlbmRlZFRPT3BlcmF0b3JzTmFtZSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhleHRlbmRlZFRvT3BlcmF0b3JzKS5pbmNsdWRlcyhvcGVyYXRvck5hbWUpO1xufVxuXG4vKipcbiAqIEdldCBleHRlbmRlZCBvcGVyYXRvciBieSBjb21iaW5pbmcgXCJGUk9NXCIgYW5kIFwiVE9cIiBvcGVyYXRpb25zIHdpdGggc2luZ2xlIHZhbHVlIGRhdGVzLlxuICogQHBhcmFtIG9wZXJhdG9yTmFtZSBPcGVyYXRvciBuYW1lXG4gKiBAcGFyYW0gcmVzb3VyY2VCdW5kbGUgUmVzb3VyY2UgdG8gY29sbGVjdCB0cmFuc2xhdGVkIHRleHRzIGZvciB0aGUgb3BlcmF0b3JzIHRvIGJlIHNob3duIGluIFVJLlxuICogQHJldHVybnMgUmFuZ2VPcGVyYXRvclxuICovXG5mdW5jdGlvbiBnZXRFeHRlbmRlZE9wZXJhdG9yKG9wZXJhdG9yTmFtZTogRXh0ZW5kZWRPcGVyYXRvck5hbWUsIHJlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSk6IFJhbmdlT3BlcmF0b3Ige1xuXHRjb25zdCB7IHByaW1pdGl2ZU9wZXJhdG9yIH0gPSBleHRlbmRlZE9wZXJhdG9yc1tvcGVyYXRvck5hbWVdO1xuXHRjb25zdCBmaWx0ZXJPcGVyYXRvciA9IEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzLmdldEZpbHRlck9wZXJhdG9yKG9wZXJhdG9yTmFtZSkgYXMgTW9kZWxPcGVyYXRvci5HRSB8IE1vZGVsT3BlcmF0b3IuTEU7XG5cdGNvbnN0IHRva2VuVGV4dEtleSA9IGBNX0VYVEVOREVEX09QRVJBVE9SXyR7b3BlcmF0b3JOYW1lfV9UT0tFTl9URVhUYDtcblx0cmV0dXJuIEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzLmNyZWF0ZVJhbmdlT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IG9wZXJhdG9yTmFtZSxcblx0XHRsb25nVGV4dDogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dCh0b2tlblRleHRLZXksIFtdKSxcblx0XHR0b2tlblRleHQ6IGAke3Jlc291cmNlQnVuZGxlLmdldFRleHQodG9rZW5UZXh0S2V5LCBbXSl9ICh7MH0pYCxcblx0XHR2YWx1ZVR5cGVzOiBbT3BlcmF0b3JWYWx1ZVR5cGUuU3RhdGljXSxcblx0XHRmaWx0ZXJPcGVyYXRvcixcblx0XHRncm91cDogeyBpZDogMywgdGV4dDogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChgTV9FWFRFTkRFRF9PUEVSQVRPUl9HUlBfVEVYVGAsIFtdKSB9LFxuXHRcdGNhbGNSYW5nZTogZnVuY3Rpb24gKCk6IFVuaXZlcnNhbERhdGVbXSB7XG5cdFx0XHRjb25zdCBbZnJvbVBpY2ssIHRvUGlja10gPSBvcGVyYXRvcnNUb0V4dGVuZFtwcmltaXRpdmVPcGVyYXRvcl0uZm5SYW5nZXMoKTtcblx0XHRcdHJldHVybiBbaXNGcm9tRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWUpID8gZnJvbVBpY2sgOiB0b1BpY2tdO1xuXHRcdH1cblx0fSk7XG59XG5cbmNvbnN0IEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzID0ge1xuXHQvKipcblx0ICogQ3JlYXRpb24gb2YgUmFuZ2VPcGVyYXRvciBmcm9tIGNvbmZpZ3VyYXRpb24uXG5cdCAqIEBwYXJhbSBjb25maWcgUmFuZ2UgT3BlcmF0b3IgY29uZmlndXJhdGlvbnNcblx0ICogQHJldHVybnMgUmFuZ2UgT3BlcmF0b3Jcblx0ICovXG5cdGNyZWF0ZVJhbmdlT3BlcmF0b3IoY29uZmlnOiBDb25maWd1cmF0aW9uKTogUmFuZ2VPcGVyYXRvciB7XG5cdFx0cmV0dXJuIG5ldyBSYW5nZU9wZXJhdG9yKHsgLi4uY29uZmlnIH0pO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBPcGVyYXRvcnMgSW5mbyB0byBoZWxwIGRlY2lkZSB3aGljaCBvcGVyYXRpb25zIHRoZSB1c2VyIHdhbnRzIHRvIGVuYWJsZS5cblx0ICogQHJldHVybnMgT3BlcmF0b3JzIEluZm9cblx0ICovXG5cdGdldE9wZXJhdG9yc0luZm8oKTogUmVjb3JkPEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+IHtcblx0XHRyZXR1cm4gZXh0ZW5kZWRPcGVyYXRvcnM7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEV4dGVuZGVkIFNlbWFudGljIERhdGUgb3BlcmF0aW9ucyB0aGF0IGNhbiBiZSB1c2VkLlxuXHQgKiBAcmV0dXJucyBFeHRlbmRlZCBPcGVyYXRvciBuYW1lc1xuXHQgKi9cblx0Z2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucygpOiBzdHJpbmdbXSB7XG5cdFx0cmV0dXJuIFsuLi5leHRlbmRlZE9wZXJhdG9yTmFtZXNdO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHNpbmdsZSBkYXRlIG9wZXJhdG9yIHVzZWQgdG8gY3JlYXRlIHRoZSBleHRlbmRlZCBvcGVyYXRvci5cblx0ICogQHBhcmFtIG9wZXJhdG9yTmFtZSBFeHRlbmRlZCBvcGVyYXRvciBuYW1lXG5cdCAqIEByZXR1cm5zIFNpbmdsZSBkYXRlIG9wZXJhdG9yIG5hbWVcblx0ICovXG5cdGdldENvcnJlc3BvbmRpbmdTaW5nbGVEYXRlT3BlcmF0b3Iob3BlcmF0b3JOYW1lOiBFeHRlbmRlZE9wZXJhdG9yTmFtZSk6IFNpbmdsZVZhbHVlRGF0ZU9wZXJhdG9yTmFtZSB7XG5cdFx0Y29uc3QgeyBwcmltaXRpdmVPcGVyYXRvciB9ID0gZXh0ZW5kZWRPcGVyYXRvcnNbb3BlcmF0b3JOYW1lXTtcblx0XHRyZXR1cm4gcHJpbWl0aXZlT3BlcmF0b3I7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiBpdCBpcyBhbiBleHRlbmRlZCBvcGVyYXRvci5cblx0ICogQHBhcmFtIG9wZXJhdG9yTmFtZSBPcGVyYXRvciBuYW1lIHRvIGNoZWNrXG5cdCAqIEByZXR1cm5zIEV4dGVuZGVkIE9wZXJhdG9yIG5hbWVzXG5cdCAqL1xuXHRpc0V4dGVuZGVkT3BlcmF0b3Iob3BlcmF0b3JOYW1lOiBzdHJpbmcpOiBvcGVyYXRvck5hbWUgaXMgRXh0ZW5kZWRPcGVyYXRvck5hbWUge1xuXHRcdHJldHVybiAoZXh0ZW5kZWRPcGVyYXRvck5hbWVzIGFzIHN0cmluZ1tdKS5pbmNsdWRlcyhvcGVyYXRvck5hbWUpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiB0aGUgb3BlcmF0b3IgaXMgYSBUTyBleHRlbmRlZCBvcGVyYXRvciBsaWtlIFwiVE9UT0RBWVwiLCBcIlRPVE9NT1JST1dcIi5cblx0ICogQHBhcmFtIG9wZXJhdG9yTmFtZSBPcGVyYXRvciBuYW1lIHRvIGNoZWNrXG5cdCAqIEByZXR1cm5zIEJvb2xlYW4uIElmICd0bycgZXh0ZW5kZWQgb3BlcmF0b3IuXG5cdCAqL1xuXHRnZXRGaWx0ZXJPcGVyYXRvcihvcGVyYXRvck5hbWU6IEV4dGVuZGVkT3BlcmF0b3JOYW1lKTogRmlsdGVyT3BlcmF0b3Ige1xuXHRcdGxldCBmaWx0ZXJPcGVyYXRvciA9IE1vZGVsT3BlcmF0b3IuRVE7XG5cdFx0aWYgKGlzRnJvbUV4dGVuZGVkT3BlcmF0b3Iob3BlcmF0b3JOYW1lKSkge1xuXHRcdFx0ZmlsdGVyT3BlcmF0b3IgPSBNb2RlbE9wZXJhdG9yLkdFO1xuXHRcdH0gZWxzZSBpZiAoaXNUb0V4dGVuZGVkT3BlcmF0b3Iob3BlcmF0b3JOYW1lKSkge1xuXHRcdFx0ZmlsdGVyT3BlcmF0b3IgPSBNb2RlbE9wZXJhdG9yLkxFO1xuXHRcdH1cblx0XHRyZXR1cm4gZmlsdGVyT3BlcmF0b3I7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFkZCBleHRlbmRlZCBvcGVyYXRpb25zIHRvIE1EQyBmaWx0ZXJpbmcgZW52aXJvbm1lbnQuXG5cdCAqXG5cdCAqIFByZXNlbnRseSBvbmx5IHNpbmdsZSB2YWx1ZSBkYXRlIG9wZXJhdG9ycyBleHRlbmRlZCB2aWEgVE8vRlJPTSBvcGVyYXRpb25zIGNhbiBiZSBhZGRlZC5cblx0ICogVGhlc2UgaW5jbHVkZS4uLlxuXHQgKiAxLiBcIkZST01ZRVNURVJEQVlcIi5cblx0ICogMi4gXCJGUk9NVE9EQVlcIi5cblx0ICogMy4gXCJGUk9NVE9NT1JST1dcIi5cblx0ICogNC4gXCJGUk9NRklSU1REQVlXRUVLXCIuXG5cdCAqIDUuIFwiRlJPTUxBU1REQVlXRUVLXCIuXG5cdCAqIDYuIFwiRlJPTUZJUlNUREFZTU9OVEhcIi5cblx0ICogNy4gXCJGUk9NTEFTVERBWU1PTlRIXCIuXG5cdCAqIDguIFwiRlJPTUZJUlNUREFZUVVBUlRFUlwiLlxuXHQgKiA5LiBcIkZST01MQVNUREFZUVVBUlRFUlwiLlxuXHQgKiAxMC4gXCJGUk9NRklSU1REQVlZRUFSXCIuXG5cdCAqIDExLiBcIkZST01MQVNUREFZWUVBUlwiLlxuXHQgKiAxMi4gXCJUT1lFU1RFUkRBWVwiLlxuXHQgKiAxMy4gXCJUT1RPREFZXCIuXG5cdCAqIDE0LiBcIlRPVE9NT1JST1dcIi5cblx0ICogMTUuIFwiVE9GSVJTVERBWVdFRUtcIi5cblx0ICogMTYuIFwiVE9MQVNUREFZV0VFS1wiLlxuXHQgKiAxNy4gXCJUT0ZJUlNUREFZTU9OVEhcIi5cblx0ICogMTguIFwiVE9MQVNUREFZTU9OVEhcIi5cblx0ICogMTkuIFwiVE9GSVJTVERBWVFVQVJURVJcIi5cblx0ICogMjAuIFwiVE9MQVNUREFZUVVBUlRFUlwiLlxuXHQgKiAyMS4gXCJUT0ZJUlNUREFZWUVBUlwiLlxuXHQgKiAyMi4gXCJUT0xBU1REQVlZRUFSXCIuXG5cdCAqXG5cdCAqIFRoZXNlIGN1c3RvbSBvcGVyYXRvcnMgY3JlYXRlZCBieSBGRSBhcmUgbm90IGF2YWlsYWJsZSBieSBkZWZhdWx0IHdpdGggTURDIGZpbHRlcmluZyBlbnZpcm9ubWVudC5cblx0ICogVGhlIG5lZWQgdG8gYmUgYWRkZWQgb24tZGVtYW5kIHZpYSBNREMgQVBJcyBsaWtlICdGaWx0ZXJPcGVyYXRvclV0aWxzLmFkZE9wZXJhdG9yJy5cblx0ICpcblx0ICogSWYgb3BlcmF0b3JOYW1lcyBpcyB1bmRlZmluZWQsIHRoZW4gd2UgYWRkIGFsbCBleHRlbmRlZCBzZW1hbnRpYyBkYXRlIG9wZXJhdG9ycy5cblx0ICogQHBhcmFtIG9wZXJhdG9yTmFtZXMgT3BlcmF0aW9uIG5hbWVzIHRvIGJlIGFkZGVkIG9yIHVuZGVmaW5lZC5cblx0ICovXG5cdGFkZEV4dGVuZGVkRmlsdGVyT3BlcmF0b3JzKG9wZXJhdG9yTmFtZXM6IHN0cmluZ1tdID0gZXh0ZW5kZWRPcGVyYXRvck5hbWVzKTogdm9pZCB7XG5cdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKSE7XG5cdFx0Y29uc3Qgb3BlcmF0b3JzOiBSYW5nZU9wZXJhdG9yW10gPSBvcGVyYXRvck5hbWVzLnJlZHVjZSgob3BlcmF0b3JzLCBvcGVyYXRvck5hbWUpID0+IHtcblx0XHRcdGlmICghRmlsdGVyT3BlcmF0b3JVdGlsLmdldE9wZXJhdG9yKG9wZXJhdG9yTmFtZSkgJiYgRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMuaXNFeHRlbmRlZE9wZXJhdG9yKG9wZXJhdG9yTmFtZSkpIHtcblx0XHRcdFx0Y29uc3Qgb3BlcmF0b3IgPSBnZXRFeHRlbmRlZE9wZXJhdG9yKG9wZXJhdG9yTmFtZSwgcmVzb3VyY2VCdW5kbGUpO1xuXHRcdFx0XHRvcGVyYXRvcnMucHVzaChvcGVyYXRvcik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gb3BlcmF0b3JzO1xuXHRcdH0sIFtdIGFzIFJhbmdlT3BlcmF0b3JbXSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9ycyhvcGVyYXRvcnMpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRlbmRlZFNlbWFudGljRGF0ZU9wZXJhdG9ycztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0VBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxNQUFNQSxpQkFBaUIsR0FBR0MsaUNBQWlDLENBQUMsQ0FBQzs7RUFFN0Q7O0VBRUEsTUFBTUMsNEJBQTRCLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSixpQkFBaUIsQ0FBa0M7RUFFcEcsTUFBTUssT0FBTyxHQUFHLE1BQU07RUFDdEIsTUFBTUMsS0FBSyxHQUFHLElBQUk7O0VBSWxCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0VBUUEsTUFBTUMscUJBQTBFLEdBQUdMLDRCQUE0QixDQUFDTSxNQUFNLENBQ3JILENBQUNDLFVBQVUsRUFBRUMscUJBQXFCLEtBQUs7SUFDdENELFVBQVUsQ0FBQyxHQUFHSixPQUFPLEdBQUdLLHFCQUFxQixFQUFFLENBQUMsR0FBRztNQUNsREMsR0FBRyxFQUFFLEdBQUdOLE9BQU8sR0FBR0sscUJBQXFCLEVBQUU7TUFDekNFLFFBQVEsRUFBRUMscUJBQXFCO01B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
|
|
220
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcGVyYXRvcnNUb0V4dGVuZCIsImdldEZpeGVkRGF0ZVNpbmdsZVZhbHVlT3BlcmF0aW9ucyIsInNpbmdsZVZhbHVlRGF0ZU9wZXJhdG9yTmFtZXMiLCJPYmplY3QiLCJrZXlzIiwiRlJPTV9PUCIsIlRPX09QIiwiZXh0ZW5kZWRGcm9tT3BlcmF0b3JzIiwicmVkdWNlIiwib3BlcmF0aW9ucyIsInNpbmdsZURhdGVPcGVyYXRvcktleSIsImtleSIsImNhdGVnb3J5IiwiRFlOQU1JQ19EQVRFX0NBVEVHT1JZIiwicHJpbWl0aXZlT3BlcmF0b3IiLCJleHRlbmRlZFRvT3BlcmF0b3JzIiwiZXh0ZW5kZWRPcGVyYXRvcnMiLCJleHRlbmRlZE9wZXJhdG9yTmFtZXMiLCJpc0Zyb21FeHRlbmRlZE9wZXJhdG9yIiwib3BlcmF0b3JOYW1lIiwiaW5jbHVkZXMiLCJpc1RvRXh0ZW5kZWRPcGVyYXRvciIsImdldEV4dGVuZGVkT3BlcmF0b3IiLCJyZXNvdXJjZUJ1bmRsZSIsImZpbHRlck9wZXJhdG9yIiwiRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRGaWx0ZXJPcGVyYXRvciIsInRva2VuVGV4dEtleSIsImNyZWF0ZVJhbmdlT3BlcmF0b3IiLCJuYW1lIiwibG9uZ1RleHQiLCJnZXRUZXh0IiwidG9rZW5UZXh0IiwidmFsdWVUeXBlcyIsIk9wZXJhdG9yVmFsdWVUeXBlIiwiU3RhdGljIiwiZ3JvdXAiLCJpZCIsInRleHQiLCJjYWxjUmFuZ2UiLCJmcm9tUGljayIsInRvUGljayIsImZuUmFuZ2VzIiwiY29uZmlnIiwiUmFuZ2VPcGVyYXRvciIsImdldE9wZXJhdG9yc0luZm8iLCJnZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiZ2V0Q29ycmVzcG9uZGluZ1NpbmdsZURhdGVPcGVyYXRvciIsImlzRXh0ZW5kZWRPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJFUSIsIkdFIiwiTEUiLCJhZGRFeHRlbmRlZEZpbHRlck9wZXJhdG9ycyIsIm9wZXJhdG9yTmFtZXMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJvcGVyYXRvcnMiLCJGaWx0ZXJPcGVyYXRvclV0aWwiLCJnZXRPcGVyYXRvciIsIm9wZXJhdG9yIiwicHVzaCIsImFkZE9wZXJhdG9ycyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB7IERZTkFNSUNfREFURV9DQVRFR09SWSwgZ2V0Rml4ZWREYXRlU2luZ2xlVmFsdWVPcGVyYXRpb25zIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0RlZmF1bHRTZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFVuaXZlcnNhbERhdGUgZnJvbSBcInNhcC91aS9jb3JlL2RhdGUvVW5pdmVyc2FsRGF0ZVwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yVXRpbCBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vRmlsdGVyT3BlcmF0b3JVdGlsXCI7XG5pbXBvcnQgUmFuZ2VPcGVyYXRvciwgeyB0eXBlIENvbmZpZ3VyYXRpb24gfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vUmFuZ2VPcGVyYXRvclwiO1xuaW1wb3J0IE9wZXJhdG9yVmFsdWVUeXBlIGZyb20gXCJzYXAvdWkvbWRjL2VudW1zL09wZXJhdG9yVmFsdWVUeXBlXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgRmlsdGVyT3BlcmF0b3IgfSBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIE1vZGVsT3BlcmF0b3IgfSBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5cbi8qKlxuICogU2luZ2xlIHZhbHVlIGRhdGUgb3BlcmF0b3JzIHdpdGggcmFuZ2VzLlxuICogV2Ugc2hhbGwgdXNlIHRoZXNlIHNpbmdsZSB2YWx1ZSBkYXRlIG9wZXJhdG9yIGFuZCBjb21iaW5lIHdpdGggXCJGUk9NXCIgYW5kIFwiVE9cIiBvcGVyYXRvcnMuXG4gKiBUaGUgcmVzdWx0YW50IG9wZXJhdG9yIGlzIGV4cGVjdGVkIHRvIGJlIGEgcmFuZ2Ugb3BlcmF0b3IuIEhlbmNlIHdlIHdvdWxkIG5lZWQgdGhlIHJhbmdlcy5cbiAqIExpa2U6XG4gKiB7XG4gKiBcdDxvcGVyYXRvciBuYW1lPjoge1xuICogXHRcdGtleTogPGlkZW50aWZpZXI+LFxuICogXHRcdGZuUmFuZ2VzOiA8QVBJIHRvIGdldCB0aGUgcmFuZ2U+XG4gKiBcdH0sXG4gKiBcdDxtb3JlIG9wZXJhdG9ycz4uLi5cbiAqIH1cbiAqL1xuY29uc3Qgb3BlcmF0b3JzVG9FeHRlbmQgPSBnZXRGaXhlZERhdGVTaW5nbGVWYWx1ZU9wZXJhdGlvbnMoKTtcblxuLy8gU2luZ2xlIFZhbHVlIGRhdGUgb3BlcmF0b3JzOiBMaWtlIFwiVE9EQVlcIiwgXCJUT01PUlJPV1wiLCBcIkxBU1REQVlZRUFSXCIsIGV0Yy5cbnR5cGUgU2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lID0ga2V5b2YgdHlwZW9mIG9wZXJhdG9yc1RvRXh0ZW5kO1xuY29uc3Qgc2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lcyA9IE9iamVjdC5rZXlzKG9wZXJhdG9yc1RvRXh0ZW5kKSBhcyBTaW5nbGVWYWx1ZURhdGVPcGVyYXRvck5hbWVbXTtcblxuY29uc3QgRlJPTV9PUCA9IFwiRlJPTVwiO1xuY29uc3QgVE9fT1AgPSBcIlRPXCI7XG50eXBlIEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSA9IGAke3R5cGVvZiBGUk9NX09QfSR7U2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lfWA7XG50eXBlIEV4dGVuZGVkVE9PcGVyYXRvcnNOYW1lID0gYCR7dHlwZW9mIFRPX09QfSR7U2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lfWA7XG5cbi8qKlxuICogT3BlcmF0aW9ucyBpbmZvIHRvIGlkZW50aWZ5IHdoaWNoIG9wZXJhdG9ycyB0aGUgdXNlciB3YW50cyB0byBzdXBwb3J0LlxuICogTGlrZTpcbiAqIHtcbiAqIFx0PG9wZXJhdG9yIG5hbWU+OiB7XG4gKiBcdFx0a2V5OiA8aWRlbnRpZmllcj4sXG4gKiBcdFx0Y2F0ZWdvcnk6IDx0eXBlIG9mIG9wZXJhdG9yPlxuICogXHR9LFxuICogXHQ8bW9yZSBvcGVyYXRvcnM+Li4uXG4gKiB9XG4gKi9cbnR5cGUgT3BlcmF0aW9uID0ge1xuXHRrZXk6IHN0cmluZztcblx0Y2F0ZWdvcnk6IHN0cmluZztcbn07XG50eXBlIEV4dGVuZGVkT3BlcmF0aW9uID0gT3BlcmF0aW9uICYge1xuXHRwcmltaXRpdmVPcGVyYXRvcjogU2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lO1xufTtcbmNvbnN0IGV4dGVuZGVkRnJvbU9wZXJhdG9yczogUmVjb3JkPEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+ID0gc2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lcy5yZWR1Y2UoXG5cdChvcGVyYXRpb25zLCBzaW5nbGVEYXRlT3BlcmF0b3JLZXkpID0+IHtcblx0XHRvcGVyYXRpb25zW2Ake0ZST01fT1B9JHtzaW5nbGVEYXRlT3BlcmF0b3JLZXl9YF0gPSB7XG5cdFx0XHRrZXk6IGAke0ZST01fT1B9JHtzaW5nbGVEYXRlT3BlcmF0b3JLZXl9YCxcblx0XHRcdGNhdGVnb3J5OiBEWU5BTUlDX0RBVEVfQ0FURUdPUlksXG5cdFx0XHRwcmltaXRpdmVPcGVyYXRvcjogc2luZ2xlRGF0ZU9wZXJhdG9yS2V5XG5cdFx0fTtcblx0XHRyZXR1cm4gb3BlcmF0aW9ucztcblx0fSxcblx0e30gYXMgUmVjb3JkPEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+XG4pO1xuY29uc3QgZXh0ZW5kZWRUb09wZXJhdG9yczogUmVjb3JkPEV4dGVuZGVkVE9PcGVyYXRvcnNOYW1lLCBFeHRlbmRlZE9wZXJhdGlvbj4gPSBzaW5nbGVWYWx1ZURhdGVPcGVyYXRvck5hbWVzLnJlZHVjZShcblx0KG9wZXJhdGlvbnMsIHNpbmdsZURhdGVPcGVyYXRvcktleSkgPT4ge1xuXHRcdG9wZXJhdGlvbnNbYCR7VE9fT1B9JHtzaW5nbGVEYXRlT3BlcmF0b3JLZXl9YF0gPSB7XG5cdFx0XHRrZXk6IGAke1RPX09QfSR7c2luZ2xlRGF0ZU9wZXJhdG9yS2V5fWAsXG5cdFx0XHRjYXRlZ29yeTogRFlOQU1JQ19EQVRFX0NBVEVHT1JZLFxuXHRcdFx0cHJpbWl0aXZlT3BlcmF0b3I6IHNpbmdsZURhdGVPcGVyYXRvcktleVxuXHRcdH07XG5cdFx0cmV0dXJuIG9wZXJhdGlvbnM7XG5cdH0sXG5cdHt9IGFzIFJlY29yZDxFeHRlbmRlZFRPT3BlcmF0b3JzTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+XG4pO1xuXG4vLyBFeHRlbmQgT3BlcmF0b3JzIGxpa2UgXCJGUk9NVE9EQVlcIiwgXCJUT1RPREFZXCIsIFwiRlJPTVlFU1RFUkRBWVwiLCBldGMuXG5jb25zdCBleHRlbmRlZE9wZXJhdG9ycyA9IHsgLi4uZXh0ZW5kZWRGcm9tT3BlcmF0b3JzLCAuLi5leHRlbmRlZFRvT3BlcmF0b3JzIH07XG5leHBvcnQgdHlwZSBFeHRlbmRlZE9wZXJhdG9yTmFtZSA9IEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSB8IEV4dGVuZGVkVE9PcGVyYXRvcnNOYW1lO1xuY29uc3QgZXh0ZW5kZWRPcGVyYXRvck5hbWVzID0gT2JqZWN0LmtleXMoZXh0ZW5kZWRPcGVyYXRvcnMpIGFzIEV4dGVuZGVkT3BlcmF0b3JOYW1lW107XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIG9wZXJhdG9yIGlzIGEgRlJPTSBleHRlbmRlZCBvcGVyYXRvciBsaWtlIFwiRlJPTVRPREFZXCIsIFwiRlJPTVRPTU9SUk9XXCIuXG4gKiBAcGFyYW0gb3BlcmF0b3JOYW1lIE9wZXJhdG9yIG5hbWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIEJvb2xlYW4uIElmICdmcm9tJyBleHRlbmRlZCBvcGVyYXRvci5cbiAqL1xuZnVuY3Rpb24gaXNGcm9tRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWU6IHN0cmluZyk6IG9wZXJhdG9yTmFtZSBpcyBFeHRlbmRlZEZST01PcGVyYXRvck5hbWUge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMoZXh0ZW5kZWRGcm9tT3BlcmF0b3JzKS5pbmNsdWRlcyhvcGVyYXRvck5hbWUpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBvcGVyYXRvciBpcyBhIFRPIGV4dGVuZGVkIG9wZXJhdG9yIGxpa2UgXCJUT1RPREFZXCIsIFwiVE9UT01PUlJPV1wiLlxuICogQHBhcmFtIG9wZXJhdG9yTmFtZSBPcGVyYXRvciBuYW1lIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBCb29sZWFuLiBJZiAndG8nIGV4dGVuZGVkIG9wZXJhdG9yLlxuICovXG5mdW5jdGlvbiBpc1RvRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWU6IHN0cmluZyk6IG9wZXJhdG9yTmFtZSBpcyBFeHRlbmRlZFRPT3BlcmF0b3JzTmFtZSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhleHRlbmRlZFRvT3BlcmF0b3JzKS5pbmNsdWRlcyhvcGVyYXRvck5hbWUpO1xufVxuXG4vKipcbiAqIEdldCBleHRlbmRlZCBvcGVyYXRvciBieSBjb21iaW5pbmcgXCJGUk9NXCIgYW5kIFwiVE9cIiBvcGVyYXRpb25zIHdpdGggc2luZ2xlIHZhbHVlIGRhdGVzLlxuICogQHBhcmFtIG9wZXJhdG9yTmFtZSBPcGVyYXRvciBuYW1lXG4gKiBAcGFyYW0gcmVzb3VyY2VCdW5kbGUgUmVzb3VyY2UgdG8gY29sbGVjdCB0cmFuc2xhdGVkIHRleHRzIGZvciB0aGUgb3BlcmF0b3JzIHRvIGJlIHNob3duIGluIFVJLlxuICogQHJldHVybnMgUmFuZ2VPcGVyYXRvclxuICovXG5mdW5jdGlvbiBnZXRFeHRlbmRlZE9wZXJhdG9yKG9wZXJhdG9yTmFtZTogRXh0ZW5kZWRPcGVyYXRvck5hbWUsIHJlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSk6IFJhbmdlT3BlcmF0b3Ige1xuXHRjb25zdCB7IHByaW1pdGl2ZU9wZXJhdG9yIH0gPSBleHRlbmRlZE9wZXJhdG9yc1tvcGVyYXRvck5hbWVdO1xuXHRjb25zdCBmaWx0ZXJPcGVyYXRvciA9IEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzLmdldEZpbHRlck9wZXJhdG9yKG9wZXJhdG9yTmFtZSkgYXMgTW9kZWxPcGVyYXRvci5HRSB8IE1vZGVsT3BlcmF0b3IuTEU7XG5cdGNvbnN0IHRva2VuVGV4dEtleSA9IGBNX0VYVEVOREVEX09QRVJBVE9SXyR7b3BlcmF0b3JOYW1lfV9UT0tFTl9URVhUYDtcblx0cmV0dXJuIEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzLmNyZWF0ZVJhbmdlT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IG9wZXJhdG9yTmFtZSxcblx0XHRsb25nVGV4dDogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dCh0b2tlblRleHRLZXksIFtdKSxcblx0XHR0b2tlblRleHQ6IGAke3Jlc291cmNlQnVuZGxlLmdldFRleHQodG9rZW5UZXh0S2V5LCBbXSl9ICh7MH0pYCxcblx0XHR2YWx1ZVR5cGVzOiBbT3BlcmF0b3JWYWx1ZVR5cGUuU3RhdGljXSxcblx0XHRmaWx0ZXJPcGVyYXRvcixcblx0XHRncm91cDogeyBpZDogMywgdGV4dDogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChgTV9FWFRFTkRFRF9PUEVSQVRPUl9HUlBfVEVYVGApIH0sXG5cdFx0Y2FsY1JhbmdlOiBmdW5jdGlvbiAoKTogVW5pdmVyc2FsRGF0ZVtdIHtcblx0XHRcdGNvbnN0IFtmcm9tUGljaywgdG9QaWNrXSA9IG9wZXJhdG9yc1RvRXh0ZW5kW3ByaW1pdGl2ZU9wZXJhdG9yXS5mblJhbmdlcygpO1xuXHRcdFx0cmV0dXJuIFtpc0Zyb21FeHRlbmRlZE9wZXJhdG9yKG9wZXJhdG9yTmFtZSkgPyBmcm9tUGljayA6IHRvUGlja107XG5cdFx0fVxuXHR9KTtcbn1cblxuY29uc3QgRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMgPSB7XG5cdC8qKlxuXHQgKiBDcmVhdGlvbiBvZiBSYW5nZU9wZXJhdG9yIGZyb20gY29uZmlndXJhdGlvbi5cblx0ICogQHBhcmFtIGNvbmZpZyBSYW5nZSBPcGVyYXRvciBjb25maWd1cmF0aW9uc1xuXHQgKiBAcmV0dXJucyBSYW5nZSBPcGVyYXRvclxuXHQgKi9cblx0Y3JlYXRlUmFuZ2VPcGVyYXRvcihjb25maWc6IENvbmZpZ3VyYXRpb24pOiBSYW5nZU9wZXJhdG9yIHtcblx0XHRyZXR1cm4gbmV3IFJhbmdlT3BlcmF0b3IoeyAuLi5jb25maWcgfSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE9wZXJhdG9ycyBJbmZvIHRvIGhlbHAgZGVjaWRlIHdoaWNoIG9wZXJhdGlvbnMgdGhlIHVzZXIgd2FudHMgdG8gZW5hYmxlLlxuXHQgKiBAcmV0dXJucyBPcGVyYXRvcnMgSW5mb1xuXHQgKi9cblx0Z2V0T3BlcmF0b3JzSW5mbygpOiBSZWNvcmQ8RXh0ZW5kZWRGUk9NT3BlcmF0b3JOYW1lLCBFeHRlbmRlZE9wZXJhdGlvbj4ge1xuXHRcdHJldHVybiBleHRlbmRlZE9wZXJhdG9ycztcblx0fSxcblxuXHQvKipcblx0ICogRXh0ZW5kZWQgU2VtYW50aWMgRGF0ZSBvcGVyYXRpb25zIHRoYXQgY2FuIGJlIHVzZWQuXG5cdCAqIEByZXR1cm5zIEV4dGVuZGVkIE9wZXJhdG9yIG5hbWVzXG5cdCAqL1xuXHRnZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zKCk6IHN0cmluZ1tdIHtcblx0XHRyZXR1cm4gWy4uLmV4dGVuZGVkT3BlcmF0b3JOYW1lc107XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCB0aGUgc2luZ2xlIGRhdGUgb3BlcmF0b3IgdXNlZCB0byBjcmVhdGUgdGhlIGV4dGVuZGVkIG9wZXJhdG9yLlxuXHQgKiBAcGFyYW0gb3BlcmF0b3JOYW1lIEV4dGVuZGVkIG9wZXJhdG9yIG5hbWVcblx0ICogQHJldHVybnMgU2luZ2xlIGRhdGUgb3BlcmF0b3IgbmFtZVxuXHQgKi9cblx0Z2V0Q29ycmVzcG9uZGluZ1NpbmdsZURhdGVPcGVyYXRvcihvcGVyYXRvck5hbWU6IEV4dGVuZGVkT3BlcmF0b3JOYW1lKTogU2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lIHtcblx0XHRjb25zdCB7IHByaW1pdGl2ZU9wZXJhdG9yIH0gPSBleHRlbmRlZE9wZXJhdG9yc1tvcGVyYXRvck5hbWVdO1xuXHRcdHJldHVybiBwcmltaXRpdmVPcGVyYXRvcjtcblx0fSxcblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIGl0IGlzIGFuIGV4dGVuZGVkIG9wZXJhdG9yLlxuXHQgKiBAcGFyYW0gb3BlcmF0b3JOYW1lIE9wZXJhdG9yIG5hbWUgdG8gY2hlY2tcblx0ICogQHJldHVybnMgRXh0ZW5kZWQgT3BlcmF0b3IgbmFtZXNcblx0ICovXG5cdGlzRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWU6IHN0cmluZyk6IG9wZXJhdG9yTmFtZSBpcyBFeHRlbmRlZE9wZXJhdG9yTmFtZSB7XG5cdFx0cmV0dXJuIChleHRlbmRlZE9wZXJhdG9yTmFtZXMgYXMgc3RyaW5nW10pLmluY2x1ZGVzKG9wZXJhdG9yTmFtZSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIHRoZSBvcGVyYXRvciBpcyBhIFRPIGV4dGVuZGVkIG9wZXJhdG9yIGxpa2UgXCJUT1RPREFZXCIsIFwiVE9UT01PUlJPV1wiLlxuXHQgKiBAcGFyYW0gb3BlcmF0b3JOYW1lIE9wZXJhdG9yIG5hbWUgdG8gY2hlY2tcblx0ICogQHJldHVybnMgQm9vbGVhbi4gSWYgJ3RvJyBleHRlbmRlZCBvcGVyYXRvci5cblx0ICovXG5cdGdldEZpbHRlck9wZXJhdG9yKG9wZXJhdG9yTmFtZTogRXh0ZW5kZWRPcGVyYXRvck5hbWUpOiBGaWx0ZXJPcGVyYXRvciB7XG5cdFx0bGV0IGZpbHRlck9wZXJhdG9yID0gTW9kZWxPcGVyYXRvci5FUTtcblx0XHRpZiAoaXNGcm9tRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWUpKSB7XG5cdFx0XHRmaWx0ZXJPcGVyYXRvciA9IE1vZGVsT3BlcmF0b3IuR0U7XG5cdFx0fSBlbHNlIGlmIChpc1RvRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWUpKSB7XG5cdFx0XHRmaWx0ZXJPcGVyYXRvciA9IE1vZGVsT3BlcmF0b3IuTEU7XG5cdFx0fVxuXHRcdHJldHVybiBmaWx0ZXJPcGVyYXRvcjtcblx0fSxcblxuXHQvKipcblx0ICogQWRkIGV4dGVuZGVkIG9wZXJhdGlvbnMgdG8gTURDIGZpbHRlcmluZyBlbnZpcm9ubWVudC5cblx0ICpcblx0ICogUHJlc2VudGx5IG9ubHkgc2luZ2xlIHZhbHVlIGRhdGUgb3BlcmF0b3JzIGV4dGVuZGVkIHZpYSBUTy9GUk9NIG9wZXJhdGlvbnMgY2FuIGJlIGFkZGVkLlxuXHQgKiBUaGVzZSBpbmNsdWRlLi4uXG5cdCAqIDEuIFwiRlJPTVlFU1RFUkRBWVwiLlxuXHQgKiAyLiBcIkZST01UT0RBWVwiLlxuXHQgKiAzLiBcIkZST01UT01PUlJPV1wiLlxuXHQgKiA0LiBcIkZST01GSVJTVERBWVdFRUtcIi5cblx0ICogNS4gXCJGUk9NTEFTVERBWVdFRUtcIi5cblx0ICogNi4gXCJGUk9NRklSU1REQVlNT05USFwiLlxuXHQgKiA3LiBcIkZST01MQVNUREFZTU9OVEhcIi5cblx0ICogOC4gXCJGUk9NRklSU1REQVlRVUFSVEVSXCIuXG5cdCAqIDkuIFwiRlJPTUxBU1REQVlRVUFSVEVSXCIuXG5cdCAqIDEwLiBcIkZST01GSVJTVERBWVlFQVJcIi5cblx0ICogMTEuIFwiRlJPTUxBU1REQVlZRUFSXCIuXG5cdCAqIDEyLiBcIlRPWUVTVEVSREFZXCIuXG5cdCAqIDEzLiBcIlRPVE9EQVlcIi5cblx0ICogMTQuIFwiVE9UT01PUlJPV1wiLlxuXHQgKiAxNS4gXCJUT0ZJUlNUREFZV0VFS1wiLlxuXHQgKiAxNi4gXCJUT0xBU1REQVlXRUVLXCIuXG5cdCAqIDE3LiBcIlRPRklSU1REQVlNT05USFwiLlxuXHQgKiAxOC4gXCJUT0xBU1REQVlNT05USFwiLlxuXHQgKiAxOS4gXCJUT0ZJUlNUREFZUVVBUlRFUlwiLlxuXHQgKiAyMC4gXCJUT0xBU1REQVlRVUFSVEVSXCIuXG5cdCAqIDIxLiBcIlRPRklSU1REQVlZRUFSXCIuXG5cdCAqIDIyLiBcIlRPTEFTVERBWVlFQVJcIi5cblx0ICpcblx0ICogVGhlc2UgY3VzdG9tIG9wZXJhdG9ycyBjcmVhdGVkIGJ5IEZFIGFyZSBub3QgYXZhaWxhYmxlIGJ5IGRlZmF1bHQgd2l0aCBNREMgZmlsdGVyaW5nIGVudmlyb25tZW50LlxuXHQgKiBUaGUgbmVlZCB0byBiZSBhZGRlZCBvbi1kZW1hbmQgdmlhIE1EQyBBUElzIGxpa2UgJ0ZpbHRlck9wZXJhdG9yVXRpbHMuYWRkT3BlcmF0b3InLlxuXHQgKlxuXHQgKiBJZiBvcGVyYXRvck5hbWVzIGlzIHVuZGVmaW5lZCwgdGhlbiB3ZSBhZGQgYWxsIGV4dGVuZGVkIHNlbWFudGljIGRhdGUgb3BlcmF0b3JzLlxuXHQgKiBAcGFyYW0gb3BlcmF0b3JOYW1lcyBPcGVyYXRpb24gbmFtZXMgdG8gYmUgYWRkZWQgb3IgdW5kZWZpbmVkLlxuXHQgKi9cblx0YWRkRXh0ZW5kZWRGaWx0ZXJPcGVyYXRvcnMob3BlcmF0b3JOYW1lczogc3RyaW5nW10gPSBleHRlbmRlZE9wZXJhdG9yTmFtZXMpOiB2b2lkIHtcblx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpITtcblx0XHRjb25zdCBvcGVyYXRvcnM6IFJhbmdlT3BlcmF0b3JbXSA9IG9wZXJhdG9yTmFtZXMucmVkdWNlKChvcGVyYXRvcnMsIG9wZXJhdG9yTmFtZSkgPT4ge1xuXHRcdFx0aWYgKCFGaWx0ZXJPcGVyYXRvclV0aWwuZ2V0T3BlcmF0b3Iob3BlcmF0b3JOYW1lKSAmJiBFeHRlbmRlZFNlbWFudGljRGF0ZU9wZXJhdG9ycy5pc0V4dGVuZGVkT3BlcmF0b3Iob3BlcmF0b3JOYW1lKSkge1xuXHRcdFx0XHRjb25zdCBvcGVyYXRvciA9IGdldEV4dGVuZGVkT3BlcmF0b3Iob3BlcmF0b3JOYW1lLCByZXNvdXJjZUJ1bmRsZSk7XG5cdFx0XHRcdG9wZXJhdG9ycy5wdXNoKG9wZXJhdG9yKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBvcGVyYXRvcnM7XG5cdFx0fSwgW10gYXMgUmFuZ2VPcGVyYXRvcltdKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3JzKG9wZXJhdG9ycyk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7RUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLE1BQU1BLGlCQUFpQixHQUFHQyxpQ0FBaUMsQ0FBQyxDQUFDOztFQUU3RDs7RUFFQSxNQUFNQyw0QkFBNEIsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUNKLGlCQUFpQixDQUFrQztFQUVwRyxNQUFNSyxPQUFPLEdBQUcsTUFBTTtFQUN0QixNQUFNQyxLQUFLLEdBQUcsSUFBSTs7RUFJbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7RUFRQSxNQUFNQyxxQkFBMEUsR0FBR0wsNEJBQTRCLENBQUNNLE1BQU0sQ0FDckgsQ0FBQ0MsVUFBVSxFQUFFQyxxQkFBcUIsS0FBSztJQUN0Q0QsVUFBVSxDQUFDLEdBQUdKLE9BQU8sR0FBR0sscUJBQXFCLEVBQUUsQ0FBQyxHQUFHO01BQ2xEQyxHQUFHLEVBQUUsR0FBR04sT0FBTyxHQUFHSyxxQkFBcUIsRUFBRTtNQUN6Q0UsUUFBUSxFQUFFQyxxQkFBcUI7TUFDL0JD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
|
|
@@ -112,7 +112,7 @@ function getExtendedOperator(operatorName: ExtendedOperatorName, resourceBundle:
|
|
|
112
112
|
tokenText: `${resourceBundle.getText(tokenTextKey, [])} ({0})`,
|
|
113
113
|
valueTypes: [OperatorValueType.Static],
|
|
114
114
|
filterOperator,
|
|
115
|
-
group: { id: 3, text: resourceBundle.getText(`M_EXTENDED_OPERATOR_GRP_TEXT
|
|
115
|
+
group: { id: 3, text: resourceBundle.getText(`M_EXTENDED_OPERATOR_GRP_TEXT`) },
|
|
116
116
|
calcRange: function (): UniversalDate[] {
|
|
117
117
|
const [fromPick, toPick] = operatorsToExtend[primitiveOperator].fnRanges();
|
|
118
118
|
return [isFromExtendedOperator(operatorName) ? fromPick : toPick];
|