@sapui5/sap.fe.macros 1.141.0 → 1.142.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.
Files changed (217) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +4 -10
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
  5. package/src/sap/fe/macros/Chart.js +34 -23
  6. package/src/sap/fe/macros/Chart.tsx +25 -11
  7. package/src/sap/fe/macros/CollaborativeDraftHandler.js +48 -31
  8. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
  9. package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
  10. package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
  11. package/src/sap/fe/macros/CommonHelper.js +14 -24
  12. package/src/sap/fe/macros/CommonHelper.ts +18 -25
  13. package/src/sap/fe/macros/Field.js +30 -13
  14. package/src/sap/fe/macros/Field.ts +60 -30
  15. package/src/sap/fe/macros/FooterContent.js +5 -2
  16. package/src/sap/fe/macros/FooterContent.tsx +6 -3
  17. package/src/sap/fe/macros/KPITag.js +1 -1
  18. package/src/sap/fe/macros/KPITag.tsx +3 -1
  19. package/src/sap/fe/macros/MacroAPI.js +3 -2
  20. package/src/sap/fe/macros/MacroAPI.ts +2 -2
  21. package/src/sap/fe/macros/MessageButton.js +3 -2
  22. package/src/sap/fe/macros/MessageButton.tsx +5 -2
  23. package/src/sap/fe/macros/MicroChart.js +10 -6
  24. package/src/sap/fe/macros/MicroChart.tsx +8 -2
  25. package/src/sap/fe/macros/MultiValueField.js +22 -36
  26. package/src/sap/fe/macros/MultiValueField.tsx +34 -66
  27. package/src/sap/fe/macros/RichTextEditor.js +3 -4
  28. package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
  29. package/src/sap/fe/macros/Status.js +35 -8
  30. package/src/sap/fe/macros/Status.tsx +23 -2
  31. package/src/sap/fe/macros/ValueHelp.js +5 -2
  32. package/src/sap/fe/macros/ValueHelp.tsx +5 -0
  33. package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
  34. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
  35. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
  36. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
  37. package/src/sap/fe/macros/chart/Action.js +25 -2
  38. package/src/sap/fe/macros/chart/Action.ts +13 -0
  39. package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
  40. package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
  41. package/src/sap/fe/macros/chart/ChartDelegate.js +8 -8
  42. package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -12
  43. package/src/sap/fe/macros/chart/MdcChartTemplate.js +54 -11
  44. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +70 -11
  45. package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
  46. package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
  47. package/src/sap/fe/macros/controls/FilterBar.js +39 -3
  48. package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
  49. package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
  50. package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
  51. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  52. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  53. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +37 -9
  54. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +45 -6
  55. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
  56. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
  57. package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
  58. package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
  59. package/src/sap/fe/macros/field/FieldHelper.js +4 -3
  60. package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
  61. package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
  62. package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
  63. package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
  64. package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
  65. package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
  66. package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
  67. package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
  68. package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
  69. package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
  70. package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
  71. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
  72. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
  73. package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
  74. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
  75. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
  76. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
  77. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
  78. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
  79. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
  80. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
  81. package/src/sap/fe/macros/form/Form.block.js +27 -2
  82. package/src/sap/fe/macros/form/Form.block.ts +31 -11
  83. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
  84. package/src/sap/fe/macros/form/FormContainer.block.js +96 -65
  85. package/src/sap/fe/macros/form/FormContainer.block.ts +104 -65
  86. package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
  87. package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
  88. package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
  89. package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
  90. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
  91. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
  92. package/src/sap/fe/macros/insights/InsightsService.js +3 -2
  93. package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
  94. package/src/sap/fe/macros/internal/DataPoint.js +7 -8
  95. package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
  96. package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
  97. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
  98. package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
  99. package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
  100. package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
  101. package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
  102. package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
  103. package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
  104. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
  105. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
  106. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
  107. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
  108. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
  109. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
  110. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  111. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
  112. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
  113. package/src/sap/fe/macros/library.js +3 -3
  114. package/src/sap/fe/macros/library.ts +2 -0
  115. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
  116. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
  117. package/src/sap/fe/macros/messagebundle.properties +7 -5
  118. package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
  119. package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
  120. package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
  121. package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
  122. package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
  123. package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
  124. package/src/sap/fe/macros/messagebundle_da.properties +12 -3
  125. package/src/sap/fe/macros/messagebundle_de.properties +16 -7
  126. package/src/sap/fe/macros/messagebundle_el.properties +13 -4
  127. package/src/sap/fe/macros/messagebundle_en.properties +13 -4
  128. package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
  129. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
  130. package/src/sap/fe/macros/messagebundle_es.properties +12 -3
  131. package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
  132. package/src/sap/fe/macros/messagebundle_et.properties +12 -3
  133. package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
  134. package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
  135. package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
  136. package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
  137. package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
  138. package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
  139. package/src/sap/fe/macros/messagebundle_id.properties +18 -9
  140. package/src/sap/fe/macros/messagebundle_it.properties +12 -3
  141. package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
  142. package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
  143. package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
  144. package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
  145. package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
  146. package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
  147. package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
  148. package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
  149. package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
  150. package/src/sap/fe/macros/messagebundle_no.properties +12 -3
  151. package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
  152. package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
  153. package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
  154. package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
  155. package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
  156. package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
  157. package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
  158. package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
  159. package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
  160. package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
  161. package/src/sap/fe/macros/messagebundle_th.properties +11 -2
  162. package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
  163. package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
  164. package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
  165. package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
  166. package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
  167. package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
  168. package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
  169. package/src/sap/fe/macros/table/Action.js +15 -2
  170. package/src/sap/fe/macros/table/Action.ts +11 -1
  171. package/src/sap/fe/macros/table/ActionGroup.js +15 -2
  172. package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
  173. package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
  174. package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
  175. package/src/sap/fe/macros/table/ActionOverride.js +14 -2
  176. package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
  177. package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
  178. package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
  179. package/src/sap/fe/macros/table/MdcTableTemplate.js +91 -10
  180. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +131 -10
  181. package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
  182. package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
  183. package/src/sap/fe/macros/table/Table.block.js +70 -29
  184. package/src/sap/fe/macros/table/Table.block.tsx +65 -12
  185. package/src/sap/fe/macros/table/TableAPI.js +169 -131
  186. package/src/sap/fe/macros/table/TableAPI.ts +58 -28
  187. package/src/sap/fe/macros/table/TableDefinition.js +19 -2
  188. package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
  189. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +4 -3
  190. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +8 -9
  191. package/src/sap/fe/macros/table/TableHelper.js +5 -2
  192. package/src/sap/fe/macros/table/TableHelper.ts +5 -2
  193. package/src/sap/fe/macros/table/TableRuntime.js +2 -2
  194. package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
  195. package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
  196. package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
  197. package/src/sap/fe/macros/table/delegates/TableDelegate.js +67 -26
  198. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +108 -118
  199. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
  200. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
  201. package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
  202. package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
  203. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
  204. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
  205. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
  206. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
  207. package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
  208. package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
  209. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
  210. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
  211. package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
  212. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
  213. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
  214. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
  215. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
  216. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
  217. 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";
@@ -372,8 +374,8 @@ const oFilterUtils = {
372
374
  },
373
375
 
374
376
  /**
375
- * Transforms DateTimeOffset precision 7 filters by converting EQ operators to BT operators
376
- * with microsecond precision range from .0000000 to .9990000.
377
+ * Transforms DateTimeOffset filters by converting EQ operators to BT operators
378
+ * with precision-based range from .000... to .999... based on property precision.
377
379
  * @param aFilters Array of filter objects to transform
378
380
  * @param mConditions Filter conditions from the filter bar
379
381
  * @param oFilterBar The filter bar instance to access property information
@@ -401,8 +403,8 @@ const oFilterUtils = {
401
403
  return;
402
404
  }
403
405
 
404
- // Create a set of condition paths that are DateTimeOffset precision 7
405
- const dateTimeOffsetPaths: Set<string> = new Set<string>();
406
+ // Create a map of condition paths to their precision levels
407
+ const dateTimeOffsetPaths: Map<string, number> = new Map<string, number>();
406
408
 
407
409
  Object.keys(mConditions).forEach(function (sConditionPath: string): void {
408
410
  if (mConditions[sConditionPath] && mConditions[sConditionPath].length > 0) {
@@ -420,15 +422,16 @@ const oFilterUtils = {
420
422
  }
421
423
  | undefined;
422
424
 
423
- // Check if property is DateTimeOffset with precision 7
425
+ // Check if property is DateTimeOffset
424
426
  const isDateTimeOffset: boolean =
425
427
  (propertyInfo?.dataType?.includes("DateTimeOffset") ?? false) ||
426
428
  (propertyInfo?.typeConfig?.typeInstance?.getName().includes("DateTimeOffset") ?? false);
427
429
  const precision: number | undefined =
428
430
  propertyInfo?.constraints?.precision ?? propertyInfo?.typeConfig?.typeInstance?.constraints?.precision;
429
431
 
430
- if (isDateTimeOffset && precision === 7) {
431
- dateTimeOffsetPaths.add(sConditionPath);
432
+ // Only process DateTimeOffset properties with defined precision
433
+ if (isDateTimeOffset && precision !== undefined && precision > 0) {
434
+ dateTimeOffsetPaths.set(sConditionPath, precision);
432
435
  }
433
436
  }
434
437
  });
@@ -440,9 +443,9 @@ const oFilterUtils = {
440
443
  /**
441
444
  * Recursively transforms filters to handle all possible nested aFilters structures.
442
445
  * @param aFilters Array of filter objects to transform
443
- * @param dateTimeOffsetPaths Set of condition paths that are DateTimeOffset precision 7
446
+ * @param dateTimeOffsetPaths Map of condition paths to their precision levels
444
447
  */
445
- _transformDateTimeOffSetFilterValueRecursively: function (aFilters: Filter[], dateTimeOffsetPaths: Set<string>): void {
448
+ _transformDateTimeOffSetFilterValueRecursively: function (aFilters: Filter[], dateTimeOffsetPaths: Map<string, number>): void {
446
449
  for (let i = 0; i < aFilters.length; i++) {
447
450
  const filter: Filter = aFilters[i];
448
451
 
@@ -457,6 +460,7 @@ const oFilterUtils = {
457
460
  const filterPath: string | undefined = filter.getPath();
458
461
  const filterOperator: FilterOperator | undefined = filter.getOperator() as FilterOperator | undefined;
459
462
  const filterValue1: unknown = filter.getValue1();
463
+ const filterValue2: unknown = filter.getValue2?.();
460
464
 
461
465
  // Handle undefined filterOperator gracefully
462
466
  if (filterOperator === undefined) {
@@ -467,15 +471,24 @@ const oFilterUtils = {
467
471
  continue; // Skip this filter and continue with next one
468
472
  }
469
473
 
470
- if (filterOperator === "EQ" && filterValue1 !== undefined && filterValue1 !== null) {
474
+ // Check for transformation conditions:
475
+ // 1. EQ operator with valid first value
476
+ // 2. Any operator with two values (irrespective of operator type)
477
+ const shouldTransform: boolean =
478
+ (filterOperator === "EQ" && filterValue1 !== undefined && filterValue1 !== null) ||
479
+ (filterValue1 !== undefined && filterValue1 !== null && filterValue2 !== undefined && filterValue2 !== null);
480
+
481
+ if (shouldTransform) {
471
482
  // For direct properties - check if the path matches any condition path
472
483
  if (filterPath && dateTimeOffsetPaths.has(filterPath)) {
473
- const transformedFilter: Filter | null = this._transformDateTimeOffSetFilterValue(filter);
484
+ const precision: number = dateTimeOffsetPaths.get(filterPath)!;
485
+ const transformedFilter: Filter | null = this._transformDateTimeOffSetFilterValue(filter, precision);
474
486
  if (transformedFilter) {
475
487
  aFilters[i] = transformedFilter;
476
488
  }
477
489
  }
478
490
  } else if (filterOperator === "Any") {
491
+ // Handle navigation property filters
479
492
  const nestedFilter = filter.getCondition();
480
493
  if (!nestedFilter) {
481
494
  continue;
@@ -501,6 +514,7 @@ const oFilterUtils = {
501
514
  const subFilterPath: string | undefined = subFilter.getPath();
502
515
  const subFilterOperator: FilterOperator | undefined = subFilter.getOperator() as FilterOperator | undefined;
503
516
  const subFilterValue1: unknown = subFilter.getValue1();
517
+ const subFilterValue2: unknown = subFilter.getValue2?.();
504
518
 
505
519
  // Handle undefined subFilterOperator gracefully
506
520
  if (subFilterOperator === undefined) {
@@ -511,9 +525,17 @@ const oFilterUtils = {
511
525
  continue; // Skip this sub-filter
512
526
  }
513
527
 
514
- if (subFilterOperator === "EQ" && subFilterValue1 !== undefined && subFilterValue1 !== null) {
528
+ // Check for transformation conditions for sub-filters
529
+ const shouldTransformSubFilter: boolean =
530
+ (subFilterOperator === "EQ" && subFilterValue1 !== undefined && subFilterValue1 !== null) ||
531
+ (subFilterValue1 !== undefined &&
532
+ subFilterValue1 !== null &&
533
+ subFilterValue2 !== undefined &&
534
+ subFilterValue2 !== null);
535
+
536
+ if (shouldTransformSubFilter) {
515
537
  // Check if any condition path matches the navigation pattern
516
- const matchingConditionPath: string | undefined = Array.from(dateTimeOffsetPaths).find(function (
538
+ const matchingConditionPath: string | undefined = Array.from(dateTimeOffsetPaths.keys()).find(function (
517
539
  sConditionPath: string
518
540
  ): boolean {
519
541
  // Extract navigation and property parts from condition path
@@ -529,7 +551,8 @@ const oFilterUtils = {
529
551
  });
530
552
 
531
553
  if (matchingConditionPath) {
532
- const transformedSubFilter: Filter | null = this._transformDateTimeOffSetFilterValue(subFilter);
554
+ const precision: number = dateTimeOffsetPaths.get(matchingConditionPath)!;
555
+ const transformedSubFilter: Filter | null = this._transformDateTimeOffSetFilterValue(subFilter, precision);
533
556
  if (transformedSubFilter) {
534
557
  nestedFilterWithMultipleConditions.aFilters[j] = transformedSubFilter;
535
558
  hasTransformation = true;
@@ -554,11 +577,10 @@ const oFilterUtils = {
554
577
  // Handle single condition within navigation property
555
578
  const nestedFilterPath: string | undefined = nestedFilter.getPath();
556
579
  const nestedFilterOperator: FilterOperator | undefined = nestedFilter.getOperator() as FilterOperator | undefined;
557
-
558
580
  const nestedFilterValue1: unknown = nestedFilter.getValue1();
581
+ const nestedFilterValue2: unknown = nestedFilter.getValue2?.();
559
582
 
560
583
  // Handle undefined nestedFilterOperator gracefully
561
-
562
584
  if (nestedFilterOperator === undefined) {
563
585
  Log.warning(
564
586
  "FilterUtils._transformDateTimeOffsetFilters: Filter operator is undefined, skipping filter transformation",
@@ -567,9 +589,17 @@ const oFilterUtils = {
567
589
  continue; // Skip this nested filter
568
590
  }
569
591
 
570
- if (nestedFilterOperator === "EQ" && nestedFilterValue1 !== undefined && nestedFilterValue1 !== null) {
592
+ // Check for transformation conditions for nested filters
593
+ const shouldTransformNested: boolean =
594
+ (nestedFilterOperator === "EQ" && nestedFilterValue1 !== undefined && nestedFilterValue1 !== null) ||
595
+ (nestedFilterValue1 !== undefined &&
596
+ nestedFilterValue1 !== null &&
597
+ nestedFilterValue2 !== undefined &&
598
+ nestedFilterValue2 !== null);
599
+
600
+ if (shouldTransformNested) {
571
601
  // Check if any condition path matches the navigation pattern
572
- const matchingConditionPath: string | undefined = Array.from(dateTimeOffsetPaths).find(function (
602
+ const matchingConditionPath: string | undefined = Array.from(dateTimeOffsetPaths.keys()).find(function (
573
603
  sConditionPath: string
574
604
  ): boolean {
575
605
  // Extract navigation and property parts from condition path
@@ -585,7 +615,11 @@ const oFilterUtils = {
585
615
  });
586
616
 
587
617
  if (matchingConditionPath) {
588
- const transformedNestedFilter: Filter | null = this._transformDateTimeOffSetFilterValue(nestedFilter);
618
+ const precision: number = dateTimeOffsetPaths.get(matchingConditionPath)!;
619
+ const transformedNestedFilter: Filter | null = this._transformDateTimeOffSetFilterValue(
620
+ nestedFilter,
621
+ precision
622
+ );
589
623
  if (transformedNestedFilter) {
590
624
  // Create new Any filter with transformed nested filter
591
625
  aFilters[i] = new Filter({
@@ -603,31 +637,53 @@ const oFilterUtils = {
603
637
  },
604
638
 
605
639
  /**
606
- * Transforms a single filter value from EQ to BT with microsecond precision.
607
- * @param filter The filter object to transform
608
- * @returns The transformed filter or null if no transformation needed
640
+ * Transforms a single filter value for DateTimeOffset precision properties.
641
+ * Handles EQ operator by converting to BT range, and adjusts second value for any filter with two values.
642
+ * Precision determines the number of decimal places: precision 3 = .999, precision 7 = .9999999.
643
+ * @param filter The filter to transform
644
+ * @param precision The precision level for the DateTimeOffset property
645
+ * @returns Transformed filter with microsecond precision or null if no transformation needed
609
646
  */
610
- _transformDateTimeOffSetFilterValue: function (filter: Filter): Filter | null {
611
- const originalValue: string | undefined = filter.getValue1()?.toString();
647
+ _transformDateTimeOffSetFilterValue: function (filter: Filter, precision: number): Filter | null {
648
+ const operator: string | undefined = filter.getOperator();
649
+ const value1: unknown = filter.getValue1();
650
+ const value2: unknown = filter.getValue2?.();
651
+
652
+ if (operator === undefined) {
653
+ Log.warning(
654
+ "FilterUtils._transformDateTimeOffsetFilters: Filter operator is undefined, skipping filter transformation",
655
+ `filterPath: ${filter.getPath()}, filterValue1: ${value1}`
656
+ );
657
+ return null;
658
+ }
612
659
 
613
- if (!originalValue) {
660
+ // Only process filters with valid first value
661
+ if (value1 === null || value1 === undefined) {
614
662
  return null;
615
663
  }
616
664
 
617
- // Parse the datetime value: 2025-08-13T15:19:15.0000000+02:00 or 2025-08-13T15:19:15.0000000Z
618
- const dateTimeMatch: RegExpMatchArray | null = originalValue.match(
665
+ const originalValue1: string = value1 as string;
666
+
667
+ // Parse datetime: 2025-08-13T15:19:15.0000000+02:00 or Z
668
+ const dateTimeMatch1: RegExpMatchArray | null = originalValue1.match(
619
669
  /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(?:\.(\d{0,7}))?([+-]\d{2}:\d{2}|Z)$/
620
670
  );
621
671
 
622
- if (dateTimeMatch) {
623
- const dateTimePart: string = dateTimeMatch[1];
624
- const timezone: string = dateTimeMatch[3];
672
+ if (!dateTimeMatch1) {
673
+ return null;
674
+ }
675
+
676
+ const dateTimePart1: string = dateTimeMatch1[1];
677
+ const timezone1: string = dateTimeMatch1[3];
678
+
679
+ // Generate precision-based decimal suffix (e.g., .999 for precision 3, .9999999 for precision 7)
680
+ const maxDecimalValue: string = "9".repeat(precision);
625
681
 
626
- // Create microsecond range values
627
- const startValue = `${dateTimePart}.0000000${timezone}`;
628
- const endValue = `${dateTimePart}.9990000${timezone}`;
682
+ // Handle EQ operator - convert to BT with full precision range
683
+ if (operator === "EQ") {
684
+ const startValue = `${dateTimePart1}.${"0".repeat(precision)}${timezone1}`;
685
+ const endValue = `${dateTimePart1}.${maxDecimalValue}${timezone1}`;
629
686
 
630
- // Return new BT filter with microsecond range
631
687
  return new Filter({
632
688
  path: filter.getPath(),
633
689
  operator: FilterOperator.BT,
@@ -636,6 +692,32 @@ const oFilterUtils = {
636
692
  });
637
693
  }
638
694
 
695
+ // For any operator with two values, adjust the second value to max precision
696
+ if (value2 !== null && value2 !== undefined) {
697
+ const originalValue2: string = value2 as string;
698
+ const dateTimeMatch2: RegExpMatchArray | null = originalValue2.match(
699
+ /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(?:\.(\d{0,7}))?([+-]\d{2}:\d{2}|Z)$/
700
+ );
701
+
702
+ if (!dateTimeMatch2) {
703
+ return null;
704
+ }
705
+
706
+ const dateTimePart2: string = dateTimeMatch2[1];
707
+ const timezone2: string = dateTimeMatch2[3];
708
+
709
+ // Keep first value unchanged, modify second value to max precision
710
+ const adjustedValue2 = `${dateTimePart2}.${maxDecimalValue}${timezone2}`;
711
+
712
+ return new Filter({
713
+ path: filter.getPath(),
714
+ operator: filter.getOperator(),
715
+ value1: originalValue1, // Keep original first value unchanged
716
+ value2: adjustedValue2 // Transform second value to max precision
717
+ });
718
+ }
719
+
720
+ // No transformation needed for single-value non-EQ operators
639
721
  return null;
640
722
  },
641
723
  hasEditStateFilterRecursively: function (filters: Filter[]): boolean {
@@ -939,6 +1021,12 @@ const oFilterUtils = {
939
1021
  return;
940
1022
  }
941
1023
 
1024
+ // We wait for filter bar to be ready.
1025
+ if (oFilterBar.isA<FEFilterBar>("sap.fe.macros.controls.FilterBar")) {
1026
+ // _setFilterValues could be called in case of adaptation filter bar, so we explicitly check for FE filter bar control.
1027
+ await oFilterBar.whenInitialized();
1028
+ }
1029
+
942
1030
  // common filter Operators need a value. Do nothing if this value is undefined
943
1031
  // BCP: 2270135274
944
1032
  if (
@@ -998,8 +1086,8 @@ const oFilterUtils = {
998
1086
  // Get the value list info of the property to later check whether the values exist
999
1087
  const valueListInfo = await this._getValueListInfo(mainFilterBarControl, propertyPath);
1000
1088
  if (values && values.length) {
1001
- if (sOperator === FilterOperator.BT) {
1002
- // The operator BT requires one condition with both thresholds
1089
+ if (sOperator === OperatorName.BT || sOperator === OperatorName.NOTBT) {
1090
+ // The operator BT and NOTBT require one condition with both thresholds
1003
1091
  filter[sConditionPath] = [Condition.createCondition(sOperator, values, null, null, ConditionValidated.NotValidated)];
1004
1092
  } else {
1005
1093
  // Regular single and multi value conditions, if there are no values, we do not want any conditions
@@ -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+IHtcblx0XHRcdGlmICghRmlsdGVyT3BlcmF0b3JVdGlsLmdldE9wZXJhdG9yKG9wZXJhdG9yTmFtZSkgJiYgRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMuaXNFeHRlbmRlZE9wZXJhdG9yKG9wZXJhdG9yTmFtZSkpIHtcblx0XHRcdFx0Y29uc3Qgb3BlcmF0b3IgPSBnZXRFeHRlbmRlZE9wZXJhdG9yKG9wZXJhdG9yTmFtZSwgcmVzb3VyY2VCdW5kbGUpO1xuXHRcdFx0XHRvcGVyYXRvcnMucHVzaChvcGVyYXRvcik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gb3BlcmF0b3JzO1xuXHRcdH0sIFtdIGFzIFJhbmdlT3BlcmF0b3JbXSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9ycyhvcGVyYXRvcnMpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRlbmRlZFNlbWFudGljRGF0ZU9wZXJhdG9ycztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0VBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxNQUFNQSxpQkFBaUIsR0FBR0MsaUNBQWlDLENBQUMsQ0FBQzs7RUFFN0Q7O0VBRUEsTUFBTUMsNEJBQTRCLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSixpQkFBaUIsQ0FBa0M7RUFFcEcsTUFBTUssT0FBTyxHQUFHLE1BQU07RUFDdEIsTUFBTUMsS0FBSyxHQUFHLElBQUk7O0VBSWxCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0VBUUEsTUFBTUMscUJBQTBFLEdBQUdMLDRCQUE0QixDQUFDTSxNQUFNLENBQ3JILENBQUNDLFVBQVUsRUFBRUMscUJBQXFCLEtBQUs7SUFDdENELFVBQVUsQ0FBQyxHQUFHSixPQUFPLEdBQUdLLHFCQUFxQixFQUFFLENBQUMsR0FBRztNQUNsREMsR0FBRyxFQUFFLEdBQUdOLE9BQU8sR0FBR0sscUJBQXFCLEVBQUU7TUFDekNFLFFBQVEsRUFBRUMscUJBQXFCO01BQy9CQyxpQkFBaUIsRUFBRUo7SUFDcEIsQ0FBQztJQUNELE9BQU9ELFVBQVU7RUFDbEIsQ0FBQyxFQUNELENBQUMsQ0FDRixDQUFDO0VBQ0QsTUFBTU0sbUJBQXVFLEdBQUdiLDRCQUE0QixDQUFDTSxNQUFNLENBQ2xILENBQUNDLFVBQVUsRUFBRUMscUJBQXFCLEtBQUs7SUFDdENELFVBQVUsQ0FBQyxHQUFHSCxLQUFLLEdBQUdJLHFCQUFxQixFQUFFLENBQUMsR0FBRztNQUNoREMsR0FBRyxFQUFFLEdBQUdMLEtBQUssR0FBR0kscUJBQXFCLEVBQUU7TUFDdkNFLFFBQVEsRUFBRUMscUJBQXFCO01BQy9CQyxpQkFBaUIsRUFBRUo7SUFDcEIsQ0FBQztJQUNELE9BQU9ELFVBQVU7RUFDbEIsQ0FBQyxFQUNELENBQUMsQ0FDRixDQUFDOztFQUVEO0VBQ0EsTUFBTU8saUJBQWlCLEdBQUc7SUFBRSxHQUFHVCxxQkFBcUI7SUFBRSxHQUFHUTtFQUFvQixDQUFDO0VBRTlFLE1BQU1FLHFCQUFxQixHQUFHZCxNQUFNLENBQUNDLElBQUksQ0FBQ1ksaUJBQWlCLENBQTJCOztFQUV0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0Usc0JBQXNCQSxDQUFDQyxZQUFvQixFQUE0QztJQUMvRixPQUFPaEIsTUFBTSxDQUFDQyxJQUFJLENBQUNHLHFCQUFxQixDQUFDLENBQUNhLFFBQVEsQ0FBQ0QsWUFBWSxDQUFDO0VBQ2pFOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTRSxvQkFBb0JBLENBQUNGLFlBQW9CLEVBQTJDO0lBQzVGLE9BQU9oQixNQUFNLENBQUNDLElBQUksQ0FBQ1csbUJBQW1CLENBQUMsQ0FBQ0ssUUFBUSxDQUFDRCxZQUFZLENBQUM7RUFDL0Q7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0csbUJBQW1CQSxDQUFDSCxZQUFrQyxFQUFFSSxjQUE4QixFQUFpQjtJQUMvRyxNQUFNO01BQUVUO0lBQWtCLENBQUMsR0FBR0UsaUJBQWlCLENBQUNHLFlBQVksQ0FBQztJQUM3RCxNQUFNSyxjQUFjLEdBQUdDLDZCQUE2QixDQUFDQyxpQkFBaUIsQ0FBQ1AsWUFBWSxDQUF3QztJQUMzSCxNQUFNUSxZQUFZLEdBQUcsdUJBQXVCUixZQUFZLGFBQWE7SUFDckUsT0FBT00sNkJBQTZCLENBQUNHLG1CQUFtQixDQUFDO01BQ3hEQyxJQUFJLEVBQUVWLFlBQVk7TUFDbEJXLFFBQVEsRUFBRVAsY0FBYyxDQUFDUSxPQUFPLENBQUNKLFlBQVksRUFBRSxFQUFFLENBQUM7TUFDbERLLFNBQVMsRUFBRSxHQUFHVCxjQUFjLENBQUNRLE9BQU8sQ0FBQ0osWUFBWSxFQUFFLEVBQUUsQ0FBQyxRQUFRO01BQzlETSxVQUFVLEVBQUUsQ0FBQ0MsaUJBQWlCLENBQUNDLE1BQU0sQ0FBQztNQUN0Q1gsY0FBYztNQUNkWSxLQUFLLEVBQUU7UUFBRUMsRUFBRSxFQUFFLENBQUM7UUFBRUMsSUFBSSxFQUFFZixjQUFjLENBQUNRLE9BQU8sQ0FBQyw4QkFBOEIsRUFBRSxFQUFFO01BQUUsQ0FBQztNQUNsRlEsU0FBUyxFQUFFLFNBQUFBLENBQUEsRUFBNkI7UUFDdkMsTUFBTSxDQUFDQyxRQUFRLEVBQUVDLE1BQU0sQ0FBQyxHQUFHekMsaUJBQWlCLENBQUNjLGlCQUFpQixDQUFDLENBQUM0QixRQUFRLENBQUMsQ0FBQztRQUMxRSxPQUFPLENBQUN4QixzQkFBc0IsQ0FBQ0MsWUFBWSxDQUFDLEdBQUdxQixRQUFRLEdBQUdDLE1BQU0sQ0FBQztNQUNsRTtJQUNELENBQUMsQ0FBQztFQUNIO0VBRUEsTUFBTWhCLDZCQUE2QixHQUFHO0lBQ3JDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQ0csbUJBQW1CQSxDQUFDZSxNQUFxQixFQUFpQjtNQUN6RCxPQUFPLElBQUlDLGFBQWEsQ0FBQztRQUFFLEdBQUdEO01BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtJQUNDRSxnQkFBZ0JBLENBQUEsRUFBd0Q7TUFDdkUsT0FBTzdCLGlCQUFpQjtJQUN6QixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7SUFDQzhCLHlCQUF5QkEsQ0FBQSxFQUFhO01BQ3JDLE9BQU8sQ0FBQyxHQUFHN0IscUJBQXFCLENBQUM7SUFDbEMsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQzhCLGtDQUFrQ0EsQ0FBQzVCLFlBQWtDLEVBQStCO01BQ25HLE1BQU07UUFBRUw7TUFBa0IsQ0FBQyxHQUFHRSxpQkFBaUIsQ0FBQ0csWUFBWSxDQUFDO01BQzdELE9BQU9MLGlCQUFpQjtJQUN6QixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDa0Msa0JBQWtCQSxDQUFDN0IsWUFBb0IsRUFBd0M7TUFDOUUsT0FBUUYscUJBQXFCLENBQWNHLFFBQVEsQ0FBQ0QsWUFBWSxDQUFDO0lBQ2xFLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NPLGlCQUFpQkEsQ0FBQ1AsWUFBa0MsRUFBa0I7TUFDckUsSUFBSUssY0FBYyxHQUFHeUIsYUFBYSxDQUFDQyxFQUFFO01BQ3JDLElBQUloQyxzQkFBc0IsQ0FBQ0MsWUFBWSxDQUFDLEVBQUU7UUFDekNLLGNBQWMsR0FBR3lCLGFBQWEsQ0FBQ0UsRUFBRTtNQUNsQyxDQUFDLE1BQU0sSUFBSTlCLG9CQUFvQixDQUFDRixZQUFZLENBQUMsRUFBRTtRQUM5Q0ssY0FBYyxHQUFHeUIsYUFBYSxDQUFDRyxFQUFFO01BQ2xDO01BQ0EsT0FBTzVCLGNBQWM7SUFDdEIsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0M2QiwwQkFBMEJBLENBQUEsRUFBd0Q7TUFBQSxJQUF2REMsYUFBdUIsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUd0QyxxQkFBcUI7TUFDekUsTUFBTU0sY0FBYyxHQUFHbUMsT0FBTyxDQUFDQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUU7TUFDckUsTUFBTUMsU0FBMEIsR0FBR04sYUFBYSxDQUFDOUMsTUFBTSxDQUFDLENBQUNvRCxTQUFTLEVBQUV6QyxZQUFZLEtBQUs7UUFDcEYsSUFBSSxDQUFDMEMsa0JBQWtCLENBQUNDLFdBQVcsQ0FBQzNDLFlBQVksQ0FBQyxJQUFJTSw2QkFBNkIsQ0FBQ3VCLGtCQUFrQixDQUFDN0IsWUFBWSxDQUFDLEVBQUU7VUFDcEgsTUFBTTRDLFFBQVEsR0FBR3pDLG1CQUFtQixDQUFDSCxZQUFZLEVBQUVJLGNBQWMsQ0FBQztVQUNsRXFDLFNBQVMsQ0FBQ0ksSUFBSSxDQUFDRCxRQUFRLENBQUM7UUFDekI7UUFDQSxPQUFPSCxTQUFTO01BQ2pCLENBQUMsRUFBRSxFQUFxQixDQUFDO01BQ3pCQyxrQkFBa0IsQ0FBQ0ksWUFBWSxDQUFDTCxTQUFTLENBQUM7SUFDM0M7RUFDRCxDQUFDO0VBQUMsT0FFYW5DLDZCQUE2QjtBQUFBIiwiaWdub3JlTGlzdCI6W119
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];