@sapui5/sap.fe.macros 1.138.0 → 1.139.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) 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 +269 -0
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
  5. package/src/sap/fe/macros/Chart.js +1 -1
  6. package/src/sap/fe/macros/Chart.tsx +1 -1
  7. package/src/sap/fe/macros/CommonHelper.js +2 -2
  8. package/src/sap/fe/macros/CommonHelper.ts +1 -1
  9. package/src/sap/fe/macros/Field.js +21 -4
  10. package/src/sap/fe/macros/Field.ts +21 -3
  11. package/src/sap/fe/macros/FooterContent.js +40 -10
  12. package/src/sap/fe/macros/FooterContent.tsx +44 -8
  13. package/src/sap/fe/macros/FormElement.js +2 -2
  14. package/src/sap/fe/macros/FormElement.ts +1 -2
  15. package/src/sap/fe/macros/MultiValueField.js +17 -4
  16. package/src/sap/fe/macros/MultiValueField.tsx +7 -2
  17. package/src/sap/fe/macros/RichTextEditor.js +30 -6
  18. package/src/sap/fe/macros/RichTextEditor.tsx +34 -7
  19. package/src/sap/fe/macros/Share.js +73 -40
  20. package/src/sap/fe/macros/Share.tsx +29 -1
  21. package/src/sap/fe/macros/ValueHelp.js +4 -29
  22. package/src/sap/fe/macros/ValueHelp.tsx +2 -43
  23. package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
  24. package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
  25. package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
  26. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
  27. package/src/sap/fe/macros/ai/EasyFilterBar.js +30 -30
  28. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +40 -43
  29. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
  30. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
  31. package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
  32. package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
  33. package/src/sap/fe/macros/chart/MdcChartTemplate.js +20 -6
  34. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +16 -8
  35. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
  36. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
  37. package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
  38. package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
  39. package/src/sap/fe/macros/controls/FilterBar.js +86 -3
  40. package/src/sap/fe/macros/controls/FilterBar.ts +97 -2
  41. package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
  42. package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
  43. package/src/sap/fe/macros/controls/Section.js +3 -2
  44. package/src/sap/fe/macros/controls/Section.ts +2 -1
  45. package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
  46. package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
  47. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
  48. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
  49. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
  50. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
  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/designtime/Designtime.helper.js +12 -2
  54. package/src/sap/fe/macros/designtime/Designtime.helper.ts +12 -0
  55. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +16 -5
  56. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +6 -1
  57. package/src/sap/fe/macros/field/FieldBaseDelegate.js +20 -8
  58. package/src/sap/fe/macros/field/FieldBaseDelegate.ts +34 -9
  59. package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
  60. package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
  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/filter/FilterUtils.js +7 -1
  64. package/src/sap/fe/macros/filter/FilterUtils.ts +7 -0
  65. package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
  66. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
  67. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
  68. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
  69. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
  70. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
  71. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
  72. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
  73. package/src/sap/fe/macros/form/Form.block.js +6 -2
  74. package/src/sap/fe/macros/form/Form.block.ts +4 -1
  75. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
  76. package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
  77. package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
  78. package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
  79. package/src/sap/fe/macros/form/FormDelegate.js +20 -1
  80. package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
  81. package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
  82. package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
  83. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
  84. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
  85. package/src/sap/fe/macros/internal/DataPoint.js +2 -1
  86. package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
  87. package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
  88. package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
  89. package/src/sap/fe/macros/internal/FilterField.block.js +4 -2
  90. package/src/sap/fe/macros/internal/FilterField.block.ts +3 -1
  91. package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
  92. package/src/sap/fe/macros/internal/field/DisplayStyle.js +52 -12
  93. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +54 -5
  94. package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
  95. package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
  96. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
  97. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +10 -0
  98. package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
  99. package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
  100. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  101. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +3 -3
  102. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -0
  103. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +11 -3
  104. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +12 -7
  105. package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
  106. package/src/sap/fe/macros/library.js +1 -1
  107. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +11 -6
  108. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +12 -7
  109. package/src/sap/fe/macros/messagebundle.properties +37 -29
  110. package/src/sap/fe/macros/messagebundle_ar.properties +5 -3
  111. package/src/sap/fe/macros/messagebundle_bg.properties +6 -4
  112. package/src/sap/fe/macros/messagebundle_ca.properties +8 -6
  113. package/src/sap/fe/macros/messagebundle_cnr.properties +5 -3
  114. package/src/sap/fe/macros/messagebundle_cs.properties +4 -2
  115. package/src/sap/fe/macros/messagebundle_cy.properties +7 -5
  116. package/src/sap/fe/macros/messagebundle_da.properties +6 -4
  117. package/src/sap/fe/macros/messagebundle_de.properties +11 -9
  118. package/src/sap/fe/macros/messagebundle_el.properties +7 -5
  119. package/src/sap/fe/macros/messagebundle_en.properties +8 -6
  120. package/src/sap/fe/macros/messagebundle_en_GB.properties +8 -6
  121. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +8 -6
  122. package/src/sap/fe/macros/messagebundle_es.properties +6 -4
  123. package/src/sap/fe/macros/messagebundle_es_MX.properties +6 -4
  124. package/src/sap/fe/macros/messagebundle_et.properties +5 -3
  125. package/src/sap/fe/macros/messagebundle_fi.properties +8 -6
  126. package/src/sap/fe/macros/messagebundle_fr.properties +6 -4
  127. package/src/sap/fe/macros/messagebundle_fr_CA.properties +8 -6
  128. package/src/sap/fe/macros/messagebundle_hi.properties +6 -4
  129. package/src/sap/fe/macros/messagebundle_hr.properties +6 -4
  130. package/src/sap/fe/macros/messagebundle_hu.properties +4 -2
  131. package/src/sap/fe/macros/messagebundle_id.properties +8 -6
  132. package/src/sap/fe/macros/messagebundle_it.properties +4 -2
  133. package/src/sap/fe/macros/messagebundle_iw.properties +5 -3
  134. package/src/sap/fe/macros/messagebundle_ja.properties +5 -3
  135. package/src/sap/fe/macros/messagebundle_kk.properties +5 -3
  136. package/src/sap/fe/macros/messagebundle_ko.properties +4 -2
  137. package/src/sap/fe/macros/messagebundle_lt.properties +6 -4
  138. package/src/sap/fe/macros/messagebundle_lv.properties +5 -3
  139. package/src/sap/fe/macros/messagebundle_mk.properties +5 -3
  140. package/src/sap/fe/macros/messagebundle_ms.properties +8 -6
  141. package/src/sap/fe/macros/messagebundle_nl.properties +7 -5
  142. package/src/sap/fe/macros/messagebundle_no.properties +6 -4
  143. package/src/sap/fe/macros/messagebundle_pl.properties +6 -4
  144. package/src/sap/fe/macros/messagebundle_pt.properties +7 -5
  145. package/src/sap/fe/macros/messagebundle_pt_PT.properties +6 -4
  146. package/src/sap/fe/macros/messagebundle_ro.properties +7 -5
  147. package/src/sap/fe/macros/messagebundle_ru.properties +4 -2
  148. package/src/sap/fe/macros/messagebundle_sh.properties +5 -3
  149. package/src/sap/fe/macros/messagebundle_sk.properties +5 -3
  150. package/src/sap/fe/macros/messagebundle_sl.properties +6 -4
  151. package/src/sap/fe/macros/messagebundle_sr.properties +5 -3
  152. package/src/sap/fe/macros/messagebundle_sv.properties +5 -3
  153. package/src/sap/fe/macros/messagebundle_th.properties +4 -2
  154. package/src/sap/fe/macros/messagebundle_tr.properties +4 -2
  155. package/src/sap/fe/macros/messagebundle_uk.properties +10 -8
  156. package/src/sap/fe/macros/messagebundle_vi.properties +6 -4
  157. package/src/sap/fe/macros/messagebundle_zh_CN.properties +5 -3
  158. package/src/sap/fe/macros/messagebundle_zh_TW.properties +5 -3
  159. package/src/sap/fe/macros/messages/MessageButton.js +17 -19
  160. package/src/sap/fe/macros/messages/MessageButton.ts +24 -22
  161. package/src/sap/fe/macros/table/Action.js +24 -2
  162. package/src/sap/fe/macros/table/Action.ts +13 -0
  163. package/src/sap/fe/macros/table/ActionGroup.js +24 -2
  164. package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
  165. package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
  166. package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
  167. package/src/sap/fe/macros/table/ActionOverride.js +24 -2
  168. package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
  169. package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
  170. package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
  171. package/src/sap/fe/macros/table/Column.js +3 -3
  172. package/src/sap/fe/macros/table/Column.ts +2 -2
  173. package/src/sap/fe/macros/table/MdcTableTemplate.js +20 -8
  174. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +32 -6
  175. package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
  176. package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
  177. package/src/sap/fe/macros/table/Table.block.js +137 -108
  178. package/src/sap/fe/macros/table/Table.block.tsx +29 -2
  179. package/src/sap/fe/macros/table/Table.js +7 -1
  180. package/src/sap/fe/macros/table/Table.tsx +7 -1
  181. package/src/sap/fe/macros/table/TableAPI.js +150 -133
  182. package/src/sap/fe/macros/table/TableAPI.ts +20 -3
  183. package/src/sap/fe/macros/table/TableDefinition.js +4 -2
  184. package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
  185. package/src/sap/fe/macros/table/TableRuntime.js +3 -3
  186. package/src/sap/fe/macros/table/TableRuntime.ts +2 -2
  187. package/src/sap/fe/macros/table/TableSizeHelper.js +3 -3
  188. package/src/sap/fe/macros/table/TableSizeHelper.ts +5 -2
  189. package/src/sap/fe/macros/table/TreeTable.js +7 -1
  190. package/src/sap/fe/macros/table/TreeTable.tsx +7 -1
  191. package/src/sap/fe/macros/table/delegates/TableDelegate.js +27 -20
  192. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +35 -26
  193. package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
  194. package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
  195. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
  196. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
  197. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +8 -8
  198. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +7 -6
  199. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
  200. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
  201. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
  202. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
  203. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +4 -1
  204. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +3 -0
  205. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +37 -8
  206. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +47 -16
  207. package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -6
  208. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -2
  209. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +15 -3
  210. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +17 -2
@@ -78,6 +78,7 @@ import OverflowToolbarLayoutData from "sap/m/OverflowToolbarLayoutData";
78
78
  import type { SegmentedButton$SelectionChangeEvent } from "sap/m/SegmentedButton";
79
79
  import SegmentedButton from "sap/m/SegmentedButton";
80
80
  import SegmentedButtonItem from "sap/m/SegmentedButtonItem";
81
+ import type { OverflowToolbarPriority } from "sap/m/library";
81
82
  import Device from "sap/ui/Device";
82
83
  import type { CommandExecution$ExecuteEvent } from "sap/ui/core/CommandExecution";
83
84
  import CustomData from "sap/ui/core/CustomData";
@@ -127,6 +128,8 @@ type CustomToolbarMenuAction = {
127
128
  buttonMode?: string;
128
129
  defaultAction?: string;
129
130
  actions?: CustomAction;
131
+ priority?: OverflowToolbarPriority;
132
+ group?: number;
130
133
  };
131
134
 
132
135
  enum personalizationValues {
@@ -1113,7 +1116,9 @@ function getCustomActions(action: CustomAndAction, chartContext: Context, chartB
1113
1116
  useDefaultActionOnly: DefaultActionHandler.getUseDefaultActionOnly(action),
1114
1117
  buttonMode: DefaultActionHandler.getButtonMode(action),
1115
1118
  defaultAction: undefined,
1116
- actions: action
1119
+ actions: action,
1120
+ priority: action.priority,
1121
+ group: action.group
1117
1122
  },
1118
1123
  chartContext,
1119
1124
  chartBlock
@@ -1177,7 +1182,8 @@ function getActionToolbarMenuAction(
1177
1182
  icon={isAIOperation ? aiIcon : undefined}
1178
1183
  >
1179
1184
  {{
1180
- menu: <Menu>{aMenuItems}</Menu>
1185
+ menu: <Menu>{aMenuItems}</Menu>,
1186
+ layoutData: <OverflowToolbarLayoutData priority={props.priority} group={props.group} />
1181
1187
  }}
1182
1188
  </MenuButton>
1183
1189
  </ActionToolbarAction>
@@ -1206,7 +1212,8 @@ function getAction(action: BaseAction | CustomAction, chartContext: Context, isM
1206
1212
  icon={action?.isAIOperation === true ? aiIcon : undefined}
1207
1213
  >
1208
1214
  {{
1209
- menu: <Menu>{menuItems}</Menu>
1215
+ menu: <Menu>{menuItems}</Menu>,
1216
+ layoutData: <OverflowToolbarLayoutData priority={action.priority} group={action.group} />
1210
1217
  }}
1211
1218
  </MenuButton>
1212
1219
  </ActionToolbarAction>
@@ -1358,7 +1365,11 @@ function buildAction(
1358
1365
  enabled={toolbarAction.enabled}
1359
1366
  visible={toolbarAction.visible}
1360
1367
  icon={action.isAIOperation === true ? aiIcon : undefined}
1361
- />
1368
+ >
1369
+ {{
1370
+ layoutData: <OverflowToolbarLayoutData priority={action.priority} group={action.group} />
1371
+ }}
1372
+ </Button>
1362
1373
  </ActionToolbarAction>
1363
1374
  );
1364
1375
  }
@@ -1676,7 +1687,6 @@ function initialise(
1676
1687
  chartBlock._blockActions = [];
1677
1688
  chartBlock._commandActions = [];
1678
1689
  modifyIdentifiers(chartBlock);
1679
-
1680
1690
  if (chartBlock._chart) {
1681
1691
  chartBlock.chartDefinition = createChartDefinition(
1682
1692
  chartBlock,
@@ -1708,9 +1718,7 @@ function initialise(
1708
1718
  }
1709
1719
  checkPersonalizationInChartProperties(personalization, chartBlock);
1710
1720
  chartBlock.visible = chartBlock.chartDefinition.visible;
1711
- let contextPath = chartBlock._context.getPath();
1712
- contextPath = contextPath[contextPath.length - 1] === "/" ? contextPath.slice(0, -1) : contextPath;
1713
- chartBlock.draftSupported = ModelHelper.isDraftSupported(chartBlock._metaModel, contextPath);
1721
+ chartBlock.draftSupported = ModelHelper.isMetaPathDraftSupported(metaContextPath!);
1714
1722
  chartBlock._chartType = ChartHelper.formatChartType(chartBlock._chart.ChartType);
1715
1723
 
1716
1724
  const operationAvailableMap = ChartHelper.getOperationAvailableMap(chartBlock._chart, {
@@ -53,10 +53,14 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx-xml", "s
53
53
  };
54
54
  _proto.serialize = function serialize(overrideNodeName) {
55
55
  const properties = this.getMetadata().getAllProperties();
56
+ const events = this.getMetadata().getAllEvents();
56
57
  const aggregations = this.getMetadata().getAllAggregations();
57
58
  const settings = {
58
59
  children: {}
59
60
  };
61
+ for (const eventName in events) {
62
+ settings[eventName] = `THIS._fireEvent($event, $controller, '${eventName}')`;
63
+ }
60
64
  for (const propertyName in properties) {
61
65
  const property = this.getProperty(propertyName);
62
66
  if (typeof property !== "function") {
@@ -97,4 +101,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx-xml", "s
97
101
  _exports = BuildingBlockObjectProperty;
98
102
  return _exports;
99
103
  }, false);
100
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfVUk1RWxlbWVudCIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFByb3BlcnR5QmFnIiwic2V0dGluZ3MiLCJwcm9wZXJ0aWVzIiwiZ2V0TWV0YWRhdGEiLCJnZXRBbGxQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25zIiwiZ2V0QWxsQWdncmVnYXRpb25zIiwicHJvcGVydHlOYW1lIiwicHJvcGVydHkiLCJnZXRQcm9wZXJ0eSIsImFnZ3JlZ2F0aW9uTmFtZSIsImFnZ3JlZ2F0aW9uQ29udGVudCIsImdldEFnZ3JlZ2F0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGRyZW5BcnJheSIsIm1hbmFnZWRPYmplY3QiLCJpc0EiLCJwdXNoIiwiZ2V0SWQiLCJzZXJpYWxpemUiLCJvdmVycmlkZU5vZGVOYW1lIiwiY2hpbGRyZW4iLCJqc3hYbWwiLCJnZXRDbGFzcyIsInVuZGVmaW5lZCIsImJpbmRQcm9wZXJ0eSIsIm5hbWUiLCJiaW5kaW5nSW5mbyIsInByb3BlcnR5TWV0YWRhdGEiLCJiaW5kYWJsZSIsImdyb3VwIiwiY2FsbCIsIlVJNUVsZW1lbnQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sUHJvcGVydGllcywgTm9uQ29udHJvbFByb3BlcnRpZXMgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQganN4WG1sIGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3gteG1sXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5QmluZGluZ0luZm8gfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBidWlsZGluZyBibG9jayBjb21wbGV4IG9iamVjdCBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIHNlcmlhbGl6ZWQgdG8gWE1MLlxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5IGV4dGVuZHMgVUk1RWxlbWVudCB7XG5cdGdldFByb3BlcnR5QmFnKCk6IFByb3BlcnRpZXNPZjx0aGlzPiB7XG5cdFx0Y29uc3Qgc2V0dGluZ3M6IFByb3BlcnRpZXNPZjx0aGlzPiA9IHt9IGFzIFByb3BlcnRpZXNPZjx0aGlzPjtcblx0XHRjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldEFsbFByb3BlcnRpZXMoKTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbnMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsQWdncmVnYXRpb25zKCk7XG5cdFx0Zm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgaW4gcHJvcGVydGllcykge1xuXHRcdFx0Y29uc3QgcHJvcGVydHkgPSB0aGlzLmdldFByb3BlcnR5KHByb3BlcnR5TmFtZSk7XG5cdFx0XHRpZiAodHlwZW9mIHByb3BlcnR5ICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0c2V0dGluZ3NbcHJvcGVydHlOYW1lIGFzIGtleW9mIFByb3BlcnRpZXNPZjx0aGlzPl0gPSBwcm9wZXJ0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Zm9yIChjb25zdCBhZ2dyZWdhdGlvbk5hbWUgaW4gYWdncmVnYXRpb25zKSB7XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkNvbnRlbnQgPSB0aGlzLmdldEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uTmFtZSk7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhZ2dyZWdhdGlvbkNvbnRlbnQpKSB7XG5cdFx0XHRcdGNvbnN0IGNoaWxkcmVuQXJyYXkgPSBbXTtcblx0XHRcdFx0Zm9yIChjb25zdCBtYW5hZ2VkT2JqZWN0IG9mIGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRcdGlmIChtYW5hZ2VkT2JqZWN0LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRcdGNoaWxkcmVuQXJyYXkucHVzaChtYW5hZ2VkT2JqZWN0LmdldFByb3BlcnR5QmFnKCkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IGNoaWxkcmVuQXJyYXk7XG5cdFx0XHR9IGVsc2UgaWYgKGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRpZiAoYWdncmVnYXRpb25Db250ZW50LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IGFnZ3JlZ2F0aW9uQ29udGVudC5nZXRQcm9wZXJ0eUJhZygpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZSBhcyBrZXlvZiBQcm9wZXJ0aWVzT2Y8dGhpcz5dID0gYWdncmVnYXRpb25Db250ZW50LmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNldHRpbmdzO1xuXHR9XG5cblx0c2VyaWFsaXplKG92ZXJyaWRlTm9kZU5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsUHJvcGVydGllcygpO1xuXHRcdGNvbnN0IGFnZ3JlZ2F0aW9ucyA9IHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRBbGxBZ2dyZWdhdGlvbnMoKTtcblx0XHRjb25zdCBzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gJiB7IGNoaWxkcmVuOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9ID0geyBjaGlsZHJlbjoge30gfTtcblx0XHRmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBpbiBwcm9wZXJ0aWVzKSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eSA9IHRoaXMuZ2V0UHJvcGVydHkocHJvcGVydHlOYW1lKTtcblx0XHRcdGlmICh0eXBlb2YgcHJvcGVydHkgIT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHRzZXR0aW5nc1twcm9wZXJ0eU5hbWVdID0gcHJvcGVydHk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZvciAoY29uc3QgYWdncmVnYXRpb25OYW1lIGluIGFnZ3JlZ2F0aW9ucykge1xuXHRcdFx0Y29uc3QgYWdncmVnYXRpb25Db250ZW50ID0gdGhpcy5nZXRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbk5hbWUpO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoYWdncmVnYXRpb25Db250ZW50KSkge1xuXHRcdFx0XHRjb25zdCBjaGlsZHJlbkFycmF5ID0gW107XG5cdFx0XHRcdGZvciAoY29uc3QgbWFuYWdlZE9iamVjdCBvZiBhZ2dyZWdhdGlvbkNvbnRlbnQpIHtcblx0XHRcdFx0XHRpZiAobWFuYWdlZE9iamVjdC5pc0E8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5PihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5XCIpKSB7XG5cdFx0XHRcdFx0XHRjaGlsZHJlbkFycmF5LnB1c2gobWFuYWdlZE9iamVjdC5zZXJpYWxpemUoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHNldHRpbmdzLmNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0gPSBjaGlsZHJlbkFycmF5O1xuXHRcdFx0fSBlbHNlIGlmIChhZ2dyZWdhdGlvbkNvbnRlbnQpIHtcblx0XHRcdFx0aWYgKGFnZ3JlZ2F0aW9uQ29udGVudC5pc0E8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5PihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5XCIpKSB7XG5cdFx0XHRcdFx0c2V0dGluZ3MuY2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSA9IGFnZ3JlZ2F0aW9uQ29udGVudC5zZXJpYWxpemUoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdID0gYWdncmVnYXRpb25Db250ZW50LmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGpzeFhtbDxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFxuXHRcdFx0dGhpcy5nZXRNZXRhZGF0YSgpLmdldENsYXNzKCkgYXMgdW5rbm93biBhcyB0eXBlb2YgQ29udHJvbCxcblx0XHRcdHNldHRpbmdzIGFzIE5vbkNvbnRyb2xQcm9wZXJ0aWVzPEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eT4gJiB7XG5cdFx0XHRcdGtleT86IHN0cmluZztcblx0XHRcdFx0Y2hpbGRyZW4/OiBVSTVFbGVtZW50IHwgQ29udHJvbFByb3BlcnRpZXM8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5Pjtcblx0XHRcdH0sXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHR7fSxcblx0XHRcdG92ZXJyaWRlTm9kZU5hbWVcblx0XHQpO1xuXHR9XG5cblx0b3ZlcnJpZGUgYmluZFByb3BlcnR5KG5hbWU6IHN0cmluZywgYmluZGluZ0luZm86IFByb3BlcnR5QmluZGluZ0luZm8pOiB0aGlzIHtcblx0XHRjb25zdCBwcm9wZXJ0eU1ldGFkYXRhID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldFByb3BlcnR5KG5hbWUpO1xuXHRcdGlmIChwcm9wZXJ0eU1ldGFkYXRhPy5iaW5kYWJsZSA9PT0gZmFsc2UgJiYgcHJvcGVydHlNZXRhZGF0YS5ncm91cCA9PT0gXCJEYXRhXCIpIHtcblx0XHRcdCh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtuYW1lXSA9IGJpbmRpbmdJbmZvO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5iaW5kUHJvcGVydHkobmFtZSwgYmluZGluZ0luZm8pO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7RUFRQTtBQUNBO0FBQ0E7QUFDQTtFQUhBLElBS3FCQSwyQkFBMkIsSUFBQUMsSUFBQSxHQUQvQ0MsY0FBYyxDQUFDLG9EQUFvRCxDQUFDLEVBQUFELElBQUEsQ0FBQUUsTUFBQSwwQkFBQUMsV0FBQTtJQUFBLFNBQUFKLDRCQUFBO01BQUEsT0FBQUksV0FBQSxDQUFBQyxLQUFBLE9BQUFDLFNBQUE7SUFBQTtJQUFBQyxRQUFBLEdBQUFQLDJCQUFBO0lBQUFRLGNBQUEsQ0FBQVIsMkJBQUEsRUFBQUksV0FBQTtJQUFBLElBQUFLLE1BQUEsR0FBQVQsMkJBQUEsQ0FBQVUsU0FBQTtJQUFBRCxNQUFBLENBRXBFRSxjQUFjLEdBQWQsU0FBQUEsY0FBY0EsQ0FBQSxFQUF1QjtNQUNwQyxNQUFNQyxRQUE0QixHQUFHLENBQUMsQ0FBdUI7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
104
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfVUk1RWxlbWVudCIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFByb3BlcnR5QmFnIiwic2V0dGluZ3MiLCJwcm9wZXJ0aWVzIiwiZ2V0TWV0YWRhdGEiLCJnZXRBbGxQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25zIiwiZ2V0QWxsQWdncmVnYXRpb25zIiwicHJvcGVydHlOYW1lIiwicHJvcGVydHkiLCJnZXRQcm9wZXJ0eSIsImFnZ3JlZ2F0aW9uTmFtZSIsImFnZ3JlZ2F0aW9uQ29udGVudCIsImdldEFnZ3JlZ2F0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGRyZW5BcnJheSIsIm1hbmFnZWRPYmplY3QiLCJpc0EiLCJwdXNoIiwiZ2V0SWQiLCJzZXJpYWxpemUiLCJvdmVycmlkZU5vZGVOYW1lIiwiZXZlbnRzIiwiZ2V0QWxsRXZlbnRzIiwiY2hpbGRyZW4iLCJldmVudE5hbWUiLCJqc3hYbWwiLCJnZXRDbGFzcyIsInVuZGVmaW5lZCIsImJpbmRQcm9wZXJ0eSIsIm5hbWUiLCJiaW5kaW5nSW5mbyIsInByb3BlcnR5TWV0YWRhdGEiLCJiaW5kYWJsZSIsImdyb3VwIiwiY2FsbCIsIlVJNUVsZW1lbnQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sUHJvcGVydGllcywgTm9uQ29udHJvbFByb3BlcnRpZXMgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQganN4WG1sIGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3gteG1sXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5QmluZGluZ0luZm8gfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBidWlsZGluZyBibG9jayBjb21wbGV4IG9iamVjdCBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIHNlcmlhbGl6ZWQgdG8gWE1MLlxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5IGV4dGVuZHMgVUk1RWxlbWVudCB7XG5cdGdldFByb3BlcnR5QmFnKCk6IFByb3BlcnRpZXNPZjx0aGlzPiB7XG5cdFx0Y29uc3Qgc2V0dGluZ3M6IFByb3BlcnRpZXNPZjx0aGlzPiA9IHt9IGFzIFByb3BlcnRpZXNPZjx0aGlzPjtcblx0XHRjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldEFsbFByb3BlcnRpZXMoKTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbnMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsQWdncmVnYXRpb25zKCk7XG5cdFx0Zm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgaW4gcHJvcGVydGllcykge1xuXHRcdFx0Y29uc3QgcHJvcGVydHkgPSB0aGlzLmdldFByb3BlcnR5KHByb3BlcnR5TmFtZSk7XG5cdFx0XHRpZiAodHlwZW9mIHByb3BlcnR5ICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0c2V0dGluZ3NbcHJvcGVydHlOYW1lIGFzIGtleW9mIFByb3BlcnRpZXNPZjx0aGlzPl0gPSBwcm9wZXJ0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Zm9yIChjb25zdCBhZ2dyZWdhdGlvbk5hbWUgaW4gYWdncmVnYXRpb25zKSB7XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkNvbnRlbnQgPSB0aGlzLmdldEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uTmFtZSk7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhZ2dyZWdhdGlvbkNvbnRlbnQpKSB7XG5cdFx0XHRcdGNvbnN0IGNoaWxkcmVuQXJyYXkgPSBbXTtcblx0XHRcdFx0Zm9yIChjb25zdCBtYW5hZ2VkT2JqZWN0IG9mIGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRcdGlmIChtYW5hZ2VkT2JqZWN0LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRcdGNoaWxkcmVuQXJyYXkucHVzaChtYW5hZ2VkT2JqZWN0LmdldFByb3BlcnR5QmFnKCkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IGNoaWxkcmVuQXJyYXk7XG5cdFx0XHR9IGVsc2UgaWYgKGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRpZiAoYWdncmVnYXRpb25Db250ZW50LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IGFnZ3JlZ2F0aW9uQ29udGVudC5nZXRQcm9wZXJ0eUJhZygpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZSBhcyBrZXlvZiBQcm9wZXJ0aWVzT2Y8dGhpcz5dID0gYWdncmVnYXRpb25Db250ZW50LmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNldHRpbmdzO1xuXHR9XG5cblx0c2VyaWFsaXplKG92ZXJyaWRlTm9kZU5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsUHJvcGVydGllcygpO1xuXHRcdGNvbnN0IGV2ZW50cyA9IHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRBbGxFdmVudHMoKTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbnMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsQWdncmVnYXRpb25zKCk7XG5cdFx0Y29uc3Qgc2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYgeyBjaGlsZHJlbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSA9IHsgY2hpbGRyZW46IHt9IH07XG5cdFx0Zm9yIChjb25zdCBldmVudE5hbWUgaW4gZXZlbnRzKSB7XG5cdFx0XHRzZXR0aW5nc1tldmVudE5hbWVdID0gYFRISVMuX2ZpcmVFdmVudCgkZXZlbnQsICRjb250cm9sbGVyLCAnJHtldmVudE5hbWV9JylgO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBpbiBwcm9wZXJ0aWVzKSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eSA9IHRoaXMuZ2V0UHJvcGVydHkocHJvcGVydHlOYW1lKTtcblx0XHRcdGlmICh0eXBlb2YgcHJvcGVydHkgIT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHRzZXR0aW5nc1twcm9wZXJ0eU5hbWVdID0gcHJvcGVydHk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZvciAoY29uc3QgYWdncmVnYXRpb25OYW1lIGluIGFnZ3JlZ2F0aW9ucykge1xuXHRcdFx0Y29uc3QgYWdncmVnYXRpb25Db250ZW50ID0gdGhpcy5nZXRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbk5hbWUpO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoYWdncmVnYXRpb25Db250ZW50KSkge1xuXHRcdFx0XHRjb25zdCBjaGlsZHJlbkFycmF5ID0gW107XG5cdFx0XHRcdGZvciAoY29uc3QgbWFuYWdlZE9iamVjdCBvZiBhZ2dyZWdhdGlvbkNvbnRlbnQpIHtcblx0XHRcdFx0XHRpZiAobWFuYWdlZE9iamVjdC5pc0E8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5PihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5XCIpKSB7XG5cdFx0XHRcdFx0XHRjaGlsZHJlbkFycmF5LnB1c2gobWFuYWdlZE9iamVjdC5zZXJpYWxpemUoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHNldHRpbmdzLmNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0gPSBjaGlsZHJlbkFycmF5O1xuXHRcdFx0fSBlbHNlIGlmIChhZ2dyZWdhdGlvbkNvbnRlbnQpIHtcblx0XHRcdFx0aWYgKGFnZ3JlZ2F0aW9uQ29udGVudC5pc0E8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5PihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5XCIpKSB7XG5cdFx0XHRcdFx0c2V0dGluZ3MuY2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSA9IGFnZ3JlZ2F0aW9uQ29udGVudC5zZXJpYWxpemUoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdID0gYWdncmVnYXRpb25Db250ZW50LmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGpzeFhtbDxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFxuXHRcdFx0dGhpcy5nZXRNZXRhZGF0YSgpLmdldENsYXNzKCkgYXMgdW5rbm93biBhcyB0eXBlb2YgQ29udHJvbCxcblx0XHRcdHNldHRpbmdzIGFzIE5vbkNvbnRyb2xQcm9wZXJ0aWVzPEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eT4gJiB7XG5cdFx0XHRcdGtleT86IHN0cmluZztcblx0XHRcdFx0Y2hpbGRyZW4/OiBVSTVFbGVtZW50IHwgQ29udHJvbFByb3BlcnRpZXM8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5Pjtcblx0XHRcdH0sXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHR7fSxcblx0XHRcdG92ZXJyaWRlTm9kZU5hbWVcblx0XHQpO1xuXHR9XG5cblx0b3ZlcnJpZGUgYmluZFByb3BlcnR5KG5hbWU6IHN0cmluZywgYmluZGluZ0luZm86IFByb3BlcnR5QmluZGluZ0luZm8pOiB0aGlzIHtcblx0XHRjb25zdCBwcm9wZXJ0eU1ldGFkYXRhID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldFByb3BlcnR5KG5hbWUpO1xuXHRcdGlmIChwcm9wZXJ0eU1ldGFkYXRhPy5iaW5kYWJsZSA9PT0gZmFsc2UgJiYgcHJvcGVydHlNZXRhZGF0YS5ncm91cCA9PT0gXCJEYXRhXCIpIHtcblx0XHRcdCh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtuYW1lXSA9IGJpbmRpbmdJbmZvO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5iaW5kUHJvcGVydHkobmFtZSwgYmluZGluZ0luZm8pO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7RUFRQTtBQUNBO0FBQ0E7QUFDQTtFQUhBLElBS3FCQSwyQkFBMkIsSUFBQUMsSUFBQSxHQUQvQ0MsY0FBYyxDQUFDLG9EQUFvRCxDQUFDLEVBQUFELElBQUEsQ0FBQUUsTUFBQSwwQkFBQUMsV0FBQTtJQUFBLFNBQUFKLDRCQUFBO01B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
@@ -45,8 +45,12 @@ export default class BuildingBlockObjectProperty extends UI5Element {
45
45
 
46
46
  serialize(overrideNodeName?: string): string {
47
47
  const properties = this.getMetadata().getAllProperties();
48
+ const events = this.getMetadata().getAllEvents();
48
49
  const aggregations = this.getMetadata().getAllAggregations();
49
50
  const settings: Record<string, unknown> & { children: Record<string, unknown> } = { children: {} };
51
+ for (const eventName in events) {
52
+ settings[eventName] = `THIS._fireEvent($event, $controller, '${eventName}')`;
53
+ }
50
54
  for (const propertyName in properties) {
51
55
  const property = this.getProperty(propertyName);
52
56
  if (typeof property !== "function") {
@@ -119,10 +119,15 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/core/Control", "sap/ui/core/L
119
119
  * @param value
120
120
  */;
121
121
  _proto.setEditMode = function setEditMode(value) {
122
+ if (this.switchToDisplayTimeOutId) {
123
+ clearTimeout(this.switchToDisplayTimeOutId);
124
+ this.switchToDisplayTimeOutId = undefined;
125
+ }
122
126
  if (this.delaySwitchToDisplay && this.editMode && value === "Display" && this.editMode !== "Display") {
123
- setTimeout(() => {
127
+ this.switchToDisplayTimeOutId = window.setTimeout(() => {
124
128
  this.setProperty("editMode", value);
125
129
  this.invalidate();
130
+ this.switchToDisplayTimeOutId = undefined;
126
131
  }, 100); // workaround to ensure input focusout does not trigger a Patch request
127
132
  // DINC0524872
128
133
  } else {
@@ -154,7 +159,8 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/core/Control", "sap/ui/core/L
154
159
  oRm.style("text-align", oControl.textAlign);
155
160
  if (oControl.editMode === "Display") {
156
161
  oRm.style("width", oControl.width);
157
- if (oControl.getParent().hasInlineEdit) {
162
+ const parentControl = oControl.getParent();
163
+ if (parentControl.hasInlineEdit && parentControl.formatOptions?.reactiveAreaMode !== "Overlay") {
158
164
  // tooltip
159
165
  oRm.attr("title", oControl.resourceBundle.getText("M_INLINE_EDIT_TOOLTIP_DOUBLECLICK_EDIT"));
160
166
  // focus
@@ -229,4 +235,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/core/Control", "sap/ui/core/L
229
235
  }), _class2)) || _class);
230
236
  return FieldWrapper;
231
237
  }, false);
232
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZFdyYXBwZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMzIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzQiLCJkZWZhdWx0VmFsdWUiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiYXNzb2NpYXRpb24iLCJtdWx0aXBsZSIsInNpbmd1bGFyTmFtZSIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwiaXNEZWZhdWx0IiwiX2RlYzExIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwiaWQiLCJzZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwicmVzb3VyY2VCdW5kbGUiLCJMaWIiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSIsIm9FbGVtZW50IiwibUFyaWFQcm9wcyIsIm9QYXJlbnQiLCJnZXRQYXJlbnQiLCJhZGRBZ2dyZWdhdGlvbiIsInNBZ2dyZWdhdGlvbk5hbWUiLCJvT2JqZWN0IiwiYlN1cHByZXNzSW52YWxpZGF0ZSIsImlzQSIsInNldFByZWZlclVzZXJJbnRlcmFjdGlvbiIsImdldEFjY2Vzc2liaWxpdHlJbmZvIiwib0NvbnRlbnQiLCJlZGl0TW9kZSIsImNvbnRlbnREaXNwbGF5IiwiY29udGVudEVkaXQiLCJsZW5ndGgiLCJnZXRJZEZvckxhYmVsIiwic2V0RWRpdE1vZGUiLCJ2YWx1ZSIsImRlbGF5U3dpdGNoVG9EaXNwbGF5Iiwic2V0VGltZW91dCIsInNldFByb3BlcnR5IiwiaW52YWxpZGF0ZSIsIl9zZXRBcmlhTGFiZWxsZWRCeSIsImFkZEFyaWFMYWJlbGxlZEJ5IiwiYUFyaWFMYWJlbGxlZEJ5IiwiYXJpYUxhYmVsbGVkQnkiLCJzSWQiLCJhQXJpYUxhYmVsbGVkQnlzIiwiZ2V0QXJpYUxhYmVsbGVkQnkiLCJpbmNsdWRlcyIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiYUNvbnRlbnRFZGl0IiwiaXRlbSIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwib3BlblN0YXJ0Iiwic3R5bGUiLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsImhhc0lubGluZUVkaXQiLCJhdHRyIiwiZ2V0VGV4dCIsIm9wZW5FbmQiLCJyZW5kZXJDb250cm9sIiwiY2xvc2UiLCJDb250cm9sIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGaWVsZFdyYXBwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGFzc29jaWF0aW9uLCBkZWZpbmVVSTVDbGFzcywgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIElucHV0QmFzZSBmcm9tIFwic2FwL20vSW5wdXRCYXNlXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NpYmlsaXR5SW5mbywgQ1NTU2l6ZSwgSUZvcm1Db250ZW50LCBUZXh0QWxpZ24gfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgRmllbGQgZnJvbSBcIi4uL0ZpZWxkXCI7XG5cbnR5cGUgQ29udHJvbFdpdGhBY2Nlc3NpYmlsaXR5ID0gQ29udHJvbCAmIHsgYWRkQXJpYUxhYmVsbGVkQnk/OiAoaWQ6IHN0cmluZykgPT4gdm9pZDsgZ2V0QXJpYUxhYmVsbGVkQnk6ICgpID0+IHN0cmluZ1tdIH07XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmllbGRXcmFwcGVyXCIpXG5jbGFzcyBGaWVsZFdyYXBwZXIgZXh0ZW5kcyBDb250cm9sIGltcGxlbWVudHMgSUZvcm1Db250ZW50IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC51aS5jb3JlLklGb3JtQ29udGVudFwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lGb3JtQ29udGVudCA9IHRydWU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5UZXh0QWxpZ25cIiB9KVxuXHR0ZXh0QWxpZ24hOiBUZXh0QWxpZ247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5DU1NTaXplXCIsIGRlZmF1bHRWYWx1ZTogbnVsbCB9KVxuXHR3aWR0aCE6IENTU1NpemU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0Zm9ybURvTm90QWRqdXN0V2lkdGghOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJEaXNwbGF5XCIgfSlcblx0ZWRpdE1vZGUhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0cmVxdWlyZWQhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGRlbGF5U3dpdGNoVG9EaXNwbGF5ITogYm9vbGVhbjtcblx0LyoqXG5cdCAqIEFzc29jaWF0aW9uIHRvIGNvbnRyb2xzIC8gSURzIHRoYXQgbGFiZWwgdGhpcyBjb250cm9sIChzZWUgV0FJLUFSSUEgYXR0cmlidXRlIGFyaWEtbGFiZWxsZWRieSkuXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IHRydWUsIHNpbmd1bGFyTmFtZTogXCJhcmlhTGFiZWxsZWRCeVwiIH0pXG5cdGFyaWFMYWJlbGxlZEJ5ITogc3RyaW5nW107XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdGNvbnRlbnREaXNwbGF5ITogQ29udHJvbFdpdGhBY2Nlc3NpYmlsaXR5O1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogdHJ1ZSB9KVxuXHRjb250ZW50RWRpdCE6IENvbnRyb2xXaXRoQWNjZXNzaWJpbGl0eVtdO1xuXG5cdHByaXZhdGUgcmVzb3VyY2VCdW5kbGU6IFJlc291cmNlQnVuZGxlO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdGlkPzogc3RyaW5nIHwgdW5kZWZpbmVkIHwgKFByb3BlcnRpZXNPZjxGaWVsZFdyYXBwZXI+ICYgJENvbnRyb2xTZXR0aW5ncyksXG5cdFx0c2V0dGluZ3M/OiAkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEZpZWxkV3JhcHBlcj5cblx0KSB7XG5cdFx0c3VwZXIoaWQgYXMgc3RyaW5nLCBzZXR0aW5ncyk7XG5cdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZSA9IExpYi5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb250cm9sc1wiKSE7XG5cdH1cblxuXHRlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKG9FbGVtZW50OiBvYmplY3QsIG1BcmlhUHJvcHM6IG9iamVjdCk6IG9iamVjdCB7XG5cdFx0Y29uc3Qgb1BhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG5cblx0XHRpZiAob1BhcmVudCAmJiAob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlPzogRnVuY3Rpb24gfSkuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSkge1xuXHRcdFx0Ly8gZm9yd2FyZCAgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSBjYWxsIHRvIHRoZSBwYXJlbnRcblx0XHRcdChvUGFyZW50IGFzIE1hbmFnZWRPYmplY3QgJiB7IGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGU6IEZ1bmN0aW9uIH0pLmVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUob0VsZW1lbnQsIG1BcmlhUHJvcHMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBtQXJpYVByb3BzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBjb250cm9sIHRvIHRoZSBhZ2dyZWdhdGlvbi5cblx0ICogQHBhcmFtIHNBZ2dyZWdhdGlvbk5hbWVcblx0ICogQHBhcmFtIG9PYmplY3Rcblx0ICogQHBhcmFtIGJTdXBwcmVzc0ludmFsaWRhdGVcblx0ICogQHJldHVybnMgVGhlIEZpZWxkV3JhcHBlciBpbnN0YW5jZVxuXHQgKi9cblx0YWRkQWdncmVnYXRpb24oc0FnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nLCBvT2JqZWN0OiBNYW5hZ2VkT2JqZWN0LCBiU3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmIChzQWdncmVnYXRpb25OYW1lID09PSBcImNvbnRlbnRFZGl0XCIgJiYgb09iamVjdC5pc0E8SW5wdXRCYXNlPihcInNhcC5tLklucHV0QmFzZVwiKSkge1xuXHRcdFx0b09iamVjdC5zZXRQcmVmZXJVc2VySW50ZXJhY3Rpb24odHJ1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiBzdXBlci5hZGRBZ2dyZWdhdGlvbihzQWdncmVnYXRpb25OYW1lLCBvT2JqZWN0LCBiU3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0fVxuXG5cdGdldEFjY2Vzc2liaWxpdHlJbmZvKCk6IEFjY2Vzc2liaWxpdHlJbmZvIHtcblx0XHRsZXQgb0NvbnRlbnQ7XG5cdFx0aWYgKHRoaXMuZWRpdE1vZGUgPT09IFwiRGlzcGxheVwiKSB7XG5cdFx0XHRvQ29udGVudCA9IHRoaXMuY29udGVudERpc3BsYXk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9Db250ZW50ID0gdGhpcy5jb250ZW50RWRpdC5sZW5ndGggPyB0aGlzLmNvbnRlbnRFZGl0WzBdIDogbnVsbDtcblx0XHR9XG5cdFx0cmV0dXJuIG9Db250ZW50ICYmIG9Db250ZW50LmdldEFjY2Vzc2liaWxpdHlJbmZvID8gb0NvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8oKSA6IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTU5vZGUgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIFwibGFiZWxGb3JcIiBhdHRyaWJ1dGUuXG5cdCAqXG5cdCAqIFdlIGZvcndhcmQgdGhlIGNhbGwgb2YgdGhpcyBtZXRob2QgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cblx0ICogQHJldHVybnMgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIDxjb2RlPmxhYmVsRm9yPC9jb2RlPlxuXHQgKi9cblx0Z2V0SWRGb3JMYWJlbCgpOiBzdHJpbmcge1xuXHRcdGxldCBvQ29udGVudDtcblx0XHRpZiAodGhpcy5lZGl0TW9kZSA9PT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdG9Db250ZW50ID0gdGhpcy5jb250ZW50RGlzcGxheTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b0NvbnRlbnQgPSB0aGlzLmNvbnRlbnRFZGl0Lmxlbmd0aCA/IHRoaXMuY29udGVudEVkaXRbMF0gOiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gKG9Db250ZW50IGFzIENvbnRyb2wpPy5nZXRJZEZvckxhYmVsKCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0dGVyIGZvciBlZGl0TW9kZS5cblx0ICogQHBhcmFtIHZhbHVlXG5cdCAqL1xuXHRzZXRFZGl0TW9kZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuZGVsYXlTd2l0Y2hUb0Rpc3BsYXkgJiYgdGhpcy5lZGl0TW9kZSAmJiB2YWx1ZSA9PT0gXCJEaXNwbGF5XCIgJiYgdGhpcy5lZGl0TW9kZSAhPT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnNldFByb3BlcnR5KFwiZWRpdE1vZGVcIiwgdmFsdWUpO1xuXHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKTtcblx0XHRcdH0sIDEwMCk7IC8vIHdvcmthcm91bmQgdG8gZW5zdXJlIGlucHV0IGZvY3Vzb3V0IGRvZXMgbm90IHRyaWdnZXIgYSBQYXRjaCByZXF1ZXN0XG5cdFx0XHQvLyBESU5DMDUyNDg3MlxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldFByb3BlcnR5KFwiZWRpdE1vZGVcIiwgdmFsdWUpO1xuXHRcdH1cblx0fVxuXG5cdF9zZXRBcmlhTGFiZWxsZWRCeShvQ29udGVudD86IENvbnRyb2xXaXRoQWNjZXNzaWJpbGl0eSk6IHZvaWQge1xuXHRcdGlmIChvQ29udGVudCAmJiBvQ29udGVudC5hZGRBcmlhTGFiZWxsZWRCeSkge1xuXHRcdFx0Y29uc3QgYUFyaWFMYWJlbGxlZEJ5ID0gdGhpcy5hcmlhTGFiZWxsZWRCeTtcblxuXHRcdFx0Zm9yIChjb25zdCBzSWQgb2YgYUFyaWFMYWJlbGxlZEJ5KSB7XG5cdFx0XHRcdGNvbnN0IGFBcmlhTGFiZWxsZWRCeXMgPSBvQ29udGVudC5nZXRBcmlhTGFiZWxsZWRCeSgpIHx8IFtdO1xuXHRcdFx0XHRpZiAoIWFBcmlhTGFiZWxsZWRCeXMuaW5jbHVkZXMoc0lkKSkge1xuXHRcdFx0XHRcdG9Db250ZW50LmFkZEFyaWFMYWJlbGxlZEJ5KHNJZCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRvbkJlZm9yZVJlbmRlcmluZygpOiB2b2lkIHtcblx0XHQvLyBiZWZvcmUgY2FsbGluZyB0aGUgcmVuZGVyZXIgb2YgdGhlIEZpZWxkV3JhcHBlciBwYXJlbnQgY29udHJvbCBtYXkgaGF2ZSBzZXQgYXJpYUxhYmVsbGVkQnlcblx0XHQvLyB3ZSBlbnN1cmUgaXQgaXMgcGFzc2VkIHRvIGl0cyBpbm5lciBjb250cm9sc1xuXHRcdHRoaXMuX3NldEFyaWFMYWJlbGxlZEJ5KHRoaXMuY29udGVudERpc3BsYXkpO1xuXHRcdGNvbnN0IGFDb250ZW50RWRpdCA9IHRoaXMuY29udGVudEVkaXQ7XG5cdFx0Zm9yIChjb25zdCBpdGVtIG9mIGFDb250ZW50RWRpdCkge1xuXHRcdFx0dGhpcy5fc2V0QXJpYUxhYmVsbGVkQnkoaXRlbSk7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIHJlbmRlcihvUm06IFJlbmRlck1hbmFnZXIsIG9Db250cm9sOiBGaWVsZFdyYXBwZXIpOiB2b2lkIHtcblx0XHRvUm0ub3BlblN0YXJ0KFwiZGl2XCIsIG9Db250cm9sKTtcblx0XHRvUm0uc3R5bGUoXCJ0ZXh0LWFsaWduXCIsIG9Db250cm9sLnRleHRBbGlnbik7XG5cdFx0aWYgKG9Db250cm9sLmVkaXRNb2RlID09PSBcIkRpc3BsYXlcIikge1xuXHRcdFx0b1JtLnN0eWxlKFwid2lkdGhcIiwgb0NvbnRyb2wud2lkdGgpO1xuXHRcdFx0aWYgKChvQ29udHJvbC5nZXRQYXJlbnQoKSBhcyBGaWVsZCkuaGFzSW5saW5lRWRpdCkge1xuXHRcdFx0XHQvLyB0b29sdGlwXG5cdFx0XHRcdG9SbS5hdHRyKFwidGl0bGVcIiwgb0NvbnRyb2wucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fSU5MSU5FX0VESVRfVE9PTFRJUF9ET1VCTEVDTElDS19FRElUXCIpKTtcblx0XHRcdFx0Ly8gZm9jdXNcblx0XHRcdFx0b1JtLmF0dHIoXCJ0YWJpbmRleFwiLCAwKTtcblx0XHRcdH1cblx0XHRcdG9SbS5vcGVuRW5kKCk7XG5cdFx0XHRvUm0ucmVuZGVyQ29udHJvbChvQ29udHJvbC5jb250ZW50RGlzcGxheSk7IC8vIHJlbmRlciB0aGUgY2hpbGQgQ29udHJvbCBmb3IgZGlzcGxheVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBhQ29udGVudEVkaXQgPSBvQ29udHJvbC5jb250ZW50RWRpdDtcblxuXHRcdFx0b1JtLnN0eWxlKFwid2lkdGhcIiwgb0NvbnRyb2wud2lkdGgpO1xuXHRcdFx0b1JtLm9wZW5FbmQoKTtcblx0XHRcdGZvciAoY29uc3Qgb0NvbnRlbnQgb2YgYUNvbnRlbnRFZGl0KSB7XG5cdFx0XHRcdC8vIHJlbmRlciB0aGUgY2hpbGQgQ29udHJvbCAgZm9yIGVkaXRcblx0XHRcdFx0b1JtLnJlbmRlckNvbnRyb2wob0NvbnRlbnQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRvUm0uY2xvc2UoXCJkaXZcIik7IC8vIGVuZCBvZiB0aGUgY29tcGxldGUgQ29udHJvbFxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZpZWxkV3JhcHBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BZU1BLFlBQVksSUFBQUMsSUFBQSxHQURqQkMsY0FBYyxDQUFDLHFDQUFxQyxDQUFDLEVBQUFDLEtBQUEsR0FFcERDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLEVBQUFDLEtBQUEsR0FHOUNDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBd0IsQ0FB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
238
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZFdyYXBwZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMzIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzQiLCJkZWZhdWx0VmFsdWUiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiYXNzb2NpYXRpb24iLCJtdWx0aXBsZSIsInNpbmd1bGFyTmFtZSIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwiaXNEZWZhdWx0IiwiX2RlYzExIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwiaWQiLCJzZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwicmVzb3VyY2VCdW5kbGUiLCJMaWIiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSIsIm9FbGVtZW50IiwibUFyaWFQcm9wcyIsIm9QYXJlbnQiLCJnZXRQYXJlbnQiLCJhZGRBZ2dyZWdhdGlvbiIsInNBZ2dyZWdhdGlvbk5hbWUiLCJvT2JqZWN0IiwiYlN1cHByZXNzSW52YWxpZGF0ZSIsImlzQSIsInNldFByZWZlclVzZXJJbnRlcmFjdGlvbiIsImdldEFjY2Vzc2liaWxpdHlJbmZvIiwib0NvbnRlbnQiLCJlZGl0TW9kZSIsImNvbnRlbnREaXNwbGF5IiwiY29udGVudEVkaXQiLCJsZW5ndGgiLCJnZXRJZEZvckxhYmVsIiwic2V0RWRpdE1vZGUiLCJ2YWx1ZSIsInN3aXRjaFRvRGlzcGxheVRpbWVPdXRJZCIsImNsZWFyVGltZW91dCIsInVuZGVmaW5lZCIsImRlbGF5U3dpdGNoVG9EaXNwbGF5Iiwid2luZG93Iiwic2V0VGltZW91dCIsInNldFByb3BlcnR5IiwiaW52YWxpZGF0ZSIsIl9zZXRBcmlhTGFiZWxsZWRCeSIsImFkZEFyaWFMYWJlbGxlZEJ5IiwiYUFyaWFMYWJlbGxlZEJ5IiwiYXJpYUxhYmVsbGVkQnkiLCJzSWQiLCJhQXJpYUxhYmVsbGVkQnlzIiwiZ2V0QXJpYUxhYmVsbGVkQnkiLCJpbmNsdWRlcyIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiYUNvbnRlbnRFZGl0IiwiaXRlbSIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwib3BlblN0YXJ0Iiwic3R5bGUiLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsInBhcmVudENvbnRyb2wiLCJoYXNJbmxpbmVFZGl0IiwiZm9ybWF0T3B0aW9ucyIsInJlYWN0aXZlQXJlYU1vZGUiLCJhdHRyIiwiZ2V0VGV4dCIsIm9wZW5FbmQiLCJyZW5kZXJDb250cm9sIiwiY2xvc2UiLCJDb250cm9sIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGaWVsZFdyYXBwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGFzc29jaWF0aW9uLCBkZWZpbmVVSTVDbGFzcywgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIElucHV0QmFzZSBmcm9tIFwic2FwL20vSW5wdXRCYXNlXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NpYmlsaXR5SW5mbywgQ1NTU2l6ZSwgSUZvcm1Db250ZW50LCBUZXh0QWxpZ24gfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgRmllbGQgZnJvbSBcIi4uL0ZpZWxkXCI7XG5cbnR5cGUgQ29udHJvbFdpdGhBY2Nlc3NpYmlsaXR5ID0gQ29udHJvbCAmIHsgYWRkQXJpYUxhYmVsbGVkQnk/OiAoaWQ6IHN0cmluZykgPT4gdm9pZDsgZ2V0QXJpYUxhYmVsbGVkQnk6ICgpID0+IHN0cmluZ1tdIH07XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmllbGRXcmFwcGVyXCIpXG5jbGFzcyBGaWVsZFdyYXBwZXIgZXh0ZW5kcyBDb250cm9sIGltcGxlbWVudHMgSUZvcm1Db250ZW50IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC51aS5jb3JlLklGb3JtQ29udGVudFwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lGb3JtQ29udGVudCA9IHRydWU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5UZXh0QWxpZ25cIiB9KVxuXHR0ZXh0QWxpZ24hOiBUZXh0QWxpZ247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5DU1NTaXplXCIsIGRlZmF1bHRWYWx1ZTogbnVsbCB9KVxuXHR3aWR0aCE6IENTU1NpemU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0Zm9ybURvTm90QWRqdXN0V2lkdGghOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJEaXNwbGF5XCIgfSlcblx0ZWRpdE1vZGUhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0cmVxdWlyZWQhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGRlbGF5U3dpdGNoVG9EaXNwbGF5ITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQXNzb2NpYXRpb24gdG8gY29udHJvbHMgLyBJRHMgdGhhdCBsYWJlbCB0aGlzIGNvbnRyb2wgKHNlZSBXQUktQVJJQSBhdHRyaWJ1dGUgYXJpYS1sYWJlbGxlZGJ5KS5cblx0ICovXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogdHJ1ZSwgc2luZ3VsYXJOYW1lOiBcImFyaWFMYWJlbGxlZEJ5XCIgfSlcblx0YXJpYUxhYmVsbGVkQnkhOiBzdHJpbmdbXTtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Y29udGVudERpc3BsYXkhOiBDb250cm9sV2l0aEFjY2Vzc2liaWxpdHk7XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiB0cnVlIH0pXG5cdGNvbnRlbnRFZGl0ITogQ29udHJvbFdpdGhBY2Nlc3NpYmlsaXR5W107XG5cblx0cHJpdmF0ZSByZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGU7XG5cblx0cHJpdmF0ZSBzd2l0Y2hUb0Rpc3BsYXlUaW1lT3V0SWQ/OiBudW1iZXI7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0aWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQgfCAoUHJvcGVydGllc09mPEZpZWxkV3JhcHBlcj4gJiAkQ29udHJvbFNldHRpbmdzKSxcblx0XHRzZXR0aW5ncz86ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8RmllbGRXcmFwcGVyPlxuXHQpIHtcblx0XHRzdXBlcihpZCBhcyBzdHJpbmcsIHNldHRpbmdzKTtcblx0XHR0aGlzLnJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcblx0fVxuXG5cdGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUob0VsZW1lbnQ6IG9iamVjdCwgbUFyaWFQcm9wczogb2JqZWN0KTogb2JqZWN0IHtcblx0XHRjb25zdCBvUGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoKTtcblxuXHRcdGlmIChvUGFyZW50ICYmIChvUGFyZW50IGFzIE1hbmFnZWRPYmplY3QgJiB7IGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGU/OiBGdW5jdGlvbiB9KS5lbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKSB7XG5cdFx0XHQvLyBmb3J3YXJkICBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlIGNhbGwgdG8gdGhlIHBhcmVudFxuXHRcdFx0KG9QYXJlbnQgYXMgTWFuYWdlZE9iamVjdCAmIHsgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZTogRnVuY3Rpb24gfSkuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZShvRWxlbWVudCwgbUFyaWFQcm9wcyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1BcmlhUHJvcHM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIGNvbnRyb2wgdG8gdGhlIGFnZ3JlZ2F0aW9uLlxuXHQgKiBAcGFyYW0gc0FnZ3JlZ2F0aW9uTmFtZVxuXHQgKiBAcGFyYW0gb09iamVjdFxuXHQgKiBAcGFyYW0gYlN1cHByZXNzSW52YWxpZGF0ZVxuXHQgKiBAcmV0dXJucyBUaGUgRmllbGRXcmFwcGVyIGluc3RhbmNlXG5cdCAqL1xuXHRhZGRBZ2dyZWdhdGlvbihzQWdncmVnYXRpb25OYW1lOiBzdHJpbmcsIG9PYmplY3Q6IE1hbmFnZWRPYmplY3QsIGJTdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdGhpcyB7XG5cdFx0aWYgKHNBZ2dyZWdhdGlvbk5hbWUgPT09IFwiY29udGVudEVkaXRcIiAmJiBvT2JqZWN0LmlzQTxJbnB1dEJhc2U+KFwic2FwLm0uSW5wdXRCYXNlXCIpKSB7XG5cdFx0XHRvT2JqZWN0LnNldFByZWZlclVzZXJJbnRlcmFjdGlvbih0cnVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHN1cGVyLmFkZEFnZ3JlZ2F0aW9uKHNBZ2dyZWdhdGlvbk5hbWUsIG9PYmplY3QsIGJTdXBwcmVzc0ludmFsaWRhdGUpO1xuXHR9XG5cblx0Z2V0QWNjZXNzaWJpbGl0eUluZm8oKTogQWNjZXNzaWJpbGl0eUluZm8ge1xuXHRcdGxldCBvQ29udGVudDtcblx0XHRpZiAodGhpcy5lZGl0TW9kZSA9PT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdG9Db250ZW50ID0gdGhpcy5jb250ZW50RGlzcGxheTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b0NvbnRlbnQgPSB0aGlzLmNvbnRlbnRFZGl0Lmxlbmd0aCA/IHRoaXMuY29udGVudEVkaXRbMF0gOiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gb0NvbnRlbnQgJiYgb0NvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8gPyBvQ29udGVudC5nZXRBY2Nlc3NpYmlsaXR5SW5mbygpIDoge307XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgRE9NTm9kZSBJRCB0byBiZSB1c2VkIGZvciB0aGUgXCJsYWJlbEZvclwiIGF0dHJpYnV0ZS5cblx0ICpcblx0ICogV2UgZm9yd2FyZCB0aGUgY2FsbCBvZiB0aGlzIG1ldGhvZCB0byB0aGUgY29udGVudCBjb250cm9sLlxuXHQgKiBAcmV0dXJucyBJRCB0byBiZSB1c2VkIGZvciB0aGUgPGNvZGU+bGFiZWxGb3I8L2NvZGU+XG5cdCAqL1xuXHRnZXRJZEZvckxhYmVsKCk6IHN0cmluZyB7XG5cdFx0bGV0IG9Db250ZW50O1xuXHRcdGlmICh0aGlzLmVkaXRNb2RlID09PSBcIkRpc3BsYXlcIikge1xuXHRcdFx0b0NvbnRlbnQgPSB0aGlzLmNvbnRlbnREaXNwbGF5O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvQ29udGVudCA9IHRoaXMuY29udGVudEVkaXQubGVuZ3RoID8gdGhpcy5jb250ZW50RWRpdFswXSA6IG51bGw7XG5cdFx0fVxuXHRcdHJldHVybiAob0NvbnRlbnQgYXMgQ29udHJvbCk/LmdldElkRm9yTGFiZWwoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXR0ZXIgZm9yIGVkaXRNb2RlLlxuXHQgKiBAcGFyYW0gdmFsdWVcblx0ICovXG5cdHNldEVkaXRNb2RlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5zd2l0Y2hUb0Rpc3BsYXlUaW1lT3V0SWQpIHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnN3aXRjaFRvRGlzcGxheVRpbWVPdXRJZCk7XG5cdFx0XHR0aGlzLnN3aXRjaFRvRGlzcGxheVRpbWVPdXRJZCA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZGVsYXlTd2l0Y2hUb0Rpc3BsYXkgJiYgdGhpcy5lZGl0TW9kZSAmJiB2YWx1ZSA9PT0gXCJEaXNwbGF5XCIgJiYgdGhpcy5lZGl0TW9kZSAhPT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdHRoaXMuc3dpdGNoVG9EaXNwbGF5VGltZU91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnNldFByb3BlcnR5KFwiZWRpdE1vZGVcIiwgdmFsdWUpO1xuXHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKTtcblx0XHRcdFx0dGhpcy5zd2l0Y2hUb0Rpc3BsYXlUaW1lT3V0SWQgPSB1bmRlZmluZWQ7XG5cdFx0XHR9LCAxMDApOyAvLyB3b3JrYXJvdW5kIHRvIGVuc3VyZSBpbnB1dCBmb2N1c291dCBkb2VzIG5vdCB0cmlnZ2VyIGEgUGF0Y2ggcmVxdWVzdFxuXHRcdFx0Ly8gRElOQzA1MjQ4NzJcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXRQcm9wZXJ0eShcImVkaXRNb2RlXCIsIHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRfc2V0QXJpYUxhYmVsbGVkQnkob0NvbnRlbnQ/OiBDb250cm9sV2l0aEFjY2Vzc2liaWxpdHkpOiB2b2lkIHtcblx0XHRpZiAob0NvbnRlbnQgJiYgb0NvbnRlbnQuYWRkQXJpYUxhYmVsbGVkQnkpIHtcblx0XHRcdGNvbnN0IGFBcmlhTGFiZWxsZWRCeSA9IHRoaXMuYXJpYUxhYmVsbGVkQnk7XG5cblx0XHRcdGZvciAoY29uc3Qgc0lkIG9mIGFBcmlhTGFiZWxsZWRCeSkge1xuXHRcdFx0XHRjb25zdCBhQXJpYUxhYmVsbGVkQnlzID0gb0NvbnRlbnQuZ2V0QXJpYUxhYmVsbGVkQnkoKSB8fCBbXTtcblx0XHRcdFx0aWYgKCFhQXJpYUxhYmVsbGVkQnlzLmluY2x1ZGVzKHNJZCkpIHtcblx0XHRcdFx0XHRvQ29udGVudC5hZGRBcmlhTGFiZWxsZWRCeShzSWQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0b25CZWZvcmVSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0Ly8gYmVmb3JlIGNhbGxpbmcgdGhlIHJlbmRlcmVyIG9mIHRoZSBGaWVsZFdyYXBwZXIgcGFyZW50IGNvbnRyb2wgbWF5IGhhdmUgc2V0IGFyaWFMYWJlbGxlZEJ5XG5cdFx0Ly8gd2UgZW5zdXJlIGl0IGlzIHBhc3NlZCB0byBpdHMgaW5uZXIgY29udHJvbHNcblx0XHR0aGlzLl9zZXRBcmlhTGFiZWxsZWRCeSh0aGlzLmNvbnRlbnREaXNwbGF5KTtcblx0XHRjb25zdCBhQ29udGVudEVkaXQgPSB0aGlzLmNvbnRlbnRFZGl0O1xuXHRcdGZvciAoY29uc3QgaXRlbSBvZiBhQ29udGVudEVkaXQpIHtcblx0XHRcdHRoaXMuX3NldEFyaWFMYWJlbGxlZEJ5KGl0ZW0pO1xuXHRcdH1cblx0fVxuXG5cdHN0YXRpYyByZW5kZXIob1JtOiBSZW5kZXJNYW5hZ2VyLCBvQ29udHJvbDogRmllbGRXcmFwcGVyKTogdm9pZCB7XG5cdFx0b1JtLm9wZW5TdGFydChcImRpdlwiLCBvQ29udHJvbCk7XG5cdFx0b1JtLnN0eWxlKFwidGV4dC1hbGlnblwiLCBvQ29udHJvbC50ZXh0QWxpZ24pO1xuXHRcdGlmIChvQ29udHJvbC5lZGl0TW9kZSA9PT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdG9SbS5zdHlsZShcIndpZHRoXCIsIG9Db250cm9sLndpZHRoKTtcblx0XHRcdGNvbnN0IHBhcmVudENvbnRyb2wgPSBvQ29udHJvbC5nZXRQYXJlbnQoKSBhcyBGaWVsZDtcblx0XHRcdGlmIChwYXJlbnRDb250cm9sLmhhc0lubGluZUVkaXQgJiYgcGFyZW50Q29udHJvbC5mb3JtYXRPcHRpb25zPy5yZWFjdGl2ZUFyZWFNb2RlICE9PSBcIk92ZXJsYXlcIikge1xuXHRcdFx0XHQvLyB0b29sdGlwXG5cdFx0XHRcdG9SbS5hdHRyKFwidGl0bGVcIiwgb0NvbnRyb2wucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fSU5MSU5FX0VESVRfVE9PTFRJUF9ET1VCTEVDTElDS19FRElUXCIpKTtcblx0XHRcdFx0Ly8gZm9jdXNcblx0XHRcdFx0b1JtLmF0dHIoXCJ0YWJpbmRleFwiLCAwKTtcblx0XHRcdH1cblx0XHRcdG9SbS5vcGVuRW5kKCk7XG5cdFx0XHRvUm0ucmVuZGVyQ29udHJvbChvQ29udHJvbC5jb250ZW50RGlzcGxheSk7IC8vIHJlbmRlciB0aGUgY2hpbGQgQ29udHJvbCBmb3IgZGlzcGxheVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBhQ29udGVudEVkaXQgPSBvQ29udHJvbC5jb250ZW50RWRpdDtcblxuXHRcdFx0b1JtLnN0eWxlKFwid2lkdGhcIiwgb0NvbnRyb2wud2lkdGgpO1xuXHRcdFx0b1JtLm9wZW5FbmQoKTtcblx0XHRcdGZvciAoY29uc3Qgb0NvbnRlbnQgb2YgYUNvbnRlbnRFZGl0KSB7XG5cdFx0XHRcdC8vIHJlbmRlciB0aGUgY2hpbGQgQ29udHJvbCAgZm9yIGVkaXRcblx0XHRcdFx0b1JtLnJlbmRlckNvbnRyb2wob0NvbnRlbnQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRvUm0uY2xvc2UoXCJkaXZcIik7IC8vIGVuZCBvZiB0aGUgY29tcGxldGUgQ29udHJvbFxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZpZWxkV3JhcHBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BZU1BLFlBQVksSUFBQUMsSUFBQSxHQURqQkMsY0FBYyxDQUFDLHFDQUFxQyxDQUFDLEVBQUFDLEtBQUEsR0FFcERDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLEVBQUFDLEtBQUEsR0FHOUNDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBd0IsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHM0NGLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUscUJBQXFCO0lBQUVFLFlBQVksRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRzdESixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFNBQVM7SUFBRUUsWUFBWSxFQUFFO0VBQU0sQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FHbERMLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsUUFBUTtJQUFFRSxZQUFZLEVBQUU7RUFBVSxDQUFDLENBQUMsRUFBQUcsS0FBQSxHQUdyRE4sUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxTQUFTO0lBQUVFLFlBQVksRUFBRTtFQUFNLENBQUMsQ0FBQyxFQUFBSSxLQUFBLEdBR2xEUCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFNBQVM7SUFBRUUsWUFB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
@@ -34,6 +34,7 @@ class FieldWrapper extends Control implements IFormContent {
34
34
 
35
35
  @property({ type: "boolean", defaultValue: false })
36
36
  delaySwitchToDisplay!: boolean;
37
+
37
38
  /**
38
39
  * Association to controls / IDs that label this control (see WAI-ARIA attribute aria-labelledby).
39
40
  */
@@ -48,6 +49,8 @@ class FieldWrapper extends Control implements IFormContent {
48
49
 
49
50
  private resourceBundle: ResourceBundle;
50
51
 
52
+ private switchToDisplayTimeOutId?: number;
53
+
51
54
  constructor(
52
55
  id?: string | undefined | (PropertiesOf<FieldWrapper> & $ControlSettings),
53
56
  settings?: $ControlSettings & PropertiesOf<FieldWrapper>
@@ -112,10 +115,15 @@ class FieldWrapper extends Control implements IFormContent {
112
115
  * @param value
113
116
  */
114
117
  setEditMode(value: string): void {
118
+ if (this.switchToDisplayTimeOutId) {
119
+ clearTimeout(this.switchToDisplayTimeOutId);
120
+ this.switchToDisplayTimeOutId = undefined;
121
+ }
115
122
  if (this.delaySwitchToDisplay && this.editMode && value === "Display" && this.editMode !== "Display") {
116
- setTimeout(() => {
123
+ this.switchToDisplayTimeOutId = window.setTimeout(() => {
117
124
  this.setProperty("editMode", value);
118
125
  this.invalidate();
126
+ this.switchToDisplayTimeOutId = undefined;
119
127
  }, 100); // workaround to ensure input focusout does not trigger a Patch request
120
128
  // DINC0524872
121
129
  } else {
@@ -151,7 +159,8 @@ class FieldWrapper extends Control implements IFormContent {
151
159
  oRm.style("text-align", oControl.textAlign);
152
160
  if (oControl.editMode === "Display") {
153
161
  oRm.style("width", oControl.width);
154
- if ((oControl.getParent() as Field).hasInlineEdit) {
162
+ const parentControl = oControl.getParent() as Field;
163
+ if (parentControl.hasInlineEdit && parentControl.formatOptions?.reactiveAreaMode !== "Overlay") {
155
164
  // tooltip
156
165
  oRm.attr("title", oControl.resourceBundle.getText("M_INLINE_EDIT_TOOLTIP_DOUBLECLICK_EDIT"));
157
166
  // focus
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/macros/controls/filterbar/FilterContainer", "sap/fe/macros/controls/filterbar/VisualFilterContainer", "sap/ui/core/Element", "sap/ui/mdc/FilterBar", "sap/ui/mdc/filterbar/aligned/FilterItemLayout"], function (Log, ClassSupport, FilterContainer, VisualFilterContainer, Element, MdcFilterBar, FilterItemLayout) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/helpers/PromiseKeeper", "sap/fe/macros/controls/filterbar/FilterContainer", "sap/fe/macros/controls/filterbar/VisualFilterContainer", "sap/ui/core/Element", "sap/ui/mdc/FilterBar", "sap/ui/mdc/filterbar/aligned/FilterItemLayout", "./filterbar/utils/VisualFilterUtils"], function (Log, ClassSupport, PromiseKeeper, FilterContainer, VisualFilterContainer, Element, MdcFilterBar, FilterItemLayout, VisualFilterUtils) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2;
@@ -14,6 +14,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/macros/contro
14
14
  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
15
15
  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
16
16
  function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); }
17
+ const VISUAL_FILTER_CONTAINER = "sap.fe.macros.controls.filterbar.VisualFilterContainer",
18
+ FILTER_CONTAINER = "sap.fe.macros.controls.filterbar.FilterContainer";
17
19
  let FilterBar = (_dec = defineUI5Class("sap.fe.macros.controls.FilterBar"), _dec2 = property({
18
20
  type: "string",
19
21
  defaultValue: "compact"
@@ -38,11 +40,47 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/macros/contro
38
40
  _inheritsLoose(FilterBar, _MdcFilterBar);
39
41
  var _proto = FilterBar.prototype;
40
42
  _proto._initializeStatus = async function _initializeStatus() {
41
- await this.waitForInitialization();
43
+ // Promise keeper to hold the process.
44
+ this._initializedPromiseKeeper = new PromiseKeeper();
45
+
46
+ // Awaits
47
+ await this.initializedWithMetadata();
48
+ await this.waitForModelToBeSet();
49
+ this._initializedPromiseKeeper.resolve();
42
50
  this._isInitialized = true;
43
51
  };
52
+ _proto.waitForModelToBeSet = async function waitForModelToBeSet() {
53
+ if (this.getModel()) {
54
+ return;
55
+ }
56
+ // wait for deafault model to be set.
57
+ const modelIsSetPromiseKeeper = new PromiseKeeper();
58
+ const fnCheckAndReset = e => {
59
+ const filterbar = e.getSource();
60
+ if (filterbar.getModel()) {
61
+ // default model is set.
62
+ filterbar.detachModelContextChange(fnCheckAndReset);
63
+ modelIsSetPromiseKeeper?.resolve();
64
+ }
65
+ };
66
+ this.attachModelContextChange(fnCheckAndReset);
67
+ return modelIsSetPromiseKeeper.promise;
68
+ }
69
+
70
+ /**
71
+ * Checks if the FilterBar is fully initialized.
72
+ * @returns True if the FilterBar is initialized, false otherwise.
73
+ */;
44
74
  _proto.isInitialized = function isInitialized() {
45
75
  return !!this._isInitialized;
76
+ }
77
+
78
+ /**
79
+ * Async equivalent of 'isInitialized' to perform filter bar interactions after the filter bar is ready.
80
+ * @returns Promise that resolves when the filter bar is initialized.
81
+ */;
82
+ _proto.whenInitialized = async function whenInitialized() {
83
+ return this._initializedPromiseKeeper?.promise;
46
84
  };
47
85
  _proto.setToggleControl = function setToggleControl(vToggle) {
48
86
  if (typeof vToggle === "string") {
@@ -168,6 +206,51 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/macros/contro
168
206
  };
169
207
  _proto.getSegmentedButton = function getSegmentedButton() {
170
208
  return this._oSegmentedButton;
209
+ }
210
+
211
+ /**
212
+ * Enable or disable requests that are initiated by the FilterBar.
213
+ *
214
+ * To be used to suspend or resume requests(table or visual filters) when the filter bar is being modified or when the user is programmatically interacting with the filter controls.
215
+ * This method is also used to control whether the visual filter chart binding should be resumed/suspended based on the diff state, and resumed after conditon model update.
216
+ * @param enable Enable or disable requests
217
+ * @param diffState If there is a differnce in the external state that needs to be considered for visual filter in-parameters
218
+ */;
219
+ _proto.enableRequests = function enableRequests(enable, diffState) {
220
+ this.setSuspendSelection(!enable);
221
+ // We need to enable or disable the visual filter chart bindings based on diff state.
222
+ this._enableVisualFilterChartBindings(enable, diffState);
223
+ }
224
+
225
+ /**
226
+ * Get the filter layout by its type.
227
+ * @param layoutClassName The class name of the filter layout to be returned.
228
+ * @template T The type of the filter layout to be returned.
229
+ * @typedef {IFilterContainer} T The type of the filter layout to be returned
230
+ * @returns Corresponding filter layout if it exists, otherwise undefined.
231
+ */;
232
+ _proto._getFilterLayoutByType = function _getFilterLayoutByType(layoutClassName) {
233
+ const retFilterLayout = this._oFilterBarLayout.isA(layoutClassName) ? this._oFilterBarLayout : undefined;
234
+ return !retFilterLayout && this._oSecondaryFilterBarLayout?.isA(layoutClassName) ? this._oSecondaryFilterBarLayout : retFilterLayout;
235
+ };
236
+ _proto._enableVisualFilterChartBindings = function _enableVisualFilterChartBindings(enable, diffState) {
237
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
238
+ // @ts-ignore
239
+ const visualFilterLayout = this._getFilterLayoutByType(VISUAL_FILTER_CONTAINER);
240
+ if (visualFilterLayout) {
241
+ visualFilterLayout.enableChartBinding(enable, diffState);
242
+ return;
243
+ }
244
+
245
+ // If initial layout is compact, we don't have the visual filter layout(container) available yet until the user toggles to visual filter layout.
246
+ // So we need to check if the compact filter layout has visual filters and enable/disable the chart binding for those visual filters.
247
+ const compactFilterLayout = this._getFilterLayoutByType(FILTER_CONTAINER);
248
+ if (compactFilterLayout) {
249
+ const visualFilters = compactFilterLayout.getAllVisualFilterFields();
250
+ if (visualFilters) {
251
+ VisualFilterUtils.enableChartBinding(visualFilters, enable, diffState);
252
+ }
253
+ }
171
254
  };
172
255
  return FilterBar;
173
256
  }(MdcFilterBar), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "initialLayout", [_dec2], {
@@ -183,4 +266,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/macros/contro
183
266
  }), _class2)) || _class);
184
267
  return FilterBar;
185
268
  }, false);
186
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWx0ZXJCYXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsIl9kZWMzIiwiYXNzb2NpYXRpb24iLCJtdWx0aXBsZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfTWRjRmlsdGVyQmFyIiwiaWRPclByb3BzIiwic2V0dGluZ3MiLCJfdGhpcyIsInByb3BlcnR5SW5mbyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2lzSW5pdGlhbGl6ZWQiLCJfaW5pdGlhbGl6ZVN0YXR1cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiaXNJbml0aWFsaXplZCIsInNldFRvZ2dsZUNvbnRyb2wiLCJ2VG9nZ2xlIiwiX29TZWdtZW50ZWRCdXR0b24iLCJFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ0b2dnbGVDb250cm9sIiwiZGV0YWNoRXZlbnQiLCJfdG9nZ2xlTGF5b3V0IiwiYmluZCIsImF0dGFjaEV2ZW50Iiwic2V0QXNzb2NpYXRpb24iLCJ0aGVuIiwidGFyZ2V0S2V5IiwiZ2V0U2VsZWN0ZWRLZXkiLCJfb0ZpbHRlckJhckxheW91dCIsImlzQSIsIl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0IiwiVmlzdWFsRmlsdGVyQ29udGFpbmVyIiwic2V0U2hvd0FkYXB0RmlsdGVyc0J1dHRvbiIsIm9DdXJyZW50RmlsdGVyQmFyTGF5b3V0Iiwib0ZpbHRlckl0ZW1zIiwiZ2V0RmlsdGVySXRlbXMiLCJhRmlsdGVyRmllbGRzIiwiZ2V0QWxsRmlsdGVyRmllbGRzIiwiYVNvcnRlZEZpbHRlckZpZWxkcyIsImdldFNvcnRlZEZpbHRlckZpZWxkcyIsImFCdXR0b25zIiwiZ2V0QWxsQnV0dG9ucyIsImFWaXN1YWxGaWx0ZXJGaWVsZHMiLCJnZXRBbGxWaXN1YWxGaWx0ZXJGaWVsZHMiLCJzZXRBbGxGaWx0ZXJGaWVsZHMiLCJmb3JFYWNoIiwib0ZpbHRlckZpZWxkIiwiaUluZGV4IiwicmVtb3ZlRmlsdGVyRmllbGQiLCJpbnNlcnRGaWx0ZXJGaWVsZCIsIm9CdXR0b24iLCJyZW1vdmVCdXR0b24iLCJhZGRCdXR0b24iLCJzZXRBZ2dyZWdhdGlvbiIsImludmFsaWRhdGUiLCJjYXRjaCIsImVycm9yIiwiTG9nIiwiYUZpbHRlckl0ZW1zIiwiYUZpbHRlcklkcyIsIm9GaWx0ZXJJdGVtIiwicHVzaCIsImdldElkIiwic29ydCIsImFGaXJzdEl0ZW0iLCJhU2Vjb25kSXRlbSIsInNGaXJzdEl0ZW1WRklkIiwic1NlY29uZEl0ZW1WRklkIiwiZ2V0Q29udGVudCIsIm9Jbm5lckNvbnRyb2wiLCJpbmRleE9mIiwiX2NyZWF0ZUlubmVyTGF5b3V0IiwiRmlsdGVyQ29udGFpbmVyIiwiX2NMYXlvdXRJdGVtIiwiRmlsdGVySXRlbUxheW91dCIsImdldElubmVyIiwiYWRkU3R5bGVDbGFzcyIsIl9hZGRCdXR0b25zIiwib0lubmVyTGF5b3V0Iiwib0ZpbHRlckNvbnRhaW5lcklubmVyTGF5b3V0RXZlbnREZWxlZ2F0ZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiaW5pdGlhbExheW91dCIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwiZXhpdCIsImdldFNlZ21lbnRlZEJ1dHRvbiIsIk1kY0ZpbHRlckJhciIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmlsdGVyQmFyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhc3NvY2lhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEZpbHRlckNvbnRhaW5lciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9maWx0ZXJiYXIvRmlsdGVyQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBWaXN1YWxGaWx0ZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvZmlsdGVyYmFyL1Zpc3VhbEZpbHRlclwiO1xuaW1wb3J0IFZpc3VhbEZpbHRlckNvbnRhaW5lciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9maWx0ZXJiYXIvVmlzdWFsRmlsdGVyQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUgU2VnbWVudGVkQnV0dG9uIGZyb20gXCJzYXAvbS9TZWdtZW50ZWRCdXR0b25cIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRGaWx0ZXJCYXJTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IE1kY0ZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlckZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckZpZWxkXCI7XG5pbXBvcnQgdHlwZSBJRmlsdGVyQ29udGFpbmVyIGZyb20gXCJzYXAvdWkvbWRjL2ZpbHRlcmJhci9JRmlsdGVyQ29udGFpbmVyXCI7XG5pbXBvcnQgRmlsdGVySXRlbUxheW91dCBmcm9tIFwic2FwL3VpL21kYy9maWx0ZXJiYXIvYWxpZ25lZC9GaWx0ZXJJdGVtTGF5b3V0XCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsdGVyQmFyXCIpXG5jbGFzcyBGaWx0ZXJCYXIgZXh0ZW5kcyBNZGNGaWx0ZXJCYXIge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IFwiY29tcGFjdFwiIH0pXG5cdGluaXRpYWxMYXlvdXQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2wgd2hpY2ggYWxsb3dzIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiB2aXN1YWwgYW5kIG5vcm1hbCBmaWx0ZXIgbGF5b3V0c1xuXHQgKi9cblx0QGFzc29jaWF0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5tLlNlZ21lbnRlZEJ1dHRvblwiLFxuXHRcdG11bHRpcGxlOiBmYWxzZVxuXHR9KVxuXHR0b2dnbGVDb250cm9sITogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKGlkT3JQcm9wcz86IFByb3BlcnRpZXNPZjxGaWx0ZXJCYXI+ICYgJEZpbHRlckJhclNldHRpbmdzLCBzZXR0aW5ncz86IFByb3BlcnRpZXNPZjxGaWx0ZXJCYXI+ICYgJEZpbHRlckJhclNldHRpbmdzKSB7XG5cdFx0ZGVsZXRlIGlkT3JQcm9wcz8ucHJvcGVydHlJbmZvO1xuXHRcdGRlbGV0ZSBzZXR0aW5ncz8ucHJvcGVydHlJbmZvO1xuXHRcdHN1cGVyKGlkT3JQcm9wcyBhcyB1bmtub3duIGFzIHN0cmluZywgc2V0dGluZ3MpO1xuXHRcdHRoaXMuX2luaXRpYWxpemVTdGF0dXMoKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgX2luaXRpYWxpemVTdGF0dXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0YXdhaXQgdGhpcy53YWl0Rm9ySW5pdGlhbGl6YXRpb24oKTtcblx0XHR0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcblx0fVxuXG5cdGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5faXNJbml0aWFsaXplZDtcblx0fVxuXG5cdHByaXZhdGUgX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuXHRwcml2YXRlIF9vU2VnbWVudGVkQnV0dG9uPzogU2VnbWVudGVkQnV0dG9uO1xuXG5cdHByaXZhdGUgX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQ/OiBJRmlsdGVyQ29udGFpbmVyO1xuXG5cdHByaXZhdGUgX29GaWx0ZXJCYXJMYXlvdXQhOiBJRmlsdGVyQ29udGFpbmVyO1xuXG5cdHByaXZhdGUgX2NMYXlvdXRJdGVtOiB0eXBlb2YgRmlsdGVySXRlbUxheW91dDtcblxuXHRzZXRUb2dnbGVDb250cm9sKHZUb2dnbGU6IHN0cmluZyB8IFNlZ21lbnRlZEJ1dHRvbik6IHZvaWQge1xuXHRcdGlmICh0eXBlb2YgdlRvZ2dsZSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dGhpcy5fb1NlZ21lbnRlZEJ1dHRvbiA9IEVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQodlRvZ2dsZSkgYXMgU2VnbWVudGVkQnV0dG9uO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9vU2VnbWVudGVkQnV0dG9uID0gdlRvZ2dsZTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy50b2dnbGVDb250cm9sICYmIHRoaXMuX29TZWdtZW50ZWRCdXR0b24pIHtcblx0XHRcdHRoaXMuX29TZWdtZW50ZWRCdXR0b24uZGV0YWNoRXZlbnQoXCJzZWxlY3Rpb25DaGFuZ2VcIiwgdGhpcy5fdG9nZ2xlTGF5b3V0LmJpbmQodGhpcykpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fb1NlZ21lbnRlZEJ1dHRvbikge1xuXHRcdFx0dGhpcy5fb1NlZ21lbnRlZEJ1dHRvbi5hdHRhY2hFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCB0aGlzLl90b2dnbGVMYXlvdXQuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHRcdHRoaXMuc2V0QXNzb2NpYXRpb24oXCJ0b2dnbGVDb250cm9sXCIsIHZUb2dnbGUsIHRydWUpO1xuXHR9XG5cblx0X3RvZ2dsZUxheW91dCgpOiB2b2lkIHtcblx0XHQvLyBTaW5jZSBwcmltYXJ5IGxheW91dCBpcyBhbHdheXMgY29tcGFjdFxuXHRcdC8vIGhlbmNlIHNldCB0aGUgc2Vjb25kYXJ5IGxheW91dCBhcyB2aXN1YWwgZmlsdGVyIG9ubHkgZm9yIHRoZSBmaXJzdCB0aW1lIG9ubHlcblx0XHR0aGlzLndhaXRGb3JJbml0aWFsaXphdGlvbigpXG5cdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHRhcmdldEtleSA9IHRoaXMuX29TZWdtZW50ZWRCdXR0b24/LmdldFNlbGVjdGVkS2V5KCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQodGFyZ2V0S2V5ID09PSBcInZpc3VhbFwiICYmXG5cdFx0XHRcdFx0XHR0aGlzLl9vRmlsdGVyQmFyTGF5b3V0Py5pc0E8VmlzdWFsRmlsdGVyQ29udGFpbmVyPihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuZmlsdGVyYmFyLlZpc3VhbEZpbHRlckNvbnRhaW5lclwiKSkgfHxcblx0XHRcdFx0XHQodGFyZ2V0S2V5ID09PSBcImNvbXBhY3RcIiAmJlxuXHRcdFx0XHRcdFx0IXRoaXMuX29GaWx0ZXJCYXJMYXlvdXQ/LmlzQTxWaXN1YWxGaWx0ZXJDb250YWluZXI+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXCIpKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCF0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0KSB7XG5cdFx0XHRcdFx0dGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dCA9IG5ldyBWaXN1YWxGaWx0ZXJDb250YWluZXIoKSBhcyB1bmtub3duIGFzIElGaWx0ZXJDb250YWluZXI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBkbyBub3Qgc2hvdyBBZGFwdCBGaWx0ZXJzIEJ1dHRvbiBmb3IgdmlzdWFsIGxheW91dFxuXHRcdFx0XHRpZiAodGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dD8uaXNBPFZpc3VhbEZpbHRlckNvbnRhaW5lcj4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJDb250YWluZXJcIikpIHtcblx0XHRcdFx0XHR0aGlzLnNldFNob3dBZGFwdEZpbHRlcnNCdXR0b24oZmFsc2UpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuc2V0U2hvd0FkYXB0RmlsdGVyc0J1dHRvbih0cnVlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGdldCBhbGwgZmlsdGVyIGZpZWxkcyBhbmQgYnV0dG9uIG9mIHRoZSBjdXJyZW50IGxheW91dFxuXHRcdFx0XHRjb25zdCBvQ3VycmVudEZpbHRlckJhckxheW91dCA9IHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQ7XG5cdFx0XHRcdGNvbnN0IG9GaWx0ZXJJdGVtcyA9IHRoaXMuZ2V0RmlsdGVySXRlbXMoKTtcblx0XHRcdFx0Y29uc3QgYUZpbHRlckZpZWxkcyA9IG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LmdldEFsbEZpbHRlckZpZWxkcygpO1xuXHRcdFx0XHRjb25zdCBhU29ydGVkRmlsdGVyRmllbGRzID0gdGhpcy5nZXRTb3J0ZWRGaWx0ZXJGaWVsZHMob0ZpbHRlckl0ZW1zLCBhRmlsdGVyRmllbGRzKTtcblx0XHRcdFx0Y29uc3QgYUJ1dHRvbnMgPSBvQ3VycmVudEZpbHRlckJhckxheW91dC5nZXRBbGxCdXR0b25zKCk7XG5cdFx0XHRcdGNvbnN0IGFWaXN1YWxGaWx0ZXJGaWVsZHMgPVxuXHRcdFx0XHRcdG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LmdldEFsbFZpc3VhbEZpbHRlckZpZWxkcyAmJlxuXHRcdFx0XHRcdChvQ3VycmVudEZpbHRlckJhckxheW91dC5nZXRBbGxWaXN1YWxGaWx0ZXJGaWVsZHMoKSBhcyBSZWNvcmQ8c3RyaW5nLCBWaXN1YWxGaWx0ZXI+IHwgdW5kZWZpbmVkKTtcblx0XHRcdFx0aWYgKHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQ/LmlzQTxWaXN1YWxGaWx0ZXJDb250YWluZXI+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXCIpKSB7XG5cdFx0XHRcdFx0dGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dC5zZXRBbGxGaWx0ZXJGaWVsZHMoYVNvcnRlZEZpbHRlckZpZWxkcywgYVZpc3VhbEZpbHRlckZpZWxkcyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gdXNlIHNlY29uZGFyeSBmaWx0ZXIgYmFyIGxheW91dCBhcyBuZXcgbGF5b3V0XG5cdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQgPSB0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0ITtcblxuXHRcdFx0XHQvLyBpbnNlcnQgYWxsIGZpbHRlciBmaWVsZHMgZnJvbSBjdXJyZW50IGxheW91dCB0byBuZXcgbGF5b3V0XG5cdFx0XHRcdGFGaWx0ZXJGaWVsZHMuZm9yRWFjaCgob0ZpbHRlckZpZWxkOiBGaWx0ZXJGaWVsZCwgaUluZGV4OiBudW1iZXIpID0+IHtcblx0XHRcdFx0XHRvQ3VycmVudEZpbHRlckJhckxheW91dC5yZW1vdmVGaWx0ZXJGaWVsZChvRmlsdGVyRmllbGQpO1xuXHRcdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuaW5zZXJ0RmlsdGVyRmllbGQob0ZpbHRlckZpZWxkLCBpSW5kZXgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8gaW5zZXJ0IGFsbCBidXR0b25zIGZyb20gdGhlIGN1cnJlbnQgbGF5b3V0IHRvIHRoZSBuZXcgbGF5b3V0XG5cdFx0XHRcdGFCdXR0b25zLmZvckVhY2goKG9CdXR0b246IEJ1dHRvbikgPT4ge1xuXHRcdFx0XHRcdG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LnJlbW92ZUJ1dHRvbihvQnV0dG9uKTtcblx0XHRcdFx0XHR0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LmFkZEJ1dHRvbihvQnV0dG9uKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gc2V0IHRoZSBjdXJyZW50IGZpbHRlciBiYXIgbGF5b3V0IHRvIHRoZSBzZWNvbmRhcnkgb25lXG5cdFx0XHRcdHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQgPSBvQ3VycmVudEZpbHRlckJhckxheW91dDtcblxuXHRcdFx0XHQvLyB1cGRhdGUgdGhlIGxheW91dCBhZ2dyZWdhdGlvbiBvZiB0aGUgZmlsdGVyIGJhciBhbmQgcmVyZW5kZXIgdGhlIHNhbWUuXG5cdFx0XHRcdHRoaXMuc2V0QWdncmVnYXRpb24oXCJsYXlvdXRcIiwgdGhpcy5fb0ZpbHRlckJhckxheW91dCwgdHJ1ZSk7XG5cdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuaW52YWxpZGF0ZSgpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRnZXRTb3J0ZWRGaWx0ZXJGaWVsZHMoYUZpbHRlckl0ZW1zOiBGaWx0ZXJGaWVsZFtdLCBhRmlsdGVyRmllbGRzOiBGaWx0ZXJGaWVsZFtdKTogRmlsdGVyRmllbGRbXSB7XG5cdFx0Y29uc3QgYUZpbHRlcklkczogc3RyaW5nW10gPSBbXTtcblx0XHRhRmlsdGVySXRlbXMuZm9yRWFjaChmdW5jdGlvbiAob0ZpbHRlckl0ZW06IEZpbHRlckZpZWxkKSB7XG5cdFx0XHRhRmlsdGVySWRzLnB1c2gob0ZpbHRlckl0ZW0uZ2V0SWQoKSk7XG5cdFx0fSk7XG5cdFx0YUZpbHRlckZpZWxkcy5zb3J0KGZ1bmN0aW9uIChhRmlyc3RJdGVtOiBGaWx0ZXJGaWVsZCwgYVNlY29uZEl0ZW06IEZpbHRlckZpZWxkKSB7XG5cdFx0XHRsZXQgc0ZpcnN0SXRlbVZGSWQsIHNTZWNvbmRJdGVtVkZJZDtcblx0XHRcdChhRmlyc3RJdGVtLmdldENvbnRlbnQoKSBhcyB1bmtub3duIGFzIENvbnRyb2xbXSkuZm9yRWFjaChmdW5jdGlvbiAob0lubmVyQ29udHJvbDogQ29udHJvbCkge1xuXHRcdFx0XHRpZiAob0lubmVyQ29udHJvbC5pc0E8RmlsdGVyRmllbGQ+KFwic2FwLnVpLm1kYy5GaWx0ZXJGaWVsZFwiKSkge1xuXHRcdFx0XHRcdHNGaXJzdEl0ZW1WRklkID0gb0lubmVyQ29udHJvbC5nZXRJZCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdChhU2Vjb25kSXRlbS5nZXRDb250ZW50KCkgYXMgdW5rbm93biBhcyBDb250cm9sW10pLmZvckVhY2goZnVuY3Rpb24gKG9Jbm5lckNvbnRyb2w6IENvbnRyb2wpIHtcblx0XHRcdFx0aWYgKG9Jbm5lckNvbnRyb2wuaXNBPEZpbHRlckZpZWxkPihcInNhcC51aS5tZGMuRmlsdGVyRmllbGRcIikpIHtcblx0XHRcdFx0XHRzU2Vjb25kSXRlbVZGSWQgPSBvSW5uZXJDb250cm9sLmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGFGaWx0ZXJJZHMuaW5kZXhPZihzRmlyc3RJdGVtVkZJZCA/PyBcIlwiKSAtIGFGaWx0ZXJJZHMuaW5kZXhPZihzU2Vjb25kSXRlbVZGSWQgPz8gXCJcIik7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGFGaWx0ZXJGaWVsZHM7XG5cdH1cblxuXHRfY3JlYXRlSW5uZXJMYXlvdXQoKTogdm9pZCB7XG5cdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dCA9IG5ldyBGaWx0ZXJDb250YWluZXIoKTtcblx0XHR0aGlzLl9jTGF5b3V0SXRlbSA9IEZpbHRlckl0ZW1MYXlvdXQ7XG5cdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dC5nZXRJbm5lcigpLmFkZFN0eWxlQ2xhc3MoXCJzYXBVaU1kY0ZpbHRlckJhckJhc2VBRkxheW91dFwiKTtcblx0XHR0aGlzLl9hZGRCdXR0b25zKCk7XG5cblx0XHQvLyBUT0RPOiBDaGVjayB3aXRoIE1EQyBpZiB0aGVyZSBpcyBhIGJldHRlciB3YXkgdG8gbG9hZCB2aXN1YWwgZmlsdGVyIG9uIHRoZSBiYXNpcyBvZiBjb250cm9sIHByb3BlcnR5XG5cdFx0Ly8gX2NyZWF0ZUlubmVyTGF5b3V0IGlzIGNhbGxlZCBvbiBJbml0IGJ5IHRoZSBmaWx0ZXIgYmFyIGJhc2UuXG5cdFx0Ly8gVGhpcyBtZWFuIHRoYXQgd2UgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBjb250cm9sIHByb3BlcnRpZXMgeWV0XG5cdFx0Ly8gYW5kIGhlbmNlIHdlIGNhbm5vdCBkZWNpZGUgb24gdGhlIGJhc2lzIG9mIGNvbnRyb2wgcHJvcGVydGllcyB3aGV0aGVyIGluaXRpYWwgbGF5b3V0IHNob3VsZCBiZSBjb21wYWN0IG9yIHZpc3VhbFxuXHRcdC8vIEFzIGEgcmVzdWx0IHdlIGhhdmUgdG8gZG8gdGhpcyB3b3JrYXJvdW5kIHRvIGFsd2F5cyBsb2FkIHRoZSBjb21wYWN0IGxheW91dCBieSBkZWZhdWx0XG5cdFx0Ly8gQW5kIHRvb2dsZSB0aGUgc2FtZSBpbiBjYXNlIHRoZSBpbml0aWFsTGF5b3V0IHdhcyBzdXBwb3NlZCB0byBiZSB2aXN1YWwgZmlsdGVycy5cblx0XHRjb25zdCBvSW5uZXJMYXlvdXQgPSB0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LmdldElubmVyKCk7XG5cdFx0Y29uc3Qgb0ZpbHRlckNvbnRhaW5lcklubmVyTGF5b3V0RXZlbnREZWxlZ2F0ZSA9IHtcblx0XHRcdG9uQmVmb3JlUmVuZGVyaW5nOiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmluaXRpYWxMYXlvdXQgPT09IFwidmlzdWFsXCIpIHtcblx0XHRcdFx0XHR0aGlzLl90b2dnbGVMYXlvdXQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRvSW5uZXJMYXlvdXQucmVtb3ZlRXZlbnREZWxlZ2F0ZShvRmlsdGVyQ29udGFpbmVySW5uZXJMYXlvdXRFdmVudERlbGVnYXRlKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdG9Jbm5lckxheW91dC5hZGRFdmVudERlbGVnYXRlKG9GaWx0ZXJDb250YWluZXJJbm5lckxheW91dEV2ZW50RGVsZWdhdGUpO1xuXG5cdFx0dGhpcy5zZXRBZ2dyZWdhdGlvbihcImxheW91dFwiLCB0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LCB0cnVlKTtcblx0fVxuXG5cdGV4aXQoKTogdm9pZCB7XG5cdFx0c3VwZXIuZXhpdCgpO1xuXHRcdC8vIFNvbWV0aW1lcyB1cG9uIGV4dGVybmFsIG5hdmlnYXRpb24gdGhpcy5fU2VnbWVudGVkQnV0dG9uIGlzIGFscmVhZHkgZGVzdHJveWVkXG5cdFx0Ly8gc28gY2hlY2sgaWYgaXQgZXhpc3RzIGFuZCB0aGVuIG9ubHkgcmVtb3ZlIHN0dWZmXG5cdFx0aWYgKHRoaXMuX29TZWdtZW50ZWRCdXR0b24pIHtcblx0XHRcdHRoaXMuX29TZWdtZW50ZWRCdXR0b24uZGV0YWNoRXZlbnQoXCJzZWxlY3Rpb25DaGFuZ2VcIiwgdGhpcy5fdG9nZ2xlTGF5b3V0KTtcblx0XHRcdGRlbGV0ZSB0aGlzLl9vU2VnbWVudGVkQnV0dG9uO1xuXHRcdH1cblx0fVxuXG5cdGdldFNlZ21lbnRlZEJ1dHRvbigpOiBTZWdtZW50ZWRCdXR0b24gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9vU2VnbWVudGVkQnV0dG9uO1xuXHR9XG59XG5pbnRlcmZhY2UgRmlsdGVyQmFyIHtcblx0X2FkZEJ1dHRvbnMoKTogdm9pZDtcbn1cbmV4cG9ydCBkZWZhdWx0IEZpbHRlckJhcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztNQWlCTUEsU0FBUyxJQUFBQyxJQUFBLEdBRGRDLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFBQyxLQUFBLEdBRWpEQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFFBQVE7SUFBRUMsWUFBWSxFQUFFO0VBQVUsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FNckRDLFdBQVcsQ0FBQztJQUNaSCxJQUFJLEVBQUUsdUJBQXVCO0lBQzdCSSxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQVIsSUFBQSxDQUFBUyxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLGFBQUE7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
269
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWSVNVQUxfRklMVEVSX0NPTlRBSU5FUiIsIkZJTFRFUl9DT05UQUlORVIiLCJGaWx0ZXJCYXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsIl9kZWMzIiwiYXNzb2NpYXRpb24iLCJtdWx0aXBsZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfTWRjRmlsdGVyQmFyIiwiaWRPclByb3BzIiwic2V0dGluZ3MiLCJfdGhpcyIsInByb3BlcnR5SW5mbyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2lzSW5pdGlhbGl6ZWQiLCJfaW5pdGlhbGl6ZVN0YXR1cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiX2luaXRpYWxpemVkUHJvbWlzZUtlZXBlciIsIlByb21pc2VLZWVwZXIiLCJpbml0aWFsaXplZFdpdGhNZXRhZGF0YSIsIndhaXRGb3JNb2RlbFRvQmVTZXQiLCJyZXNvbHZlIiwiZ2V0TW9kZWwiLCJtb2RlbElzU2V0UHJvbWlzZUtlZXBlciIsImZuQ2hlY2tBbmRSZXNldCIsImUiLCJmaWx0ZXJiYXIiLCJnZXRTb3VyY2UiLCJkZXRhY2hNb2RlbENvbnRleHRDaGFuZ2UiLCJhdHRhY2hNb2RlbENvbnRleHRDaGFuZ2UiLCJwcm9taXNlIiwiaXNJbml0aWFsaXplZCIsIndoZW5Jbml0aWFsaXplZCIsInNldFRvZ2dsZUNvbnRyb2wiLCJ2VG9nZ2xlIiwiX29TZWdtZW50ZWRCdXR0b24iLCJFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ0b2dnbGVDb250cm9sIiwiZGV0YWNoRXZlbnQiLCJfdG9nZ2xlTGF5b3V0IiwiYmluZCIsImF0dGFjaEV2ZW50Iiwic2V0QXNzb2NpYXRpb24iLCJ3YWl0Rm9ySW5pdGlhbGl6YXRpb24iLCJ0aGVuIiwidGFyZ2V0S2V5IiwiZ2V0U2VsZWN0ZWRLZXkiLCJfb0ZpbHRlckJhckxheW91dCIsImlzQSIsIl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0IiwiVmlzdWFsRmlsdGVyQ29udGFpbmVyIiwic2V0U2hvd0FkYXB0RmlsdGVyc0J1dHRvbiIsIm9DdXJyZW50RmlsdGVyQmFyTGF5b3V0Iiwib0ZpbHRlckl0ZW1zIiwiZ2V0RmlsdGVySXRlbXMiLCJhRmlsdGVyRmllbGRzIiwiZ2V0QWxsRmlsdGVyRmllbGRzIiwiYVNvcnRlZEZpbHRlckZpZWxkcyIsImdldFNvcnRlZEZpbHRlckZpZWxkcyIsImFCdXR0b25zIiwiZ2V0QWxsQnV0dG9ucyIsImFWaXN1YWxGaWx0ZXJGaWVsZHMiLCJnZXRBbGxWaXN1YWxGaWx0ZXJGaWVsZHMiLCJzZXRBbGxGaWx0ZXJGaWVsZHMiLCJmb3JFYWNoIiwib0ZpbHRlckZpZWxkIiwiaUluZGV4IiwicmVtb3ZlRmlsdGVyRmllbGQiLCJpbnNlcnRGaWx0ZXJGaWVsZCIsIm9CdXR0b24iLCJyZW1vdmVCdXR0b24iLCJhZGRCdXR0b24iLCJzZXRBZ2dyZWdhdGlvbiIsImludmFsaWRhdGUiLCJjYXRjaCIsImVycm9yIiwiTG9nIiwiYUZpbHRlckl0ZW1zIiwiYUZpbHRlcklkcyIsIm9GaWx0ZXJJdGVtIiwicHVzaCIsImdldElkIiwic29ydCIsImFGaXJzdEl0ZW0iLCJhU2Vjb25kSXRlbSIsInNGaXJzdEl0ZW1WRklkIiwic1NlY29uZEl0ZW1WRklkIiwiZ2V0Q29udGVudCIsIm9Jbm5lckNvbnRyb2wiLCJpbmRleE9mIiwiX2NyZWF0ZUlubmVyTGF5b3V0IiwiRmlsdGVyQ29udGFpbmVyIiwiX2NMYXlvdXRJdGVtIiwiRmlsdGVySXRlbUxheW91dCIsImdldElubmVyIiwiYWRkU3R5bGVDbGFzcyIsIl9hZGRCdXR0b25zIiwib0lubmVyTGF5b3V0Iiwib0ZpbHRlckNvbnRhaW5lcklubmVyTGF5b3V0RXZlbnREZWxlZ2F0ZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiaW5pdGlhbExheW91dCIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwiZXhpdCIsImdldFNlZ21lbnRlZEJ1dHRvbiIsImVuYWJsZVJlcXVlc3RzIiwiZW5hYmxlIiwiZGlmZlN0YXRlIiwic2V0U3VzcGVuZFNlbGVjdGlvbiIsIl9lbmFibGVWaXN1YWxGaWx0ZXJDaGFydEJpbmRpbmdzIiwiX2dldEZpbHRlckxheW91dEJ5VHlwZSIsImxheW91dENsYXNzTmFtZSIsInJldEZpbHRlckxheW91dCIsInVuZGVmaW5lZCIsInZpc3VhbEZpbHRlckxheW91dCIsImVuYWJsZUNoYXJ0QmluZGluZyIsImNvbXBhY3RGaWx0ZXJMYXlvdXQiLCJ2aXN1YWxGaWx0ZXJzIiwiVmlzdWFsRmlsdGVyVXRpbHMiLCJNZGNGaWx0ZXJCYXIiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpbHRlckJhci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBQcm9taXNlS2VlcGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Byb21pc2VLZWVwZXJcIjtcbmltcG9ydCBGaWx0ZXJDb250YWluZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvZmlsdGVyYmFyL0ZpbHRlckNvbnRhaW5lclwiO1xuaW1wb3J0IFZpc3VhbEZpbHRlckNvbnRhaW5lciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9maWx0ZXJiYXIvVmlzdWFsRmlsdGVyQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBWaXN1YWxGaWx0ZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvdmlzdWFsZmlsdGVycy9WaXN1YWxGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSBTZWdtZW50ZWRCdXR0b24gZnJvbSBcInNhcC9tL1NlZ21lbnRlZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyBNYW5hZ2VkT2JqZWN0JE1vZGVsQ29udGV4dENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRGaWx0ZXJCYXJTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IE1kY0ZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlckZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckZpZWxkXCI7XG5pbXBvcnQgdHlwZSBJRmlsdGVyQ29udGFpbmVyIGZyb20gXCJzYXAvdWkvbWRjL2ZpbHRlcmJhci9JRmlsdGVyQ29udGFpbmVyXCI7XG5pbXBvcnQgRmlsdGVySXRlbUxheW91dCBmcm9tIFwic2FwL3VpL21kYy9maWx0ZXJiYXIvYWxpZ25lZC9GaWx0ZXJJdGVtTGF5b3V0XCI7XG5pbXBvcnQgeyB0eXBlIEV4dGVybmFsU3RhdGVUeXBlIH0gZnJvbSBcIi4uL3ZhbHVlaGVscC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiO1xuaW1wb3J0IFZpc3VhbEZpbHRlclV0aWxzIGZyb20gXCIuL2ZpbHRlcmJhci91dGlscy9WaXN1YWxGaWx0ZXJVdGlsc1wiO1xuXG5jb25zdCBWSVNVQUxfRklMVEVSX0NPTlRBSU5FUiA9IFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXCIsXG5cdEZJTFRFUl9DT05UQUlORVIgPSBcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuZmlsdGVyYmFyLkZpbHRlckNvbnRhaW5lclwiO1xudHlwZSBDb250YWluZXJUeXBlID0gdHlwZW9mIFZJU1VBTF9GSUxURVJfQ09OVEFJTkVSIHwgdHlwZW9mIEZJTFRFUl9DT05UQUlORVI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsdGVyQmFyXCIpXG5jbGFzcyBGaWx0ZXJCYXIgZXh0ZW5kcyBNZGNGaWx0ZXJCYXIge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IFwiY29tcGFjdFwiIH0pXG5cdGluaXRpYWxMYXlvdXQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2wgd2hpY2ggYWxsb3dzIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiB2aXN1YWwgYW5kIG5vcm1hbCBmaWx0ZXIgbGF5b3V0c1xuXHQgKi9cblx0QGFzc29jaWF0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5tLlNlZ21lbnRlZEJ1dHRvblwiLFxuXHRcdG11bHRpcGxlOiBmYWxzZVxuXHR9KVxuXHR0b2dnbGVDb250cm9sITogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKGlkT3JQcm9wcz86IFByb3BlcnRpZXNPZjxGaWx0ZXJCYXI+ICYgJEZpbHRlckJhclNldHRpbmdzLCBzZXR0aW5ncz86IFByb3BlcnRpZXNPZjxGaWx0ZXJCYXI+ICYgJEZpbHRlckJhclNldHRpbmdzKSB7XG5cdFx0ZGVsZXRlIGlkT3JQcm9wcz8ucHJvcGVydHlJbmZvO1xuXHRcdGRlbGV0ZSBzZXR0aW5ncz8ucHJvcGVydHlJbmZvO1xuXHRcdHN1cGVyKGlkT3JQcm9wcyBhcyB1bmtub3duIGFzIHN0cmluZywgc2V0dGluZ3MpO1xuXHRcdHRoaXMuX2luaXRpYWxpemVTdGF0dXMoKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgX2luaXRpYWxpemVTdGF0dXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gUHJvbWlzZSBrZWVwZXIgdG8gaG9sZCB0aGUgcHJvY2Vzcy5cblx0XHR0aGlzLl9pbml0aWFsaXplZFByb21pc2VLZWVwZXIgPSBuZXcgUHJvbWlzZUtlZXBlcjx2b2lkPigpO1xuXG5cdFx0Ly8gQXdhaXRzXG5cdFx0YXdhaXQgdGhpcy5pbml0aWFsaXplZFdpdGhNZXRhZGF0YSgpO1xuXHRcdGF3YWl0IHRoaXMud2FpdEZvck1vZGVsVG9CZVNldCgpO1xuXG5cdFx0dGhpcy5faW5pdGlhbGl6ZWRQcm9taXNlS2VlcGVyLnJlc29sdmUoKTtcblx0XHR0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgd2FpdEZvck1vZGVsVG9CZVNldCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAodGhpcy5nZXRNb2RlbCgpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdC8vIHdhaXQgZm9yIGRlYWZhdWx0IG1vZGVsIHRvIGJlIHNldC5cblx0XHRjb25zdCBtb2RlbElzU2V0UHJvbWlzZUtlZXBlciA9IG5ldyBQcm9taXNlS2VlcGVyPHZvaWQ+KCk7XG5cdFx0Y29uc3QgZm5DaGVja0FuZFJlc2V0ID0gKGU6IE1hbmFnZWRPYmplY3QkTW9kZWxDb250ZXh0Q2hhbmdlRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdGNvbnN0IGZpbHRlcmJhciA9IGUuZ2V0U291cmNlKCk7XG5cdFx0XHRpZiAoZmlsdGVyYmFyLmdldE1vZGVsKCkpIHtcblx0XHRcdFx0Ly8gZGVmYXVsdCBtb2RlbCBpcyBzZXQuXG5cdFx0XHRcdGZpbHRlcmJhci5kZXRhY2hNb2RlbENvbnRleHRDaGFuZ2UoZm5DaGVja0FuZFJlc2V0KTtcblx0XHRcdFx0bW9kZWxJc1NldFByb21pc2VLZWVwZXI/LnJlc29sdmUoKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdHRoaXMuYXR0YWNoTW9kZWxDb250ZXh0Q2hhbmdlKGZuQ2hlY2tBbmRSZXNldCk7XG5cdFx0cmV0dXJuIG1vZGVsSXNTZXRQcm9taXNlS2VlcGVyLnByb21pc2U7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSBGaWx0ZXJCYXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIEZpbHRlckJhciBpcyBpbml0aWFsaXplZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0aXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLl9pc0luaXRpYWxpemVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFzeW5jIGVxdWl2YWxlbnQgb2YgJ2lzSW5pdGlhbGl6ZWQnIHRvIHBlcmZvcm0gZmlsdGVyIGJhciBpbnRlcmFjdGlvbnMgYWZ0ZXIgdGhlIGZpbHRlciBiYXIgaXMgcmVhZHkuXG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmaWx0ZXIgYmFyIGlzIGluaXRpYWxpemVkLlxuXHQgKi9cblx0YXN5bmMgd2hlbkluaXRpYWxpemVkKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiB0aGlzLl9pbml0aWFsaXplZFByb21pc2VLZWVwZXI/LnByb21pc2U7XG5cdH1cblxuXHRwcml2YXRlIF9pbml0aWFsaXplZFByb21pc2VLZWVwZXI/OiBQcm9taXNlS2VlcGVyPHZvaWQ+O1xuXG5cdHByaXZhdGUgX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuXHRwcml2YXRlIF9vU2VnbWVudGVkQnV0dG9uPzogU2VnbWVudGVkQnV0dG9uO1xuXG5cdHByaXZhdGUgX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQ/OiBJRmlsdGVyQ29udGFpbmVyO1xuXG5cdHByaXZhdGUgX29GaWx0ZXJCYXJMYXlvdXQhOiBJRmlsdGVyQ29udGFpbmVyO1xuXG5cdHByaXZhdGUgX2NMYXlvdXRJdGVtOiB0eXBlb2YgRmlsdGVySXRlbUxheW91dDtcblxuXHRzZXRUb2dnbGVDb250cm9sKHZUb2dnbGU6IHN0cmluZyB8IFNlZ21lbnRlZEJ1dHRvbik6IHZvaWQge1xuXHRcdGlmICh0eXBlb2YgdlRvZ2dsZSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dGhpcy5fb1NlZ21lbnRlZEJ1dHRvbiA9IEVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQodlRvZ2dsZSkgYXMgU2VnbWVudGVkQnV0dG9uO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9vU2VnbWVudGVkQnV0dG9uID0gdlRvZ2dsZTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy50b2dnbGVDb250cm9sICYmIHRoaXMuX29TZWdtZW50ZWRCdXR0b24pIHtcblx0XHRcdHRoaXMuX29TZWdtZW50ZWRCdXR0b24uZGV0YWNoRXZlbnQoXCJzZWxlY3Rpb25DaGFuZ2VcIiwgdGhpcy5fdG9nZ2xlTGF5b3V0LmJpbmQodGhpcykpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fb1NlZ21lbnRlZEJ1dHRvbikge1xuXHRcdFx0dGhpcy5fb1NlZ21lbnRlZEJ1dHRvbi5hdHRhY2hFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCB0aGlzLl90b2dnbGVMYXlvdXQuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHRcdHRoaXMuc2V0QXNzb2NpYXRpb24oXCJ0b2dnbGVDb250cm9sXCIsIHZUb2dnbGUsIHRydWUpO1xuXHR9XG5cblx0X3RvZ2dsZUxheW91dCgpOiB2b2lkIHtcblx0XHQvLyBTaW5jZSBwcmltYXJ5IGxheW91dCBpcyBhbHdheXMgY29tcGFjdFxuXHRcdC8vIGhlbmNlIHNldCB0aGUgc2Vjb25kYXJ5IGxheW91dCBhcyB2aXN1YWwgZmlsdGVyIG9ubHkgZm9yIHRoZSBmaXJzdCB0aW1lIG9ubHlcblx0XHR0aGlzLndhaXRGb3JJbml0aWFsaXphdGlvbigpXG5cdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHRhcmdldEtleSA9IHRoaXMuX29TZWdtZW50ZWRCdXR0b24/LmdldFNlbGVjdGVkS2V5KCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQodGFyZ2V0S2V5ID09PSBcInZpc3VhbFwiICYmXG5cdFx0XHRcdFx0XHR0aGlzLl9vRmlsdGVyQmFyTGF5b3V0Py5pc0E8VmlzdWFsRmlsdGVyQ29udGFpbmVyPihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuZmlsdGVyYmFyLlZpc3VhbEZpbHRlckNvbnRhaW5lclwiKSkgfHxcblx0XHRcdFx0XHQodGFyZ2V0S2V5ID09PSBcImNvbXBhY3RcIiAmJlxuXHRcdFx0XHRcdFx0IXRoaXMuX29GaWx0ZXJCYXJMYXlvdXQ/LmlzQTxWaXN1YWxGaWx0ZXJDb250YWluZXI+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXCIpKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCF0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0KSB7XG5cdFx0XHRcdFx0dGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dCA9IG5ldyBWaXN1YWxGaWx0ZXJDb250YWluZXIoKSBhcyB1bmtub3duIGFzIElGaWx0ZXJDb250YWluZXI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBkbyBub3Qgc2hvdyBBZGFwdCBGaWx0ZXJzIEJ1dHRvbiBmb3IgdmlzdWFsIGxheW91dFxuXHRcdFx0XHRpZiAodGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dD8uaXNBPFZpc3VhbEZpbHRlckNvbnRhaW5lcj4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJDb250YWluZXJcIikpIHtcblx0XHRcdFx0XHR0aGlzLnNldFNob3dBZGFwdEZpbHRlcnNCdXR0b24oZmFsc2UpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuc2V0U2hvd0FkYXB0RmlsdGVyc0J1dHRvbih0cnVlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGdldCBhbGwgZmlsdGVyIGZpZWxkcyBhbmQgYnV0dG9uIG9mIHRoZSBjdXJyZW50IGxheW91dFxuXHRcdFx0XHRjb25zdCBvQ3VycmVudEZpbHRlckJhckxheW91dCA9IHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQ7XG5cdFx0XHRcdGNvbnN0IG9GaWx0ZXJJdGVtcyA9IHRoaXMuZ2V0RmlsdGVySXRlbXMoKTtcblx0XHRcdFx0Y29uc3QgYUZpbHRlckZpZWxkcyA9IG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LmdldEFsbEZpbHRlckZpZWxkcygpO1xuXHRcdFx0XHRjb25zdCBhU29ydGVkRmlsdGVyRmllbGRzID0gdGhpcy5nZXRTb3J0ZWRGaWx0ZXJGaWVsZHMob0ZpbHRlckl0ZW1zLCBhRmlsdGVyRmllbGRzKTtcblx0XHRcdFx0Y29uc3QgYUJ1dHRvbnMgPSBvQ3VycmVudEZpbHRlckJhckxheW91dC5nZXRBbGxCdXR0b25zKCk7XG5cdFx0XHRcdGNvbnN0IGFWaXN1YWxGaWx0ZXJGaWVsZHMgPVxuXHRcdFx0XHRcdG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LmdldEFsbFZpc3VhbEZpbHRlckZpZWxkcyAmJlxuXHRcdFx0XHRcdChvQ3VycmVudEZpbHRlckJhckxheW91dC5nZXRBbGxWaXN1YWxGaWx0ZXJGaWVsZHMoKSBhcyBSZWNvcmQ8c3RyaW5nLCBWaXN1YWxGaWx0ZXI+IHwgdW5kZWZpbmVkKTtcblx0XHRcdFx0aWYgKHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQ/LmlzQTxWaXN1YWxGaWx0ZXJDb250YWluZXI+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXCIpKSB7XG5cdFx0XHRcdFx0dGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dC5zZXRBbGxGaWx0ZXJGaWVsZHMoYVNvcnRlZEZpbHRlckZpZWxkcywgYVZpc3VhbEZpbHRlckZpZWxkcyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gdXNlIHNlY29uZGFyeSBmaWx0ZXIgYmFyIGxheW91dCBhcyBuZXcgbGF5b3V0XG5cdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQgPSB0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0ITtcblxuXHRcdFx0XHQvLyBpbnNlcnQgYWxsIGZpbHRlciBmaWVsZHMgZnJvbSBjdXJyZW50IGxheW91dCB0byBuZXcgbGF5b3V0XG5cdFx0XHRcdGFGaWx0ZXJGaWVsZHMuZm9yRWFjaCgob0ZpbHRlckZpZWxkOiBGaWx0ZXJGaWVsZCwgaUluZGV4OiBudW1iZXIpID0+IHtcblx0XHRcdFx0XHRvQ3VycmVudEZpbHRlckJhckxheW91dC5yZW1vdmVGaWx0ZXJGaWVsZChvRmlsdGVyRmllbGQpO1xuXHRcdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuaW5zZXJ0RmlsdGVyRmllbGQob0ZpbHRlckZpZWxkLCBpSW5kZXgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8gaW5zZXJ0IGFsbCBidXR0b25zIGZyb20gdGhlIGN1cnJlbnQgbGF5b3V0IHRvIHRoZSBuZXcgbGF5b3V0XG5cdFx0XHRcdGFCdXR0b25zLmZvckVhY2goKG9CdXR0b246IEJ1dHRvbikgPT4ge1xuXHRcdFx0XHRcdG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LnJlbW92ZUJ1dHRvbihvQnV0dG9uKTtcblx0XHRcdFx0XHR0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LmFkZEJ1dHRvbihvQnV0dG9uKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gc2V0IHRoZSBjdXJyZW50IGZpbHRlciBiYXIgbGF5b3V0IHRvIHRoZSBzZWNvbmRhcnkgb25lXG5cdFx0XHRcdHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQgPSBvQ3VycmVudEZpbHRlckJhckxheW91dDtcblxuXHRcdFx0XHQvLyB1cGRhdGUgdGhlIGxheW91dCBhZ2dyZWdhdGlvbiBvZiB0aGUgZmlsdGVyIGJhciBhbmQgcmVyZW5kZXIgdGhlIHNhbWUuXG5cdFx0XHRcdHRoaXMuc2V0QWdncmVnYXRpb24oXCJsYXlvdXRcIiwgdGhpcy5fb0ZpbHRlckJhckxheW91dCwgdHJ1ZSk7XG5cdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuaW52YWxpZGF0ZSgpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRnZXRTb3J0ZWRGaWx0ZXJGaWVsZHMoYUZpbHRlckl0ZW1zOiBGaWx0ZXJGaWVsZFtdLCBhRmlsdGVyRmllbGRzOiBGaWx0ZXJGaWVsZFtdKTogRmlsdGVyRmllbGRbXSB7XG5cdFx0Y29uc3QgYUZpbHRlcklkczogc3RyaW5nW10gPSBbXTtcblx0XHRhRmlsdGVySXRlbXMuZm9yRWFjaChmdW5jdGlvbiAob0ZpbHRlckl0ZW06IEZpbHRlckZpZWxkKSB7XG5cdFx0XHRhRmlsdGVySWRzLnB1c2gob0ZpbHRlckl0ZW0uZ2V0SWQoKSk7XG5cdFx0fSk7XG5cdFx0YUZpbHRlckZpZWxkcy5zb3J0KGZ1bmN0aW9uIChhRmlyc3RJdGVtOiBGaWx0ZXJGaWVsZCwgYVNlY29uZEl0ZW06IEZpbHRlckZpZWxkKSB7XG5cdFx0XHRsZXQgc0ZpcnN0SXRlbVZGSWQsIHNTZWNvbmRJdGVtVkZJZDtcblx0XHRcdChhRmlyc3RJdGVtLmdldENvbnRlbnQoKSBhcyB1bmtub3duIGFzIENvbnRyb2xbXSkuZm9yRWFjaChmdW5jdGlvbiAob0lubmVyQ29udHJvbDogQ29udHJvbCkge1xuXHRcdFx0XHRpZiAob0lubmVyQ29udHJvbC5pc0E8RmlsdGVyRmllbGQ+KFwic2FwLnVpLm1kYy5GaWx0ZXJGaWVsZFwiKSkge1xuXHRcdFx0XHRcdHNGaXJzdEl0ZW1WRklkID0gb0lubmVyQ29udHJvbC5nZXRJZCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdChhU2Vjb25kSXRlbS5nZXRDb250ZW50KCkgYXMgdW5rbm93biBhcyBDb250cm9sW10pLmZvckVhY2goZnVuY3Rpb24gKG9Jbm5lckNvbnRyb2w6IENvbnRyb2wpIHtcblx0XHRcdFx0aWYgKG9Jbm5lckNvbnRyb2wuaXNBPEZpbHRlckZpZWxkPihcInNhcC51aS5tZGMuRmlsdGVyRmllbGRcIikpIHtcblx0XHRcdFx0XHRzU2Vjb25kSXRlbVZGSWQgPSBvSW5uZXJDb250cm9sLmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGFGaWx0ZXJJZHMuaW5kZXhPZihzRmlyc3RJdGVtVkZJZCA/PyBcIlwiKSAtIGFGaWx0ZXJJZHMuaW5kZXhPZihzU2Vjb25kSXRlbVZGSWQgPz8gXCJcIik7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGFGaWx0ZXJGaWVsZHM7XG5cdH1cblxuXHRfY3JlYXRlSW5uZXJMYXlvdXQoKTogdm9pZCB7XG5cdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dCA9IG5ldyBGaWx0ZXJDb250YWluZXIoKTtcblx0XHR0aGlzLl9jTGF5b3V0SXRlbSA9IEZpbHRlckl0ZW1MYXlvdXQ7XG5cdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dC5nZXRJbm5lcigpLmFkZFN0eWxlQ2xhc3MoXCJzYXBVaU1kY0ZpbHRlckJhckJhc2VBRkxheW91dFwiKTtcblx0XHR0aGlzLl9hZGRCdXR0b25zKCk7XG5cblx0XHQvLyBUT0RPOiBDaGVjayB3aXRoIE1EQyBpZiB0aGVyZSBpcyBhIGJldHRlciB3YXkgdG8gbG9hZCB2aXN1YWwgZmlsdGVyIG9uIHRoZSBiYXNpcyBvZiBjb250cm9sIHByb3BlcnR5XG5cdFx0Ly8gX2NyZWF0ZUlubmVyTGF5b3V0IGlzIGNhbGxlZCBvbiBJbml0IGJ5IHRoZSBmaWx0ZXIgYmFyIGJhc2UuXG5cdFx0Ly8gVGhpcyBtZWFuIHRoYXQgd2UgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBjb250cm9sIHByb3BlcnRpZXMgeWV0XG5cdFx0Ly8gYW5kIGhlbmNlIHdlIGNhbm5vdCBkZWNpZGUgb24gdGhlIGJhc2lzIG9mIGNvbnRyb2wgcHJvcGVydGllcyB3aGV0aGVyIGluaXRpYWwgbGF5b3V0IHNob3VsZCBiZSBjb21wYWN0IG9yIHZpc3VhbFxuXHRcdC8vIEFzIGEgcmVzdWx0IHdlIGhhdmUgdG8gZG8gdGhpcyB3b3JrYXJvdW5kIHRvIGFsd2F5cyBsb2FkIHRoZSBjb21wYWN0IGxheW91dCBieSBkZWZhdWx0XG5cdFx0Ly8gQW5kIHRvb2dsZSB0aGUgc2FtZSBpbiBjYXNlIHRoZSBpbml0aWFsTGF5b3V0IHdhcyBzdXBwb3NlZCB0byBiZSB2aXN1YWwgZmlsdGVycy5cblx0XHRjb25zdCBvSW5uZXJMYXlvdXQgPSB0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LmdldElubmVyKCk7XG5cdFx0Y29uc3Qgb0ZpbHRlckNvbnRhaW5lcklubmVyTGF5b3V0RXZlbnREZWxlZ2F0ZSA9IHtcblx0XHRcdG9uQmVmb3JlUmVuZGVyaW5nOiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmluaXRpYWxMYXlvdXQgPT09IFwidmlzdWFsXCIpIHtcblx0XHRcdFx0XHR0aGlzLl90b2dnbGVMYXlvdXQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRvSW5uZXJMYXlvdXQucmVtb3ZlRXZlbnREZWxlZ2F0ZShvRmlsdGVyQ29udGFpbmVySW5uZXJMYXlvdXRFdmVudERlbGVnYXRlKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdG9Jbm5lckxheW91dC5hZGRFdmVudERlbGVnYXRlKG9GaWx0ZXJDb250YWluZXJJbm5lckxheW91dEV2ZW50RGVsZWdhdGUpO1xuXG5cdFx0dGhpcy5zZXRBZ2dyZWdhdGlvbihcImxheW91dFwiLCB0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LCB0cnVlKTtcblx0fVxuXG5cdGV4aXQoKTogdm9pZCB7XG5cdFx0c3VwZXIuZXhpdCgpO1xuXHRcdC8vIFNvbWV0aW1lcyB1cG9uIGV4dGVybmFsIG5hdmlnYXRpb24gdGhpcy5fU2VnbWVudGVkQnV0dG9uIGlzIGFscmVhZHkgZGVzdHJveWVkXG5cdFx0Ly8gc28gY2hlY2sgaWYgaXQgZXhpc3RzIGFuZCB0aGVuIG9ubHkgcmVtb3ZlIHN0dWZmXG5cdFx0aWYgKHRoaXMuX29TZWdtZW50ZWRCdXR0b24pIHtcblx0XHRcdHRoaXMuX29TZWdtZW50ZWRCdXR0b24uZGV0YWNoRXZlbnQoXCJzZWxlY3Rpb25DaGFuZ2VcIiwgdGhpcy5fdG9nZ2xlTGF5b3V0KTtcblx0XHRcdGRlbGV0ZSB0aGlzLl9vU2VnbWVudGVkQnV0dG9uO1xuXHRcdH1cblx0fVxuXG5cdGdldFNlZ21lbnRlZEJ1dHRvbigpOiBTZWdtZW50ZWRCdXR0b24gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9vU2VnbWVudGVkQnV0dG9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIEVuYWJsZSBvciBkaXNhYmxlIHJlcXVlc3RzIHRoYXQgYXJlIGluaXRpYXRlZCBieSB0aGUgRmlsdGVyQmFyLlxuXHQgKlxuXHQgKiBUbyBiZSB1c2VkIHRvIHN1c3BlbmQgb3IgcmVzdW1lIHJlcXVlc3RzKHRhYmxlIG9yIHZpc3VhbCBmaWx0ZXJzKSB3aGVuIHRoZSBmaWx0ZXIgYmFyIGlzIGJlaW5nIG1vZGlmaWVkIG9yIHdoZW4gdGhlIHVzZXIgaXMgcHJvZ3JhbW1hdGljYWxseSBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaWx0ZXIgY29udHJvbHMuXG5cdCAqIFRoaXMgbWV0aG9kIGlzIGFsc28gdXNlZCB0byBjb250cm9sIHdoZXRoZXIgdGhlIHZpc3VhbCBmaWx0ZXIgY2hhcnQgYmluZGluZyBzaG91bGQgYmUgcmVzdW1lZC9zdXNwZW5kZWQgYmFzZWQgb24gdGhlIGRpZmYgc3RhdGUsIGFuZCByZXN1bWVkIGFmdGVyIGNvbmRpdG9uIG1vZGVsIHVwZGF0ZS5cblx0ICogQHBhcmFtIGVuYWJsZSBFbmFibGUgb3IgZGlzYWJsZSByZXF1ZXN0c1xuXHQgKiBAcGFyYW0gZGlmZlN0YXRlIElmIHRoZXJlIGlzIGEgZGlmZmVybmNlIGluIHRoZSBleHRlcm5hbCBzdGF0ZSB0aGF0IG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQgZm9yIHZpc3VhbCBmaWx0ZXIgaW4tcGFyYW1ldGVyc1xuXHQgKi9cblx0ZW5hYmxlUmVxdWVzdHMoZW5hYmxlOiBib29sZWFuLCBkaWZmU3RhdGU/OiBFeHRlcm5hbFN0YXRlVHlwZSk6IHZvaWQge1xuXHRcdHRoaXMuc2V0U3VzcGVuZFNlbGVjdGlvbighZW5hYmxlKTtcblx0XHQvLyBXZSBuZWVkIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSB2aXN1YWwgZmlsdGVyIGNoYXJ0IGJpbmRpbmdzIGJhc2VkIG9uIGRpZmYgc3RhdGUuXG5cdFx0dGhpcy5fZW5hYmxlVmlzdWFsRmlsdGVyQ2hhcnRCaW5kaW5ncyhlbmFibGUsIGRpZmZTdGF0ZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBmaWx0ZXIgbGF5b3V0IGJ5IGl0cyB0eXBlLlxuXHQgKiBAcGFyYW0gbGF5b3V0Q2xhc3NOYW1lIFRoZSBjbGFzcyBuYW1lIG9mIHRoZSBmaWx0ZXIgbGF5b3V0IHRvIGJlIHJldHVybmVkLlxuXHQgKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgZmlsdGVyIGxheW91dCB0byBiZSByZXR1cm5lZC5cblx0ICogQHR5cGVkZWYge0lGaWx0ZXJDb250YWluZXJ9IFQgVGhlIHR5cGUgb2YgdGhlIGZpbHRlciBsYXlvdXQgdG8gYmUgcmV0dXJuZWRcblx0ICogQHJldHVybnMgQ29ycmVzcG9uZGluZyBmaWx0ZXIgbGF5b3V0IGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHVuZGVmaW5lZC5cblx0ICovXG5cdF9nZXRGaWx0ZXJMYXlvdXRCeVR5cGU8VCBleHRlbmRzIElGaWx0ZXJDb250YWluZXI+KGxheW91dENsYXNzTmFtZTogQ29udGFpbmVyVHlwZSk6IFQgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHJldEZpbHRlckxheW91dCA9IHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuaXNBPFQ+KGxheW91dENsYXNzTmFtZSkgPyB0aGlzLl9vRmlsdGVyQmFyTGF5b3V0IDogdW5kZWZpbmVkO1xuXHRcdHJldHVybiAhcmV0RmlsdGVyTGF5b3V0ICYmIHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQ/LmlzQTxUPihsYXlvdXRDbGFzc05hbWUpXG5cdFx0XHQ/IHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXRcblx0XHRcdDogcmV0RmlsdGVyTGF5b3V0O1xuXHR9XG5cblx0X2VuYWJsZVZpc3VhbEZpbHRlckNoYXJ0QmluZGluZ3MoZW5hYmxlOiBib29sZWFuLCBkaWZmU3RhdGU/OiBFeHRlcm5hbFN0YXRlVHlwZSk6IHZvaWQge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0Y29uc3QgdmlzdWFsRmlsdGVyTGF5b3V0ID0gdGhpcy5fZ2V0RmlsdGVyTGF5b3V0QnlUeXBlPFZpc3VhbEZpbHRlckNvbnRhaW5lcj4oVklTVUFMX0ZJTFRFUl9DT05UQUlORVIpO1xuXHRcdGlmICh2aXN1YWxGaWx0ZXJMYXlvdXQpIHtcblx0XHRcdHZpc3VhbEZpbHRlckxheW91dC5lbmFibGVDaGFydEJpbmRpbmcoZW5hYmxlLCBkaWZmU3RhdGUpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIElmIGluaXRpYWwgbGF5b3V0IGlzIGNvbXBhY3QsIHdlIGRvbid0IGhhdmUgdGhlIHZpc3VhbCBmaWx0ZXIgbGF5b3V0KGNvbnRhaW5lcikgYXZhaWxhYmxlIHlldCB1bnRpbCB0aGUgdXNlciB0b2dnbGVzIHRvIHZpc3VhbCBmaWx0ZXIgbGF5b3V0LlxuXHRcdC8vIFNvIHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGNvbXBhY3QgZmlsdGVyIGxheW91dCBoYXMgdmlzdWFsIGZpbHRlcnMgYW5kIGVuYWJsZS9kaXNhYmxlIHRoZSBjaGFydCBiaW5kaW5nIGZvciB0aG9zZSB2aXN1YWwgZmlsdGVycy5cblx0XHRjb25zdCBjb21wYWN0RmlsdGVyTGF5b3V0ID0gdGhpcy5fZ2V0RmlsdGVyTGF5b3V0QnlUeXBlPEZpbHRlckNvbnRhaW5lcj4oRklMVEVSX0NPTlRBSU5FUik7XG5cdFx0aWYgKGNvbXBhY3RGaWx0ZXJMYXlvdXQpIHtcblx0XHRcdGNvbnN0IHZpc3VhbEZpbHRlcnMgPSBjb21wYWN0RmlsdGVyTGF5b3V0LmdldEFsbFZpc3VhbEZpbHRlckZpZWxkcygpO1xuXHRcdFx0aWYgKHZpc3VhbEZpbHRlcnMpIHtcblx0XHRcdFx0VmlzdWFsRmlsdGVyVXRpbHMuZW5hYmxlQ2hhcnRCaW5kaW5nKHZpc3VhbEZpbHRlcnMsIGVuYWJsZSwgZGlmZlN0YXRlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbmludGVyZmFjZSBGaWx0ZXJCYXIge1xuXHRfYWRkQnV0dG9ucygpOiB2b2lkO1xufVxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyQmFyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0VBb0JBLE1BQU1BLHVCQUF1QixHQUFHLHdEQUF3RDtJQUN2RkMsZ0JBQWdCLEdBQUcsa0RBQWtEO0VBQUMsSUFJakVDLFNBQVMsSUFBQUMsSUFBQSxHQURkQyxjQUFjLENBQUMsa0NBQWtDLENBQUMsRUFBQUMsS0FBQSxHQUVqREMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxRQUFRO0lBQUVDLFlBQVksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBTXJEQyxXQUFXLENBQUM7SUFDWkgsSUFBSSxFQUFFLHVCQUF1QjtJQUM3QkksUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFSLElBQUEsQ0FBQVMsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxhQUFBO0lBR0YsU0FBQVosVUFBWWEsU0FBd0QsRUFBRUMsUUFBdUQsRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDOUgsT0FBT0YsU0FBUyxFQUFFRyxZQUFZO01BQzlCLE9BQU9GLFFBQVEsRUFBRUUsWUFBWTtNQUM3QkQsS0FBQSxHQUFBSCxhQUFBLENBQUFLLElBQUEsT0FBTUosU0FBUyxFQUF1QkMsUUFBUSxDQUFDO01BQUNJLDBCQUFB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