@sapui5/sap.fe.templates 1.145.1 → 1.147.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/templates/.library +2 -2
  3. package/src/sap/fe/templates/AnalyticalListPage/Component.js +1 -1
  4. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +1 -1
  5. package/src/sap/fe/templates/AnalyticalListPage/manifest.json +1 -1
  6. package/src/sap/fe/templates/ListComponent.js +1 -1
  7. package/src/sap/fe/templates/ListReport/Component.js +1 -1
  8. package/src/sap/fe/templates/ListReport/ExtendPageDefinition.js +1 -1
  9. package/src/sap/fe/templates/ListReport/ExtensionAPI.js +2 -2
  10. package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +1 -1
  11. package/src/sap/fe/templates/ListReport/LRMessageStrip.js +1 -1
  12. package/src/sap/fe/templates/ListReport/ListReport.view.xml +53 -10
  13. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +78 -10
  14. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +92 -10
  15. package/src/sap/fe/templates/ListReport/ListReportTemplating.js +40 -4
  16. package/src/sap/fe/templates/ListReport/ListReportTemplating.ts +35 -1
  17. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +1 -1
  18. package/src/sap/fe/templates/ListReport/designtime/ListReport.designtime.helper.js +1 -1
  19. package/src/sap/fe/templates/ListReport/designtime/ListReport.designtime.js +1 -1
  20. package/src/sap/fe/templates/ListReport/manifest.json +1 -1
  21. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +1 -1
  22. package/src/sap/fe/templates/ListReport/overrides/MessageHandler.js +4 -3
  23. package/src/sap/fe/templates/ListReport/overrides/MessageHandler.ts +2 -1
  24. package/src/sap/fe/templates/ListReport/overrides/Share.js +1 -1
  25. package/src/sap/fe/templates/ListReport/overrides/SideEffects.js +1 -1
  26. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
  27. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.block.js +1 -1
  28. package/src/sap/fe/templates/ObjectPage/Component.js +1 -1
  29. package/src/sap/fe/templates/ObjectPage/ExtendPageDefinition.js +1 -1
  30. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +26 -5
  31. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +26 -3
  32. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +5 -1
  33. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +90 -30
  34. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +111 -33
  35. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +25 -14
  36. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +32 -27
  37. package/src/sap/fe/templates/ObjectPage/card/AdaptiveCardContent.js +1 -1
  38. package/src/sap/fe/templates/ObjectPage/card/BaseCardContentProvider.js +1 -1
  39. package/src/sap/fe/templates/ObjectPage/card/Generator.js +1 -1
  40. package/src/sap/fe/templates/ObjectPage/card/actions/HeaderActions.js +1 -1
  41. package/src/sap/fe/templates/ObjectPage/card/facets/HeaderContent.js +1 -1
  42. package/src/sap/fe/templates/ObjectPage/card/facets/HeaderTitle.js +1 -1
  43. package/src/sap/fe/templates/ObjectPage/components/CollaborationDiscardDialog.js +1 -1
  44. package/src/sap/fe/templates/ObjectPage/components/CollaborationDraft.js +1 -1
  45. package/src/sap/fe/templates/ObjectPage/components/DraftToggle.js +1 -1
  46. package/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +1 -1
  47. package/src/sap/fe/templates/ObjectPage/controls/StashableVBox.js +1 -1
  48. package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +1 -1
  49. package/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
  50. package/src/sap/fe/templates/ObjectPage/designtime/ObjectPage.designtime.helper.js +1 -1
  51. package/src/sap/fe/templates/ObjectPage/designtime/ObjectPage.designtime.js +1 -1
  52. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
  53. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
  54. package/src/sap/fe/templates/ObjectPage/flexibility/ScrollableHeaderContainer.flexibility.js +1 -1
  55. package/src/sap/fe/templates/ObjectPage/flexibility/StashControlAndDisconnect.js +1 -1
  56. package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.js +1 -1
  57. package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.js +1 -1
  58. package/src/sap/fe/templates/ObjectPage/flexibility/UnstashControlAndConnect.js +1 -1
  59. package/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
  60. package/src/sap/fe/templates/ObjectPage/overrides/CollaborationManager.js +1 -1
  61. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +1 -1
  62. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +1 -1
  63. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
  64. package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +1 -1
  65. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +3 -3
  66. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +1 -1
  67. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +1 -1
  68. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +12 -2
  69. package/src/sap/fe/templates/ObjectPage/view/fragments/EmphasizedFirstHeaderAction.fragment.xml +181 -0
  70. package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +2 -0
  71. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +18 -12
  72. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionFormContent.fragment.xml +2 -0
  73. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionMoreFormContent.fragment.xml +2 -0
  74. package/src/sap/fe/templates/ObjectPage/view/fragments/TransportSelection.js +1 -1
  75. package/src/sap/fe/templates/TableScroller.js +1 -1
  76. package/src/sap/fe/templates/library.js +2 -2
  77. package/src/sap/fe/templates/messagebundle.properties +1 -1
  78. package/src/sap/fe/templates/messagebundle_ar.properties +1 -1
  79. package/src/sap/fe/templates/messagebundle_bg.properties +1 -1
  80. package/src/sap/fe/templates/messagebundle_ca.properties +1 -1
  81. package/src/sap/fe/templates/messagebundle_cnr.properties +1 -1
  82. package/src/sap/fe/templates/messagebundle_cs.properties +1 -1
  83. package/src/sap/fe/templates/messagebundle_cy.properties +1 -1
  84. package/src/sap/fe/templates/messagebundle_da.properties +1 -1
  85. package/src/sap/fe/templates/messagebundle_de.properties +8 -8
  86. package/src/sap/fe/templates/messagebundle_el.properties +1 -1
  87. package/src/sap/fe/templates/messagebundle_en.properties +1 -1
  88. package/src/sap/fe/templates/messagebundle_en_GB.properties +1 -1
  89. package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +1 -1
  90. package/src/sap/fe/templates/messagebundle_es.properties +3 -3
  91. package/src/sap/fe/templates/messagebundle_es_MX.properties +1 -1
  92. package/src/sap/fe/templates/messagebundle_et.properties +1 -1
  93. package/src/sap/fe/templates/messagebundle_fi.properties +1 -1
  94. package/src/sap/fe/templates/messagebundle_fr.properties +1 -1
  95. package/src/sap/fe/templates/messagebundle_fr_CA.properties +1 -1
  96. package/src/sap/fe/templates/messagebundle_hi.properties +1 -1
  97. package/src/sap/fe/templates/messagebundle_hr.properties +1 -1
  98. package/src/sap/fe/templates/messagebundle_hu.properties +1 -1
  99. package/src/sap/fe/templates/messagebundle_id.properties +1 -1
  100. package/src/sap/fe/templates/messagebundle_it.properties +1 -1
  101. package/src/sap/fe/templates/messagebundle_iw.properties +2 -2
  102. package/src/sap/fe/templates/messagebundle_ja.properties +1 -1
  103. package/src/sap/fe/templates/messagebundle_kk.properties +1 -1
  104. package/src/sap/fe/templates/messagebundle_ko.properties +1 -1
  105. package/src/sap/fe/templates/messagebundle_lt.properties +1 -1
  106. package/src/sap/fe/templates/messagebundle_lv.properties +1 -1
  107. package/src/sap/fe/templates/messagebundle_mk.properties +1 -1
  108. package/src/sap/fe/templates/messagebundle_ms.properties +1 -1
  109. package/src/sap/fe/templates/messagebundle_nl.properties +1 -1
  110. package/src/sap/fe/templates/messagebundle_no.properties +1 -1
  111. package/src/sap/fe/templates/messagebundle_pl.properties +1 -1
  112. package/src/sap/fe/templates/messagebundle_pt.properties +1 -1
  113. package/src/sap/fe/templates/messagebundle_pt_PT.properties +1 -1
  114. package/src/sap/fe/templates/messagebundle_ro.properties +1 -1
  115. package/src/sap/fe/templates/messagebundle_ru.properties +1 -1
  116. package/src/sap/fe/templates/messagebundle_sh.properties +1 -1
  117. package/src/sap/fe/templates/messagebundle_sk.properties +1 -1
  118. package/src/sap/fe/templates/messagebundle_sl.properties +1 -1
  119. package/src/sap/fe/templates/messagebundle_sr.properties +1 -1
  120. package/src/sap/fe/templates/messagebundle_sv.properties +1 -1
  121. package/src/sap/fe/templates/messagebundle_th.properties +1 -1
  122. package/src/sap/fe/templates/messagebundle_tr.properties +1 -1
  123. package/src/sap/fe/templates/messagebundle_uk.properties +3 -3
  124. package/src/sap/fe/templates/messagebundle_vi.properties +1 -1
  125. package/src/sap/fe/templates/messagebundle_zh_CN.properties +1 -1
  126. package/src/sap/fe/templates/messagebundle_zh_TW.properties +1 -1
  127. package/src/sap/fe/templates/types/sap.fe.templates-auto-ext.d.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.templates",
3
- "version": "1.145.1",
3
+ "version": "1.147.0",
4
4
  "description": "SAPUI5 Library sap.fe.templates",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -4,9 +4,9 @@
4
4
  <vendor>SAP SE</vendor>
5
5
  <copyright>
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
- (c) Copyright 2009-2021 SAP SE. All rights reserved
7
+ (c) Copyright 2009-2026 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.145.1</version>
9
+ <version>1.147.0</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.templates</documentation>
12
12
 
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2025 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/templates/ListComponent"], function (ClassSupport, ListComponent) {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2025 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/fe/macros/chart/ChartDelegate"], function (BaseChartDelegate) {
6
6
  "use strict";
@@ -4,7 +4,7 @@
4
4
  "id": "sap.fe.templates.AnalyticalListPage",
5
5
  "type": "component",
6
6
  "applicationVersion": {
7
- "version": "1.145.1"
7
+ "version": "1.147.0"
8
8
  },
9
9
  "title": "Analytical List Page",
10
10
  "tags": {
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2025 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/TemplateComponent", "sap/fe/core/library", "sap/fe/templates/ListReport/ExtendPageDefinition"], function (ClassSupport, TemplateComponent, CoreLibrary, ExtendPageDefinition) {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2025 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/templates/ListComponent"], function (ClassSupport, ListComponent) {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2025 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define([], function () {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2025 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/ExtensionAPI", "sap/fe/macros/chart/ChartUtils", "sap/fe/macros/filter/FilterUtils", "sap/fe/templates/ListReport/LRMessageStrip", "sap/ui/core/InvisibleMessage", "sap/ui/core/library"], function (Log, ClassSupport, ExtensionAPI, ChartUtils, FilterUtils, $LRMessageStrip, InvisibleMessage, library) {
6
6
  "use strict";
@@ -175,4 +175,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/Extensio
175
175
  }(ExtensionAPI)) || _class);
176
176
  return ListReportExtensionAPI;
177
177
  }, false);
178
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMaXN0UmVwb3J0RXh0ZW5zaW9uQVBJIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2NsYXNzIiwiX0V4dGVuc2lvbkFQSSIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJyZWZyZXNoIiwiZmlsdGVyQmFyIiwiX2NvbnRyb2xsZXIiLCJfZ2V0RmlsdGVyQmFyQ29udHJvbCIsImZpbHRlckJhckFQSSIsImdldFBhcmVudCIsInRyaWdnZXJTZWFyY2giLCJQcm9taXNlIiwicmVzb2x2ZSIsImdldFNlbGVjdGVkQ29udGV4dHMiLCJvQ29udHJvbCIsIl9pc011bHRpTW9kZSIsIl9nZXRNdWx0aU1vZGVDb250cm9sIiwiZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2wiLCJjb250ZW50IiwiX2dldFRhYmxlIiwiaXNBIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJnZXRfY2hhcnQiLCJhU2VsZWN0ZWREYXRhUG9pbnRzIiwiQ2hhcnRVdGlscyIsImdldENoYXJ0U2VsZWN0ZWREYXRhIiwiaXRlbSIsInB1c2giLCJjb250ZXh0IiwicmVmcmVzaFRhYnNDb3VudCIsImtleXMiLCJzZXRUYWJDb250ZW50VG9CZVJlZnJlc2hlZE9uTmV4dE9wZW5pbmciLCJzZXRGaWx0ZXJWYWx1ZXMiLCJzQ29uZGl0aW9uUGF0aCIsInNPcGVyYXRvciIsInZWYWx1ZXMiLCJfZ2V0QWRhcHRhdGlvbkZpbHRlckJhckNvbnRyb2wiLCJ1bmRlZmluZWQiLCJGaWx0ZXJVdGlscyIsImNyZWF0ZUZpbHRlcnNGcm9tRmlsdGVyQ29uZGl0aW9ucyIsIm1GaWx0ZXJDb25kaXRpb25zIiwiTG9nIiwiZXJyb3IiLCJnZXRGaWx0ZXJJbmZvIiwiZ2V0RmlsdGVycyIsIm9GaWx0ZXJCYXIiLCJzZXRDdXN0b21NZXNzYWdlIiwibWVzc2FnZSIsInRhYktleSIsIm9uQ2xvc2UiLCJMaXN0UmVwb3J0TWVzc2FnZVN0cmlwIiwiTFJNZXNzYWdlU3RyaXAiLCJzaG93Q3VzdG9tTWVzc2FnZSIsIkludmlzaWJsZU1lc3NhZ2UiLCJnZXRJbnN0YW5jZSIsImFubm91bmNlIiwiSW52aXNpYmxlTWVzc2FnZU1vZGUiLCJBc3NlcnRpdmUiLCJkZXN0cm95IiwiY2FsbCIsInNldFNlbGVjdGVkVGFiIiwiY29udHJvbCIsIl9nZXRJY29uVGFiQmFyIiwiZmlyZVNlbGVjdCIsInNlbGVjdGVkS2V5IiwiRXh0ZW5zaW9uQVBJIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFeHRlbnNpb25BUEkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBFeHRlbnNpb25BUEkgZnJvbSBcInNhcC9mZS9jb3JlL0V4dGVuc2lvbkFQSVwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvVGFibGVcIjtcbmltcG9ydCBDaGFydFV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0NoYXJ0VXRpbHNcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIHsgSUZpbHRlckNvbnRyb2wgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCBGaWx0ZXJVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhckFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyQVBJXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsQmluZGluZ0luZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9VdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBMUkN1c3RvbU1lc3NhZ2UgfSBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9MaXN0UmVwb3J0L0xSTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgeyBMUk1lc3NhZ2VTdHJpcCB9IGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvTFJNZXNzYWdlU3RyaXBcIjtcbmltcG9ydCB0eXBlIExpc3RSZXBvcnRDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IEludmlzaWJsZU1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZU1lc3NhZ2VcIjtcbmltcG9ydCB7IEludmlzaWJsZU1lc3NhZ2VNb2RlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENoYXJ0IGZyb20gXCJzYXAvdWkvbWRjL0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25PYmplY3QgfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuXG4vKipcbiAqIEV4dGVuc2lvbiBBUEkgZm9yIGxpc3QgcmVwb3J0cyBpbiBTQVAgRmlvcmkgZWxlbWVudHMgZm9yIE9EYXRhIFY0LlxuICpcbiAqIFRvIGNvcnJlY3RseSBpbnRlZ3JhdGUgeW91ciBhcHAgZXh0ZW5zaW9uIGNvZGluZyB3aXRoIFNBUCBGaW9yaSBlbGVtZW50cywgdXNlIG9ubHkgdGhlIGV4dGVuc2lvbkFQSSBvZiBTQVAgRmlvcmkgZWxlbWVudHMuIERvbid0IGFjY2VzcyBvciBtYW5pcHVsYXRlIGNvbnRyb2xzLCBwcm9wZXJ0aWVzLCBtb2RlbHMsIG9yIG90aGVyIGludGVybmFsIG9iamVjdHMgY3JlYXRlZCBieSB0aGUgU0FQIEZpb3JpIGVsZW1lbnRzIGZyYW1ld29yay5cbiAqIEBwdWJsaWNcbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBmaW5hbFxuICogQHNpbmNlIDEuNzkuMFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUudGVtcGxhdGVzLkxpc3RSZXBvcnQuRXh0ZW5zaW9uQVBJXCIpXG5jbGFzcyBMaXN0UmVwb3J0RXh0ZW5zaW9uQVBJIGV4dGVuZHMgRXh0ZW5zaW9uQVBJIHtcblx0cHVibGljIF9jb250cm9sbGVyITogTGlzdFJlcG9ydENvbnRyb2xsZXI7XG5cblx0TGlzdFJlcG9ydE1lc3NhZ2VTdHJpcCE6IExSTWVzc2FnZVN0cmlwO1xuXG5cdC8qKlxuXHQgKiBSZWZyZXNoZXMgdGhlIExpc3QgUmVwb3J0LlxuXHQgKiBUaGlzIG1ldGhvZCBjdXJyZW50bHkgb25seSBzdXBwb3J0cyB0cmlnZ2VyaW5nIHRoZSBzZWFyY2ggKGJ5IGNsaWNraW5nIG9uIHRoZSBHTyBidXR0b24pXG5cdCAqIGluIHRoZSBMaXN0IFJlcG9ydCBGaWx0ZXIgQmFyLiBJdCBjYW4gYmUgdXNlZCB0byByZXF1ZXN0IHRoZSBpbml0aWFsIGxvYWQgb3IgdG8gcmVmcmVzaCB0aGVcblx0ICogY3VycmVudGx5IHNob3duIGRhdGEgYmFzZWQgb24gdGhlIGZpbHRlcnMgZW50ZXJlZCBieSB0aGUgdXNlci5cblx0ICogUGxlYXNlIG5vdGU6IFRoZSBQcm9taXNlIGlzIHJlc29sdmVkIG9uY2UgdGhlIHNlYXJjaCBpcyB0cmlnZ2VyZWQgYW5kIG5vdCBvbmNlIHRoZSBkYXRhIGlzIHJldHVybmVkLlxuXHQgKiBAcmV0dXJucyBSZXNvbHZlZCBvbmNlIHRoZSBkYXRhIGlzIHJlZnJlc2hlZCBvciByZWplY3RlZCBpZiB0aGUgcmVxdWVzdCBmYWlsZWRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgcmVmcmVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLl9jb250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0Y29uc3QgZmlsdGVyQmFyQVBJID0gZmlsdGVyQmFyPy5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEk7XG5cdFx0aWYgKGZpbHRlckJhckFQSSkge1xuXHRcdFx0ZmlsdGVyQmFyQVBJLnRyaWdnZXJTZWFyY2goKTtcblx0XHR9XG5cdFx0Ly8gVE9ETzogaWYgdGhlcmUgaXMgbm8gZmlsdGVyIGJhciwgbWFrZSByZWZyZXNoIHdvcmtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgbGlzdCBlbnRyaWVzIGN1cnJlbnRseSBzZWxlY3RlZCBmb3IgdGhlIGRpc3BsYXllZCBjb250cm9sLlxuXHQgKiBAcmV0dXJucyBBcnJheSBjb250YWluaW5nIHRoZSBzZWxlY3RlZCBjb250ZXh0c1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKCk6IENvbnRleHRbXSB7XG5cdFx0Y29uc3Qgb0NvbnRyb2wgPSAoKHRoaXMuX2NvbnRyb2xsZXIuX2lzTXVsdGlNb2RlKCkgJiZcblx0XHRcdHRoaXMuX2NvbnRyb2xsZXIuX2dldE11bHRpTW9kZUNvbnRyb2woKT8uZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKT8uY29udGVudCkgfHxcblx0XHRcdHRoaXMuX2NvbnRyb2xsZXIuX2dldFRhYmxlKCkpIGFzIFRhYmxlIHwgKENoYXJ0ICYgeyBnZXRfY2hhcnQ6IEZ1bmN0aW9uIH0pIHwgVGFibGVBUEk7IC8vIFRoaXMgY2FuIG5ldmVyIGJlIGEgVGFibGVBUEksIGJ1dCBpdCBjYXVzZXMgaXNzdWUgbGluZSA3MyBvdGhlcndpc2UuXG5cdFx0aWYgKG9Db250cm9sLmlzQTxDaGFydCAmIHsgZ2V0X2NoYXJ0OiBGdW5jdGlvbiB9PihcInNhcC51aS5tZGMuQ2hhcnRcIikpIHtcblx0XHRcdGNvbnN0IGFTZWxlY3RlZENvbnRleHRzID0gW107XG5cdFx0XHRpZiAob0NvbnRyb2wgJiYgb0NvbnRyb2wuZ2V0X2NoYXJ0KCkpIHtcblx0XHRcdFx0Y29uc3QgYVNlbGVjdGVkRGF0YVBvaW50cyA9IENoYXJ0VXRpbHMuZ2V0Q2hhcnRTZWxlY3RlZERhdGEob0NvbnRyb2wuZ2V0X2NoYXJ0KCkpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgYVNlbGVjdGVkRGF0YVBvaW50cykge1xuXHRcdFx0XHRcdGFTZWxlY3RlZENvbnRleHRzLnB1c2goaXRlbS5jb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFTZWxlY3RlZENvbnRleHRzO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gKG9Db250cm9sLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKS5nZXRTZWxlY3RlZENvbnRleHRzKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlZnJlc2hlcyB0aGUgY291bnQgb2YgdGhlIHZpZXdzIGluIHRoZSBNdWx0aU1vZGUgY29udHJvbC5cblx0ICogQHBhcmFtIFtrZXlzXSBUaGUgbGlzdCBvZiB0aGUga2V5cyBpZGVudGlmeWluZyB0aGUgdmlld3MgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QgZm9yIHdoaWNoIHRoZSB2aWV3cycgY291bnQgd2lsbCBiZSByZWZyZXNoZWQuIElmIG5vdCBwcm92aWRlZCwgYWxsIHRoZSB2aWV3cycgY291bnQgd2lsbCBiZSByZWZyZXNoZWRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cmVmcmVzaFRhYnNDb3VudChrZXlzPzogc3RyaW5nW10pOiB2b2lkIHtcblx0XHR0aGlzLl9jb250cm9sbGVyLl9nZXRNdWx0aU1vZGVDb250cm9sKCk/LnJlZnJlc2hUYWJzQ291bnQoa2V5cyk7XG5cdH1cblxuXHQvKipcblx0ICogUmVmcmVzaGVzIHRoZSBjb250ZW50IG9mIHRoZSB1bmRlcmx5aW5nIHZpZXdzIHVwb24gdGhlIG5leHQgb3BlbmluZy5cblx0ICogTm90ZTogVGhlIGNvbnRlbnQgb2YgdGhlIHNlbGVjdGVkIHZpZXcsIGlmIHBhcnQgb2YgdGhlIHByb3ZpZGVkIGtleXMsIHdpbGwgYmUgcmVmcmVzaGVkIGltbWVkaWF0ZWx5LlxuXHQgKiBAcGFyYW0gW2tleXNdIFRoZSBsaXN0IG9mIHRoZSBrZXlzIGlkZW50aWZ5aW5nIHRoZSB2aWV3cyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBmb3Igd2hpY2ggdGhlIHZpZXdzJyBjb250ZW50IHdpbGwgYmUgcmVmcmVzaGVkLiBJZiBub3QgcHJvdmlkZWQsIGFsbCB0aGUgdmlld3MnIGNvbnRlbnQgd2lsbCBiZSByZWZyZXNoZWRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0c2V0VGFiQ29udGVudFRvQmVSZWZyZXNoZWRPbk5leHRPcGVuaW5nKGtleXM/OiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdHRoaXMuX2NvbnRyb2xsZXIuX2dldE11bHRpTW9kZUNvbnRyb2woKT8uc2V0VGFiQ29udGVudFRvQmVSZWZyZXNoZWRPbk5leHRPcGVuaW5nKGtleXMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgZmlsdGVyIHZhbHVlcyBmb3IgdGhlIGdpdmVuIHByb3BlcnR5IGluIHRoZSBmaWx0ZXIgYmFyLlxuXHQgKiBUaGUgZmlsdGVyIHZhbHVlcyBjYW4gYmUgZWl0aGVyIGEgc2luZ2xlIHZhbHVlIG9yIGFuIGFycmF5IG9mIHZhbHVlcy5cblx0ICogRWFjaCBmaWx0ZXIgdmFsdWUgbXVzdCBiZSByZXByZXNlbnRlZCBhcyBhIHByaW1pdGl2ZSB2YWx1ZS5cblx0ICogQHBhcmFtIHNDb25kaXRpb25QYXRoIFRoZSBwYXRoIHRvIHRoZSBwcm9wZXJ0eSBhcyBhIGNvbmRpdGlvbiBwYXRoXG5cdCAqIEBwYXJhbSBbc09wZXJhdG9yXSBUaGUgb3BlcmF0b3IgdG8gYmUgdXNlZCAob3B0aW9uYWwpIC0gaWYgbm90IHNldCwgdGhlIGRlZmF1bHQgb3BlcmF0b3IgKEVRKSB3aWxsIGJlIHVzZWRcblx0ICogQHBhcmFtIHZWYWx1ZXMgVGhlIHZhbHVlcyB0byBiZSBhcHBsaWVkXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSBmb3IgYXN5bmNocm9ub3VzIGhhbmRsaW5nXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHNldEZpbHRlclZhbHVlcyhcblx0XHRzQ29uZGl0aW9uUGF0aDogc3RyaW5nLFxuXHRcdHNPcGVyYXRvcjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRcdHZWYWx1ZXM/OiB1bmRlZmluZWQgfCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgc3RyaW5nW10gfCBudW1iZXJbXSB8IGJvb2xlYW5bXVxuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBUaGUgTGlzdCBSZXBvcnQgaGFzIHR3byBmaWx0ZXIgYmFyczogVGhlIGZpbHRlciBiYXIgaW4gdGhlIGhlYWRlciBhbmQgdGhlIGZpbHRlciBiYXIgaW4gdGhlIFwiQWRhcHQgRmlsdGVyXCIgZGlhbG9nO1xuXHRcdC8vIHdoZW4gdGhlIGRpYWxvZyBpcyBvcGVuZWQsIHRoZSB1c2VyIGlzIHdvcmtpbmcgd2l0aCB0aGF0IGFjdGl2ZSBjb250cm9sOiBQYXNzIGl0IHRvIHRoZSBzZXRGaWx0ZXJWYWx1ZXMgbWV0aG9kIVxuXHRcdGNvbnN0IGZpbHRlckJhciA9IHRoaXMuX2NvbnRyb2xsZXIuX2dldEFkYXB0YXRpb25GaWx0ZXJCYXJDb250cm9sKCkgfHwgdGhpcy5fY29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdGlmICh2VmFsdWVzID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHZWYWx1ZXMgPSBzT3BlcmF0b3I7XG5cdFx0XHRyZXR1cm4gRmlsdGVyVXRpbHMuc2V0RmlsdGVyVmFsdWVzKGZpbHRlckJhciBhcyBGaWx0ZXJCYXIsIHNDb25kaXRpb25QYXRoLCB2VmFsdWVzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gRmlsdGVyVXRpbHMuc2V0RmlsdGVyVmFsdWVzKGZpbHRlckJhciBhcyBGaWx0ZXJCYXIsIHNDb25kaXRpb25QYXRoLCBzT3BlcmF0b3IsIHZWYWx1ZXMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBmaWx0ZXIgY29uZGl0aW9ucyB0byBmaWx0ZXJzLlxuXHQgKiBAcGFyYW0gbUZpbHRlckNvbmRpdGlvbnMgTWFwIGNvbnRhaW5pbmcgdGhlIGZpbHRlciBjb25kaXRpb25zIG9mIHRoZSBGaWx0ZXJCYXIuXG5cdCAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgRmlsdGVyQmFyIGZpbHRlcnMgb3IgdW5kZWZpbmVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRjcmVhdGVGaWx0ZXJzRnJvbUZpbHRlckNvbmRpdGlvbnMobUZpbHRlckNvbmRpdGlvbnM6IFJlY29yZDxzdHJpbmcsIENvbmRpdGlvbk9iamVjdFtdPik6IG9iamVjdCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gdGhpcy5fY29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdGlmICghZmlsdGVyQmFyKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJUaGUgZmlsdGVyIGJhciBpcyBub3QgYXZhaWxhYmxlXCIpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRyZXR1cm4gRmlsdGVyVXRpbHMuZ2V0RmlsdGVySW5mbyhmaWx0ZXJCYXIgYXMgdW5rbm93biBhcyBJRmlsdGVyQ29udHJvbCwgdW5kZWZpbmVkLCBtRmlsdGVyQ29uZGl0aW9ucyk7XG5cdH1cblxuXHQvKipcblx0ICogUHJvdmlkZXMgYWxsIHRoZSBtb2RlbCBmaWx0ZXJzIGZyb20gdGhlIGZpbHRlciBiYXIgdGhhdCBhcmUgY3VycmVudGx5IGFjdGl2ZVxuXHQgKiBhbG9uZyB3aXRoIHRoZSBzZWFyY2ggZXhwcmVzc2lvbi5cblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2YgYWN0aXZlIGZpbHRlcnMgYW5kIHRoZSBzZWFyY2ggZXhwcmVzc2lvbiBvciB1bmRlZmluZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldEZpbHRlcnMoKTogSW50ZXJuYWxCaW5kaW5nSW5mbyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb0ZpbHRlckJhciA9IHRoaXMuX2NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRyZXR1cm4gRmlsdGVyVXRpbHMuZ2V0RmlsdGVycyhvRmlsdGVyQmFyIGFzIHVua25vd24gYXMgSUZpbHRlckNvbnRyb2wpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFByb3ZpZGUgYW4gb3B0aW9uIGZvciBzaG93aW5nIGEgY3VzdG9tIG1lc3NhZ2UgaW4gdGhlIG1lc3NhZ2Ugc3RyaXAgYWJvdmUgdGhlIGxpc3QgcmVwb3J0IHRhYmxlLlxuXHQgKiBAcGFyYW0gbWVzc2FnZSBDdXN0b20gbWVzc2FnZSBhbG9uZyB3aXRoIHRoZSBtZXNzYWdlIHR5cGUgdG8gYmUgc2V0IG9uIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIG1lc3NhZ2UubWVzc2FnZSBNZXNzYWdlIHN0cmluZyB0byBiZSBkaXNwbGF5ZWQuXG5cdCAqIEBwYXJhbSBtZXNzYWdlLnR5cGUgSW5kaWNhdGVzIHRoZSB0eXBlIG9mIG1lc3NhZ2UuXG5cdCAqIEBwYXJhbSB0YWJLZXkgVGhlIHRhYktleSBpZGVudGlmeWluZyB0aGUgdGFibGUgd2hlcmUgdGhlIGN1c3RvbSBtZXNzYWdlIGlzIGRpc3BsYXllZC4gSWYgdGFiS2V5IGlzIGVtcHR5LCB0aGUgbWVzc2FnZSBpcyBkaXNwbGF5ZWQgaW4gYWxsIHRhYnMgLiBJZiB0YWJLZXkgPSBbJzEnLCcyJ10sIHRoZSBtZXNzYWdlIGlzIGRpc3BsYXllZCBpbiB0YWJzIDEgYW5kIDIgb25seVxuXHQgKiBAcGFyYW0gb25DbG9zZSBBIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xvc2VzIHRoZSBtZXNzYWdlIGJhci5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0c2V0Q3VzdG9tTWVzc2FnZShtZXNzYWdlOiBMUkN1c3RvbU1lc3NhZ2UgfCB1bmRlZmluZWQsIHRhYktleT86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgb25DbG9zZT86IEZ1bmN0aW9uKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLkxpc3RSZXBvcnRNZXNzYWdlU3RyaXApIHtcblx0XHRcdHRoaXMuTGlzdFJlcG9ydE1lc3NhZ2VTdHJpcCA9IG5ldyBMUk1lc3NhZ2VTdHJpcCgpO1xuXHRcdH1cblx0XHR0aGlzLkxpc3RSZXBvcnRNZXNzYWdlU3RyaXAuc2hvd0N1c3RvbU1lc3NhZ2UobWVzc2FnZSwgdGhpcy5fY29udHJvbGxlciwgdGFiS2V5LCBvbkNsb3NlKTtcblx0XHRpZiAobWVzc2FnZT8ubWVzc2FnZSkge1xuXHRcdFx0SW52aXNpYmxlTWVzc2FnZS5nZXRJbnN0YW5jZSgpLmFubm91bmNlKG1lc3NhZ2UubWVzc2FnZSwgSW52aXNpYmxlTWVzc2FnZU1vZGUuQXNzZXJ0aXZlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGVzdHJveXMgdGhlIG1lc3NhZ2Ugc3RyaXAgc2V0IG9uIHRoZSBMaXN0IFJlcG9ydCwgaWYgYW55LlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZGVzdHJveSgpOiB2b2lkIHtcblx0XHR0aGlzLkxpc3RSZXBvcnRNZXNzYWdlU3RyaXA/LmRlc3Ryb3koKTtcblx0XHRzdXBlci5kZXN0cm95KCk7XG5cdH1cblxuXHQvKipcblx0ICogUHJvdmlkZXMgYW4gb3B0aW9uIGZvciB0aGUgc2VsZWN0aW9uIG9mIGEgc3BlY2lmaWMgdGFiIHByb2dyYW1hbWF0aWNhbGx5LlxuXHQgKiBAcGFyYW0gdGFiS2V5IFNwZWNpZmljIHRhYiB0byBiZSBzZWxlY3RlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0c2V0U2VsZWN0ZWRUYWIodGFiS2V5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBjb250cm9sID0gdGhpcy5fY29udHJvbGxlci5fZ2V0SWNvblRhYkJhcigpO1xuXHRcdGNvbnRyb2w/LmZpcmVTZWxlY3QoeyBzZWxlY3RlZEtleTogXCJmZTo6dGFibGU6OlwiICsgdGFiS2V5ICsgXCI6OkxpbmVJdGVtXCIgfSk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlzdFJlcG9ydEV4dGVuc2lvbkFQSTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztFQW9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFSQSxJQVVNQSxzQkFBc0IsSUFBQUMsSUFBQSxHQUQzQkMsY0FBYyxDQUFDLDBDQUEwQyxDQUFDLEVBQUFELElBQUEsQ0FBQUUsTUFBQSwwQkFBQUMsYUFBQTtJQUFBLFNBQUFKLHVCQUFBO01BQUEsT0FBQUksYUFBQSxDQUFBQyxLQUFBLE9BQUFDLFNBQUE7SUFBQTtJQUFBQyxjQUFBLENBQUFQLHNCQUFBLEVBQUFJLGFBQUE7SUFBQSxJQUFBSSxNQUFBLEdBQUFSLHNCQUFBLENBQUFTLFNBQUE7SUFNMUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBUkNELE1BQUEsQ0FTTUUsT0FBTyxHQUFiLGVBQU1BLE9BQU9BLENBQUEsRUFBa0I7TUFDOUIsTUFBTUMsU0FBUyxHQUFHLElBQUksQ0FBQ0MsV0FBVyxDQUFDQyxvQkFBb0IsQ0FBQyxDQUFDO01BQ3pELE1BQU1DLFlBQVksR0FBR0gsU0FBUyxFQUFFSSxTQUFTLENBQUMsQ0FBaUI7TUFDM0QsSUFBSUQsWUFBWSxFQUFFO1FBQ2pCQSxZQUFZLENBQUNFLGFBQWEsQ0FBQyxDQUFDO01BQzdCO01BQ0E7TUFDQSxPQUFPQyxPQUFPLENBQUNDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pCOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBVixNQUFBLENBS0FXLG1CQUFtQixHQUFuQixTQUFBQSxtQkFBbUJBLENBQUEsRUFBYztNQUNoQyxNQUFNQyxRQUFRLEdBQUssSUFBSSxDQUFDUixXQUFXLENBQUNTLFlBQVksQ0FBQyxDQUFDLElBQ2pELElBQUksQ0FBQ1QsV0FBVyxDQUFDVSxvQkFBb0IsQ0FBQyxDQUFDLEVBQUVDLHVCQUF1QixD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
178
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMaXN0UmVwb3J0RXh0ZW5zaW9uQVBJIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2NsYXNzIiwiX0V4dGVuc2lvbkFQSSIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJyZWZyZXNoIiwiZmlsdGVyQmFyIiwiX2NvbnRyb2xsZXIiLCJfZ2V0RmlsdGVyQmFyQ29udHJvbCIsImZpbHRlckJhckFQSSIsImdldFBhcmVudCIsInRyaWdnZXJTZWFyY2giLCJQcm9taXNlIiwicmVzb2x2ZSIsImdldFNlbGVjdGVkQ29udGV4dHMiLCJvQ29udHJvbCIsIl9pc011bHRpTW9kZSIsIl9nZXRNdWx0aU1vZGVDb250cm9sIiwiZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2wiLCJjb250ZW50IiwiX2dldFRhYmxlIiwiaXNBIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJnZXRfY2hhcnQiLCJhU2VsZWN0ZWREYXRhUG9pbnRzIiwiQ2hhcnRVdGlscyIsImdldENoYXJ0U2VsZWN0ZWREYXRhIiwiaXRlbSIsInB1c2giLCJjb250ZXh0IiwicmVmcmVzaFRhYnNDb3VudCIsImtleXMiLCJzZXRUYWJDb250ZW50VG9CZVJlZnJlc2hlZE9uTmV4dE9wZW5pbmciLCJzZXRGaWx0ZXJWYWx1ZXMiLCJzQ29uZGl0aW9uUGF0aCIsInNPcGVyYXRvciIsInZWYWx1ZXMiLCJfZ2V0QWRhcHRhdGlvbkZpbHRlckJhckNvbnRyb2wiLCJ1bmRlZmluZWQiLCJGaWx0ZXJVdGlscyIsImNyZWF0ZUZpbHRlcnNGcm9tRmlsdGVyQ29uZGl0aW9ucyIsIm1GaWx0ZXJDb25kaXRpb25zIiwiTG9nIiwiZXJyb3IiLCJnZXRGaWx0ZXJJbmZvIiwiZ2V0RmlsdGVycyIsIm9GaWx0ZXJCYXIiLCJzZXRDdXN0b21NZXNzYWdlIiwibWVzc2FnZSIsInRhYktleSIsIm9uQ2xvc2UiLCJMaXN0UmVwb3J0TWVzc2FnZVN0cmlwIiwiTFJNZXNzYWdlU3RyaXAiLCJzaG93Q3VzdG9tTWVzc2FnZSIsIkludmlzaWJsZU1lc3NhZ2UiLCJnZXRJbnN0YW5jZSIsImFubm91bmNlIiwiSW52aXNpYmxlTWVzc2FnZU1vZGUiLCJBc3NlcnRpdmUiLCJkZXN0cm95IiwiY2FsbCIsInNldFNlbGVjdGVkVGFiIiwiY29udHJvbCIsIl9nZXRJY29uVGFiQmFyIiwiZmlyZVNlbGVjdCIsInNlbGVjdGVkS2V5IiwiRXh0ZW5zaW9uQVBJIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFeHRlbnNpb25BUEkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBFeHRlbnNpb25BUEkgZnJvbSBcInNhcC9mZS9jb3JlL0V4dGVuc2lvbkFQSVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvVGFibGVcIjtcbmltcG9ydCBDaGFydFV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0NoYXJ0VXRpbHNcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIHsgSUZpbHRlckNvbnRyb2wgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCBGaWx0ZXJVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IExSQ3VzdG9tTWVzc2FnZSB9IGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvTFJNZXNzYWdlU3RyaXBcIjtcbmltcG9ydCB7IExSTWVzc2FnZVN0cmlwIH0gZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9MUk1lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IHR5cGUgTGlzdFJlcG9ydENvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9MaXN0UmVwb3J0Q29udHJvbGxlci5jb250cm9sbGVyXCI7XG5pbXBvcnQgSW52aXNpYmxlTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvSW52aXNpYmxlTWVzc2FnZVwiO1xuaW1wb3J0IHsgSW52aXNpYmxlTWVzc2FnZU1vZGUgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENvbmRpdGlvbk9iamVjdCB9IGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9Db25kaXRpb25cIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5cbi8qKlxuICogRXh0ZW5zaW9uIEFQSSBmb3IgbGlzdCByZXBvcnRzIGluIFNBUCBGaW9yaSBlbGVtZW50cyBmb3IgT0RhdGEgVjQuXG4gKlxuICogVG8gY29ycmVjdGx5IGludGVncmF0ZSB5b3VyIGFwcCBleHRlbnNpb24gY29kaW5nIHdpdGggU0FQIEZpb3JpIGVsZW1lbnRzLCB1c2Ugb25seSB0aGUgZXh0ZW5zaW9uQVBJIG9mIFNBUCBGaW9yaSBlbGVtZW50cy4gRG9uJ3QgYWNjZXNzIG9yIG1hbmlwdWxhdGUgY29udHJvbHMsIHByb3BlcnRpZXMsIG1vZGVscywgb3Igb3RoZXIgaW50ZXJuYWwgb2JqZWN0cyBjcmVhdGVkIGJ5IHRoZSBTQVAgRmlvcmkgZWxlbWVudHMgZnJhbWV3b3JrLlxuICogQHB1YmxpY1xuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQGZpbmFsXG4gKiBAc2luY2UgMS43OS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydC5FeHRlbnNpb25BUElcIilcbmNsYXNzIExpc3RSZXBvcnRFeHRlbnNpb25BUEkgZXh0ZW5kcyBFeHRlbnNpb25BUEkge1xuXHRwdWJsaWMgX2NvbnRyb2xsZXIhOiBMaXN0UmVwb3J0Q29udHJvbGxlcjtcblxuXHRMaXN0UmVwb3J0TWVzc2FnZVN0cmlwITogTFJNZXNzYWdlU3RyaXA7XG5cblx0LyoqXG5cdCAqIFJlZnJlc2hlcyB0aGUgTGlzdCBSZXBvcnQuXG5cdCAqIFRoaXMgbWV0aG9kIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIHRyaWdnZXJpbmcgdGhlIHNlYXJjaCAoYnkgY2xpY2tpbmcgb24gdGhlIEdPIGJ1dHRvbilcblx0ICogaW4gdGhlIExpc3QgUmVwb3J0IEZpbHRlciBCYXIuIEl0IGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgdGhlIGluaXRpYWwgbG9hZCBvciB0byByZWZyZXNoIHRoZVxuXHQgKiBjdXJyZW50bHkgc2hvd24gZGF0YSBiYXNlZCBvbiB0aGUgZmlsdGVycyBlbnRlcmVkIGJ5IHRoZSB1c2VyLlxuXHQgKiBQbGVhc2Ugbm90ZTogVGhlIFByb21pc2UgaXMgcmVzb2x2ZWQgb25jZSB0aGUgc2VhcmNoIGlzIHRyaWdnZXJlZCBhbmQgbm90IG9uY2UgdGhlIGRhdGEgaXMgcmV0dXJuZWQuXG5cdCAqIEByZXR1cm5zIFJlc29sdmVkIG9uY2UgdGhlIGRhdGEgaXMgcmVmcmVzaGVkIG9yIHJlamVjdGVkIGlmIHRoZSByZXF1ZXN0IGZhaWxlZFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyByZWZyZXNoKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGZpbHRlckJhciA9IHRoaXMuX2NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRjb25zdCBmaWx0ZXJCYXJBUEkgPSBmaWx0ZXJCYXI/LmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSTtcblx0XHRpZiAoZmlsdGVyQmFyQVBJKSB7XG5cdFx0XHRmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdH1cblx0XHQvLyBUT0RPOiBpZiB0aGVyZSBpcyBubyBmaWx0ZXIgYmFyLCBtYWtlIHJlZnJlc2ggd29ya1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBsaXN0IGVudHJpZXMgY3VycmVudGx5IHNlbGVjdGVkIGZvciB0aGUgZGlzcGxheWVkIGNvbnRyb2wuXG5cdCAqIEByZXR1cm5zIEFycmF5IGNvbnRhaW5pbmcgdGhlIHNlbGVjdGVkIGNvbnRleHRzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldFNlbGVjdGVkQ29udGV4dHMoKTogQ29udGV4dFtdIHtcblx0XHRjb25zdCBvQ29udHJvbCA9ICgodGhpcy5fY29udHJvbGxlci5faXNNdWx0aU1vZGUoKSAmJlxuXHRcdFx0dGhpcy5fY29udHJvbGxlci5fZ2V0TXVsdGlNb2RlQ29udHJvbCgpPy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpPy5jb250ZW50KSB8fFxuXHRcdFx0dGhpcy5fY29udHJvbGxlci5fZ2V0VGFibGUoKSkgYXMgVGFibGUgfCAoQ2hhcnQgJiB7IGdldF9jaGFydDogRnVuY3Rpb24gfSkgfCBUYWJsZUFQSTsgLy8gVGhpcyBjYW4gbmV2ZXIgYmUgYSBUYWJsZUFQSSwgYnV0IGl0IGNhdXNlcyBpc3N1ZSBsaW5lIDczIG90aGVyd2lzZS5cblx0XHRpZiAob0NvbnRyb2wuaXNBPENoYXJ0ICYgeyBnZXRfY2hhcnQ6IEZ1bmN0aW9uIH0+KFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0Y29uc3QgYVNlbGVjdGVkQ29udGV4dHMgPSBbXTtcblx0XHRcdGlmIChvQ29udHJvbCAmJiBvQ29udHJvbC5nZXRfY2hhcnQoKSkge1xuXHRcdFx0XHRjb25zdCBhU2VsZWN0ZWREYXRhUG9pbnRzID0gQ2hhcnRVdGlscy5nZXRDaGFydFNlbGVjdGVkRGF0YShvQ29udHJvbC5nZXRfY2hhcnQoKSk7XG5cdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBhU2VsZWN0ZWREYXRhUG9pbnRzKSB7XG5cdFx0XHRcdFx0YVNlbGVjdGVkQ29udGV4dHMucHVzaChpdGVtLmNvbnRleHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYVNlbGVjdGVkQ29udGV4dHM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiAob0NvbnRyb2wuZ2V0UGFyZW50KCkgYXMgVGFibGVBUEkpLmdldFNlbGVjdGVkQ29udGV4dHMoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVmcmVzaGVzIHRoZSBjb3VudCBvZiB0aGUgdmlld3MgaW4gdGhlIE11bHRpTW9kZSBjb250cm9sLlxuXHQgKiBAcGFyYW0gW2tleXNdIFRoZSBsaXN0IG9mIHRoZSBrZXlzIGlkZW50aWZ5aW5nIHRoZSB2aWV3cyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBmb3Igd2hpY2ggdGhlIHZpZXdzJyBjb3VudCB3aWxsIGJlIHJlZnJlc2hlZC4gSWYgbm90IHByb3ZpZGVkLCBhbGwgdGhlIHZpZXdzJyBjb3VudCB3aWxsIGJlIHJlZnJlc2hlZFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZWZyZXNoVGFic0NvdW50KGtleXM/OiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdHRoaXMuX2NvbnRyb2xsZXIuX2dldE11bHRpTW9kZUNvbnRyb2woKT8ucmVmcmVzaFRhYnNDb3VudChrZXlzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWZyZXNoZXMgdGhlIGNvbnRlbnQgb2YgdGhlIHVuZGVybHlpbmcgdmlld3MgdXBvbiB0aGUgbmV4dCBvcGVuaW5nLlxuXHQgKiBOb3RlOiBUaGUgY29udGVudCBvZiB0aGUgc2VsZWN0ZWQgdmlldywgaWYgcGFydCBvZiB0aGUgcHJvdmlkZWQga2V5cywgd2lsbCBiZSByZWZyZXNoZWQgaW1tZWRpYXRlbHkuXG5cdCAqIEBwYXJhbSBba2V5c10gVGhlIGxpc3Qgb2YgdGhlIGtleXMgaWRlbnRpZnlpbmcgdGhlIHZpZXdzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB3aGljaCB0aGUgdmlld3MnIGNvbnRlbnQgd2lsbCBiZSByZWZyZXNoZWQuIElmIG5vdCBwcm92aWRlZCwgYWxsIHRoZSB2aWV3cycgY29udGVudCB3aWxsIGJlIHJlZnJlc2hlZFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRzZXRUYWJDb250ZW50VG9CZVJlZnJlc2hlZE9uTmV4dE9wZW5pbmcoa2V5cz86IHN0cmluZ1tdKTogdm9pZCB7XG5cdFx0dGhpcy5fY29udHJvbGxlci5fZ2V0TXVsdGlNb2RlQ29udHJvbCgpPy5zZXRUYWJDb250ZW50VG9CZVJlZnJlc2hlZE9uTmV4dE9wZW5pbmcoa2V5cyk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBmaWx0ZXIgdmFsdWVzIGZvciB0aGUgZ2l2ZW4gcHJvcGVydHkgaW4gdGhlIGZpbHRlciBiYXIuXG5cdCAqIFRoZSBmaWx0ZXIgdmFsdWVzIGNhbiBiZSBlaXRoZXIgYSBzaW5nbGUgdmFsdWUgb3IgYW4gYXJyYXkgb2YgdmFsdWVzLlxuXHQgKiBFYWNoIGZpbHRlciB2YWx1ZSBtdXN0IGJlIHJlcHJlc2VudGVkIGFzIGEgcHJpbWl0aXZlIHZhbHVlLlxuXHQgKiBAcGFyYW0gc0NvbmRpdGlvblBhdGggVGhlIHBhdGggdG8gdGhlIHByb3BlcnR5IGFzIGEgY29uZGl0aW9uIHBhdGhcblx0ICogQHBhcmFtIFtzT3BlcmF0b3JdIFRoZSBvcGVyYXRvciB0byBiZSB1c2VkIChvcHRpb25hbCkgLSBpZiBub3Qgc2V0LCB0aGUgZGVmYXVsdCBvcGVyYXRvciAoRVEpIHdpbGwgYmUgdXNlZFxuXHQgKiBAcGFyYW0gdlZhbHVlcyBUaGUgdmFsdWVzIHRvIGJlIGFwcGxpZWRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIGZvciBhc3luY2hyb25vdXMgaGFuZGxpbmdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgc2V0RmlsdGVyVmFsdWVzKFxuXHRcdHNDb25kaXRpb25QYXRoOiBzdHJpbmcsXG5cdFx0c09wZXJhdG9yOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdFx0dlZhbHVlcz86IHVuZGVmaW5lZCB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBzdHJpbmdbXSB8IG51bWJlcltdIHwgYm9vbGVhbltdXG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIFRoZSBMaXN0IFJlcG9ydCBoYXMgdHdvIGZpbHRlciBiYXJzOiBUaGUgZmlsdGVyIGJhciBpbiB0aGUgaGVhZGVyIGFuZCB0aGUgZmlsdGVyIGJhciBpbiB0aGUgXCJBZGFwdCBGaWx0ZXJcIiBkaWFsb2c7XG5cdFx0Ly8gd2hlbiB0aGUgZGlhbG9nIGlzIG9wZW5lZCwgdGhlIHVzZXIgaXMgd29ya2luZyB3aXRoIHRoYXQgYWN0aXZlIGNvbnRyb2w6IFBhc3MgaXQgdG8gdGhlIHNldEZpbHRlclZhbHVlcyBtZXRob2QhXG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gdGhpcy5fY29udHJvbGxlci5fZ2V0QWRhcHRhdGlvbkZpbHRlckJhckNvbnRyb2woKSB8fCB0aGlzLl9jb250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0aWYgKHZWYWx1ZXMgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dlZhbHVlcyA9IHNPcGVyYXRvcjtcblx0XHRcdHJldHVybiBGaWx0ZXJVdGlscy5zZXRGaWx0ZXJWYWx1ZXMoZmlsdGVyQmFyIGFzIEZpbHRlckJhciwgc0NvbmRpdGlvblBhdGgsIHZWYWx1ZXMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBGaWx0ZXJVdGlscy5zZXRGaWx0ZXJWYWx1ZXMoZmlsdGVyQmFyIGFzIEZpbHRlckJhciwgc0NvbmRpdGlvblBhdGgsIHNPcGVyYXRvciwgdlZhbHVlcyk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgY29udmVydHMgdGhlIGZpbHRlciBjb25kaXRpb25zIHRvIGZpbHRlcnMuXG5cdCAqIEBwYXJhbSBtRmlsdGVyQ29uZGl0aW9ucyBNYXAgY29udGFpbmluZyB0aGUgZmlsdGVyIGNvbmRpdGlvbnMgb2YgdGhlIEZpbHRlckJhci5cblx0ICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCBGaWx0ZXJCYXIgZmlsdGVycyBvciB1bmRlZmluZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGNyZWF0ZUZpbHRlcnNGcm9tRmlsdGVyQ29uZGl0aW9ucyhtRmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgQ29uZGl0aW9uT2JqZWN0W10+KTogb2JqZWN0IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLl9jb250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0aWYgKCFmaWx0ZXJCYXIpIHtcblx0XHRcdExvZy5lcnJvcihcIlRoZSBmaWx0ZXIgYmFyIGlzIG5vdCBhdmFpbGFibGVcIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHJldHVybiBGaWx0ZXJVdGlscy5nZXRGaWx0ZXJJbmZvKGZpbHRlckJhciBhcyB1bmtub3duIGFzIElGaWx0ZXJDb250cm9sLCB1bmRlZmluZWQsIG1GaWx0ZXJDb25kaXRpb25zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm92aWRlcyBhbGwgdGhlIG1vZGVsIGZpbHRlcnMgZnJvbSB0aGUgZmlsdGVyIGJhciB0aGF0IGFyZSBjdXJyZW50bHkgYWN0aXZlXG5cdCAqIGFsb25nIHdpdGggdGhlIHNlYXJjaCBleHByZXNzaW9uLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhY3RpdmUgZmlsdGVycyBhbmQgdGhlIHNlYXJjaCBleHByZXNzaW9uIG9yIHVuZGVmaW5lZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0RmlsdGVycygpOiBJbnRlcm5hbEJpbmRpbmdJbmZvIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvRmlsdGVyQmFyID0gdGhpcy5fY29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdHJldHVybiBGaWx0ZXJVdGlscy5nZXRGaWx0ZXJzKG9GaWx0ZXJCYXIgYXMgdW5rbm93biBhcyBJRmlsdGVyQ29udHJvbCk7XG5cdH1cblxuXHQvKipcblx0ICogUHJvdmlkZSBhbiBvcHRpb24gZm9yIHNob3dpbmcgYSBjdXN0b20gbWVzc2FnZSBpbiB0aGUgbWVzc2FnZSBzdHJpcCBhYm92ZSB0aGUgbGlzdCByZXBvcnQgdGFibGUuXG5cdCAqIEBwYXJhbSBtZXNzYWdlIEN1c3RvbSBtZXNzYWdlIGFsb25nIHdpdGggdGhlIG1lc3NhZ2UgdHlwZSB0byBiZSBzZXQgb24gdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gbWVzc2FnZS5tZXNzYWdlIE1lc3NhZ2Ugc3RyaW5nIHRvIGJlIGRpc3BsYXllZC5cblx0ICogQHBhcmFtIG1lc3NhZ2UudHlwZSBJbmRpY2F0ZXMgdGhlIHR5cGUgb2YgbWVzc2FnZS5cblx0ICogQHBhcmFtIHRhYktleSBUaGUgdGFiS2V5IGlkZW50aWZ5aW5nIHRoZSB0YWJsZSB3aGVyZSB0aGUgY3VzdG9tIG1lc3NhZ2UgaXMgZGlzcGxheWVkLiBJZiB0YWJLZXkgaXMgZW1wdHksIHRoZSBtZXNzYWdlIGlzIGRpc3BsYXllZCBpbiBhbGwgdGFicyAuIElmIHRhYktleSA9IFsnMScsJzInXSwgdGhlIG1lc3NhZ2UgaXMgZGlzcGxheWVkIGluIHRhYnMgMSBhbmQgMiBvbmx5XG5cdCAqIEBwYXJhbSBvbkNsb3NlIEEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciBjbG9zZXMgdGhlIG1lc3NhZ2UgYmFyLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRzZXRDdXN0b21NZXNzYWdlKG1lc3NhZ2U6IExSQ3VzdG9tTWVzc2FnZSB8IHVuZGVmaW5lZCwgdGFiS2V5Pzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBvbkNsb3NlPzogRnVuY3Rpb24pOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuTGlzdFJlcG9ydE1lc3NhZ2VTdHJpcCkge1xuXHRcdFx0dGhpcy5MaXN0UmVwb3J0TWVzc2FnZVN0cmlwID0gbmV3IExSTWVzc2FnZVN0cmlwKCk7XG5cdFx0fVxuXHRcdHRoaXMuTGlzdFJlcG9ydE1lc3NhZ2VTdHJpcC5zaG93Q3VzdG9tTWVzc2FnZShtZXNzYWdlLCB0aGlzLl9jb250cm9sbGVyLCB0YWJLZXksIG9uQ2xvc2UpO1xuXHRcdGlmIChtZXNzYWdlPy5tZXNzYWdlKSB7XG5cdFx0XHRJbnZpc2libGVNZXNzYWdlLmdldEluc3RhbmNlKCkuYW5ub3VuY2UobWVzc2FnZS5tZXNzYWdlLCBJbnZpc2libGVNZXNzYWdlTW9kZS5Bc3NlcnRpdmUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZXN0cm95cyB0aGUgbWVzc2FnZSBzdHJpcCBzZXQgb24gdGhlIExpc3QgUmVwb3J0LCBpZiBhbnkuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRkZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMuTGlzdFJlcG9ydE1lc3NhZ2VTdHJpcD8uZGVzdHJveSgpO1xuXHRcdHN1cGVyLmRlc3Ryb3koKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm92aWRlcyBhbiBvcHRpb24gZm9yIHRoZSBzZWxlY3Rpb24gb2YgYSBzcGVjaWZpYyB0YWIgcHJvZ3JhbWFtYXRpY2FsbHkuXG5cdCAqIEBwYXJhbSB0YWJLZXkgU3BlY2lmaWMgdGFiIHRvIGJlIHNlbGVjdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRzZXRTZWxlY3RlZFRhYih0YWJLZXk6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9jb250cm9sbGVyLl9nZXRJY29uVGFiQmFyKCk7XG5cdFx0Y29udHJvbD8uZmlyZVNlbGVjdCh7IHNlbGVjdGVkS2V5OiBcImZlOjp0YWJsZTo6XCIgKyB0YWJLZXkgKyBcIjo6TGluZUl0ZW1cIiB9KTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBMaXN0UmVwb3J0RXh0ZW5zaW9uQVBJO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0VBb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVJBLElBVU1BLHNCQUFzQixJQUFBQyxJQUFBLEdBRDNCQyxjQUFjLENBQUMsMENBQTBDLENBQUMsRUFBQUQsSUFBQSxDQUFBRSxNQUFBLDBCQUFBQyxhQUFBO0lBQUEsU0FBQUosdUJBQUE7TUFBQSxPQUFBSSxhQUFBLENBQUFDLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0lBQUFDLGNBQUEsQ0FBQVAsc0JBQUEsRUFBQUksYUFBQTtJQUFBLElBQUFJLE1BQUEsR0FBQVIsc0JBQUEsQ0FBQVMsU0FBQTtJQU0xRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFSQ0QsTUFBQSxDQVNNRSxPQUFPLEdBQWIsZUFBTUEsT0FBT0EsQ0FBQSxFQUFrQjtNQUM5QixNQUFNQyxTQUFTLEdBQUcsSUFBSSxDQUFDQyxXQUFXLENBQUNDLG9CQUFvQixDQUFDLENBQUM7TUFDekQsTUFBTUMsWUFBWSxHQUFHSCxTQUFTLEVBQUVJLFNBQVMsQ0FBQyxDQUFpQjtNQUMzRCxJQUFJRCxZQUFZLEVBQUU7UUFDakJBLFlBQVksQ0FBQ0UsYUFBYSxDQUFDLENBQUM7TUFDN0I7TUFDQTtNQUNBLE9BQU9DLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUM7SUFDekI7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUFWLE1BQUEsQ0FLQVcsbUJBQW1CLEdBQW5CLFNBQUFBLG1CQUFtQkEsQ0FBQSxFQUFjO01BQ2hDLE1BQU1DLFFBQVEsR0FBSyxJQUFJLENBQUNSLFdBQVcsQ0FBQ1MsWUFBWSxDQUFDLENBQUMsSUFDakQsSUFBSSxDQUFDVCxXQUFXLENBQUNVLG9CQUFvQixDQUFDLENBQUMsRUFBRUMsdUJBQXVCLENBQUMsQ0FBQyxFQUFF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
@@ -1,12 +1,12 @@
1
1
  import Log from "sap/base/Log";
2
2
  import { defineUI5Class } from "sap/fe/base/ClassSupport";
3
3
  import ExtensionAPI from "sap/fe/core/ExtensionAPI";
4
+ import type FilterBarAPI from "sap/fe/macros/FilterBar";
4
5
  import type TableAPI from "sap/fe/macros/Table";
5
6
  import ChartUtils from "sap/fe/macros/chart/ChartUtils";
6
7
  import type FilterBar from "sap/fe/macros/controls/FilterBar";
7
8
  import type { IFilterControl } from "sap/fe/macros/filter/FilterUtils";
8
9
  import FilterUtils from "sap/fe/macros/filter/FilterUtils";
9
- import type FilterBarAPI from "sap/fe/macros/filterBar/FilterBarAPI";
10
10
  import type { InternalBindingInfo } from "sap/fe/macros/table/Utils";
11
11
  import type { LRCustomMessage } from "sap/fe/templates/ListReport/LRMessageStrip";
12
12
  import { LRMessageStrip } from "sap/fe/templates/ListReport/LRMessageStrip";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2025 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/ui/core/Messaging", "sap/ui/core/message/Message"], function (Messaging, Message) {
6
6
  "use strict";
@@ -5,7 +5,6 @@
5
5
  xmlns:macro="sap.fe.macros"
6
6
  xmlns:contentSwitcher="sap.fe.macros.contentSwitcher"
7
7
  xmlns:macroAI="sap.fe.macros.ai"
8
- xmlns:macroInternal="sap.fe.macros.internal"
9
8
  xmlns:control="sap.fe.core.controls"
10
9
  xmlns:core="sap.ui.core"
11
10
  xmlns:fragments="sap.fe.templates.ListReport.view.fragments"
@@ -38,14 +37,21 @@
38
37
  busyIndicatorDelay="0"
39
38
  class="{= !${converterContext>hasMultiVisualizations} &amp;&amp; ${converterContext>views}.length > 1 ? 'sapUiNoContentPadding' : 'sapUiResponsiveContentPadding'}"
40
39
  >
40
+ <f:landmarkInfo>
41
+ <f:DynamicPageAccessibleLandmarkInfo
42
+ headerRole="{= ${internal>/hasUShell} ? 'None' : 'Banner'}"
43
+ headerLabel="{sap.fe.i18n>T_COMMON_LIST_REPORT_HEADER}"
44
+ />
45
+ </f:landmarkInfo>
41
46
  <f:dependents>
42
47
  <template:if test="{converterContext>headerActions}">
43
48
  <template:repeat list="{converterContext>headerActions}" var="headerAction">
44
- <template:if test="{headerAction>command}">
49
+ <!-- Create CommandExecution only for the currently visible instance to avoid duplicate shortcut registrations (e.g. primaryAction clone + original). -->
50
+ <template:if test="{= !!${headerAction>command} &amp;&amp; ${headerAction>visible} }">
51
+ <!-- Important: create CommandExecution only for the visible instance (avoids duplicate registration when primaryAction clone exists). -->
45
52
  <control:CommandExecution
46
53
  core:require="{FPM: 'sap/fe/core/helpers/FPMHelper'}"
47
54
  execute="{= COMMON.buildActionWrapper(${headerAction>})}"
48
- visible="{headerAction>visible}"
49
55
  enabled="{headerAction>enabled}"
50
56
  command="{headerAction>command}"
51
57
  />
@@ -125,9 +131,10 @@
125
131
  <Button
126
132
  core:require="{FPM: 'sap/fe/core/helpers/FPMHelper'}"
127
133
  id="{= ID.generate(['fe',${headerAction>id}])}"
134
+ dt:designtime="{= LR.getDesigntimeForHeaderAction(${headerAction>})}"
128
135
  text="{headerAction>text}"
129
136
  press="{= ${headerAction>command} ? ('cmd:' + ${headerAction>command}) : COMMON.buildActionWrapper(${headerAction>})}"
130
- type="Ghost"
137
+ type="{= LR.isListReportEmphasisSuppressed(${viewData>/hideFilterBar}, ${viewData>/useHiddenFilterBar}, ${viewData>/liveMode}) ? 'Ghost' : (${headerAction>buttonType} === 'Emphasized' ? 'Emphasized' : 'Ghost') }"
131
138
  visible="{headerAction>visible}"
132
139
  enabled="{headerAction>enabled}"
133
140
  icon="{= ${headerAction>isAIOperation} === true ? COMMON.getAIIcon() : undefined}"
@@ -200,10 +207,10 @@
200
207
  <template:then>
201
208
  <f:dependents>
202
209
  <template:with path="converterContext>filterBar" var="filterBarContext">
203
- <macroInternal:FilterBar
210
+ <macro:FilterBar
204
211
  id="{converterContext>filterBarId}"
205
212
  _applyIdToContent="true"
206
- metaPath="{entityType>}"
213
+ metaPath="{converterContext>mainEntityType}"
207
214
  variantBackreference="{= LR.getVariantBackReference(${viewData>}, ${converterContext>} )}"
208
215
  selectionFields="{filterBarContext>selectionFields}"
209
216
  internalFilterChanged=".handlers.onFiltersChanged"
@@ -215,10 +222,28 @@
215
222
  p13nMode="Item,Value"
216
223
  useSemanticDateRange="{converterContext>useSemanticDateRange}"
217
224
  suspendSelection="true"
225
+ showMessages="false"
218
226
  toggleControlId="{= ${converterContext>/filterLayout} === 'compactvisual' || ${converterContext>easyFilterEnabled} ? ID.generate([ ${converterContext>filterBarId}, 'LayoutToggle']) : undefined }"
219
227
  initialLayout="{= ${converterContext>/filterLayout} === 'compactvisual' ? ${converterContext>/filterInitialLayout} : undefined }"
220
228
  disableDraftEditStateFilter="{filterBarContext>disableDraftEditStateFilter}"
221
- />
229
+ >
230
+ <macro:filterFields>
231
+ <template:repeat list="{filterBarContext>selectionFields}" var="selectionField">
232
+ <!-- Manifest Custom FilterFields with template and default availability -->
233
+ <template:if
234
+ test="{= ${selectionField>type} === 'Default' &amp;&amp; ${selectionField>template} !== undefined &amp;&amp; ${selectionField>availability} === 'Default' }"
235
+ >
236
+ <filterBar:FilterField key="{selectionField>key}">
237
+ <fpm:CustomFragment
238
+ id="{selectionField>key}"
239
+ fragmentName="{= ${selectionField>template} }"
240
+ contextPath="{entityType>}"
241
+ />
242
+ </filterBar:FilterField>
243
+ </template:if>
244
+ </template:repeat>
245
+ </macro:filterFields>
246
+ </macro:FilterBar>
222
247
  </template:with>
223
248
  </f:dependents>
224
249
  </template:then>
@@ -248,10 +273,10 @@
248
273
  </template:then>
249
274
  </template:if>
250
275
  <template:with path="converterContext>filterBar" var="filterBarContext">
251
- <macroInternal:FilterBar
276
+ <macro:FilterBar
252
277
  id="{converterContext>filterBarId}"
253
278
  _applyIdToContent="true"
254
- metaPath="{entityType>}"
279
+ metaPath="{converterContext>mainEntityType}"
255
280
  variantBackreference="{= LR.getVariantBackReference(${viewData>}, ${converterContext>} )}"
256
281
  selectionFields="{filterBarContext>selectionFields}"
257
282
  internalFilterChanged=".handlers.onFiltersChanged"
@@ -265,10 +290,28 @@
265
290
  p13nMode="Item,Value"
266
291
  useSemanticDateRange="{converterContext>useSemanticDateRange}"
267
292
  suspendSelection="true"
293
+ showMessages="false"
268
294
  toggleControlId="{= ${converterContext>/filterLayout} === 'compactvisual' || ${converterContext>easyFilterEnabled} ? ID.generate([ ${converterContext>filterBarId}, 'LayoutToggle']) : undefined }"
269
295
  initialLayout="{= ${converterContext>/filterLayout} === 'compactvisual' ? ${converterContext>/filterInitialLayout} : undefined }"
270
296
  disableDraftEditStateFilter="{filterBarContext>disableDraftEditStateFilter}"
271
- />
297
+ >
298
+ <macro:filterFields>
299
+ <template:repeat list="{filterBarContext>selectionFields}" var="selectionField">
300
+ <!-- Manifest Custom FilterFields with template and default availability -->
301
+ <template:if
302
+ test="{= ${selectionField>type} === 'Default' &amp;&amp; ${selectionField>template} !== undefined &amp;&amp; ${selectionField>availability} === 'Default' }"
303
+ >
304
+ <filterBar:FilterField key="{selectionField>key}">
305
+ <fpm:CustomFragment
306
+ id="{selectionField>key}"
307
+ fragmentName="{= ${selectionField>template} }"
308
+ contextPath="{entityType>}"
309
+ />
310
+ </filterBar:FilterField>
311
+ </template:if>
312
+ </template:repeat>
313
+ </macro:filterFields>
314
+ </macro:FilterBar>
272
315
  </template:with>
273
316
  <template:if test="{converterContext>easyFilterEnabled}">
274
317
  <template:then>